From 5ffc36572ce1ccaf8ab0866670180b6969e5ebd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=92=A6?= <360013221@qq.com> Date: Wed, 22 May 2024 10:36:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=A4=E9=80=9A=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/HomeFrameControl/index.vue | 44 +++-- .../Cards/DeviceControl/data.js | 4 +- .../Cards/DeviceControl/index.vue | 2 +- .../control/event/event/FormEvent/index.vue | 8 +- .../smart/analysis/charts.js | 97 +++++++++++ .../smart/analysis/index.vue | 158 ++++++++++++++++-- 6 files changed, 283 insertions(+), 30 deletions(-) create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js 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 93f8a409..52f5e3f8 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 @@ -22,7 +22,7 @@ -
+
-
+
暂无数据 - +
+ + +
-
+
- +
@@ -77,14 +86,12 @@
- -
@@ -345,6 +352,14 @@ export default { }, ], data2:[], //批量管控 + tableTotal2:0, + searchData2: { + pageSize: 20, + pageNum: 1, + }, + + + dataRecord:{ operType: "0", operTime:[] @@ -463,16 +478,22 @@ export default { request({ url: `/business/dcBatchFunctionsJobGroup/list`, method: "get", - params: {}, + params: {...this.searchData2}, }) .then((result) => { if (result.code != 200) return; - this.tableTotal = result.total; + this.tableTotal2 = result.total; this.data2 = result.rows; }) .finally(() => { }); }, + onSizeChange2(pageSize) { + this.data2 = []; + this.searchData2.pageSize = pageSize; + this.searchData2.pageNum = 1; + this.bindTimeing(); + }, bindRecord(){ request({ url: `/business/dcOperLog/list`, @@ -572,6 +593,7 @@ div.el-popper.global-input-search-popover { flex-basis: percentage(1/4); padding-right: 10px; padding-bottom: 10px; + overflow-y: auto; } .remark { font-size: 14px; line-height: 20px; height: 40px; overflow: hidden; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/data.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/data.js index 3f2b1835..e6cfebb6 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/data.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/data.js @@ -4,7 +4,7 @@ export const defaultTableInfo = { deviceType: 2, searchRule: 1, number: 0, - isDefault: true - // zx_operationType: 2, + isDefault: true, + zx_operationType: 2, // hf_operationType: 2, }; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue index e0449a82..d4a0042b 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue @@ -130,7 +130,7 @@ export default { "deviceType": this.tableData[index].deviceType, "searchRule": this.tableData[index].searchRule, "number": this.tableData[index].number, - "deviceList": this.tableData[index].devList.join(','), + "deviceList": this.tableData[index].devList?.join(','), "executeConfig": "{\"operationType\":2}", "recoverConfig": "{\"operationType\":2}" } diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue index 1f74cea3..caef32f9 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue @@ -193,8 +193,11 @@ export default { // this.modelVisible = false; // this.submitting = false; // this.$emit('queryData',true) - // return; - + // 匝道数组特殊处理 + if(formData.dcEventTrafficControl && formData.dcEventTrafficControl.rampId){ + formData.dcEventTrafficControl.rampId = formData.dcEventTrafficControl.rampId.join(',') + } + request({ url: `/dc/system/event`, method: "post", @@ -249,6 +252,7 @@ export default { .fader { height: 500px; overflow-y: auto; + overflow-x: none; } .form { diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js new file mode 100644 index 00000000..d3ae7114 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js @@ -0,0 +1,97 @@ +/* 数据 */ +let nameList = [ + "1月", + "2月", + "3月", + "4月", + "5月", + "6月", + "7月", + "8月", + "9月", + "10月", + "11月", + "12月", +]; // 类别 +var options = { + tooltip: { + show: true, + trigger: "axis", + valueFormatter: null + }, + legend: { + icon: "circle", + itemHeight: 8, + itemWidth: 8, + top: "5%", + x: "right", + textStyle: { + color: "#fff", + }, + }, + grid: { + top: "25%", //上边距 + right: "0%", //右边距 + left: "0%", //左边距 + bottom: "0%", //下边距 + containLabel: true, + }, + xAxis: { + data: [], + axisTick: { + show: false, //隐藏X轴刻度 + }, + axisLine: { + lineStyle: { + color: "rgba(49, 217, 255, 0.8)", + }, + }, + axisLabel: { + show: true, + color: "#fff", + fontFamily: "Source Han Sans CN-Regular", + }, + }, + yAxis: [ + { + type: "value", + name: "(指标)", + nameTextStyle: { + color: "#fff", + fontFamily: "Source Han Sans CN-Regular", + align: "right", + verticalAlign: "center", + }, + axisLabel: { + color: "#fff", + fontFamily: "HarmonyOS Sans-Regular", + }, + splitLine: { + lineStyle: { + color: "rgba(49, 217, 255, 0.5)", + }, + }, + }, + ], + series: [ + { + name: "交通特征", + type: "line", + symbol: "circle", + symbolSize: 0, + + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: "#32BB8A", + }, + lineStyle: { + width: 2, + }, + data: [ + 1000, 800, 520, 600, 900, 700, 700, 1000, 800, 520, 600, 900, 700, 700, + ], // 折线图的数据 + } + ], +}; + +export default options; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue index 186e9b0e..dc8da5f3 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue @@ -22,7 +22,7 @@
-
+
{{ item.deviceName }}
+ + + + + +
+
+ +
+
+
+ + + + +
-
@@ -66,14 +82,22 @@ import vuescroll from "vuescroll"; import scrollOptions from "@/common/scrollbar.js"; import { Message } from "element-ui"; import WgtTitle from "@screen/pages/perception/widgets/title"; +import Button from "@screen/components/Buttons/Button.vue"; +import { setLoading } from "@screen/utils/index.js"; +import chart1 from "./charts"; +import * as echarts from "echarts"; +import Table from '@screen/components/Table.vue'; export default { name: 'smartAnalysis', components: { vuescroll, - WgtTitle + WgtTitle, + Button, + Table }, data() { return { + listIndex: -1, form: { deviceName: '', deviceState: [1, 0] @@ -85,7 +109,11 @@ export default { total: 0, list: [], scrollOptions, - date:'' + date:'', + devParam:null, + devOptions:[], + devParamName:'', + tableData:[] } }, created() { @@ -96,6 +124,81 @@ export default { this.date = moment().format('YYYY-MM-DD') }, methods: { + bindData(){ + if(this.devParam === null){ + Message.warning('未选择参数') + return; + } + const param = _.find(this.devOptions,{id:this.devParam}) + this.devParamName = param.name; + const closeLoading = setLoading(); + request({ + url: 'business/device/properties/deviceNameData', + method: 'post', + data:{ + deviceId: this.list[this.listIndex].deviceId, + propertyId: param.propertyId, + propertyName: param.propertyName, + deviceType: param.deviceType, + dateTime: this.date + } + }).then(result => { + if (result.code != 200) return Message.error(result?.msg); + let name = []; + let value = []; + let unit = '' + result.data.forEach((e,index) => { + e.name = this.list[this.listIndex].deviceName, + name.push(e.timestamp.substr(11)) + const n = e.result.match(/\d+\.*\d*/g); + if(n.length > 0){ + if(unit === ''){ + unit = e.result.substr(n[0].length) + } + value.push(parseFloat(n[0])) + } else { + value.push(0) + } + }); + this.tableData = result.data; + chart1.xAxis.data = name; + chart1.yAxis[0].name = unit; + chart1.series[0].name = param.name; + chart1.series[0].data = value; + chart1.tooltip['valueFormatter'] = function (value) { + return value + " "+unit; + } + var myChart1 = echarts.init(document.getElementById("chart1")); + myChart1.setOption(chart1); + }).finally(()=>{ + closeLoading() + }) + }, + devChange(e){ + const dev = _.find(devOptions,{id: e}) + console.log(dev) + }, + devClick(item,index){ + this.listIndex = index; + request({ + url: 'business/device/deviceParameter', + method: 'get', + params:{ + deviceType:item.deviceType + } + }).then(result => { + if (result.code != 200) return Message.error(result?.msg); + + this.devOptions = result.rows; + if(result.rows.length > 0){ + this.devParam = result.rows[0].id + this.bindData(); + } else { + this.devParam = null; + } + + }) + }, onSizeChange(pageSize) { this.page.pageSize = pageSize; this.bindList(); @@ -112,6 +215,7 @@ export default { if (params.deviceName === '') { delete params.deviceName } + request({ url: 'business/device/selectDeviceNameList', method: 'get', @@ -120,6 +224,7 @@ export default { if (result.code != 200) return Message.error(result?.msg); this.list = result.rows; this.total = result.total; + }) }, onResetSearch() { @@ -171,6 +276,31 @@ export default { .right { flex: 1; margin-left: 30px; + .top{ + .search{ + display: flex; + justify-content: flex-end; + } + } + .right-bottom{ + width: 100%; + height: 100%; + flex:1; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + } + .chart1{ + width: 100%; + flex:1; + } + .right-table{ + width: 100%; + height: 600px; + overflow-y: auto; + margin-bottom: 30px; + } } } @@ -197,7 +327,9 @@ export default { display: flex; justify-content: space-between; } - +.deviceSel{ + background-color:#1798a9; +} .device:hover { background-color: #1d647f; } @@ -206,18 +338,12 @@ export default { width: 18px; height: 18px; } -.top{ - .search{ - display: flex; - justify-content: flex-end; - } -} +