From f68d33003f30af4bfe0ba186caa6118564c0b6cc Mon Sep 17 00:00:00 2001 From: Joe <1712833832@qq.com> Date: Fri, 19 Jan 2024 11:32:12 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=AF=86=E7=A0=81=20=20=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=AD=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/FormConfig/index.vue | 13 +- .../components/DeviceControlDialog.vue | 59 ++--- .../components/RoadAndEvents/utils/map.js | 6 +- ruoyi-ui/src/views/login.vue | 209 ++++++++---------- 4 files changed, 137 insertions(+), 150 deletions(-) diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue index e93ec547..b0c5a9a9 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue @@ -4,7 +4,8 @@ - + @@ -94,6 +95,16 @@ export default { } }, methods: { + resolveListeners(callbacks) { + + const result = {}; + + for (const key in callbacks) { + result[key] = (...args) => callbacks[key](...args, this.formData, this) + } + + return result + }, reset() { return this.formData = reduceDefaultValue(this.formList); }, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue index 8aa32fd7..95b6dc8f 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue @@ -113,13 +113,13 @@ export default { { label: "选择时间:", key: "displayTime", - type: "datePicker", + type: "timePicker", required: true, visible: (data) => data.controlType == "automatic", options: { - type: "datetimerange", - angeSeparator: "至", - valueFormat: "yyyy-MM-dd HH:mm:ss", + isRange: true, + rangeSeparator: "至", + valueFormat: "HH:mm", startPlaceholder: "开始时间", endPlaceholder: "结束时间", }, @@ -143,34 +143,41 @@ export default { handler(bool) { if (!bool) return; - request.post(`business/device/functions/${this.deviceId}/${52}`, {}) - .then(async (result) => { - if (result.code != 200) return; + this.reDisplay(); + } + } + }, + methods: { + reDisplay() { + request.post(`business/device/functions/${this.deviceId}/${52}`, {}) + .then(async (result) => { + if (result.code != 200) return; - await delay(0); + await delay(0); - const formData = this.$refs.FormConfigRef?.formData; + const formData = this.$refs.FormConfigRef?.formData; - const data = result.data[0]; + const data = result.data[0]; + console.log("%c [ data ]-155-「DeviceControlDialog.vue」", "font-size:15px; background:#66352f; color:#aa7973;", data); - switch (data.mode) { - case "00": - formData.controlType = "manual"; + switch (data.mode) { + case "00": + formData.controlType = "manual"; - formData.onWorkStatus = data.onWorkStatus; - formData.inWorkStatus = data.inWorkStatus; - break; - case "01": - formData.controlType = "automatic"; + formData.onWorkStatus = data.onWorkStatus; + formData.inWorkStatus = data.inWorkStatus; + break; + case "01": + formData.controlType = "automatic"; - formData.datePicker = [data.startDisplay, data.endDisplay]; - break; - } - }) - } - } - }, - methods: { + formData.displayTime = [data.startDisplay, data.endDisplay]; + break; + } + + this.oldFormData = cloneDeep(formData); + }) + + }, handleSubmit() { const result = cloneDeep(this.$refs.FormConfigRef?.formData); diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js index c0bb0a45..b2bddf1e 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js @@ -132,9 +132,7 @@ export async function setMarkToMap(item, data, _markerClick, content) { content: content || `
+ " src='${item.deviceState == 1 ? normal : fault}'>
`, }; }), diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index 5122d809..41b8e14f 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -1,77 +1,39 @@ + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue new file mode 100644 index 00000000..30cd160f --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue @@ -0,0 +1,178 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js index cf0fac1d..d5fde08a 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js @@ -20,7 +20,7 @@ let options = { fontSize: 14, color: "#000", }, - formatter: "{a}
{b} :\n\n{c} 个", + formatter: "{a}
{b} :\n\n{c} ", }, legend: { top: 10, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js index 4b35b669..48948996 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js @@ -50,7 +50,7 @@ let options = { series: [{ type: 'radar', data: [data], - name: '安全作业', + name: '设备在线率', label: { show: true, formatter: function (params) { @@ -80,7 +80,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [100, 100, 100, 100, 100, 100, 100, 100,100, 100, 100, 100, 100, 100, 100, 100,100, 100, 100], ], @@ -100,7 +100,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [80, 80, 80, 80, 80, 80, 80, 80,80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80] ], @@ -120,7 +120,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [60, 60, 60, 60, 60, 60, 60, 60,60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60], ], @@ -140,7 +140,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [40, 40, 40, 40, 40, 40, 40, 40,40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40], ], @@ -159,7 +159,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], ], diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js index dfd3d256..9204ae69 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js @@ -50,7 +50,7 @@ let options = { series: [{ type: 'radar', data: [data], - name: '安全作业', + name: '设备在线率', label: { show: true, formatter: function (params) { @@ -80,7 +80,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [100, 100, 100, 100, 100, 100, 100, 100,100, 100, 100, 100, 100, 100, 100, 100], ], @@ -100,7 +100,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [80, 80, 80, 80, 80, 80, 80, 80,80, 80, 80, 80, 80, 80, 80, 80] ], @@ -120,7 +120,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [60, 60, 60, 60, 60, 60, 60, 60,60, 60, 60, 60, 60, 60, 60, 60], ], @@ -140,7 +140,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [40, 40, 40, 40, 40, 40, 40, 40,40, 40, 40, 40, 40, 40, 40, 40], ], @@ -159,7 +159,7 @@ let options = { }, { type: 'radar', - name: '安全作业', + name: '设备在线率', data: [ [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], ], From 64ac974ffaf186206dbffbeddbd48dc178ea0d94 Mon Sep 17 00:00:00 2001 From: yyl <279235553@qq.com> Date: Fri, 19 Jan 2024 12:50:29 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/common/menuData.js | 6 ++++++ .../components/monthlyEquipment/index.vue | 3 ++- ruoyi-ui/src/views/login.vue | 5 +++-- ruoyi-ui/vue.config.js | 15 ++------------- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/ruoyi-ui/src/common/menuData.js b/ruoyi-ui/src/common/menuData.js index d1af6aca..7c08946f 100644 --- a/ruoyi-ui/src/common/menuData.js +++ b/ruoyi-ui/src/common/menuData.js @@ -88,6 +88,12 @@ export default [ name: "commandDispatch", component: "control/event/commandDispatch/index.vue", }, + { + title: "管控事件分析", + path: "/control/event/governanceAnalysis", + name: "governanceAnalysis", + component: "control/event/governanceAnalysis/index.vue", + }, ], }, ], diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue index a55e0448..1063bc54 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue @@ -248,7 +248,8 @@ border-radius: 50%; border: 2px solid; border: rgba(23, 162, 255, 0.2); - + border: 2px solid; +// border-image: linear-gradient(33deg, rgba(23, 162, 255, 0.71), rgba(23, 162, 255, 0)) 2 2; > .round-num { width:100%; diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index 41b8e14f..093607d5 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -250,7 +250,7 @@ export default { position: relative; height: 100%; background-image: url("../assets/images/login-background.png"); - background-size: cover; + background-size: 100% auto; } .login::after { @@ -259,7 +259,8 @@ export default { width: 100%; height: 120px; background-image: url('../assets/images/login-head.png'); - background-size: auto 100%; + background-repeat: no-repeat; + background-size: 100% auto ; background-position: center center; } diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 431fc799..7a16ca3c 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -1,8 +1,5 @@ "use strict"; const path = require("path"); -const webpack = require("webpack"); - -const packageJSON = require("./package.json"); function resolve(dir) { return path.join(__dirname, dir); @@ -46,8 +43,8 @@ module.exports = { // target: `http://10.168.73.36:8080`, // 周乐 // target: `http://10.168.77.209:8080`, // 刘朋 // target: `http://10.168.66.196:8080`, //刘文阁 - // target: `http://10.168.56.206:8087`, //孟 - target: `http://10.0.81.202:8087`, //现场后台 + target: `http://10.168.65.156:8087`,//孟 + // target: `http://10.0.81.202:8087`, //现场后台 changeOrigin: true, pathRewrite: { ["^" + process.env.VUE_APP_BASE_API]: "", @@ -82,14 +79,6 @@ module.exports = { chainWebpack(config) { config.plugins.delete("preload"); // TODO: need test config.plugins.delete("prefetch"); // TODO: need test - config.plugin("DefinePlugin").use(webpack.DefinePlugin, [ - { - "process.env.Version": (() => - JSON.stringify( - `${new Date().toLocaleString()}-V${packageJSON.version}` - ))(), - }, - ]); const rootModulesPath = path.resolve("node_modules"); if (config.resolve.modules.store.has(rootModulesPath)) { From 11338abb5521fb4ce31a953888f39bdd1b55e1c8 Mon Sep 17 00:00:00 2001 From: yyl <279235553@qq.com> Date: Fri, 19 Jan 2024 12:51:58 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statisticalAnalysis/components/monthlyEquipment/index.vue | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue index 1063bc54..0a17c933 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue @@ -246,9 +246,7 @@ border-radius: 0px 0px 0px 0px; opacity: 1; border-radius: 50%; - border: 2px solid; - border: rgba(23, 162, 255, 0.2); - border: 2px solid; + border: 0px solid; // border-image: linear-gradient(33deg, rgba(23, 162, 255, 0.71), rgba(23, 162, 255, 0)) 2 2; > .round-num { From c5ea0672abb7a91161097bb873b54ad564bdaadd Mon Sep 17 00:00:00 2001 From: Joe <1712833832@qq.com> Date: Fri, 19 Jan 2024 12:55:51 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/Home/components/RoadAndEvents/utils/map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js index b2bddf1e..87c906d1 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js @@ -104,7 +104,7 @@ export async function setMarkToMap(item, data, _markerClick, content) { const normal = require(`@screen/images/layer${item.id.replace( /^\.|[^/]+(?=.svg$)/g, - (data) => (data === "." ? "" : `${data}_active`) + (data) => (data === "." ? "" : `${data}`) )}`); const fault = require(`@screen/images/layer${item.id.replace( @@ -113,7 +113,7 @@ export async function setMarkToMap(item, data, _markerClick, content) { )}`); const faultBg = require(`@screen/images/mapBg/fault.svg`); - const normalBg = require(`@screen/images/mapBg/active.svg`); + const normalBg = require(`@screen/images/mapBg/normal.svg`); const markerClick = (e) => { const extData = e.target.getExtData(); From 1d71b14779c60d1c2441d34b78305db96e1f5a95 Mon Sep 17 00:00:00 2001 From: Joe <1712833832@qq.com> Date: Fri, 19 Jan 2024 13:04:10 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JiHeExpressway/images/deviceType/ball.svg | 14 ++++++++ .../images/deviceType/ball_fault.svg | 14 ++++++++ .../RoadAndEvents/utils/buttonEvent.js | 15 ++++++++ .../components/RoadAndEvents/utils/map.js | 36 +++++++++++++------ 4 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball.svg create mode 100644 ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball_fault.svg diff --git a/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball.svg b/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball.svg new file mode 100644 index 00000000..17e57887 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball_fault.svg b/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball_fault.svg new file mode 100644 index 00000000..b575f454 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/images/deviceType/ball_fault.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js index d08b34ea..38a5c421 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js @@ -33,6 +33,9 @@ export const eventMap = { // status: "0", // }; + const ballFault = require("@screen/images/deviceType/ball_fault.svg"); + const ball = require("@screen/images/deviceType/ball.svg"); + const data = await getDeviceList(1); // const data = [ // { @@ -74,6 +77,18 @@ export const eventMap = { data: extData, }; } catch (error) {} + }, + null, + { + iconCallback(bool, item) { + const type = JSON.parse(item.otherConfig)?.ptzCtrl; + + switch (type) { + case "0": + case 0: + return bool ? ball : ballFault; + } + }, } ); }, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js index 87c906d1..8f5879f8 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js @@ -97,20 +97,30 @@ export async function setMarkerCluster(map, points, markerFun) { * @param {*} _markerClick marker 点击 * @returns */ -export async function setMarkToMap(item, data, _markerClick, content) { +export async function setMarkToMap( + item, + data, + _markerClick, + content, + { iconCallback } = {} +) { const { mapIns } = this.getMap(); if (!mapIns) return Message.error("地图加载失败!"); - const normal = require(`@screen/images/layer${item.id.replace( - /^\.|[^/]+(?=.svg$)/g, - (data) => (data === "." ? "" : `${data}`) - )}`); + const normal = + normal || + require(`@screen/images/layer${item.id.replace( + /^\.|[^/]+(?=.svg$)/g, + (data) => (data === "." ? "" : `${data}`) + )}`); - const fault = require(`@screen/images/layer${item.id.replace( - /^\.|[^/]+(?=.svg$)/g, - (data) => (data === "." ? "" : `${data}_fault`) - )}`); + const fault = + fault || + require(`@screen/images/layer${item.id.replace( + /^\.|[^/]+(?=.svg$)/g, + (data) => (data === "." ? "" : `${data}_fault`) + )}`); const faultBg = require(`@screen/images/mapBg/fault.svg`); const normalBg = require(`@screen/images/mapBg/normal.svg`); @@ -124,6 +134,10 @@ export async function setMarkToMap(item, data, _markerClick, content) { const markerCluster = await setMarkerCluster( mapIns, data.map((item) => { + const deviceIcon = + iconCallback === "function" && + iconCallback(item.deviceState == 1, item); + return { weight: 1, lnglat: [item.longitude, item.latitude], @@ -146,7 +160,9 @@ export async function setMarkToMap(item, data, _markerClick, content) { height: 18px; margin-left: 3px; margin-bottom: 6px; - " src='${item.deviceState == 1 ? normal : fault}'> + " src='${ + deviceIcon ? deviceIcon : item.deviceState == 1 ? normal : fault + }'> `, }; }),