From 96a41957ef1ea05a80c9d068b4e5e948b338e873 Mon Sep 17 00:00:00 2001 From: qingzhengli <1204552371@qq.com> Date: Fri, 19 Apr 2024 09:58:10 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=20=E6=89=B9=E9=87=8F=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=20=E8=A1=8C=E8=BD=A6=E8=AF=B1=E5=AF=BC=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DeviceControlDialog.vue | 222 +------------ .../components/DeviceParam.vue | 307 ++++++++++++++++++ .../Dialogs/DrivingGuidance/index.vue | 19 +- .../components/DeviceControlDialog.vue | 6 +- .../FatigueWakesUp/components/DeviceParam.vue | 3 +- .../Dialogs/FatigueWakesUp/index.vue | 24 +- .../components/HomeFrameControl/index.vue | 10 +- 7 files changed, 343 insertions(+), 248 deletions(-) create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceParam.vue 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 a34a4490..5080769c 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 @@ -1,28 +1,12 @@ - - - - - 说明: 定时控制模式下,诱导灯在开始时间自动打开,结束时间自动关闭 - - - 说明: 万年历自动模式下,诱导灯在白天会自动关闭,夜晚会自动打开 - - + { submitting = val }"> + - + 取消 确定 @@ -35,14 +19,10 @@ import Dialog from "@screen/components/Dialog/index.vue"; import Button from "@screen/components/Buttons/Button.vue"; import Form from "@screen/components/FormConfig"; -import { cloneDeep } from "lodash"; -import { delay } from "@screen/utils/common.js"; -import request from "@/utils/request"; - import { Message } from "element-ui"; // import { axiosIns } from "@screen/utils/axios/auth.js"; import { handle3CResult } from "@screen/utils/deviceControl.js"; - +import DeviceParam from "./DeviceParam.vue"; const workStatus = [ { key: "00", @@ -74,6 +54,7 @@ export default { Dialog, Button, Form, + DeviceParam, }, model: { prop: "visible", @@ -82,99 +63,12 @@ export default { props: { visible: Boolean, deviceId: String, + id: String, + deviceType: String, }, - inject: ["requestURL"], data() { return { submitting: false, - formData: {}, - formList: [ - { - label: "类型:", - key: "controlType", - type: "RadioGroup", - default: "00", - ons: { - input: (value, { data }) => { - const oldFormData = this.oldFormData; - if (!oldFormData) return; - - this.formList[1].options.options.splice(-1, 1, { - ...workStatus.slice(-1)[0], - disabled: value != "00", - }); - - this.formList[1].options.options.splice(0, 1, { - ...workStatus[0], - disabled: value != "00", - }); - - switch (value) { - case "01": - if (["04", "00"].includes(data.onWorkStatus)) - data.onWorkStatus = null; - if (["04", "00"].includes(data.inWorkStatus)) - data.inWorkStatus = null; - - Array.isArray(oldFormData.displayTime) && - (data.displayTime = [...oldFormData.displayTime]); - break; - } - }, - }, - options: { - type: "circle", - options: [ - { - key: "00", - label: "手动控制", - }, - { - key: "01", - label: "自动控制", - }, - { - key: "02", - label: "万年历", - }, - ], - }, - }, - { - label: "上行工作状态:", - key: "onWorkStatus", - required: true, - type: "select", - options: { - placeholder: "请选择", - options: workStatus, - }, - }, - { - label: "下行工作状态:", - key: "inWorkStatus", - required: true, - type: "select", - options: { - placeholder: "请选择", - options: workStatus, - }, - }, - { - label: "选择时间:", - key: "displayTime", - type: "timePicker", - required: true, - visible: (data) => data.controlType == "01", - options: { - isRange: true, - rangeSeparator: "至", - valueFormat: "HH:mm", - startPlaceholder: "开始时间", - endPlaceholder: "结束时间", - }, - }, - ], }; }, computed: { @@ -187,105 +81,9 @@ export default { }, }, }, - watch: { - modelVisible: { - immediate: true, - handler(bool) { - if (!bool) return; - - this.reDisplay(); - }, - }, - }, methods: { - reDisplay() { - this.requestURL().then(async (data) => { - await delay(0); - - const formData = this.$refs.FormConfigRef?.formData; - - formData.controlType = data.mode; - - await handle3CResult(data, formData, this.requestURL); - - this.oldFormData = { ...formData }; - }); - }, handleSubmit() { - const result = {}, - formData = this.$refs.FormConfigRef?.formData; - - result.mode = formData.controlType; - - delete result.controlType; - - if (result.mode === "01") { - if (!formData.displayTime?.length) - return Message.error(`时间不能为空!`); - } - - if (!formData.onWorkStatus || !formData.inWorkStatus) - return Message.error(`工作状态不能为空!`); - - if (["01", "02"].includes(result.mode)) { - if (["04", "00"].includes(formData.onWorkStatus)) - return Message.error(`上行工作状态不能选择当前类型!`); - if (["04", "00"].includes(formData.inWorkStatus)) - return Message.error(`下行工作状态不能选择当前类型!`); - } - - result.onWorkStatus = formData.onWorkStatus; - result.inWorkStatus = formData.inWorkStatus; - - this.submitting = true; - - // this.submitting = false; - // return; - - /** - * 接口 地址 - * - * https://www.showdoc.com.cn/2450725213006196/10877717880262686 - */ - let promise = []; - - switch (result.mode) { - case "00": - promise.push(this.requestURL("51", result)); - break; - case "01": - case "02": - const options = { mode: result.mode }; - - if (result.mode === "01") { - options.startDisplayTime = formData.displayTime[0]; - options.endDisplayTime = formData.displayTime[1]; - } - - promise.push( - this.requestURL("30", { - onWorkStatus: result.onWorkStatus, - inWorkStatus: result.inWorkStatus, - }), - this.requestURL("51", options) - ); - break; - } - Promise.all(promise) - .then(() => { - this.modelVisible = false; - }) - .catch((err) => { - console.log( - "%c [ err ]-110-「DeviceControlDialog.vue」", - "font-size:15px; background:#547bf2; color:#98bfff;", - err - ); - Message.error(`设备操作失败!`); - }) - .finally(() => { - this.submitting = false; - }); + this.$refs.DeviceParam.handleSubmit(); }, }, }; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceParam.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceParam.vue new file mode 100644 index 00000000..9a92dfd8 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceParam.vue @@ -0,0 +1,307 @@ + + + + + + 说明: 定时控制模式下,诱导灯在开始时间自动打开,结束时间自动关闭 + + + 说明: 万年历自动模式下,诱导灯在白天会自动关闭,夜晚会自动打开 + + + + + + + + + diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue index 44f73803..31cc6dd6 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue @@ -9,11 +9,7 @@ - + @@ -21,12 +17,9 @@ 设备操作 - - + @@ -127,7 +120,7 @@ export default { .then((data) => { this.dialogData.brand = data.brand; }) - .catch((err) => {}); + .catch((err) => { }); // this.requestURL(52) // .then((result) => { @@ -164,7 +157,7 @@ export default { if (roadInfo) this.data.roadName = roadInfo.roadName; }, methods: { - handleClickTabs() {}, + handleClickTabs() { }, requestURL(functionId = 52, options = {}) { return new Promise((resolve, reject) => { request @@ -219,7 +212,7 @@ export default { align-items: center; justify-content: end; - > div { + >div { font-size: 16px; padding: 6px 12px; } diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue index af45d841..e21cc56c 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue @@ -1,7 +1,8 @@ - + @@ -39,7 +40,8 @@ export default { props: { visible: Boolean, deviceId: String, - productId: String + productId: String, + deviceType: String }, data() { return { diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceParam.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceParam.vue index fa7f49f4..64e8e65f 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceParam.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceParam.vue @@ -110,6 +110,7 @@ export default { visible: Boolean, deviceId: String, productId: String, + deviceType: String, isMultiControl: Boolean, selectItems: { type: Array, @@ -347,7 +348,7 @@ export default { else devices = [{ iotDeviceId: this.deviceId, id: this.productId, - deviceType: 10 + deviceType: this.deviceType }] if (this.activeName == "first") { //一般模式 diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/index.vue index 2ff3e25a..afc444cb 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/index.vue @@ -4,20 +4,11 @@ - + - + @@ -26,11 +17,8 @@ 设备操作 - + @@ -115,7 +103,7 @@ export default { if (roadInfo) this.$set(this.data, "roadName", roadInfo.roadName); }, methods: { - handleClickTabs() {}, + handleClickTabs() { }, }, }; @@ -156,7 +144,7 @@ export default { align-items: center; justify-content: end; - > div { + >div { font-size: 16px; padding: 6px 12px; } diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue index df3343db..c5fd436f 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue @@ -41,11 +41,16 @@ import { initSearch } from "@screen/utils/enum/common.js" import SmartDeviceParams from "@screen/pages/Home/components/Dialogs/SmartDevice/components/DeviceParamsMulti.vue"; import BroadcastParam from "@screen/pages/Home/components/Dialogs/Broadcast/components/BroadcastParamMulti.vue"; import FatigueWakesUpParam from "@screen/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceParam.vue"; +import DrivingGuidanceParam from "@screen/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceParam.vue"; + import { DeviceForMap } from "@screen/pages/Home/components/RoadAndEvents/utils/buttonEvent"; -const componentMap = { "设备箱": "SmartDeviceParams", "语音广播": "BroadcastParam", "疲劳唤醒": "FatigueWakesUpParam" } //DeviceTopics[deviceType] -//"情报板": undefined, "行车诱导": undefined, , "合流区": undefined, +const componentMap = { + "设备箱": "SmartDeviceParams", "语音广播": "BroadcastParam", "疲劳唤醒": "FatigueWakesUpParam", + "行车诱导": "DrivingGuidanceParam" +} //DeviceTopics[deviceType] +//"情报板": undefined, , , "合流区": undefined, const hiddenDevices = ["SmartDeviceParams"]; const controlMulti = Object.keys(componentMap);//6种批量控制 const DeviceTopics = {};//6种批量控制 事件专题 {key:label} @@ -79,6 +84,7 @@ export default { SmartDeviceParams, BroadcastParam, FatigueWakesUpParam, + DrivingGuidanceParam, }, data() { return {