| | |
| | | import msgData from "../../assets/js/msg/msgData";
|
| | | import store from "../../store";
|
| | | import bus from "./../../assets/js/bus.js";
|
| | | import { getAIMessage, getV1Fastgpt } from "../../api/api.js";
|
| | | import { getAIMessage, getV1Fastgpt, getChartMessage } from "../../api/api.js";
|
| | | import { getQueryEentity } from "../../api/modelBase.js";
|
| | | import mapInfo from "../../assets/js/map/mapInfo.js";
|
| | | import axios from "axios";
|
| | | import layerJson from "../../assets/js/map/mapJsonLayer.js";
|
| | | import { factors } from "@turf/turf";
|
| | | import mapConfig from "../../assets/js/map/mapConfig.js";
|
| | | import { getToken } from "../../utils/auth.js";
|
| | | import modelLayer from "../../assets/js/map/modelLayer.js";
|
| | |
|
| | | export default {
|
| | | name: "jwChat",
|
| | |
|
| | |
| | | clearInterval(window.timer);
|
| | | window.timer = null;
|
| | | }
|
| | | // this.setLoading();
|
| | |
|
| | | setTimeout(() => {
|
| | | this.setMsgStart("您好");
|
| | | }, config.loadTime);
|
| | | this.getMsg("ai", "您好,我是GeoAgent,请问可以帮您做些什么?");
|
| | | }, 1000);
|
| | | setTimeout(() => {
|
| | | const obj = mapConfig.setJsonToMd([
|
| | | {
|
| | | h3: "警告: 苏比克湾区发现异常军事设施!"
|
| | | },
|
| | | {
|
| | | p: "异常代码: 4r5as5s001"
|
| | | },
|
| | | {
|
| | | p: "来源: XXX部"
|
| | | },
|
| | | {
|
| | | p: "发现时间: XX年XX月XX号XX日XX点XX分"
|
| | | }
|
| | | ]);
|
| | | var roleMsg = msgData.getJsonToMdData(obj);
|
| | | this.list.push(roleMsg);
|
| | | }, 3000);
|
| | | bus.$on("mapInfo", (res) => {
|
| | | if (res) {
|
| | | // this.setMapInfo(res);
|
| | |
| | | this.setMarkDownInfo(res);
|
| | | }
|
| | | });
|
| | | bus.$on("setRagMoreListAll", res => {
|
| | | bus.$on("setRagMoreListAll", (res) => {
|
| | | if (res) {
|
| | | this.setRagMoreList(res);
|
| | | }
|
| | |
| | | // });
|
| | | },
|
| | | methods: {
|
| | | getMd() {
|
| | | const obj = mapConfig.setJsonToMd();
|
| | | const length = this.list.length - 1;
|
| | | var roleMsg = msgData.getJsonToMdData(obj);
|
| | | this.list[length].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | },
|
| | | bindEnter() {
|
| | | const msg = this.inputMsg;
|
| | |
|
| | |
| | |
|
| | | this.setLoading();
|
| | | setTimeout(() => {
|
| | |
|
| | | this.setMsgStart(msg);
|
| | | }, 200);
|
| | | },
|
| | | async setMsgStart(res) {
|
| | | if (res.indexOf("军事目标") > -1 || res.indexOf("民宅") > -1 || res.indexOf("经济目标") > -1 || res.indexOf("海军陆战队") > -1 || res.indexOf("堤丰") > -1) {
|
| | | this.$store.state.setScreenFlag = true;
|
| | | this.list.splice(-1, 1);
|
| | | this.loading = false;
|
| | | layerJson.setQyeryData(res);
|
| | | getQueryGroupBy(layer, filed) {
|
| | | const layerId = modelLayer.layers.filter((item) => {
|
| | | if (item.name == layer) {
|
| | | return item;
|
| | | }
|
| | | });
|
| | | if (layerId.length <= 0) {
|
| | | return;
|
| | | }
|
| | | // else if(res.indexOf("苏比克湾") > -1){
|
| | | // this.$store.state.setScreenFlag = true;
|
| | | // this.list.splice(-1, 1);
|
| | | // this.loading = false;
|
| | | // this.$nextTick(() => {
|
| | | // setTimeout(() => {
|
| | | // mapInfo.setEntityQueryInput();
|
| | | // }, 1000);
|
| | | // });
|
| | | // } |
| | | else if (res == "三维实景") {
|
| | | const obj = [
|
| | | {
|
| | | type: "count",
|
| | | field: filed,
|
| | | outfield: "count_" + filed
|
| | | }
|
| | | ];
|
| | | return {
|
| | | layerid: layerId[0].id,
|
| | | dbid: modelLayer.dbid,
|
| | | token: getToken(),
|
| | | statistics: JSON.stringify(obj),
|
| | | containCount: true,
|
| | | groupby: filed
|
| | | };
|
| | | },
|
| | | async getQueryEentityGroupBy(res, filed, response, head) {
|
| | | const data = await getQueryEentity(res);
|
| | | const message = mapConfig.setScanList(data.data, filed, head);
|
| | |
|
| | | if (message) {
|
| | | if (this.loading) {
|
| | | this.loading = false;
|
| | | }
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | this.list[this.list.length - 1].list = message;
|
| | | } else {
|
| | | if (response.content) {
|
| | | this.getMsg("ai", response.content);
|
| | | } else {
|
| | | this.getMsg("ai", "稍后服务。。。");
|
| | | }
|
| | | }
|
| | | },
|
| | | async getQueryEentityDescription(res) {
|
| | | const std = [];
|
| | | const str = [];
|
| | | const data = await getQueryEentity({
|
| | | token: res.token,
|
| | | start: 1,
|
| | | count: 0,
|
| | | containCount: true,
|
| | | layerid: res.layerid,
|
| | | dbid: res.dbid
|
| | | });
|
| | | const items = data.data.items;
|
| | |
|
| | | items.map((rs) => {
|
| | | var name = rs["weaponname"];
|
| | | if (name) {
|
| | | var boolen = true;
|
| | | if (str.length == 0) {
|
| | | boolen = true;
|
| | | } else if (str.indexOf(name) > -1) {
|
| | | boolen = false;
|
| | | } else {
|
| | | boolen = true;
|
| | | }
|
| | | if (boolen) {
|
| | | const obj = mapConfig.setArrList(rs["descriptio"]);
|
| | | for (var i in obj) {
|
| | | std.push(obj[i]);
|
| | | }
|
| | | str.push(name);
|
| | | }
|
| | | }
|
| | | });
|
| | | const jstomd = mapConfig.setJsonToMd(std);
|
| | | const length = this.list.length - 1;
|
| | | var roleMsg = msgData.getJsonToMdData(jstomd);
|
| | | this.list[length].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | },
|
| | |
|
| | | async setMsgStart(res) {
|
| | | if (res == "定位到苏比克湾") {
|
| | | this.setQueryMapPlan('flyToSubicBayArea', null)
|
| | | } else if (res == "此区域有哪些武器系统") {
|
| | | this.setQueryMapPlan('displayWeaponSystem', null)
|
| | | } else if (res == "查询该区域内目标及分布") {
|
| | | this.setQueryMapPlan('searchTarget', null)
|
| | | }else if (res == "分析堤丰系统的性能和防御范围") {
|
| | | this.setQueryMapPlan('defenceRangeTyphoonSystem', null)
|
| | | } else if (res == "定位到美国空军指挥中心") {
|
| | | this.setQueryMapPlan('USAFCommandCenterQuery', null)
|
| | | } else if (res == "生成战场环境报告") {
|
| | | this.getUrlMd(config.reportMd, config.reportDocx)
|
| | | // axios.get("/Data/Report.html").then(response=>{
|
| | | // var roleMsg = msgData.getHTMLData(response.data);
|
| | | // this.list[this.list.length - 1].list = roleMsg.list;
|
| | | // this.loading = false;
|
| | | // })
|
| | | }
|
| | | else if (res.indexOf("055") > -1) {
|
| | | layerJson.setTitleSetRest();
|
| | | this.setV1Fastgpt(res)
|
| | | this.setV1Fastgpt(res);
|
| | | } else {
|
| | | const data = await getAIMessage(res);
|
| | | |
| | | if (data.code == 200) {
|
| | | if (data.content) {
|
| | | this.getMsg("ai", data.content);
|
| | | } else {
|
| | | this.getMsg("ai", "");
|
| | | }
|
| | |
|
| | | if (data.status == 200) {
|
| | | if (data.name) {
|
| | | this.$store.state.setScreenFlag = true;
|
| | | this.$nextTick(() => {
|
| | | setTimeout(() => {
|
| | | mapInfo.init(data.name);
|
| | | this.setQueryMapPlan(data.name, data);
|
| | | }, 1000);
|
| | | });
|
| | | } else {
|
| | | if (data.content) {
|
| | | this.getMsg("ai", data.content);
|
| | | this.list[this.list.length - 1].sourceValue = "2";
|
| | | } else {
|
| | | this.getMsg("ai", "");
|
| | | this.list[this.list.length - 1].sourceValue = "2";
|
| | | }
|
| | | }
|
| | | } else {
|
| | | if (data.content) {
|
| | | this.getMsg("ai", data.content);
|
| | | this.list[this.list.length - 1].sourceValue = "2";
|
| | | } else {
|
| | | if (data.length > 0) {
|
| | | this.setSourceList(data)
|
| | | } else {
|
| | | this.getMsg("ai", "稍后服务。。。");
|
| | | }
|
| | | // |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | },
|
| | | setSourceList(res) {
|
| | | const obj = res[0].quoteList
|
| | | var roleMsg = [
|
| | | {
|
| | | type: "text",
|
| | | val: "未查询到相关信息"
|
| | | }
|
| | | ];
|
| | |
|
| | | const length = this.list.length - 1;
|
| | |
|
| | | if (obj.length > 0) {
|
| | | this.$store.state.ragList.push({
|
| | | quest: res,
|
| | | index: length,
|
| | | val: obj
|
| | | });
|
| | | roleMsg = msgData.getRagData(obj[0], true, res);
|
| | | }
|
| | |
|
| | | this.list[length].list = roleMsg;
|
| | | this.loading = false;
|
| | | },
|
| | | getUrlMd(res, link) {
|
| | | axios.get(res).then(response => {
|
| | | if (response.status == 200) {
|
| | | var roleMsg = msgData.getJsonToMdData(response.data, link);
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | this.list[this.list.length - 1].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | } else {
|
| | | this.getMsg("ai", "稍后服务。。。");
|
| | | }
|
| | | })
|
| | | },
|
| | | setQueryMapPlan(res, response) {
|
| | | if (this.$store.state.setScreenFlag == false) {
|
| | | this.$store.state.setScreenFlag = true;
|
| | | }
|
| | | if (this.$store.state.showLenged) {
|
| | | this.$store.state.showLenged = false;
|
| | | }
|
| | |
|
| | | if (res != "weaponSystemParameters") {
|
| | | layerJson.setTitleSetRest();
|
| | | }
|
| | | mapInfo.setEntityQueryInput();
|
| | | switch (res) {
|
| | |
|
| | | case "flyToSubicBayArea":
|
| | | this.$store.state.setScreenFlag = true;
|
| | | mapInfo.setEntityQueryInput();
|
| | | this.getMsg("ai", "地图已显示");
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | break;
|
| | | case "displayWeaponSystem":
|
| | | mapInfo.setFlyTo({
|
| | | longitude: 120.26907736668211,
|
| | | latitude: 14.791708841800627,
|
| | | height: 1371.1909347746105
|
| | | });
|
| | | var obj = this.getQueryGroupBy("武器", "weaponname");
|
| | | // var table_head = ["武器名称", "数量", "出现时间"]
|
| | | // this.getQueryEentityGroupBy(obj, "weaponname", response, table_head);
|
| | |
|
| | | // this.getUrlMd("/Data/武器系统细化.md", null)
|
| | | axios.get("/Data/武器系统.html").then(response => {
|
| | | var roleMsg = msgData.getHTMLData(response.data);
|
| | | this.list[this.list.length - 1].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | })
|
| | | layerJson.setAddWfsJson();
|
| | | break;
|
| | | case "weaponSystemParameters":
|
| | | mapInfo.setFlyTo({
|
| | | longitude: 120.26907736668211,
|
| | | latitude: 14.791708841800627,
|
| | | height: 1371.1909347746105
|
| | | });
|
| | |
|
| | | if (response.weapons) {
|
| | | var name = "";
|
| | | if (response.weapons.indexOf("堤丰") > -1) {
|
| | | name = "堤丰";
|
| | | } else if (response.weapons.indexOf("圣安东尼奥级") > -1) {
|
| | | name = "圣安东尼奥级系统";
|
| | | } else if (response.weapons.indexOf("丹辘级") > -1) {
|
| | | name = "丹辘级系统";
|
| | | } else if (response.weapons.indexOf("C130") > -1) {
|
| | | name = "C130系统";
|
| | | } else if (response.weapons.indexOf("何塞黎刹") > -1) {
|
| | | name = "何塞黎刹级系统";
|
| | | } else if (response.weapons.indexOf("鱼鹰") > -1) {
|
| | | name = "鱼鹰系统";
|
| | | } else if (response.weapons.indexOf("先锋级") > -1) {
|
| | | name = "先锋级系统";
|
| | | } else if (response.weapons.indexOf("支奴干") > -1) {
|
| | | name = "支奴干系统";
|
| | | } else if (response.weapons.indexOf("黑鹰") > -1) {
|
| | | name = "黑鹰系统";
|
| | | }
|
| | | if (name) {
|
| | | const url = "/Data/" + name + ".md";
|
| | | this.getUrlMd(url, null)
|
| | | } else {
|
| | | this.getMsg("ai", response.content);
|
| | |
|
| | | }
|
| | | } else {
|
| | | this.getMsg("ai", response.content);
|
| | | }
|
| | | break;
|
| | | case "weaponParameters":
|
| | | var obj = this.getQueryGroupBy("武器", "description", response);
|
| | | this.getQueryEentityDescription(obj);
|
| | | break;
|
| | |
|
| | | case "searchTarget":
|
| | | var obj = this.getQueryGroupBy("建筑", "targettype");
|
| | |
|
| | | // 实体目标列表_1.html
|
| | | axios.get("/Data/实体目标列表_1.html").then(response => {
|
| | | var roleMsg = msgData.getHTMLData(response.data);
|
| | | this.list[this.list.length - 1].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | })
|
| | | // axios.get("/Data/战场环境.json").then(response=>{
|
| | | // var roleMsg =msgData.getJsonToHtml(response.data);
|
| | | // this.list[this.list.length - 1].list = roleMsg.list;
|
| | | // this.loading = false;
|
| | | // })
|
| | | // var table_head = ["目标类型", "数量"]
|
| | | // this.getQueryEentityGroupBy(obj, "targettype", response, table_head);
|
| | | var list = [
|
| | | {
|
| | | name: "军事目标",
|
| | | color: "#73afff"
|
| | | },
|
| | | {
|
| | | name: "政治目标",
|
| | | color: "#fffd72"
|
| | | },
|
| | | {
|
| | | name: "经济目标",
|
| | | color: "#fabc56"
|
| | | },
|
| | | {
|
| | | name: "社会目标",
|
| | | color: "#272424"
|
| | | },
|
| | | {
|
| | | name: "民宅",
|
| | | color: "#979696"
|
| | | }
|
| | | ];
|
| | | layerJson.setQueryByFiledList(list, 0);
|
| | | this.$store.state.showLenged = true;
|
| | | break;
|
| | | case "attackUSAFCommandCenter":
|
| | | var obj = "strikeable = 'TRUE'" + "";
|
| | | layerJson.setQueryByFiled(obj, "#FF0000", false);
|
| | | this.getMsg("ai", "相关信息已在地图模块展示");
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | break;
|
| | | case "USAFCommandCenterQuery":
|
| | | var obj = "ejfl like '%空军基地%'";
|
| | | layerJson.setQueryExtent2(obj, false);
|
| | | // this.getMsg("ai", "美国空军指挥中心,包含4座弹药库,11座油库,1座机库。");
|
| | | // this.getUrlMd("/Data/美国空军指挥中心.md", null)
|
| | | // this.list[this.list.length - 1].sourceValue = "1";
|
| | | // |
| | |
|
| | | axios.get("/Data/美国空军指挥中心.html").then(response => {
|
| | | var roleMsg = msgData.getHTMLData(response.data);
|
| | | this.list[this.list.length - 1].list = roleMsg.list;
|
| | | this.loading = false;
|
| | | })
|
| | | // |
| | | // |
| | | break;
|
| | | case "simulationAttack":
|
| | | var obj = "ejfl like '%空军基地%'";
|
| | | layerJson.setQueryExtent2(obj, true);
|
| | | this.getMsg("ai", "相关信息已在地图模块展示");
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | break;
|
| | | case "defenceRangeTyphoonSystem":
|
| | | const objName = "堤丰系统"
|
| | | var obj = "weaponname like '%" + objName + "%'" + "";
|
| | | layerJson.setQueryTF2(obj);
|
| | | this.getMsg("ai", "相关信息已在地图模块展示");
|
| | | this.list[this.list.length - 1].sourceValue = "1";
|
| | | this.getUrlMd("/Data/堤丰系统.md", null)
|
| | | break;
|
| | |
|
| | | default:
|
| | | mapInfo.init(res);
|
| | | if (response.content) {
|
| | | this.getMsg("ai", response.content);
|
| | | this.list[this.list.length - 1].sourceValue = "2";
|
| | | } else {
|
| | | this.getMsg("ai", "稍后服务。。。");
|
| | | }
|
| | | break;
|
| | | }
|
| | | },
|
| | |
|
| | | setRagMoreList(res) {
|
| | | const obj = this.$store.state.ragList
|
| | | const val_data = obj.filter(item => {
|
| | | const obj = this.$store.state.ragList;
|
| | | const val_data = obj.filter((item) => {
|
| | | if (item.quest === res) {
|
| | | return item;
|
| | | }
|
| | | });
|
| | | if (val_data.length <= 0) return
|
| | | if (val_data.length <= 0) return;
|
| | |
|
| | | this.$store.state.ragList = obj;
|
| | | const val_obj = val_data[0]
|
| | | const val_obj = val_data[0];
|
| | | const key = val_obj.index;
|
| | | const val = val_obj.val;
|
| | | this.list[key].list[0].more = false;
|
| | | var flag = 1;
|
| | | var intValTime = setInterval(() => {
|
| | | if (flag >= val.length) {
|
| | | const obj = JSON.parse(JSON.stringify(this.list))
|
| | | this.list = obj
|
| | | const obj = JSON.parse(JSON.stringify(this.list));
|
| | | this.list = obj;
|
| | | for (var i in obj) {
|
| | | if (obj[i].quest === res) {
|
| | | obj.splice(i, 1)
|
| | | obj.splice(i, 1);
|
| | | }
|
| | | }
|
| | |
|
| | | clearInterval(intValTime)
|
| | | return
|
| | | clearInterval(intValTime);
|
| | | return;
|
| | | }
|
| | | const valitem = val[flag];
|
| | | const roleMsg = msgData.getRagData(valitem, false, "");
|
| | | this.list[key].list.push(roleMsg[0])
|
| | | flag++
|
| | | this.list[key].list.push(roleMsg[0]);
|
| | | flag++;
|
| | | }, 1000);
|
| | |
|
| | | },
|
| | | setRagInterval(flag, index, res) {
|
| | | if (flag < res.length) {
|
| | | const obj = res[flag]
|
| | |
|
| | | this.list[index].list.push(roleMsg[0])
|
| | | const obj = res[flag];
|
| | | this.list[index].list.push(roleMsg[0]);
|
| | | setTimeout(() => {
|
| | | flag++;
|
| | | this.setRagInterval(flag, index, res)
|
| | | this.setRagInterval(flag, index, res);
|
| | | }, 1000);
|
| | | } else {
|
| | | return
|
| | | return;
|
| | | }
|
| | | },
|
| | | async setV1Fastgpt(res) {
|
| | | const data = await getV1Fastgpt(res);
|
| | | |
| | |
|
| | | const length = this.list.length - 1;
|
| | | const obj = data[0].quoteList
|
| | | this.$store.state.ragList.push({
|
| | | quest: res,
|
| | | index: length,
|
| | | val: obj
|
| | | })
|
| | | var roleMsg = msgData.getRagData(obj[0], true, res);
|
| | | this.list[length].list = roleMsg
|
| | |
|
| | | const obj = data[0].quoteList;
|
| | | var roleMsg = [
|
| | | {
|
| | | type: "text",
|
| | | val: "未查询到相关信息"
|
| | | }
|
| | | ];
|
| | | if (obj.length > 0) {
|
| | | this.$store.state.ragList.push({
|
| | | quest: res,
|
| | | index: length,
|
| | | val: obj
|
| | | });
|
| | | roleMsg = msgData.getRagData(obj[0], true, res);
|
| | | }
|
| | |
|
| | | this.list[length].list = roleMsg;
|
| | | this.loading = false;
|
| | | },
|
| | | setMarkDownInfo(res) {
|
| | | var roleMsg = msgData.getRole("markDown", res);
|
| | | this.list.push(roleMsg.msg);
|
| | | // |
| | | //
|
| | | },
|
| | | setMapInfo(res) {
|
| | | var msg = "";
|
| | |
| | | },
|
| | | getMsg(type, msg) {
|
| | | var roleMsg = msgData.getRole(type, msg);
|
| | | |
| | |
|
| | | if (this.loading) {
|
| | |
|
| | | this.loading = false;
|
| | |
|
| | | |
| | | this.list[this.list.length - 1].list = roleMsg.msg.list;
|
| | | } else {
|
| | | this.list.push(roleMsg.msg);
|