liutao 3 mesiacov pred
rodič
commit
fc7d23101f

+ 0 - 3
web_ui/src/router/index.js

@@ -16,13 +16,10 @@ import Login from '@/views/Login'
 import ZnxzLogin from '@/views/ZnxzLogin'
 
 
-import IntelLocation from '@/views/IntelLocation'
-import Voice from '@/views/Voice'
 import IndustriaLand from '@/views/industrial-land/IndustriaLand'
 import IndustriaLandDetail from '@/views/industrial-land/IndustriaLandDetail'
 import AiIndustriaLandDetail from '@/views/industrial-land/AiIndustriaLandDetail'
 
-import IndustriaLandSurvey from '@/views/industrial-land/IndustrialLandSurvey'
 
 Vue.use(Router)
 

+ 0 - 1419
web_ui/src/views/IntelLocation.vue

@@ -1,1419 +0,0 @@
-<template>
-  <div class="intel-location">
-    <top title="万维自然资源大模型"></top>
-    <div class="map-panel">
-      <div class="main-content">
-        <div class="left-panel">
-          <div class="name-panel">
-            <div class="name">AI智能选址</div>
-            <div class="back" @click="goBack" v-if="type != 0">
-              <img src="~@/assets/image/icon-back.png" />
-              选址分析
-            </div>
-          </div>
-          <div class="content" v-if="type == 0">
-            <vue-perfect-scrollbar class="sxtj" :settings="settings">
-              <div class="select-panel">
-                <Select v-model="xzq" class="xzq" @on-change="initCity">
-                  <Option
-                    :value="item.region_name"
-                    v-for="item in xzqList"
-                    :key="item.region_code"
-                    >{{ item.region_name }}</Option
-                  >
-                </Select>
-                <img class="icon" src="~@/assets/image/loc.png" />
-                <Select v-model="city" class="city" @on-change="toggleCity">
-                  <Option
-                    :value="item.region_name"
-                    v-for="item in cityList"
-                    :key="item.region_code"
-                    >{{ item.region_name }}</Option
-                  >
-                </Select>
-                <Select v-model="country" class="country" @on-change="init">
-                  <Option
-                    :value="item.region_name"
-                    v-for="item in countryList"
-                    :key="item.region_code"
-                    >{{ item.region_name }}</Option
-                  >
-                </Select>
-              </div>
-              <div class="item">
-                <div class="name">所在开发区:</div>
-                <div class="value">
-                  <Select v-model="szkfq" placeholder="不限">
-                    <Option
-                      :value="item.name"
-                      v-for="item in szkfqList"
-                      :key="item.name"
-                      >{{ item.name }}</Option
-                    >
-                  </Select>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">规划用途:</div>
-                <div class="value">
-                  <div
-                    class="btn"
-                    :class="{ checked: index == ghytIndex }"
-                    v-for="(item, index) in ghyt"
-                    :key="index"
-                  >
-                    {{ item }}
-                  </div>
-                </div>
-              </div>
-              <div class="item d">
-                <div class="name">用地面积:</div>
-                <div class="value">
-                  <div class="input">
-                    <Input />
-                    <div class="unit">亩</div>
-                  </div>
-                  <div class="line">-</div>
-                  <div class="input">
-                    <Input />
-                    <div class="unit">亩</div>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">招引产业:</div>
-                <div class="value">
-                  <Select v-model="zycy" placeholder="不限">
-                    <Option
-                      :value="item.name"
-                      v-for="item in zycyList"
-                      :key="item.name"
-                      >{{ item.name }}</Option
-                    >
-                  </Select>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">空间规划:</div>
-                <div class="value">
-                  <div class="rg">
-                    <RadioGroup v-model="kjgh">
-                      <Radio label="不限"></Radio>
-                      <Radio label="符合"></Radio>
-                      <Radio label="不符合"></Radio>
-                    </RadioGroup>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">征地情况:</div>
-                <div class="value">
-                  <div class="rg">
-                    <RadioGroup v-model="zdqk">
-                      <Radio label="不限"></Radio>
-                      <Radio label="未完成"></Radio>
-                      <Radio label="已完成"></Radio>
-                    </RadioGroup>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">拆迁情况:</div>
-                <div class="value">
-                  <div class="rg">
-                    <RadioGroup v-model="cqqk">
-                      <Radio label="不限"></Radio>
-                      <Radio label="未完成"></Radio>
-                      <Radio label="已完成"></Radio>
-                    </RadioGroup>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">投资条件:</div>
-                <div class="value">
-                  <div class="input-panel">
-                    <span>固投强度</span>
-                    <div class="input">
-                      <Input />
-                    </div>
-                    <div class="line">-</div>
-                    <div class="input">
-                      <Input />
-                    </div>
-                  </div>
-                  <div class="input-panel">
-                    <span>亩均税收</span>
-                    <div class="input">
-                      <Input />
-                    </div>
-                    <div class="line">-</div>
-                    <div class="input">
-                      <Input />
-                    </div>
-                  </div>
-                  <div class="input-panel">
-                    <span>单位能耗</span>
-                    <div class="input">
-                      <Input />
-                    </div>
-                    <div class="line">-</div>
-                    <div class="input">
-                      <Input />
-                    </div>
-                  </div>
-                  <div class="input-panel">
-                    <span>单位排放</span>
-                    <div class="input">
-                      <Input />
-                    </div>
-                    <div class="line">-</div>
-                    <div class="input">
-                      <Input />
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name c">周边配套:</div>
-                <div class="value">
-                  <div
-                    class="check-panel"
-                    v-for="(item, index) in zbpt"
-                    :key="index"
-                  >
-                    <img
-                      class="icon"
-                      src="~@/assets/image/checked-blue.png"
-                      v-if="item.checked"
-                      @click="item.checked = !item.checked"
-                    />
-                    <div
-                      class="border"
-                      v-else
-                      @click="item.checked = !item.checked"
-                    />
-                    <div class="alias">{{ item.name }}</div>
-                    <div class="label">距离</div>
-                    <div class="select">
-                      <Select v-model="item.jl" @on-change="toggleCity">
-                        <Option
-                          :value="item.name"
-                          v-for="item in jlList"
-                          :key="item.name"
-                          >{{ item.name }}</Option
-                        >
-                      </Select>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="item">
-                <div class="name">自定义需求:</div>
-                <div class="value">
-                  <div class="custom">
-                    <Input placeholder="请输入" />
-                  </div>
-                </div>
-              </div>
-            </vue-perfect-scrollbar>
-            <div class="ksxz">
-              <div class="btn" @click="goXz">开始选址</div>
-            </div>
-          </div>
-          <div class="content scroll" ref="box" v-if="type == 1">
-            <Timeline class="time-line">
-              <template v-for="(item, index) in l_time">
-                <TimelineItem color="green" :key="index" :id="'li' + index">
-                  <img
-                    class="img"
-                    v-if="item.checked"
-                    src="~@/assets/image/time-c.png"
-                    slot="dot"
-                  />
-
-                  <img
-                    class="img"
-                    v-else
-                    src="~@/assets/image/time-n.png"
-                    slot="dot"
-                  />
-                  <img
-                    v-if="item.checked"
-                    class="ivu-timeline-item-tail"
-                    src="~@/assets/image/line-checked.png"
-                  />
-                  <img
-                    v-else
-                    class="ivu-timeline-item-tail"
-                    src="~@/assets/image/line-normal.png"
-                  />
-                  <div class="a-panel">
-                    <div class="a" :class="{ checked: item.checked }">
-                      {{ item.name }}
-                    </div>
-                    <div class="desc">{{ item.desc }}</div>
-                    <div class="desc" v-if="item.desc1">{{ item.desc1 }}</div>
-                    <div class="desc" v-if="item.desc2">{{ item.desc2 }}</div>
-                    <div class="desc" v-if="item.desc3">{{ item.desc3 }}</div>
-                    <div class="diver"></div>
-                    <img
-                      class="time"
-                      :src="require(`@/assets/image/${item.icon}.png`)"
-                      v-if="item.icon"
-                    />
-                  </div>
-                </TimelineItem>
-              </template>
-            </Timeline>
-          </div>
-          <div class="content wbg" v-if="type == 2">
-            <vue-perfect-scrollbar class="table" :settings="settings">
-              <div
-                class="item"
-                v-for="(item, index) in dkList"
-                :key="index"
-                :class="{ checked: dkIndex == index }"
-                @click="showDetailModal(item, index)"
-              >
-                <div class="title-panel">
-                  <div class="title">
-                    <div class="icon">NO.{{ index + 1 }}</div>
-                    <div class="name">{{ item.name }}</div>
-                  </div>
-                  <div class="ppd">
-                    <span>95%</span>
-                    <div class="label">匹配度</div>
-                  </div>
-                </div>
-                <div class="show-panel">
-                  <div class="name-panel">
-                    <div class="name">地块面积:30.27亩</div>
-                    <div class="name">规划用途:工业用地</div>
-                    <div class="name">土地坐落:东至四甲河绿化带,南至...</div>
-                  </div>
-                  <div class="value-panel">
-                    <div class="info b">查看详情</div>
-                    <div class="info">加入对比</div>
-                  </div>
-                </div>
-              </div>
-            </vue-perfect-scrollbar>
-            <div class="page">
-              <div class="text"><span>2</span>/5</div>
-              <div class="icons">
-                <div class="icon">
-                  <img src="~@/assets/image/pre.png" />
-                </div>
-                <div class="diver"></div>
-                <div class="icon">
-                  <img src="~@/assets/image/next.png" />
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <znxz-compare @db-close="dbClose" v-if="showXzdb"></znxz-compare>
-        <div :id="id" class="map"></div>
-      </div>
-    </div>
-    <div class="layer">
-      <img src="~@/assets/image/icon-layer.png" />
-      <span>图层控制</span>
-    </div>
-    <div class="layer xz" v-if="showDetail" @click="showXzdb = true">
-      <img src="~@/assets/image/icon-xz.png" />
-      <span>选址对比</span>
-    </div>
-    <div class="info-modal" v-if="showDetail">
-      <znxz-detail @close="hideDetail"></znxz-detail>
-    </div>
-  </div>
-</template>
-<script>
-// import polygons from "../../static/json/浙江省.json";
-import Top from "@/components/Top.vue";
-import ZnxzDetail from "./land/ZnxzDetail.vue";
-import ZnxzCompare from "./land/ZnxzCompare.vue";
-
-export default {
-  components: {
-    Top,
-    ZnxzDetail,
-    ZnxzCompare,
-  },
-
-  data() {
-    return {
-      type: 0,
-      showDetail: false,
-      showXzdb: false,
-      l_time: [
-        {
-          checked: true,
-          name: "问题解释",
-          icon: "icon-wtjs",
-          desc: "",
-        },
-        {
-          name: "基本属性筛选",
-          icon: "icon-jbsxsx",
-          desc: "区域",
-          desc1: "规划用途",
-          checked: false,
-          desc2: "用地面积",
-        },
-        {
-          name: "空间适配分析",
-          desc: "规划符合性",
-          desc1: "征地情况分析",
-          checked: false,
-          desc2: "拆迁情况分析",
-          icon: "icon-kjspfx",
-        },
-        {
-          name: "产业导向适配分析",
-          desc: "产业链适配",
-          icon: "icon-cydxspfx",
-          checked: false,
-        },
-        {
-          name: "投资条件分析",
-          desc: "固定投资强敌",
-          desc1: "亩均税收",
-          desc2: "单位能耗",
-          desc3: "单位排放",
-          icon: "icon-tztjfx",
-          checked: false,
-        },
-        {
-          name: "周边配套分析",
-          desc: "高速入口",
-          desc1: "机场",
-          desc2: "火车站",
-          icon: "icon-zbptfx",
-          checked: false,
-        },
-        {
-          name: "整理答案",
-          icon: "icon-zlda",
-          checked: false,
-        },
-        {
-          name: "完成",
-          icon: "",
-          checked: false,
-        },
-      ],
-      id: "locMap" + new Date().getTime(),
-      latitude: 30.287459,
-      longitude: 120.153576,
-      zoomLevel: 10,
-      map: null,
-      kjgh: "不限",
-      szkfq: "不限",
-      szkfqList: [],
-      countryList: [],
-      country: "全部",
-      jlList: [{ name: "5公里以内" }],
-      xzq: "浙江省",
-      selectCountry: null,
-      city: "杭州市",
-      xzqList: [],
-      cityList: [
-        {
-          region_code: "-1",
-          region_name: "全部",
-        },
-      ],
-      selectXzq: {},
-      settings: {
-        maxScrollbarLength: 60,
-      },
-      selectCity: null,
-      ghyt: ["工业用地", "商业用地", "居住用地", "商住混合用地", "其他用地"],
-      ghytIndex: 0,
-      zycyList: [],
-      zycy: "",
-      zdqk: "不限",
-      cqqk: "不限",
-      zbpt: [
-        {
-          name: "高速入口",
-          jl: "5公里以内",
-          checked: true,
-        },
-        {
-          name: "机场",
-          jl: "5公里以内",
-          checked: false,
-        },
-        {
-          name: "火车站",
-          jl: "5公里以内",
-          checked: false,
-        },
-        {
-          name: "港口",
-          jl: "5公里以内",
-          checked: false,
-        },
-        {
-          name: "医院",
-          jl: "5公里以内",
-          checked: true,
-        },
-        {
-          name: "学校",
-          jl: "5公里以内",
-          checked: true,
-        },
-      ],
-      index: -1,
-      interval: null,
-      dkList: [
-        { name: "萧山区市北单位XSCQ130..." },
-        { name: "萧山区市北单位XSCQ130..." },
-        { name: "萧山区市北单位XSCQ130..." },
-        { name: "萧山区市北单位XSCQ130..." },
-        { name: "萧山区市北单位XSCQ130..." },
-        { name: "萧山区市北单位XSCQ130..." },
-      ],
-      dkIndex: -1,
-    };
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.initMap();
-      // this.initRegion();
-    });
-  },
-  methods: {
-    showDetailModal(item, index) {
-      this.showDetail = true;
-      this.dkIndex = index;
-    },
-    hideDetail() {
-      this.showDetail = false;
-    },
-    init() {},
-    dbClose() {
-      this.showXzdb = false;
-    },
-    goXz() {
-      this.type = 1;
-      this.l_time.forEach((item) => {
-        item.checked = false;
-      });
-      this.index = -1;
-      let that = this;
-      this.interval = setInterval(() => {
-        that.index = that.index + 1;
-        if (that.l_time[that.index]) {
-          that.l_time[that.index].checked = true;
-          that.scrollToAnchor("li" + that.index);
-          if (that.index == that.l_time.length - 1) {
-            that.type = 2;
-            this.clear();
-          }
-        } else {
-          this.clear();
-        }
-      }, 1000);
-    },
-    clear() {
-      if (this.interval) {
-        clearInterval(this.interval);
-        this.interval = null;
-        this.index = -1;
-      }
-    },
-    scrollToAnchor(anchor) {
-      const dom = document.getElementById(anchor);
-      if (dom && this.$refs.box) {
-        this.$refs.box.scrollTo({
-          top: dom.offsetTop - 20,
-          behavior: "smooth",
-        });
-      }
-    },
-    goBack() {
-      this.type = 0;
-      this.dkIndex = -1;
-      this.showDetail = false;
-      if (this.interval) {
-        this.clear();
-      }
-    },
-    initMap() {
-      let myCenter = new L.LatLng(this.latitude, this.longitude); // 设置地图中心
-      this.map = L.map(this.id, {
-        center: myCenter,
-        zoom: this.zoomLevel,
-      });
-      var tk = window.ApplicationConfig.tk;
-      // var tk = "6dfd31e3b55a8466f34997aee5551a9c";
-      // 添加天地图底图
-      //底图
-      const image = L.tileLayer(
-        "http://t{s}.tianditu.gov.cn/img_w/wmts?tk=" +
-          tk +
-          "&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}",
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          zIndex: 1,
-        }
-      );
-      this.map.addLayer(image);
-      const dx = L.tileLayer(
-        "https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=" +
-          tk,
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          transparent: true,
-          zIndex: 2,
-        }
-      );
-      this.map.addLayer(dx);
-
-      //注记
-      const cia = L.tileLayer(
-        "http://t{s}.tianditu.gov.cn/cia_w/wmts?tk=" +
-          tk +
-          "&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}",
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          transparent: true,
-          zIndex: 3,
-        }
-      );
-      this.map.addLayer(cia);
-      // this.location(polygons);
-    },
-    location(geo) {
-      let t = L.geoJSON(geo, {
-        style: function (feature) {
-          return { color: "yellow" };
-        },
-      });
-      this.map.fitBounds(t.getBounds());
-    },
-    initRegion() {
-      var url = "/region/provice/list";
-      this.$ajax.get(url, {}, this, false).then((res) => {
-        if (res.code == 200) {
-          this.xzqList = res.data.data;
-          this.initCity(this.xzq);
-        }
-      });
-    },
-    initCity(value) {
-      if (value == "全部") {
-        this.cityList = [];
-
-        this.cityList.push({
-          region_code: "-1",
-          region_name: "全部",
-        });
-        this.city = this.cityList[0].region_name;
-        this.countryList = [];
-        this.countryList.unshift({
-          region_code: "-1",
-          region_name: "全部",
-        });
-        this.country = this.countryList[0].region_name;
-        return;
-      }
-      var url = "/region/city/list";
-      this.xzqList.forEach((item) => {
-        if (item.region_name == value) {
-          this.selectXzq = item;
-        }
-      });
-      var p = {
-        regionCode: this.selectXzq.region_code,
-      };
-      this.$ajax.get(url, p, this, false).then((res) => {
-        if (res.code == 200) {
-          this.cityList = res.data.data;
-          this.cityList.unshift({
-            region_code: "-1",
-            region_name: "全部",
-          });
-          this.city = this.cityList[0].region_name;
-          this.countryList = [];
-          this.countryList.unshift({
-            region_code: "-1",
-            region_name: "全部",
-          });
-          this.country = this.countryList[0].region_name;
-        }
-      });
-    },
-    initCountry() {
-      if (this.selectCity.region_name == "全部") {
-        this.countryList = [];
-        this.countryList.push({
-          region_code: "-1",
-          region_name: "全部",
-        });
-        this.country = this.countryList[0].region_name;
-        return;
-      }
-      var p = {
-        regionCode: this.selectCity.region_code,
-      };
-      var url = "/region/city/list";
-      this.$ajax.get(url, p, this, false).then((res) => {
-        if (res.code == 200) {
-          this.countryList = res.data.data;
-          this.countryList.unshift({
-            region_code: "-1",
-            region_name: "全部",
-          });
-          this.country = this.countryList[0].region_name;
-        }
-      });
-    },
-    toggleCity(value) {
-      if (value == "全部") {
-        this.selectCity = null;
-        this.selectCountry = null;
-        this.countryList = [];
-        this.countryList.push({
-          region_code: "-1",
-          region_name: "全部",
-        });
-        this.country = this.countryList[0].region_name;
-        return;
-      }
-      this.cityList.forEach((item) => {
-        if (item.region_name == value) {
-          this.selectCity = item;
-        }
-      });
-      this.initCountry();
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.intel-location {
-  width: 100%;
-  position: relative;
-  height: 100%;
-  .map-panel {
-    width: 100%;
-    position: absolute;
-    top: 67px;
-    height: calc(100% - 67px);
-    .main-content {
-      width: 100%;
-      height: 100%;
-      position: relative;
-      .map {
-        width: 100%;
-        height: 100%;
-        z-index: 9;
-      }
-      .left-panel {
-        width: 441px;
-        height: 100%;
-        position: absolute;
-        z-index: 10;
-        padding: 20px 15px 13px 15px;
-        left: 0;
-        top: 0;
-
-        background: linear-gradient(0deg, #cad6ff, #c2defc);
-        .name-panel {
-          display: flex;
-          height: 30px;
-          margin-bottom: 18px;
-          align-items: center;
-          justify-content: space-between;
-          .back {
-            display: flex;
-            cursor: pointer;
-            height: 30px;
-            align-items: center;
-            img {
-              width: 24px;
-              height: 24px;
-              margin-right: 10px;
-            }
-            font-family: Alibaba PuHuiTi 2;
-            font-weight: normal;
-            font-size: 18px;
-            color: #000d3f;
-          }
-          .name {
-            width: 108px;
-            height: 21px;
-            font-family: Alibaba PuHuiTi 2;
-            font-weight: normal;
-            font-size: 22px;
-            color: #000d3f;
-            line-height: 20px;
-          }
-        }
-        .content {
-          width: 412px;
-          height: calc(100% - 48px);
-          background: #f9fbff;
-          border-radius: 10px;
-          position: relative;
-          padding: 20px 20px 20px 22px;
-          .sxtj {
-            height: calc(100% - 55px);
-            overflow-y: auto;
-            .select-panel {
-              display: flex;
-              width: 100%;
-              justify-content: space-between;
-              height: 40px;
-              position: relative;
-              .icon {
-                position: absolute;
-                left: 8px;
-                width: 20px;
-                top: 12px;
-                height: 20px;
-              }
-
-              .xzq {
-                width: 115px;
-                max-width: 115px;
-                /deep/ .ivu-select-single .ivu-select-selection {
-                  background: #daeafb;
-                  height: 40px;
-                  line-height: 40px;
-                  border-radius: 8px;
-                  border: 1px solid #e0e5ec;
-                }
-                /deep/ .ivu-select-selected-value {
-                  font-family: Alibaba PuHuiTi;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #333333;
-                  height: 40px;
-                  padding-left: 30px;
-                  line-height: 40px;
-                }
-                /deep/ .ivu-select-placeholder {
-                  padding-left: 30px;
-                }
-              }
-              .country {
-                width: 115px;
-                max-width: 115px;
-                /deep/ .ivu-select-selected-value {
-                  font-family: Alibaba PuHuiTi;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #333333;
-                  height: 40px;
-                  padding-left: 18px;
-                  line-height: 40px;
-                }
-              }
-              .city {
-                width: 115px;
-                max-width: 115px;
-                margin: 0px 14px;
-                /deep/ .ivu-select-selected-value {
-                  font-family: Alibaba PuHuiTi;
-                  font-weight: normal;
-                  font-size: 16px;
-                  padding-left: 18px;
-                  color: #333333;
-                  height: 40px;
-                  line-height: 40px;
-                }
-              }
-            }
-            /deep/ .ivu-select-single .ivu-select-selection {
-              height: 40px;
-              line-height: 40px;
-
-              border-radius: 8px;
-              border: 1px solid #e0e5ec;
-            }
-            /deep/
-              .ivu-select-single
-              .ivu-select-selection
-              .ivu-select-selected-value {
-              height: 40px;
-              line-height: 40px;
-            }
-            /deep/ .ivu-select-arrow {
-              color: #333;
-            }
-            /deep/ .ivu-select-placeholder {
-              height: 40px;
-              line-height: 40px;
-            }
-            /deep/ .ivu-select-placeholder {
-              font-family: Alibaba PuHuiTi 2;
-              font-weight: normal;
-              font-size: 16px;
-              color: #666666;
-            }
-            .item {
-              display: flex;
-              margin-top: 12px;
-              .name {
-                width: 96px;
-                height: 15px;
-                font-family: Alibaba PuHuiTi 2;
-                font-weight: normal;
-                font-size: 16px;
-                color: #000d3f;
-                margin-top: 12px;
-                line-height: 20px;
-              }
-              .c {
-                margin-top: 0px;
-              }
-              .value {
-                width: calc(100% - 96px);
-                display: flex;
-                flex-wrap: wrap;
-                .check-panel {
-                  width: 100%;
-                  display: flex;
-                  height: 28px;
-                  align-items: center;
-                  margin-bottom: 6px;
-                  .icon {
-                    width: 22px;
-                    cursor: pointer;
-                    height: 22px;
-                  }
-                  .border {
-                    width: 22px;
-                    cursor: pointer;
-                    height: 22px;
-                    background: #ffffff;
-                    border-radius: 4px;
-                    border: 1px solid #d9dfe6;
-                  }
-                  .alias {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    margin: 0px 0px 0px 9px;
-                    font-size: 16px;
-                    text-align: left;
-                    width: 93px;
-                    color: #000d3f;
-                  }
-                  .label {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 16px;
-                    color: #999999;
-                  }
-                  .select {
-                    width: 112px;
-                    height: 25px;
-                    margin-left: 5px;
-                    background: #ffffff;
-                    border-radius: 8px;
-
-                    /deep/
-                      .ivu-select-single
-                      .ivu-select-selection
-                      .ivu-select-selected-value {
-                      height: 25px;
-                      line-height: 25px;
-                      font-family: Alibaba PuHuiTi 2;
-                      font-weight: normal;
-                      font-size: 16px;
-                      color: #999999;
-                    }
-                    /deep/ .ivu-select-single .ivu-select-selection {
-                      background: #ffffff;
-                      height: 25px;
-                      line-height: 25px;
-                      border: 1px solid #e0e5ec;
-                    }
-                  }
-                }
-                .btn {
-                  margin-right: 16px;
-                  height: 40px;
-                  background: #ffffff;
-                  text-align: center;
-                  line-height: 40px;
-                  padding: 0px 7px;
-                  margin-bottom: 10px;
-                  border-radius: 8px;
-                  border: 1px solid #e0e5ec;
-                  font-family: Alibaba PuHuiTi 2;
-                  font-weight: normal;
-                  cursor: pointer;
-                  font-size: 16px;
-                  color: #333333;
-                }
-                .btn:nth-child(3) {
-                  margin-right: 0px;
-                }
-                .btn:hover {
-                  background: #2879e7;
-                  border: 0px solid #e0e5ec;
-                  color: #ffffff;
-                }
-                .rg {
-                  width: 100%;
-                }
-                /deep/ .ivu-radio-group {
-                  display: flex;
-                  width: 100%;
-                  height: 40px;
-                  align-items: center;
-                  justify-content: space-between;
-                }
-                /deep/ .ivu-radio-inner::after {
-                  background: #2879e7;
-                }
-                /deep/ .ivu-radio-wrapper {
-                  font-family: Alibaba PuHuiTi 2;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #333333;
-                }
-
-                .checked {
-                  background: #2879e7;
-                  border: 0px solid #e0e5ec;
-                  color: #ffffff;
-                }
-                /deep/ .ivu-input {
-                  width: calc(100% - 2px);
-                  height: 38px;
-                  background: #ffffff;
-                  border-radius: 8px;
-                  border: 0px solid #f9fbff;
-                  font-family: Alibaba PuHuiTi 2;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #333333;
-                  &:focus {
-                    box-shadow: none;
-                  }
-                  &::placeholder {
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    font-size: 16px;
-                    color: #666;
-                  }
-                }
-                .input {
-                  width: calc(50% - 10px);
-                  height: 40px;
-                  background: #ffffff;
-                  position: relative;
-                  border-radius: 8px;
-                  border: 1px solid #e0e5ec;
-                }
-                .custom {
-                  width: 100%;
-                  height: 40px;
-                  background: #ffffff;
-                  position: relative;
-                  border-radius: 8px;
-                  border: 1px solid #e0e5ec;
-                }
-                .input-panel {
-                  width: 100%;
-                  display: flex;
-                  margin-bottom: 7px;
-                  height: 40px;
-                  align-items: center;
-                  span {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 16px;
-                    width: 95px;
-                    color: #000d3f;
-                    margin-right: 16px;
-                  }
-                  /deep/ .ivu-input {
-                    width: calc(100% - 2px);
-                    height: 30px !important;
-                    background: #ffffff;
-                    border-radius: 8px;
-                    border: 0px solid #f9fbff;
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 16px;
-                    color: #333333;
-                    &:focus {
-                      box-shadow: none;
-                    }
-                    &::placeholder {
-                      font-family: Microsoft YaHei;
-                      font-weight: 400;
-                      font-size: 16px;
-                      color: #666;
-                    }
-                  }
-                }
-                .input-panel:last-child {
-                  margin-bottom: 0px;
-                }
-                .unit {
-                  position: absolute;
-                  height: 40px;
-                  align-items: center;
-                  display: flex;
-                  top: 0;
-                  right: 10px;
-                  font-family: Alibaba PuHuiTi 2;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #666666;
-                }
-
-                .line {
-                  height: 40px;
-                  display: flex;
-                  margin: 0px 7px;
-                  width: 5px;
-                  font-family: Alibaba PuHuiTi 2;
-                  font-weight: normal;
-                  font-size: 16px;
-                  color: #666666;
-                  align-items: center;
-                }
-              }
-            }
-            .d {
-              margin-top: 2px;
-            }
-          }
-          .ksxz {
-            display: flex;
-            justify-content: center;
-            .btn {
-              width: 236px;
-              height: 42px;
-              text-align: center;
-              line-height: 42px;
-              margin-top: 13px;
-              background: linear-gradient(90deg, #4354e8, #2978e7);
-              border-radius: 21px;
-              font-family: Alibaba PuHuiTi 2;
-              font-weight: normal;
-              font-size: 18px;
-              cursor: pointer;
-              color: #ffffff;
-            }
-          }
-          .time-line {
-            height: 100%;
-            padding: 20px 0px 0px 56px;
-            /deep/ .ivu-timeline-item-head-custom {
-              background: transparent;
-            }
-            .time {
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              font-size: 16px;
-              width: 40px;
-              height: 40px;
-              margin-right: 13px;
-              position: absolute;
-              left: -80px;
-              top: -4px;
-              color: #2e3962;
-            }
-            .img {
-              width: 26px;
-              margin-top: 8px;
-              height: 26px;
-            }
-
-            /deep/ .ivu-timeline-item-tail {
-              width: 2px;
-              border-left: 0px solid #eaeaea;
-              top: 32px;
-              height: calc(100% - 32px);
-            }
-
-            .a-panel {
-              margin-left: 0px;
-              position: relative;
-              margin-top: -5px;
-              .a {
-                font-family: Alibaba PuHuiTi 2;
-                font-weight: normal;
-                font-size: 20px;
-                margin-bottom: 12px;
-                color: #333333;
-              }
-              .checked {
-                font-family: Alibaba PuHuiTi 2;
-                font-weight: normal;
-                font-size: 20px;
-                color: #2879e7;
-              }
-              .diver {
-                height: 18px;
-              }
-              .desc {
-                width: 100%;
-                font-family: Alibaba PuHuiTi 2;
-                min-height: 20px;
-                font-weight: normal;
-                font-size: 12px;
-                color: #999999;
-              }
-              .a1 {
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                font-size: 16px;
-                line-height: 35px;
-                color: #2e3962;
-              }
-            }
-          }
-        }
-        .scroll {
-          overflow: auto;
-        }
-        .wbg {
-          background: #fff;
-          padding: 15px 23px 24px 23px;
-          .table {
-            height: calc(100% - 47px);
-            .item {
-              border-radius: 0px;
-              border-bottom: 1px solid #ebebeb;
-              padding: 13px 13px 24px 13px;
-              cursor: pointer;
-              width: 100%;
-              background: white;
-
-              .title-panel {
-                display: flex;
-                justify-content: space-between;
-                .title {
-                  display: flex;
-                  margin-top: 16px;
-                  .icon {
-                    width: 40px;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 14px;
-                    margin-top: 2px;
-                    color: #ffffff;
-                    height: 24px;
-                    background: url("~@/assets/image/icon-px.png") no-repeat
-                      center;
-                    background-size: 100% 100%;
-                    margin-right: 7px;
-                  }
-                  .name {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 20px;
-                    color: #333333;
-                    max-width: 80%;
-                    white-space: nowrap; /* 确保文本在一行内显示 */
-                    overflow: hidden; /* 隐藏溢出的内容 */
-                    text-overflow: ellipsis; /* 使用省略号表示溢出的文本 */
-                  }
-                }
-                .ppd {
-                  display: flex;
-                  flex-direction: column;
-                  span {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 18px;
-                    color: #2f74ff;
-                  }
-                  .label {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 14px;
-                    color: #666;
-                  }
-                }
-              }
-              .show-panel {
-                display: flex;
-                margin-top: 14px;
-                height: 62px;
-                justify-content: space-between;
-                .name-panel {
-                  display: flex;
-                  width: 200px;
-                  flex-direction: column;
-                  .name {
-                    width: 100%;
-                    text-align: left;
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 14px;
-                    height: 30px;
-                    color: #999999;
-                    white-space: nowrap; /* 确保文本在一行内显示 */
-                    text-overflow: ellipsis;
-                  }
-                }
-                .value-panel {
-                  position: relative;
-                  width: 70px;
-                  display: flex;
-                  justify-content: flex-end;
-                  .info {
-                    font-family: Alibaba PuHuiTi 2;
-                    font-weight: normal;
-                    font-size: 14px;
-                    position: absolute;
-                    bottom: 0px;
-                    color: #0cce3e;
-                  }
-                  .b {
-                    bottom: 30px;
-                    color: #2f91ff;
-                  }
-                }
-              }
-            }
-            .checked {
-              border-radius: 15px;
-              background: linear-gradient(
-                90deg,
-                rgba(67, 84, 232, 0.16),
-                rgba(41, 120, 231, 0.16)
-              );
-            }
-            .item:hover {
-              border-radius: 15px;
-              background: linear-gradient(
-                90deg,
-                rgba(67, 84, 232, 0.16),
-                rgba(41, 120, 231, 0.16)
-              );
-            }
-          }
-          .page {
-            display: flex;
-            width: 100%;
-            height: 47px;
-            justify-content: space-between;
-            padding-left: 13px;
-            align-items: center;
-
-            .text {
-              display: flex;
-              font-family: Alibaba PuHuiTi 2;
-              font-weight: normal;
-              font-size: 18px;
-              color: #333;
-
-              span {
-                font-family: Alibaba PuHuiTi 2;
-                font-weight: normal;
-                font-size: 18px;
-                color: #2f8df1;
-              }
-            }
-            .icons {
-              display: flex;
-              align-items: center;
-              height: 100%;
-
-              .icon {
-                width: 28px;
-                height: 28px;
-                background: #ffffff;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                border-radius: 5px;
-                border: 1px solid #ced7e2;
-                img {
-                  width: 16px;
-                  height: 16px;
-                }
-              }
-              .diver {
-                width: 12px;
-              }
-            }
-          }
-        }
-      }
-      .xzdb1 {
-        width: 446px;
-        height: 100%;
-        position: absolute;
-        z-index: 11;
-        left: 0;
-        top: 0;
-        background: #ffffff;
-        box-shadow: 0px 6px 5px 0px rgba(194, 210, 237, 0.3);
-        border-radius: 5px;
-        border: 1px solid #e4e7ea;
-      }
-    }
-  }
-  .info-modal {
-    position: absolute;
-    top: 145px;
-    z-index: 20;
-    width: 446px;
-    height: 73%;
-    right: 0;
-  }
-  .layer {
-    cursor: pointer;
-    width: 130px;
-    height: 38px;
-    position: absolute;
-    top: 87px;
-    z-index: 20;
-    right: 18px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    background: #ffffff;
-    border-radius: 8px;
-    img {
-      width: 24px;
-      margin-right: 8px;
-      height: 24px;
-    }
-    span {
-      font-family: Alibaba PuHuiTi 2;
-      font-weight: normal;
-      font-size: 18px;
-      color: #333333;
-    }
-  }
-  .xz {
-    right: 163px;
-  }
-}
-</style>
-
-<style>
-@import "~leaflet/dist/leaflet.css";
-@import "~leaflet.markercluster/dist/MarkerCluster.css";
-@import "~leaflet.markercluster/dist/MarkerCluster.Default.css";
-.leaflet-control-attribution {
-  margin: 10px !important;
-  border-radius: 8px;
-  height: 30%;
-  padding: 5px;
-}
-</style>
-
-

+ 0 - 216
web_ui/src/views/Voice.vue

@@ -1,216 +0,0 @@
-<template>
-  <div class="voice">
-    {{inputText}}
-    <voice-input-button
-      v-model="inputText"
-      @record="showResult"
-      @record-start="recordStart"
-      @record-stop="recordStop"
-      @record-blank="recordNoResult"
-      @record-failed="recordFailed"
-      @record-ready="recordReady"
-      @record-complete="recordComplete"
-      interactiveMode="touch"
-      color="#5c62ea"
-      tipPosition="top"
-    >
-      <!-- <template slot="no-speak">没听清您说的什么</template> -->
-    </voice-input-button>
-  </div>
-</template>
-
-<script>
-import voiceInputButton from "@/components/lib/voice-input-button";
-
-export default {
-  components: {
-    voiceInputButton,
-  },
-  data() {
-    return {
-      inputText: "",
-      message: "Hello Vue!",
-      btnStatus: "UNDEFINED", // "UNDEFINED" "CONNECTING" "OPEN" "CLOSING" "CLOSED"
-      recorder: null,
-      resultText: "",
-      resultTextTemp: "",
-      countdownInterval: null,
-      iatWS: null,
-      btnTxt: "开始录音",
-      APPID: "05e6a677",
-      API_SECRET: "M2UzNWIyNjJiYTExNDUyN2ZiNmJmNmZj",
-      API_KEY: "025ff46cf4483b8d1023a3f5df4add6a",
-    };
-  },
-
-  methods: {
-    recordReady() {
-      console.info("按钮就绪!");
-    },
-    recordStart() {
-      console.info("录音开始");
-    },
-    showResult(text) {
-      console.info("收到识别结果:", text);
-    },
-    recordStop() {
-      console.info("录音结束");
-    },
-    recordNoResult() {
-      console.info("没有录到什么,请重试");
-    },
-    recordComplete(text) {
-      console.info("识别完成! 最终结果:", text);
-    },
-    recordFailed(error) {
-      console.info("识别失败,错误栈:", error);
-    },
-    toBase64(buffer) {
-      var binary = "";
-      var bytes = new Uint8Array(buffer);
-      var len = bytes.byteLength;
-      for (var i = 0; i < len; i++) {
-        binary += String.fromCharCode(bytes[i]);
-      }
-      return window.btoa(binary);
-    },
-    startLuyin() {
-      if (this.btnStatus === "UNDEFINED" || this.btnStatus === "CLOSED") {
-        this.connectWebSocket();
-      } else if (this.btnStatus === "CONNECTING" || this.btnStatus === "OPEN") {
-        // 结束录音
-        this.recorder.stop();
-      }
-    },
-    changeBtnStatus(status) {
-      //改变状态
-      this.btnStatus = status;
-      if (status === "CONNECTING") {
-        this.btnTxt = "建立连接中";
-        this.resultText = "";
-        this.resultTextTemp = "";
-      } else if (status === "OPEN") {
-        // this.btnTxt = "录音中";
-        this.countdown();
-      } else if (status === "CLOSING") {
-        this.btnTxt = "关闭连接中";
-      } else if (status === "CLOSED") {
-        this.btnTxt = "开始录音";
-      }
-    },
-    countdown() {
-      let seconds = 60;
-      this.btnTxt = `录音中(${seconds}s)`;
-      this.countdownInterval = setInterval(() => {
-        seconds = seconds - 1;
-        if (seconds <= 0) {
-          clearInterval(this.countdownInterval);
-          this.recorder.stop();
-          this.changeBtnStatus("CLOSED");
-        } else {
-          this.btnTxt = `录音中(${seconds}s)`;
-        }
-      }, 1000);
-    },
-    getWebSocketUrl() {
-      // 请求地址根据语种不同变化
-      var url = "wss://iat-api.xfyun.cn/v2/iat";
-      var host = "iat-api.xfyun.cn";
-      var apiKey = this.API_KEY;
-      var apiSecret = this.API_SECRET;
-      var date = new Date().toGMTString();
-      var algorithm = "hmac-sha256";
-      var headers = "host date request-line";
-      var signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v2/iat HTTP/1.1`;
-      var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret);
-      var signature = CryptoJS.enc.Base64.stringify(signatureSha);
-      var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`;
-      var authorization = btoa(authorizationOrigin);
-      url = `${url}?authorization=${authorization}&date=${date}&host=${host}`;
-      return url;
-    },
-
-    renderResult(resultData) {
-      let jsonData = JSON.parse(resultData);
-      if (jsonData.action == "started") {
-        console.log("握手成功");
-      } else if (jsonData.action == "result") {
-        const data = JSON.parse(jsonData.data);
-        // 转写结果
-        let resultTextTemp = "";
-        data.cn.st.rt.forEach((j) => {
-          j.ws.forEach((k) => {
-            k.cw.forEach((l) => {
-              resultTextTemp += l.w;
-            });
-          });
-        });
-        if (data.cn.st.type == 0) {
-          // 【最终】识别结果:
-          this.resultText += resultTextTemp;
-          resultTextTemp = "";
-        }
-        this.resultText = resultText + resultTextTemp;
-      } else if (jsonData.action == "error") {
-        // 连接发生错误
-        console.log("出错了:", jsonData);
-      }
-    },
-    connectWebSocket() {
-      const websocketUrl = this.getWebSocketUrl();
-      if ("WebSocket" in window) {
-        this.iatWS = new WebSocket(websocketUrl);
-      } else if ("MozWebSocket" in window) {
-        this.iatWS = new MozWebSocket(websocketUrl);
-      } else {
-        alert("浏览器不支持WebSocket");
-        return;
-      }
-      this.changeBtnStatus("CONNECTING");
-      this.iatWS.onopen = (e) => {
-        // 开始录音
-        this.recorder.start({
-          sampleRate: 16000,
-          frameSize: 1280,
-        });
-        var params = {
-          common: {
-            app_id: this.APPID,
-          },
-          business: {
-            language: "zh_cn",
-            domain: "iat",
-            accent: "mandarin",
-            vad_eos: 5000,
-            dwa: "wpgs",
-          },
-          data: {
-            status: 0,
-            format: "audio/L16;rate=16000",
-            encoding: "raw",
-          },
-        };
-        this.iatWS.send(JSON.stringify(params));
-      };
-      this.iatWS.onmessage = (e) => {
-        this.renderResult(e.data);
-      };
-      this.iatWS.onerror = (e) => {
-        console.error(e);
-        this.recorder.stop();
-        this.changeBtnStatus("CLOSED");
-      };
-      this.iatWS.onclose = (e) => {
-        this.recorder.stop();
-        this.changeBtnStatus("CLOSED");
-      };
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.voice {
-  padding: 20px;
-  margin-top: 100px;;
-}
-</style>

+ 0 - 2176
web_ui/src/views/industrial-land/IndustriaLandDetail copy.vue

@@ -1,2176 +0,0 @@
-<template>
-  <div class="industria-land-detail">
-    <industrial-top
-      @collect="doCollect"
-      @compare="doCompare"
-      @chart="showFlowChart"
-    ></industrial-top>
-    <div class="map-content">
-      <div class="content">
-        <div :id="id" class="map"></div>
-        <div class="right-tool">
-          <div class="layer-container c">
-            <div
-              class="layer-panel"
-              @click="toggleIdentity"
-              :class="{ checked: showIndentify }"
-            >
-              <img
-                src="~@/assets/image/icon-i-checked.png"
-                class="img"
-                v-if="showIndentify"
-              />
-              <img src="~@/assets/image/icon-i-normal.png" class="img" v-else />
-              <span :class="{ c: showIndentify }">属性识别</span>
-            </div>
-          </div>
-          <div class="layer-container">
-            <div
-              class="layer-panel"
-              :class="{ checked: showLayerControl }"
-              @click="showLayerControl = !showLayerControl"
-            >
-              <img
-                src="~@/assets/image/icon-layer-checked.png"
-                class="img"
-                v-if="showLayerControl"
-              />
-              <img src="~@/assets/image/icon-layer.png" class="img" v-else />
-              <span :class="{ c: showLayerControl }">图层控制</span>
-            </div>
-            <div class="layer-content-border" v-if="showLayerControl">
-              <vue-perfect-scrollbar class="layer-content" :settings="settings">
-                <div
-                  class="item"
-                  v-for="(item, index) in layers"
-                  :key="index + '-13'"
-                >
-                  <div class="name">
-                    {{ item.name }}
-                  </div>
-                  <div
-                    class="item"
-                    v-for="(_item, _index) in item.layers"
-                    :key="_index + '-14'"
-                    style="margin: 5px 0"
-                  >
-                    <Checkbox
-                      v-model="_item.checked"
-                      class="checkbox"
-                      @click.native.stop=""
-                      @on-change="switchMapLayer(_item)"
-                      >{{ _item.name }}
-                    </Checkbox>
-                  </div>
-                </div>
-              </vue-perfect-scrollbar>
-            </div>
-          </div>
-        </div>
-        <div class="legend-panel">
-          <div class="name">图例</div>
-          <div class="layer-legend">
-            <ul>
-              <li v-for="(item, index) in legend" :key="index">
-                <div class="label">
-                  <i
-                    :style="{ background: item.fill, borderColor: item.border }"
-                    v-if="item.children == undefined"
-                  ></i
-                  >{{ item.name }}
-                </div>
-                <div class="label">
-                  <div
-                    v-for="(citem, index) in item.children"
-                    :key="index"
-                    class="zl"
-                  >
-                    <i
-                      :style="{
-                        background:
-                          citem.fill == 'transparent' ? '' : citem.fill,
-                        borderColor: citem.border,
-                      }"
-                    ></i
-                    >{{ citem.name }}&nbsp;&nbsp;&nbsp;
-                  </div>
-                </div>
-              </li>
-            </ul>
-          </div>
-        </div>
-        <vue-perfect-scrollbar :settings="settings" class="left-panel">
-          <div v-for="(item, index) in hzData" :key="index">
-            <div class="title" @click="resetAnswer(index)">
-              {{ item.name }}
-            </div>
-            <div class="jsz" v-if="item.loading">
-              <img src="~@/assets/image/cyyd/jsz.png" />
-
-              {{ hintText }}
-            </div>
-            <div class="steps" v-if="item.loading">
-              <div
-                class="item"
-                v-for="(item, index) in steps"
-                :key="index"
-                @click="toggle(index)"
-              >
-                <div class="name-panel">
-                  <img
-                    src="~@/assets/image/cyyd/wtfx-select.png"
-                    class="icon"
-                    v-if="index <= activeIndex"
-                  />
-                  <img
-                    src="~@/assets/image/cyyd/wtfx-normal.png"
-                    class="icon"
-                    v-else
-                  />
-                  <div class="name" :class="{ c: index > activeIndex }">
-                    {{ item.name }}
-                  </div>
-                </div>
-                <div
-                  class="line"
-                  v-if="index != steps.length - 1"
-                  :class="{ checked: index < activeIndex }"
-                ></div>
-              </div>
-            </div>
-            <div class="tab-panel" v-if="false">
-              <div
-                class="item"
-                v-for="(item, index) in tabs"
-                :key="index"
-                @click="toggleTab(index)"
-              >
-                <div class="name" :class="{ selected: index == tabIndex }">
-                  {{ item }}
-                </div>
-                <div class="line" v-if="index == tabIndex"></div>
-              </div>
-            </div>
-            <div class="tab-content">
-              <div class="text" v-html="item.summary"></div>
-              <template
-                v-if="
-                  index == hzData.length - 1 &&
-                  item.loading == false &&
-                  xgdk.length > 0
-                "
-              >
-                <div class="btns-panel">
-                  <div class="left-btn">
-                    <img src="~@/assets/image/cyyd/share.png" class="icon" />
-                    <div class="diver"></div>
-                    <div class="alias">追问</div>
-                    <img src="~@/assets/image/cyyd/sdyj.png" class="icon" />
-                    <div class="diver"></div>
-                    <div class="alias">深度研究</div>
-                  </div>
-                  <div class="right-btn" @click="showFeek()">
-                    <div class="zw feek">问题反馈</div>
-                  </div>
-                  <div class="right-btn" @click="toggleZw()">
-                    <div class="zw" :class="{ checked: zhuiwen }">追问</div>
-                    <img src="~@/assets/image/cyyd/zhuiwen.png" class="icon" />
-                  </div>
-                </div>
-                <div class="textarea-panel" v-if="zhuiwen">
-                  <textarea
-                    v-model="zwinputText"
-                    type="text"
-                    autocapitalize="off"
-                    autocomplete="off"
-                    spellcheck="false"
-                    autocorrect="off"
-                    maxlength="1000"
-                    placeholder="继续提问"
-                    autofocus=""
-                  >
-                  </textarea>
-                  <div class="btn" @click="zwsend">
-                    <img src="~@/assets/image/cyyd/send.png" />
-                  </div>
-                </div>
-              </template>
-            </div>
-          </div>
-          <template v-if="showResult">
-            <div class="xg-title">
-              <img src="~@/assets/image/cyyd/xgdk.png" />
-              <div class="name">相关地块</div>
-              <img src="~@/assets/image/cyyd/xs.png" @click="showTableInfo" />
-            </div>
-            <div class="table-panel">
-              <div class="th">
-                <div class="it xh">序号</div>
-                <div class="it">名称</div>
-                <div class="it">面积(亩)</div>
-                <div class="it text">单价(万元/m²)</div>
-                <div class="it xh">得分</div>
-                <div class="it xh">操作</div>
-              </div>
-              <template v-if="xgdk && xgdk.length > 0">
-                <div
-                  class="tr"
-                  @mouseover="mouseover(i)"
-                  @mouseout="mouseout(i)"
-                  v-for="(citem, i) in xgdk"
-                  :key="i"
-                  :class="[{ checked: i == dkIndex || i == hoverDkIndex }]"
-                >
-                  <div class="it xh">{{ i + 1 }}</div>
-                  <div class="it c" @click="showDetailModal(citem, i)">
-                    {{ citem.name }}
-                  </div>
-                  <div class="it">
-                    {{ citem.area ? (citem.area * 0.0015).toFixed(2) : "-" }}
-                  </div>
-                  <div class="it text">
-                    {{ citem.unit_price ? citem.unit_price : "-" }}
-                  </div>
-                  <div class="it blue xh">
-                    {{
-                      citem.comprehensive_score
-                        ? citem.comprehensive_score
-                        : "-"
-                    }}
-                  </div>
-                  <div class="it xh">
-                    <img
-                      class="info"
-                      @click="goLocation(citem, i)"
-                      src="~@/assets/image/icon-loc-blue.png"
-                    />
-                  </div>
-                </div>
-              </template>
-              <div v-else class="hintText">未查询到相关地块数据!</div>
-            </div>
-
-            <div class="xg-title" v-if="false">
-              <img src="~@/assets/image/cyyd/xgdk.png" />
-              <div class="name">相关组织</div>
-              <img src="~@/assets/image/cyyd/xs.png" />
-            </div>
-            <div class="table-panel" v-if="false">
-              <div class="th" v-if="xgzz.length > 0">
-                <div class="it xh">序号</div>
-                <div class="it">组织名称</div>
-                <div class="it">组织描述</div>
-              </div>
-              <div v-else>暂无数据</div>
-              <div class="tr" v-for="(item, i) in xgzz" :key="i">
-                <div class="it xh">{{ i + 1 }}</div>
-                <div class="it">
-                  {{ item.name }}
-                </div>
-                <div class="it">{{ item.zzms }}</div>
-              </div>
-            </div>
-          </template>
-          <Spin size="large" class="span" fix v-if="loading"></Spin>
-        </vue-perfect-scrollbar>
-        <znxz-detail
-          @close="hideDetail"
-          @location="goPointMark"
-          v-if="showDetail"
-          ref="znxz"
-          @toggle="toggleInfoTab"
-          @gowkt="goWkt"
-          @clear="clearMark"
-          :item="activeItem"
-        ></znxz-detail>
-        <znxz-compare v-if="shwoCompare" :map="map" ref="compre"></znxz-compare>
-        <znxz-collect v-if="shwoCollect" @dkinfo="dkInfo"></znxz-collect>
-        <feek-back ref="feek" @close="hideFeekBackModal" :question="querQuestion" :answer="answer"></feek-back>
-      </div>
-    </div>
-    <flow-chart ref="flow" @close="hideModal"></flow-chart>
-    <land-table ref="table" @close="hideTableModal"></land-table>
-    <Modal
-      class="info-modal"
-      footer-hide
-      v-model="questionModal"
-      :styles="{ top: '200px' }"
-      width="50%"
-    >
-      <textarea
-        class="input"
-        v-model="input"
-        type="text"
-        autocapitalize="off"
-        autocomplete="off"
-        spellcheck="false"
-        enterkeyhint="reset"
-        autocorrect="off"
-        placeholder="请输入,Enter发送"
-        autofocus=""
-        @keyup.enter.stop="reset()"
-      ></textarea>
-      <div class="bottom">
-        <div class="name" @click="input = ''">清空</div>
-        <div class="send-btn" @click="reset">发送</div>
-      </div>
-    </Modal>
-  </div>
-</template>
-<script>
-import polygons from "../../../static/json/杭州市.json";
-import industrialTop from "@/components/IndustrialTop";
-import znxzDetail from "./ZnxzDetail.vue";
-import znxzCompare from "./ZnxzCompare.vue";
-import L from "leaflet";
-import ArrayQueue from "@/struct/ArrayQueue";
-import axios from "axios";
-import { arcgisToGeoJSON } from "@terraformer/arcgis";
-import znxzCollect from "./ZnxzCollect.vue";
-import loginMethods from "@/api/login";
-import { v4 as uuid } from "uuid";
-import { fetchEventSource } from "@microsoft/fetch-event-source";
-import dynamicMapLayer from "esri-leaflet/src/Layers/DynamicMapLayer";
-import FlowChart from "./FlowChart.vue";
-import FeekBack from "./ProblemFeedBack.vue";
-import LandTable from "./LandTable.vue";
-import * as turf from "@turf/turf";
-import { getWmtsLayer } from "@/util/leaflet";
-import wkt from "wellknown";
-import landMethods from "@/api/land";
-export default {
-  components: {
-    industrialTop,
-    znxzDetail,
-    znxzCompare,
-    znxzCollect,
-    FlowChart,
-    LandTable,
-    FeekBack,
-  },
-  data() {
-    return {
-      hzData: [],
-      input: "",
-      inputText: "帮我在杭州市推荐一宗50亩左右的工业用地。",
-      shwoCompare: false,
-      shwoCollect: false,
-      answer:'',
-      markerLayer: null,
-      questionModal: false,
-      hintText: "检索中...",
-      dkIndex: -1,
-      hoverDkIndex: -1,
-      summary: "",
-      wt: null,
-      count: 0,
-      activeItem: { id: 1 },
-      id: "industriaMap" + new Date().getTime(),
-      latitude: 31.86119,
-      longitude: 117.283042,
-      layers: [],
-      showResult: true,
-      showDetail: false,
-      zoomLevel: 8,
-      zhuiwen: false,
-      dkGeo: null,
-      dkGeoJson: null,
-      activeIndex: 0,
-      tabIndex: 0,
-      map: null,
-      xgzz: [],
-      zoom: 0,
-      xgdk: [],
-      interval: null,
-      zwinputText: "",
-      loading: false,
-      ctrlAbout: null,
-      eventSource: null,
-      messages: [],
-      gInterval: 3.5 * 1000 * 60,
-      checkInterval: null,
-      histories: new ArrayQueue(5),
-      tabs: ["全部建设用地", "新建建设用地", "存量建设用地"],
-      steps: [
-        {
-          name: "问题分析",
-        },
-        {
-          name: "地块搜索",
-        },
-        {
-          name: "整理答案",
-        },
-        {
-          name: "回答完成",
-        },
-      ],
-      querQuestion: "",
-      settings: {
-        maxScrollbarLength: 60,
-      },
-      geojsonLayer: null,
-      wktToGeojsonLayer: null,
-      identifyGeojsonLayer: null,
-      type: null,
-      modal: false,
-      showTableModal: true,
-      showLayerControl: false,
-      polyline: null,
-      dkMarkerLayer: [],
-      startTime: 0,
-      showIndentify: false,
-      legend: [
-        {
-          name: "城镇开发边界",
-          fill: "#e48b8b50",
-          border: "#000000",
-        },
-        {
-          name: "永久基本农田",
-          fill: "#fefe6050",
-          border: "#d7d6d6",
-        },
-        {
-          name: "生态保护红线",
-          fill: "#4d9757",
-          border: "#4d9757",
-        },
-        {
-          name: "控规详细性规划",
-          children: [
-            {
-              name: "工业",
-              fill: "#66290080",
-              border: "#66290080",
-            },
-          ],
-        },
-        {
-          name: "供地",
-          children: [
-            {
-              name: "工业",
-              fill: "",
-              border: "rgb(0, 122,255)",
-            },
-            {
-              name: "住宅",
-              fill: "",
-              border: "rgb(255,170,0)",
-            },
-            {
-              name: "商业",
-              fill: "",
-              border: "rgb(230,0,0)",
-            },
-          ],
-        },
-      ],
-    };
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.initMap();
-      this.checkPermision();
-    });
-  },
-  created() {
-    if (this.$route.params && this.$route.params.keyword) {
-      this.inputText = this.$route.params.keyword;
-    }
-    this.zwinputText = "";
-    this.type = this.$route.params.type;
-  },
-
-  methods: {
-    toggleIdentity() {
-      this.showIndentify = !this.showIndentify;
-      if (this.showIndentify) {
-        this.map.on("click", this.mapClick);
-      } else {
-        this.map.off("click", this.mapClick);
-        if (this.showDetail) {
-          this.hideDetail();
-        }
-        if (this.identifyGeojsonLayer) {
-          this.map.removeLayer(this.identifyGeojsonLayer);
-        }
-      }
-    },
-    checkPermision() {
-      let that = this;
-      loginMethods
-        .permission()
-        .then((res) => {
-          if (res && res.code == 200) {
-            that.permission = res.data;
-            if (that.permission) {
-              that.activeIndex = 0;
-              if (that.type) {
-                that.tabs.forEach((item, index) => {
-                  if (that.type == item) {
-                    that.activeIndex = index;
-                  }
-                });
-              }
-              that.hzData = [];
-              var item = { name: that.inputText, loading: true };
-              that.hzData.push(item);
-              // that.toggleTab(that.activeIndex);
-              that.xgdk = [
-                {
-                  id: 7162,
-                  name: "桐庐经济开发区85号工业地块",
-                  county: "桐庐县",
-                  location: "桐庐县中联路和城南路交叉口西北侧",
-                  area: 33042,
-                  comprehensive_score: 98,
-                  center_wkt: "POINT(119.683179367182 29.7668594386792)",
-                },
-                {
-                  id: 6936,
-                  name: "桐庐县江南镇工业园区2023-2号地块",
-                  county: "桐庐县",
-                  location: "桐庐县窄溪路和金堂路交叉口南侧",
-                  area: 32730,
-                  comprehensive_score: 96,
-                  center_wkt: "POINT(119.776661041068 29.8674845992439)",
-                },
-                {
-                  id: 6053,
-                  name: "青山湖科技城单元 LA011102-02、 LA011102-03 地块",
-                  county: null,
-                  location:
-                    "青山湖科技城单元LA011102-02、LA011102-03地块(东至鹤川路,南至蒋墅街,西至发达路,北至科技大道)",
-                  area: 31965,
-                  comprehensive_score: 93,
-                  center_wkt: "POINT(119.833330942318 30.2587063318842)",
-                },
-                {
-                  id: 7003,
-                  name: "梅城镇五马洲工业园区C-04-1号",
-                  county: "建德市",
-                  location: "梅城镇五马洲工业园区",
-                  area: 33431,
-                  comprehensive_score: 69,
-                  center_wkt: "POINT(119.455506193026 29.5194122302608)",
-                },
-                {
-                  id: 5913,
-                  name: "青山湖科技城单元LA010206-02地块",
-                  county: null,
-                  location:
-                    "青山湖科技城单元LA010206-02地块(东至泉口服务中心,南至市地街,西至干校路,北至长西线)",
-                  area: 32489,
-                  comprehensive_score: 65,
-                  center_wkt: "POINT(119.792292133488 30.3242359513533)",
-                },
-                {
-                  id: 6975,
-                  name: "塘栖张家墩产业园地块1",
-                  county: "临平区",
-                  location:
-                    "塘栖镇酒店埭社区;东至规划绿地、南至规划绿地、西至规划绿地、北至张家墩路。",
-                  area: 32228,
-                  comprehensive_score: 60,
-                  center_wkt: "POINT(120.16357939569 30.4705788185453)",
-                },
-                {
-                  id: 5411,
-                  name: "富政工出[2024]9号",
-                  county: "富阳区",
-                  location: "鹿山街道工业功能区",
-                  area: 34575,
-                  comprehensive_score: 60,
-                  center_wkt: "POINT(119.896504461223 29.9860460585603)",
-                },
-                {
-                  id: 7365,
-                  name: "义桥镇建设工矿仓储项目",
-                  county: "萧山区",
-                  location:
-                    "位于萧山区义桥镇田丰村、七里店村、勤里村,东至田丰村、七里店村土地,南至七里店村土地,西至田丰村土地,北至田丰村、勤里村土地。",
-                  area: 33797,
-                  comprehensive_score: 57,
-                  center_wkt: "POINT(120.162338981989 30.0555790489407)",
-                },
-                {
-                  id: 7223,
-                  name: "浦沿单元BJ040501-14地块",
-                  county: "滨江区",
-                  location:
-                    "东至规划量子巷;南至浦炬街绿化;西至紫云路;北至规划回龙庵路。",
-                  area: 33867,
-                  comprehensive_score: 55,
-                  center_wkt: "POINT(120.157534740039 30.1548281617972)",
-                },
-                {
-                  id: 7013,
-                  name: "杭州钱江经济开发区奉欣路以南工业地块三(C-3)",
-                  county: "余杭区",
-                  location: "仁和街道奉口村",
-                  area: 35231,
-                  comprehensive_score: 55,
-                  center_wkt: "POINT(120.069254227924 30.4426198260172)",
-                },
-              ];
-              that.showXgdkCenterPoint();
-            }
-          }
-        })
-        .finally(() => {
-          if (!this.permission) {
-            this.$Message.error("用户信息验证失败,请重新登录!");
-            setTimeout(() => {
-              this.logout();
-            }, 1000);
-          }
-        });
-    },
-    logout() {
-      this.$store.dispatch("LogOut").then(() => {
-        this.$router.push({ name: "login" });
-      });
-    },
-    reset() {
-      if (this.input == "" || this.input == null) {
-        this.$Message.info("请输入");
-        return;
-      }
-      this.inputText = this.input;
-      this.zwinputText = "";
-      this.questionModal = false;
-      this.histories = new ArrayQueue(5);
-      this.hzData = [];
-      var item = { name: this.inputText, loading: true };
-      this.hzData.push(item);
-      this.toggleTab(0);
-    },
-    zwsend() {
-      var item = { name: this.zwinputText, loading: true };
-      this.hzData.push(item);
-      this.activeIndex = 0;
-      this.send();
-    },
-    //ai超时处理,超过3.5分钟 结束请求提示未查询到信息
-    checkTimeOut() {
-      if (this.loading) {
-        this.xgdk = [];
-        this.activeIndex = 0;
-        if (this.ctrlAbout) {
-          this.ctrlAbout.abort();
-        }
-        this.loading = false;
-        if (this.interval) {
-          clearInterval(this.interval);
-        }
-        this.hzData.forEach((item, index) => {
-          if (index == this.hzData.length - 1) {
-            this.hzData[index].summary = "未查询到相关信息";
-            this.hzData[index].loading = false;
-            this.zwinputText = "";
-          }
-        });
-        if (this.checkInterval) {
-          clearInterval(this.checkInterval);
-        }
-        this.showResult = true;
-      }
-    },
-    resetAnswer(index) {
-      if (index == 0) {
-        this.input = this.inputText;
-        this.questionModal = true;
-      }
-    },
-    showFlowChart() {
-      this.modal = true;
-      this.$nextTick(() => {
-        this.$refs.flow.open();
-      });
-    },
-
-    hideModal() {
-      this.modal = false;
-    },
-    hideFeekBackModal() {},
-    showTableInfo() {
-      this.showTableModal = true;
-      this.$nextTick(() => {
-        this.$refs.table.open();
-      });
-    },
-
-    hideTableModal() {
-      this.showTableModal = false;
-    },
-    //图层控制
-    switchMapLayer(item) {
-      if (item.checked) {
-        if (item.layer === undefined || item.layer == null) {
-          if (item.type == "dynamic") {
-            item.layer = dynamicMapLayer({
-              url: item.url,
-              opacity: 0.8,
-              f: "json",
-            });
-          }
-          if (item.type == "geoserver") {
-            item.layer = L.tileLayer.wms(item.url, {
-              // 链接要改对应的
-              layers: item.layername,
-              format: "image/png",
-              layerID: Math.random(),
-              transparent: true,
-            });
-            item.layer.setZIndex(100);
-          }
-          if (item.type == "wmts") {
-            item.layer = getWmtsLayer(item);
-            item.layer.setZIndex(100);
-          }
-          this.map.addLayer(item.layer);
-        } else {
-          this.map.addLayer(item.layer);
-        }
-      } else {
-        if (item.layer != undefined || item.layer != null) {
-          this.map.removeLayer(item.layer);
-        }
-      }
-    },
-    initMap() {
-      this.layers = window.ApplicationConfig.layerTreeConfig;
-      this.layers.forEach((item, index) => {
-        if (index == 0) {
-          item.checked = true;
-        } else {
-          item.checked = false;
-        }
-      });
-      let myCenter = new L.LatLng(this.latitude, this.longitude); // 设置地图中心
-      this.map = L.map(this.id, {
-        center: myCenter,
-        zoom: this.zoomLevel,
-      });
-      // var tk = window.ApplicationConfig.tk;
-      var tk = "6dfd31e3b55a8466f34997aee5551a9c";
-      // 添加天地图底图
-      //底图
-      const image = L.tileLayer(
-        "http://t{s}.tianditu.gov.cn/img_w/wmts?tk=" +
-          tk +
-          "&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}",
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          zIndex: 1,
-        }
-      );
-      this.map.addLayer(image);
-      const dx = L.tileLayer(
-        "https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=" +
-          tk,
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          transparent: true,
-          zIndex: 2,
-        }
-      );
-      this.map.addLayer(dx);
-
-      //注记
-      const cia = L.tileLayer(
-        "http://t{s}.tianditu.gov.cn/cia_w/wmts?tk=" +
-          tk +
-          "&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}",
-        {
-          subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-          transparent: true,
-          zIndex: 3,
-        }
-      );
-      this.map.addLayer(cia);
-      //定位浙江省
-      this.location(polygons);
-      //默认加载供地图层
-      var gd = this.layers[0].layers[0];
-      this.switchMapLayer(gd);
-    },
-    //属性识别
-    mapClick(e) {
-      if (this.identifyGeojsonLayer) {
-        this.map.removeLayer(this.identifyGeojsonLayer);
-      }
-      // debugger
-      let query =
-        window.ApplicationConfig.landUrl +
-        "/0/query?where=&text=&objectIds=&time=&geometry=" +
-        e.latlng.lng +
-        "," +
-        e.latlng.lat +
-        "&" +
-        "geometryType=esriGeometryPoint&inSR=4490&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&" +
-        "maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&" +
-        "outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&f=json";
-      axios.get(query).then((data) => {
-        console.log(data);
-        if (data.data.features.length < 1) {
-          this.$Message.info("未查询到数据");
-          return;
-        }
-        var land = data.data.features[0].attributes;
-        var geojson = arcgisToGeoJSON(data.data.features[0].geometry);
-        console.log(turf.getGeom(geojson));
-        land.area = turf.area(turf.getGeom(geojson)).toFixed(2) + "平方米";
-        var geos = L.geoJSON(geojson, {
-          style: function (feature) {
-            return { color: "#3BA5FF" };
-          },
-        });
-        this.dkGeo = geos;
-        this.dkGeoJson = geojson;
-        this.identifyGeojsonLayer = geos.addTo(this.map);
-        this.map.fitBounds(geos.getBounds());
-        this.showDetailModal(land, -1);
-      });
-    },
-    location(geo) {
-      let t = L.geoJSON(geo, {
-        style: function (feature) {
-          return { color: "yellow" };
-        },
-      });
-      this.map.fitBounds(t.getBounds());
-    },
-    //高亮marker
-    hightMarker(i) {
-      this.dkMarkerLayer.forEach((item, index) => {
-        var className = "point-div-icon";
-        if (item.options.properties.p == i && index == i) {
-          className = "highlight-div-icon";
-        }
-        if (index == this.hoverDkIndex) {
-          className = "highlight-div-icon";
-        }
-        if (index == this.dkIndex) {
-          className = "highlight-div-icon";
-        }
-        var myIcon = L.divIcon({
-          html: index > -1 ? "<div>" + (index + 1) + "<div>" : "<div><div>",
-          className: className,
-          iconSize: [32, 32],
-        });
-        item.setIcon(myIcon);
-      });
-    },
-    //地块Item hover 和marker 高亮交互
-    mouseover(i) {
-      this.hoverDkIndex = i;
-      this.hightMarker(i);
-    },
-    mouseout(i) {
-      this.hoverDkIndex = -1;
-      this.hightMarker(-1);
-    },
-    //显示地块详情,先获取地块图斑,定位、路线、和地类分析需要叠加获取相交地块
-    showDetailModal(item, index) {
-      if (index != -1) {
-        this.getActiveItemGeometry(item);
-      }
-      if (
-        (this.activeItem && this.activeItem.id != item.id) ||
-        this.activeItem == null
-      ) {
-        if (this.dkIndex != index) {
-          if (this.geojsonLayer) {
-            this.map.removeLayer(this.geojsonLayer);
-            this.geojsonLayer = null;
-          }
-        }
-        this.clearMark();
-        this.showDetail = true;
-        this.activeItem = item;
-        this.dkIndex = index;
-        //高亮marker
-        this.hightMarker(index);
-      } else {
-        if (this.geojsonLayer) {
-          this.map.removeLayer(this.geojsonLayer);
-          this.geojsonLayer = null;
-        }
-        this.showDetail = false;
-        this.clearMark();
-        this.activeItem = null;
-      }
-    },
-    //地块收藏点击查看详情
-    dkInfo(item) {
-      this.dkGeo = null;
-      this.dkGeoJson = null;
-      item.id = item.dk_id ? item.dk_id : item.id;
-      this.goLocation(item);
-      this.showDetail = true;
-      this.activeItem = item;
-    },
-    //隐藏详情
-    hideDetail() {
-      this.showDetail = false;
-      if (this.geojsonLayer) {
-        this.map.removeLayer(this.geojsonLayer);
-        this.geojsonLayer = null;
-      }
-      if (this.identifyGeojsonLayer) {
-        this.map.removeLayer(this.identifyGeojsonLayer);
-      }
-      this.clearMark();
-    },
-    //收藏
-    doCollect(collect) {
-      this.shwoCollect = collect;
-      this.shwoCompare = false;
-      if (collect) {
-        this.hideDetail();
-      }
-      try {
-        this.$refs.compre.remove();
-      } catch (e) {}
-    },
-    //对比
-    doCompare(compare) {
-      this.shwoCompare = compare;
-      this.shwoCollect = false;
-      if (compare) {
-        this.hideDetail();
-      } else {
-        try {
-          this.$refs.compre.remove();
-        } catch (e) {}
-      }
-    },
-    toggle(index) {
-      this.activeIndex = index;
-      this.hideDetail();
-    },
-    toggleTab(index) {
-      if (this.loading) {
-        return;
-      }
-      this.tabIndex = index;
-      this.wt = "在" + this.tabs[index] + "中," + this.inputText;
-      this.count = 0;
-      this.zwinputText = "";
-      this.zhuiwen = false;
-      this.send();
-    },
-
-    toggleZw() {
-      this.zhuiwen = !this.zhuiwen;
-    },
-    showFeek() {
-      this.$nextTick(() => {
-        this.$refs.feek.open();
-      });
-    },
-    //地块图斑定位
-    goLocation(item, index) {
-      if (this.showDetail && this.activeItem.id != item.id) {
-        this.showDetail = false;
-      }
-      // this.activeItem = item;
-      if (this.geojsonLayer) {
-        this.map.removeLayer(this.geojsonLayer);
-        this.geojsonLayer = null;
-      }
-      if (this.identifyGeojsonLayer) {
-        this.map.removeLayer(this.identifyGeojsonLayer);
-      }
-      if (index != undefined) {
-        if (this.dkIndex != index) {
-          this.dkGeo = null;
-          this.dkGeoJson = null;
-        }
-        this.dkIndex = index;
-      }
-      if (this.dkGeo) {
-        this.geojsonLayer = this.dkGeo.addTo(this.map);
-        this.map.fitBounds(this.dkGeo.getBounds());
-      } else {
-        let query =
-          window.ApplicationConfig.landUrl +
-          "/0/query?where=id=" +
-          item.id +
-          "&" +
-          "geometryType=esriGeometryPoint&inSR=4490&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&" +
-          "maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&" +
-          "outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&f=json";
-        axios.get(query).then((data) => {
-          console.log(data);
-          if (data.data.features.length < 1) {
-            this.$Message.info("未查询到数据");
-            return;
-          }
-          this.land = data.data.features[0].attributes;
-          var geojson = arcgisToGeoJSON(data.data.features[0].geometry);
-          var geos = L.geoJSON(geojson, {
-            style: function (feature) {
-              return { color: "#3BA5FF" };
-            },
-          });
-          this.dkGeo = geos;
-          this.dkGeoJson = geojson;
-          this.geojsonLayer = geos.addTo(this.map);
-          this.map.fitBounds(geos.getBounds());
-        });
-      }
-    },
-    //获取地块信息
-    async getActiveItemGeometry(item) {
-      return new Promise((resolve, reject) => {
-        let query =
-          window.ApplicationConfig.landUrl +
-          "/0/query?where=id=" +
-          item.id +
-          "&" +
-          "geometryType=esriGeometryPoint&inSR=4490&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&" +
-          "maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&" +
-          "outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&f=json";
-        axios.get(query).then((data) => {
-          console.log(data);
-          if (data.data.features.length < 1) {
-            this.dkGeo = null;
-            this.dkGeojson = null;
-            return;
-          }
-          var geojson = arcgisToGeoJSON(data.data.features[0].geometry);
-          var geos = L.geoJSON(geojson, {
-            style: function (feature) {
-              return { color: "#3BA5FF" };
-            },
-          });
-          this.dkGeo = geos;
-          this.dkGeoJson = geojson;
-          resolve();
-        });
-      });
-    },
-    //地图绘制清空
-    clearMark() {
-      if (this.markerLayer) {
-        this.map.removeLayer(this.markerLayer);
-        this.markerLayer = null;
-      }
-      if (this.polyline) {
-        this.map.removeLayer(this.polyline);
-        this.polylines = null;
-      }
-      if (this.wktToGeojsonLayer) {
-        this.wktToGeojsonLayer.forEach((item) => {
-          this.map.removeLayer(item);
-        });
-        this.wktToGeojsonLayer = null;
-      }
-      this.dkIndex = -1;
-      this.hoverDkIndex = -1;
-      this.hightMarker(-1);
-      this.zoom = 0;
-      this.activeItem = null;
-    },
-    //地类分析-图斑定位-叠加出相交地块
-    goWkt(wkts) {
-      if (this.wktToGeojsonLayer) {
-        this.wktToGeojsonLayer.forEach((item) => {
-          this.map.removeLayer(item);
-        });
-      }
-      this.wktToGeojsonLayer = [];
-      var originGeom = this.dkGeoJson;
-      //当前地块ID
-      if (this.geojsonLayer == null) {
-        this.goLocation(this.activeItem, this.dkIndex);
-      }
-      const bounds = L.latLngBounds();
-      wkts.forEach((t) => {
-        var geojson = wkt.parse(t);
-        //定位
-        var geos = L.geoJSON(geojson, {
-          style: function (feature) {
-            return { color: "#ffff00" };
-          },
-        });
-        var layer = geos.addTo(this.map);
-        this.wktToGeojsonLayer.push(layer);
-        //相交
-        let intersectGeo = turf.intersect(originGeom, geojson);
-        if (intersectGeo) {
-          var inner = L.geoJSON(intersectGeo, {
-            style: function (feature) {
-              return { color: "#ff0000" };
-            },
-          });
-          var innnerlayer = inner.addTo(this.map);
-          this.wktToGeojsonLayer.push(innnerlayer);
-        }
-
-        bounds.extend(geos.getBounds());
-      });
-      this.map.fitBounds(bounds);
-    },
-    //详情页tab切换地图绘制相关清空
-    toggleInfoTab() {
-      if (this.markerLayer) {
-        this.map.removeLayer(this.markerLayer);
-        this.markerLayer = null;
-      }
-      if (this.polyline) {
-        this.map.removeLayer(this.polyline);
-        this.polylines = null;
-      }
-      if (this.wktToGeojsonLayer) {
-        this.wktToGeojsonLayer.forEach((item) => {
-          this.map.removeLayer(item);
-        });
-        this.wktToGeojsonLayer = null;
-      }
-    },
-    //路线绘制
-    goPointMark(item) {
-      var center = item.center;
-      var cp = item.cp;
-      if (this.markerLayer) {
-        this.map.removeLayer(this.markerLayer);
-        this.markerLayer = null;
-      }
-      if (center != "") {
-        var centerList = center.split(",");
-        this.markerLayer = L.marker([centerList[1], centerList[0]], {
-          icon: L.icon({
-            iconUrl: "~@/assets/image/staticImage/icon-end.png", // 标点图标地址
-            iconSize: [50, 50], // 图标大小
-          }),
-        })
-          .addTo(this.map)
-          .bindPopup(item.name);
-        if (this.dkGeo) {
-          const bounds = L.latLngBounds();
-          bounds.extend(this.dkGeo.getBounds());
-          var pointLng = L.latLngBounds([[centerList[1], centerList[0]]]);
-          bounds.extend(pointLng);
-          // this.map.fitBounds(bounds);
-          this.map.fitBounds(bounds, { padding: [10, 10] });
-          if (this.zoom == 0) {
-            this.zoom = this.map.getZoom();
-          }
-        } else {
-          let query =
-            window.ApplicationConfig.landUrl +
-            "/0/query?where=id=" +
-            this.activeItem.id +
-            "&" +
-            "geometryType=esriGeometryPoint&inSR=4490&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&" +
-            "maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&" +
-            "outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&f=json";
-          axios.get(query).then((data) => {
-            console.log(data);
-            if (data.data.features.length < 1) {
-              return;
-            }
-            this.land = data.data.features[0].attributes;
-            var geojson = arcgisToGeoJSON(data.data.features[0].geometry);
-            var geos = L.geoJSON(geojson, {
-              style: function (feature) {
-                return { color: "#3BA5FF" };
-              },
-            });
-            this.dkGeo = geos;
-            this.dkGeoJson = geojson;
-            const bounds = L.latLngBounds();
-            bounds.extend(geos.getBounds());
-
-            var pointLng = L.latLngBounds([[centerList[1], centerList[0]]]);
-            bounds.extend(pointLng);
-            this.map.fitBounds(bounds, { padding: [10, 10] });
-            if (this.zoom == 0) {
-              this.zoom = this.map.getZoom();
-            }
-          });
-        }
-      }
-      //路线
-      var token = window.ApplicationConfig.tk;
-      let that = this;
-      // var token = "6dfd31e3b55a8466f34997aee5551a9c";
-      var routerUrl = window.ApplicationConfig.routeUrl;
-      var url = `${routerUrl}{"orig":"${center}","dest":"${cp}","style":"1"}&type=search&tk=${token}`;
-      axios.get(url).then((res) => {
-        if (res.data) {
-          if (that.polyline) {
-            that.map.removeLayer(that.polyline);
-          }
-          var data = res.data
-            .substring(
-              res.data.indexOf("<routelatlon>") + 13,
-              res.data.indexOf("</routelatlon>")
-            )
-            .split(";");
-          data = data.slice(0, data.length - 1);
-          var latlngs = [];
-          data.forEach((item) => {
-            var i = item.split(",").reverse();
-            latlngs.push(i);
-          });
-          that.polyline = L.polyline(latlngs, { color: "red" }).addTo(that.map);
-          // that.map.fitBounds(that.polyline.getBounds());
-          if (latlngs.length >= 20) {
-            if (item.unit == "km" && item.distance >= 1.7) {
-              that.map.setZoom(that.zoom - 3);
-              if (latlngs.length >= 30) {
-                that.map.setZoom(that.zoom - 4);
-              }
-            } else {
-              that.map.setZoom(that.zoom - 2);
-            }
-          } else {
-            that.map.setZoom(that.zoom - 1);
-          }
-          that.$refs.znxz.showDistance(item);
-        }
-      });
-    },
-    //所有地块仿百度地图绘制
-    showXgdkCenterPoint() {
-      if (this.dkMarkerLayer) {
-        this.dkMarkerLayer.forEach((item) => {
-          this.map.removeLayer(item);
-        });
-        this.dkMarkerLayer = [];
-      }
-      const bounds = L.latLngBounds();
-      this.xgdk.forEach((item, i) => {
-        var center = item.center_wkt
-          .substring(6, item.center_wkt.length - 1)
-          .replace(" ", ",");
-        var centerList = center.split(",");
-        var className = "point-div-icon";
-        var myIcon = L.divIcon({
-          html: i > -1 ? "<div>" + (i + 1) + "<div>" : "<div><div>",
-          className: className,
-          //图标大小
-          iconSize: [32, 32],
-        });
-        var marker = L.marker([centerList[1], centerList[0]], {
-          icon: myIcon,
-          properties: { p: i },
-        }).addTo(this.map);
-        let that = this;
-        marker.on("mouseover", function (e) {
-          that.hoverDkIndex = i;
-        });
-        marker.on("mouseout", function (e) {
-          that.hoverDkIndex = -1;
-        });
-        marker.on("click", function (e) {
-          that.showDetailModal(that.xgdk[i], i);
-        });
-        this.dkMarkerLayer.push(marker);
-        var pointLng = L.latLngBounds([[centerList[1], centerList[0]]]);
-        bounds.extend(pointLng);
-      });
-      this.map.fitBounds(bounds);
-    },
-    //埋点
-    async burialPoint() {
-      let p = {
-        question: this.querQuestion,
-        answer: this.answer,
-      };
-      landMethods.burialPoint(p).then((res) => {
-        if (res.code == 200) {
-          console.log("问答--burialPoint");
-        }
-      });
-    },
-    //ai大模型请求
-    send: _.debounce(async function () {
-      let that = this;
-      this.showResult = false;
-      this.zhuiwen = false;
-      if (this.eventSource) {
-        this.eventSource.close();
-        this.loading = false;
-        this.eventSource = null;
-      }
-      if (this.ctrlAbout) {
-        this.ctrlAbout.abort();
-      }
-      if (this.dkMarkerLayer) {
-        this.dkMarkerLayer.forEach((item) => {
-          this.map.removeLayer(item);
-        });
-        this.dkMarkerLayer = [];
-      }
-      if (this.interval) {
-        clearInterval(this.interval);
-      }
-      this.activeIndex = 0;
-      this.interval = setInterval(() => {
-        if (this.activeIndex < this.steps.length - 2) {
-          this.activeIndex = this.activeIndex + 1;
-        }
-      }, 5000);
-
-      var question = this.wt.trim();
-      if (this.zwinputText != "") {
-        question = question + ",其中" + this.zwinputText.trim();
-      }
-      this.querQuestion = question;
-      this.summary = "";
-      this.xgdk = [];
-      this.activeIndex = 0;
-      this.hintText = "检索中...";
-      this.messages.push({
-        id: uuid(),
-        content: question,
-        source: "user",
-        timestamp: new Date().getTime(),
-      });
-
-      //清空输入框文字
-      // this.inputText = "";
-
-      //发送请求
-      //建立SSE连接
-      this.loading = true;
-      this.startTime = new Date().getTime();
-      this.checkInterval = setInterval(() => {
-        this.checkTimeOut();
-      }, this.gInterval);
-      // 建立连接
-      // let eventSource = new EventSource(
-      //   `${window.ApplicationConfig.subscribeUrl}${this.inputText.trim()}`
-      // );
-      if (!this.ctrlAbout) {
-        this.ctrlAbout = new AbortController();
-      }
-      //todo
-      const signal = this.ctrlAbout.signal;
-      await fetchEventSource(window.ApplicationConfig.subscribeUrl, {
-        method: "POST",
-        openWhenHidden: true,
-        headers: {
-          "Content-Type": "application/json",
-        },
-        body: JSON.stringify({
-          data: question,
-          history: this.histories.toArray().flat() || [],
-        }),
-        signal: signal,
-        async onmessage(msg) {
-          const { data } = msg;
-          if (data) {
-            that.handleData({ data: data }, question);
-          }
-        },
-
-        onerror(err) {
-          console.log("请求报错--");
-          that.loading = false;
-          that.count++;
-
-          if (that.interval) {
-            clearInterval(that.interval);
-          }
-          that.activeIndex = 0;
-          // if (that.count == 1) {
-          //   that.send();
-          // } else {
-          //   that.count = 0;
-          //   that.loading = false;
-          //   if (that.ctrlAbout) {
-          //     that.ctrlAbout.abort();
-          //   }
-          // }
-          that.loading = false;
-          if (that.ctrlAbout) {
-            that.ctrlAbout.abort();
-          }
-          throw err;
-        },
-      }).catch((err) => {
-        console.log(err);
-        console.log("请求报错:" + err);
-        that.loading = false;
-        if (that.ctrlAbout) {
-          that.ctrlAbout.abort();
-        }
-      });
-    }, 500),
-    handleData(e, question) {
-      let T = this;
-      if (e.data != "[FINISH]" && e.data != "[DONE]") {
-        const responseData = JSON.parse(e.data);
-        const responses = responseData["agent_responses"];
-        console.log(responses);
-        const lastRes = responses[responses.length - 1];
-        var lastUpRes = null;
-        responses.forEach((item, index) => {
-          if (
-            item.exec_res &&
-            typeof item.exec_res === "string" &&
-            item.exec_res.indexOf("\n```json\n") > -1
-          ) {
-            lastUpRes = responses[index];
-          }
-        });
-        const user_request = responseData.user_request;
-        const conversationId = lastRes["agent_id"];
-        let message = T.messages.find(({ id }) => id === conversationId);
-        const executed = lastRes["executed"];
-        const agentName = lastRes["agent_name"];
-        const agentNameCn = lastRes["agent_name_cn"];
-        const execRes = lastRes["exec_res"];
-
-        const lastChoice = lastRes.choices[lastRes.choices.length - 1];
-        const choiceId = lastChoice["choice_id"];
-        let choiceMessage = T.messages.find(({ id }) => id === choiceId);
-        if (window.ApplicationConfig.aiAgent.indexOf(agentName) >= 0) {
-          if (message) {
-            if (lastChoice.role === "assistant" && !lastChoice.history) {
-            }
-
-            if (
-              agentName === "summary" &&
-              lastChoice.role === "assistant" &&
-              !executed
-            ) {
-              T.loading = false;
-              T.summary = lastChoice.content;
-              T.hzData.forEach((item, index) => {
-                if (index == T.hzData.length - 1) {
-                  T.hzData[index].summary = lastChoice.content;
-                  T.$forceUpdate();
-                }
-              });
-            }
-            if (agentName === "summary" && executed && execRes) {
-              T.summary = execRes;
-              T.showResult = true;
-              T.loading = false;
-              if (lastUpRes) {
-                var exec_res = lastUpRes.exec_res
-                  .replaceAll("\n```json\n", "")
-                  .replaceAll("\n```\n", "");
-                exec_res = JSON.parse(exec_res);
-                var dk = exec_res;
-                dk.sort(function (a, b) {
-                  return b.comprehensive_score - a.comprehensive_score;
-                });
-                T.xgdk = dk;
-                T.showXgdkCenterPoint();
-                T.answer=e.data;
-                T.burialPoint();
-              } else {
-                T.xgdk = [];
-              }
-              T.activeIndex = T.steps.length - 1;
-              // T.hintText = "检索完成";
-              T.hzData.forEach((item, index) => {
-                if (index == T.hzData.length - 1) {
-                  T.hzData[index].summary = execRes;
-                  T.hzData[index].loading = false;
-                  T.zwinputText = "";
-                }
-              });
-              clearInterval(T.checkInterval);
-            }
-          } else {
-            T.messages.push({
-              id: conversationId,
-              content: "",
-              source: "ai",
-              loading: true,
-              timestamp: new Date().getTime(),
-            });
-          }
-        }
-      } else {
-        if (e.data == "[FINISH]") {
-          console.log("SSE连接关闭");
-          T.count = 0;
-          if (T.eventSource) {
-            T.eventSource.close();
-          }
-          if (T.interval) {
-            clearInterval(T.interval);
-          }
-          T.messages.forEach((item, index) => {
-            if (item.loading) {
-              T.messages.splice(index, 1);
-            }
-          });
-
-          T.loading = false;
-
-          T.addHistory(question, T.messages[T.messages.length - 1].content);
-        }
-      }
-    },
-    /**
-     * 添加多轮对话效果
-     * @param question
-     * @param ans
-     */
-    addHistory(question, ans) {
-      this.histories.enqueue([
-        {
-          type: 1,
-          data: question,
-        },
-        {
-          type: 2,
-          data: ans,
-        },
-      ]);
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.ivu-spin-fix {
-  border-radius: 10px;
-  position: relative;
-  height: 200px;
-}
-
-.industria-land-detail {
-  width: 100%;
-  position: relative;
-  height: 100%;
-  .map-content {
-    position: absolute;
-    width: 100%;
-    top: 80px;
-    height: calc(100% - 80px);
-    .content {
-      width: 100%;
-      height: 100%;
-      position: relative;
-      .map {
-        width: 100%;
-        z-index: 10;
-        height: 100%;
-      }
-      .right-tool {
-        display: flex;
-        position: absolute;
-        top: 20px;
-        right: 20px;
-        z-index: 21;
-
-        .layer-container {
-          .layer-panel {
-            height: 100%;
-            cursor: pointer;
-            width: 130px;
-            height: 38px;
-            background: #ffffff;
-            border-radius: 8px;
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            .img {
-              width: 25px;
-              margin-right: 8px;
-              height: 25px;
-            }
-            span {
-              font-family: Alibaba PuHuiTi 2;
-              font-weight: normal;
-              font-size: 16px;
-              color: #333333;
-            }
-            .c {
-              color: #fff;
-            }
-          }
-          .checked {
-            background: #2879e7;
-          }
-        }
-
-        .c {
-          margin-right: 20px;
-        }
-        .layer-content-border {
-          position: absolute;
-          right: 135px;
-          top: 0px;
-          padding: 0px 10px;
-          overflow-y: auto;
-          z-index: 99;
-          .layer-content {
-            z-index: 99;
-            background: #ffffff;
-            border: 1px solid #e4e7ea;
-            border-radius: 8px;
-            padding: 10px 20px;
-            max-height: 755px;
-            box-shadow: 0px 6px 5px 0px rgba(194, 210, 237, 0.3);
-            cursor: pointer;
-            width: 250px;
-
-            border-radius: 5px;
-            z-index: 1;
-
-            .item {
-              width: 100%;
-              .name {
-                color: #333;
-                font-size: 18px;
-                font-weight: bold;
-              }
-
-              .checkbox {
-                // color:#6dcff6;
-                color: #333;
-                margin-left: 35px;
-                font-size: 16px;
-                cursor: pointer;
-              }
-
-              .ivu-checkbox-inner {
-                margin-right: 8px;
-                cursor: pointer;
-                background-color: transparent;
-                border: 1px solid #2879e7;
-              }
-            }
-          }
-        }
-      }
-      .legend-panel {
-        position: absolute;
-        right: 10px;
-        padding: 20px;
-        cursor: pointer;
-        border-radius: 10px;
-        background: rgba(255, 255, 255, 0.9);
-        bottom: 10px;
-        z-index: 19;
-        .name {
-          font-family: Alibaba PuHuiTi 2;
-          font-weight: 500;
-          font-size: 16px;
-          color: #333333;
-        }
-        .layer-legend {
-          margin-top: 10px;
-        }
-        .layer-legend ul li {
-          padding: 0;
-          margin: 0;
-          list-style: none;
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          color: #333;
-          margin-bottom: 5px;
-        }
-        .layer-legend ul li i {
-          display: inline-block;
-          width: 20px;
-          border: 1px solid transparent;
-          height: 20px;
-          margin-right: 8px;
-        }
-        .label {
-          width: 100%;
-          font-size: 14px;
-          display: flex;
-        }
-        .zl {
-          display: flex;
-          flex-direction: row;
-          margin-top: 5px;
-        }
-      }
-
-      .left-panel {
-        width: 486px;
-        padding: 31px 28px 30px 26px;
-        z-index: 11;
-        height: 100%;
-        position: absolute;
-        left: 0;
-        top: 0;
-        background: linear-gradient(-30deg, #d6e8fb, #ffffff);
-        .title {
-          height: 59px;
-          font-family: REEJI-FlashSansN95;
-          font-weight: 900;
-          font-size: 24px;
-          color: #333333;
-          cursor: pointer;
-          line-height: 36px;
-        }
-        .jsz {
-          margin: 32px 0px 17px 0px;
-          display: flex;
-          height: 32px;
-          align-items: center;
-          img {
-            width: 32px;
-            margin-right: 14px;
-            height: 32px;
-          }
-          font-family: Microsoft YaHei;
-          font-weight: bold;
-          font-size: 18px;
-          color: #2879e7;
-        }
-        .steps {
-          display: flex;
-          margin-bottom: 41px;
-          padding-left: 7px;
-          .item {
-            display: flex;
-            cursor: pointer;
-            .name-panel {
-              display: flex;
-              flex-direction: column;
-              .icon {
-                height: 36px;
-                width: 36px;
-                margin: 0px 12px;
-                margin-bottom: 12px;
-              }
-              .name {
-                width: 64px;
-                font-family: Microsoft YaHei;
-                font-weight: bold;
-                font-size: 16px;
-                color: #333333;
-              }
-              .c {
-                color: #666666;
-              }
-            }
-            .line {
-              width: 60px;
-              height: 2px;
-              margin-top: 17px;
-              background: #bbd4f0;
-            }
-            .checked {
-              background: #10d295;
-            }
-          }
-        }
-        .tab-panel {
-          padding-left: 3px;
-          display: flex;
-          .item {
-            display: flex;
-            margin-right: 48px;
-            cursor: pointer;
-            flex-direction: column;
-            .name {
-              width: 120px;
-              height: 20px;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              font-size: 20px;
-              color: #465d7c;
-              line-height: 36px;
-            }
-            .selected {
-              font-weight: bold;
-              color: #333333;
-            }
-            .line {
-              margin-top: 20px;
-              width: 116px;
-              height: 6px;
-              background: url("~@/assets/image/cyyd/tab-select.png") no-repeat
-                center;
-              background-size: 100% 100%;
-            }
-          }
-        }
-        .tab-content {
-          width: 100%;
-          height: calc(100% - 260px);
-          position: relative;
-          .text {
-            margin: 31px 0px 28px 5px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            line-height: 30px;
-            font-size: 16px;
-            color: #666666;
-          }
-          .spin {
-            margin: 31px 0px 28px 5px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            line-height: 30px;
-            height: 100px;
-            display: flex;
-            font-size: 16px;
-            justify-content: center;
-            align-items: center;
-            color: #666666;
-          }
-          .btns-panel {
-            display: flex;
-            justify-content: flex-end;
-            height: 28px;
-            align-items: center;
-            padding-left: 2px;
-            .left-btn {
-              display: flex;
-              height: 28px;
-              display: none;
-              align-items: center;
-              .icon {
-                width: 20px;
-                height: 20px;
-              }
-              .diver {
-                width: 11px;
-                height: 28px;
-              }
-              .alias {
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                font-size: 16px;
-                color: #465d7c;
-                margin-right: 32px;
-              }
-            }
-            .right-btn {
-              display: flex;
-              height: 28px;
-              align-items: center;
-              .zw {
-                width: 64px;
-                height: 28px;
-                cursor: pointer;
-                text-align: center;
-                line-height: 28px;
-                background: rgba(255, 255, 255, 0.5);
-                border-radius: 5px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                font-size: 16px;
-                margin-right: 7px;
-                color: #4e8de2;
-              }
-
-              .zw:hover {
-                border: 1px solid #4e8de2;
-              }
-              .checked {
-                border: 1px solid #4e8de2;
-              }
-              .feek {
-                width: 100px;
-                background: #be0d0a;
-                margin-right: 20px;
-                border: 1px solid #be0d0a;
-                color: white;
-              }
-              .feek:hover {
-                border: 1px solid #be0d0a;
-              }
-              .icon {
-                width: 20px;
-                height: 20px;
-              }
-            }
-          }
-          .textarea-panel {
-            margin: 28px 3px 0px 3px;
-            width: 424px;
-            height: 90px;
-            background: #ffffff;
-            border-radius: 10px;
-            position: relative;
-            padding: 18px 0px 0px 19px;
-            textarea {
-              border: none;
-              resize: none;
-              width: calc(100% - 60px);
-              font-weight: normal;
-              font-size: 18px;
-              &:focus-visible {
-                outline: none;
-              }
-              &::placeholder {
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                font-size: 16px;
-                color: #999999;
-              }
-            }
-            .btn {
-              width: 40px;
-              height: 40px;
-              position: absolute;
-              right: 17px;
-              cursor: pointer;
-              bottom: 14px;
-              display: flex;
-              align-items: center;
-              justify-content: center;
-              background: linear-gradient(90deg, #5c62ea, #517de2);
-              border-radius: 20px;
-              img {
-                width: 20px;
-                height: 20px;
-              }
-            }
-          }
-        }
-        .xg-title {
-          height: 20px;
-          margin-top: 28px;
-          display: flex;
-          align-items: center;
-          margin-bottom: 22px;
-          img {
-            width: 20px;
-            margin-right: 11px;
-            height: 20px;
-            cursor: pointer;
-          }
-          .name {
-            font-family: Microsoft YaHei;
-            font-weight: bold;
-            font-size: 18px;
-            margin-right: 17px;
-            color: #333333;
-          }
-        }
-
-        .table-panel {
-          padding-bottom: 20px;
-          .th {
-            height: 40px;
-            background: #ffffff;
-            border-radius: 10px;
-            margin-bottom: 10px;
-            display: flex;
-
-            .it {
-              flex: 1.2;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              font-size: 14px;
-              cursor: pointer;
-              color: #465d7c;
-              padding: 0px 3px;
-              height: 40px;
-              text-align: center;
-              line-height: 40px;
-            }
-
-            .blue {
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              font-size: 14px;
-              color: #2879e7;
-            }
-            .xh {
-              flex: 0.8;
-            }
-            .text {
-              flex: 1.5;
-            }
-          }
-          .hintText {
-            margin-top: 18px;
-          }
-          .tr {
-            display: flex;
-            border-radius: 2px;
-            cursor: pointer;
-            padding: 21px 0px 19px 0px;
-            border-bottom: 1px solid rgba(255, 255, 255, 0.5);
-            align-items: center;
-            .it {
-              flex: 1.2;
-              text-align: center;
-              padding: 0px 3px;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              font-size: 14px;
-              color: #465d7c;
-              display: flex;
-              justify-content: center;
-              align-items: center;
-              .info {
-                cursor: pointer;
-                display: flex;
-                justify-content: center;
-                // padding: 6px 0px;
-                width: 20px;
-                height: 20px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                font-size: 14px;
-                color: #2879e7;
-              }
-            }
-            .c:hover {
-              cursor: pointer;
-              color: #2879e7;
-            }
-            .xh {
-              flex: 0.8;
-            }
-            .text {
-              flex: 1.5;
-            }
-          }
-          .tr:hover {
-            background: white;
-            border-radius: 10px;
-          }
-          .checked {
-            background: white;
-            border-radius: 5px;
-          }
-        }
-      }
-    }
-  }
-}
-</style>
-
-<style>
-@import "~leaflet/dist/leaflet.css";
-@import "~leaflet.markercluster/dist/MarkerCluster.css";
-@import "~leaflet.markercluster/dist/MarkerCluster.Default.css";
-.leaflet-control-attribution {
-  margin: 10px !important;
-  border-radius: 8px;
-  height: 30%;
-  padding: 5px;
-}
-</style>
-
-<style lang="scss">
-.info-modal {
-  .ivu-modal-content {
-    overflow: hidden;
-    width: 100%;
-    height: 200px;
-    .ivu-modal-close .ivu-icon-ios-close {
-      display: none;
-    }
-    .ivu-modal-header {
-      display: none;
-    }
-    .ivu-modal-body {
-      width: 100%;
-      height: 100%;
-      padding: 20px;
-      display: flex;
-      flex-direction: column;
-      .input {
-        width: 100%;
-        height: calc(100% - 40px);
-        border-color: transparent;
-      }
-      textarea {
-        width: 100%;
-        border: none;
-        resize: none;
-        font-weight: normal;
-        line-height: 26px;
-        height: 100%;
-        background: transparent;
-        font-size: 18px;
-        &:focus-visible {
-          outline: none;
-        }
-
-        &::placeholder {
-          font-family: Alibaba PuHuiTi 2;
-          font-weight: normal;
-          font-size: 18px;
-          color: #acb1c1;
-        }
-      }
-      .bottom {
-        height: 40px;
-        display: flex;
-        justify-content: space-between;
-        .name {
-          color: #666;
-          cursor: pointer;
-          font-size: 16px;
-        }
-        .send-btn {
-          cursor: pointer;
-          width: 110px;
-          position: absolute;
-          right: 33px;
-          bottom: 20px;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          height: 40px;
-          background: linear-gradient(90deg, #5c62ea, #517de2);
-          border-radius: 20px;
-          .icon {
-            width: 20px;
-            height: 20px;
-            margin-right: 6px;
-          }
-          font-family: Alibaba PuHuiTi 2;
-          font-weight: normal;
-          font-size: 16px;
-          color: #ffffff;
-        }
-        .send-btn:hover {
-          background: #5c62ea;
-        }
-      }
-    }
-  }
-}
-</style>
-
-<style >
-.point-div-icon {
-  width: 36px !important;
-  height: 52px !important;
-  text-align: center !important;
-  font-size: 18px;
-  padding-top: 5px;
-  color: white;
-  cursor: pointer;
-  background: url("~@/assets/image/staticImage/icon-red.png");
-  background-size: cover;
-}
-
-.point-div-icon:hover {
-  width: 36px !important;
-  height: 52px !important;
-  background: url("~@/assets/image/staticImage/icon-blue.png");
-  background-size: cover;
-}
-.highlight-div-icon {
-  width: 36px !important;
-  height: 52px !important;
-  text-align: center !important;
-  font-size: 18px;
-  padding-top: 5px;
-  color: white;
-  cursor: pointer;
-  background: url("~@/assets/image/staticImage/icon-blue.png");
-  background-size: cover;
-}
-</style>

+ 0 - 16
web_ui/src/views/industrial-land/IndustrialLandSurvey.vue

@@ -1,16 +0,0 @@
-<template>
-  <div class="industry-survey"></div>
-</template>
-
-<script>
-export default {};
-</script>
-
-<style lang="scss" scoped>
-.industry-survey {
-  width: 100%;
-  height: 100%;
-  background: url("~@/assets/image/bg-gyyd.png") no-repeat center;
-  background-size: 100% 100%;
-}
-</style>