管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-05-16 dae8fb08b9ff7327da86ed249c9c97a87c90e6f2
发布管理,图层管理修改
已修改16个文件
1223 ■■■■■ 文件已修改
src/App.vue 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/index.css 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuTop.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpaceTop.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/login.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapol.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 308 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/preview_map.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/service.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 495 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/maplayer.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/uploadmanage.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -1,8 +1,5 @@
<template>
  <div
    id="app"
  >
  <div id="app">
    <router-view />
  </div>
</template>
@@ -17,12 +14,13 @@
    return {};
  },
  created() {
  },
  mounted () {
  mounted() {
    window.addEventListener('beforeunload', e => {
      sessionStorage.setItem('beforeunload', 1);
    });
    // 监听页面刷新
    if (sessionStorage.getItem('beforeunload') == 1) {
      let name = sessionStorage.getItem("routerName");
@@ -33,12 +31,37 @@
        })
      } else {
        this.$nextTick(function () {
         this.$router.push({ path: '/' });  //不存在存储,去主页
          this.$router.push({ path: '/' });  //不存在存储,去主页
        })
      }
    }
    this.addListenerExpire();
  },
  beforeDestroy() { },
  methods: {
    addListenerExpire() {
      var timeViewer = setInterval((res) => {
        if (this.$store.state.listenTime && window.localStorage.getItem("LFToken")) {
          var result = JSON.parse(window.localStorage.getItem("LFToken"))
          var time = this.$store.state.listenTime + (parseInt(result.autoLogOut) * 60 * 1000);
          var timeire = new Date().getTime();
          var token_time = result.expire;
          if (timeire >= token_time) {
            router.push('/login')
            localStorage.removeItem("LFToken");
            clearInterval(timeViewer)
          }
          if (timeire >= time) {
            router.push('/login')
            localStorage.removeItem("LFToken");
            clearInterval(timeViewer)
          }
        }
      }, 5000)
    }
  },
};
</script>
<style lang="less" scoped>
@@ -56,9 +79,5 @@
  scrollbar-face-color: #dfebff;
  /*滚动条整体颜色*/
  scrollbar-track-color: #536c97;
}
</style>
src/assets/css/index.css
@@ -297,7 +297,7 @@
.ol-scale-line {
    bottom: 55px !important;
    right: 10px
    right: 110px
}
.ol-scale-line {
src/components/MapView/mapMenuTop.vue
@@ -9,7 +9,7 @@
        <el-select
          v-model="menuTopFrom.queryLayer"
          :title="treeChange"
          placeholder="选择数据"
          placeholder="请选择..."
          :popper-append-to-body="false"
        >
          <el-option
@@ -48,7 +48,7 @@
        <el-select
          @change="changeValue($event)"
          v-model="menuTopFrom.queryType"
          placeholder="选择范围"
          placeholder="请选择..."
          :popper-append-to-body="false"
        >
          <el-option
@@ -271,7 +271,7 @@
  },
  mounted() {
    // this.menuTopFrom.queryType = "rectangle"
    this.menuTopFrom.queryType = "rectangle"
    this.getAllTable()
    this.getPipelineData()
    this.$bus.$on("setExtentBUff", res => {
@@ -389,22 +389,17 @@
    getCheckedNodes() {
      this.layerTabe = [];
      var valTree = this.$refs.tree.getCheckedNodes()
      var parentIds = this.$refs.tree.getHalfCheckedKeys(true)
      if (valTree.length == 0) return
      this.treeChange = [];
      this.menuTopFrom.queryLayer = null;
      if (parentIds.length > 0) {
        this.menuTopFrom.queryLayer = this.$refs.tree.getNode(parentIds[0]).data.label
      } else {
        this.menuTopFrom.queryLayer = valTree[0].label
      }
      this.$store.state.propertiesName = valTree[0];
      this.menuTopFrom.queryLayer = null;
      this.$store.state.propertiesName = valTree[0];
      this.treeChange = [];
      for (var i = 0; i < valTree.length; i++) {
        if (valTree[i].entity) {
          // if (!this.menuTopFrom.queryLayer) {
          //   this.menuTopFrom.queryLayer = valTree[i].tabDesc;
          // }
          if (!this.menuTopFrom.queryLayer) {
            this.menuTopFrom.queryLayer = valTree[i].tabDesc;
          }
          this.layerTabe.push(valTree[i])
          // this.treeChange.push(valTree[i])
        }
src/components/MapView/mapSpacePop.vue
@@ -218,7 +218,7 @@
          </el-select>
        </el-form-item>
        <el-form-item v-show="!fromSqlflag">
          <el-input v-model="formSql.value" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.queryContent')"></el-input>
          <el-input v-model="formSql.value"></el-input>
        </el-form-item>
        <el-form-item v-show="fromSqlflag">
          <el-date-picker
@@ -500,54 +500,23 @@
      if (data.code != 200) {
        this.$message.error("列表调用失败")
      }
      const data1 = await inquiry_selectDomains({ name: this.spaceLayer })
      if (data1.code != 200) {
        this.$message.error("列表调用失败")
      }
      this.filedsOption = [];
      this.optionx = []
      this.attributeData = []
      var valadata = data.result
      var laydomain = data1.result
      this.optionx = data1.result
      for (var i in valadata) {
        if (valadata[i].showtype == 1) {
          if (
            valadata[i].domainNa != null &&
            valadata[i].domainNa != undefined
          ) {
            for (var j in laydomain) {
              if (laydomain[j].domName == valadata[i].domainNa) {
                // valadata[i].domainNa = laydomain[j].codeDesc
              }
            }
            valadata[i].domainNa = this.getMatchDomainNa(valadata[i].domainNa)
          }
          this.optionx.push(valadata[i])
          this.filedsOption.push(valadata[i])
          // this.attributeData.push(valadata[i])
          // this.optionx.push(valadata[i])
          this.attributeData.push(valadata[i])
        }
      }
      // this.filedsOption = [];
      // this.optionx = []
      // var valadata = data.result
      // for (var i in valadata) {
      //   if (valadata[i].showtype == 1) {
      //     if (
      //       valadata[i].domainNa != null &&
      //       valadata[i].domainNa != undefined
      //     ) {
      //       valadata[i].domainNa = this.getMatchDomainNa(valadata[i].domainNa)
      //     }
      //   }
      // }
      // this.startFiledAndcondition();
      this.startFiledAndcondition();
      this.showSpacePopLayer()
    },
    appendQueryFilter() {
@@ -676,40 +645,21 @@
      })
      var val_Data = data.result
      this.count = data.count
      for (var i in val) {
        var meson = this.optionx.filter(res => {
          if (res.domCode == val[i].medium) {
            return res
          }
        })
        if (meson.length > 0) {
          val[i].medium = meson[0].codeDesc
        } else {
          val[i].medium = ''
        }
      for (var i in val_Data) {
        var valste = val_Data[i]
        for (var j in this.optionx) {
          if (
            this.optionx[j].domainNa != null &&
            this.optionx[j].domainNa != undefined
          ) {
            valste[this.optionx[j].field] = this.optionx[j].domainNa
          }
        }
      }
      // // // for (var i in val_Data) {
      // // //   var valste = val_Data[i]
      // // //   for (var j in this.optionx) {
      // // //     if (
      // // //       this.optionx[j].domainNa != null &&
      // // //       this.optionx[j].domainNa != undefined
      // // //     ) {
      // // //       console.log(this.optionx[j])
      // // //       // valste[this.optionx[j].field] = this.optionx[j].domainNa
      // // //     }
      // // //   }
      // // // }
      // // for (var j in this.optionx) {
      // //   console.log(this.optionx[j].domainNa)
      // //   // if (this.optionx[j].alias == '输送介质') {
      // //   //   console.log(this.optionx[j].domainNa)
      // //   // }
      // // }
      this.tableData = val
      this.$refs.filterTable.doLayout()
src/components/MapView/mapSpaceTop.vue
@@ -2,7 +2,8 @@
  <div class="spaceBox">
    <el-select
      v-model="menuTopFrom.queryLayer"
      placeholder="请选择数据..."
      @change="menuTreeCheck"
      placeholder="请选择..."
      filterable
      ref="selectTree1"
    >
@@ -81,7 +82,6 @@
      layerData: [
      ],
      defaultProps: {
        children: "children",
        label: "label",
@@ -93,6 +93,15 @@
    this.getAllTable();
  },
  methods: {
    handleNodeClick(data) {
      if (data.children) return;
      this.menuTopFrom.queryLayer = data.tabDesc
      this.$refs.selectTree1.blur();
      this.mapSpaceQueryLayer = data.entity;
      this.$store.state.propertiesName = data;
      this.getCheckedNodes();
    },
    async getAllTable() {
      // const data = await inquiry_SelectTabs();
      const data = await dataLib_selectTabed({
@@ -105,19 +114,51 @@
      }
      var option = data.result;
      this.layerData = getTreeData(option)
      // var option = data.result;
      // this.layerData = option.filter((res) => {
      // = option.filter((res) => {
      //   return res;
      // });
    },
    handleNodeClick(data) {
      if (data.children) return;
      this.menuTopFrom.queryLayer = data.tabDesc
      this.$refs.selectTree1.blur();
      this.mapSpaceQueryLayer = data.entity;
      this.$store.state.propertiesName = data;
      this.getCheckedNodes();
      // });
      // this.layerData = getTreeData(option)
      // var val = data.result
      // var std = [];
      // val.filter((item) => {
      //   if (std.indexOf(item.bak) == -1) {
      //     std.push(item.bak);
      //     this.layerData.push(
      //       {
      //         val: item.bak,
      //         label: item.bak,
      //         children: [],
      //       }
      //     )
      //   }
      // });
      // for (var i in this.layerData) {
      //   var item = this.layerData[i];
      //   for (var j in val) {
      //     var res = val[j];
      //     if (item.val === res.bak) {
      //       res.label = res.tabDesc
      //       this.layerData[i].children.push(res)
      //     }
      //   }
      // }
      // for (var i in option) {
      //   // console.log(option[i].tableType)
      //   var val_Data = option[i];
      //   val_Data.id = '1' + i;
      //   val_Data.label = val_Data.tabDesc;
      //   if (option[i].ns == 'bd') {
      //     this.layerData[0].children.push(val_Data);
      //   } else {
      //     this.layerData[1].children.push(val_Data);
      //   }
      // }
    },
    getCheckedNodes() {
      this.$store.state.mapSpaceQueryLayer = this.mapSpaceQueryLayer;
src/components/login.vue
@@ -26,7 +26,10 @@
      ></iframe>
    </div>
    <div class="title_img">
      <img src="../assets/img/lg_03.png" alt="" />
      <img
        src="../assets/img/lg_03.png"
        alt=""
      />
    </div>
    <div class="login">
      <div class="login_title">
@@ -46,7 +49,10 @@
            size="meddle"
            autocomplete="off"
          >
            <i slot="prefix" class="el-icon-user"></i>
            <i
              slot="prefix"
              class="el-icon-user"
            ></i>
          </el-input>
        </el-form-item>
@@ -58,7 +64,10 @@
            class="nobr"
            autocomplete="off"
          >
            <i slot="prefix" class="el-icon-lock"></i>
            <i
              slot="prefix"
              class="el-icon-lock"
            ></i>
          </el-input>
        </el-form-item>
@@ -73,26 +82,28 @@
            </el-form-item>
          </el-col>
          <el-col :span="6" align="right">
          <el-col
            :span="6"
            align="right"
          >
            <validCode
              v-model="validCode"
              ref="refresh"
              @sendData="getCode"
            ></validCode>
          </el-col>
        </el-form-item>
        <el-form-item>
          <img src="../assets/img/zhengshu.png" alt="" /><span
            style="color: black"
            >证书安装与添加信任站点</span
          >
          <img
            src="../assets/img/zhengshu.png"
            alt=""
          /><span style="color: black">证书安装与添加信任站点</span>
        </el-form-item>
        <el-form-item>
          <img src="../assets/img/document.png" alt="" /><span
            style="color: black"
            >使用帮助文档</span
          >
          <img
            src="../assets/img/document.png"
            alt=""
          /><span style="color: black">使用帮助文档</span>
        </el-form-item>
        <el-form-item>
          <el-button
@@ -101,8 +112,7 @@
            style=""
            :loading="loading"
            @click="submitForm('loginForm')"
            >登录</el-button
          >
          >登录</el-button>
        </el-form-item>
      </el-form>
    </div>
@@ -249,6 +259,7 @@
        time: timeData,
        userid: res.result.createUser,
        expire: res.result.expire,
        autoLogOut: res.result.autoLogOut,
      };
      LfPrems = JSON.stringify(LfPrems);
      localStorage.setItem("LFToken", LfPrems);
src/components/mapol.vue
@@ -35,8 +35,8 @@
    <!--    </div>-->
    <div
      v-show="$store.state.isNaviget"
      class="sindagis-map-compass"
      style=" bottom: 130px; right: 35px;"
    >
      <span
        class="left"
@@ -98,17 +98,17 @@
    init2DMap() {
      var layerBase = [];
      if (!is_production) {
        // window.vectorLayer = new TileLayer({
        //   source: new XYZ({
        //     url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}",
        //   }),
        // })
        window.vectorLayer = new TileLayer({
        var vectorLayer = new TileLayer({
          source: new XYZ({
            url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}",
          }),
        })
        var imageLayer = new TileLayer({
          source: new XYZ({
            url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}",
          }),
        })
        layerBase = [vectorLayer]
        layerBase = [vectorLayer, imageLayer]
      }
      window.map = new Map({
        target: "mapol",
@@ -147,10 +147,10 @@
      // var scaleLine = new  ScaleLine({
      //   units: "metric"
      // });
      // map.addControl(scaleLine);
      var scaleLine = new ScaleLine({
        units: "metric"
      });
      map.addControl(scaleLine);
      map.on("moveend", function (e) {
        console.log(($(window).width() - $(".ol-scale-line-inner").width()) + "px");
@@ -297,14 +297,15 @@
}
.ol-scale-line {
  bottom: 55px !important;
  right: 130px !important;
}
.sindagis-map-compass {
  position: absolute;
  right: 50px;
  bottom: 90px;
  z-index: 5;
  right: 25px;
  width: 52px;
  height: 54px;
  background: url("../assets/img/compass.png") 0% 0% / 266px no-repeat;
src/components/mapsdk.vue
@@ -1,10 +1,5 @@
<template>
  <div
    class="mapBox"
    v-loading="loading"
    :element-loading-text="loadingText"
    element-loading-background="rgba(0, 0, 0, 0.8)"
  >
  <div class="mapBox">
    <div id="mapdiv">
      <div
        class="menu_Top box_divm"
@@ -80,24 +75,16 @@
            <el-form
              ref="form"
              :model="coordFrom"
              label-width="50px"
            >
              <el-form-item label="经度:">
                <el-input
                  v-model="coordFrom.lon"
                  placeholder="请输入经度"
                ></el-input>
                <el-input v-model="coordFrom.lon"></el-input>
              </el-form-item>
              <el-form-item label="纬度:">
                <el-input
                  v-model="coordFrom.lat"
                  placeholder="请输入纬度"
                ></el-input>
                <el-input v-model="coordFrom.lat"></el-input>
              </el-form-item>
              <el-form-item label="高度:">
                <el-input
                  v-model="coordFrom.height"
                  placeholder="请输入高度"
                ></el-input>
                <el-input v-model="coordFrom.height"></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
@@ -312,17 +299,7 @@
      </div>
      <!--      <div style="display: flex;">-->
      <div
        style=" position: absolute;
  bottom: 84px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);"
        class="changeTerrain"
        @click="changeTerrainLayer"
      >
        <div
@@ -334,17 +311,7 @@
      <!--      class="center CenDiv"-->
      <div
        @click="changeMenulayer"
        style=" position: absolute;
  bottom: 116px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);"
        class="changeLayer"
      >
        <div
          title="底图切换"
@@ -355,17 +322,7 @@
      <div
        @click="changeMapType"
        style="  position: absolute;
  bottom: 52px;
  right: 46px;
  height: 30px;
  width: 30px;
  z-index: 101;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.5);"
        class="changeMapType"
      >
        <div
          title="2/3维切换"
@@ -689,72 +646,6 @@
        </div>
      </el-dialog>
      <el-dialog
        title="瓦片下载"
        :append-to-body="false"
        :visible.sync="downTitleFlag"
        :close-on-click-modal="false"
        :show-close="false"
        width="30%"
      >
        <el-form
          :model="ruleForm"
          status-icon
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          class="demo-ruleForm"
        >
          <el-form-item
            label="名称"
            prop="title"
          >
            <el-input
              v-model="ruleForm.title"
              size="small"
              placeholder="请输入数据名称..."
            ></el-input>
          </el-form-item>
          <el-form-item
            label="密码"
            prop="pass"
          >
            <el-input
              show-password
              type="password"
              v-model="ruleForm.pass"
              autocomplete="off"
              size="small"
              placeholder="请输入密码..."
            ></el-input>
          </el-form-item>
          <el-form-item
            label="确认密码"
            prop="checkPass"
          >
            <el-input
              show-password
              type="password"
              v-model="ruleForm.checkPass"
              autocomplete="off"
              size="small"
              placeholder="确认密码..."
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              size="small"
              @click='submitTitleDown("ruleForm")'
            >提交</el-button>
            <el-button
              size="small"
              @click='cannelTitleDown("ruleForm")'
            >取消</el-button>
          </el-form-item>
        </el-form>
      </el-dialog>
      <!--      <div-->
      <!--        @click="changeMenulayer"-->
      <!--        class="center CenDiv"-->
@@ -768,11 +659,6 @@
    </div>
    <model-property ref='modelProperty'></model-property>
    <iframe
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
  </div>
</template>
@@ -787,8 +673,7 @@
  comprehensive_selectRoute,
  dataLib_selectFiles, dataQuery_selectFields, dataQuery_selectDomains,
  dataQuery_selectByPage,
  comprehensive_selectPubById, comprehensive_selectModelByGuid, decr,
  encr, inquiry_downloadTiles, sign_getPublicKey
  comprehensive_selectPubById, comprehensive_selectModelByGuid
} from '../api/api'
import { getToken } from '@/utils/auth'
@@ -816,35 +701,6 @@
            }
          }
        }
        callback();
      }
    };
    var checkAge = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('数据名称不能为空'));
      }
      callback();
    };
    var validatePass = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入密码'));
      } else {
        var passwordreg =
          /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/
        if (!passwordreg.test(value)) {
          callback(new Error("密码必须由数字、字母、特殊字符组合,请输入13-20位"))
        }
        callback();
      }
    };
    var validatePass2 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请再次输入密码'));
      } else if (value !== this.ruleForm.pass) {
        callback(new Error('两次输入密码不一致!'));
      } else {
        callback();
      }
    };
@@ -877,23 +733,14 @@
            message: "坐标点经纬度错误,坐标应在[116.xxx, 39.yyy]范围",
          },
        ],
        pass: [
          { validator: validatePass, trigger: 'blur' }
        ],
        checkPass: [
          { validator: validatePass2, trigger: 'blur' }
        ],
        title: [
          { validator: checkAge, trigger: 'blur' }
        ]
      },
      bufFrom: {
        val: 50,
      },
      coordFrom: {
        lon: "",
        lat: "",
        height: "",
        lon: 116.3911,
        lat: 39.9115,
        height: 100000,
      },
      listData: {
        name: null,
@@ -939,15 +786,6 @@
      valueX: 0,
      valueY: 0,
      terrainflag: false,
      downTitleFlag: false,
      downTitleData: null,
      ruleForm: {
        pass: '',
        checkPass: '',
        title: ''
      },
      loadingText: '',
      loading: false,
    };
  },
  mounted() {
@@ -974,85 +812,24 @@
    });
    //模型捕捉
    this.catchmodel()
    this.$bus.$on("titleDown", res => {
      this.setDownLoadTitle(res);
    })
    window.localStorage.setItem('slider_x', this.valueX);
    window.localStorage.setItem('slider_y', this.valueY);
    window.localStorage.setItem('slider_z', this.valueZ);
  },
  methods: {
    setDownLoadTitle(res) {
      this.signGetPublicKey()
      this.downTitleFlag = true;
      this.downTitleData = res;
    },
    async signGetPublicKey() {
      const res = await sign_getPublicKey()
      if (res && res.code == 200) {
        window.encrypt = new JSEncrypt()
        encrypt.setPublicKey(res.result)
      }
    },
    submitTitleDown(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.downTitleData.title = this.ruleForm.title
          // this.downTitleData.pwd = encr(this.ruleForm.pass)
          this.downTitleData.pwd = encrypt.encrypt(this.ruleForm.pass)
          this.getDownLoadTile(this.downTitleData);
          this.cannelTitleDown();
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    async getDownLoadTile(res) {
      this.loading = true;
      this.loadingText = "数据下载中,请稍等..."
      $.ajax({
        url: BASE_URL + "/inquiry/downloadTiles?token=" + getToken(),
        type: "POST",
        data: JSON.stringify(res),
        dataType: 'json', // html、json、jsonp、script、text
        contentType: "application/json", // "application/x-www-form-urlencoded"
        success: (data) => {
          var token = getToken()
          var url = BASE_URL + "/dataLib/downloadFile?token=" + token + "&guid=" + data.result + "&pwd=" + res.pwd;
          $("#downFrame").attr("src", url).click();
          this.loading = false;
          this.loadingText = ""
        },
        error: function (e) {
        }
      });
    },
    cannelTitleDown(formName) {
      this.downTitleFlag = false;
      // this.$refs[formName].resetFields();
      this.ruleForm = {
        pass: '',
        checkPass: '',
        title: ''
      }
    },
    catchmodel() {
      var that = this;
      window.pickedFeature;
      window.pickedColor;
      window.modeCatchHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      window.modeCatchHandler.setInputAction((event) => {
        if (window.pickedColor) {
          window.pickedFeature && (window.pickedFeature.color = window.pickedColor);
        }
        window.pickedFeature && (window.pickedFeature.color = window.pickedColor);
        window.pickedFeature = sgworld.Viewer.scene.pick(event.position);
        if (Cesium.defined(window.pickedFeature)) {
          if (window.pickedFeature.primitive instanceof Cesium.Cesium3DTileset) {
            if (window.pickedFeature && window.pickedFeature.getProperty) {
            if (window.pickedFeature) {
              window.pickedColor = window.pickedFeature.color
              window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3);
@@ -1065,25 +842,32 @@
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
    },
    async setModelInfoData(result) {
      var modelKey = 'id'
      if (result.tileset.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
        if (data.code != 200) {
          return
      var modelKey = 'id';
      debugger
      var modelid;
      if (result.tileset) {
        if (result.tileset.pubid > 0) {
          const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
          if (data.code != 200) {
            return
          } else {
            debugger
            modelKey = JSON.parse(data.result.json).modelid
          }
          if (!modelKey) {
            return this.$message('没有模型主键ID,无法查询数据');
          }
          modelid = pickedFeature.getProperty(modelKey);
        }
        if (!JSON.parse(data.result.json)) {
          return this.$message('没有数据,无法获取主键ID');
        }
        modelKey = JSON.parse(data.result.json).modelid
        if (!modelKey) {
          return this.$message('没有模型主键ID,无法查询数据');
        }
      } else {
        modelid = '3dml' + result.primitive.id;
      }
      var that = this
      var obj = {
        layerid: pickedFeature.primitive.layerId,
        modelid: pickedFeature.getProperty(modelKey)
        modelid: modelid
      }
      const data1 = await comprehensive_selectModelByGuid(obj);
@@ -1101,7 +885,7 @@
      }
      that.$store.state.catModelInfo = {
        id: pickedFeature.getProperty(modelKey),
        id: modelid,
        name: name,
        type: type,
        bak: bak,
@@ -1214,25 +998,24 @@
    changeTerrainLayer() {
      if (this.terrainflag) {
        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
        window.terrainDemLayer = null;
        var option = {
          url: window.sceneConfig.SGUrl,
          layerName: window.sceneConfig.mptName,
          requestVertexNormals: true,
        };
        window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
        });
      } else {
        window.terrainMptLayer.deleteObject();
        window.terrainMptLayer = null;
        window.terrainLayer.deleteObject();
        window.terrainLayer = null;
        window.terrainDemLayer = new Cesium.CesiumTerrainProvider({
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
          url: LFData + '/3d/terrain/dem20230321'
        });
        Viewer.terrainProvider = window.terrainDemLayer
        Viewer.terrainProvider = window.terrainLayer
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000),
          orientation: {
@@ -1410,9 +1193,10 @@
    },
    //定位
    setCoordLocal() {
      var lon = parseFloat(this.coordFrom.lon);
      var lat = parseFloat(this.coordFrom.lat);
      var height = parseFloat(this.coordFrom.height);
      var lon = parseFloat(this.coordFrom.lon)
      var lat = parseFloat(this.coordFrom.lat)
      var height = parseFloat(this.coordFrom.height) == NaN ? parseFloat(this.coordFrom.height) : 100;
      var position = {
        X: lon,
        Y: lat,
@@ -1985,7 +1769,7 @@
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: 10%;
      bottom: 1%;
    }
    .propertiesPop {
      width: 350px;
src/components/preview_map.vue
@@ -1,4 +1,3 @@
<template>
  <div
    id="mapdiv"
@@ -66,11 +65,12 @@
            重载
          </el-button>
          <el-button
            v-if="modelForm.modelid == null"
            v-if="modelForm.modelid == null && $store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="getModeKeyId"
          >模型主键</el-button>
          <el-button
            v-if="$store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="resave"
          >保存</el-button>
@@ -402,7 +402,7 @@
    <undergroundModel ref="undergroundModel" />
  </div>
</template>
<script>
import {
  perms_selectLayers,
@@ -733,26 +733,31 @@
    async setShowModelInfo(result) {
      var modelKey = 'id';
      if (result.tileset.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
        if (data.code != 200) {
          return
        } else {
          modelKey = JSON.parse(data.result.json).modelid
      if (result.tileset) {
        if (result.tileSet.pubid > 0) {
          const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
          if (data.code != 200) {
            return
          } else {
            modelKey = JSON.parse(data.result.json).modelid
          }
          if (!modelKey) {
            return this.$message('没有模型主键ID,无法查询数据');
          }
          this.formInline.Id = result.getProperty(modelKey);
          this.layerID = result.getProperty(modelKey);
        }
        if (!modelKey) {
          return this.$message('没有模型主键ID,无法查询数据');
        }
      } else {
        var id = '3dml' + result.primitive.id;
        this.formInline.Id = id;
        this.layerID = id;
      }
      // this.formInline.title = result.getProperty("name")
      this.formInline.Id = result.getProperty(modelKey);
      this.layerID = result.getProperty(modelKey);
      this.formInline.layerId = result.primitive.layerId;
      this.formInline.layerName = result.primitive.id;
      // this.formInline.title = result.getProperty("name")
      this.startModelData();
      this.dialogVisible = true;
@@ -766,16 +771,13 @@
      if (data.code != 200) {
        return;
      }
      if (data.result == null) {
        this.isShowModel = true;
        this.formInline.name = this.formInline.title;
      } else {
        this.isShowModel = false;
        this.formInline = data.result;
        this.formInline.title = this.formInline.name;
      }
    },
    setChangeTileset(result) {
@@ -798,7 +800,7 @@
      }
    },
    setAddLayers(res) {
      if (res.serveType == "Tileset") {
      if (res.serveType == "Tileset" || res.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
@@ -821,7 +823,7 @@
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.bak != '3dml') {
          if (res.serveType != '3DML') {
            that.getArgsTileset(tileset, res);
          }
@@ -838,8 +840,12 @@
        } else {
          if (res.serveType != '3DML') {
            this.tileSet(tileset, parseFloat(res.elev))
          } else {
            this.reloadTile(tileset, data.result.json)
          }
          this.tileSet(tileset, parseFloat(res.elev))
        }
      } else {
@@ -1114,7 +1120,7 @@
    setTilesetArgs(f) {
      if (!this.app.tileset || this.app.isBusy) return;
      debugger
      var pos = Cesium.Cartesian3.fromDegrees(parseFloat(f.lon), parseFloat(f.lat), parseFloat(f.height));
      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
@@ -1259,6 +1265,9 @@
          if (str.url != null && str.type == 2 && str.serveType == 'Tileset') {
            val.push(str);
          }
          if (str.url != null && str.type == 2 && str.serveType == '3DML') {
            val.push(str);
          }
        });
        var res = this.setTreeData(val);
@@ -1320,7 +1329,7 @@
}
</script>
<style lang="less" scoped>
.previewBox {
  width: 100%;
@@ -1355,4 +1364,4 @@
    visibility: hidden;
  }
}
</style>
</style>
src/store/index.js
@@ -77,8 +77,12 @@
    setAlphaList: [],
    isProjectLayer: [],
    pigCode: null,
    listenTime: null,
  },
  mutations: {
    UPDATE_LISTEN_TIME(state, msg) {
      state.listenTime = msg;
    },
    //获取权限合集
    getPermsEntity(state, msg) {
      state.permsEntity = msg;
src/utils/request.js
@@ -40,15 +40,19 @@
  }
); service.interceptors.response.use(
  (response) => {
    if (window.localStorage.getItem("LFToken") != null) {
      var expire = JSON.parse(window.localStorage.getItem("LFToken")).expire;
      var timeire = new Date().getTime();
      if (timeire >= expire) {
    // if (window.localStorage.getItem("LFToken") != null) {
    //   var expire = JSON.parse(window.localStorage.getItem("LFToken")).expire;
    //   var timeire = new Date().getTime();
    //   console.log(timeire, expire)
    //   if (timeire >= expire) {
        router.push('/login')
        localStorage.removeItem("LFToken");
      }
    }
    //     router.push('/login')
    //     localStorage.removeItem("LFToken");
    //   }
    // }
    store.commit("UPDATE_LISTEN_TIME", response.data.time);
    store.commit("UPDATE_API_COUNT", "sub");
    //console.log(response) 
src/utils/service.js
@@ -40,16 +40,16 @@
  }
); service.interceptors.response.use(
  (response) => {
    if (window.localStorage.getItem("LFToken") != null) {
      var expire = JSON.parse(window.localStorage.getItem("LFToken")).expire;
      var timeire = new Date().getTime();
      if (timeire >= expire) {
    // if (window.localStorage.getItem("LFToken") != null) {
    //   var expire = JSON.parse(window.localStorage.getItem("LFToken")).expire;
    //
    //   if (timeire >= expire) {
        router.push('/login')
        localStorage.removeItem("LFToken");
      }
    }
    //     router.push('/login')
    //     localStorage.removeItem("LFToken");
    //   }
    // }
    store.commit("UPDATE_LISTEN_TIME", response.data.time);
    store.commit("UPDATE_API_COUNT", "sub");
    //console.log(response) 
    //返回因有ResponeType===Blob ,分开处理
src/views/Home.vue
@@ -28,6 +28,7 @@
    };
  },
  methods: {},
};
</script>
 
src/views/Tools/LayerTree.vue
@@ -115,7 +115,7 @@
      <div
        class="edit"
        @click="pellucidity()"
        v-if="showopaque"
        v-if="showlocal"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;透明度
      </div>
@@ -125,14 +125,6 @@
        v-show="shwoHistogram"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;钻孔柱状图
      </div>
      <div
        class="edit"
        v-show="shwoTitle"
        @click="tileDownload()"
      >
        <i class="el-icon-download"></i>&nbsp;&nbsp;瓦片下载
      </div>
      <!-- <div
        class="edit"
@@ -228,7 +220,6 @@
  perms_selectLayers, inquiry_selectDomains, comprehensive_selectPubById,
  project_selectDirAll, project_selectByDirid, dataQuerySelectWktById
} from "../../api/api.js";
import { conditions } from '../Archive/Archive.js';
export default {
  name: "tree",
  components: { queryinfo },
@@ -236,7 +227,6 @@
    return {
      shwoHistogram: false,
      showlocal: false,
      showopaque: false,
      eleId: "",
      isShow: false,
      currentData: "",
@@ -280,47 +270,10 @@
      mptLayer: [],
      optionts: [],
      proValue: null,
      setCheeckedLayer: [],
      shwoTitle: false,
    };
  },
  methods: {
    //瓦片下载
    tileDownload() {
      var that = this;
      this.menuVisible = false
      sgworld.Creator.createSimpleGraphic(
        "rectangle",
        {},
        function (entity) {
          that.getTileRectangle(entity);
          sgworld.Creator.SimpleGraphic.clear()
        }
      );
    },
    getTileRectangle(res) {
      var value = res.rectangle.coordinates.getValue();
      var val = {
        pubid: this.currentData.pubid,
        pwd: "",
        title: "",
        xmax: Cesium.Math.toDegrees(
          value.east
        ),
        xmin: Cesium.Math.toDegrees(
          value.west
        ),
        ymax: Cesium.Math.toDegrees(
          value.north
        ),
        ymin: Cesium.Math.toDegrees(
          value.south
        )
      }
      this.$bus.$emit("titleDown", val)
    },
    //转孔柱状图
    async histogram() {
      this.menuVisible = false
@@ -370,14 +323,10 @@
      this.currentNode = Node;
      this.$store.state.propertiesName = this.currentData;
      this.showModelAttach = false;
      this.shwoTitle = false;
      if (this.currentData.serveType == 'TMS') {
        this.shwoTitle = true
      } else if (this.currentData.serveType == "Tileset") {
      if (this.currentData.serveType == "Tileset" || this.currentData.serveType == "3DML") {
        this.showModelAttach = true;
      } else {
        this.showModelAttach = false;
      }
      if (this.currentData.enName == "s_explorationpoint") {
        this.shwoHistogram = true;
@@ -390,18 +339,10 @@
      } else {
        this.firstLevel = true;
      }
      if (Node.data.children == null && Node.data.serveType == "Tileset") {
      if (Node.data.children == null && Node.data.serveType == "Tileset" || Node.data.serveType == "3DML") {
        this.showlocal = true;
        this.showopaque = true;
      } else if (Node.data.children == null && Node.data.serveType == "TMS") {
        this.showlocal = true;
        this.showopaque = false;
      } else if (Node.data.children == null && Node.data.serveType != "Tileset") {
      } else if (Node.data.children == null && Node.data.serveType != "Tileset" || Node.data.serveType == "3DML") {
        this.showlocal = false;
        this.showopaque = false;
      } else if (Node.data.children == null && Node.data.serveType != "DEM") {
        this.showlocal = false;
        this.showopaque = false;
      }
      this.menuVisible = true;
@@ -543,27 +484,15 @@
    //模型定位
    async positioning() {
    positioning() {
      this.menuVisible = false
      if (this.currentData.serveType == 'Tileset') {
        for (var i in Viewer.scene.primitives._primitives) {
          if (
            Viewer.scene.primitives._primitives[i].id == this.currentData.cnName
          ) {
            Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
          }
        }
      } else if (this.currentData.serveType == 'TMS' && this.currentData.pubid) {
        const data = await comprehensive_selectPubById({ id: this.currentData.pubid })
        if (data.result.geom) {
          var wkt = this.$wkt.parse(data.result.geom);
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
          });
      for (var i in Viewer.scene.primitives._primitives) {
        if (
          Viewer.scene.primitives._primitives[i].id == this.currentData.cnName
        ) {
          Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
        }
      }
    },
    // 编辑节点
    editNode(data) {
@@ -637,7 +566,6 @@
      console.log("tree drop: ", dropNode.label, dropType);
    },
    handleCheckChange(data, checked, indeterminate) {
      if (data.type == 1) {
        this.childOption = [];
        this.getchilds(data);
@@ -646,7 +574,6 @@
        var listTileset = [];
        var listTMS = [];
        var listMpt = [];
        var listDem = [];
        for (var i in this.childOption) {
          switch (this.childOption[i].serveType) {
            case 'WMS':
@@ -654,6 +581,9 @@
              break;
            case 'WFS':
              listWFS.push(this.childOption[i])
              break;
            case '3DML':
              listTileset.push(this.childOption[i])
              break;
            case 'Tileset':
              listTileset.push(this.childOption[i])
@@ -664,9 +594,6 @@
            case 'TMS':
              listTMS.push(this.childOption[i])
              break;
            case 'DEM':
              listDem.push(this.childOption[i])
              break;
          }
        }
        this.setChangeWMS(listWMS, checked);
@@ -674,57 +601,84 @@
        this.setChangeTileset(listTileset, checked);
        this.setChangeTMS(listTMS, checked);
        this.setChangeMpt(listMpt, checked);
        this.setChangeDem(listDem, checked);
      } else if (data.type == 2) {
        if (data.serveType == "WMS") {
          this.setChangeWMS([data], checked);
        } else if (data.serveType == "Tileset") {
        } else if (data.serveType == "Tileset" || data.serveType == "3DML") {
          this.setChangeTileset([data], checked);
        } else if (data.serveType == "TMS") {
          this.setChangeTMS([data], checked);
        } else if (data.serveType == "Mpt") {
          this.setChangeMpt([data], checked);
        } else if (data.serveType == "DEM") {
          this.setChangeDem([data], checked);
        }
      }
      // if (data.type != 2) return;
      // if (data.serveType == "WFS") {
      //   if (window.Viewer.dataSources._dataSources.length == 0) {
      //     this.setAddLayers(data);
      //   } else {
      //   }
      // } else if (data.serveType == "Tileset") {
      //   if (Viewer.scene.primitives._primitives.length == 0) {
      //     this.setAddLayers(data);
      //   } else {
      //     var std = [];
      //     for (var i in Viewer.scene.primitives._primitives) {
      //       Viewer.scene.primitives._primitives[i].show = checked;
      //       if (Viewer.scene.primitives._primitives[i].id == data.cnName) {
      //         std.push(data.id);
      //         Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
      //       }
      //     }
      //   }
      //   if (std.length == 0 && checked == true) {
      //     this.setAddLayers(data);
      //   } else {
      //     window.map.getLayers().getArray().forEach(item => {
      //       if (item.get("name") == data.cnName) {
      //         item.setVisible(checked);
      //       }
      //     });
      //   }
      // } else if (data.serveType == "TMS") {
      //   if (data.pubid) {
      //   } else {
      //     var res;
      //     if (data.url.indexOf("{host}") != -1) {
      //       res = data.url.replace("{host}", iisHost);
      //     } else {
      //       res = data.url
      //     }
      //     var url = res.split(';')
      //     window.sgworld.Creator.createImageryProvider('mpt影像', "wms", {
      //       url: url[0],
      //       layers: url[1]
      //     }, "0", undefined, true, "");
      //   }
      // }
      // var layers_ol = window.map.getAllLayers();
      // for (var i in layers_ol) {
      //   var layerOl = layers_ol[i];
      //   if (layerOl.values_.name == data.label) {
      //     layerOl.setVisible(checked); //显示图层
      //   }
      // }
    },
    setChangeDem(data, checked) {
      if (data.length <= 0) return
      this.cannelTerrainLayer();
      var val = this.$refs.tree.getCheckedKeys();
      var std = [];
      for (var i = 0; i < val.length; i++) {
        var res = this.$refs.tree.getNode(val[i]).data;
        if (res.serveType && res.serveType != 'DEM') {
          std.push(val[i])
        }
      }
      debugger
      var result = data[0]
      if (this.$refs.tree.getNode(result.id).checked) {
        std.push(result.id);
        var base_ulr = result.url;
        if (base_ulr.indexOf('{host}') > -1) {
          base_ulr = base_ulr.replace("{host}", iisHost)
        }
        this.setTerrainDemLayer(base_ulr);
      } else {
        this.setTerrainMptLayer();
      }
      this.$refs.tree.setCheckedKeys(std)
      //
      // this.$nextTick(() => {
      //
      // });
      // setTimeout(() => {
      //
      // }, 500);
    },
    setChangeWMS(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      this.$bus.$emit("showMenuLayer", value);
@@ -780,6 +734,20 @@
          }
        }
      }
      // if (checked.checkedKeys) {
      //   for (var i in result) {
      //
      //   }
      // } else {
      //   for (var j in result) {
      //     console.log(result[j])
      //     //
      //   }
      // }
    },
    setChangeMpt(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
@@ -918,7 +886,7 @@
          }),
        });
        window.map.addLayer(vectorLayer);
      } else if (res.serveType == "Tileset") {
      } else if (res.serveType == "Tileset" || res.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
@@ -938,37 +906,35 @@
        );
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          // Cesium.Matrix4.equals(a,b)判断两个四维矩阵是否相等
          // 整个根节点模型矩阵,该tileSet=>世界坐标系
          // 单位矩阵,对角线值为1.0的4*4矩阵
          if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
            // 获取模型的世界坐标(笛卡尔)
            // Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标
            const transformCenter = Cesium.Matrix4.getTranslation(
              tileset.root.transform,
              new Cesium.Cartesian3()
            );
            // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的)
            const transformCartographic = Cesium.Cartographic.fromCartesian(
              transformCenter
            );
            // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的)
            const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(
              tileset.boundingSphere.center
            );
            const height = boundingSphereCartographic.height - transformCartographic.height;
            // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的)
            window.modelHeight = height;
          } else window.modelHeight = 0;
          this.getTilesetArgs(tileset, res);
          if (res.serveType != '3DML') {
            // Cesium.Matrix4.equals(a,b)判断两个四维矩阵是否相等
            // 整个根节点模型矩阵,该tileSet=>世界坐标系
            // 单位矩阵,对角线值为1.0的4*4矩阵
            if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
              // 获取模型的世界坐标(笛卡尔)
              // Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标
              const transformCenter = Cesium.Matrix4.getTranslation(
                tileset.root.transform,
                new Cesium.Cartesian3()
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的)
              const transformCartographic = Cesium.Cartographic.fromCartesian(
                transformCenter
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的)
              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(
                tileset.boundingSphere.center
              );
              const height = boundingSphereCartographic.height - transformCartographic.height;
              // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的)
              window.modelHeight = height;
            } else window.modelHeight = 0;
            this.getTilesetArgs(tileset, res);
          }
        });
        this.$store.state.setAlphaList.push({
          name: res.cnName,
@@ -992,7 +958,6 @@
            })
          );
          layer.name = res.cnName;
          layer.id = "TMS"
          this.setChangeWMS();
        }
@@ -1020,11 +985,12 @@
        if (data.code != 200) {
        } else {
          if (res.bak != '3dml') {
          if (res.serveType != '3DML') {
            this.reload(tileset, data.result.json)
          } else {
            this.tileSet(tileset, parseFloat(res.elev))
          }
        }
      } else {
        this.tileSet(tileset, parseFloat(res.elev))
@@ -1068,12 +1034,12 @@
        layer.name = res.cnName;
        // if (data.result.geom) {
        //   var wkt = this.$wkt.parse(data.result.geom);
        //   Viewer.camera.flyTo({
        //     destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
        //   });
        // }
        if (data.result.geom) {
          var wkt = this.$wkt.parse(data.result.geom);
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
          });
        }
        this.setChangeWMS();
      }
    },
@@ -1104,15 +1070,7 @@
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
        let branchArr = cloneData.filter((child) => father.id == child.pid);
        if (branchArr.length > 0) {
          branchArr.sort(function (a, b) {
            return a.orderNum - b.orderNum
          })
        }
        let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据
        branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值
        // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2;
        // 由此循环多次后,就能形成相应的树形数据结构
@@ -1217,51 +1175,23 @@
      }
      this.$refs.tree.setCheckedKeys(std);
    },
    getNewTree(obj, result) {
      for (const i in obj) {
        result.push(obj[i])
        if (obj[i].children && obj[i].children.length > 0) {
          this.getNewTree(obj[i].children, result)
        }
      }
      return result
    },
    // 查询
    filterNode(value, data) {
      if (!value) return true;
      return data.cnName.indexOf(value) !== -1;
    },
    async setproChange(res) {
      this.$store.state.pigCode = res;
      if (res) {
        this.setCheeckedLayer = this.$refs.tree.getCheckedKeys();
        this.$store.state.pigCode = res;
        var st_code = this.optionts.filter(rs => {
          if (rs.code == res) {
            return rs
          }
        })
        var val = this.$store.state.oldTree.filter(rs => {
          if (rs.enName == st_code[0].code) {
            return rs
          }
          if (rs.enName && rs.enName.indexOf(st_code[0].code) > -1) {
            return rs
          }
        })
        this.removeAllLayer();
        var obj = {
          dirid: res,
          pageIndex: 1,
          pageSize: 10,
        }
        const data = await project_selectByDirid(obj);
        if (data.code != 200) {
          this.$message.error("列表获取失败");
@@ -1269,154 +1199,21 @@
        }
        if (data.result[0]) {
          var geom = data.result[0].geom
          if (geom) {
            var wkt = this.$wkt.parse(geom)
            Viewer.camera.flyTo({
              destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000),
            });
          }
          var wkt = this.$wkt.parse(geom)
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000),
          });
        }
        this.cannelTerrainLayer();
        this.setTerrainMptLayer();
        //清空图层树选中状态
        this.$refs.tree.setCheckedKeys([]);
        if (val.length > 0) {
          var std_check = [];
          for (var i in val) {
            if (val[i].type == 1 && val[i].isProject == 1) {//项目分类
              var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], [])
              for (var j in std_val) {
                std_check.push(std_val[j])
              }
            }
          }
          var value = this.$store.state.isProjectLayer;
          for (var i in value) {
            std_check.push(value[i])
          }
          this.setProjectLayer(std_check);
        } else {
          this.setChangeProLayer();
        }
        this.setChangeProLayer();
      } else {
        this.removeAllLayer();
        this.$store.state.pigCode = null;
        this.$refs.tree.setCheckedKeys(this.setCheeckedLayer);
        var std = [];
        for (var i in this.setCheeckedLayer) {
          std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data)
        }
        this.setProjectLayer(std);
        this.$store.state.pigCode = null
        this.setChangeWMS();
      }
    },
    cannelTerrainLayer() {
      //清空地形
      if (window.terrainMptLayer) {
        window.terrainMptLayer.deleteObject();
        window.terrainMptLayer = null;
      }
      if (window.terrainDemLayer) {
        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
        window.terrainDemLayer = null;
      }
    },
    setTerrainMptLayer() {
      //默认地形MPT
      var option = {
        url: window.sceneConfig.SGUrl,
        layerName: window.sceneConfig.mptName,
        requestVertexNormals: true,
      };
      window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
    },
    setTerrainDemLayer(res) {
      window.terrainDemLayer = new Cesium.CesiumTerrainProvider({
        url: res
      });
      Viewer.terrainProvider = window.terrainDemLayer
    },
    setProjectLayer(res) {
      var layerid = [];
      for (var i in res) {
        layerid.push(res[i].id)
      }
      this.$refs.tree.setCheckedKeys(layerid);
      // var value = this.$refs.tree.getCheckedNodes();
      // this.$bus.$emit("showMenuLayer", value);
      var listWMS = [];
      var listWFS = [];
      var listTileset = [];
      var listTMS = [];
      var listMpt = [];
      var listDem = [];
      for (var i in res) {
        if (res[i].type == 2) {
          switch (res[i].serveType) {
            case 'WMS':
              listWMS.push(res[i])
              break;
            case 'WFS':
              listWFS.push(res[i])
              break;
            case 'Tileset':
              listTileset.push(res[i])
              break;
            case 'Mpt':
              listMpt.push(res[i])
              break;
            case 'TMS':
              listTMS.push(res[i])
              break;
            case 'DEM':
              listDem.push(this.childOption[i])
              break;
          }
        }
      }
      // this.setChangeDem(listDem, true);
      this.setChangeWMS(listWMS, true);
      this.setChangeWFS(listWFS, true);
      this.setChangeTileset(listTileset, true);
      this.setChangeTMS(listTMS, true);
      this.setChangeMpt(listMpt, true);
    },
    removeAllLayer() {
      for (var j in Viewer.scene.primitives._primitives) {
        Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j])
      }
      for (var i in window.Viewer.dataSources._dataSources) {
        window.Viewer.dataSources.remove(
          window.Viewer.dataSources._dataSources[i]
        );
      }
      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
        var val_id = window.Viewer.imageryLayers._layers[i].id;
        if (val_id == 'TMS') {
          window.Viewer.imageryLayers.remove(
            window.Viewer.imageryLayers._layers[i]
          );
        }
      }
      for (var i in this.mptLayer) {
        this.mptLayer[i].deleteObject();
        this.mptLayer.splice(i, 1)
      }
      this.mptLayer = [];
    },
    setChangeProLayer() {
      var value = this.$store.state.isProjectLayer;
      if (value.length != 0) {
        var std = [];
@@ -1447,17 +1244,13 @@
    this.getMenuProject()
    this.$bus.$on("treeDataCopy", (res) => {
      this.$store.state.treeData = this.treeData;
      if (this.$refs.tree.getCheckedKeys().length > 0) {
        this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
      }
      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
    });
    if (this.$store.state.showAllLayers == true) {
      this.layersStart();
      this.$store.state.showAllLayers = false;
    } else {
      this.treeData = this.$store.state.treeData;
      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
    }
src/views/Tools/maplayer.vue
@@ -54,7 +54,7 @@
          const disX = e.clientX;
          const w = dragDom.clientWidth;
          const minW = 300;
          const maxW = 500;
          const maxW = 1000;
          const disY = e.clientY;
          const h = dragDom.clientHeight;
          const minH = 300;
src/views/datamanage/uploadmanage.vue
@@ -477,7 +477,10 @@
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.minLevel')">
          <el-form-item
            v-show="formInline.type !='DEM'"
            :label="$t('dataManage.vmobj.minLevel')"
          >
            <!-- <el-input
              v-model="insertLayer.min"
              :placeholder="$t('dataManage.vmobj.labe11')"
@@ -496,7 +499,10 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.maxLevel')">
          <el-form-item
            :label="$t('dataManage.vmobj.maxLevel')"
            v-show="formInline.type !='DEM'"
          >
            <!-- <el-input
              v-model="insertLayer.max"
              :placeholder="$t('dataManage.vmobj.labe12')"
@@ -666,9 +672,14 @@
    },
    //发布提交
    async setinsertLayerSubmit() {
      var min = this.insertLayer.min;
      var max = this.insertLayer.max;
      var name = this.insertLayer.name;
      if (this.formInline.type == 'DEM') {
        min = 0;
        max = 18;
      }
      if (!name) {
        this.$message.error("名称不能为空")
        return
@@ -889,13 +900,13 @@
    //分页切换
    handleCurrentChange(val) {
      this.listData.pageIndex = val;
      this.getTableData();
      this.getTableData_one();
    },
    //每页显示数量
    handleSizeChange(val) {
      this.listData.pageSize = val;
      this.listData.pageIndex = 1;
      this.getTableData();
      this.getTableData_one();
    },
    //tabs切換
    setTabsChange(res) {
@@ -996,9 +1007,13 @@
    },
    //获取Table表格数据
    async getTableData() {
      this.tableData = [];
      this.listData.count = 0;
      this.listData.pageIndex = 1;
      this.getTableData_one();
    },
    async getTableData_one() {
      this.tableData = [];
      if (this.active == "first") {
        this.listData.depcode = this.formInline.depid;