From ee07b9f5e0ca5344bf5b78fcf87355d065d8c2b7 Mon Sep 17 00:00:00 2001
From: yxl <584911253@qq.com>
Date: 星期一, 10 二月 2025 11:22:21 +0800
Subject: [PATCH] commit

---
 src/views/chartView/index.vue |  416 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 376 insertions(+), 40 deletions(-)

diff --git a/src/views/chartView/index.vue b/src/views/chartView/index.vue
index d566150..f8c4d64 100644
--- a/src/views/chartView/index.vue
+++ b/src/views/chartView/index.vue
@@ -22,12 +22,14 @@
   getAgentIntention,
   getAgentLayerList,
   getAgentThistorySave,
+  getRagAgentIntention,
 } from "../../api/api.js";
 import mapSetFunc from "../../assets/js/mapSetFunc.js";
 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";
+import { marked } from "marked";
 export default {
   name: "jwChat",
 
@@ -50,6 +52,7 @@
         dept: "鏈�绠�鍗曘�佹渶渚挎嵎",
         callback: this.bindCover,
       },
+      closeMap: false,
     };
   },
   computed: {
@@ -130,7 +133,10 @@
         // 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);
           if (val.session_id == this.uuid) {
@@ -201,51 +207,210 @@
       }
     },
     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 = {
-        message: res,
+        message: res.replace(/\s+/g, ""),
         lib_id: "No1",
         session_id: this.uuid.toString(),
       };
 
-      var obj = {
-        ai: "",
-        create_time: msgData.getDate1(),
-        human: res,
-        sessionid: this.uuid,
-        update_time: "",
-        userid: 0,
-      };
+      if (formData.message.indexOf("@map") > -1) {
+        var obj = {
+          ai: "",
+          create_time: msgData.getDate1(),
+          human: res,
+          sessionid: this.uuid,
+          update_time: "",
+          userid: 0,
+        };
+        getAgentThistorySave(obj).then((response) => {
+          if (response.code == 200) {
+            obj.id = response.id;
+            this.obj = obj;
+          }
+          this.setAgentIntention(obj, formData);
+        });
+      } else {
+        this.setRagAgentIntention(formData);
+      }
 
-      getAgentThistorySave(obj).then((response) => {
-        if (response.code == 200) {
-          obj.id = response.id;
-          this.obj = obj;
-        }
-
-        this.setAgentIntention(obj, formData);
-      });
+      // var obj = {
+      //   ai: "",
+      //   create_time: msgData.getDate1(),
+      //   human: res,
+      //   sessionid: this.uuid,
+      //   update_time: "",
+      //   userid: 0,
+      // };
+      // getAgentThistorySave(obj).then((response) => {
+      //   if (response.code == 200) {
+      //     obj.id = response.id;
+      //     this.obj = obj;
+      //   }
+      //   this.setAgentIntention(obj, formData);
+      // });
     },
+    //鍦板浘鐩稿叧闂瓟
     async setAgentIntention(obj, formData) {
-      getAgentIntention(formData).then((response) => {
-        if (response.code != 200) {
+      console.log("obj", formData);
+      if (formData.message.indexOf("@map") > -1) {
+        getAgentIntention(formData)
+          .then((response) => {
+            if (response.code != 200) {
+              if (formData.message != "@map") {
+                var rolMsg = [
+                  {
+                    type: "text",
+                    val: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�",
+                  },
+                ];
+                this.refashMsg(rolMsg);
+              }
+              return;
+            }
+            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: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�",
+              },
+            ];
+            this.refashMsg(rolMsg);
+          });
+      } else {
+        getRagAgentIntention(formData).then((res) => {});
+      }
+      // getAgentIntention(formData)
+      //   .then((response) => {
+      //     if (response.code != 200) {
+      //       if (formData.message != "@map") {
+      //         var rolMsg = [
+      //           {
+      //             type: "text",
+      //             val: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�",
+      //           },
+      //         ];
+      //         this.refashMsg(rolMsg);
+      //       }
+      //       return;
+      //     }
+      //     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: "鎶辨瓑锛屾湇鍔″櫒浼间箮鍑轰簡鐐归棶棰橈紝鎴戜滑姝e湪淇涓��",
+      //       },
+      //     ];
+      //     this.refashMsg(rolMsg);
+      //   });
+    },
+    //鏅�氬璇濋棶绛�
+    async setRagAgentIntention(formData) {
+      try {
+        // 鍙戦�佽姹�
+        const params = new URLSearchParams(formData);
+        const url = `/rag-api/rag?${params.toString()}`;
+        let response = await fetch(url, {
+          method: "get",
+          responseType: "stream",
+          headers: {
+            "Content-Type": "application/json",
+          },
+        });
+        // ok瀛楁鍒ゆ柇鏄惁鎴愬姛鑾峰彇鍒版暟鎹祦
+        if (!response.ok) {
           var rolMsg = [
             {
               type: "text",
@@ -255,16 +420,53 @@
           this.refashMsg(rolMsg);
           return;
         }
-
-        const type = response.type;
-        if (type == "Map") {
-          this.setMapfunc(response.content, obj);
-        } else if (type == "Rag") {
-          this.setMapRag(response, obj);
-        } else {
-          this.setMapfunc(response.content, obj);
+        // 鐢ㄦ潵鑾峰彇涓�涓彲璇荤殑娴佺殑璇诲彇鍣紙Reader锛変互娴佺殑鏂瑰紡澶勭悊鍝嶅簲浣撴暟鎹�
+        const reader = response.body.getReader();
+        // 灏嗘祦涓殑瀛楄妭鏁版嵁瑙g爜涓烘枃鏈瓧绗︿覆
+        const textDecoder = new TextDecoder();
+        let result = true;
+        let sendMsg = true;
+        let sqlValue = "";
+        while (result) {
+          // done琛ㄧず娴佹槸鍚﹀凡缁忓畬鎴愯鍙�  value鍖呭惈璇诲彇鍒扮殑鏁版嵁鍧�
+          const { done, value } = await reader.read();
+          if (done) {
+            result = false;
+            break;
+          }
+          let resText = textDecoder.decode(value);
+          //鍖呭惈<think>鍋滄杈撳嚭
+          //鍖呭惈</think>缁х画杈撳嚭
+          console.log(resText, "杩斿洖鐨勬暟鎹�");
+          if (resText.indexOf("<think>") > -1) {
+            sendMsg = false;
+          }
+          if (resText.indexOf("</think>") > -1) {
+            sendMsg = true;
+            let position = resText.indexOf('</think>');
+            resText = resText.substring(position + "</think>".length);
+          }
+          if (sendMsg) {
+            sqlValue += resText;
+            var rolMsg = [
+              {
+                type: "stream",
+                val: marked(sqlValue),
+              },
+            ];
+            this.refashMsg(rolMsg);
+          }
         }
-      });
+        // console.log(sqlValue, "杈撳嚭鎵�鏈夎繑鍥炴暟鎹�");
+      } catch (err) {
+        var rolMsg = [
+          {
+            type: "text",
+            val: "鏈煡璇㈠埌鐩稿叧淇℃伅銆�",
+          },
+        ];
+        this.refashMsg(rolMsg);
+      }
     },
     setMapfunc(res, obj) {
       this.$store.state.showLenged = false;
@@ -279,7 +481,6 @@
           } else {
             roleMsg = msgData.getAffairsData([{ type: "text", val: res.msg }]);
           }
-
           this.refashMsg(roleMsg.list);
           break;
         case "queryMeta":
@@ -322,7 +523,6 @@
           var roleMsg = msgData.getAffairsData([
             { type: "text", val: "鍦板浘宸叉樉绀�" },
           ]);
-          console.log("roleMsg----", roleMsg);
           this.refashMsg(roleMsg.list);
           break;
         case "aroundPoi":
@@ -366,6 +566,47 @@
           };
           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);
@@ -394,6 +635,31 @@
           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:
@@ -467,6 +733,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>

--
Gitblit v1.9.3