From f5f2445d7f5c102734ef8d86e9c8ec828374adc3 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 18 Aug 2025 20:05:01 +0800
Subject: [PATCH] 突发事件模拟相关调整处理
---
src/pages/map/components/scomponents/layersControl.vue | 2145 +++++++++++++++++-----------------
src/assets/json/dispose.json | 74 +
src/views/pd/components/dynamicPanel.vue | 283 +++
src/assets/json/qysgwslx.json | 1002 +++++++++++++++
src/styles/element/index.scss | 230 ++-
5 files changed, 2,525 insertions(+), 1,209 deletions(-)
diff --git a/src/assets/json/dispose.json b/src/assets/json/dispose.json
new file mode 100644
index 0000000..43c5e13
--- /dev/null
+++ b/src/assets/json/dispose.json
@@ -0,0 +1,74 @@
+{
+ "categoryTypeData": [
+ {
+ "type": 1,
+ "processFlowData": [
+ {
+ "message": "202X年某月某日某时,化工园区某企业泄漏事故。立即启动应急预案。",
+ "type": 0
+ },
+ {
+ "message": "关闭雨水/污水排口手动阀。",
+ "type": 7
+ },
+ {
+ "message": "利用围堰或收集系统拦截污水。",
+ "type": 0
+ },
+ {
+ "message": "调用应急物资,组织队伍处置泄漏源。",
+ "type": 0
+ },
+ {
+ "message": "将污水导入事故应急池或初期雨水池。",
+ "type": 0
+ },
+ {
+ "message": "事件通报:当企业发生突发环境事件且自身应急池容量不足时,立即向相邻企业和园区管委会通报事件情况。",
+ "type": 0
+ },
+ {
+ "message": "应急空间调配:通过管道将事故污水转输至相邻企业的应急设施中,利用片区内形成的应急空间进行储存和处理。",
+ "type": 0
+ },
+ {
+ "message": "协同处置:相邻企业的应急救援队伍和物资根据需要进行支援,协同处理事故污水,确保事故得到有效控制。",
+ "type": 0
+ },
+ {
+ "message": "信息共享:在事件处理过程中,各企业和园区管委会应保持信息畅通,及时共享事故处理进展和监测数据。",
+ "type": 0
+ }
+ ]
+ },
+ {
+ "type": 2,
+ "processFlowData": [
+ {
+ "message": "事件响应:当园区内发生突发环境事件且企业级和企间级防控体系未能有效控制事故污水时,园区应急指挥部立即启动园区级应急预案。",
+ "type": 0
+ },
+ {
+ "message": "闸坝控制:根据事故发生的位置和污水流向,关闭相关闸坝,拦截上游来水,形成蓄污空间,防止事故污水流出园区。",
+ "type": 4
+ },
+ {
+ "message": "应急池利用:将事故污水引入园区公共应急池进行储存,并启动相应的处理设施对污水进行处理。",
+ "type": 0
+ },
+ {
+ "message": "应急物资与队伍调配:调用园区环境应急物资库中的物资和应急救援队伍,进行现场处置和救援工作。",
+ "type": 0
+ },
+ {
+ "message": "监测与决策:利用数字化监管平台对事故污水的扩散范围、水质情况等进行实时监测,根据监测数据制定科学的处理方案,进行综合协调指挥和智慧辅助决策。",
+ "type": 0
+ },
+ {
+ "message": "事后处理:事件处理完毕后,对事故原因进行调查分析,总结经验教训,对园区防控体系进行评估和改进,同时对受影响的环境进行修复。",
+ "type": 0
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/assets/json/qysgwslx.json b/src/assets/json/qysgwslx.json
index 7cc186d..ef6283a 100644
--- a/src/assets/json/qysgwslx.json
+++ b/src/assets/json/qysgwslx.json
@@ -1 +1,1001 @@
-{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"EPSG:4490"}},"features":[{"type":"Feature","id":9,"geometry":{"type":"LineString","coordinates":[[115.60438871383667,29.811934405061905,0],[115.60443699359894,29.814191812678956,0],[115.60400784015656,29.814201121470827,0],[115.60402393,29.814303519999999,0]]},"properties":{"FID":9,"O_Name":"惠城1","O_Com":" ","O_LClr":16711680,"O_LWidth":1,"O_LAlpha":100,"O_LType":0,"O_SType":5,"O_TType":0}}]}
\ No newline at end of file
+{
+ "type": "FeatureCollection",
+ "crs": {
+ "type": "name",
+ "properties": {
+ "name": "EPSG:4490"
+ }
+ },
+ "features": [
+ {
+ "type": "Feature",
+ "id": 0,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.6064574,
+ 29.810441640000001,
+ 0
+ ],
+ [
+ 115.60645669698715,
+ 29.810358843982005,
+ 0
+ ],
+ [
+ 115.60646206140505,
+ 29.810228515808895,
+ 0
+ ],
+ [
+ 115.60773611,
+ 29.810272730000001,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 0,
+ "O_Name": "浩普1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 1,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.6068429350853,
+ 29.810565972335851,
+ 0
+ ],
+ [
+ 115.6068442761898,
+ 29.810241315905042,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 1,
+ "O_Name": "浩普流向2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 2,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60694620013237,
+ 29.810567135977077,
+ 0
+ ],
+ [
+ 115.6068429350853,
+ 29.810565972335851,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 2,
+ "O_Name": "浩普3",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60694888234138,
+ 29.81031113458128,
+ 0
+ ],
+ [
+ 115.6068442761898,
+ 29.810312298225462,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 3,
+ "O_Name": "浩普4",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 4,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.6059604883194,
+ 29.808257281482092,
+ 0
+ ],
+ [
+ 115.60691803693771,
+ 29.808261936154363,
+ 0
+ ],
+ [
+ 115.60690462589264,
+ 29.808860059739221,
+ 0
+ ],
+ [
+ 115.60755103826523,
+ 29.808855405094786,
+ 0
+ ],
+ [
+ 115.6075456738472,
+ 29.809113737533405,
+ 0
+ ],
+ [
+ 115.60777098,
+ 29.809097449999999,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 4,
+ "O_Name": "海德森流向1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 5,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60681074857712,
+ 29.808373648223974,
+ 0
+ ],
+ [
+ 115.60691803693771,
+ 29.808375975557439,
+ 0
+ ],
+ [
+ 115.6069153547287,
+ 29.808375975557439,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 5,
+ "O_Name": "海德森2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60652643442154,
+ 29.80897642577974,
+ 0
+ ],
+ [
+ 115.60653448104858,
+ 29.808862387061357,
+ 0
+ ],
+ [
+ 115.60690462589264,
+ 29.808860059739221,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 6,
+ "O_Name": "海德森3",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.6071862578392,
+ 29.808950825262446,
+ 0
+ ],
+ [
+ 115.60719162225723,
+ 29.808857732417032,
+ 0
+ ],
+ [
+ 115.60719162225723,
+ 29.808862387061357,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 7,
+ "O_Name": "海德森4",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 8,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60744911432266,
+ 29.809102100951424,
+ 0
+ ],
+ [
+ 115.6075456738472,
+ 29.809113737533405,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 8,
+ "O_Name": "海德森5",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 9,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60438871383667,
+ 29.811934405061905,
+ 0
+ ],
+ [
+ 115.60443699359894,
+ 29.814191812678956,
+ 0
+ ],
+ [
+ 115.60400784015656,
+ 29.814201121470827,
+ 0
+ ],
+ [
+ 115.60402393,
+ 29.814303519999999,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 9,
+ "O_Name": "惠城1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 10,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60414731502533,
+ 29.813475033101906,
+ 0
+ ],
+ [
+ 115.60441553592682,
+ 29.813479687531327,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 10,
+ "O_Name": "惠城2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 11,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60391664505005,
+ 29.814177849489514,
+ 0
+ ],
+ [
+ 115.60401588507827,
+ 29.814252320735413,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 11,
+ "O_Name": "惠城3",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 12,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60430824756622,
+ 29.812297455499102,
+ 0
+ ],
+ [
+ 115.60438334941864,
+ 29.812288146529998,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 12,
+ "O_Name": "惠城4",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 13,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60240924358368,
+ 29.818003690463456,
+ 0
+ ],
+ [
+ 115.60243606567383,
+ 29.815094761455835,
+ 0
+ ],
+ [
+ 115.60322999954224,
+ 29.815062180971676,
+ 0
+ ],
+ [
+ 115.60324609279633,
+ 29.815066835327194,
+ 0
+ ],
+ [
+ 115.60322463512421,
+ 29.815076144037612,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 13,
+ "O_Name": "建衡1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 14,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60326755046844,
+ 29.816351429171185,
+ 0
+ ],
+ [
+ 115.60244143009186,
+ 29.816360737761993,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 14,
+ "O_Name": "建衡2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 15,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60636281967163,
+ 29.827856185875092,
+ 0
+ ],
+ [
+ 115.6065559387207,
+ 29.819199817513827,
+ 0
+ ],
+ [
+ 115.60770392000001,
+ 29.81936271,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 15,
+ "O_Name": "新洋丰1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 16,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.6061053276062,
+ 29.82733496340213,
+ 0
+ ],
+ [
+ 115.60638427734375,
+ 29.827362886103536,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 16,
+ "O_Name": "新洋丰2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 17,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60486078262329,
+ 29.8229696184695,
+ 0
+ ],
+ [
+ 115.60648083686829,
+ 29.822960310494079,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 17,
+ "O_Name": "新洋丰3",
+ "O_Com": " ",
+ "O_LClr": 65535,
+ "O_LWidth": 3,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 18,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61106204986572,
+ 29.828489095223151,
+ 0
+ ],
+ [
+ 115.61095476150513,
+ 29.815104070163649,
+ 0
+ ],
+ [
+ 115.60837984085083,
+ 29.815085452747155,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 18,
+ "O_Name": "理文化工1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 19,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61803579330444,
+ 29.824747425880204,
+ 0
+ ],
+ [
+ 115.6181001663208,
+ 29.820298193950755,
+ 0
+ ],
+ [
+ 115.61546087265015,
+ 29.820298193950755,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 19,
+ "O_Name": "理文造纸1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 20,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61301469802856,
+ 29.812311418951129,
+ 0
+ ],
+ [
+ 115.61297178268433,
+ 29.814098724712526,
+ 0
+ ],
+ [
+ 115.61436653137207,
+ 29.814042871891065,
+ 0
+ ],
+ [
+ 115.6181001663208,
+ 29.820298193950755,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 20,
+ "O_Name": "理文造纸2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 21,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61226367950439,
+ 29.813447106520879,
+ 0
+ ],
+ [
+ 115.61297178268433,
+ 29.813447106520879,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 21,
+ "O_Name": "理文造纸3",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 22,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61292886734009,
+ 29.812032149540045,
+ 0
+ ],
+ [
+ 115.61298251152039,
+ 29.80846674152,
+ 0
+ ],
+ [
+ 115.61461328999999,
+ 29.808508629999999,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 22,
+ "O_Name": "瑞易德1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 23,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.61420559883118,
+ 29.809369741994452,
+ 0
+ ],
+ [
+ 115.61299324035645,
+ 29.809379051235233,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 23,
+ "O_Name": "瑞易德2",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 24,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.60965657234192,
+ 29.80230377831916,
+ 0
+ ],
+ [
+ 115.61287522315979,
+ 29.797900099223128,
+ 0
+ ],
+ [
+ 115.61218857765198,
+ 29.797481134454525,
+ 0
+ ],
+ [
+ 115.61233878,
+ 29.797360099999999,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 24,
+ "O_Name": "天际1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 25,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.62846958637238,
+ 29.802336362959974,
+ 0
+ ],
+ [
+ 115.62819063663483,
+ 29.802736687680806,
+ 0
+ ],
+ [
+ 115.62498807907104,
+ 29.801461228921465,
+ 0
+ ],
+ [
+ 115.62493443,
+ 29.801568289999999,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 25,
+ "O_Name": "中建材1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 26,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.62394201755524,
+ 29.806134728352237,
+ 0
+ ],
+ [
+ 115.62506318092346,
+ 29.806400049956888,
+ 0
+ ],
+ [
+ 115.62465012073517,
+ 29.807619589332525,
+ 0
+ ],
+ [
+ 115.62449454999999,
+ 29.807708030000001,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 26,
+ "O_Name": "熠亮1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 27,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 115.62273502349854,
+ 29.804905861215001,
+ 0
+ ],
+ [
+ 115.6233412027359,
+ 29.805050160789971,
+ 0
+ ],
+ [
+ 115.62374353408813,
+ 29.803951616850156,
+ 0
+ ],
+ [
+ 115.62301397323608,
+ 29.803728182707971,
+ 0
+ ],
+ [
+ 115.62345385551453,
+ 29.802420151987597,
+ 0
+ ],
+ [
+ 115.62248826026917,
+ 29.802192059470094,
+ 0
+ ]
+ ]
+ },
+ "properties": {
+ "FID": 27,
+ "O_Name": "荣联环保1",
+ "O_Com": " ",
+ "O_LClr": 16711680,
+ "O_LWidth": 1,
+ "O_LAlpha": 100,
+ "O_LType": 0,
+ "O_SType": 5,
+ "O_TType": 0
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/pages/map/components/scomponents/layersControl.vue b/src/pages/map/components/scomponents/layersControl.vue
index 75fb491..4837922 100644
--- a/src/pages/map/components/scomponents/layersControl.vue
+++ b/src/pages/map/components/scomponents/layersControl.vue
@@ -2,51 +2,52 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2024-10-31 10:47:29
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2025-02-19 11:42:40
+ * @LastEditTime: 2025-08-18 18:49:54
* @FilePath: \bigScreen\src\pages\map\components\scomponents\layersControl.vue
* @Description:
*
* Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<template>
- <public-box v-show="showLayerControl">
- <template #name>
- <div class="name"><i class="fa fa-tasks"></i> 图层</div>
- </template>
+ <public-box v-show="showLayerControl">
+ <template #name>
+ <div class="name"><i class="fa fa-tasks"></i> 图层</div>
+ </template>
- <template #close>
- <div class="close cursor-p" @click="emit('close', 'layers')"><i class="fa fa-close"></i></div>
- </template>
+ <template #close>
+ <div class="close cursor-p" @click="emit('close', 'layers')"><i class="fa fa-close"></i></div>
+ </template>
- <template #content>
- <div class="tree-content">
- <el-tree ref="treeRef" :data="data" draggable="" show-checkbox node-key="id" default-expand-all
- :default-checked-keys="indexPoint" :props="defaultProps" :indent="treeProps['indent']"
- @check="handleCheckChange">
- <template v-slot:default="{ node }">
- <element-tree-line :node="node" :showLabelLine="treeProps['showLabelLine']" :indent="treeProps['indent']">
- <!-- 自定义label的slot -->
- <template v-slot:node-label>
- <span style="font-size: 12px">
- {{ node.label }}
- <i class="el-icon-eleme"></i></span>
- </template>
- <!-- 在右边追加内容的slot -->
- <!-- <template v-slot:after-node-label>
+ <template #content>
+ <div class="tree-content">
+ <el-tree ref="treeRef" :data="data" draggable="" show-checkbox node-key="id" default-expand-all
+ :default-checked-keys="indexPoint" :props="defaultProps" :indent="treeProps['indent']"
+ @check="handleCheckChange">
+ <template v-slot:default="{ node }">
+ <element-tree-line :node="node" :showLabelLine="treeProps['showLabelLine']"
+ :indent="treeProps['indent']">
+ <!-- 自定义label的slot -->
+ <template v-slot:node-label>
+ <span style="font-size: 12px">
+ {{ node.label }}
+ <i class="el-icon-eleme"></i></span>
+ </template>
+ <!-- 在右边追加内容的slot -->
+ <!-- <template v-slot:after-node-label>
<span style="padding-right: 10px">
<el-button type="primary" size="mini" @click.stop="openDrawer(node)">新增子节点</el-button>
<el-button type="primary" size="mini" @click.stop="openDrawer(node)">修改</el-button>
<el-button type="danger" size="mini" @click.stop="openDialog">删除</el-button></span>
</template> -->
- </element-tree-line>
- </template>
- </el-tree>
- </div>
- </template>
- </public-box>
+ </element-tree-line>
+ </template>
+ </el-tree>
+ </div>
+ </template>
+ </public-box>
- <panorama v-show="panoramaShow" :title="panoramaTitle" :url="panoramaUrl" @closePanoramaPopup="closePanoramaPopup">
- </panorama>
+ <panorama v-show="panoramaShow" :title="panoramaTitle" :url="panoramaUrl" @closePanoramaPopup="closePanoramaPopup">
+ </panorama>
</template>
<script setup>
@@ -59,11 +60,11 @@
window.$viewer.addLayer(planToBuild)
const {
- show: showLayerControl
+ show: showLayerControl
} = defineProps({
- show: {
- default: false
- }
+ show: {
+ default: false
+ }
})
const emit = defineEmits(['close'])
@@ -91,7 +92,7 @@
import { useRouter } from 'vue-router'
const router = useRouter()
import {
- ElMessage
+ ElMessage
} from 'element-plus'
const { VITE_APP_BASE } = import.meta.env
@@ -101,8 +102,8 @@
const treeRef = ref(null)
const treeProps = {
- indent: 16,
- showLabelLine: true,
+ indent: 16,
+ showLabelLine: true,
}
// 全景相关
@@ -110,616 +111,618 @@
const panoramaTitle = ref('')
const panoramaUrl = ref('')
const closePanoramaPopup = () => {
- panoramaShow.value = false
+ panoramaShow.value = false
}
const baseRcImages = new window.$Cesium.WebMapTileServiceImageryProvider({
- url: '/arcgis117/rest/services/DTFW/rcgyyyx/MapServer/WMTS',
- layer: 'DTFW_rcgyyyx',
- style: 'default',
- format: 'image/png',
- tileMatrixSetID: 'default028mm',
- tilingScheme: new window.$Cesium.GeographicTilingScheme(),
- tileMatrixLabels: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
+ url: '/arcgis117/rest/services/DTFW/rcgyyyx/MapServer/WMTS',
+ layer: 'DTFW_rcgyyyx',
+ style: 'default',
+ format: 'image/png',
+ tileMatrixSetID: 'default028mm',
+ tilingScheme: new window.$Cesium.GeographicTilingScheme(),
+ tileMatrixLabels: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
})
const data = [
- {
- id: '1',
- label: '园区倾斜摄影',
- type: 'layer',
- subType: '3Dtile',
- urlData: [
- {
- url: '/3Dtile/rcmx_t/part1/tileset.json',
- label: 'part1'
- },
- {
- url: '/3Dtile/rcmx_t/part2/tileset.json',
- label: 'part2'
- },
+ {
+ id: '1',
+ label: '园区倾斜摄影',
+ type: 'layer',
+ subType: '3Dtile',
+ urlData: [
+ {
+ url: '/3Dtile/rcmx_t/part1/tileset.json',
+ label: 'part1'
+ },
+ {
+ url: '/3Dtile/rcmx_t/part2/tileset.json',
+ label: 'part2'
+ },
- ],
- layerName: 'hgyq'
- },
-
- {
- id: '2',
- label: '企业分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPage,
- params: {
- size: 1000
+ ],
+ layerName: 'hgyq'
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qy.png',
- className: 'qyfb-box',
- showPanel: false,
- layerName: 'qyfb'
- },
- {
- id: '3',
- label: '应急空间',
- children: [
- {
- parentId: '3',
- id: '3-1',
- label: '雨水池',
+ {
+ id: '2',
+ label: '企业分布',
type: 'layer',
subType: 'labelPoint',
- method: getList,
+ method: getPage,
params: {
- type: 1,
- size: 1000,
+ size: 1000
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
- className: 'yjc-box',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qy.png',
+ className: 'qyfb-box',
showPanel: false,
- layerName: 'cq-yssjc',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ layerName: 'qyfb'
+ },
+
+ {
+ id: '3',
+ label: '应急空间',
+ children: [
+ {
+ parentId: '3',
+ id: '3-1',
+ label: '雨水池',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 1,
+ size: 1000,
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'cq-yssjc',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
<div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
- {
- parentId: '3',
- id: '3-2',
- label: '应急池',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 2,
- size: 1000,
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
- className: 'yjc-box',
- showPanel: false,
- layerName: 'sg-yjc',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ {
+ parentId: '3',
+ id: '3-2',
+ label: '应急池',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 2,
+ size: 1000,
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'sg-yjc',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
<div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
- {
- parentId: '3',
- id: '3-3',
- label: '切断阀',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 3,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
- className: 'ysf-box',
- showPanel: false,
- layerName: 'qdf',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ {
+ parentId: '3',
+ id: '3-3',
+ label: '切断阀',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ customWx: true,
+ params: {
+ type: 3,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
+ className: 'ysf-box',
+ showPanel: false,
+ layerName: 'qdf',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
<div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
- {
- id: '3-4',
- label: '闸坝',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 4,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/zb.png',
- className: 'sk-box',
- showPanel: false,
- layerName: 'zb'
- },
+ {
+ id: '3-4',
+ label: '闸坝',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 4,
+ size: 1000
+ },
+ customWx: true,
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/zb.png',
+ className: 'sk-box',
+ showPanel: false,
+ layerName: 'zb'
+ },
- {
- parentId: '3',
- id: '3-5',
- label: '湿地',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 5,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/sd.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'sd',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ {
+ parentId: '3',
+ id: '3-5',
+ label: '湿地',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 5,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/sd.png',
+ className: 'xfs-box',
+ showPanel: false,
+ layerName: 'sd',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
<div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
- {
- parentId: '3',
- id: '3-6',
- label: '坑塘',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 6,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/kt.png',
- className: 'sk-box',
- showPanel: false,
- layerName: 'kt',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ {
+ parentId: '3',
+ id: '3-6',
+ label: '坑塘',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 6,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/kt.png',
+ className: 'sk-box',
+ showPanel: false,
+ layerName: 'kt',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
<div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
- {
- parentId: '3',
- id: '3-8',
- label: '桥梁',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 8,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/ql.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'ql'
- },
+ {
+ parentId: '3',
+ id: '3-8',
+ label: '桥梁',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 8,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ql.png',
+ className: 'xfs-box',
+ showPanel: false,
+ layerName: 'ql'
+ },
- {
- parentId: '3',
- id: '3-9',
- label: '雨水管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'ysgw',
- source: ysgw,
- color: DC.Color.CYAN.withAlpha(0.9),
- height: 30,
- },
- {
- parentId: '3',
- id: '3-10',
- label: '排洪渠',
- type: 'layer',
- subType: 'geojsonPolygon',
- layerName: 'track',
- source: track,
- color: DC.Color.BLUE.withAlpha(0.9),
- height: 30,
- },
- {
- parentId: '3',
- id: '3-11',
- label: '企业级连接管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'qyjgx',
- source: qyjgx,
- color: DC.Color.CYAN.withAlpha(0.9),
- height: 30,
- },
- ]
- },
+ {
+ parentId: '3',
+ id: '3-9',
+ label: '雨水管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'ysgw',
+ source: ysgw,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '3',
+ id: '3-10',
+ label: '排洪渠',
+ type: 'layer',
+ subType: 'geojsonPolygon',
+ layerName: 'track',
+ source: track,
+ color: DC.Color.BLUE.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '3',
+ id: '3-11',
+ label: '企业级连接管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'qyjgx',
+ source: qyjgx,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ ]
+ },
- {
- id: '4',
- label: '风险源',
- children: [
- {
- parentId: '4',
- id: '4-1',
- label: '一般',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 1,
- size: 1000
- },
- showParams: 'firmName',
- className: 'fxy-ordinary',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-yb.png',
- showPanel: false,
- layerName: 'fxyOrdinary',
- customWx: true,
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ {
+ id: '4',
+ label: '风险源',
+ children: [
+ {
+ parentId: '4',
+ id: '4-1',
+ label: '一般',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 1,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-ordinary',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-yb.png',
+ showPanel: false,
+ layerName: 'fxyOrdinary',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>企业名称:${attrParams.firmName || ''}</li>
<li>行业类别:${attrParams.category || ''}</li>
<li>风险等级:${attrParams.riskLevelName || ''}</li>
<li>风险物资:${attrParams.name || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-2',
- label: '较大',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 2,
- size: 1000
- },
- showParams: 'firmName',
- className: 'fxy-larger-b',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd-b.png',
- showPanel: false,
- layerName: 'fxyLarger',
- customWx: true,
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-2',
+ label: '较大',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 2,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-larger-b',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd-b.png',
+ showPanel: false,
+ layerName: 'fxyLarger',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>企业名称:${attrParams.firmName || ''}</li>
<li>行业类别:${attrParams.category || ''}</li>
<li>风险等级:${attrParams.riskLevelName || ''}</li>
<li>风险物资:${attrParams.name || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-3',
- label: '重大',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 3,
- size: 1000
- },
- showParams: 'firmName',
- className: 'fxy-larger',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
- showPanel: false,
- layerName: 'fxyLargerB',
- customWx: true,
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-3',
+ label: '重大',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 3,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-larger',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
+ showPanel: false,
+ layerName: 'fxyLargerB',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>企业名称:${attrParams.firmName || ''}</li>
<li>行业类别:${attrParams.category || ''}</li>
<li>风险等级:${attrParams.riskLevelName || ''}</li>
<li>风险物资:${attrParams.name || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-9',
- label: '其他',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 9,
- size: 1000
- },
- showParams: 'firmName',
- className: 'fxy-zd',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd.png',
- showPanel: false,
- layerName: 'fxyZdLarger',
- customWx: true,
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-9',
+ label: '其他',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 9,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-zd',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd.png',
+ showPanel: false,
+ layerName: 'fxyZdLarger',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>${attrParams.firmName || ''}</li>
<li>${attrParams.name || ''}</li>
<li>${attrParams.riskLevelName || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-5',
- label: '路线',
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-5',
+ label: '路线',
+ type: 'layer',
+ subType: 'geojsonLx',
+ layerName: 'lx',
+ source: lx,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '4',
+ id: '4-6',
+ label: '岗亭',
+ type: 'layer',
+ subType: 'geojsonGt',
+ layerName: 'gt',
+ showPanel: false,
+ className: 'gt-zd',
+ source: gt,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/gt.png',
+ height: 30,
+ },
+ ]
+ },
+
+ {
+ id: '5',
+ label: '园区范围',
type: 'layer',
- subType: 'geojsonLx',
- layerName: 'lx',
- source: lx,
- color: DC.Color.CYAN.withAlpha(0.9),
- height: 30,
- },
- {
- parentId: '4',
- id: '4-6',
- label: '岗亭',
+ subType: 'geojsonWall',
+ layerName: 'yqfw',
+ source: yqfw
+ },
+
+ {
+ id: '7',
+ label: '空中全景分布',
type: 'layer',
- subType: 'geojsonGt',
- layerName: 'gt',
+ subType: 'labelPoint',
+ method: getPanoramaList,
+ params: {
+ size: 1000,
+ remark: '1'
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
showPanel: false,
- className: 'gt-zd',
- source: gt,
- color: DC.Color.CYAN.withAlpha(0.9),
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/gt.png',
- height: 30,
+ layerName: 'kzqjdwfb',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ panoramaTitle.value = attrParams.name
+ if (
+ attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
+ ) {
+ attrParams.url = attrParams.url.replace(
+ "http://vr.jxpskj.com:180",
+ "/panorama"
+ )
+ }
+ panoramaUrl.value = attrParams.url
+ panoramaShow.value = true
+ }
+ },
+
+ {
+ id: '8',
+ label: '瑞昌影像',
+ type: 'layer',
+ subType: 'baseMap',
+ layerName: 'baseMap',
+ source: baseRcImages,
+ },
+
+ /* {
+ id: '8',
+ label: '地面全景分布',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getPanoramaList,
+ params: {
+ size: 1000,
+ remark: '2'
},
- ]
- },
-
- {
- id: '5',
- label: '园区范围',
- type: 'layer',
- subType: 'geojsonWall',
- layerName: 'yqfw',
- source: yqfw
- },
-
- {
- id: '7',
- label: '空中全景分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPanoramaList,
- params: {
- size: 1000,
- remark: '1'
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
- showPanel: false,
- layerName: 'kzqjdwfb',
- incident: (e) => {
- const { attrParams } = e.overlay
- panoramaTitle.value = attrParams.name
- if (
- attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
- ) {
- attrParams.url = attrParams.url.replace(
- "http://vr.jxpskj.com:180",
- "/panorama"
- )
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
+ showPanel: false,
+ layerName: 'dtqjdwfb',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ panoramaTitle.value = attrParams.name
+ if (
+ attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
+ ) {
+ attrParams.url = attrParams.url.replace(
+ "http://vr.jxpskj.com:180",
+ "/panorama"
+ )
+ }
+ panoramaUrl.value = attrParams.url
+ panoramaShow.value = true
}
- panoramaUrl.value = attrParams.url
- panoramaShow.value = true
- }
- },
-
- {
- id: '8',
- label: '瑞昌影像',
- type: 'layer',
- subType: 'baseMap',
- layerName: 'baseMap',
- source: baseRcImages,
- },
-
- /* {
- id: '8',
- label: '地面全景分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPanoramaList,
- params: {
- size: 1000,
- remark: '2'
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
- showPanel: false,
- layerName: 'dtqjdwfb',
- incident: (e) => {
- const { attrParams } = e.overlay
- panoramaTitle.value = attrParams.name
- if (
- attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
- ) {
- attrParams.url = attrParams.url.replace(
- "http://vr.jxpskj.com:180",
- "/panorama"
- )
- }
- panoramaUrl.value = attrParams.url
- panoramaShow.value = true
- }
- }, */
+ }, */
]
// let modellayer = new DC.VectorLayer("modellayer").addTo(window.$viewer)
@@ -731,492 +734,492 @@
// window.$viewer.flyToPosition("121.46748793889597,31.22345700031846,300,0,-90")
const defaultProps = {
- children: 'children',
- label: 'label',
+ children: 'children',
+ label: 'label',
}
const checkType = (value) => {
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
- return 'obj'
- } else if (Array.isArray(value)) {
- return 'arr'
- }
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
+ return 'obj'
+ } else if (Array.isArray(value)) {
+ return 'arr'
+ }
}
// 用于存储收集到的节点的数组
const collectedNodes = reactive([])
// 递归函数,收集所有 flag 为 true 的子节点
const collectNodesWithFlag = (nodes) => {
- if (checkType(nodes) == 'obj') {
- if (nodes.type == 'layer') {
- collectedNodes.value.push(nodes)
- }
- if (nodes.children && nodes.children.length > 0) {
- collectNodesWithFlag(nodes.children)
- return
- }
- }
-
- if (checkType(nodes) == 'arr') {
- nodes.forEach(item => {
- if (item) {
- if (item.type == 'layer') {
- collectedNodes.value.push(item)
+ if (checkType(nodes) == 'obj') {
+ if (nodes.type == 'layer') {
+ collectedNodes.value.push(nodes)
}
-
- if (item.children && item.children.length > 0) {
- collectNodesWithFlag(item.children)
+ if (nodes.children && nodes.children.length > 0) {
+ collectNodesWithFlag(nodes.children)
+ return
}
- }
- })
- }
+ }
+
+ if (checkType(nodes) == 'arr') {
+ nodes.forEach(item => {
+ if (item) {
+ if (item.type == 'layer') {
+ collectedNodes.value.push(item)
+ }
+
+ if (item.children && item.children.length > 0) {
+ collectNodesWithFlag(item.children)
+ }
+ }
+ })
+ }
}
let moveEntity = null
const handleCheckChange = (data) => {
- let options = treeRef.value?.getCheckedNodes()
- collectedNodes.value = []
- collectNodesWithFlag(data)
+ let options = treeRef.value?.getCheckedNodes()
+ collectedNodes.value = []
+ collectNodesWithFlag(data)
- collectedNodes.value.forEach(item => {
- // console.log(item, 1111111111111111112)
- if (options?.some(i => i.id == item.id)) {
+ collectedNodes.value.forEach(item => {
+ // console.log(item, 1111111111111111112)
+ if (options?.some(i => i.id == item.id)) {
- // const window.$Cesium = DC
- if (item.subType == '3Dtile') {
- if (!addTileLayers[item.layerName]) {
- // addTileLayers[item.layerName] = []
- // let tile = window.$viewer.delegate.scene.primitives.add(new window.$Cesium.Cesium3DTileset({
- // url: '/zhyq-lc/mx/tile_01/tileset.json',
- // }))
+ // const window.$Cesium = DC
+ if (item.subType == '3Dtile') {
+ if (!addTileLayers[item.layerName]) {
+ // addTileLayers[item.layerName] = []
+ // let tile = window.$viewer.delegate.scene.primitives.add(new window.$Cesium.Cesium3DTileset({
+ // url: '/zhyq-lc/mx/tile_01/tileset.json',
+ // }))
- // url: '/zhyq-lc/mx/tile_01/tileset.json',
- // }), 121323)
- // item.urlData.forEach(i => {
+ // url: '/zhyq-lc/mx/tile_01/tileset.json',
+ // }), 121323)
+ // item.urlData.forEach(i => {
- // })
- addTileLayers[item.layerName] = []
- item.urlData.forEach((m, ind) => {
- addTileLayers[item.layerName][ind] = new DC.Tileset(m.url, {
- // maximumMemoryUsage: 1024,
- // maximumScreenSpaceError: 8,
- // skipLevels: 5,
- // skipLevelOfDetail: true,
- // skipScreenSpaceErrorFactor: 128,
- // progressiveResolutionHeightFraction: 0.5,
- // baseScreenSpaceError: 1024
+ // })
+ addTileLayers[item.layerName] = []
+ item.urlData.forEach((m, ind) => {
+ addTileLayers[item.layerName][ind] = new DC.Tileset(m.url, {
+ // maximumMemoryUsage: 1024,
+ // maximumScreenSpaceError: 8,
+ // skipLevels: 5,
+ // skipLevelOfDetail: true,
+ // skipScreenSpaceErrorFactor: 128,
+ // progressiveResolutionHeightFraction: 0.5,
+ // baseScreenSpaceError: 1024
- skipLevelOfDetail: true,
- baseScreenSpaceError: 1024,
- maximumScreenSpaceError: 16, // 数值加大,能让最终成像变模糊
- skipScreenSpaceErrorFactor: 128,
- skipLevels: 5,
- immediatelyLoadDesiredLevelOfDetail: false,
- loadSiblings: true, // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋
- cullWithChildrenBounds: true,
- cullRequestsWhileMoving: true,
- cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除
- preloadWhenHidden: true,
- preferLeaves: true,
- maximumMemoryUsage: 1024, // 内存分配变小有利于倾斜摄影数据回收,提升性能体验
- progressiveResolutionHeightFraction: 0.3, // 数值偏于0能够让初始加载变得模糊
- dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
- dynamicScreenSpaceErrorFactor: 1, // 不知道起了什么作用没,反正放着吧先
- dynamicScreenSpaceError: true, // 根据测试,有了这个后,会在真正的全屏加载完之后才清晰化房屋
- })
- // tile.setHeight(-420)
- tileLayers.addOverlay(addTileLayers[item.layerName][ind])
- })
- } else {
- addTileLayers[item.layerName].forEach(m => m.show = true)
- }
- } else if (item.subType == 'labelPoint') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ skipLevelOfDetail: true,
+ baseScreenSpaceError: 1024,
+ maximumScreenSpaceError: 16, // 数值加大,能让最终成像变模糊
+ skipScreenSpaceErrorFactor: 128,
+ skipLevels: 5,
+ immediatelyLoadDesiredLevelOfDetail: false,
+ loadSiblings: true, // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋
+ cullWithChildrenBounds: true,
+ cullRequestsWhileMoving: true,
+ cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除
+ preloadWhenHidden: true,
+ preferLeaves: true,
+ maximumMemoryUsage: 1024, // 内存分配变小有利于倾斜摄影数据回收,提升性能体验
+ progressiveResolutionHeightFraction: 0.3, // 数值偏于0能够让初始加载变得模糊
+ dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
+ dynamicScreenSpaceErrorFactor: 1, // 不知道起了什么作用没,反正放着吧先
+ dynamicScreenSpaceError: true, // 根据测试,有了这个后,会在真正的全屏加载完之后才清晰化房屋
+ })
+ // tile.setHeight(-420)
+ tileLayers.addOverlay(addTileLayers[item.layerName][ind])
+ })
+ } else {
+ addTileLayers[item.layerName].forEach(m => m.show = true)
+ }
+ } else if (item.subType == 'labelPoint') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- item.method(item.params).then(res => {
- let data = res.data.data.records
+ item.method(item.params).then(res => {
+ let data = res.data.data.records
- data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
- let iconEl = ''
+ data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
+ let iconEl = ''
- if ('showPanel' in item && item.showPanel == false) {
- if (item.backgroundIcon) {
- iconEl = `
+ if ('showPanel' in item && item.showPanel == false) {
+ if (item.backgroundIcon) {
+ iconEl = `
<div class="map-name">${i[item.showParams] || i.name}</div>
<div class="map-icon">
<img src="${item.backgroundIcon}">
</div>
`
- }
- } else {
- iconEl = `<div class="marsBlueGradientPnl">
+ }
+ } else {
+ iconEl = `<div class="marsBlueGradientPnl">
<div>${i[item.showParams] || i.name}</div>
</div>`
- }
+ }
- let divIcon = new DC.DivIcon(
- new DC.Position(i.lng, i.lat, i.ele || 64),
- `<div class="public-map-popup ${item.className || ''}">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(i.lng, i.lat, i.ele || 64),
+ `<div class="public-map-popup ${item.className || ''}">
${iconEl}
</div>`
- )
+ )
- divIcon.attrParams = i
+ divIcon.attrParams = i
- let incident = () => {
- }
+ let incident = () => {
+ }
- if (item.incident) incident = item.incident
+ if (item.incident) incident = item.incident
- divIcon.on(DC.MouseEventType.CLICK, (e) => {
- if (mapStore.editPoint) {
- moveEntity = e
- return
+ divIcon.on(DC.MouseEventType.CLICK, (e) => {
+ if (mapStore.editPoint) {
+ moveEntity = e
+ return
+ }
+
+ if (mapStore.startCustomWx && item.customWx) {
+ EventBus.emit('wxEntityClick', e)
+ return
+ }
+
+ incident(e)
+ })
+
+ addTileLayers[item.layerName].addOverlay(divIcon)
+ })
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
}
+ } else if (item.subType == 'geojsonWall') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- if (mapStore.startCustomWx && item.customWx) {
- EventBus.emit('wxEntityClick', e)
- return
+ item.source.features.forEach(i => {
+ let wall = new DC.Wall(
+ i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
+ )
+
+ wall.setStyle({
+ material: new DC.WallTrailMaterialProperty({
+ color: window.$Cesium.Color.fromBytes(0, 123, 255, 180),
+ speed: 8
+ })
+ })
+ addTileLayers[item.layerName].addOverlay(wall)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
}
+ } else if (item.subType == 'geojsonPipe') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- incident(e)
- })
+ function computeCircle (radius) {
+ var positions = []
+ for (var i = 0; i < 360; i++) {
+ var radians = DC.Math.toRadians(i)
+ positions.push({
+ x: radius * Math.cos(radians),
+ y: radius * Math.sin(radians),
+ })
+ }
+ return positions
+ }
- addTileLayers[item.layerName].addOverlay(divIcon)
- })
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonWall') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ item.source.features.forEach(i => {
+ let polylineVolume = new DC.PolylineVolume(
+ i.geometry.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
+ computeCircle(1.6)
+ )
+ if ('RefName' in i.properties && i.properties.RefName.indexOf('拟建') != -1) {
+ polylineVolume.setStyle({
+ material: DC.Color.fromBytes(255, 0, 0, 230)
+ })
- item.source.features.forEach(i => {
- let wall = new DC.Wall(
- i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
- )
+ let features = window.$turf.featureCollection(
+ i.geometry.coordinates.map(d => window.$turf.point([d[0], d[1]]))
+ )
- wall.setStyle({
- material: new DC.WallTrailMaterialProperty({
- color: window.$Cesium.Color.fromBytes(0, 123, 255, 180),
- speed: 8
- })
- })
- addTileLayers[item.layerName].addOverlay(wall)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonPipe') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ let planCenter = window.$turf.center(features)
- function computeCircle (radius) {
- var positions = []
- for (var i = 0; i < 360; i++) {
- var radians = DC.Math.toRadians(i)
- positions.push({
- x: radius * Math.cos(radians),
- y: radius * Math.sin(radians),
- })
- }
- return positions
- }
-
- item.source.features.forEach(i => {
- let polylineVolume = new DC.PolylineVolume(
- i.geometry.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
- computeCircle(1.6)
- )
- if ('RefName' in i.properties && i.properties.RefName.indexOf('拟建') != -1) {
- polylineVolume.setStyle({
- material: DC.Color.fromBytes(255, 0, 0, 230)
- })
-
- let features = window.$turf.featureCollection(
- i.geometry.coordinates.map(d => window.$turf.point([d[0], d[1]]))
- )
-
- let planCenter = window.$turf.center(features)
-
- let planDivIcon = new DC.DivIcon(
- new DC.Position(planCenter.geometry.coordinates[0], planCenter.geometry.coordinates[1], 60.5),
- `<div class="public-map-popup">
+ let planDivIcon = new DC.DivIcon(
+ new DC.Position(planCenter.geometry.coordinates[0], planCenter.geometry.coordinates[1], 60.5),
+ `<div class="public-map-popup">
<div class="map-name">拟建</div>
<div class="map-icon">
<img src="${VITE_APP_BASE + 'img/mapicon/nj-ys.png'}">
</div>
</div>`
- )
+ )
- planToBuild.addOverlay(planDivIcon)
- } else {
- polylineVolume.setStyle({
- material: item.color
- })
- }
- // 雨水管网流向
- if (item.layerName === 'ysgw') {
- let ss = i.properties.qd + ',' + item.height + ';' + i.properties.zd + ',' + item.height
- let polyline1 = new DC.Polyline(ss)
- polyline1.setStyle({
- width: 10,
- arcType: 1,
- material: new DC.PolylineImageTrailMaterialProperty({
- color: DC.Color.GREEN,
- speed: 20,
- image: VITE_APP_BASE + 'img/mapicon/right.png',
- repeat: { x: 30, y: 1 }
- }),
- clampToGround: false
- })
- addTileLayers[item.layerName].addOverlay(polyline1)
- }
- addTileLayers[item.layerName].addOverlay(polylineVolume)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonPolygon') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ planToBuild.addOverlay(planDivIcon)
+ } else {
+ polylineVolume.setStyle({
+ material: item.color
+ })
+ }
+ // 雨水管网流向
+ if (item.layerName === 'ysgw') {
+ let ss = i.properties.qd + ',' + item.height + ';' + i.properties.zd + ',' + item.height
+ let polyline1 = new DC.Polyline(ss)
+ polyline1.setStyle({
+ width: 10,
+ arcType: 1,
+ material: new DC.PolylineImageTrailMaterialProperty({
+ color: DC.Color.GREEN,
+ speed: 20,
+ image: VITE_APP_BASE + 'img/mapicon/right.png',
+ repeat: { x: 30, y: 1 }
+ }),
+ clampToGround: false
+ })
+ addTileLayers[item.layerName].addOverlay(polyline1)
+ }
+ addTileLayers[item.layerName].addOverlay(polylineVolume)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ } else if (item.subType == 'geojsonPolygon') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- item.source.features.forEach(i => {
- let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
+ item.source.features.forEach(i => {
+ let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
- Polyline.setStyle({
- width: 3,
- material: DC.Color.BLUE,
- clampToGround: true
- })
- addTileLayers[item.layerName].addOverlay(Polyline)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- // 路线
- } else if (item.subType == 'geojsonLx') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ Polyline.setStyle({
+ width: 3,
+ material: DC.Color.BLUE,
+ clampToGround: true
+ })
+ addTileLayers[item.layerName].addOverlay(Polyline)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ // 路线
+ } else if (item.subType == 'geojsonLx') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- item.source.features.forEach(i => {
- let ss = i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';')
- let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
+ item.source.features.forEach(i => {
+ let ss = i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';')
+ let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
- Polyline.setStyle({
- width: 3,
- // material: DC.Color.BLUE,
- material: new DC.PolylineTrailMaterialProperty({
- color: DC.Color.RED,
- speed: 10
- }),
- clampToGround: true
- })
- addTileLayers[item.layerName].addOverlay(Polyline)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- // 岗亭
- } else if (item.subType == 'geojsonGt') {
- // if (!addTileLayers[item.layerName]) {
- // addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- // window.$viewer.addLayer(addTileLayers[item.layerName])
+ Polyline.setStyle({
+ width: 3,
+ // material: DC.Color.BLUE,
+ material: new DC.PolylineTrailMaterialProperty({
+ color: DC.Color.RED,
+ speed: 10
+ }),
+ clampToGround: true
+ })
+ addTileLayers[item.layerName].addOverlay(Polyline)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ // 岗亭
+ } else if (item.subType == 'geojsonGt') {
+ // if (!addTileLayers[item.layerName]) {
+ // addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ // window.$viewer.addLayer(addTileLayers[item.layerName])
- // item.source.features.forEach(i => {
- // let iconEl = ''
- // if ('showPanel' in item && item.showPanel == false) {
- // if (item.backgroundIcon) {
- // iconEl = `
- // <div class="map-name">${i.properties.O_Name}</div>
- // <div class="map-icon">
- // <img src="${item.backgroundIcon}">
- // </div>
- // `
- // }
- // } else {
- // iconEl = `<div class="marsBlueGradientPnl">
- // <div>${i.properties.O_Name}</div>
- // </div>`
- // }
- // console.log(i.geometry.coordinates[0], "2222222222222222222")
- // console.log(i.properties.O_Name, "3333333333333333")
+ // item.source.features.forEach(i => {
+ // let iconEl = ''
+ // if ('showPanel' in item && item.showPanel == false) {
+ // if (item.backgroundIcon) {
+ // iconEl = `
+ // <div class="map-name">${i.properties.O_Name}</div>
+ // <div class="map-icon">
+ // <img src="${item.backgroundIcon}">
+ // </div>
+ // `
+ // }
+ // } else {
+ // iconEl = `<div class="marsBlueGradientPnl">
+ // <div>${i.properties.O_Name}</div>
+ // </div>`
+ // }
+ // console.log(i.geometry.coordinates[0], "2222222222222222222")
+ // console.log(i.properties.O_Name, "3333333333333333")
- // let divIcon = new DC.DivIcon(
- // new DC.Position('115.60241996718104', '29.818985725785911'),
- // `<div class="public-map-popup ${item.className || ''}">
- // ${iconEl}
- // </div>`
- // )
+ // let divIcon = new DC.DivIcon(
+ // new DC.Position('115.60241996718104', '29.818985725785911'),
+ // `<div class="public-map-popup ${item.className || ''}">
+ // ${iconEl}
+ // </div>`
+ // )
- // addTileLayers[item.layerName].addOverlay(divIcon)
- // })
- // } else {
- // addTileLayers[item.layerName].show = true
- // }
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ // addTileLayers[item.layerName].addOverlay(divIcon)
+ // })
+ // } else {
+ // addTileLayers[item.layerName].show = true
+ // }
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- // item.method(item.params).then(res => {
- // let data = res.data.data.records
+ // item.method(item.params).then(res => {
+ // let data = res.data.data.records
- item.source.features.forEach(i => {
- let iconEl = ''
+ item.source.features.forEach(i => {
+ let iconEl = ''
- if ('showPanel' in item && item.showPanel == false) {
- if (item.backgroundIcon) {
- iconEl = `
+ if ('showPanel' in item && item.showPanel == false) {
+ if (item.backgroundIcon) {
+ iconEl = `
<div class="map-name">${i.properties.O_Name}</div>
<div class="map-icon">
<img src="${item.backgroundIcon}">
</div>
`
- }
- } else {
- iconEl = `<div class="marsBlueGradientPnl">
+ }
+ } else {
+ iconEl = `<div class="marsBlueGradientPnl">
<div>${i.properties.O_Name}</div>
</div>`
- }
+ }
- let divIcon = new DC.DivIcon(
- new DC.Position(i.geometry.coordinates[0], i.geometry.coordinates[1], i.ele || 64),
- `<div class="public-map-popup ${item.className || ''}">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(i.geometry.coordinates[0], i.geometry.coordinates[1], i.ele || 64),
+ `<div class="public-map-popup ${item.className || ''}">
${iconEl}
</div>`
- )
+ )
- divIcon.attrParams = i
+ divIcon.attrParams = i
- // let incident = () => {
- // }
+ // let incident = () => {
+ // }
- // if (item.incident) incident = item.incident
+ // if (item.incident) incident = item.incident
- // divIcon.on(DC.MouseEventType.CLICK, (e) => {
- // if (mapStore.editPoint) {
- // moveEntity = e
- // return
- // }
+ // divIcon.on(DC.MouseEventType.CLICK, (e) => {
+ // if (mapStore.editPoint) {
+ // moveEntity = e
+ // return
+ // }
- // if (mapStore.startCustomWx && item.customWx) {
- // EventBus.emit('wxEntityClick', e)
- // return
- // }
+ // if (mapStore.startCustomWx && item.customWx) {
+ // EventBus.emit('wxEntityClick', e)
+ // return
+ // }
- // incident(e)
- // })
+ // incident(e)
+ // })
- addTileLayers[item.layerName].addOverlay(divIcon)
- // })
- })
+ addTileLayers[item.layerName].addOverlay(divIcon)
+ // })
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ } else if (item.subType == 'baseMap') {
+ if (addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName].show = true
+ return
+ }
+
+ addTileLayers[item.layerName] = window.$viewer?.imageryLayers.addImageryProvider(item.source)
+ }
} else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'baseMap') {
- if (addTileLayers[item.layerName]) {
- addTileLayers[item.layerName].show = true
- return
- }
+ if (addTileLayers[item.layerName]) {
+ if (item.subType == '3Dtile') {
+ addTileLayers[item.layerName].forEach(m => m.show = false)
+ } else if (item.subType == 'baseMap') {
+ addTileLayers[item.layerName].show = false
+ } else {
+ addTileLayers[item.layerName].clear()
+ window.$viewer && window.$viewer.removeLayer(addTileLayers[item.layerName])
+ addTileLayers[item.layerName] = null
+ delete addTileLayers[item.layerName]
- addTileLayers[item.layerName] = window.$viewer?.imageryLayers.addImageryProvider(item.source)
- }
- } else {
- if (addTileLayers[item.layerName]) {
- if (item.subType == '3Dtile') {
- addTileLayers[item.layerName].forEach(m => m.show = false)
- } else if (item.subType == 'baseMap') {
- addTileLayers[item.layerName].show = false
- } else {
- addTileLayers[item.layerName].clear()
- window.$viewer && window.$viewer.removeLayer(addTileLayers[item.layerName])
- addTileLayers[item.layerName] = null
- delete addTileLayers[item.layerName]
-
- if (item.layerName == 'ysgw' && planToBuild) {
- planToBuild.clear()
- }
- if (item.layerName == 'qyjgx' && planToBuild) {
- planToBuild.clear()
- }
+ if (item.layerName == 'ysgw' && planToBuild) {
+ planToBuild.clear()
+ }
+ if (item.layerName == 'qyjgx' && planToBuild) {
+ planToBuild.clear()
+ }
+ }
+ }
}
- }
- }
- })
+ })
}
function findObjectById (data, id) {
- // 遍历数据数组
- for (let i = 0; i < data.length; i++) {
- const item = data[i]
+ // 遍历数据数组
+ for (let i = 0; i < data.length; i++) {
+ const item = data[i]
- // 检查当前项的 id 是否匹配
- if (item.id === id) {
- return item // 找到匹配项,返回它
+ // 检查当前项的 id 是否匹配
+ if (item.id === id) {
+ return item // 找到匹配项,返回它
+ }
+
+ // 如果当前项有 children 数组,则递归查找
+ if (item.children && item.children.length > 0) {
+ const found = findObjectById(item.children, id)
+ if (found) {
+ return found // 在 children 中找到匹配项,返回它
+ }
+ }
}
- // 如果当前项有 children 数组,则递归查找
- if (item.children && item.children.length > 0) {
- const found = findObjectById(item.children, id)
- if (found) {
- return found // 在 children 中找到匹配项,返回它
- }
- }
- }
-
- // 如果没有找到匹配项,返回 null
- return null
+ // 如果没有找到匹配项,返回 null
+ return null
}
const restHandleCheckChange = (key) => {
- let checkIds = treeRef.value?.getCheckedKeys()
+ let checkIds = treeRef.value?.getCheckedKeys()
- if (checkIds && checkIds.some(i => i == key)) {
- return
- }
+ if (checkIds && checkIds.some(i => i == key)) {
+ return
+ }
- treeRef.value?.setCheckedKeys([...checkIds, key])
- handleCheckChange([findObjectById(data, key)])
+ treeRef.value?.setCheckedKeys([...checkIds, key])
+ handleCheckChange([findObjectById(data, key)])
}
const restHandleDelChange = (key) => {
- let checkIds = treeRef.value?.getCheckedKeys()
+ let checkIds = treeRef.value?.getCheckedKeys()
- if (checkIds && !checkIds.some(i => i == key)) {
- return
- }
+ if (checkIds && !checkIds.some(i => i == key)) {
+ return
+ }
- let selectData = findObjectById(data, key)
+ let selectData = findObjectById(data, key)
- let parentId = null
- if (selectData && 'parentId' in selectData) parentId = selectData.parentId
+ let parentId = null
+ if (selectData && 'parentId' in selectData) parentId = selectData.parentId
- treeRef.value?.setCheckedKeys(checkIds.filter(i => i.indexOf(key) && i != parentId))
- handleCheckChange([selectData])
+ treeRef.value?.setCheckedKeys(checkIds.filter(i => i.indexOf(key) && i != parentId))
+ handleCheckChange([selectData])
}
// 飞到园区范围
const flyToyqfw = () => {
- window.$viewer.zoomToPosition(new DC.Position(
- 115.6080,
- 29.7880,
- 3000,
- 0,
- -45,
- 0
- ), () => {
- })
+ window.$viewer.zoomToPosition(new DC.Position(
+ 115.6080,
+ 29.7880,
+ 3000,
+ 0,
+ -45,
+ 0
+ ), () => {
+ })
}
EventBus.on('restHandleCheckChange', restHandleCheckChange)
@@ -1227,63 +1230,63 @@
let tooltip = window.$viewer.tooltip
const viewerMouseMove = (e) => {
- if (mapStore.editPoint) {
- if (moveEntity != null) {
+ if (mapStore.editPoint) {
+ if (moveEntity != null) {
- if (e.wgs84Position && e.wgs84Position.alt > 0) {
- moveEntity.overlay.position = new DC.Position(e.wgs84Position.lng, e.wgs84Position.lat, e.wgs84Position.alt)
- } else {
- moveEntity.overlay.position = new DC.Position(e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat, e.wgs84SurfacePosition.alt)
- }
+ if (e.wgs84Position && e.wgs84Position.alt > 0) {
+ moveEntity.overlay.position = new DC.Position(e.wgs84Position.lng, e.wgs84Position.lat, e.wgs84Position.alt)
+ } else {
+ moveEntity.overlay.position = new DC.Position(e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat, e.wgs84SurfacePosition.alt)
+ }
- tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '右键结束编辑')
- } else {
- tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '左键选中点位,开始编辑')
+ tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '右键结束编辑')
+ } else {
+ tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '左键选中点位,开始编辑')
+ }
}
- }
}
window.$viewer.on(DC.MouseEventType.MOUSE_MOVE, viewerMouseMove)
const viewerRightClick = (e) => {
- if (mapStore.editPoint && moveEntity != null) {
- tooltip.enable = false
- let lng, lat, ele
+ if (mapStore.editPoint && moveEntity != null) {
+ tooltip.enable = false
+ let lng, lat, ele
- const { attrParams } = moveEntity.overlay
- console.log(e, 2222)
+ const { attrParams } = moveEntity.overlay
+ console.log(e, 2222)
- if (e.wgs84Position && e.wgs84Position.alt > 0) {
- lng = e.wgs84Position.lng
- lat = e.wgs84Position.lat
- ele = e.wgs84Position.alt
- } else {
- lng = e.wgs84SurfacePosition.lng
- lat = e.wgs84SurfacePosition.lat
- ele = e.wgs84SurfacePosition.alt
+ if (e.wgs84Position && e.wgs84Position.alt > 0) {
+ lng = e.wgs84Position.lng
+ lat = e.wgs84Position.lat
+ ele = e.wgs84Position.alt
+ } else {
+ lng = e.wgs84SurfacePosition.lng
+ lat = e.wgs84SurfacePosition.lat
+ ele = e.wgs84SurfacePosition.alt
+ }
+
+ updateSpace({
+ id: attrParams.id,
+ lng,
+ lat,
+ ele: Math.ceil(ele)
+ }).then(res => {
+ moveEntity = null
+ mapStore.setEditPoint(false)
+
+ ElMessage({
+ message: '修改成功',
+ type: 'success',
+ })
+ })
}
-
- updateSpace({
- id: attrParams.id,
- lng,
- lat,
- ele: Math.ceil(ele)
- }).then(res => {
- moveEntity = null
- mapStore.setEditPoint(false)
-
- ElMessage({
- message: '修改成功',
- type: 'success',
- })
- })
- }
}
window.$viewer.on(DC.MouseEventType.RIGHT_CLICK, viewerRightClick)
onMounted(() => {
- handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
+ handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
})
// const sharedData = computed(() => pointStore.sharedData);
@@ -1292,26 +1295,26 @@
// 关闭所有选中的,除了倾斜,园区分布,空中全景
const closeAll = () => {
- EventBus.emit('restHandleDelChange', `2`)
- EventBus.emit('restHandleDelChange', `3-1`)
- EventBus.emit('restHandleDelChange', `3-2`)
- EventBus.emit('restHandleDelChange', `3-3`)
- EventBus.emit('restHandleDelChange', `3-4`)
- EventBus.emit('restHandleDelChange', `3-5`)
- EventBus.emit('restHandleDelChange', `3-6`)
- EventBus.emit('restHandleDelChange', `3-7`)
- EventBus.emit('restHandleDelChange', `3-8`)
- EventBus.emit('restHandleDelChange', `3-9`)
- EventBus.emit('restHandleDelChange', `3-11`)
+ EventBus.emit('restHandleDelChange', `2`)
+ EventBus.emit('restHandleDelChange', `3-1`)
+ EventBus.emit('restHandleDelChange', `3-2`)
+ EventBus.emit('restHandleDelChange', `3-3`)
+ EventBus.emit('restHandleDelChange', `3-4`)
+ EventBus.emit('restHandleDelChange', `3-5`)
+ EventBus.emit('restHandleDelChange', `3-6`)
+ EventBus.emit('restHandleDelChange', `3-7`)
+ EventBus.emit('restHandleDelChange', `3-8`)
+ EventBus.emit('restHandleDelChange', `3-9`)
+ EventBus.emit('restHandleDelChange', `3-11`)
- EventBus.emit('restHandleDelChange', `4-1`)
- EventBus.emit('restHandleDelChange', `4-2`)
- EventBus.emit('restHandleDelChange', `4-3`)
- EventBus.emit('restHandleDelChange', `4-9`)
- EventBus.emit('restHandleDelChange', `4-5`)
- EventBus.emit('restHandleDelChange', `4-6`)
+ EventBus.emit('restHandleDelChange', `4-1`)
+ EventBus.emit('restHandleDelChange', `4-2`)
+ EventBus.emit('restHandleDelChange', `4-3`)
+ EventBus.emit('restHandleDelChange', `4-9`)
+ EventBus.emit('restHandleDelChange', `4-5`)
+ EventBus.emit('restHandleDelChange', `4-6`)
- destroyPop()
+ destroyPop()
}
// const sharedData = computed(() => pointStore.sharedData);
@@ -1319,95 +1322,95 @@
// });
// 监听当前路由路径的变化
watch(() => router.currentRoute.value.path,
- (newPath, oldPath) => {
- console.log(`Current path changed from ${oldPath} to ${newPath}`)
- closeAll()
- },
- { immediate: true }
+ (newPath, oldPath) => {
+ console.log(`Current path changed from ${oldPath} to ${newPath}`)
+ closeAll()
+ },
+ { immediate: true }
)
// 销毁
function destroyPop () {
- if (addPopLayers && addPopLayers != null) {
- let arr = Object.keys(addPopLayers)
- if (arr.length > 0) {
- arr.forEach(i => {
- addPopLayers[i] && window.$viewer && window.$viewer.removeLayer(addPopLayers[i])
- addPopLayers[i] = null
- delete addPopLayers[i]
- })
- addPopLayers = {}
+ if (addPopLayers && addPopLayers != null) {
+ let arr = Object.keys(addPopLayers)
+ if (arr.length > 0) {
+ arr.forEach(i => {
+ addPopLayers[i] && window.$viewer && window.$viewer.removeLayer(addPopLayers[i])
+ addPopLayers[i] = null
+ delete addPopLayers[i]
+ })
+ addPopLayers = {}
+ }
}
- }
}
onUnmounted(() => {
- let arr = Object.keys(addTileLayers)
- arr.forEach(i => {
- if (i == 'hgyq' || i == 'hgyqT') {
- addTileLayers[i].forEach(t => {
- tileLayers.removeOverlay(t)
- t = null
- })
- } else if (i == 'baseMap') {
- window.$viewer?.imageryLayers.remove(addTileLayers[i])
- } else {
- addTileLayers[i] && window.$viewer && window.$viewer.removeLayer(addTileLayers[i])
+ let arr = Object.keys(addTileLayers)
+ arr.forEach(i => {
+ if (i == 'hgyq' || i == 'hgyqT') {
+ addTileLayers[i].forEach(t => {
+ tileLayers.removeOverlay(t)
+ t = null
+ })
+ } else if (i == 'baseMap') {
+ window.$viewer?.imageryLayers.remove(addTileLayers[i])
+ } else {
+ addTileLayers[i] && window.$viewer && window.$viewer.removeLayer(addTileLayers[i])
+ }
+ addTileLayers[i] = null
+ delete addTileLayers[i]
+ })
+ addTileLayers = null
+
+ if (tileLayers) {
+ tileLayers.remove()
+ window.$viewer && window.$viewer.removeLayer(tileLayers)
+ tileLayers = null
}
- addTileLayers[i] = null
- delete addTileLayers[i]
- })
- addTileLayers = null
- if (tileLayers) {
- tileLayers.remove()
- window.$viewer && window.$viewer.removeLayer(tileLayers)
- tileLayers = null
- }
+ if (planToBuild) {
+ planToBuild.remove()
+ window.$viewer && window.$viewer.removeLayer(planToBuild)
+ planToBuild = null
+ }
- if (planToBuild) {
- planToBuild.remove()
- window.$viewer && window.$viewer.removeLayer(planToBuild)
- planToBuild = null
- }
+ // 弹窗销毁
+ destroyPop()
+ addPopLayers = null
- // 弹窗销毁
- destroyPop()
- addPopLayers = null
+ window.$viewer && window.$viewer.off(DC.MouseEventType.MOUSE_MOVE, viewerMouseMove)
+ window.$viewer && window.$viewer.off(DC.MouseEventType.RIGHT_CLICK, viewerRightClick)
- window.$viewer && window.$viewer.off(DC.MouseEventType.MOUSE_MOVE, viewerMouseMove)
- window.$viewer && window.$viewer.off(DC.MouseEventType.RIGHT_CLICK, viewerRightClick)
-
- EventBus.off('restHandleCheckChange', restHandleCheckChange)
- EventBus.off('restHandleDelChange', restHandleDelChange)
- EventBus.off('flyToyqfw', flyToyqfw)
+ EventBus.off('restHandleCheckChange', restHandleCheckChange)
+ EventBus.off('restHandleDelChange', restHandleDelChange)
+ EventBus.off('flyToyqfw', flyToyqfw)
})
</script>
<style lang="scss" scoped>
.tree-content {
- min-width: 200px;
- padding: 10px;
+ min-width: 200px;
+ padding: 10px;
- ::v-deep(.el-tree) {
- color: #fff;
- background: transparent;
+ ::v-deep(.el-tree) {
+ color: #fff;
+ background: transparent;
- /* 鼠标浮动过的背景颜色 */
- .el-tree-node__content:hover {
- background: #0074b7;
+ /* 鼠标浮动过的背景颜色 */
+ .el-tree-node__content:hover {
+ background: #0074b7;
+ }
+
+ /* 鼠标点击时节点的背景颜色 */
+ .el-tree-node:focus>.el-tree-node__content {
+ background-color: #0074b7 !important;
+ color: rgb(255, 255, 255);
+ }
+
+ /* 鼠标失去焦点时节点背景的颜色 */
+ .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+ background: rgb(0, 129, 204);
+ }
}
-
- /* 鼠标点击时节点的背景颜色 */
- .el-tree-node:focus>.el-tree-node__content {
- background-color: #0074b7 !important;
- color: rgb(255, 255, 255);
- }
-
- /* 鼠标失去焦点时节点背景的颜色 */
- .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
- background: rgb(0, 129, 204);
- }
- }
}
</style>
diff --git a/src/styles/element/index.scss b/src/styles/element/index.scss
index 55bdb54..8b3ecbf 100644
--- a/src/styles/element/index.scss
+++ b/src/styles/element/index.scss
@@ -1,83 +1,83 @@
.el-table {
- &::before {
- content: none;
- }
+ &::before {
+ content: none;
+ }
- background: transparent !important;
+ background: transparent !important;
- // border: none;
+ // border: none;
- .el-table__header-wrapper {
- font-size: 14px;
+ .el-table__header-wrapper {
+ font-size: 14px;
- tr {
- height: 38px;
- background: rgba(35, 53, 92, 0.8) !important;
- box-sizing: border-box;
+ tr {
+ height: 38px;
+ background: rgba(35, 53, 92, 0.8) !important;
+ box-sizing: border-box;
- th {
- background: transparent !important;
- border-color: rgba(103, 135, 214, 1) !important;
+ th {
+ background: transparent !important;
+ border-color: rgba(103, 135, 214, 1) !important;
- .cell {
- color: #AFBED8;
+ .cell {
+ color: #AFBED8;
+ }
+ }
}
- }
}
- }
- .el-table__body-wrapper {
- font-size: 14px;
+ .el-table__body-wrapper {
+ font-size: 14px;
- // table {
- // border-collapse: separate !important;
- // border-spacing: 0 0px !important;
- // }
+ // table {
+ // border-collapse: separate !important;
+ // border-spacing: 0 0px !important;
+ // }
- tr {
- height: 38px;
- background: rgba(36, 57, 110, 0.2);
- box-sizing: border-box;
- cursor: pointer;
+ tr {
+ height: 38px;
+ background: rgba(36, 57, 110, 0.2);
+ box-sizing: border-box;
+ cursor: pointer;
- &:hover {
- td {
- color: #44C1EF;
- background: transparent !important;
+ &:hover {
+ td {
+ color: #44C1EF;
+ background: transparent !important;
+ }
+ }
+
+ td {
+ padding: 0;
+ height: 38px;
+ line-height: 38px;
+ color: #D4E8F8;
+ // border-top: 1px solid rgba(110, 135, 197, 0.32);
+ // border-bottom: 1px solid rgba(110, 135, 197, 0.32);
+ border-color: rgba(110, 135, 197, 0.32);
+ box-sizing: border-box;
+ }
+
+ td:first-child {
+ // border-left: 1px solid rgba(110, 135, 197, 0.32);
+ border-color: rgba(110, 135, 197, 0.32);
+ }
+
+ td:last-child {
+ // border-right: 1px solid rgba(110, 135, 197, 0.32);
+
+ border-color: rgba(110, 135, 197, 0.32);
+ }
}
- }
-
- td {
- padding: 0;
- height: 38px;
- line-height: 38px;
- color: #D4E8F8;
- // border-top: 1px solid rgba(110, 135, 197, 0.32);
- // border-bottom: 1px solid rgba(110, 135, 197, 0.32);
- border-color: rgba(110, 135, 197, 0.32);
- box-sizing: border-box;
- }
-
- td:first-child {
- // border-left: 1px solid rgba(110, 135, 197, 0.32);
- border-color: rgba(110, 135, 197, 0.32);
- }
-
- td:last-child {
- // border-right: 1px solid rgba(110, 135, 197, 0.32);
-
- border-color: rgba(110, 135, 197, 0.32);
- }
}
- }
- .el-table__empty-block {
- background: rgba(36, 57, 110, 0.2);
+ .el-table__empty-block {
+ background: rgba(36, 57, 110, 0.2);
- .el-table__empty-text {
- color: #D4E8F8;
+ .el-table__empty-text {
+ color: #D4E8F8;
+ }
}
- }
}
@@ -87,44 +87,86 @@
.el-table__inner-wrapper:before,
.el-table__border-bottom-patch,
.el-table__border-left-patch {
- background: rgba(103, 135, 214, 1) !important;
+ background: rgba(103, 135, 214, 1) !important;
}
.el-page {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 100%;
- height: 40px;
- line-height: 40px;
- color: #D4E8F8;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ color: #D4E8F8;
- .el-pagination {
- .el-pagination__total {
- color: #D4E8F8;
+ .el-pagination {
+ .el-pagination__total {
+ color: #D4E8F8;
+ }
+
+ .btn-prev,
+ .btn-next {
+ color: rgba(216, 235, 238, 0.8) !important;
+ background: rgba(68, 193, 239, 0.1) !important;
+ }
+
+ .el-pager {
+
+ .btn-quickprev,
+ .btn-quicknext,
+ .number {
+ color: rgba(216, 235, 238, 0.8) !important;
+ background: rgba(68, 193, 239, 0.1);
+ }
+
+ .active {
+ color: #FFFFFF;
+ background: #44C1EF !important;
+ opacity: 0.8;
+ }
+ }
}
+}
- .btn-prev,
- .btn-next {
- color: rgba(216, 235, 238, 0.8) !important;
- background: rgba(68, 193, 239, 0.1) !important;
+/* 在你的全局 CSS 文件中添加 */
+.dark-dialog {
+ --el-dialog-bg-color: rgba(33, 26, 26, .9) !important;
+ --el-dialog-title-font-color: #E0E0E0 !important;
+ --el-text-color-primary: #E0E0E0 !important;
+ --el-border-color-light: #434343 !important;
+ background-color: var(--el-dialog-bg-color) !important;
+}
+
+.dark-dialog .el-dialog__title {
+ color: var(--el-dialog-title-font-color) !important;
+}
+
+.dark-dialog .el-dialog__body {
+ color: var(--el-text-color-primary) !important;
+}
+
+.dark-dialog .el-dialog__headerbtn .el-dialog__close {
+ color: var(--el-text-color-secondary) !important;
+}
+
+.dark-dialog .el-dialog__headerbtn:hover .el-dialog__close {
+ color: var(--el-color-primary) !important;
+}
+
+.el-notification.right {
+ --el-dialog-bg-color: rgba(33, 26, 26, .9) !important;
+ --el-dialog-title-font-color: #E0E0E0 !important;
+ --el-text-color-primary: #E0E0E0 !important;
+ --el-border-color-light: #434343 !important;
+ background-color: var(--el-dialog-bg-color) !important;
+ border: none !important;
+
+ .el-notification__group {
+ color: var(--el-dialog-title-font-color) !important;
+
+ .el-notification__content {
+ color: var(--el-dialog-title-font-color) !important;
+ }
}
-
- .el-pager {
-
- .btn-quickprev,
- .btn-quicknext,
- .number {
- color: rgba(216, 235, 238, 0.8) !important;
- background: rgba(68, 193, 239, 0.1);
- }
-
- .active {
- color: #FFFFFF;
- background: #44C1EF !important;
- opacity: 0.8;
- }
- }
- }
}
\ No newline at end of file
diff --git a/src/views/pd/components/dynamicPanel.vue b/src/views/pd/components/dynamicPanel.vue
index 631a31b..b5d7ab0 100644
--- a/src/views/pd/components/dynamicPanel.vue
+++ b/src/views/pd/components/dynamicPanel.vue
@@ -2,19 +2,24 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2024-11-09 15:41:35
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2025-08-06 00:09:39
- * @FilePath: \jsProject\bigScreen\src\views\pd\components\dynamicPanel.vue
+ * @LastEditTime: 2025-08-18 20:00:48
+ * @FilePath: \bigScreen\src\views\pd\components\dynamicPanel.vue
* @Description:
*
* Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<script setup>
+import 'element-plus/theme-chalk/dark/css-vars.css'
+
+import { ElMessage, ElNotification } from 'element-plus'
+import qyfw from "@/assets/json/qyfw"
import EventBus from 'utils/bus'
import qysgwslx from "@/assets/json/qysgwslx"
+import disposeDataJson from "@/assets/json/dispose"
const { VITE_APP_BASE } = import.meta.env
const emit = defineEmits(['closePanel'])
-import { onUnmounted } from 'vue'
+import { computed, onUnmounted } from 'vue'
import { spatialAnalysisPoint } from "@/api/space/space"
@@ -145,6 +150,7 @@
tc.addTrack(track)
let startClick = false
+let curSelectType = null
const synth = window.speechSynthesis
@@ -430,6 +436,27 @@
}
const wxEntityClick = (e) => {
+ if (curStepType.value === 4 && e.overlay.attrParams.type != 4) {
+ ElMessage({
+ message: '请选择闸坝.',
+ type: 'warning',
+ })
+
+ return
+ }
+
+ if (curStepType.value === 7 && e.overlay.attrParams.type != 4 && e.overlay.attrParams.type != 3) {
+ ElMessage({
+ message: '请选择闸阀.',
+ type: 'warning',
+ })
+
+ return
+ }
+
+ isShowEquipmentClosePopup.value = true
+ return
+
const { attrParams } = e.overlay
clearAll()
pointStore.updateSharedData(1)
@@ -524,30 +551,33 @@
EventBus.on('wxEntityClick', wxEntityClick)
-
+qysgwslx.features.forEach(item => {
+ let polyline = new DC.Polyline(item.geometry.coordinates.join(';'))
+ polyline.setStyle({
+ width: 5,
+ material: new DC.PolylineTrailMaterialProperty({
+ color: DC.Color.ALICEBLUE,
+ speed: 10
+ }),
+ clampToGround: true
+ })
+ qyWsLayer.addOverlay(polyline)
+})
const schemeStart = (item, type) => {
emit('closePanel')
clearAll()
if (type == 1) {
+ curSelectType = 1
if (startClick) {
+ EventBus.emit('restHandleDelChange', `3-3`)
+ EventBus.emit('restHandleDelChange', `3-4`)
EventBus.emit('restHandleDelChange', `4-1`)
EventBus.emit('restHandleDelChange', `4-2`)
EventBus.emit('restHandleDelChange', `4-3`)
EventBus.emit('restHandleDelChange', `4-9`)
}
-
- // let polyline = new DC.Polyline(qysgwslx.features[0].geometry.coordinates.join(';'))
- // polyline.setStyle({
- // width: 5,
- // material: new DC.PolylineTrailMaterialProperty({
- // color: DC.Color.RED,
- // speed: 10
- // }),
- // clampToGround: true
- // })
- // qyWsLayer.addOverlay(polyline)
if (item.showModel) {
window.$viewer.flyToPosition("115.10587903,27.28374884,400,0,-90", () => {
@@ -631,10 +661,131 @@
mapStore.setStartCustomWx(startClick)
} else {
startClick = true
- mapStore.setStartCustomWx(startClick)
- EventBus.emit('restHandleCheckChange', `4`)
+ curStep.value = 0
+ curStepType.value = 0
+
+ curSelectType = 2
+ // mapStore.setStartCustomWx(startClick)
+ EventBus.emit('restHandleCheckChange', `3-3`)
+ EventBus.emit('restHandleCheckChange', `3-4`)
}
}
+
+const disposeFlowData = ref([])
+const isShowDisposeFlowPopup = ref(false)
+const curStep = ref(0)
+const isInEnterprise = ref(false)
+const curStepType = ref(0)
+const isShowEquipmentClosePopup = ref(false)
+
+
+const viewerClick = (e) => {
+ if (curSelectType === 2) {
+ let curPosition = {}
+
+ if (e.wgs84Position && e.wgs84Position.alt > 0) {
+ curPosition = {
+ lng: e.wgs84Position.lng,
+ lat: e.wgs84Position.lat,
+ alt: e.wgs84Position.alt,
+ }
+ } else {
+ curPosition = {
+ lng: e.wgs84SurfacePosition.lng,
+ lat: e.wgs84SurfacePosition.lat,
+ alt: e.wgs84SurfacePosition.alt,
+ }
+ }
+
+ let point = window.$turf.point([curPosition.lng, curPosition.lat])
+
+ const isInPolygon = qyfw.features.some(item => {
+ let polygon = window.$turf.polygon(item.geometry.coordinates)
+
+
+ return window.$turf.booleanPointInPolygon(point, polygon)
+ })
+
+ if (isInPolygon) {
+ isInEnterprise.value = true
+ disposeFlowData.value = JSON.parse(JSON.stringify(disposeDataJson.categoryTypeData[0]))
+ } else {
+ isInEnterprise.value = false
+ disposeFlowData.value = JSON.parse(JSON.stringify(disposeDataJson.categoryTypeData[1]))
+ }
+
+ curStep.value = 0
+ curStepType.value = 0
+
+ isShowDisposeFlowPopup.value = true
+ curSelectType = null
+ mapStore.setStartCustomWx(startClick)
+ }
+}
+
+const cancelFlowDispose = () => {
+ isShowDisposeFlowPopup.value = false
+ curStep.value = 0
+ curStepType.value = 0
+ startClick = false
+ disposeFlowData.value = []
+ curSelectType = null
+ mapStore.setStartCustomWx(startClick)
+}
+
+const nextStep = () => {
+ curStep.value += 1
+ curStepType.value = disposeFlowData.value?.processFlowData[curStep.value]?.type
+}
+
+const isSelectSignPoint = () => {
+ isShowDisposeFlowPopup.value = false
+
+ message?.close()
+ message = null
+
+ if (curStepType.value === 4) {
+ message = ElNotification({
+ title: '提示',
+ showClose: true,
+ message: '进行下一步应急措施,需选中闸坝才可下一步。',
+ type: 'warning',
+ duration: 0,
+ offset: 100,
+ })
+ } else {
+ message = ElNotification({
+ title: '提示',
+ showClose: true,
+ message: '进行下一步应急措施,需选中闸阀才可下一步。',
+ type: 'warning',
+ duration: 0,
+ offset: 100,
+ })
+ }
+}
+
+const affirmEquipmentClose = () => {
+ isShowEquipmentClosePopup.value = false
+ message?.close()
+ message = null
+
+ nextStep()
+ isShowDisposeFlowPopup.value = true
+}
+
+let message = null
+
+const isOverBtn = computed(() => disposeFlowData.value?.processFlowData ? curStep.value === disposeFlowData.value?.processFlowData.length - 1 : false)
+const isNextStepBtn = computed(() => disposeFlowData.value?.processFlowData ? curStep.value < disposeFlowData.value?.processFlowData.length - 1 : false)
+
+const isShowSelectBtn = computed(() => {
+ return disposeFlowData.value?.processFlowData ?
+ (curStepType.value === 4 || curStepType.value === 7)
+ : false
+})
+
+window.$viewer.on(DC.MouseEventType.CLICK, viewerClick)
const clearAll = () => {
mapStore.setShowPreLevel(false)
@@ -659,16 +810,23 @@
dynamicVectorLayer?.clear()
dynamicHtmlLayer?.clear()
dynamicLineVectorLayer?.clear()
- qyWsLayer?.clear()
+
+ isShowEquipmentClosePopup.value = false
+ isShowDisposeFlowPopup.value = false
+ message?.close()
+ message = null
}
onUnmounted(() => {
if (startClick) {
+ EventBus.emit('restHandleDelChange', `3-3`)
+ EventBus.emit('restHandleDelChange', `3-4`)
EventBus.emit('restHandleDelChange', `4-1`)
EventBus.emit('restHandleDelChange', `4-2`)
EventBus.emit('restHandleDelChange', `4-3`)
EventBus.emit('restHandleDelChange', `4-9`)
}
+
mapStore.setStartCustomWx(false)
EventBus.off('wxEntityClick', wxEntityClick)
@@ -680,6 +838,9 @@
dynamicLineVectorLayer && window.$viewer && window.$viewer.removeLayer(dynamicLineVectorLayer)
qyWsLayer && window.$viewer && window.$viewer.removeLayer(qyWsLayer)
+ window.$viewer.off(DC.MouseEventType.CLICK, viewerClick)
+
+
tc = null
track = null
dynamicVectorLayer = null
@@ -690,39 +851,75 @@
</script>
<template>
- <div class="panel-container no-select">
- <el-carousel :autoplay="false" :interval="4000" type="card" height="360px">
- <el-carousel-item v-for="item, index in panelData.data" :key="index">
- <template #>
- <div class="content-box flex f-d-c">
- <div class="title">
- {{ item.title }}
- </div>
- <div class="content h0 flex-1">
- <div class="bg-box">
+ <div>
+ <div class="panel-container no-select">
+ <el-carousel :autoplay="false" :interval="4000" type="card" height="360px">
+ <el-carousel-item v-for="item, index in panelData.data" :key="index">
+ <template #>
+ <div class="content-box flex f-d-c">
+ <div class="title">
+ {{ item.title }}
+ </div>
+ <div class="content h0 flex-1">
+ <div class="bg-box">
+
+ </div>
+
+ <div class="describe-box">
+ {{ item.content }}
+ </div>
</div>
- <div class="describe-box">
- {{ item.content }}
+ <div class="footer-btn" v-show="item.type == 'demo'">
+ <div class="start-btn" @click="schemeStart(item, 1)">
+ 开始模拟
+ </div>
</div>
- </div>
- <div class="footer-btn" v-show="item.type == 'demo'">
- <div class="start-btn" @click="schemeStart(item, 1)">
- 开始模拟
+ <div class="footer-btn" v-show="item.type != 'demo'">
+ <div class="start-btn" @click="schemeStart(item, 2)">
+ 自定义风险源
+ </div>
</div>
</div>
+ </template>
+ </el-carousel-item>
+ </el-carousel>
+ </div>
- <div class="footer-btn" v-show="item.type != 'demo'">
- <div class="start-btn" @click="schemeStart(item, 2)">
- 自定义风险源
- </div>
- </div>
- </div>
- </template>
- </el-carousel-item>
- </el-carousel>
+ <el-dialog class="dark-dialog" v-model="isShowDisposeFlowPopup" :append-to-body="true"
+ :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" title="风险处置流程" width="500">
+ <div>
+ <div v-for="item, ind in disposeFlowData.processFlowData" :key="ind" v-show="ind === curStep">{{
+ item.message }}
+ </div>
+ </div>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="cancelFlowDispose">取消</el-button>
+ <el-button type="primary" v-show="isShowSelectBtn" @click="isSelectSignPoint">{{ curStepType === 4 ?
+ '选择闸坝' : '选择闸阀' }}</el-button>
+
+ <el-button type="primary" @click="cancelFlowDispose" v-show="isOverBtn">结束</el-button>
+ <el-button :disabled="isShowSelectBtn" type="primary" @click="nextStep"
+ v-show="isNextStepBtn">下一步</el-button>
+ </div>
+ </template>
+ </el-dialog>
+
+ <el-dialog class="dark-dialog" v-model="isShowEquipmentClosePopup" :append-to-body="true"
+ :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" title="" width="500">
+ <div>
+ {{ curStepType === 4 ? '确认关闭该闸坝?' : '确认关闭该闸阀?' }}
+ </div>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="isShowEquipmentClosePopup = false">取消</el-button>
+ <el-button type="primary" @click="affirmEquipmentClose">确认</el-button>
+ </div>
+ </template>
+ </el-dialog>
</div>
</template>
--
Gitblit v1.9.3