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 @@
-
+
{ this.activeIcon = val }"
@@ -35,9 +35,10 @@
-
+
-
+
-
+
-
-
@@ -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;
- }
-}
+