suerprisePlus
2024-06-27 6ae4841b48665145aa469d574fbadb988a9c498c
src/views/chartView/index.vue
@@ -12,11 +12,16 @@
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",
@@ -69,7 +74,16 @@
    // this.setLoading();
    setTimeout(() => {
      this.setMsgStart("您好");
    }, config.loadTime);
    }, 1000);
    setTimeout(() => {
      const obj = mapConfig.setJsonToMd([{
        h6: "警告: 菲律宾苏比克湾区域检测出异常军事目标!"
      }, {
        p: "异常代号:4r5as5s001"
      }]);
      var roleMsg = msgData.getJsonToMdData(obj);
      this.list.push(roleMsg)
    }, 3000);
    bus.$on("mapInfo", (res) => {
      if (res) {
        // this.setMapInfo(res);
@@ -93,6 +107,13 @@
    //   });
  },
  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;
@@ -104,14 +125,107 @@
      setTimeout(() => {
        this.setMsgStart(msg);
      }, 200);
    },
    getQueryGroupBy(layer, filed) {
      const layerId = modelLayer.layers.filter((item) => {
        if (item.name == layer) {
          return item;
        }
      });
      if (layerId.length <= 0) {
        return;
      }
      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) {
      const data = await getQueryEentity(res);
      const message = mapConfig.setScanList(data.data, filed)
      this.getMsg("ai", message);
    },
    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.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);
      } else if (res.indexOf("markDown") > -1) {
        setTimeout(() => {
          this.getMd();
        }, 2000);
      } else if (res.indexOf("scanWeapon") > -1) {
        this.setQueryMapPlan("scanWeapon")
      } else if (res.indexOf("weaponParameters") > -1) {
        this.setQueryMapPlan("weaponParameters")
      } else if (res.indexOf("searchTarget") > -1) {
        this.setQueryMapPlan("searchTarget")
      } else if (res.indexOf("searchStrikeableTarget") > -1) {
        this.setQueryMapPlan("searchStrikeableTarget")
      } else if (res.indexOf("USAFCommandCenterQuery") > -1) {
        this.setQueryMapPlan("USAFCommandCenterQuery")
      } else if (res.indexOf("attackUSAFCommandCenter") > -1) {
        this.setQueryMapPlan("attackUSAFCommandCenter")
      } else if (res.indexOf("defenceRangeTyphoonSystem") > -1) {
        this.setQueryMapPlan("defenceRangeTyphoonSystem")
      }
      // else if(res.indexOf("苏比克湾") > -1){
      //   this.$store.state.setScreenFlag = true;
@@ -128,8 +242,8 @@
        this.setV1Fastgpt(res)
      } else {
        const data = await getAIMessage(res);
        if (data.code == 200) {
        if (data.status == 200) {
          if (data.content) {
            this.getMsg("ai", data.content);
          } else {
@@ -139,13 +253,85 @@
            this.$store.state.setScreenFlag = true;
            this.$nextTick(() => {
              setTimeout(() => {
                mapInfo.init(data.name);
                this.setQueryMapPlan(data.name)
              }, 1000);
            });
          }
        }
      }
    },
    setQueryMapPlan(res) {
      if (this.$store.state.setScreenFlag == false) {
        this.$store.state.setScreenFlag = true;
      }
      layerJson.setTitleSetRest();
      mapInfo.setEntityQueryInput();
      switch (res) {
        case "scanWeapon":
          mapInfo.setFlyTo({
            "longitude": 120.26907736668211,
            "latitude": 14.791708841800627,
            "height": 1371.1909347746105
          });
          var obj = this.getQueryGroupBy("武器", "weaponname")
          this.getQueryEentityGroupBy(obj, "weaponname")
          layerJson.setAddWfsLayer();
          break;
        case "weaponParameters":
          var obj = this.getQueryGroupBy("武器", "description")
          this.getQueryEentityDescription(obj)
          break;
        case "searchTarget":
          var obj = this.getQueryGroupBy("建筑", "targettype")
          this.getQueryEentityGroupBy(obj, "targettype")
          var list = [{
            name: "军事目标",
            color: "#409EFF"
          }, {
            name: "民宅",
            color: "#808080"
          }, {
            name: "经济目标",
            color: "#FFFF00"
          }
          ]
          layerJson.setQueryByFiledList(list, 0)
          break;
        case "searchStrikeableTarget":
          var obj = "strikeable = 'TRUE'" + "";
          layerJson.setQueryByFiled(obj, "#FF0000", false)
          this.getMsg("ai", "相关信息已在地图模块展示");
          break;
        case "USAFCommandCenterQuery":
          var obj = "ejfl like '%空军基地%'";
          layerJson.setQueryExtent2(obj, false)
          this.getMsg("ai", "相关信息已在地图模块展示");
          break;
        case "attackUSAFCommandCenter":
          var obj = "ejfl like '%空军基地%'";
          layerJson.setQueryExtent2(obj, true)
          this.getMsg("ai", "相关信息已在地图模块展示");
          break;
        case "defenceRangeTyphoonSystem":
          var obj = "weaponname like '%" + name + "%'" + "";
          layerJson.setQueryTF2(obj)
          this.getMsg("ai", "相关信息已在地图模块展示");
          break;
        default:
          mapInfo.init(res);
          break;
      }
    },
    setRagMoreList(res) {
      const obj = this.$store.state.ragList
      const val_data = obj.filter(item => {
@@ -196,8 +382,9 @@
    },
    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,
@@ -223,13 +410,13 @@
    },
    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);