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