锐能需求改动

This commit is contained in:
hh
2020-12-14 17:17:18 +08:00
parent d78d0b178d
commit a83c4e4dc8
17 changed files with 232 additions and 725 deletions

19
src/api/fault/encrypt.js Normal file
View File

@ -0,0 +1,19 @@
import request from '@/utils/request'
// 获取故障编码列表
export function list(params) {
return request({
url: '/system/fault/list',
method: 'get',
params
})
}
// 获取故障编码下拉
export function select(params) {
return request({
url: '/system/fault/select',
method: 'get',
params
})
}

View File

@ -1,47 +0,0 @@
import request from '@/utils/request'
// 获取电池故障编码列表
export function faultBatteryList(params) {
return request({
url: '/system/fault/battery',
method: 'get',
params
})
}
// 获取BMS故障代码列表
export function faultBmsList(params) {
return request({
url: '/system/fault/bms',
method: 'get',
params
})
}
// 获取BMS硬件故障列表
export function faultHardwareList(params) {
return request({
url: '/system/fault/hardware',
method: 'get',
params
})
}
// 获取PACK系统故障列表
export function faultPackList(params) {
return request({
url: '/system/fault/pack',
method: 'get',
params
})
}
// 获取信号量故障列表
export function faultSignalList(params) {
return request({
url: '/system/fault/signal',
method: 'get',
params
})
}

View File

@ -13,7 +13,6 @@ export function productNodeList (params) {
* 查询产品节点详细
* @param { Object } params
*/
export function productNodeInfo (nodeId) {
return request({
url: '/system/product/node/' + nodeId,

View File

@ -19,7 +19,7 @@ import './permission' // permission control
import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree } from "@/utils/ruoyi";
import { formatDate } from "@/utils";
import { formatDate, convertToChinaNum } from "@/utils";
import Pagination from "@/components/Pagination";
//自定义表格工具扩展
@ -72,6 +72,13 @@ Vue.config.productionTip = false
Vue.filter('formatDate', function (value) {
return formatDate(value); // 这是时间戳转时间
});
// 数字转汉字
Vue.filter('toChinaNum', function (value) {
return convertToChinaNum(value);
});
Vue.filter('isToChina', function (value) {
return {'1': '是', '2': '否'}[value];
});
new Vue({
el: '#app',

View File

@ -388,3 +388,34 @@ export function isNumberStr(str) {
return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
}
//将数字整数转为汉字从零到一亿亿需要小数的可自行截取小数点后面的数字直接替换对应arr1的读法就行了
export function convertToChinaNum(num) {
var arr1 = new Array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
var arr2 = new Array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千','万', '十', '百', '千','亿');//可继续追加更高位转换值
if(!num || isNaN(num)){
return "零";
}
var english = num.toString().split("")
var result = "";
for (var i = 0; i < english.length; i++) {
var des_i = english.length - 1 - i;//倒序排列设值
result = arr2[i] + result;
var arr1_index = english[des_i];
result = arr1[arr1_index] + result;
}
//将【零千、零百】换成【零】 【十零】换成【十】
result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
//合并中间多个零为一个零
result = result.replace(/零+/g, '零');
//将【零亿】换成【亿】【零万】换成【万】
result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
//将【亿万】换成【亿】
result = result.replace(/亿万/g, '亿');
//移除末尾的零
result = result.replace(/零+$/, '')
//将【零一十】换成【零十】
//result = result.replace(/零一十/g, '零十');//貌似正规读法是零一十
//将【一十】换成【十】
result = result.replace(/^一十/g, '十');
return result;
}

View File

@ -3,81 +3,38 @@
<el-row>
<!-- 地区 -->
<el-col :span="4">
<region
@selectdRegionCode="selectdRegionCode"
:currentNodeKey.sync="queryParams.provinceCode"
></region>
<region @selectdRegionCode="selectdRegionCode" :currentNodeKey.sync="queryParams.provinceCode"></region>
</el-col>
<!-- form表单 -->
<el-col :span="20">
<el-form
:model="queryParams"
:inline="true"
ref="queryForm"
v-show="showSearch"
label-width="68px"
>
<el-form size="mini" :model="queryParams" :inline="true" ref="queryForm" v-show="showSearch" label-width="68px">
<!-- 第一行 -->
<el-row>
<el-col :span="6">
<el-form-item label="告警名称">
<el-input v-model="queryParams.warningName" placeholder="请输入告警名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="告警等级">
<el-select
v-model="queryParams.deviceType"
clearable
placeholder="请输入告警等级"
>
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="queryParams.warningLevel" clearable placeholder="请输入告警等级">
<el-option v-for="item in signalLevelList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="告警名称">
<el-input
v-model="queryParams.deviceName"
placeholder="请输入告警名称"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称">
<el-select
v-model="queryParams.deviceType"
clearable
placeholder="请选择"
>
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="queryParams.deviceType" clearable placeholder="请选择">
<el-option v-for="item in signalLevelList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属客户">
<el-select
v-model="queryParams.deviceType"
clearable
placeholder="请选择"
>
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="queryParams.deviceType" clearable placeholder="请选择">
<el-option v-for="item in signalLevelList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
@ -87,55 +44,25 @@
<el-row>
<el-col :span="6">
<el-form-item label="所属项目">
<el-select
v-model="queryParams.deviceType"
clearable
placeholder="请选择"
>
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="queryParams.deviceType" clearable placeholder="请选择">
<el-option v-for="item in signalLevelList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="站址名称">
<el-input
v-model="queryParams.deviceName"
placeholder="请输入站址名称"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.deviceName" placeholder="请输入站址名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设备SN">
<el-input
v-model="queryParams.deviceSn"
placeholder="请输入设备SN"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.deviceSn" placeholder="请输入设备SN" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="信号量ID">
<el-input
v-model="queryParams.productId"
placeholder="请输入信号量ID"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.productId" placeholder="请输入信号量ID" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
</el-row>
@ -143,157 +70,58 @@
<el-row>
<el-col :span="6">
<el-form-item label="告警次数">
<el-input
v-model="queryParams.deviceName"
placeholder="请输入告警次数"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.deviceName" placeholder="请输入告警次数" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<el-date-picker
v-model="dateRange"
size="small"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="告警发生时间"
end-placeholder="结束时间"
></el-date-picker>
<el-form-item label="时间范围">
<el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-"
start-placeholder="告警发生时间" end-placeholder="结束时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">
查询
</el-button>
<el-button
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 表格区域 -->
<el-table v-loading="loading" :data="tableData" style="width: 100%">
<el-table-column
prop="proName"
align="center"
label="省份"
min-width="80"
>
<el-table-column prop="proName" align="center" label="省份" min-width="80">
</el-table-column>
<el-table-column
prop="cityName"
align="center"
label="市"
min-width="80"
>
<el-table-column prop="cityName" align="center" label="市" min-width="80">
</el-table-column>
<el-table-column
prop="disName"
align="center"
label="区"
min-width="80"
>
<el-table-column prop="disName" align="center" label="区" min-width="80">
</el-table-column>
<el-table-column
prop="productName"
label="产品名称"
align="center"
min-width="100"
>
<el-table-column prop="productName" label="产品名称" align="center" min-width="100">
</el-table-column>
<el-table-column
prop="nikeName"
align="center"
label="所属客户"
></el-table-column>
<el-table-column
prop="projectName"
align="center"
label="所属项目"
></el-table-column>
<el-table-column
prop="warningName"
align="center"
label="告警名称"
min-width="150"
></el-table-column>
<el-table-column
prop="warningLevel"
align="center"
label="告警等级"
min-width="150"
></el-table-column>
<el-table-column
prop="workOrderId"
align="center"
label="工单编号"
min-width="150"
></el-table-column>
<el-table-column
prop="signalCode"
align="center"
label="信号量ID"
min-width="150"
></el-table-column>
<el-table-column prop="nikeName" align="center" label="所属客户"></el-table-column>
<el-table-column prop="projectName" align="center" label="所属项目"></el-table-column>
<el-table-column prop="warningName" align="center" label="告警名称" min-width="150"></el-table-column>
<el-table-column prop="warningLevel" align="center" label="告警等级" min-width="150"></el-table-column>
<el-table-column prop="workOrderId" align="center" label="工单编号" min-width="150"></el-table-column>
<el-table-column prop="signalCode" align="center" label="信号量ID" min-width="150"></el-table-column>
<el-table-column align="center" label="告警发生时间" min-width="150">
<template slot-scope="scope">
{{ scope.row.warningTime | formatDate }}
</template>
</el-table-column>
<el-table-column
prop="warningDetails"
align="center"
label="告警详情"
min-width="150"
></el-table-column>
<el-table-column
align="center"
label="站址名称"
min-width="150"
></el-table-column>
<el-table-column
prop="deviceName"
align="center"
label="设备名称"
min-width="150"
></el-table-column>
<el-table-column
prop="deviceSn"
align="center"
label="设备SN"
min-width="150"
></el-table-column>
<el-table-column
prop="status"
label="运营状态"
align="center"
min-width="250"
></el-table-column>
<el-table-column prop="warningDetails" align="center" label="告警详情" min-width="150"></el-table-column>
<el-table-column align="center" label="站址名称" min-width="150"></el-table-column>
<el-table-column prop="deviceName" align="center" label="设备名称" min-width="150"></el-table-column>
<el-table-column prop="deviceSn" align="center" label="设备SN" min-width="150"></el-table-column>
<el-table-column prop="status" label="运营状态" align="center" min-width="250"></el-table-column>
</el-table>
<!-- 分页 -->
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</el-col>
</el-row>
</section>
@ -306,7 +134,7 @@ export default {
components: {
Region
},
data() {
data () {
return {
dateRange: [],
signalLevelList: [
@ -330,12 +158,12 @@ export default {
};
},
methods: {
selectdRegionCode({ code }) {
selectdRegionCode ({ code }) {
this.queryParams.provinceCode = code;
this.handleQuery();
},
// 获取告警工单列表
getList() {
getList () {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then(res => {
this.tableData = res.rows;
@ -344,13 +172,13 @@ export default {
});
},
// 搜索按钮操作
handleQuery() {
handleQuery () {
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.getList();
},
// 重置按钮操作
resetQuery() {
resetQuery () {
this.queryParams = {};
this.resetForm('queryForm');
this.dateRange = [];
@ -359,7 +187,7 @@ export default {
},
computed: {},
watch: {},
created() {
created () {
this.getList();
}
};

View File

@ -1,87 +0,0 @@
<template>
<section class="app-container">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="故障名称">
<el-input v-model="queryParams.faultName" placeholder="请输入故障名称" clearable size="small" style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="faultCode" align="center" label="故障编码">
</el-table-column>
<el-table-column prop="faultName" align="center" label="故障名称">
</el-table-column>
<el-table-column prop="faultLevel" align="center" label="故障等级">
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</el-col>
</el-row>
</section>
</template>
<script>
import { faultBatteryList } from "@/api/fault/faultDictionary";
export default {
name: "batteryFaultList",
data () {
return {
// 表格数据
tableData: [],
// 总条数
total: 0,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10
},
}
},
created () {
this.getList()
},
methods: {
// 获取电池故障编码列表
getList () {
faultBatteryList(this.queryParams).then((res) => {
// debugger
this.tableData = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery () {
this.queryParams = {};
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange () { }
}
}
</script>
<style>
</style>

View File

@ -1,87 +0,0 @@
<template>
<section class="app-container">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="故障名称">
<el-input v-model="queryParams.faultName" placeholder="请输入故障名称" clearable size="small" style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="faultCode" align="center" label="故障编码">
</el-table-column>
<el-table-column prop="faultName" align="center" label="故障名称">
</el-table-column>
<el-table-column prop="faultLevel" align="center" label="故障等级">
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</el-col>
</el-row>
</section>
</template>
<script>
import { faultBmsList } from "@/api/fault/faultDictionary";
export default {
name: "bmsFaultList",
data () {
return {
// 表格数据
tableData: [],
// 总条数
total: 0,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10
},
}
},
created () {
this.getList()
},
methods: {
// 获取电池故障编码列表
getList () {
faultBmsList(this.queryParams).then((res) => {
// debugger
this.tableData = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery () {
this.queryParams = {};
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange () { }
}
}
</script>
<style>
</style>

View File

@ -2,29 +2,39 @@
<section class="app-container">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form size="mini" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="故障名称">
<el-input v-model="queryParams.faultName" placeholder="请输入故障名称" clearable size="small" style="width: 200px"
<el-input v-model="queryParams.faultName" placeholder="请输入故障名称" clearable style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="cyan" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-row class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="signalCode" align="center" label="信号量">
</el-table-column>
<el-table-column prop="parentSignalCode" align="center" label="上级信号量">
</el-table-column>
<el-table-column prop="faultCode" align="center" label="故障编码">
</el-table-column>
<el-table-column prop="faultName" align="center" label="故障名称">
</el-table-column>
<el-table-column prop="faultLevel" align="center" label="故障等级">
<el-table-column align="center" label="故障等级">
<template slot-scope="scope">
<section>{{scope.row.faultLevel | toChinaNum }}</section>
</template>
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
<el-table-column align="center" label="是否生成工单">
<template slot-scope="scope">
<section>{{scope.row.workIs | isToChina }}</section>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@ -35,9 +45,9 @@
</template>
<script>
import { faultPackList } from "@/api/fault/faultDictionary";
import { list } from "@/api/fault/encrypt";
export default {
name: "packFaultList",
name: "Encrypt",
data () {
return {
//
@ -57,9 +67,9 @@ export default {
this.getList()
},
methods: {
//
//
getList () {
faultPackList(this.queryParams).then((res) => {
list(this.queryParams).then((res) => {
// debugger
this.tableData = res.rows;
this.total = res.total;
@ -74,7 +84,10 @@ export default {
/** 重置按钮操作 */
resetQuery () {
this.queryParams = {};
this.queryParams = {
pageNum: 1,
pageSize: 10
};
this.resetForm("queryForm");
this.handleQuery();
},

View File

@ -1,87 +0,0 @@
<template>
<section class="app-container">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="故障名称">
<el-input v-model="queryParams.faultName" placeholder="请输入故障名称" clearable size="small" style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="faultCode" align="center" label="故障编码">
</el-table-column>
<el-table-column prop="faultName" align="center" label="故障名称">
</el-table-column>
<el-table-column prop="faultLevel" align="center" label="故障等级">
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</el-col>
</el-row>
</section>
</template>
<script>
import { faultHardwareList } from "@/api/fault/faultDictionary";
export default {
name: "hardwareFaultList",
data () {
return {
// 表格数据
tableData: [],
// 总条数
total: 0,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10
},
}
},
created () {
this.getList()
},
methods: {
// 获取电池故障编码列表
getList () {
faultHardwareList(this.queryParams).then((res) => {
// debugger
this.tableData = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery () {
this.queryParams = {};
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange () { }
}
}
</script>
<style>
</style>

View File

@ -1,91 +0,0 @@
<template>
<section class="app-container">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="故障名称">
<el-input v-model="queryParams.dicName" placeholder="请输入故障名称" clearable size="small" style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="dicCode" align="center" label="故障编码">
</el-table-column>
<el-table-column prop="dicName" align="center" label="故障名称">
</el-table-column>
<el-table-column prop="dicType" align="center" label="故障类型">
</el-table-column>
<el-table-column prop="dicValue" align="center" label="故障值">
</el-table-column>
<el-table-column prop="description" align="center" label="描述">
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</el-col>
</el-row>
</section>
</template>
<script>
import { faultSignalList } from "@/api/fault/faultDictionary";
export default {
name: "signalFaultList",
data () {
return {
// 表格数据
tableData: [],
// 总条数
total: 0,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10
},
}
},
created () {
this.getList()
},
methods: {
// 获取电池故障编码列表
getList () {
faultSignalList(this.queryParams).then((res) => {
// debugger
this.tableData = res.rows;
this.total = res.total;
});
},
/** 搜索按钮操作 */
handleQuery () {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery () {
this.queryParams = {};
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange () { }
}
}
</script>
<style>
</style>

View File

@ -1,68 +1,40 @@
<template>
<section class="app-container">
<el-form v-loading="loading">
<section class="app-container" v-loading="loading">
<el-form>
<el-scrollbar class="scrollbar" wrap-class="scrollbar-wrapper">
<el-form-item v-for="item1 in formTitle" :key="item1.id">
<section v-if="item1.signalCode">
<section>
<div class="tab">
{{ item1.signalName }}
</div>
<el-row :gutter="20">
<el-col :span="6" v-for="item2 in formList" :key="item2.id">
<el-form-item
class="row"
:label="
item2.optValName
? item2.optValName
<el-col :span="8" v-for="(item2,index) in formList.filter(v=> v.parentSignalCode == item1.signalCode)" :key="item2.id">
<!-- <section v-if="item1.signalCode === item2.parentSignalCode"> -->
<el-form-item class="row" label-width="200px" :label="
item2.optValName
? item2.optValName + index
: (item2.optValName = item2.warningName)
"
label-width="200px"
v-if="item1.signalCode === item2.signalCode"
>
<el-select v-model="item2.signalLevel">
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</section>
<section v-else>
<div class="tab">
{{ item1.signalName }}
</div>
<el-row :gutter="20">
<el-col :span="6" v-for="item2 in otherList" :key="item2.id">
<el-form-item
class="row"
:label="
item2.optValName
? item2.optValName
: (item2.optValName = item2.warningName)
"
label-width="200px"
>
<el-select v-model="item2.signalLevel">
<el-option
v-for="item in signalLevelList"
:key="item.value"
:label="item.label"
:value="item.value"
>
">
<el-select style="width:80px;margin-right:10px" v-model="item2.signalLevel">
<el-option v-for="item in signalLevelList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-select style="width:120px" v-model="item2.workIs">
<el-option v-for="item in workIsList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</section>
<el-divider class="mt10 mb10"></el-divider>
</el-form-item>
</el-scrollbar>
<!-- 表单操作 -->
<el-form-item class="right">
<el-button type="primary" @click="submitForm">提交</el-button>
<el-form-item>
<el-button class="right" type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</section>
@ -71,10 +43,11 @@
import { select, type, update } from '@/api/fault/warning';
export default {
name: 'warning',
data() {
data () {
return {
formTitle: [],
formList: [],
initialFormList: [],
value: '',
signalLevelList: [
{ label: '一级', value: '1' },
@ -82,25 +55,39 @@ export default {
{ label: '三级', value: '3' },
{ label: '四级', value: '4' }
],
workIsList: [
{ label: '生成工单', value: 1 },
{ label: '不生成工单', value: 2 },
],
loading: true
};
},
methods: {
// 获取 title 的类型
async getTitle() {
async getTitle () {
const { select: data } = await type();
this.formTitle = data;
const { select: res } = await select({
userId: this.$store.getters.userId
});
this.formList = res;
this.formList = JSON.parse(JSON.stringify(res));
this.initialFormList = JSON.parse(JSON.stringify(res));
this.loading = false;
},
async submitForm() {
const array = JSON.parse(
JSON.stringify(this.formList).replace(/optValName/g, 'warningName')
);
async submitForm () {
this.loading = true;
const array = this.formList.filter(v => {
v.warningName = v.optValName;
if (v.id != null) {
v.warningName = v.optValName;
const { workIs, signalLevel } = this.initialFormList.find(e => v.signalCode == e.signalCode);
if (v.workIs != workIs || v.signalLevel != signalLevel) {
return v;
}
} else {
return v;
}
})
const { code } = await update({
userId: this.$store.getters.userId,
signalList: array
@ -113,15 +100,15 @@ export default {
}
},
computed: {
otherList() {
otherList () {
let signalCodes = this.formTitle.map(v => v.signalCode).filter(v => !!v);
return this.formList.filter(v => {
return signalCodes.indexOf(v.signalCode) == -1;
return signalCodes.indexOf(v.parentSignalCode) == -1;
});
}
},
watch: {},
created() {
created () {
this.getTitle();
}
};
@ -138,4 +125,13 @@ export default {
float: right;
}
}
.scrollbar {
overflow-y: auto;
overflow-x: hidden;
height: calc(100vh - 200px)
}
/deep/ .el-scrollbar__view {
overflow-x: hidden;
}
</style>

View File

@ -13,7 +13,7 @@
</el-form-item>
<el-form-item label="节点">
<el-select v-model="queryParams.nodeId" clearable placeholder="请选择">
<el-option v-for="item in queryNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.id">
<el-option v-for="item in queryNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.nodeSn">
</el-option>
</el-select>
</el-form-item>
@ -106,7 +106,7 @@
</el-form-item>
<el-form-item label="节点" prop="nodeId">
<el-select :disabled="!!form.id" v-model="form.nodeId" clearable placeholder="请选择">
<el-option v-for="item in nodeSelectList" :key="item.id" :label="item.nodeName" :value="item.id">
<el-option v-for="item in nodeSelectList" :key="item.id" :label="item.nodeName + '('+ item.nodeSn +')'" :value="item.nodeSn">
</el-option>
</el-select>
</el-form-item>
@ -419,5 +419,8 @@ export default {
};
</script>
<style>
<style lang="scss" scoped>
/deep/ .el-select {
width: 100%;
}
</style>

View File

@ -13,8 +13,8 @@
</el-select>
</el-form-item>
<el-form-item label="节点">
<el-select v-model="queryParams.nodeDataId" clearable placeholder="请选择">
<el-option v-for="item in queryNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.id">
<el-select v-model="queryParams.nodeId" clearable placeholder="请选择">
<el-option v-for="item in queryNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.nodeSn">
</el-option>
</el-select>
</el-form-item>
@ -31,7 +31,7 @@
</el-select>
</el-form-item>
<el-form-item label="设备SN">
<el-input v-model="queryParams.nodeId" placeholder="请输入设备SN" @keyup.enter.native="handleQuery" />
<el-input v-model="queryParams.deviceId" placeholder="请输入设备SN" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>

View File

@ -76,9 +76,11 @@ export default {
info.cityName = await this.getProvinceByCode(info.cityCode);
info.disName = await this.getProvinceByCode(info.disCode);
this.info = info;
let deviceSignal = JSON.parse(info.deviceSignal.signalJsonTurn);
this.signalUpdateTime = info.deviceSignal.updateTime;
this.signal = deviceSignal.signal.concat(deviceSignal.signal, deviceSignal.signal, deviceSignal.signal);
if (info.deviceSignal) {
let deviceSignal = JSON.parse(info.deviceSignal.signalJsonTurn);
this.signal = deviceSignal.signal;
this.signalUpdateTime = info.deviceSignal.updateTime;
}
} else {
this.msgError(msg);
}

View File

@ -181,15 +181,15 @@
<el-form-item label="设备SN" prop="deviceId">
<el-input v-model="nodeForm.deviceId" disabled placeholder="请输入设备SN" />
</el-form-item>
<el-form-item label="节点名称" prop="nodeDataId">
<el-select v-model="nodeForm.nodeDataId" :disabled="!!nodeForm.id" clearable placeholder="请选择">
<el-option v-for="item in productNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.id">
<el-form-item label="产品节点" prop="nodeId">
<el-select style="width:100%" v-model="nodeForm.nodeId" :disabled="!!nodeForm.id" clearable placeholder="请选择">
<el-option v-for="item in productNodeSelectList" :key="item.id" :label="item.nodeName + '('+ item.nodeSn +')'" :value="item.nodeSn">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="节点SN" prop="nodeId">
<!-- <el-form-item label="节点SN" prop="nodeId">
<el-input v-model="nodeForm.nodeId" placeholder="请输入节点SN" />
</el-form-item>
</el-form-item> -->
<el-form-item label="初始版本" prop="nowVersion">
<el-input v-model="nodeForm.nowVersion" placeholder="请输入节点初始版本" />
</el-form-item>
@ -308,14 +308,11 @@ export default {
},
nodeRules: {
nodeId: [
{ required: true, message: "节点SN不能为空", trigger: "blur" },
{ required: true, message: "节点不能为空", trigger: "blur" },
],
deviceId: [
{ required: true, message: "设备SN不能为空", trigger: "blur" },
],
nodeDataId: [
{ required: true, message: "节点真正ID不能为空", trigger: "blur" },
],
nowVersion: [
{ required: true, message: "节点初始版本不能为空", trigger: "blur" },
],
@ -440,7 +437,6 @@ export default {
this.nodeForm = {
nodeId: "",
deviceId: "",
nodeDataId: "",
};
this.resetForm("form");
this.resetForm("nodeForm");
@ -588,7 +584,6 @@ export default {
/** 删除按钮操作 */
handleDelete (row) {
debugger
const ids = row.id || this.ids;
this.$confirm('是否确认删除?', "警告", {
confirmButtonText: "确定",

View File

@ -99,6 +99,9 @@
<el-form-item label="节点名称" prop="nodeName">
<el-input v-model="nodeForm.nodeName" placeholder="请输入节点名称" />
</el-form-item>
<el-form-item label="节点Sn" prop="nodeSn">
<el-input :disabled="nodeForm.nodeEmpty" v-model="nodeForm.nodeSn" placeholder="请输入节点Sn" />
</el-form-item>
<!-- <el-form-item label="状态">
<el-input v-model="nodeForm.status" />
</el-form-item> -->
@ -114,22 +117,23 @@
<!-- 节点列表弹框 -->
<el-dialog title="节点列表" :visible.sync="nodeDialog">
<el-row class="mb8">
<el-button type="danger" icon="el-icon-delete" size="mini" :disabled="nodeMultiple" @click="batchHandleDeletenode"
v-hasPermi="['monitor:node:remove']">批量删除</el-button>
<el-button type="danger" icon="el-icon-delete" size="mini" :disabled="nodeMultiple" @click="batchHandleDeleteNode"
v-hasPermi="['product:node:remove']">批量删除</el-button>
</el-row>
<el-table :data="nodeData" @selection-change="nodeHandleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="nodeName" label="节点名称"></el-table-column>
<el-table-column prop="nodeSn" label="节点Sn"></el-table-column>
<el-table-column prop="remark" label="节点备注"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdatenode(scope.row)" v-hasPermi="['system:node:edit']">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdatenode(scope.row)" v-hasPermi="['product:node:edit']">
修改
</el-button>
<el-button class="text-danger" size="mini" type="text" icon="el-icon-delete" @click="handleDeletenode(scope.row)"
v-hasPermi="['system:node:remove']">删除</el-button>
<el-button class="text-danger" size="mini" type="text" icon="el-icon-delete" @click="handleDeleteNode(scope.row)"
v-hasPermi="['product:node:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -198,6 +202,9 @@ export default {
nodeName: [
{ required: true, message: "节点名称不能为空", trigger: "blur" },
],
nodeSn: [
{ required: true, message: "nodeSn不能为空", trigger: "blur" },
],
}
};
},
@ -299,9 +306,15 @@ export default {
/** 修改节点操作 */
handleUpdatenode (row) {
this.reset();
this.nodeOpen = true;
this.nodeForm = Object.assign({}, row);;
this.title = "修改产品节点";
productNodeInfo(row.nodeSn).then(({code,msg,info}) => {
if (200 == code) {
this.nodeOpen = true;
this.nodeForm = info;
this.title = "修改产品节点";
} else {
this.msgError(msg);
}
});
},
/** 提交按钮 */
submitForm: function () {
@ -371,7 +384,7 @@ export default {
},
/** 删除节点按钮操作 */
handleDeletenode (row) {
handleDeleteNode (row) {
const ids = row.id || this.ids;
this.$confirm("是否确认删除?", "警告", {
confirmButtonText: "确定",
@ -393,7 +406,7 @@ export default {
},
// 批量删除节点
batchHandleDeletenode () {
batchHandleDeleteNode () {
this.$confirm("是否确认删除?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",