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

---
 src/views/chartView/index.vue |  487 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 382 insertions(+), 105 deletions(-)

diff --git a/src/views/chartView/index.vue b/src/views/chartView/index.vue
index cdf71d4..5d12549 100644
--- a/src/views/chartView/index.vue
+++ b/src/views/chartView/index.vue
@@ -1,7 +1,12 @@
 <template>
   <div class="chartBox">
     <div class="ChartBox">
-      <JwChat-index :taleList="list" @enter="bindEnter" v-model="inputMsg" :toolConfig="tool">
+      <JwChat-index
+        :taleList="list"
+        @enter="bindEnter"
+        v-model="inputMsg"
+        :toolConfig="tool"
+      >
       </JwChat-index>
     </div>
   </div>
@@ -12,9 +17,14 @@
 import msgData from "../../assets/js/msg/msgData";
 import store from "../../store";
 import bus from "./../../assets/js/bus.js";
-import { getAgentThistoryUpdate, getAgentIntention, getAgentLayerList, getAgentThistorySave } from "../../api/api.js";
+import {
+  getAgentThistoryUpdate,
+  getAgentIntention,
+  getAgentLayerList,
+  getAgentThistorySave,
+} from "../../api/api.js";
 import mapSetFunc from "../../assets/js/mapSetFunc.js";
-import { nanoid } from 'nanoid'
+import { nanoid } from "nanoid";
 import mapServer from "../../assets/js/map/mapServer.js";
 import mapImg from "../../assets/js/map/mapImg.js";
 import mapModel from "../../assets/js/map/mapModel.js";
@@ -32,20 +42,21 @@
       obj: null,
       tool: {
         show: ["file", "history", "img"],
-        callback: this.toolEvent
+        callback: this.toolEvent,
       },
       config: {
         img: "/image/cover.png",
         name: "JwChat",
         dept: "鏈�绠�鍗曘�佹渶渚挎嵎",
-        callback: this.bindCover
-      }
+        callback: this.bindCover,
+      },
+      closeMap: false,
     };
   },
   computed: {
     Obj() {
       return store.state.setMsgData;
-    }
+    },
   },
   watch: {
     Obj(newVal, oldVal) {
@@ -63,7 +74,7 @@
           this.list[this.list.length - 1].text = newVal;
         }
       }
-    }
+    },
   },
   mounted() {
     this.uuid = nanoid();
@@ -78,7 +89,6 @@
     // modelLayer.init();
     setTimeout(() => {
       this.getMsg("ai", "鎮ㄥソ锛岃杈撳叆鎸囦护");
-
     }, 1000);
 
     bus.$on("mapInfo", (res) => {
@@ -107,46 +117,53 @@
     createSocket() {
       this.wsSocket = new WebSocket(config.wsHost);
       this.wsSocket.onopen = (event) => {
-        console.log('WebSocket杩炴帴鎴愬姛');
+        console.log("WebSocket杩炴帴鎴愬姛");
         //瀹氭椂浠诲姟锛岀敱浜庝娇鐢╪ginx鍙嶅悜浠g悊锛�60绉掓棤鏁版嵁浼犺緭浼氭柇寮�
         var timer = setInterval(() => {
-          if ( this.wsSocket.readyState == 1) {
+          if (this.wsSocket.readyState == 1) {
             this.wsSocket.send("蹇冭烦鍖呮娴�");
           } else {
             //IM杩炴帴宸叉柇寮�
           }
         }, 50 * 1000);
-
       };
       this.wsSocket.onmessage = (event) => {
         // console.log('Received message:', event.data);
         console.log(event);
 
-        if (event.data != "杩炴帴鎴愬姛") {
+        if (
+          event.data != "杩炴帴鎴愬姛" ||
+          event.data.indexOf("鏀跺埌娑堟伅锛屾秷鎭唴瀹癸細蹇冭烦鍖呮娴�") <= 0
+        ) {
           console.log(event.data);
-          const val = JSON.parse(event.data)
+          const val = JSON.parse(event.data);
           if (val.session_id == this.uuid) {
-            this.setMapfunc(val, this.obj)
+            this.setMapfunc(val, this.obj);
           }
         }
-
-      }
+      };
     },
     async getQueryLayerList() {
-      getAgentLayerList().then(response => {
+      const item = {
+        sourceType: "Tileset",
+        name: "MilitaryFacilities",
+        url: "/data-api/gisserver/c3dserver/sedb_DESKTOP-15DOTHJ_SEM4550/tileset.json",
+      };
+      setTimeout(() => {
+        mapServer.addServer(item);
+      }, 1000);
+      return;
+      getAgentLayerList().then((response) => {
         if (response.code != 200) return;
         const items = response.data;
         for (var i in items) {
           const name = items[i].name;
-          if (
-            name != "FW20" && name != "FW12"
-          ) {
-            mapServer.addServer(items[i])
+          if (name != "FW20" && name != "FW12") {
+            console.log("items[i]", items[i]);
+            mapServer.addServer(items[i]);
           }
-
         }
-
-      })
+      });
     },
     bindEnter() {
       const msg = this.inputMsg;
@@ -173,7 +190,9 @@
         2
       );
       mapImg.addImageLayer();
-      var roleMsg1 = msgData.getAffairsData([{ type: "text", val: "鐩稿叧淇℃伅宸插湪鍦板浘灞曠ず" }]);
+      var roleMsg1 = msgData.getAffairsData([
+        { type: "text", val: "鐩稿叧淇℃伅宸插湪鍦板浘灞曠ず" },
+      ]);
       this.refashMsg(roleMsg1.list);
     },
     getMsg(type, msg) {
@@ -186,98 +205,155 @@
       }
     },
     async setMsgStart(res) {
+      console.log("res----", res);
+      //杈撳叆@map鎵撳紑鍦板浘
+      if (res == "@map") {
+        var rolMsg = [
+          {
+            type: "text",
+            val: "鍦板浘宸叉墦寮�",
+          },
+        ];
+        this.refashMsg(rolMsg);
+        //鎵撳紑鍦板浘
+        this.$store.state.setScreenFlag = true;
+        this.closeMap = true;
+        earthCtrl.viewer.camera.flyTo({
+          destination: {
+            x: -1803769.3854512463,
+            y: 29158371.286777183,
+            z: 13465105.223495383,
+          },
+          orientation: {
+            heading: 6.283185307179586,
+            pitch: -1.5707963267948966,
+            roll: 0,
+          },
+        });
+      }
+      //鏈塵ap鍏抽敭瀛楀畾浣�
+      else if (res.indexOf("@map") > -1) {
+        this.closeMap = true;
+        window.earthCtrl.camera.flyTo(
+          121.5898036178841,
+          23.93799083591751,
+          2732.163687177577,
+          4.501790216143808,
+          -32.230361363631324,
+          0.001313831409284339,
+          2
+        );
+      }
       mapImg.removeInit();
       mapSetFunc.removeAll();
       this.$store.state.setListColor = [];
       this.$store.state.showLenged = false;
-      window.earthCtrl.camera.flyTo(
-        121.5898036178841,
-        23.93799083591751,
-        2732.163687177577,
-        4.501790216143808,
-        -32.230361363631324,
-        0.001313831409284339,
-        2
-      );
+      this.$store.state.showRelationBox = false;
 
-      const formData = new FormData();
-      formData.append("message", res);
-      formData.append("lib_id", "No1");
-      formData.append("session_id", this.uuid.toString());
+      // const formData = new FormData();
+      // formData.append("message", res);
+      // formData.append("lib_id", "No1");
+      // formData.append("session_id", this.uuid.toString());
+      const formData = {
+        message: res,
+        lib_id: "No1",
+        session_id: this.uuid.toString(),
+      };
 
       var obj = {
-        "ai": "",
-        "create_time": msgData.getDate1(),
-        "human": res,
-        "sessionid": this.uuid,
-        "update_time": "",
-        "userid": 0
-      }
+        ai: "",
+        create_time: msgData.getDate1(),
+        human: res,
+        sessionid: this.uuid,
+        update_time: "",
+        userid: 0,
+      };
 
-      getAgentThistorySave(
-        obj
-      ).then(response => {
-
+      getAgentThistorySave(obj).then((response) => {
         if (response.code == 200) {
           obj.id = response.id;
           this.obj = obj;
         }
 
-        this.setAgentIntention(obj, formData)
-      })
-
-
-
-
+        this.setAgentIntention(obj, formData);
+      });
     },
     async setAgentIntention(obj, formData) {
-      getAgentIntention(formData).then((response) => {
+      console.log("obj", formData);
+      getAgentIntention(formData)
+        .then((response) => {
+          if (response.code != 200) {
+            if (formData.message != "@map") {
+              var rolMsg = [
+                {
+                  type: "text",
+                  val: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�",
+                },
+              ];
+              this.refashMsg(rolMsg);
+            }
+            return;
+          }
 
-        if (response.code != 200) {
+          const type = response.type;
+          //鏅�氬璇濅俊鎭煡璇�
+          if (type == "message" || type == "Rag") {
+            //鍏抽棴鍦板浘
+            if (!this.closeMap) {
+              this.$store.state.setScreenFlag = false;
+            }
+            var rolMsg = [
+              {
+                type: "text",
+                val: type == "Rag" ? response.content : response.msg,
+              },
+            ];
+            this.refashMsg(rolMsg);
+          }
+          //鍦板浘鏌ヨ
+          else {
+            //鎵撳紑鍦板浘
+            this.$store.state.setScreenFlag = true;
+            this.setMapfunc(response.content, obj);
+          }
+        })
+        .catch((error) => {
           var rolMsg = [
             {
               type: "text",
-              val: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�"
-            }
+              val: "鎶辨瓑锛屾湇鍔″櫒浼间箮鍑轰簡鐐归棶棰橈紝鎴戜滑姝e湪淇涓��",
+            },
           ];
           this.refashMsg(rolMsg);
-          return;
-        }
-
-
-        const type = response.type;
-        if (type == "Map") {
-          this.setMapfunc(response.content, obj);
-        } else if (type == "Rag") {
-          this.setMapRag(response, obj);
-        }
-      });
+        });
     },
     setMapfunc(res, obj) {
       this.$store.state.showLenged = false;
-
       switch (res.func) {
         case "queryRelationship":
-
           var roleMsg = null;
           if (res.data) {
-            mapSetFunc.init(res)
+            mapSetFunc.init(res);
             var a = `${res.msg}`;
             this.setUpdateHistoryInFor(obj, a);
             roleMsg = msgData.getMdData("markdown", a);
           } else {
             roleMsg = msgData.getAffairsData([{ type: "text", val: res.msg }]);
-
           }
-
           this.refashMsg(roleMsg.list);
           break;
         case "queryMeta":
-          var a = `${res.data}`;
+          // var a = `|鏁版嵁绫诲瀷 |鏁版嵁閲� |\n|------|------|\n|鍐涗簨鐩爣 |724|\n|`//`${res.data}`;
+          const subData = res.data
+            .filter((item) => item.subtype !== null)
+            .map((item) => `| ${item.subtype} | ${item.count} |`)
+            .join("\n");
+          var a = `| 鏁版嵁绫诲瀷 | 鏁版嵁閲� |\n|------|------|\n` + subData;
+          console.log("aaa", subData, a);
           this.setUpdateHistoryInFor(obj, a);
           var roleMsg = msgData.getMdData("markdown", a);
           this.refashMsg(roleMsg.list);
-          mapSetFunc.init(res)
+          mapSetFunc.init(res);
           break;
         case "combatSimulate":
           this.setMsgStart2();
@@ -287,11 +363,9 @@
           this.refashMsg(roleMsg1.list);
           break;
         case "batEnv":
-
           if (res.msg) {
             var a = `${res.msg}`;
             var roleMsg = msgData.getMdData("markdown", a);
-
 
             roleMsg.list[0].link = true;
 
@@ -303,15 +377,155 @@
 
           break;
         case "poiMap":
-        case "aroundPoi":
-          mapSetFunc.init(res)
+          mapSetFunc.init(res);
           this.setUpdateHistoryInFor(obj, res.msg);
-          var roleMsg = msgData.getAffairsData([{ type: "text", val: res.msg }]);
+          var roleMsg = msgData.getAffairsData([
+            { type: "text", val: "鍦板浘宸叉樉绀�" },
+          ]);
+          this.refashMsg(roleMsg.list);
+          break;
+        case "aroundPoi":
+          let dataList = [
+            {
+              type: "鍙墦鍑荤洰鏍�",
+              color: "#FF3366",
+              list: [],
+            },
+            {
+              type: "涓嶅彲鎵撳嚮鐩爣",
+              color: "#33FF66",
+              list: [],
+            },
+            {
+              type: "鍏朵粬",
+              color: "#3366FF",
+              list: [],
+            },
+          ];
+          res.data.forEach((item) => {
+            if (item.ifstrike === "1") {
+              dataList[0].list.push(item.uuid);
+            } else if (item.ifstrike === "2") {
+              dataList[1].list.push(item.uuid);
+            } else {
+              dataList[2].list.push(item.uuid);
+            }
+          });
+          const resultData = dataList
+            .map((item) => `| ${item.type} | ${item.list.length} |`)
+            .join("\n");
+          var a = `| 鏁版嵁绫诲瀷 | 鏁版嵁閲� |\n|------|------|\n` + resultData;
+          console.log("aaa", a);
+          this.setUpdateHistoryInFor(obj, a);
+          var roleMsg = msgData.getMdData("markdown", a);
+          this.refashMsg(roleMsg.list);
+          const finalData = {
+            func: "aroundPoi",
+            data: dataList,
+          };
+          mapSetFunc.init(finalData);
+          break;
+        case "getStrike":
+          let dataList1 = [
+            {
+              type: "鍙墦鍑荤洰鏍�",
+              color: "#FF3366",
+              list: [],
+            },
+            {
+              type: "涓嶅彲鎵撳嚮鐩爣",
+              color: "#33FF66",
+              list: [],
+            },
+            {
+              type: "鍏朵粬",
+              color: "#3366FF",
+              list: [],
+            },
+          ];
+          res.data.forEach((item) => {
+            if (item.ifstrike === "1") {
+              dataList1[0].list.push(item.uuid);
+            } else if (item.ifstrike === "2") {
+              dataList1[1].list.push(item.uuid);
+            } else {
+              dataList1[2].list.push(item.uuid);
+            }
+          });
+          const resultData1 = dataList1
+            .map((item) => `| ${item.type} | ${item.list.length} |`)
+            .join("\n");
+          var a = `| 鏁版嵁绫诲瀷 | 鏁版嵁閲� |\n|------|------|\n` + resultData1;
+          console.log("aaa", a);
+          this.setUpdateHistoryInFor(obj, a);
+          var roleMsg = msgData.getMdData("markdown", a);
+          this.refashMsg(roleMsg.list);
+          const finalData1 = {
+            func: "aroundPoi",
+            data: dataList1,
+          };
+          mapSetFunc.init(finalData1);
+          break;
+        case "getParam":
+          mapSetFunc.init(res);
+          console.log("res.data.targetinfo", 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 "aroundPoi_2":
+          mapSetFunc.init(res);
+          console.log("res.data.targetinfo", res);
+          const resData = res.data
+            .map((item) => `| ${item.name} | ${item.targetinfo} |`)
+            .join("\n");
+          var attr = `| 鍚嶇О | 灞炴�т俊鎭� |\n|------|------|\n` + resData;
+          console.log("aaa", attr);
+          var roleMsg = msgData.getMdData("markdown", attr);
+          this.setUpdateHistoryInFor(obj, res.msg);
+          this.refashMsg(roleMsg.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 }]);
+          var roleMsg1 = msgData.getAffairsData([
+            { type: "text", val: res.msg },
+          ]);
           this.refashMsg(roleMsg1.list);
           break;
       }
@@ -319,10 +533,9 @@
     setUpdateHistoryInFor(obj, message) {
       obj.ai = message;
       obj.update_time = msgData.getDate1();
-      getAgentThistoryUpdate(obj).then(response => {
+      getAgentThistoryUpdate(obj).then((response) => {
         console.log(response);
-
-      })
+      });
     },
     setMapRag(res, objRes) {
       const val = res.content.split("\n");
@@ -331,8 +544,8 @@
         if (val[i]) {
           obj.push({
             type: "text",
-            val: val[i]
-          })
+            val: val[i],
+          });
         }
       }
       var listData = [];
@@ -340,52 +553,116 @@
         var obj_file = res.fileSrource;
         for (var i = 0; i < obj_file.length; i++) {
           const file_name = obj_file[i].metadata.split("/");
-          const name = file_name[file_name.length - 1]
+          const name = file_name[file_name.length - 1];
           if (listData.length == 0) {
             listData.push({
               name: name,
-              val: [
-                obj_file[i].page_content
-              ]
-            })
+              val: [obj_file[i].page_content],
+            });
           } else {
             var boolen = false;
             for (var k in listData) {
               if (listData[k].name == name) {
                 boolen = true;
-                listData[k].val.push(obj_file[i].page_content)
+                listData[k].val.push(obj_file[i].page_content);
               }
             }
             if (boolen == false) {
               listData.push({
                 name: name,
-                val: [
-                  obj_file[i].page_content
-                ]
-              })
+                val: [obj_file[i].page_content],
+              });
             }
-
           }
         }
       }
       if (listData.length > 0) {
         obj.push({
           type: "fileSrource",
-          val: listData
-        })
+          val: listData,
+        });
       }
 
       var roleMsg = msgData.getAffairsData(obj);
 
       this.setUpdateHistoryInFor(objRes, JSON.stringify(roleMsg.list));
       this.refashMsg(roleMsg.list);
-
     },
     refashMsg(res) {
       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>
 <style scoped>

--
Gitblit v1.9.3