diff --git a/ruoyi-ui/src/api/commandDispatch/index.js b/ruoyi-ui/src/api/commandDispatch/index.js index 3f85b074..970ec5e0 100644 --- a/ruoyi-ui/src/api/commandDispatch/index.js +++ b/ruoyi-ui/src/api/commandDispatch/index.js @@ -141,3 +141,19 @@ export function importantFileStatus(eventId) { method: "get", }); } + +// 事件预案详情 +export function eventDetails(assocId) { + return request({ + url: `/business/plans/event/assocId/${assocId}`, + method: "get", + }); +} + +// 获取重要文件内容详情 +export function getEventImportantFileDetails(id) { + return request({ + url: `/business/eventImportantFile/${id}`, + method: "get", + }); +} diff --git a/ruoyi-ui/src/common/menuData.js b/ruoyi-ui/src/common/menuData.js index 2e53651d..4260bd4f 100644 --- a/ruoyi-ui/src/common/menuData.js +++ b/ruoyi-ui/src/common/menuData.js @@ -37,6 +37,12 @@ export default [ name: "perceptionTrafficSituation", component: "perception/trafficSituation/index.vue", }, + { + title: "感知事件分析", + path: "/perception/eventAnalysis", + name: "perceptionEventAnalysis", + component: "perception/eventAnalysis/index.vue", + }, ], }, { @@ -177,6 +183,12 @@ export default [ path: "/maintain/smart/manage", component: "maintenanceOperations/smart/manage/index.vue", }, + { + title: "设备数据分析", + name: "deviceDataAnalysis", + path: "/maintain/smart/analysis", + component: "maintenanceOperations/smart/analysis/index.vue", + }, ], }, { diff --git a/ruoyi-ui/src/components/eventDialogTable/eventDialog.vue b/ruoyi-ui/src/components/eventDialogTable/eventDialog.vue index 95c5ac8b..6d6452a8 100644 --- a/ruoyi-ui/src/components/eventDialogTable/eventDialog.vue +++ b/ruoyi-ui/src/components/eventDialogTable/eventDialog.vue @@ -561,7 +561,9 @@
-
复核提交
+
+ 复核提交 +
+ + + + + + + + + + + + + + + + + + +已完成 + diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processed24.svg b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processed24.svg new file mode 100644 index 00000000..96fc0377 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processed24.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + +自动结束 + diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processing21.svg b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processing21.svg new file mode 100644 index 00000000..1919d131 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/processing21.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + +上报 + diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/toBeConfirmed23.svg b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/toBeConfirmed23.svg new file mode 100644 index 00000000..226eab3e --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/images/toBeConfirmed23.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + +已终止 + diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/Table.vue b/ruoyi-ui/src/views/JiHeExpressway/components/Table.vue index 6927af95..e0aeb9f5 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/Table.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/Table.vue @@ -32,7 +32,7 @@ div.Table { font-size: 16px; background-color: unset; color: #fff; - + width:100%; ::v-deep { tr { background-color: rgba(6, 66, 88, 0); diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue index 4b27fb04..863021e4 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue @@ -6,8 +6,9 @@ {{ data.name }} {{ data.posts }}
-
节点:{{ data.processName }}
- 节点:{{ data.processName }} + - {{ data.url }} + > + + +
+
+
+ + 详情 +
+
+ {{ item.deviceName }}: + {{ item.content }} +
+
+
+
- - - -
+ 详情 +
+ +
+
+
+

+ 重要事件 +

+

+ 报送单位: + {{ formFileData.fromDept }}报送时间:{{ formFileData.createTime }} +

+

+ —————————————————— +

+

+ {{ formFileData.title }} +

+

+ 智慧管理中心: +

+ + +

+

+

+ —————————————————— +

+

+ 填报人:{{ formFileData.createName }} + 联系电话:{{ formFileData.phoneNumber }} + 签发人:{{ formFileData.issued }} +

+
+
+ +
+
+
@@ -94,9 +371,50 @@ export default { } } + .node { + color: #ffbf00; + font-size: 16px; + line-height: 19px; + } .desc { font-size: 16px; line-height: 19px; } } +.videoClass { + width: 300px; + height: 180px; +} +.docx-wrapper { + background: #fff; + padding: 30px; + display: flex; + flex-flow: column; + align-items: center; + > section.docx { + background: white; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + margin-bottom: 30px; + } + .docx p, + p.docx_1 span { + font-family: var(--docx-minorHAnsi-font); + color: #00000a; + min-height: 11pt; + font-size: 11pt; + } + button { + cursor: pointer; + width: 100px; + height: 35px; + line-height: 35px; + color: #fff; + background: #00b3cc; + border-radius: 48px; + display: flex; + justify-content: center; + align-items: center; + border: none; + } +} diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/Video/Video.vue b/ruoyi-ui/src/views/JiHeExpressway/components/Video/Video.vue index a0212bd4..40db6693 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/Video/Video.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/Video/Video.vue @@ -33,7 +33,7 @@ export default { default: 'flv' }, rangeIndex: { - default: 0 + type: [String,Number], } }, watch: { diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue index 5353882a..1b2b2d3d 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue @@ -49,8 +49,7 @@ export default { default: 'flv' }, rangeIndex: { - type: Number, - default: 0 + type: [String,Number] }, showHeader: { type: Boolean, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue index 72848b7f..8fc6ae1e 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue @@ -171,7 +171,6 @@ export default { }, 150), visibleClose(bool) { if (bool) return; - this.controlDialogVisible = false; }, }, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue index 658580c6..08476aed 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue @@ -103,15 +103,15 @@ export default { qsData.rows.forEach(item => { if (lastPath == 'deviceHour') { times.push(item.date); + datas.push(this.btnType == 1 ? item.temperature : item.visibility) } else if (lastPath == 'deviceDay') { times.push(new Date(item.date).format('dd')); + datas.push(this.btnType == 1 ? item.avgTemperature : item.avgVisibility) } else if (lastPath == 'deviceYears') { times.push(new Date(item.month).format('MM')); + datas.push(this.btnType == 1 ? item.avgTemperature : item.avgVisibility) } - - datas.push(this.btnType == 1 ? item.temperature : item.visibility) }) - // console.log('datas',datas) if (lastPath == 'deviceHour') { lineChartOption.xAxis.name = '时' diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue index 9a59b27b..b80b50af 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue @@ -13,7 +13,7 @@
@@ -43,7 +43,91 @@ import { markerClusterIns } from "@screen/pages/Home/components/RoadAndEvents/ut import { eventMap } from "@screen/pages/Home/components/RoadAndEvents/utils/buttonEvent"; let vehicleTypeList = []; - +const _formList = [{ + label: "报警时间:", + key: "warningTime", + type: "text", + }, + { + label: "事件地点:", + key: "stakeMark", + type: "text", + }, + { + label: "路段方向:", + key: "direction", + type: "text", + isAlone: true, + }, + { + label: "事件来源:", + key: "warningSource", + type: "text", + enum: "InfoWarningSource", + }, + { + label: "事件类型:", + key: "warningType", + type: "select", + options: { + disabled: true, + options: WarningTypeList, + }, + ons: { + change: (value, { data }) => { + this.formList[5].options.options = + WarningSubclassList[value] || []; + data.warningSubclass = null; + }, + }, + }, + { + label: "细分类型:", + key: "warningSubclass", + type: "select", + options: { + options: [], + }, + }, + // { + // label: "车辆类型:", + // key: "vehicleType", + // type: "select", + // options: { + // options: vehicleTypeList + // }, + // }, + { + label: "事件描述:", + key: "remark", + options: { + type: "textarea", + maxlength: 100, + autosize: { minRows: 3, maxRows: 3 }, + showWordLimit: true, + }, + }, + { + label: "影响车道:", + key: "lane", + type: "CheckboxGroup", + options: { + // activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)", + options: LaneOccupancyList, + gap: "12px", + }, + }, + { + label: "持续时长:", + key: "duration", + type: "text", + }, + // { + // label: "天气情况:", + // key: "weather", + // type: "text", + // }, +] function getDuration(warningTime) { const currentTime = moment(); const specifiedTime = moment(warningTime); @@ -94,92 +178,8 @@ export default { // deviceVendors: "XXX厂家", // time: "2023/01/02 09:09:09" }, - formList: [ - { - label: "报警时间:", - key: "warningTime", - type: "text", - }, - { - label: "事件地点:", - key: "stakeMark", - type: "text", - }, - { - label: "路段方向:", - key: "direction", - type: "text", - isAlone: true, - }, - { - label: "事件来源:", - key: "warningSource", - type: "text", - enum: "InfoWarningSource", - }, - { - label: "事件类型:", - key: "warningType", - type: "select", - options: { - disabled: true, - options: WarningTypeList, - }, - ons: { - change: (value, { data }) => { - this.formList[5].options.options = - WarningSubclassList[value] || []; - data.warningSubclass = null; - }, - }, - }, - { - label: "细分类型:", - key: "warningSubclass", - type: "select", - options: { - options: [], - }, - }, - // { - // label: "车辆类型:", - // key: "vehicleType", - // type: "select", - // options: { - // options: vehicleTypeList - // }, - // }, - { - label: "事件描述:", - key: "remark", - options: { - type: "textarea", - maxlength: 100, - autosize: { minRows: 6, maxRows: 6 }, - showWordLimit: true, - }, - }, - { - label: "影响车道:", - key: "lane", - type: "CheckboxGroup", - options: { - // activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)", - options: LaneOccupancyList, - gap: "12px", - }, - }, - { - label: "持续时长:", - key: "duration", - type: "text", - }, - // { - // label: "天气情况:", - // key: "weather", - // type: "text", - // }, - ], + formList: [], + loading:false, }; }, async created() { @@ -196,42 +196,116 @@ export default { this.dialogData.pictures = otherConfig.pictures } - console.log(1122, this.dialogData, 3344); + this.formList = [..._formList] }, beforeDestroy() { clearInterval(this.interval); }, methods: { onDelete() { - const id = this.dialogData.id; - id && - this.$confirm("确定误报吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }).then(() => { - request({ - url: `/business/warning/delete`, - method: "post", - data: { id }, - }).then((result) => { - if (result.code == 200) Message.success("成功!"); - else Message.error(result?.msg); - const item = { title: "感知事件" }; - - eventMap[`事件专题/${item.title}_close`]?.call( - this, - item, - (item) => { - return item?.extData?.id == id; + const self = this; + if(this.formList.length === _formList.length ){ + this.formList.splice(6,0,{ + label: "解除类型:", + key: "relieveType", + type: "RadioGroup", + isAlone: true, + required: true, + options: { + activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)", + options: [ + { + key: "1", + label: "误报解除", + }, + { + key: "2", + label: "已结束", }, - "special" - ); - //触发全局监听事件 - this.$root.$emit('refresh-event'); - // markerClusterIns.setData(); + { + key: "3", + label: "无需处理", + }, + { + key: "4", + label: "其它", + } + ], + }, + }) + this.formList.splice(7,0,{ + label: "解除原因:", // 标题 + key: "relieveReason", //数据存储字段 + isAlone: true, // 单独一行 + type: "input", //组件类型(el-input 去掉el-即可) 不填默认为input + options: { //element原生formItem属性 + type: "textarea", + autosize: true, + maxlength: 200, + autosize: { minRows: 3, maxRows: 3 }, + showWordLimit: true, + } + }) + } else { + this.$refs.FormConfigRef.validate() + .then((result) => { + this.loading = true; + request({ + url: `/business/warning/falseAlarm`, + method: "post", + data: { + id: this.dialogData.id, + relieveType: result.relieveType, + relieveReason: result.relieveReason + }, + }).then((result) => { + + if (result.code == 200) Message.success("成功!"); + else Message.error(result?.msg); + this.obverseVisible = false; + this.loading = false; + setTimeout(() => { + self.$root.$emit('delete-event'); + //触发全局监听事件 + self.$root.$emit('refresh-event'); + }, 500); + + + }); + }) + .catch((err) => { }); - }); + } + // 2024-05-18 修改为二次确认,增加误报类型和误报原因 + // const id = this.dialogData.id; + // id && + // this.$confirm("确定误报吗?", "提示", { + // confirmButtonText: "确定", + // cancelButtonText: "取消", + // type: "warning", + // }).then(() => { + // request({ + // url: `/business/warning/delete`, + // method: "post", + // data: { id }, + // }).then((result) => { + // if (result.code == 200) Message.success("成功!"); + // else Message.error(result?.msg); + // const item = { title: "感知事件" }; + + // eventMap[`事件专题/${item.title}_close`]?.call( + // this, + // item, + // (item) => { + // return item?.extData?.id == id; + // }, + // "special" + // ); + // //触发全局监听事件 + // this.$root.$emit('refresh-event'); + // // markerClusterIns.setData(); + // }); + // }); }, getVehicleTypeList(fn) { if (vehicleTypeList.length) { @@ -275,35 +349,6 @@ export default { .then(({ data, code }) => { if (code != 200) return Message.error("详情获取失败"); - // data = { - // "searchValue": null, - // "createBy": null, - // "createTime": "2024-07-23 14:18:58", - // "updateBy": null, - // "updateTime": "2024-02-01 15:55:34", - // "remark": "111", - // "params": {}, - // "id": "1", - // "stakeMark": "k103+900", - // "direction": "1", - // "deptId": null, - // "warningState": 1, - // "warningTime": null, - // "userId": null, - // "warningSource": 1, - // "warningLevel": null, - // "warningType": 1, - // "warningSubclass": null, - // "warningTitle": null, - // "otherConfig": null, - // "lane": null, - // "sectionName": null, - // "number": 0, - // "type": null, - // "sectionId": null, - // "longitude": "116.493888", - // "latitude": "36.291145" - // }; data.duration = this.convertSecToHHmmss(data.duration); this.data = { ...data, @@ -334,16 +379,6 @@ export default { }, updateEvent() { this.btnLoading = true; - - // console.log({ - // id: this.dialogData.id, - // warningType: this.data.warningType, - // warningSubclass: this.data.warningSubclass, - // remark: this.data.remark, - // vehicleType: this.data.vehicleType, - // lane: this.data.lane - // }) - request({ url: `/perceivedEvents/warning/updateWarning`, method: "post", diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/chart.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/chart.js new file mode 100644 index 00000000..faf755c5 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/chart.js @@ -0,0 +1,146 @@ +import * as echarts from "echarts"; + +export const chartOption ={ + color: ["#2AD9FD"], + xAxis: { + name: "日", + type: "category", + // boundaryGap: ["15%", "15%"], + nameTextStyle: { + color: "#2AD9FD", + align: "right", + fontSize: 15, + padding: [0, -15, 0, 0], + }, + boundaryGap: false, + data: ['00:00','02:00','04:00','06:00'], + axisTick: { + show: false, + }, + axisLabel: { + color: "#fff", + fontSize: 12, + }, + axisLine: { + lineStyle: { + color: "#668598", + }, + }, + }, + yAxis: [{ + name: "雨量日计", + type: "value", + nameTextStyle: { + color: "#2AD9FD", + // align: "right", + fontSize: 15, + // padding: [0, -15, 0, 0], + }, + // nameGap: 24, + splitLine: { + lineStyle: { + type: [6, 9], + color: "rgba(255,255,255, .3)", + // dashOffset: [10, 10], + // cap: 21, + // width: 2 + }, + }, + axisLabel: { + color: "#fff", + fontSize: 12, + formatter: "{value}", + }, + },{ + name: "雨量累计", + type: "value", + nameTextStyle: { + color: "#2AD9FD", + // align: "right", + fontSize: 15, + // padding: [0, -15, 0, 0], + }, + // nameGap: 24, + splitLine: { + lineStyle: { + type: [6, 9], + color: "rgba(255,255,255, .3)", + // dashOffset: [10, 10], + // cap: 21, + // width: 2 + }, + }, + axisLabel: { + color: "#fff", + fontSize: 12, + formatter: "{value}", + }, + }], + grid: { + left: 33, + top: 33, + bottom: 24, + right: 36, + }, + tooltip: { + trigger: "axis", + backgroundColor: "rgba(0,0,0,0.36)", + borderWidth: 0, + textStyle: { + color: "#fff", + }, + formatter: "{b}:{c}", + }, + legend: { + textStyle: { + color: '#2AD9FD' + } + }, + series: [ + { + data: [1,2,3,4], + type: "line", + showSymbol: false, + smooth: true, + name: '计数', + lineStyle: { + color: "#2AD9FD", + }, + areaStyle: { + opacity: 0.8, + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: "rgb(90, 227, 255, .9)", + }, + { + offset: 1, + color: "rgba(42,217,253,0)", + }, + ]), + }, + }, { + data: [1,2,3,4], + type: "line", + showSymbol: false, + smooth: true, + name: '计数', + lineStyle: { + color: "#2AD9FD", + }, + areaStyle: { + opacity: 0.8, + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: "rgb(90, 227, 255, .9)", + }, + { + offset: 1, + color: "rgba(42,217,253,0)", + }, + ]), + }, + }, + ], +}; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/data.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/data.js index 45eda2bb..c69a6134 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/data.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/data.js @@ -419,33 +419,28 @@ export const tabList = { labelWidth: "70px", list: [ { - label: "道路编码", - key: "roadCode", - gridColumn: "3", - }, - { - label: "道路名称", - key: "roadName", - gridColumn: "3", + label:"名称", + key: "crossingType", + gridColumn: "3" }, { - label: "变坡点桩号", - key: "stakeMark1", + label: "方向", + key: "direction", gridColumn: "3", }, { - label: "方向", - key: "direction", + label: "所属机构", + key: "branchCenterFullName", gridColumn: "3", }, { - label: "起点桩号", - key: "startPileNumber", + label: "单位", + key: "groupCompany", gridColumn: "3", }, { - label: "终点桩号", - key: "endPileNumber", + label: "桩号", + key: "end_mark", gridColumn: "3", }, { @@ -458,31 +453,40 @@ export const tabList = { key: "latitude", gridColumn: "3", }, + + ], + }, + { + name: "边坡测点数据", + key: "second", + labelWidth: "70px", + list: [ { - label: "直坡段长", - key: "segmentLength", - gridColumn: "3", + label:"醒目编号", + key: "pro_code", + gridColumn: "3" }, { - label: "横坡", - key: "lateralSlope", + label: "标段编号", + key: "con_code", gridColumn: "3", }, { - label: "竖曲线半径", - key: "verticalCurveRadius", + label: "项目单位工程编号", + key: "unit_code", gridColumn: "3", }, { - label: "纵坡", - key: "longitudinalSlope", + label: "测点编号", + key: "meaPointNum", gridColumn: "3", }, { - label: "管养单位", - key: "managementAndMaintenanceUnit", - gridColumn: "6", + label: "测点名称", + key: "meaPointName", + gridColumn: "3", }, + ], }, ], diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue index c60bfeb7..6991dcd6 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue @@ -5,12 +5,24 @@