From f41e347a34d2859c149c59691bda6d179b209d44 Mon Sep 17 00:00:00 2001
From: yxl <584911253@qq.com>
Date: 星期三, 22 一月 2025 17:42:53 +0800
Subject: [PATCH] 最新修改

---
 src/assets/js/mapSetFunc.js   |   43 +++++
 vue.config.js                 |    3 
 package-lock.json             |  163 +++++++++++++-------
 src/store/index.js            |    2 
 package.json                  |    1 
 src/views/chartView/index.vue |  131 +++++++++++++--
 src/views/mapView/mapView.vue |  136 ++++++++++++++--
 7 files changed, 375 insertions(+), 104 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 7ec3cef..c8d5177 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
         "@turf/turf": "^7.0.0",
         "axios": "^1.7.2",
         "core-js": "^3.6.4",
+        "echarts": "^5.6.0",
         "element-ui": "^2.13.1",
         "html-docx-js": "^0.3.1",
         "jsencrypt": "^3.3.2",
@@ -4408,23 +4409,6 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.2.tgz",
-      "integrity": "sha512-vErEtybSU290LbMW+ChYllI9tNJEdTW1oU+8cZWINZyjlWeTSa9YqDl4/pZJSnozOI+HmcaC1Vz2eFKmXNSXZA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.25.3",
-        "@vue/compiler-core": "3.5.2",
-        "@vue/compiler-dom": "3.5.2",
-        "@vue/compiler-ssr": "3.5.2",
-        "@vue/shared": "3.5.2",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.11",
-        "postcss": "^8.4.44",
-        "source-map-js": "^1.2.0"
-      }
-    },
     "node_modules/@vue/babel-plugin-transform-vue-jsx": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz",
@@ -4826,13 +4810,13 @@
       }
     },
     "node_modules/@vue/compiler-core": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.2.tgz",
-      "integrity": "sha512-1aP7FL2GkqfcskHWGg3lfWQpJnrmewKc+rNJ/hq9WNaAw4BEyJ5QbNChnqmbw+tJ409zdy1XWmUeXXMrCKJcQQ==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+      "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
       "dev": true,
       "dependencies": {
         "@babel/parser": "^7.25.3",
-        "@vue/shared": "3.5.2",
+        "@vue/shared": "3.5.13",
         "entities": "^4.5.0",
         "estree-walker": "^2.0.2",
         "source-map-js": "^1.2.0"
@@ -4840,7 +4824,7 @@
     },
     "node_modules/@vue/compiler-core/node_modules/entities": {
       "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
       "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
       "dev": true,
       "engines": {
@@ -4851,36 +4835,40 @@
       }
     },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.2.tgz",
-      "integrity": "sha512-QY4DpT8ZIUyu/ZA5gErpSEDocGNEbHmpkZIC/d5jbp/rUF0iOJNigAy3HCCKc0PMMhDlrcysO3ufQ6Ab4MpEcQ==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+      "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-core": "3.5.2",
-        "@vue/shared": "3.5.2"
+        "@vue/compiler-core": "3.5.13",
+        "@vue/shared": "3.5.13"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "2.7.16",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
-      "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+      "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.23.5",
-        "postcss": "^8.4.14",
-        "source-map": "^0.6.1"
-      },
-      "optionalDependencies": {
-        "prettier": "^1.18.2 || ^2.0.0"
+        "@babel/parser": "^7.25.3",
+        "@vue/compiler-core": "3.5.13",
+        "@vue/compiler-dom": "3.5.13",
+        "@vue/compiler-ssr": "3.5.13",
+        "@vue/shared": "3.5.13",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.11",
+        "postcss": "^8.4.48",
+        "source-map-js": "^1.2.0"
       }
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.2.tgz",
-      "integrity": "sha512-vMtA4tQK/AM3UAYJsmouQzQpgG+h9TKiD5BV+Zt+ZyAMdicxzSEEFGWf/CykRnDpqj9fMfIHPhOezJVNxiXe2A==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+      "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-dom": "3.5.2",
-        "@vue/shared": "3.5.2"
+        "@vue/compiler-dom": "3.5.13",
+        "@vue/shared": "3.5.13"
       }
     },
     "node_modules/@vue/component-compiler-utils": {
@@ -4961,9 +4949,9 @@
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.2.tgz",
-      "integrity": "sha512-Ce89WNFBzcDca/AgFTxgX4/K4iAyF7oFIp8Z5aBbFBNbtpwnQr+5pZOoHndxnjE2h+YFcipVMzs9UL11XB6dwA==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",
+      "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
       "dev": true
     },
     "node_modules/@vue/web-component-wrapper": {
@@ -6035,6 +6023,16 @@
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "file-uri-to-path": "1.0.0"
       }
     },
     "node_modules/bluebird": {
@@ -8894,6 +8892,20 @@
         "safer-buffer": "^2.1.0"
       }
     },
+    "node_modules/echarts": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
+      "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.6.1"
+      }
+    },
+    "node_modules/echarts/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
     "node_modules/ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -10046,6 +10058,13 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
       "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+    },
+    "node_modules/file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "dev": true,
+      "optional": true
     },
     "node_modules/filesize": {
       "version": "3.6.1",
@@ -15509,9 +15528,9 @@
       "dev": true
     },
     "node_modules/picocolors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
-      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
@@ -15645,9 +15664,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.45",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz",
-      "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==",
+      "version": "8.5.1",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.1.tgz",
+      "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -15663,9 +15682,9 @@
         }
       ],
       "dependencies": {
-        "nanoid": "^3.3.7",
-        "picocolors": "^1.0.1",
-        "source-map-js": "^1.2.0"
+        "nanoid": "^3.3.8",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
@@ -17066,9 +17085,9 @@
       "dev": true
     },
     "node_modules/postcss/node_modules/nanoid": {
-      "version": "3.3.7",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+      "version": "3.3.8",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz",
+      "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
       "funding": [
         {
           "type": "github",
@@ -18836,9 +18855,9 @@
       }
     },
     "node_modules/source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -20873,6 +20892,19 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "node_modules/vue/node_modules/@vue/compiler-sfc": {
+      "version": "2.7.16",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+      "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+      "dependencies": {
+        "@babel/parser": "^7.23.5",
+        "postcss": "^8.4.14",
+        "source-map": "^0.6.1"
+      },
+      "optionalDependencies": {
+        "prettier": "^1.18.2 || ^2.0.0"
+      }
+    },
     "node_modules/vuex": {
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
@@ -22029,6 +22061,19 @@
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
       "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
       "dev": true
+    },
+    "node_modules/zrender": {
+      "version": "5.6.1",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
+      "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
+      "dependencies": {
+        "tslib": "2.3.0"
+      }
+    },
+    "node_modules/zrender/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     }
   }
 }
diff --git a/package.json b/package.json
index bf06782..63d2010 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
     "@turf/turf": "^7.0.0",
     "axios": "^1.7.2",
     "core-js": "^3.6.4",
+    "echarts": "^5.6.0",
     "element-ui": "^2.13.1",
     "html-docx-js": "^0.3.1",
     "jsencrypt": "^3.3.2",
diff --git a/src/assets/js/mapSetFunc.js b/src/assets/js/mapSetFunc.js
index 7b8c046..53959f6 100644
--- a/src/assets/js/mapSetFunc.js
+++ b/src/assets/js/mapSetFunc.js
@@ -28,6 +28,9 @@
       case "getParam":
         this.addTetrahedron(res);
         break;
+      case "attackentity":
+        this.addPolyLine(res);
+        break;
     }
   },
   creatQueryMeta(res) {
@@ -476,6 +479,41 @@
     });
   },
 
+  //缁樺埗绾�
+  addPolyLine(res) {
+    // 瑙f瀽 LINESTRING 瀛楃涓蹭负缁忕含搴﹀潗鏍囨暟缁�
+    const coordinates = res.bombpoint
+      .replace("LINESTRING", "") // 鍘婚櫎 'LINESTRING' 閮ㄥ垎
+      .replace(/[()]/g, "") // 鍘婚櫎鎷彿
+      .split(",") // 鎸夐�楀彿鍒嗗壊
+      .map(coord => {
+        const [lon, lat] = coord.trim().split(" "); // 灏嗘瘡瀵瑰潗鏍囧垎寮�
+        return [parseFloat(lon), parseFloat(lat)]; // 杞崲涓烘暟瀛�
+      });
+    const positions = coordinates.map(coord => {
+      return {
+        x: coord[0],
+        y: coord[1],
+        z: 21
+      };
+    });
+    positions.forEach((item,index) => {
+      const particle = earthCtrl.factory.createParticleEffect("flame", item, {
+        translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ
+        emissionRate: 500,
+        startScale: 15,
+        endScale: 45,
+      });
+      if (index == positions.length/2) {
+        earthCtrl.camera.flyTo(item.x, item.y, 3000, 0, -90, 0, 2);
+      }
+      this.layerList.push({
+        layer: particle,
+        func: 'attackentity'
+      });
+    })
+  },
+
   removeAll() {
     store.state.setListColor = [];
     store.state.showLenged = false;
@@ -528,6 +566,11 @@
         this.layerList.splice(i, 1);
         i--;
       }
+      else if (obj.func == "attackentity") {
+        this.layerList[i].layer.deleteObject();
+        this.layerList.splice(i, 1);
+        i--;
+      }
     }
     if (!window.terrain) {
       window.terrain = earthCtrl.factory.createTerrainLayer({
diff --git a/src/store/index.js b/src/store/index.js
index 5786f13..c4f3023 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -17,6 +17,8 @@
     historyList: [],
     sessionId:null,
     setListColor:[],
+    showRelationBox:false,
+    relationData:{}
   },
   mutations: {
     setHunmanMessage(state, msg) {
diff --git a/src/views/chartView/index.vue b/src/views/chartView/index.vue
index 95beaf3..5d12549 100644
--- a/src/views/chartView/index.vue
+++ b/src/views/chartView/index.vue
@@ -131,7 +131,10 @@
         // console.log('Received message:', event.data);
         console.log(event);
 
-        if (event.data != "杩炴帴鎴愬姛" || event.data != "鏀跺埌娑堟伅锛屾秷鎭唴瀹癸細蹇冭烦鍖呮娴�") {
+        if (
+          event.data != "杩炴帴鎴愬姛" ||
+          event.data.indexOf("鏀跺埌娑堟伅锛屾秷鎭唴瀹癸細蹇冭烦鍖呮娴�") <= 0
+        ) {
           console.log(event.data);
           const val = JSON.parse(event.data);
           if (val.session_id == this.uuid) {
@@ -240,14 +243,12 @@
           0.001313831409284339,
           2
         );
-      } else {
-        //鍏抽棴鍦板浘
-        // this.$store.state.setScreenFlag = false;
       }
       mapImg.removeInit();
       mapSetFunc.removeAll();
       this.$store.state.setListColor = [];
       this.$store.state.showLenged = false;
+      this.$store.state.showRelationBox = false;
 
       // const formData = new FormData();
       // formData.append("message", res);
@@ -296,7 +297,7 @@
 
           const type = response.type;
           //鏅�氬璇濅俊鎭煡璇�
-          if (type == "message") {
+          if (type == "message" || type == "Rag") {
             //鍏抽棴鍦板浘
             if (!this.closeMap) {
               this.$store.state.setScreenFlag = false;
@@ -304,7 +305,7 @@
             var rolMsg = [
               {
                 type: "text",
-                val: response.msg,
+                val: type == "Rag" ? response.content : response.msg,
               },
             ];
             this.refashMsg(rolMsg);
@@ -315,13 +316,6 @@
             this.$store.state.setScreenFlag = true;
             this.setMapfunc(response.content, obj);
           }
-          // if (type == "Map") {
-          //   this.setMapfunc(response.content, obj);
-          // } else if (type == "Rag") {
-          //   this.setMapRag(response, obj);
-          // } else {
-          //   // this.setMapfunc(response.content, obj);
-          // }
         })
         .catch((error) => {
           var rolMsg = [
@@ -346,7 +340,6 @@
           } else {
             roleMsg = msgData.getAffairsData([{ type: "text", val: res.msg }]);
           }
-
           this.refashMsg(roleMsg.list);
           break;
         case "queryMeta":
@@ -389,7 +382,6 @@
           var roleMsg = msgData.getAffairsData([
             { type: "text", val: "鍦板浘宸叉樉绀�" },
           ]);
-          console.log("roleMsg----", roleMsg);
           this.refashMsg(roleMsg.list);
           break;
         case "aroundPoi":
@@ -504,13 +496,38 @@
           this.setUpdateHistoryInFor(obj, res.msg);
           this.refashMsg(roleMsg.list);
           break;
-        // default:
-        //   this.setUpdateHistoryInFor(obj, res.msg);
-        //   var roleMsg1 = msgData.getAffairsData([
-        //     { type: "text", val: res.msg },
-        //   ]);
-        //   this.refashMsg(roleMsg1.list);
-        //   break;
+        case "attackentity":
+          mapSetFunc.init(res);
+          this.setUpdateHistoryInFor(obj, res.msg);
+          if (res.data.length === 1) {
+            var roleMsg = msgData.getAffairsData([
+              { type: "text", val: res.data[0].targetinfo },
+            ]);
+            this.refashMsg(roleMsg.list);
+          } else {
+            const markData = res.data
+              .map((item) => `| ${item.name} | ${item.targetinfo} |`)
+              .join("\n");
+            let markAttr = `| 鍚嶇О | 灞炴�т俊鎭� |\n|------|------|\n` + markData;
+            var roleMsg = msgData.getMdData("markdown", markAttr);
+            this.refashMsg(roleMsg.list);
+          }
+          break;
+        case "getRelatedEntity":
+          this.setUpdateHistoryInFor(obj, res.msg);
+          this.handleRelationData(res.data);
+          var roleMsg = msgData.getAffairsData([
+            { type: "text", val: "椤甸潰宸叉樉绀�" },
+          ]);
+          this.refashMsg(roleMsg.list);
+          break;
+        default:
+          this.setUpdateHistoryInFor(obj, res.msg);
+          var roleMsg1 = msgData.getAffairsData([
+            { type: "text", val: res.msg },
+          ]);
+          this.refashMsg(roleMsg1.list);
+          break;
       }
     },
     setUpdateHistoryInFor(obj, message) {
@@ -575,6 +592,76 @@
       this.loading = false;
       this.list[this.list.length - 1].list = res;
     },
+    //鍏崇郴鏁版嵁澶勭悊
+    handleRelationData(data) {
+      // 鍑嗗鑺傜偣鍜岃竟
+      let graphData = [];
+      let links = [];
+      // 澶勭悊涓荤被鍨�(mainType)
+      Object.keys(data.mainType).forEach((main) => {
+        graphData.push({
+          name: main,
+          category: "mainType",
+          symbolSize: 70,
+          itemStyle: {
+            color: "#4169E1",
+          },
+        });
+
+        data.mainType[main].forEach((sec) => {
+          graphData.push({
+            name: sec,
+            category: "secType",
+            symbolSize: 60,
+            itemStyle: {
+              color: "#87CEFA",
+            },
+          });
+
+          // 澶勭悊瀛愮被鍨�(secType)
+          if (data.secType[sec]) {
+            data.secType[sec].forEach((sub) => {
+              graphData.push({
+                name: sub,
+                category: "subType",
+                symbolSize: 50,
+                itemStyle: {
+                  color: "#30ECA6",
+                },
+              });
+
+              // 澶勭悊鍏蜂綋椤�(subtype)
+              if (data.subtype[sub]) {
+                data.subtype[sub].forEach((item) => {
+                  graphData.push({
+                    name: item.name,
+                    category: "subTypeItem",
+                    symbolSize: 50,
+                    itemStyle: {
+                      color: "#00BFFF",
+                    },
+                    uuid: item.uuid,
+                    lontitude: item.lontitude,
+                    lattitude: item.lattitude,
+                  });
+                  links.push({ source: sub, target: item.name });
+                });
+              }
+              // 鐖跺瓙鑺傜偣杩炴帴
+              links.push({ source: sec, target: sub });
+            });
+          }
+          // 鐖跺瓙鑺傜偣杩炴帴
+          links.push({ source: main, target: sec });
+        });
+      });
+      console.log("nodes---", graphData, "links---", links);
+      this.$store.state.showRelationBox = true;
+      this.$store.state.relationData = {
+        nodes: graphData,
+        links: links,
+      };
+    },
   },
 };
 </script>
diff --git a/src/views/mapView/mapView.vue b/src/views/mapView/mapView.vue
index 0133e4e..e035c8c 100644
--- a/src/views/mapView/mapView.vue
+++ b/src/views/mapView/mapView.vue
@@ -14,10 +14,11 @@
         <button @click="setQueryErroInfo(true)">璇㈤棶</button>
         <button @click="setQueryErroInfo(false)">鍏抽棴</button>
       </div>
-    </div> 
-    <!-- <!-- <img :src="http://localhost:12315/image/1.jpg" />   -->
-    
-    <!-- <img :src="$store.state.ImageUrl" style="width:100%;height:50%"> -->
+    </div>
+
+    <div class="relationBox" v-if="$store.state.showRelationBox">
+      <div class="chartBox" id="relationChart"></div>
+    </div>
   </div>
 </template>
 
@@ -26,6 +27,8 @@
 import mapView from "./../../assets/js/map/mapView.js";
 import bus from "./../../assets/js/bus.js";
 import mapServer from "../../assets/js/map/mapServer.js";
+import * as echarts from "echarts";
+// import { nextTick } from "vue/types/umd";
 export default {
   data() {
     return {
@@ -34,46 +37,55 @@
       lengedList: [
         {
           name: "鍐涗簨鐩爣",
-          color: "#73afff"
+          color: "#73afff",
         },
         {
           name: "鏀挎不鐩爣",
-          color: "#fffd72"
+          color: "#fffd72",
         },
         {
           name: "缁忔祹鐩爣",
-          color: "#fabc56"
+          color: "#fabc56",
         },
         {
           name: "绀句細鐩爣",
-          color: "#272424"
+          color: "#272424",
         },
         {
           name: "姘戝畢",
-          color: "#979696"
-        }
-      ]
+          color: "#979696",
+        },
+      ],
     };
   },
   computed: {
     erroInfo() {
       return this.$store.state.erroInfoMessage;
-    }
+    },
+    relationInfo() {
+      return this.$store.state.relationData;
+    },
   },
   watch: {
     erroInfo(nVal, Oval) {
       if (nVal) {
         this.setErrorMessage(nVal);
       }
-    }
+    },
+    relationInfo(data, Oval) {
+      if (data) {
+        setTimeout(() => {
+          this.initChart(data);
+        }, 500);
+      }
+    },
   },
   methods: {
     getBackgroundColor(res) {
-      return `background-color: ${res.color};`
+      return `background-color: ${res.color};`;
     },
     setMapViewStart() {
       mapView.initMap();
-
     },
     setErrorMessage(res) {
       this.errInfoMessage = res;
@@ -87,21 +99,87 @@
         const obj = JSON.parse(JSON.stringify(this.errInfoMessage));
         bus.$emit("mapInfo", {
           type: "erroInfo",
-          value: obj.val
+          value: obj.val,
         });
-
       }
       this.$nextTick(() => {
         this.errInfoFlag = false;
         document.getElementById("inforMessage").innerHTML = "";
         this.errInfoMessage = null;
       });
-    }
+    },
+    initChart(data) {
+      let dom = document.getElementById("relationChart");
+      let myChart = echarts.init(dom);
+      const option = {
+        tooltip: {},
+        series: [
+          {
+            type: "graph",
+            layout: "force",
+            data: data.nodes,
+            links: data.links,
+            symbolSize: function (size) {
+              return size;
+            },
+            roam: true, // 鍚敤缂╂斁鍜屾嫋鎷�
+            label: {
+              show: true,
+              textStyle: {
+                fontSize: 13,
+                color: "#fff",
+              },
+            },
+            force: {
+              repulsion: 500,
+            },
+            edgeSymbol: ["none", "arrow"], //绾�2澶存爣璁�
+            lineStyle: {
+              opacity: 1,
+              width: 1,
+              curveness: 0,
+              color: "#fff",
+              type: "dashed",
+            },
+          },
+        ],
+      };
+      if (option && typeof option === "object") {
+        myChart.setOption(option);
+      }
+      window.addEventListener("resize", myChart.resize);
+      const that = this;
+      myChart.on("click", function (params) {
+        //瀹氫綅鍒板搴斿疄浣�
+        if (params.data.uuid) {
+          that.flyToEntity(params.data);
+        }
+      });
+    },
+    flyToEntity(entity) {
+      const modelLayer = mapServer.listData.filter((obj) => {
+        if (obj.name == config.modelLayer) {
+          return obj;
+        }
+      });
+      modelLayer[0].layer.style = new Cesium.Cesium3DTileStyle({
+        color: {
+          evaluateColor: (feature) => {
+            const id = feature.getProperty("id");
+            if (id.indexOf(entity.uuid) > -1) {
+              console.log("id**********", id);
+              return new SmartEarth.Cesium.Color.fromCssColorString("#FF0000");
+            }
+          },
+        },
+      });
+      earthCtrl.camera.flyTo(entity.lontitude, entity.lattitude, 3000, 0, -90, 0, 2);
+    },
   },
 
   mounted() {
     this.setMapViewStart();
-  }
+  },
 };
 </script>
 
@@ -110,14 +188,13 @@
   width: 100%;
   height: 100%;
   position: absolute;
- 
 }
 
 .mapLenged {
   position: absolute;
   z-index: 40;
   border: 1px solid #808080;
-  background: rgba(255, 255, 255, .7);
+  background: rgba(255, 255, 255, 0.7);
   padding: 4px;
   bottom: 20px;
   left: 20px;
@@ -130,7 +207,6 @@
   align-items: center;
   margin-left: 10px;
   font-size: 16px;
-
 }
 
 .mapLenged li {
@@ -182,6 +258,22 @@
   line-height: normal;
   font-size: 12px;
 }
+
+.relationBox {
+  position: absolute;
+  z-index: 40;
+  background: rgba(0, 0, 0, 0.4);
+  padding: 4px;
+  top: 20px;
+  left: 20px;
+  width: 95%;
+  height: 50%;
+  width: 45vw;
+}
+.chartBox {
+  width: 100%;
+  height: 100%;
+}
 </style>
 <style>
 .infoTitle {
diff --git a/vue.config.js b/vue.config.js
index d88092c..2a781ef 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -52,6 +52,7 @@
       assetFilter: function (assetFilename) {
         return assetFilename.endsWith(".js") || assetFilename.endsWith(".css");
       }
-    }
+    },
+    devtool:"source map"
   }
 };

--
Gitblit v1.9.3