From 1ed2e2c7a5e7af583083415850bd93623a1d10ee Mon Sep 17 00:00:00 2001
From: mbp <360013221@qq.com>
Date: Wed, 11 Sep 2024 19:44:48 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=83=85=E6=8A=A5=E6=9D=BF?=
=?UTF-8?q?=E6=8B=96=E6=8B=BD=E9=97=AA=E5=B1=8F=E6=A0=B7=E5=BC=8F+?=
=?UTF-8?q?=E6=8B=A5=E5=A0=B5=E8=B7=AF=E6=AE=B5=E6=98=BE=E7=A4=BA=E6=91=84?=
=?UTF-8?q?=E5=83=8F=E5=A4=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-ui/package.json | 18 ++-
.../components/HomeTraffic/DialogCamera.vue | 79 +++++++++++
.../Home/components/HomeTraffic/index.vue | 125 ++++++++++++++++--
.../Home/components/RoadAndEvents/index.vue | 3 +
.../CrowdnessIndicatorRankings/index.vue | 4 +
.../components/weaterData/index.vue | 4 +-
.../components/weaterData/index.vue | 4 +-
.../pages/service/board/index.vue | 4 +-
.../pages/service/broadcast/index.vue | 2 +-
.../src/views/event/reservePlan/board.vue | 2 +-
.../src/views/information/board/index.vue | 2 +-
.../workbench/config/components/board.vue | 2 +-
ruoyi-ui/vue.config.js | 9 +-
13 files changed, 233 insertions(+), 25 deletions(-)
create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/DialogCamera.vue
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index ce9419fd..7003123c 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -41,10 +41,12 @@
"@antv/x6": "^2.18.1",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0",
+ "@vue/babel-preset-app": "^5.0.8",
"@vue/composition-api": "^1.7.1",
"axios": "0.21.0",
+ "browserslist": "^4.23.3",
"clipboard": "2.0.6",
- "core-js": "3.8.1",
+ "core-js": "^3.38.1",
"cron-parser": "^2.16.3",
"cronstrue": "^1.100.0",
"crypto-js": "4.0.0",
@@ -62,10 +64,11 @@
"fuse.js": "6.4.3",
"gis-map-admin": "^0.9.2",
"gis-map-tunnel": "^0.1.3",
- "gis-map-universal": "^0.3.5",
+ "gis-map-universal": "^0.5.4",
"highlight.js": "9.18.5",
"html-docx-js": "^0.3.1",
"imports-loader": "^0.8.0",
+ "istanbul-lib-report": "^3.0.1",
"iview": "^3.3.3",
"jquery": "^3.6.0",
"jquery-ui-dist": "^1.12.1",
@@ -82,14 +85,20 @@
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
+ "pnp-webpack-plugin": "^1.7.0",
+ "portfinder": "^1.0.32",
+ "qs": "^6.13.0",
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortable.js": "^0.3.0",
"sortablejs": "^1.10.2",
"swiper": "^5.4.5",
+ "url-loader": "^4.1.1",
"uuid": "^9.0.1",
"video.js": "^5.6.0",
"videojs-contrib-hls": "^5.15.0",
+ "videojs-flash": "^2.2.1",
+ "videojs-swf": "^5.4.2",
"vue": "2.6.12",
"vue-awesome-swiper": "^3.1.3",
"vue-concise-slider": "^3.4.4",
@@ -99,6 +108,7 @@
"vue-drag-resize": "^1.5.4",
"vue-draggable-resizable": "^2.3.0",
"vue-json-editor": "^1.4.3",
+ "vue-loader": "^17.4.2",
"vue-meta": "^2.4.0",
"vue-quill-editor": "3.0.6",
"vue-resource": "^1.5.3",
@@ -110,6 +120,10 @@
"vuedraggable": "^2.24.3",
"vuescroll": "^4.18.1",
"vuex": "3.6.0",
+ "webpack": "^4.29.5",
+ "webpack-chain": "^6.5.1",
+ "webpack-dev-server": "^5.1.0",
+ "webpack-merge": "^6.0.1",
"zrender": "^5.4.4"
},
"devDependencies": {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/DialogCamera.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/DialogCamera.vue
new file mode 100644
index 00000000..e4c0ac7f
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/DialogCamera.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue
index 28001e03..e62df67d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue
@@ -22,6 +22,7 @@
show-stops>
+
@@ -32,6 +33,7 @@ import Form from "@screen/components/FormConfig";
import request from '@/utils/request'
import { line } from "@antv/x6/lib/registry/port-layout/line";
import moment from "moment";
+import DialogCamera from "./DialogCamera.vue";
import { re } from "mathjs";
const enum_color = {
0: '#A9AEB8', //未知
@@ -45,6 +47,7 @@ export default {
components: {
Button,
Form,
+ DialogCamera,
},
data() {
return {
@@ -57,12 +60,21 @@ export default {
isPlay: false,
lnglats:{},
lnglatsNode: {},
- nodeList: []
+ devices:{},
+ nodeList: [],
+
+
+ dialogVisibleCamera: false,
+ dialogDataCamera: null,
};
},
created() {
},
methods: {
+
+ handledDialogCamera(bool) {
+ this.dialogVisibleCamera = bool;
+ },
drawThumbail(list){
this.nodeList.forEach(e => {
@@ -142,20 +154,41 @@ export default {
window.graphInstance.removeNode(e)
});
this.nodeList = [];
+
+ const self = this;
+
if(this.activeIcon === type){
this.activeIcon = null;
this.isPlay = false;
setTimeout(() => {
Vue.prototype.mapIns.addPointByArr( {pointList:[]}, 'lineLayer', true);
Vue.prototype.mapIns.removeLayerByName('lineLayer');
+
+ Vue.prototype.mapIns.addPointByArr( {pointList:[]}, 'lineLayer_camera', true);
+ Vue.prototype.mapIns.removeLayerByName('lineLayer_camera');
window.graphInstance.removeNode('roadError')
}, 200);
this.silderVisible = false;
} else {
+ this.$root.$emit('layer-clear');
+
+ const icon = require(`@screen/images/layerb/路测设备/摄像机_active.svg`);
+ const icon_f = require(`@screen/images/layerb/路测设备/摄像机_fault.svg`);
+ const iconb = require(`@screen/images/deviceType/ballb_active.svg`);
+ const iconb_f = require(`@screen/images/deviceType/ballb_fault.svg`);
+ const iconc = require(`@screen/images/deviceType/ballc_active.svg`);
+ const iconc_f = require(`@screen/images/deviceType/ballc_fault.svg`);
+ const icond = require(`@screen/images/deviceType/balld_active.svg`);
+ const icond_f = require(`@screen/images/deviceType/balld_fault.svg`);
+ const icone = require(`@screen/images/deviceType/balle_active.svg`);
+ const icone_f = require(`@screen/images/deviceType/balle_fault.svg`);
+
+
this.activeIcon = type;
this.lnglats = {};
this.lnglatsNode = {};
+ this.devices = {};
request({
url: '/system/information/listTime',
method: 'get'
@@ -176,6 +209,8 @@ export default {
marks[idx] = i
let aryLine = [];
+ let aryDevices = [];
+
const _line = JSON.parse(result.data[i])
_line.forEach(e => {
const lines = e.link_lng_lats.split(';').map(x=>x.split(','))
@@ -184,7 +219,59 @@ export default {
color: '#FF0000', // 线颜色
xyArr: lines
})
+
+ // 载入摄像机列表
+
+ for(let ei of e.filteredDevices){
+ if(!ei.longitude){continue}
+ if(ei.otherConfig){
+ ei.parseOtherConfig = JSON.parse(ei.otherConfig)
+ }
+
+ let iconUrl = (ei.useState ? icon : icon_f);
+ if(ei.childType==='1-2'){
+ iconUrl = (ei.useState ? iconb : iconb_f);
+ } else if(ei.childType==='1-3'){
+ iconUrl = (ei.useState ? icone : icone_f);
+ } else if(ei.childType==='1-4'){
+ iconUrl = (ei.useState ? iconc : iconc_f);
+ } else if(ei.childType==='1-5'){
+ iconUrl = (ei.useState ? icond : icond_f);
+ }
+ let _stake = ei.stakeMark;
+ console.log(e,3333)
+ aryDevices.push({
+ type: 'event',
+ longitude: parseFloat(ei.longitude),
+ latitude: parseFloat(ei.latitude),
+ iconUrl: iconUrl,
+ offset: [0,-48],
+ size: [42,100],
+ GGoffsetX: 0,
+ GGoffsetY: 20,
+ otherInfo: {
+ ext: null,
+ name: ei.deviceName,
+ state: ei.useState,
+ stake:_stake,
+ config:{
+ item: ei,
+ markerClick:function(ext,e){
+ if (ei.useState === 1) {
+ self.dialogDataCamera = e;
+ self.dialogVisibleCamera = true;
+ } else {
+ self.$message.warning("设备未接入!!");
+ }
+ }
+ }
+ }
+ })
+ }
+
+
});
+ this.devices[idx] = _.cloneDeep(aryDevices);
this.lnglats[idx] = _.cloneDeep(aryLine);
this.lnglatsNode[idx] = _line;
idx++;
@@ -197,18 +284,18 @@ export default {
this.showLnglat();
// 保存数据
- let res = await request({ url: '/business/traffic-statistics/current/getTheCurrentCongestedSection', method: 'get'});
- let aryLine = [];
- res.data.forEach(e => {
- const lines = e.link_lng_lats.split(';').map(x=>x.split(','))
- aryLine.push({
- width: 3, // 线宽度
- color: enum_color[e.pub_run_status], // 线颜色
- xyArr: lines,
- })
- });
- this.lnglats[idx] = _.cloneDeep(aryLine);
- this.lnglatsNode[idx] = res.data;
+ // let res = await request({ url: '/business/traffic-statistics/current/getTheCurrentCongestedSection', method: 'get'});
+ // let aryLine = [];
+ // res.data.forEach(e => {
+ // const lines = e.link_lng_lats.split(';').map(x=>x.split(','))
+ // aryLine.push({
+ // width: 3, // 线宽度
+ // color: enum_color[e.pub_run_status], // 线颜色
+ // xyArr: lines,
+ // })
+ // });
+ // this.lnglats[idx] = _.cloneDeep(aryLine);
+ // this.lnglatsNode[idx] = res.data;
})
}
@@ -217,7 +304,19 @@ export default {
this.drawThumbail(this.lnglatsNode[this.timeTick] );
Vue.prototype.mapIns.addPointByArr( {pointList:[]}, 'lineLayer', true);
Vue.prototype.mapIns.removeLayerByName('lineLayer');
+
+ Vue.prototype.mapIns.addPointByArr( {pointList:[]}, 'lineLayer_camera', true);
+ Vue.prototype.mapIns.removeLayerByName('lineLayer_camera');
+ console.log(this.devices[this.timeTick])
setTimeout(()=>{
+ if(this.devices[this.timeTick].length > 0){
+ Vue.prototype.mapIns.addPointByArr(
+ {pointList: this.devices[this.timeTick]},
+ 'lineLayer_camera',
+ true
+ );
+ }
+
Vue.prototype.mapIns.addLineByArr(
this.lnglats[this.timeTick]
);
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
index d507dd74..974aebb2 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
@@ -184,6 +184,8 @@ export default {
this.minLayers = 3;
this.emitter.on("selectedCompleted", this.selectedCompletedHandle);
+
+ this.$root.$on('layer-clear', this.handleCleared);
},
mounted() {
// 获取原始 Layer
@@ -219,6 +221,7 @@ export default {
this.$root.$off('delete-event', this.handleRefresh);
+ this.$root.$off('layer-clear', this.handleCleared);
},
methods: {
selectedCompletedHandle(item) {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
index 60ed89cf..17555071 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
@@ -225,6 +225,10 @@ export default {
longitude: parseFloat(e.longitude),
latitude: parseFloat(e.latitude),
iconUrl: iconUrl,
+ offset: [0,-48],
+ size: [42,100],
+ GGoffsetX: 0,
+ GGoffsetY: 20,
otherInfo: {
ext: null,
name: e.deviceName,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue
index f4cd1714..6f9fd701 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue
@@ -119,12 +119,12 @@
: "-"
}}
-
+
水膜厚度:
{{
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery2/components/weaterData/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery2/components/weaterData/index.vue
index 87170177..3ffcb1d7 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery2/components/weaterData/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery2/components/weaterData/index.vue
@@ -99,12 +99,12 @@
: "-"
}}
-
+
水膜厚度:
{{
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
index 55dc97fd..d24e8500 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
@@ -999,6 +999,7 @@ export default {
};