管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-05-27 0af4ecb9b2047b8ba6d00e891050cf2d68b829a6
代码提交
已修改18个文件
3037 ■■■■■ 文件已修改
src/assets/lang/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuPop.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuTop.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpaceTop.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/preview_map.vue 667 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Archive/dataApplication.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/LeftMenu.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 1871 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/queryinfo.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/catalogueManage.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dictionaryManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/metadataManage.vue 271 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/styleManage.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/uploadmanage.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/templateManage.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js
@@ -211,6 +211,7 @@
      fieldLength: 'field length',
      FieldPrecision: 'Field Precision',
      rangeAssociationTable: 'range association table',
      tableName: 'Table Name',
      remark: 'remark',
      creationTime: 'creation time',
      createPersonnel: 'create personnel',
src/assets/lang/zh.js
@@ -211,6 +211,8 @@
      fieldLength: '字段长度',
      FieldPrecision: '字段精度',
      rangeAssociationTable: '值域关联表',
      tableName: '表名称',
      remark: '备注',
      creationTime: '创建时间',
      createPersonnel: '创建人员',
src/components/MapView/mapMenuPop.vue
@@ -502,7 +502,7 @@
      this.dialogVisible = false
      this.codeForm.password = ""
      this.codeForm.repassword = ""
      this.closeInsertDown()
      // this.closeInsertDown()
    },
    startTableMssage() {
      this.listdata.pageIndex = 1
@@ -944,7 +944,7 @@
      this.getInsertDown(res)
    })
    this.$bus.$on("setInsertDown1", res => {
      this.isflag = true;
      this.getInsertDown(res)
    })
    this.$bus.$on("setInsertApply1", res => {
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
src/components/MapView/mapSpaceTop.vue
@@ -3,7 +3,7 @@
    <el-select
      v-model="menuTopFrom.queryLayer"
      @change="menuTreeCheck"
      placeholder="请选择..."
      placeholder="请选择数据..."
      filterable
      ref="selectTree1"
    >
src/components/mapsdk.vue
@@ -78,13 +78,22 @@
              label-width="50px"
            >
              <el-form-item label="经度:">
                <el-input v-model="coordFrom.lon"></el-input>
                <el-input
                  v-model="coordFrom.lon"
                  placeholder="请输入经度"
                ></el-input>
              </el-form-item>
              <el-form-item label="纬度:">
                <el-input v-model="coordFrom.lat"></el-input>
                <el-input
                  v-model="coordFrom.lat"
                  placeholder="请输入维度"
                ></el-input>
              </el-form-item>
              <el-form-item label="高度:">
                <el-input v-model="coordFrom.height"></el-input>
                <el-input
                  v-model="coordFrom.height"
                  placeholder="请输入高度"
                ></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
@@ -161,6 +170,7 @@
                <el-input
                  style="width: 160px"
                  v-model="comprehensive.name"
                  placeholder="请输入地名...."
                ></el-input>
              </el-form-item>
              <el-form-item>
@@ -738,9 +748,9 @@
        val: 50,
      },
      coordFrom: {
        lon: 116.3911,
        lat: 39.9115,
        height: 100000,
        lon: "",
        lat: "",
        height: "",
      },
      listData: {
        name: null,
@@ -843,16 +853,16 @@
    },
    async setModelInfoData(result) {
      var modelKey = 'id';
      debugger
      var modelid;
      if (result.tileset) {
        if (result.tileset.pubid > 0) {
        if (result.tileset.pubid) {
          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) {
@@ -988,7 +998,7 @@
        requestVertexNormals: true,
      };
      window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.terrainFlag = 'MPT'
      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld);
      elevationTool.setContourColor("#F1D487");
@@ -1194,6 +1204,12 @@
    },
    //定位
    setCoordLocal() {
      if (!this.coordFrom.lon) {
        return this.$message('请输入经度');
      }
      if (!this.coordFrom.lat) {
        return this.$message('请输入纬度');
      }
      var lon = parseFloat(this.coordFrom.lon)
      var lat = parseFloat(this.coordFrom.lat)
      var height = parseFloat(this.coordFrom.height) == NaN ? parseFloat(this.coordFrom.height) : 100;
@@ -1201,7 +1217,7 @@
      var position = {
        X: lon,
        Y: lat,
        Altitude: 2000,
        Altitude: height,
      };
      if (this.imagePoint != null) {
        sgworld.Creator.DeleteObject(this.imagePoint);
src/components/navMenu.vue
@@ -156,7 +156,7 @@
    //   this.showFlag = null;
    // })
    window.addEventListener('message', (e) => {
      console.log("e", e.data)
      this.showFlag = null;
    })
  },
src/components/preview_map.vue
@@ -1,139 +1,205 @@
<template>
  <div id="mapdiv"
       class="previewBox">
    <div v-if="modelLayer"
         class="modelLayer box_divm">
  <div
    id="mapdiv"
    class="previewBox"
  >
    <div
      v-if="modelLayer"
      class="modelLayer box_divm"
    >
      <div class="modelBox">
        <div style="float:right"
             :title="$t('synthesis.undergroundMode')"
             @click="setUndergroundMode">
        <div
          style="float:right"
          :title="$t('synthesis.undergroundMode')"
          @click="setUndergroundMode"
        >
          <i class="el-icon-sunrise "></i>
        </div>
      </div>
      <div class="modelBox">
        <el-tree :data="treeData"
                 show-checkbox
                 node-key="id"
                 ref="tree"
                 :default-expanded-keys="[1]"
                 :props="defaultProps"
                 @node-click="handleNodeClick"
                 @check="handleCheckChange">
        <el-tree
          :data="treeData"
          show-checkbox
          node-key="id"
          ref="tree"
          :default-expanded-keys="[1]"
          :props="defaultProps"
          @node-click="handleNodeClick"
          @check="handleCheckChange"
        >
        </el-tree>
      </div>
    </div>
    <div v-if="editModelFlag"
         class="modelLayer box_divm">
      <el-form ref="form"
               :model="modelForm"
               label-width="80px">
    <div
      v-if="editModelFlag"
      class="modelLayer box_divm"
    >
      <el-form
        ref="form"
        :model="modelForm"
        label-width="80px"
      >
        <el-form-item>
          <el-button size="small"
                     @click="locateTo">定位</el-button>
          <el-button size="small"
                     @click="showTileset">显隐</el-button>
          <el-button size="small"
                     @click="underground">地下</el-button>
          <el-button v-if="$store.state.previewLayer.type  != '3dml'"
                     size="small"
                     @click="pickupCoords">拾取</el-button>
          <el-button v-if="$store.state.previewLayer.type  != '3dml'"
                     size="small"
                     @click="reload">
          <el-button
            size="small"
            @click="locateTo"
          >定位</el-button>
          <el-button
            size="small"
            @click="showTileset"
          >显隐</el-button>
          <el-button
            size="small"
            @click="underground"
          >地下</el-button>
          <el-button
            v-if="$store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="pickupCoords"
          >拾取</el-button>
          <el-button
            v-if="$store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="reload"
          >
            重载
          </el-button>
          <el-button 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>
          <el-button
            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>
        </el-form-item>
        <el-form-item label="经度:"
                      v-if="$store.state.previewLayer.type  != '3dml'">
          <el-input size="small"
                    v-model="modelForm.lon"
                    @input="update"></el-input>
          <el-slider v-model="modelForm.lon"
                     @input="update"
                     :min="73"
                     :step="0.001"
                     :max="135"></el-slider>
        <el-form-item
          label="经度:"
          v-if="$store.state.previewLayer.type  != '3dml'"
        >
          <el-input
            size="small"
            v-model="modelForm.lon"
            @input="update"
          ></el-input>
          <el-slider
            v-model="modelForm.lon"
            @input="update"
            :min="73"
            :step="0.001"
            :max="135"
          ></el-slider>
        </el-form-item>
        <el-form-item label="纬度:"
                      v-if="$store.state.previewLayer.type  != '3dml'">
          <el-input size="small"
                    v-model="modelForm.lat"
                    @input="update"></el-input>
          <el-slider v-model="modelForm.lat"
                     @input="update"
                     :min="3"
                     :step="0.001"
                     :max="54"></el-slider>
        <el-form-item
          label="纬度:"
          v-if="$store.state.previewLayer.type  != '3dml'"
        >
          <el-input
            size="small"
            v-model="modelForm.lat"
            @input="update"
          ></el-input>
          <el-slider
            v-model="modelForm.lat"
            @input="update"
            :min="3"
            :step="0.001"
            :max="54"
          ></el-slider>
        </el-form-item>
        <el-form-item label="高度:"
                      v-if="$store.state.previewLayer.type  != '3dml'">
          <el-input size="small"
                    v-model="modelForm.height"
                    @input="update"></el-input>
          <el-slider v-model="modelForm.height"
                     :min="-800"
                     :step="1"
                     @input="update"
                     :max="8800"></el-slider>
        <el-form-item
          label="高度:"
          v-if="$store.state.previewLayer.type  != '3dml'"
        >
          <el-input
            size="small"
            v-model="modelForm.height"
            @input="update"
          ></el-input>
          <el-slider
            v-model="modelForm.height"
            :min="-800"
            :step="1"
            @input="update"
            :max="8800"
          ></el-slider>
        </el-form-item>
        <el-form-item label="角度:"
                      v-if="$store.state.previewLayer.type  != '3dml'">
          <el-input size="small"
                    v-model="modelForm.yaw"
                    @input="update"></el-input>
          <el-slider v-model="modelForm.yaw"
                     :min="0"
                     @input="update"
                     :step="0.1"
                     :max="360"></el-slider>
        <el-form-item
          label="角度:"
          v-if="$store.state.previewLayer.type  != '3dml'"
        >
          <el-input
            size="small"
            v-model="modelForm.yaw"
            @input="update"
          ></el-input>
          <el-slider
            v-model="modelForm.yaw"
            :min="0"
            @input="update"
            :step="0.1"
            :max="360"
          ></el-slider>
        </el-form-item>
        <el-form-item label="透明度:">
          <el-input size="small"
                    v-model="modelForm.alpha"
                    @input="update"></el-input>
          <el-slider v-model="modelForm.alpha"
                     @input="update"
                     :min="0"
                     :step="0.01"
                     :max="1"></el-slider>
          <el-input
            size="small"
            v-model="modelForm.alpha"
            @input="update"
          ></el-input>
          <el-slider
            v-model="modelForm.alpha"
            @input="update"
            :min="0"
            :step="0.01"
            :max="1"
          ></el-slider>
        </el-form-item>
      </el-form>
    </div>
    <el-dialog :title="formInline.title"
               :visible.sync="dialogVisible"
               :modal="false"
               :modal-append-to-body="false"
               :close-on-click-modal="false"
               :before-close="handleClose"
               width="30%">
    <el-dialog
      :title="formInline.title"
      :visible.sync="dialogVisible"
      :modal="false"
      :modal-append-to-body="false"
      :close-on-click-modal="false"
      :before-close="handleClose"
      width="30%"
    >
      <div style="height:63vh">
        <el-tabs v-model="activeName"
                 @tab-click="handleClick">
          <el-tab-pane label="属性"
                       name="first">
            <el-form ref="form"
                     :model="formInline"
                     label-width="80px">
        <el-tabs
          v-model="activeName"
          @tab-click="handleClick"
        >
          <el-tab-pane
            label="属性"
            name="first"
          >
            <el-form
              ref="form"
              :model="formInline"
              label-width="80px"
            >
              <el-form-item :label="$t('common.name')">
                <el-input v-model="formInline.name"></el-input>
              </el-form-item>
              <el-form-item :label="$t('common.type')">
                <el-select v-model="formInline.type"
                           style="width:100%">
                  <el-option v-for="item in options"
                             :key="item.value"
                             :label="item.label"
                             :value="item.value">
                <el-select
                  v-model="formInline.type"
                  style="width:100%"
                >
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
@@ -144,78 +210,110 @@
              </el-form-item>
              <el-form-item>
                <el-button v-show="isShowModel"
                           type="success"
                           plain
                           size="small"
                           @click="InsertData">{{$t('common.increase')}}</el-button>
                <el-button v-show="!isShowModel"
                           type="info"
                           plain
                           size="small"
                           @click="EditData">{{$t('common.update')}}</el-button>
                <el-button
                  v-show="isShowModel"
                  type="success"
                  plain
                  size="small"
                  @click="InsertData"
                >{{$t('common.increase')}}</el-button>
                <el-button
                  v-show="!isShowModel"
                  type="info"
                  plain
                  size="small"
                  @click="EditData"
                >{{$t('common.update')}}</el-button>
              </el-form-item>
            </el-form>
          </el-tab-pane>
          <el-tab-pane label="附件"
                       name="second">
            <el-form :model="fromfile"
                     class="demo-form-inline">
          <el-tab-pane
            label="附件"
            name="second"
          >
            <el-form
              :model="fromfile"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-input v-model="fromfile.file"
                          style="width: 300px; margin-right: 20px"
                          :placeholder="$t('common.choose')"
                          disabled></el-input>
                <input name="file1"
                       type="file"
                       id="insertFile"
                       multiple="multiple"
                       style="display: none"
                       @change="insertFile( )" />
                <el-link @click="getInsertFile( )"
                         :underline="false"><i class="el-icon-folder-opened"></i></el-link>
                <el-input
                  v-model="fromfile.file"
                  style="width: 300px; margin-right: 20px"
                  :placeholder="$t('common.choose')"
                  disabled
                ></el-input>
                <input
                  name="file1"
                  type="file"
                  id="insertFile"
                  multiple="multiple"
                  style="display: none"
                  @change="insertFile( )"
                />
                <el-link
                  @click="getInsertFile( )"
                  :underline="false"
                ><i class="el-icon-folder-opened"></i></el-link>
              </el-form-item>
              <el-form-item>
                <el-row>
                  <el-col :span="3">
                    <el-link class="elLink"
                             :underline="false"
                             @click="setAttachInsert">{{$t('common.append')}}</el-link>
                    <el-link
                      class="elLink"
                      :underline="false"
                      @click="setAttachInsert"
                    >{{$t('common.append')}}</el-link>
                  </el-col>
                  <el-col :span="3">
                    <el-link class="elLink"
                             :underline="false"
                             @click="setAttachDel">{{$t('common.delete')}}</el-link>
                    <el-link
                      class="elLink"
                      :underline="false"
                      @click="setAttachDel"
                    >{{$t('common.delete')}}</el-link>
                  </el-col>
                </el-row>
              </el-form-item>
            </el-form>
            <el-table :data="tableData"
                      ref="filterTable"
                      height="calc(100% - 130px)"
                      border
                      style="width: 100%"
                      @selection-change="handleAttatchChange">
              <el-table-column type="selection"
                               width="70" />
              <el-table-column width="60"
                               type="index"
                               :label="$t('common.index')" />
              <el-table-column prop="name"
                               :label="$t('common.name')" />
            <el-table
              :data="tableData"
              ref="filterTable"
              height="calc(100% - 130px)"
              border
              style="width: 100%"
              @selection-change="handleAttatchChange"
            >
              <el-table-column
                type="selection"
                width="70"
              />
              <el-table-column
                width="60"
                type="index"
                :label="$t('common.index')"
              />
              <el-table-column
                prop="name"
                :label="$t('common.name')"
              />
              <el-table-column prop="sizes"
                               :label="$t('common.size')"
                               :formatter="statSizeChange" />
              <el-table-column align="center"
                               :label="$t('common.operate')"
                               min-width="100">
              <el-table-column
                prop="sizes"
                :label="$t('common.size')"
                :formatter="statSizeChange"
              />
              <el-table-column
                align="center"
                :label="$t('common.operate')"
                min-width="100"
              >
                <template slot-scope="scope">
                  <el-link v-if="matchState(scope, /[]/)"
                           @click="setAttatchDetail(scope.$index, scope.row)"
                           class="elLink">{{ $t('common.see') }}</el-link>
                  <el-link
                    v-if="matchState(scope, /[]/)"
                    @click="setAttatchDetail(scope.$index, scope.row)"
                    class="elLink"
                  >{{ $t('common.see') }}</el-link>
                </template>
              </el-table-column>
@@ -238,48 +336,66 @@
        <map-sdk v-if='showMapVisible'></map-sdk>
      </div>
    </el-dialog> -->
    <el-dialog title="预览"
               :append-to-body="false"
               :visible.sync="dialog.dialogVisible"
               width="70%"
               :close-on-click-modal="false">
      <div v-if="dialog.isPdf"
           class="pdfClass">
        <iframe :src="dialog.src"
                type="application/x-google-chrome-pdf"
                width="100%"
                height="100%">
    <el-dialog
      title="预览"
      :append-to-body="false"
      :visible.sync="dialog.dialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
      <div
        v-if="dialog.isPdf"
        class="pdfClass"
      >
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
          width="100%"
          height="100%"
        >
        </iframe>
      </div>
      <div v-if="dialog.isJpg"
           class="pdfClass">
      <div
        v-if="dialog.isJpg"
        class="pdfClass"
      >
        <el-image style="width:100%; height:100%"
                  :src="dialog.src"
                  :preview-src-list="[dialog.src]">
        <el-image
          style="width:100%; height:100%"
          :src="dialog.src"
          :preview-src-list="[dialog.src]"
        >
        </el-image>
      </div>
    </el-dialog>
    <div v-show="modelKeyFlag"
         class="modelLayer box_divm"
         v-drag>
      <el-form ref="form"
               :model="modelForm"
               label-width="80px">
    <div
      v-show="modelKeyFlag"
      class="modelLayer box_divm"
      v-drag
    >
      <el-form
        ref="form"
        :model="modelForm"
        label-width="80px"
      >
        <el-form-item label="主键ID">
          <el-select v-model="modelLayerId">
            <el-option v-for="item in optionKey"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
            <el-option
              v-for="item in optionKey"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary"
                     size="small"
                     @click="setSureKeyModelKey">{{$t('common.confirm')}}</el-button>
          <el-button
            type="primary"
            size="small"
            @click="setSureKeyModelKey"
          >{{$t('common.confirm')}}</el-button>
        </el-form-item>
      </el-form>
    </div>
@@ -305,7 +421,7 @@
  components: {
    undergroundModel
  },
  data () {
  data() {
    return {
      levelArray: [
        0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000,
@@ -384,11 +500,11 @@
      modelKeyFlag: false,
    }
  },
  mounted () {
  mounted() {
    this.init3DMap();
  },
  methods: {
    setUndergroundMode () {
    setUndergroundMode() {
      if (window.UndergroundMode) {
        this.$refs &&
          this.$refs.undergroundModel &&
@@ -399,14 +515,14 @@
          this.$refs.undergroundModel.open("地下模式", null,);
      }
    },
    refreshAttatchDetail () {
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //附件查看
    setAttatchDetail (index, row) {
    setAttatchDetail(index, row) {
      this.refreshAttatchDetail()
      var name = row.name;
      if (name.indexOf('.pdf') != -1 || name.indexOf('.PDF') != -1) {
@@ -432,7 +548,7 @@
        this.dialog.src = url
      }
    },
    async setAttachDel () {
    async setAttachDel() {
      var std = [];
      for (var i in this.attacgSelection) {
        std.push(this.attacgSelection[i].id);
@@ -443,7 +559,7 @@
      }
      this.getAttacthFlieList();
    },
    setAttachInsert () {
    setAttachInsert() {
      var token = getToken();
      var fs = document.getElementById("insertFile");
      if (fs.files.length == 0) {
@@ -487,15 +603,15 @@
      );
    },
    //附件=>文件选择
    getInsertFile () {
    getInsertFile() {
      $('#insertFile').click();
    },
    insertFile () {
    insertFile() {
      var val = document.getElementById('insertFile').files;
      if (!val || !val.length) return;
      this.fromfile.file = val[0].name;
    },
    matchState (state = "", reg) {
    matchState(state = "", reg) {
      var row = state.row;
      var name = row.name;
      if (
@@ -517,10 +633,10 @@
      return false;
    },
    statSizeChange (row, column) {
    statSizeChange(row, column) {
      return this.stateFormatSizes(row.sizes)
    },
    stateFormatSizes (res) {
    stateFormatSizes(res) {
      if (res >= 1024) {
        const val = parseFloat(res / 1024).toFixed(3);
        return val + ' GB';
@@ -529,11 +645,11 @@
      }
    },
    // 附件=>表格选择
    handleAttatchChange (val) {
    handleAttatchChange(val) {
      this.attacgSelection = val;
    },
    //附件列表查询
    async getAttacthFlieList () {
    async getAttacthFlieList() {
      var obj = {
        eventid: this.layerID,
        tabName: "lf.sys_style"
@@ -545,12 +661,12 @@
      }
      this.tableData = res.result;
    },
    handleClick () {
    handleClick() {
      if (this.activeName == "second") {
        this.getAttacthFlieList();
      }
    },
    async EditData () {
    async EditData() {
      const data = await comprehensive_updateModel(this.formInline)
@@ -572,7 +688,7 @@
      this.startModelData();
    },
    async InsertData () {
    async InsertData() {
      var std = {
        "bak": this.formInline.bak,
        "guid": this.formInline.Id,
@@ -599,7 +715,7 @@
    },
    handleClose () {
    handleClose() {
      this.dialogVisible = false;
      this.formInline = {
        title: '',
@@ -614,12 +730,14 @@
      this.activeName = "first"
    },
    async setShowModelInfo (result) {
    async setShowModelInfo(result) {
      var modelKey = 'id';
      if (result.tileset) {
        if (result.tileSet.pubid > 0) {
        if (result.tileset.pubid) {
          const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
          if (data.code != 200) {
            return
          } else {
@@ -646,7 +764,7 @@
      this.dialogVisible = true;
    },
    async startModelData () {
    async startModelData() {
      var obj = {
        layerid: this.formInline.layerId,
        modelid: this.formInline.Id
@@ -664,7 +782,7 @@
        this.formInline.title = this.formInline.name;
      }
    },
    setChangeTileset (result) {
    setChangeTileset(result) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      for (var i in value) {
@@ -683,18 +801,19 @@
        }
      }
    },
    setAddLayers (res) {
      if (res.serveType == "Tileset" || res.serveType == "3DML") {
    setAddLayers(rs) {
      if (rs.serveType == "Tileset" || rs.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        if (rs.url.indexOf("{host}") != -1) {
          url = rs.url.replace("{host}", iisHost);
        } else {
          url = modelUrl + "/" + res.url
          url = modelUrl + "/" + rs.url
        }
        var tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            name: rs.cnName,
            url: url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
@@ -704,28 +823,29 @@
        );
        var that = this;
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.serveType != '3DML') {
            that.getArgsTileset(tileset, res);
          tileset.id = rs.cnName;
          tileset.layerId = rs.id;
          tileset.pubid = rs.pubid;
          if (rs.serveType != '3DML') {
            that.getArgsTileset(tileset, rs);
          }
        });
      }
    },
    async getArgsTileset (tileset, res) {
    async getArgsTileset(tileset, rs) {
      if (res.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: res.pubid })
      if (rs.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: rs.pubid })
        if (data.code != 200) {
        } else {
          if (res.serveType != '3DML') {
            this.tileSet(tileset, parseFloat(res.elev))
          if (rs.serveType == '3DML') {
            this.tileSet(tileset, parseFloat(rs.elev))
          } else {
            this.reloadTile(tileset, data.result.json)
          }
@@ -733,11 +853,11 @@
        }
      } else {
        this.tileSet(tileset, parseFloat(res.elev))
        this.tileSet(tileset, parseFloat(rs.elev))
      }
    },
    tileSet (tileset, height) {
    tileSet(tileset, height) {
      //3dtile模型的边界球体
      var boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
@@ -751,7 +871,7 @@
      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
      // Viewer.flyTo(tileset);
    },
    reloadTile (tileset, res) {
    reloadTile(tileset, res) {
      var vm = JSON.parse(res)
      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
@@ -763,7 +883,7 @@
    handleCheckChange (data, checked, indeterminate) {
    handleCheckChange(data, checked, indeterminate) {
      if (data.type == 1) {
        this.getchilds(data);
        this.setChangeTileset(this.childOption, checked);
@@ -771,7 +891,7 @@
        this.setChangeTileset([data], checked);
      }
    },
    handleNodeClick (data) {
    handleNodeClick(data) {
      if (data.type == 2) {
        this.currentData = data;
        for (var j in Viewer.scene.primitives._primitives) {
@@ -781,7 +901,7 @@
        }
      }
    },
    getchilds (source) {
    getchilds(source) {
      if (source.children) {
        var child = source.children
        for (var i in child) {
@@ -795,7 +915,7 @@
        this.childOption.push(source)
      }
    },
    init3DMap () {
    init3DMap() {
      //地图初始化
      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
        licenseServer: window.sceneConfig.licenseServer,
@@ -816,25 +936,27 @@
      Viewer.scene.globe.depthTestAgainstTerrain = true;
      // window.elevationTool = new SmartEarth.ElevationTool(window.sg);
      // elevationTool.setContourColor("#F1D487");
      // var option = {
      //   url: window.sceneConfig.SGUrl,
      //   layerName: window.sceneConfig.mptName,
      //   requestVertexNormals: true,
      // };
      // window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.terrainLayer = new Cesium.CesiumTerrainProvider({
        url: demLayer
      });
      var option = {
        url: window.sceneConfig.SGUrl,
        layerName: window.sceneConfig.mptName,
        requestVertexNormals: true,
      };
      window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      // window.terrainLayer = new Cesium.CesiumTerrainProvider({
      //   url: demLayer
      // });
      Viewer.terrainProvider = window.terrainLayer
      // Viewer.terrainProvider = window.terrainLayer
      if (this.$store.state.previewLayer) {
        var res = this.$store.state.previewLayer;
        var type = res.type;
        res.ulr = res.url.replace("{host}", iisHost);
        if (type == 'DEM') {
          // window.terrainLayer.deleteObject();
          //Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
          //window.terrainLayer = null;
          window.terrainLayer.deleteObject();
          // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
          // window.terrainLayer = null;
          window.terrainLayer = new Cesium.CesiumTerrainProvider({
            url: res.url
          });
@@ -866,9 +988,12 @@
          });
        } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt') {
          if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset);
          this.app.tileset = this.createTileset(res);
          var that = this;
          Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) {
            that.setModleLocatin()
            Viewer.flyTo(ts);
          });
@@ -885,7 +1010,7 @@
        }
      }
    },
    getModeKeyId () {
    getModeKeyId() {
      window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      window.ModeKeyIdHandler.setInputAction((event) => {
@@ -904,12 +1029,16 @@
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
    },
    async resave () {
    async resave() {
      if (!this.modelForm.modelid) {
        return this.$message('未选择模型主键ID');
      }
      this.$store.state.previewLayer.json = JSON.stringify(this.modelForm);
      if (this.$store.state.previewLayer.url) {
        var url = this.$store.state.previewLayer.url;
        this.$store.state.previewLayer.url = url.replace(iisHost, "{host}");
      }
      const data = await publish_update(this.$store.state.previewLayer);
      if (data.code != 200) {
        this.$message.error('数据保存失败');
@@ -921,9 +1050,9 @@
      }
      this.reload();
    },
    reload () {
    reload() {
      var json = JSON.stringify(this.modelForm);
      var url = this.$store.state.previewLayer.url;
      var url = this.$store.state.previewLayer.url.replace("{host}", iisHost);
      if (!url) return;
      if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset);
@@ -947,7 +1076,7 @@
    },
    //拾取
    pickupCoords () {
    pickupCoords() {
      if (this.app.handler) {
        this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
        this.app.handler = undefined;
@@ -971,12 +1100,12 @@
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    },
    // 保留小数位
    toFixed (d, n) {
    toFixed(d, n) {
      var p = Math.pow(10, n);
      return Math.round(d * p) / p;
    },
    update () {
    update() {
      if (!this.modelForm.lon || isNaN(this.modelForm.lon)) {
        var args = this.getEditTilesetArgs();
        this.modelForm.lon = args.lon == null ? 0 : args.height;
@@ -1010,7 +1139,7 @@
      this.setTilesetArgs(this.modelForm);
      sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha)
    },
    setTilesetArgs (f) {
    setTilesetArgs(f) {
      if (!this.app.tileset || this.app.isBusy) return;
@@ -1023,21 +1152,22 @@
      model._root.transform = matrix;
    },
    //地下
    underground () {
    underground() {
      this.app.under = !this.app.under;
      sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha)
    },
    //显隐
    showTileset () {
    showTileset() {
      if (!this.app.tileset) return;
      this.app.tileset.show = !this.app.tileset.show;
    },
    //定位
    locateTo () {
    locateTo() {
      if (!this.app.tileset) return;
      Viewer.flyTo(this.app.tileset);
    },
    createTileset (res) {
    createTileset(res) {
      res.url = res.url.replace('{host}', iisHost)
      return new Cesium.Cesium3DTileset({
        url: res.url,
        name: 'tsTest',
@@ -1060,7 +1190,7 @@
        dynamicScreenSpaceError: true // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋
      });
    },
    setEditModelLayer (res) {
    setEditModelLayer(res) {
      this.editModelFlag = true;
      if (res.json) {
        var json = JSON.parse(res.json)
@@ -1070,9 +1200,10 @@
        this.getTilesetArgs();
      }
    },
    setModleLocatin () {
    setModleLocatin() {
      var res = this.$store.state.previewLayer;
      var type = res.type;
      if (this.modelType.indexOf(type) != -1) {
        if (type != '3dml') {
          this.setEditModelLayer(res)
@@ -1083,7 +1214,7 @@
      }
    },
    setModeLayerID (res) {
    setModeLayerID(res) {
      var value = res.getPropertyNames();
      var std = [];
@@ -1097,12 +1228,12 @@
      this.modelLayerId = this.optionKey[0].label;
      this.modelKeyFlag = true;
    },
    setSureKeyModelKey () {
    setSureKeyModelKey() {
      this.modelKeyFlag = false;
      this.modelForm.modelid = this.modelLayerId
      window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件
    },
    getTilesetArgs () {
    getTilesetArgs() {
      this.app.isBusy = true;
      var cm = this.app.tileset._root.transform;
      var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]);
@@ -1115,7 +1246,7 @@
      }
      this.app.isBusy = false;
    },
    getEditTilesetArgs () {
    getEditTilesetArgs() {
      this.app.isBusy = true;
      var std = {
        lon: 0,
@@ -1138,7 +1269,7 @@
      return std
    },
    async setShowModelLayer () {
    async setShowModelLayer() {
      const data = await perms_selectLayers();
      if (data.code != 200) {
@@ -1187,7 +1318,7 @@
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
      }
    },
    setTreeData (source) {
    setTreeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
@@ -1211,7 +1342,7 @@
    //   //修改模型矩阵
    //   tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
    // },
    getHeight (level) {
    getHeight(level) {
      if (level > 0 && level < 23) {
        return this.levelArray[level]
      }
src/views/Archive/dataApplication.vue
@@ -203,7 +203,7 @@
          :model="detailsFrom"
          class="demo-form-inline"
        >
          <el-form-item label="表名:">
          <el-form-item label="申请数据名称:">
            <div class="statusLabel">{{ detailsFrom.tabs }}</div>
          </el-form-item><br />
          <el-form-item label="申请人:">
@@ -411,6 +411,7 @@
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      debugger
      this.detailsFrom.tableData = data.result;
      this.detailsFrom.tabs = row.tabs;
      this.detailsFrom.uname = row.uname;
src/views/Synthesis/LeftMenu.vue
@@ -2235,11 +2235,16 @@
      }
    },
    addAnalysisFlood() {
      var url = window.location.href;
      var testurl = "";
      if (url.indexOf("web") != -1) {
        testurl = "/web";
      }
      var method = {
        pointSelect: true,
        spood: 20,
        GroupID: 0,
        url: "/SmartEarthSDK/Workers/image/33.gif",
        url: testurl + "/SmartEarthSDK/Workers/image/33.gif",
      };
      window.AnalysisFlood = sgworld.Command.execute(
        2,
@@ -3184,7 +3189,6 @@
    this.$bus.$on("setDialogInsertVisible", (res) => {
      if (res == true) {
        this.dialogVisible1 = true;
      } else {
src/views/Tools/LayerTree.vue
@@ -1,690 +1,1490 @@
<template>
  <div class="lalala tree-container">
    <el-form ref="form">
      <el-form-item>
        <el-select v-model="$store.state.pigCode"
                   clearable
                   filterable
                   style="width :100%"
                   @change="prjChanged"
                   placeholder="请选择项目">
          <el-option v-for="item in menus"
                     :key="item.code"
                     :label="item.name"
                     :value="item.code">
        <el-select
          v-model="$store.state.pigCode"
          clearable
          filterable
          style="width :100%"
          @change="setproChange"
          placeholder="请选择项目"
        >
          <el-option
            v-for="item in optionts"
            :key="item.code"
            :label="item.name"
            :value="item.code"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-input placeholder="输入关键字进行过滤"
                  v-model="filterText"
                  class="search">
        <el-input
          placeholder="输入关键字进行过滤"
          v-model="filterText"
          class="search"
        >
        </el-input>
      </el-form-item>
    </el-form>
    <el-tree ref="tree"
             :data="treeData"
             node-key="id"
             show-checkbox
             :props="defaultProps"
             @node-click="handleLeftclick"
             @node-contextmenu="rightClick"
             @check="handleCheckChange"
             :default-checked-keys="handleTreeCheck"
             :expand-on-click-node="false"
             :filter-node-method="filterNode"
             draggable>
      <span class="slot-t-node"
            slot-scope="{ node, data }">
    <el-tree
      ref="tree"
      :data="treeData"
      node-key="id"
      show-checkbox
      :props="defaultProps"
      @node-click="handleLeftclick"
      @node-contextmenu="rightClick"
      @check="handleCheckChange"
      :default-checked-keys="handleTreeCheck"
      :expand-on-click-node="false"
      :filter-node-method="filterNode"
      draggable
    >
      <span
        class="slot-t-node"
        slot-scope="{ node, data }"
      >
        <span v-show="!data.isEdit">
          <span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{
            node.label
          }}</span>
        </span>
        <span v-show="data.isEdit">
          <el-input class="slot-t-input"
                    size="mini"
                    autofocus
                    v-model="data.label"
                    :ref="'slotTreeInput' + data.id"
                    @blur.stop="nodeBlur(node, data)"
                    @keydown.native.enter="nodeBlur(node, data)"></el-input>
          <el-input
            class="slot-t-input"
            size="mini"
            autofocus
            v-model="data.label"
            :ref="'slotTreeInput' + data.id"
            @blur.stop="NodeBlur(node, data)"
            @keydown.native.enter="NodeBlur(node, data)"
          ></el-input>
        </span>
      </span>
    </el-tree>
    <el-card class="box-card"
             ref="card"
             :style="{ ...rightClickMenuStyle }"
             v-show="menuVisible">
      <div class="edit"
           @click="showLayerAttribute()"
           v-if="showProp && !shwoHistogram">
    <el-card
      class="box-card"
      ref="card"
      :style="{ ...rightClickMenuStyle }"
      v-show="menuVisible"
    >
      <!-- <div
        @click="addSameLevelNode()"
        v-show="firstLevel"
      >
        <i class="el-icon-plus"></i>&nbsp;&nbsp;添加图层组
      </div> -->
      <!-- <div
        class="add"
        @click="addChildNode()"
      >
        <i class="el-icon-plus"></i>&nbsp;&nbsp;添加图层
      </div> -->
      <!-- <div
        class="delete"
        @click="deleteNode()"
      >
        <i class="el-icon-delete"></i>&nbsp;&nbsp;删除
      </div> -->
      <!-- <div
        class="edit"
        @click="editNode()"
      >
        <i class="el-icon-edit"></i>&nbsp;&nbsp;重命名
      </div> -->
      <div
        class="edit"
        @click="showLayerAttribute()"
        v-if="!showlocal && !shwoHistogram"
        v-show="!firstLevel"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;属性
      </div>
      <div class="edit"
           @click="positioning()"
           v-if="showLocal">
      <div
        class="edit"
        @click="positioning()"
        v-if="showlocal"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;定位
      </div>
      <div class="edit"
           @click="pellucidity()"
           v-if="showOpacity">
      <div
        class="edit"
        @click="pellucidity()"
        v-if="showopaque"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;透明度
      </div>
      <div class="edit"
           @click="histogram()"
           v-show="shwoHistogram">
      <div
        class="edit"
        @click="histogram()"
        v-show="shwoHistogram"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;钻孔柱状图
      </div>
      <!-- <div
        class="edit"
        v-show="showModelAttach"
        @click="modelAttach()"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;模型属性
      </div> -->
      <!-- <div
        class="edit"
        @click="menuMoveF( 'up')"
      >
        <i class="el-icon-top"></i>&nbsp;&nbsp;上移
      </div>
      <div
        class="edit"
        @click="menuMoveF( 'down')"
      >
        <i class="el-icon-bottom"></i>&nbsp;&nbsp;下移
      </div> -->
    </el-card>
    <el-dialog
      :title="appendNodetitle"
      :visible.sync="dialogVisible"
      width="30%"
      top="20vh"
      :modal="false"
      :before-close="handleClose"
    >
      <el-form
        ref="form"
        :model="addFormServer"
        label-width="100px"
      >
        <el-form-item label="服务类型">
          <!-- <el-input v-model="addFormServer.type"></el-input> -->
          <el-select
            style="width: 100%"
            :popper-append-to-body="false"
            v-model="addFormServer.serveType"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="图层名称">
          <el-input v-model="addFormServer.cnName"></el-input>
        </el-form-item>
        <el-form-item label="服务名称">
          <el-input v-model="addFormServer.url"></el-input>
        </el-form-item>
        <el-form-item label="服务地址">
          <el-input v-model="addFormServer.resource"></el-input>
        </el-form-item>
        <el-form-item label="透明度">
          <el-slider v-model="addFormServer.opacity"></el-slider>
        </el-form-item>
      </el-form>
      <span
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          type="primary"
          @click="setAddServer"
        >确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { image_layer } from "../../assets/js/index.js";
import ImageWMS from "ol/source/ImageWMS";
import Image from "ol/layer/Image";
import GeoJSON from "ol/format/GeoJSON.js";
import Map from "ol/Map.js";
import queryinfo from "./queryinfo.vue";
import { Vector as VectorSource } from "ol/source";
import { Vector as VectorLayer } from "ol/layer";
import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll, project_selectByDirid, } from "../../api/api.js";
import View from "ol/View.js";
import { Fill, Stroke, Style } from "ol/style.js";
import {
  perms_selectLayers, inquiry_selectDomains, comprehensive_selectPubById,
  project_selectDirAll, project_selectByDirid, dataQuerySelectWktById
} from "../../api/api.js";
export default {
  name: "tree",
  components: { queryinfo },
  data () {
  data() {
    return {
      isBusy: false, // 正忙
      lastPrjCode: "", // 最后选择项目编码
      showProp: false, // 属性
      shwoHistogram: false, // 钻孔柱状图
      showLocal: false, // 定位
      showOpacity: false, // 不透明度
      menuVisible: false, // 菜单
      levelArray: [ // 高程数组
        0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000,
        250000, 200000, 100000, 50000, 17000, 9000, 5000, 2000, 1000, 500, 200,
        100, 50, 25, 10, 0,
      ],
      filterText: "", // 关键字过滤
      currentData: "", // 当前数据
      currentNode: "", // 当前节点
      rightClickMenuStyle: {}, // 右键菜单样式
      handleTreeCheck: [], // 默认选中键
      shwoHistogram: false,
      showlocal: false,
      showopaque: false,
      eleId: "",
      isShow: false,
      currentData: "",
      currentNode: "",
      menuVisible: false,
      firstLevel: false,
      filterText: "",
      appendNodetitle: "",
      maxexpandId: 4,
      rightClickMenuStyle: {},
      handleTreeCheck: [],
      dialogVisible: false,
      showModelAttach: false,
      addFormServer: {
        opacity: 100,
        serveType: "WMS",
        type: 2,
      },
      layerId: [
        "m_pipeline",
        "th_strategic_channel",
        "bs_project",
        "m_sitepoint",
      ],
      treeData: [], // 树数据
      defaultProps: { // 默认属性值
      treeData: [],
      defaultProps: {
        children: "children",
        label: "cnName",
      },
      mptLayer: [], // Mpt图层
      menus: [] // 菜单项
      options: [
        {
          value: "WMS",
          label: "WMS",
        },
        {
          value: "WFS",
          label: "WFS",
        },
      ],
      childOption: [],
      mptLayer: [],
      optionts: [],
      proValue: null,
    };
  },
  watch: {
    filterText (val) {
      this.$refs.tree.filter(val);
    },
  },
  mounted () {
    this.getMenus();
    this.$bus.$on("treeDataCopy", (res) => {
      this.$store.state.treeData = this.treeData;
      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
    });
    if (this.$store.state.showAllLayers) {
      this.layersStart();
      this.$store.state.showAllLayers = false;
    } else {
      this.treeData = this.$store.state.treeData;
      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
    }
  },
  methods: {
    // 获取菜单
    async getMenus () {
      let data = await project_selectDirAll();
      if (data && data.code == 200) this.menus = data.result;
    },
    // 初始化图层
    async layersStart () {
      let data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
      }
      let checkKey = [], checkedLayers = [];
      let layers = data.result.filter((lyr) => {
        if (lyr.url && lyr.type == 2 && lyr.isShow == 1) {
          checkKey.push(lyr.id);
          if (lyr.serveType == "WMS") checkedLayers.push(lyr);
        }
        return lyr;
      });
      // 存储选中图层
      this.treeData = this.setTreeData(layers);
      this.$refs.tree.setCheckedKeys(checkKey);
      sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
    //转孔柱状图
    async histogram() {
      this.menuVisible = false
      var layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      this.$store.state.mapPopBoxFlag = "2";
      this.$store.state.showPopBoxFlag = true;
    },
    // 设置树数据
    setTreeData (source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
        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;
        return father.pid == 0; // 返回一级菜单
      });
    },
    // 节点获得焦点事件
    nodeBlur (node, data) {
      if (!data.label.length) return this.$message.error("菜单名不可为空!");
      if (data.isEdit) this.$set(data, "isEdit", false);
      this.$nextTick(() => {
        this.$refs["slotTreeInput" + data.id].$refs.input.focus();
      });
    },
    // 鼠标左击事件
    handleLeftclick (data, node) {
      this.rmListener();
    },
    // 取消鼠标监听事件
    rmListener () {
    modelAttach() {
      this.menuVisible = false;
      //  要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
      document.removeEventListener("click", this.rmListener);
      this.$store.state.attachinfo = this.currentData;
      this.$store.state.attachModel = true;
    },
    // 过滤节点
    filterNode (value, data) {
      if (!value) return true;
      return data.cnName.indexOf(value) !== -1;
    NodeBlur(Node, data) {
      if (data.label.length === 0) {
        this.$message.error("菜单名不可为空!");
        return false;
      } else {
        if (data.isEdit) {
          this.$set(data, "isEdit", false);
        }
        this.$nextTick(() => {
          this.$refs["slotTreeInput" + data.id].$refs.input.focus();
        });
      }
    },
    allowDrop(draggingNode, dropNode, type) {
      if (dropNode.data.label === "二级 3-1") {
        return type !== "inner";
      } else {
        return true;
      }
    },
    allowDrag(draggingNode) {
      return draggingNode.data.label.indexOf("三级 3-2-2") === -1;
    },
    // 鼠标右击事件
    rightClick (event, object, node, element) {
      if (object.type == 1 || node.data.children != null) return;
      this.currentNode = node;
    rightClick(event, object, Node, element) {
      if (object.type == 1) {
        return
      }
      this.currentData = object;
      this.$store.state.propertiesName = object;
      this.currentNode = Node;
      this.showProp = object.serveType == "WMS"; // 属性
      this.shwoHistogram = this.showProp && object.enName == "s_explorationpoint"; // 钻孔柱状图
      this.showLocal = ["Tileset", "3DML", "Mpt", "TMS", "DOM", "DEM"].indexOf(object.serveType) > -1; // 定位
      this.showOpacity = ["Tileset", "3DML"].indexOf(object.serveType) > -1; // 不透明度
      this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity; // 菜单
      this.$store.state.propertiesName = this.currentData;
      this.showModelAttach = false;
      this.shwoTitle = false;
      this.menuVisible = true;
      if (this.currentData.serveType == 'TMS') {
        this.shwoTitle = true
      } else if (this.currentData.serveType == "Tileset" || this.currentData.serveType == "3DML") {
        this.showModelAttach = true;
      } else if (this.currentData.serveType == "DOM" || this.currentData.serveType == "Mpt") {
        this.menuVisible = false;
      }
      if (this.currentData.enName == "s_explorationpoint") {
        this.shwoHistogram = true;
      } else {
        this.shwoHistogram = false;
      }
      if (Node.data.children == null) {
        this.firstLevel = false;
      } else {
        this.firstLevel = true;
      }
      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") {
        this.showlocal = false;
        this.showopaque = false;
      }
      if (this.currentData.serveType == "DEM") {
        this.showlocal = true;
        this.showopaque = false;
      }
      this.$refs.card.$el.style.left = event.pageX + 20 + "px";
      this.$refs.card.$el.style.top = event.pageY + "px";
    },
    // 属性显示
    showLayerAttribute (data) {
      this.rmListener();
      this.currentData = data ? data : this.currentData;
      let layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      this.$store.state.showPopBoxFlag = true;
      this.$store.state.mapPopBoxFlag = "2";
    },
    // 定位
    async positioning () {
      this.rmListener();
      if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) {
        for (let i in Viewer.scene.primitives._primitives) {
          if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) {
            Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
            break;
    // 鼠标左击事件
    handleLeftclick(data, node) {
      this.foo();
      if (node.checked == true) {
        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
          var val_id =
            window.Viewer.imageryLayers._layers[i].imageryProvider.name;
          if (val_id == data.label) {
            const img_layer = window.Viewer.imageryLayers._layers[i];
          }
        }
        return;
      }
    },
    //  取消鼠标监听事件 菜单栏
    foo() {
      this.menuVisible = false;
      //  要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
      document.removeEventListener("click", this.foo);
    },
    // 增加同级节点事件
    addSameLevelNode() {
      this.menuVisible = false
      this.foo();
      if (this.currentNode.level == 2) {
        this.appendNodetitle = this.currentData.label;
        this.dialogVisible = true;
      } else {
        let id = Math.ceil(Math.random() * 100);
        var data = { id: id, label: "新增节点" };
        this.$refs.tree.append(data, this.currentNode.parent);
      }
    },
    // 增加子级节点事件
    addChildNode() {
      this.foo();
      this.menuVisible = false
      // if (this.currentNode.level >= 2) {
      //   this.$message.error("最多只支两级!");
      //   return false;
      // }
      this.appendNodetitle = this.currentData.label;
      this.dialogVisible = true;
    },
    handleClose() {
      this.dialogVisible = false;
      this.addFormServer = {
        opacity: 100,
        serveType: "WMS",
        type: 2,
      };
    },
    setAddServer() {
      var val = this.currentNode;
      if (this.currentNode.level == 2) {
        val = this.currentNode.parent;
      }
      var data = this.addFormServer;
      data.id = Math.ceil(Math.random() * 100);
      this.$refs.tree.append(data, val);
      this.handleClose();
    },
    // 删除节点
    deleteNode() {
      this.foo();
      this.menuVisible = false
      var label = this.currentNode.data.cnName;
      if (this.currentNode.data.serveType == "WMS") {
        var value = this.$refs.tree.getCheckedNodes();
      if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) {
        let data = await comprehensive_selectPubById({ id: this.currentData.pubid });
        if (data.result && data.result.geom) {
          let wkt = this.$wkt.parse(data.result.geom);
          let height = this.getHeight(wkt.coordinates[2]);
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), // 2000
          });
        this.$bus.$emit("showMenuLayer", value);
      } else if (this.currentNode.data.serveType == "WFS") {
        for (var i in window.Viewer.dataSources._dataSources) {
          if (window.Viewer.dataSources._dataSources[i].name == label) {
            window.Viewer.dataSources.remove(
              window.Viewer.dataSources._dataSources[i]
            );
          }
        }
        return;
      } else if (this.currentNode.data.serveType == "Tileset") {
        for (var i in Viewer.scene.primitives._primitives) {
          // Viewer.scene.primitives._primitives[i].show = checked;
          if (Viewer.scene.primitives._primitives[i].id == label) {
            Viewer.scene.primitives.remove(
              Viewer.scene.primitives._primitives[i]
            );
          }
        }
        var list = this.$store.state.setAlphaList;
        for (var i = 0; i < list.length; i++) {
          if (list[i].name == label) {
            list.splice(i, 1)
          }
        }
      }
      var layers_ol = window.map.getAllLayers();
      for (var i in layers_ol) {
        var layerOl = layers_ol[i];
        if (layerOl.values_.name == label) {
          window.map.removeLayer(layerOl); //显示图层
        }
      }
      if ("Mpt" == this.currentData.serveType) {
        viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(101.8, 37.9, 10000000.0) }); // 中国
      }
      this.$refs.tree.remove(this.currentNode);
    },
    // 钻孔柱状图
    async histogram () {
      this.rmListener();
      let layer = this.currentData.enName.replaceAll("_", "");
    //属性显示
    showLayerAttribute(data) {
      this.foo();
      this.menuVisible = false
      this.currentData = data ? data : this.currentData;
      var layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      this.$store.state.mapPopBoxFlag = "2";
      this.$store.state.showPopBoxFlag = true;
      this.$store.state.mapPopBoxFlag = "2";
    },
    // 透明度
    pellucidity () {
      this.rmListener();
      for (let j in Viewer.scene.primitives._primitives) {
        if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) {
    //模型设置透明度
    pellucidity() {
      this.foo();
      this.menuVisible = false
      var tile = this.currentData
      for (var j in Viewer.scene.primitives._primitives) {
        if (Viewer.scene.primitives._primitives[j].id == tile.cnName) {
          this.$store.state.setAlphaDity = this.currentData;
          this.$bus.$emit("showPellucidity", true);
          break;
        }
      }
    },
    // 获取高度
    getHeight (level) {
      if (level > -1 && level < 23) return this.levelArray[level];
      return this.levelArray[this.levelArray.length - 1];
    //模型定位
    async positioning() {
      this.menuVisible = false
      if (this.currentData.serveType == 'Tileset' || this.currentData.serveType == '3DML') {
        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.pubid && this.currentData.serveType == 'TMS' || this.currentData.serveType == "DEM") {
        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),
          });
        }
      }
    },
    // 图层选中事件
    handleCheckChange (data, checked) {
      if (this.isBusy) return;
    // 编辑节点
    editNode(data) {
      this.foo();
      this.menuVisible = false
      this.currentData = data ? data : this.currentData;
      if (!this.currentData.isEdit) {
        this.$set(this.currentData, "isEdit", true);
      }
      // 获取焦点
      this.$nextTick(() => {
        this.$refs["slotTreeInput" + this.currentData.id].focus();
      });
    },
      let nodes = [];
      this.getNodes(data, nodes);
      let obj = { WMS: [], Tileset: [], TMS: [], Mpt: [], DEM: [] };
    menuMoveF(type) {
      // 将变动之前的node备份
      var node = this.currentNode;
      var data = this.currentData;
      let copyNode = this.currentNode;
      for (let i = 0, c = nodes.length; i < c; i++) {
        let node = nodes[i];
        switch (node.serveType) {
          case "WMS":
            obj.WMS.push(node);
            break;
          case "3DML":
          case "Tileset":
            obj.Tileset.push(node);
            break;
          case "TMS":
            obj.TMS.push(node);
            break;
          case "Mpt":
            obj.Mpt.push(node);
            break;
          case "DEM":
            obj.DEM.push(node);
            break;
      // copyNode.previousSibling = {...node. }
      // copyNode.nextSibling = {...node.nextSibling}
      // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode))
      let nodeData = {};
      if (type === "up") {
        // 上移
        if (node.previousSibling) {
          // 删除原先的node
          this.$refs.tree.remove(node.data);
          // 拿到copy的node
          // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
          // // 复制该node到指定位置(参数:1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node)
          // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data)
          window.sessionStorage.removeItem("menuNode");
        } else {
          this.$message.warning("该菜单已经是当前层最上级");
        }
      } else {
        // 下移
        if (node.nextSibling) {
          this.$refs.tree.remove(node.data);
          nodeData = CircularJSON.parse(
            window.sessionStorage.getItem("menuNode")
          );
          // 参数:1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node
          this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data);
          window.sessionStorage.removeItem("menuNode");
        } else {
          this.$message.warning("该菜单已经是当前层最下级");
        }
      }
    },
    handleDragStart(node, ev) {
      console.log("drag start", node);
    },
    handleDragEnter(draggingNode, dropNode, ev) {
      console.log("tree drag enter: ", dropNode.label);
    },
    handleDragLeave(draggingNode, dropNode, ev) {
      console.log("tree drag leave: ", dropNode.label);
    },
    handleDragOver(draggingNode, dropNode, ev) {
      console.log("tree drag over: ", dropNode.label);
    },
    handleDragEnd(draggingNode, dropNode, dropType, ev) {
      console.log("tree drag end: ", dropNode && dropNode.label, dropType);
    },
    handleDrop(draggingNode, dropNode, dropType, ev) {
      console.log("tree drop: ", dropNode.label, dropType);
    },
    handleCheckChange(data, checked, indeterminate) {
      if (data.type == 1) {
        this.childOption = [];
        this.getchilds(data);
        var listWMS = [];
        var listWFS = [];
        var listTileset = [];
        var listTMS = [];
        var listMpt = [];
        var listDEM = [];
        for (var i in this.childOption) {
          switch (this.childOption[i].serveType) {
            case 'WMS':
              listWMS.push(this.childOption[i])
              break;
            case 'WFS':
              listWFS.push(this.childOption[i])
              break;
            case '3DML':
              listTileset.push(this.childOption[i])
              break;
            case 'Tileset':
              listTileset.push(this.childOption[i])
              break;
            case 'Mpt':
              listMpt.push(this.childOption[i])
              break;
            case 'TMS':
              listTMS.push(this.childOption[i])
              break;
            case 'DEM':
              this.setChangeDEM([data], checked);
              break;
          }
        }
        this.setChangeWMS(listWMS, checked);
        this.setChangeWFS(listWFS, checked);
        this.setChangeTileset(listTileset, checked);
        this.setChangeTMS(listTMS, checked);
        this.setChangeMpt(listMpt, checked);
      } else if (data.type == 2) {
        if (data.serveType == "WMS") {
          this.setChangeWMS([data], checked);
        } 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); //显示图层
      //   }
      // }
    },
    setChangeWMS(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      this.$bus.$emit("showMenuLayer", value);
    },
    setChangeWFS(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      for (var i in value) {
        std.push(value[i].id)
      }
      for (var i in result) {
        var tile = result[i]
        if (std.indexOf(tile.id) != -1) {
          this.setAddLayers(tile)
        } else {
          for (var i in window.Viewer.dataSources._dataSources) {
            if (window.Viewer.dataSources._dataSources[i].name == tile.cnName) {
              window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]);
            }
          }
          var layers_ol = window.map.getAllLayers();
          for (var i in layers_ol) {
            var layerOl = layers_ol[i];
            if (layerOl.values_.name == tile.cnName) {
              window.map.removeLayer(layerOl)
            }
          }
        }
      }
    },
    setChangeTileset(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      for (var i in value) {
        std.push(value[i].id)
      }
      for (var i in result) {
        var tile = result[i]
        if (std.indexOf(tile.id) != -1) {
          this.setAddLayers(tile)
        } else {
          for (var j in Viewer.scene.primitives._primitives) {
            if (Viewer.scene.primitives._primitives[j].id == tile.cnName) {
              Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j])
            }
          }
          var list = this.$store.state.setAlphaList;
          for (var i = 0; i < list.length; i++) {
            if (list[i].name == tile.cnName) {
              list.splice(i, 1)
            }
          }
        }
      }
      if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked);
      if (obj.Tileset.length) this.setChangeTileset(obj.Tileset, checked);
      if (obj.TMS.length) this.setChangeTMS(obj.TMS, checked);
      if (obj.Mpt.length) this.setChangeMpt(obj.Mpt, checked);
      if (obj.DEM.length) this.setChangeDEM(obj.DEM, checked);
      // if (checked.checkedKeys) {
      //   for (var i in result) {
      //
      //   }
      // } else {
      //   for (var j in result) {
      //     console.log(result[j])
      //     //
      //   }
      // }
    },
    // 获取子节点
    getNodes (data, arr) {
      if (data.children) {
        for (let i = 0, c = data.children.length; i < c; i++) {
          let node = data.children[i];
          if (node.children) {
            this.getNodes(node, arr)
    setChangeDEM(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      var val = [];
      for (var i in value) {
        if (value[i].serveType != 'DEM') {
          val.push(value[i].id)
        }
        std.push(value[i].id)
      }
      if (window.terrainFlag == 'MPT') {
        window.terrainLayer.deleteObject();
      } else if (window.terrainFlag == 'DEM') {
        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
        window.terrainLayer = null;
      }
      var tile = result[0]
      if (std.indexOf(tile.id) != -1) {
        val.push(tile.id);
        this.$refs.tree.setCheckedKeys(val);
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
          url: tile.url.replace("{host}", iisHost)
        });
        Viewer.terrainProvider = window.terrainLayer
        window.terrainFlag = 'DEM'
      } else {
        var option = {
          url: window.sceneConfig.SGUrl,
          layerName: window.sceneConfig.mptName,
          requestVertexNormals: true,
        };
        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
        });
        window.terrainFlag = 'MPT'
      }
    },
    setChangeMpt(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      for (var i in value) {
        std.push(value[i].id)
      }
      for (var i in result) {
        var tile = result[i]
        if (std.indexOf(tile.id) != -1) {
          this.setAddLayers(tile)
        } else {
          for (var i in this.mptLayer) {
            if (this.mptLayer[i].treeobj.name == tile.cnName) {
              this.mptLayer[i].deleteObject();
              this.mptLayer.splice(i, 1)
            }
          }
        }
      }
    },
    setChangeTMS(result, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      var std = [];
      for (var i in value) {
        std.push(value[i].id)
      }
      for (var i in result) {
        var tile = result[i]
        if (std.indexOf(tile.id) != -1) {
          this.setAddLayers(tile)
        } else {
          for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
            var val_id = window.Viewer.imageryLayers._layers[i].name;
            if (val_id == tile.cnName) {
              window.Viewer.imageryLayers.remove(
                window.Viewer.imageryLayers._layers[i]
              );
            }
          }
        }
      }
    },
    getchilds(source) {
      if (source.children) {
        var child = source.children
        for (var i in child) {
          if (child[i].children) {
            this.getchilds(child[i])
          } else {
            arr.push(node);
            this.childOption.push(child[i])
          }
        }
      } else {
        arr.push(data);
        this.childOption.push(source)
      }
    },
    // 获取节点ID
    getCheckNodesIds () {
      let nodes = this.$refs.tree.getCheckedNodes();
      let ids = [];
      for (let i in nodes) {
        ids.push(nodes[i].id);
      }
      return ids;
    },
    // 切换WMS服务
    setChangeWMS (layers, checked) {
      let value = this.$refs.tree.getCheckedNodes();
      this.$bus.$emit("showMenuLayer", value);
    },
    // 切换Tileset
    setChangeTileset (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let k in layers) {
        let layer = layers[k];
        if (ids.indexOf(layer.id) > -1) {
          arr.push(layer);
          continue;
    async setAddLayers(res) {
      if (res.serveType == "WMS") {
        var resource = geoServerURl;
        if (res.resource != null && res.resource != undefined) {
          resource = res.resource;
        }
        var imageryLayers = window.Viewer.scene.imageryLayers;
        let layerWMS = new Cesium.WebMapServiceImageryProvider({
          url: resource,
          layers: res.url,
          parameters: {
            transparent: true,
            format: "image/png",
            srs: "EPSG:4490",
            styles: "",
          },
          tileWidth: 512,
          tileHeight: 512,
        });
        layerWMS.name = res.cnName;
        //透明度
        var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
        if (res.opacity) {
          tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
        }
        var layer2 = new Image({
          name: res.cnName,
          source: new ImageWMS({
            crossOrigin: "anonymous",
            url: resource,
            params: {
              FORMAT: "image/png",
              VERSION: "1.1.1",
              LAYERS: res.url,
            },
          }),
        });
        if (res.opacity) {
          layer2.setOpacity(parseInt(res.opacity) / 100);
        }
        window.map.addLayer(layer2);
      } else if (res.serveType == "WFS") {
        var url =
          res.resource +
          "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
          res.url +
          "&outputFormat=application%2Fjson";
        $.ajax({
          url: url,
          cache: false,
          async: true,
          success: function (data) {
            var datasource = Cesium.GeoJsonDataSource.load(data, {
              stroke: Cesium.Color.YELLOW,
              fill: Cesium.Color.YELLOW.withAlpha(0.1),
              alpha: 0.1,
              strokeWidth: 8,
              clampToGround: true, //是否贴地
            });
            datasource.then((data) => {
              data.name = res.cnName;
              window.Viewer.dataSources.add(data);
            });
          },
          error: function (data) {
            console.log("error");
          },
        });
        var vectorLayer = new VectorLayer({
          name: res.cnName,
          source: new VectorSource({
            url: url,
            format: new GeoJSON(),
          }),
        });
        window.map.addLayer(vectorLayer);
      } else if (res.serveType == "Tileset" || res.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        } else {
          url = modelUrl + "/" + res.url
        }
        for (let j in Viewer.scene.primitives._primitives) {
          if (Viewer.scene.primitives._primitives[j].id == layer.cnName) {
            Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]);
            break;
          }
        }
        let list = this.$store.state.setAlphaList;
        for (let i = 0; i < list.length; i++) {
          if (list[i].name == layer.cnName) {
            list.splice(i, 1);
          }
        }
      }
      if (arr.length) this.addTilesetLayers(arr);
    },
    // 添加Tileset图层
    addTilesetLayers (layers) {
      for (let i in layers) {
        let res = layers[i];
        let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url;
        let tileset = Viewer.scene.primitives.add(
        var tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            url: url,
            url: url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
            skipLevelOfDetail: true, // 在遍历时候跳过详情:false
            baseScreenSpaceError: 1024,
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊
            skipScreenSpaceErrorFactor: 16,
            skipLevels: 1,
            immediatelyLoadDesiredLevelOfDetail: false,
            loadSiblings: true, // 自动从中心开始超清化模型:false
            cullWithChildrenBounds: true, // 使用子项边界体积的并集来剔除图块:true
            cullRequestsWhileMoving: true,
            cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除:60
            preloadWhenHidden: true,
            preferLeaves: true, // 预装子节点:false
            maximumMemoryUsage: 768, // 内存分配变小有利于内存回收,提升性能体验
            progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊
            dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
            dynamicScreenSpaceErrorFactor: 2, // 动态屏幕空间误差的系数
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋
          })
        );
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.serveType != '3DML') {
            // Cesium.Matrix4.equals(a,b) 判断矩阵是否相等,整个根节点模型矩阵,该tileSet=>世界坐标系,单位矩阵对角线值为1.0的4*4矩阵
            // 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());
              // 获取模型的世界坐标(笛卡尔)
              // Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标
              const transformCenter = Cesium.Matrix4.getTranslation(
                tileset.root.transform,
                new Cesium.Cartesian3()
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的)
              const transformCartographic = Cesium.Cartographic.fromCartesian(transformCenter);
              const transformCartographic = Cesium.Cartographic.fromCartesian(
                transformCenter
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的)
              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(
                tileset.boundingSphere.center
              );
              const height = boundingSphereCartographic.height - transformCartographic.height;
              // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的)
              window.modelHeight = height;
            } else {
              window.modelHeight = 0;
            }
            this.setTilesetArgs(tileset, res);
            } else window.modelHeight = 0;
            this.getTilesetArgs(tileset, res);
          }
        });
      }
    },
    // 切换TMS
    setChangeTMS (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let j in layers) {
        let layer = layers[j];
        if (ids.indexOf(layer.id) > -1) {
          arr.push(layer);
          continue;
        this.$store.state.setAlphaList.push({
          name: res.cnName,
          alpha: 1
        })
        window.model = tileset
      } else if (res.serveType == "TMS") {
        var url = res.url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        }
        for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
          if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) {
            window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]);
            break;
          }
        }
      }
      if (arr.length) this.addTMSLayers(arr);
    },
    // 添加TMS图层
    addTMSLayers (layers) {
      for (let i in layers) {
        let res = layers[i];
        res.url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url;
        if (res.pubid) {
          this.setTMSLayerByPubid(res);
          continue;
          this.setQueryPubid(res);
        } else {
          var layer = Viewer.imageryLayers.addImageryProvider(
            new Cesium.UrlTemplateImageryProvider({
              url: url,
              maximumLevel: 22,
            })
          );
          layer.name = res.cnName;
          this.setChangeWMS();
        }
        let layer = Viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({
          url: res.url,
          maximumLevel: 22,
        }));
        layer.id = res.id;
        layer.name = res.cnName;
      }
    },
    // 切换Mpt
    setChangeMpt (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let j in layers) {
        let layer = layers[j];
        if (ids.indexOf(layer.id) != -1) {
          arr.push(layer);
          continue;
      } else if (res.serveType == "Mpt") {
        if (res.url.indexOf("{host}") != -1) {
          res.url = res.url.replace("{host}", iisHost);
        }
        var url = res.url.split(';')
        for (let i in this.mptLayer) {
          if (this.mptLayer[i].treeobj.name == layer.cnName) {
            this.mptLayer[i].deleteObject();
            this.mptLayer.splice(i, 1);
          }
        }
      }
      if (arr.length) this.addMptLayers(arr);
    },
    // 添加Mpt图层
    addMptLayers (layers) {
      for (let i in layers) {
        let res = layers[i];
        if (res.url.indexOf("{host}") > -1) res.url = res.url.replace("{host}", iisHost);
        let urls = res.url.split(';')
        let layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
          url: urls[0],
          layers: urls[1]
        var layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
          url: url[0],
          layers: url[1]
        }, "0", undefined, true, "");
        this.mptLayer.push(layer);
        this.mptLayer.push(layer)
        setTimeout(() => {
          this.setChangeWMS();
        }, 500);
      }
    },
    // 切换DEM
    setChangeDEM (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [], isDel = false, useSG = false;
      for (let i in layers) {
        let layer = layers[i];
        if (ids.indexOf(layer.id) != -1) {
          arr.push(layer.url);
          continue;
    async getTilesetArgs(tileset, res) {
      if (res.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: res.pubid })
        if (data.code != 200) {
        } else {
          if (res.serveType != '3DML') {
            this.reload(tileset, data.result.json)
          } else {
            this.tileSet(tileset, parseFloat(res.elev))
          }
        }
      } else {
        this.tileSet(tileset, parseFloat(res.elev))
      }
    },
    async setQueryPubid(res) {
      const data = await comprehensive_selectPubById({ id: res.pubid })
      if (data.code != 200) {
      } else {
        var url = data.result.url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        }
        var min = data.result.min;
        var max = data.result.max;
        var layer;
        if (max > 0) {
          layer = Viewer.imageryLayers.addImageryProvider(
            new Cesium.UrlTemplateImageryProvider({
              url: url,
              minimumLevel: min,
              maximumLevel: max,
            })
          );
        } else {
          layer = Viewer.imageryLayers.addImageryProvider(
            new Cesium.UrlTemplateImageryProvider({
              url: url,
              minimumLevel: min,
            })
          );
        }
        if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) isDel = true; // 删除DEM
      }
        layer.name = res.cnName;
      if (!arr.length && isDel) useSG = true; // demLayer
      if (arr.length) this.addDEMLayers(arr[0], useSG);
    },
    // 添加DEM图层
    addDEMLayer (url, useSG) {
      if (useSG) {
        let option = {
          url: window.sceneConfig.SGUrl,
          layerName: window.sceneConfig.mptName,
          requestVertexNormals: true
        };
        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      } else {
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
          url: url,
          requestVertexNormals: true
        });
        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();
      }
      Viewer.terrainProvider = terrainLayer;
    },
    // 设置Tileset参数
    async setTilesetArgs (tileset, res) {
      if (res.serveType == '3DML' || !res.pubid) {
        this.setTilesetHeigth(tileset, parseFloat(res.elev));
        return;
      }
      const data = await comprehensive_selectPubById({ id: res.pubid })
      if (data.code == 200) this.setTilesetCoord(tileset, data.result.json);
    reload(tileset, res) {
      var vm = JSON.parse(res)
      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
      tileset._root.transform = matrix;
      // Viewer.flyTo(tileset);
    },
    // 设置Tileset高度
    setTilesetHeigth (tileset, height) {
    tileSet(tileset, height) {
      //3dtile模型的边界球体
      let boundingSphere = tileset.boundingSphere;
      var boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
      let cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
      //地理坐标(弧度制)=>迪卡尔空间直角坐标
      let Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
      let Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
      //获得地面和offset的转换
      let translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
      //修改模型矩阵
      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
      // Viewer.flyTo(tileset);
    },
    // 设置Tileset坐标
    setTilesetCoord (tileset, json) {
      let vm = JSON.parse(json);
      let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      let converter = Cesium.Transforms.eastNorthUpToFixedFrame;
      let hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
      let matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
      tileset._root.transform = matrix;
      // Viewer.flyTo(tileset);
    setTreeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
        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;
        // 由此循环多次后,就能形成相应的树形数据结构
        return father.pid == 0; // 返回一级菜单
      });
    },
    // 根据Pubid设置TMS图层
    async setTMSLayerByPubid (res) {
      const data = await comprehensive_selectPubById({ id: res.pubid });
      if (!data || data.code != 200) return;
    async layersStart() {
      const data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
      }
      var std = data.result;
      var that = this;
      var checkKey = [];
      let checkedLayers = [];
      var val = std.filter((str) => {
        if (str.type == 1) {
          return str;
        }
        if (str.url != null && str.type == 2) {
          if (str.isShow == 1) {
            checkKey.push(str.id);
            // that.setAddLayers(str);
            if (str.serveType == "WMS" && str.url) {
              checkedLayers.push(str);
            }
          }
          return str;
        }
      });
      let provider = data.result.max > 0 ?
        new Cesium.UrlTemplateImageryProvider({
          url: res.url,
          minimumLevel: data.result.min,
          maximumLevel: data.result.max
        }) :
        new Cesium.UrlTemplateImageryProvider({
          url: res.url,
          minimumLevel: data.result.min
        });
      //存储选中图层
      sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
      var res = this.setTreeData(val);
      let layer = Viewer.imageryLayers.addImageryProvider(provider);
      layer.name = res.cnName;
      // if (data.result.geom) {
      //   let 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 res) {
      //   res[i].children = res[i].children.filter((val) => {
      //     if (val.children != null) {
      //       return val;
      //     }
      //   });
      // }
      this.treeData = res;
      this.$refs.tree.setCheckedKeys(checkKey);
    },
    // 切换项目
    prjChanged (code) {
      this.$store.state.pigCode = code;
      if (code) {
        this.isBusy = true;
        let checkedLayers = this.getCheckedLayersByCode(code);
        let checkedKeys = [];
        for (let i in checkedLayers) {
          checkedKeys.push(checkedLayers[i].id);
        }
        this.$refs.tree.setCheckedKeys(checkedKeys);
        sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
        this.isBusy = false;
    async treelayersStart() {
      const data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
      }
      for (let i = 0, c = this.treeData.length; i < c; i++) {
        this.handleCheckChange(this.treeData[i], true);
      }
    },
    // 根据项目编码获取选中图层
    getCheckedLayersByCode (code) {
      let layers = [];
      for (let i = 0, c = this.treeData.length; i < c; i++) {
        this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false);
      }
      return layers;
    },
    // 根据项目编码获取选中子图层
    getCheckedChildLayersByCode (data, code, layers, isPrj) {
      if (data.children && data.children.length) {
        for (let i = 0, c = data.children.length; i < c; i++) {
          let layer = data.children[i];
          if (layer.children && layer.children.length) {
            let flag = layer.type == 1 && layer.isProject && layer.enName == code;
            this.getCheckedChildLayersByCode(layer, code, layers, flag);
            continue;
          }
          if (layer.type == 2 && (layer.isProject || isPrj)) {
            layers.push(layer);
      var std = [];
      var layer_list = [];
      var layer_groups = [];
      for (var i in data.result) {
        if (data.result[i].type == 1) {
          layer_groups.push({
            id: data.result[i].id,
            label: data.result[i].cnName,
            type: data.result[i].type,
            isEdit: false,
            children: [],
          });
        } else if (data.result[i].type == 2) {
          if (data.result[i].url != null) {
            var layer_entity = {
              id: data.result[i].id,
              pid: data.result[i].pid,
              label: data.result[i].cnName,
              resource: data.result[i].url,
              type: data.result[i].type,
              isEdit: false,
            };
            layer_list.push(layer_entity);
          }
        }
        return;
      }
      for (var i in layer_list) {
        for (var j in layer_groups) {
          if (layer_list[i].pid === layer_groups[j].id) {
            layer_groups[j].children.push(layer_list[i]);
          }
        }
      }
      layer_groups = layer_groups.filter((res) => {
        if (res.children && res.children.length != 0) {
          return res;
        }
      });
      this.treeData = layer_groups;
      if (data.type == 2 && (data.isProject || isPrj)) {
        layers.push(data);
      for (var i in data.result) {
        if (data.result[i].type == 2 && data.result[i].url != null) {
          for (var j = 0; j < window.Viewer.imageryLayers._layers.length; j++) {
            var val_id = window.Viewer.imageryLayers._layers[j];
            if (val_id.show == true) {
              if (val_id.imageryProvider.name == data.result[i].cnName) {
                std.push(data.result[i].id);
              }
            }
          }
        }
      }
      this.$refs.tree.setCheckedKeys(std);
    },
    // 查询
    filterNode(value, data) {
      if (!value) return true;
      return data.cnName.indexOf(value) !== -1;
    },
    async setproChange(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
          }
        })
        this.removeAllLayer();
        var obj = {
          dirid: res,
          pageIndex: 1,
          pageSize: 10,
        }
        const data = await project_selectByDirid(obj);
        if (data.code != 200) {
          this.$message.error("列表获取失败");
          return;
        }
        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),
            });
          }
        }
        this.cannelTerrainLayer();
        this.setTerrainMptLayer();
        //清空图层树选中状态
        this.$refs.tree.setCheckedKeys([]);
        if (val.length > 0) {
          if (val[0].type == 1 && val[0].isProject == 1) {//项目分类
            var std_check = [];
            for (var i in val) {
              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();
          }
        } else {
          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);
      }
    },
    // 添加WFS图层 *
    addWFSLayers (res) {
      let url =
        res.resource +
        "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
        res.url +
        "&outputFormat=application%2Fjson";
      $.ajax({
        url: url,
        cache: false,
        async: true,
        success: function (data) {
          let datasource = Cesium.GeoJsonDataSource.load(data, {
            stroke: Cesium.Color.YELLOW,
            fill: Cesium.Color.YELLOW.withAlpha(0.1),
            alpha: 0.1,
            strokeWidth: 8,
            clampToGround: true, //是否贴地
          });
          datasource.then((data) => {
            data.name = res.cnName;
            window.Viewer.dataSources.add(data);
          });
        },
        error: function (data) {
          console.log("error");
        },
    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 = [];
    },
    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 = [];
      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 '3DML':
            case 'Tileset':
              listTileset.push(res[i])
              break;
            case 'Mpt':
              listMpt.push(res[i])
              break;
            case 'TMS':
              listTMS.push(res[i])
              break;
          }
        }
      }
      // this.setChangeProLayer();
      this.setChangeWMS(listWMS, true);
      this.setChangeWFS(listWFS, true);
      this.setChangeTileset(listTileset, true);
      this.setChangeTMS(listTMS, true);
      this.setChangeMpt(listMpt, true);
    },
    getNewTree(obj, result) {
      for (const i in obj) {
        console.log(obj[i].cnName)
        result.push(obj[i])
        if (obj[i].children && obj[i].children.length > 0) {
          this.getNewTree(obj[i].children, result)
        }
      }
      return result
    },
    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, "");
      window.terrainDemLayer = new Cesium.CesiumTerrainProvider({
        // url: LFData + '/3d/terrain/dem20230321'
        url: demLayer
      });
      let vectorLayer = new VectorLayer({
        name: res.cnName,
        source: new VectorSource({
          url: url,
          format: new GeoJSON(),
        }),
      });
      window.map.addLayer(vectorLayer);
      Viewer.terrainProvider = window.terrainDemLayer
    },
    setChangeProLayer() {
      var value = this.$store.state.isProjectLayer;
      if (value.length != 0) {
        var std = [];
        for (var i in value) {
          std.push(value[i].id)
        }
        this.$refs.tree.setCheckedKeys(std);
        this.$bus.$emit("showMenuLayer", value);
      }
    },
    async getMenuProject() {
      const data = await project_selectDirAll();
      if (data.code != 200) {
        return
      }
      this.optionts = data.result;
    },
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
  },
  mounted() {
    this.getMenuProject()
    this.$bus.$on("treeDataCopy", (res) => {
      this.$store.state.treeData = this.treeData;
      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);
    }
  },
};
@@ -717,6 +1517,7 @@
.tree-container /deep/ .el-tree-node {
  position: relative;
  padding-left: 10px;
  // text-indent: 16px;
}
.tree-container /deep/ .el-tree-node__children {
@@ -840,11 +1641,9 @@
  position: absolute;
  right: auto;
}
/deep/.el-table__placeholder {
  padding-left: 8px;
}
/deep/.el-card__body {
  padding: 10px !important;
  > div {
@@ -855,15 +1654,15 @@
    }
  }
}
/deep/ .el-form .el-form-item {
  padding-right: 0px !important;
}
/deep/ .el-form-item {
  margin-bottom: 10px !important;
}
/*.lalala {*/
/*position: relative;*/
/*}*/
.text {
  font-size: 14px;
}
src/views/Tools/queryinfo.vue
@@ -1,16 +1,20 @@
<template>
  <div class="InfoPopup">
    <Popup ref="pop"
           v-for="(data, index) in PopupData"
           :key="data.id"
           :title="data.title || '提示'"
           maxHeight="400"
           @close="close(data.id)"
           left="calc(90% - 900px)"
           top="calc(100% - 470px) ">
    <Popup
      ref="pop"
      v-for="(data, index) in PopupData"
      :key="data.id"
      :title="data.title || '提示'"
      maxHeight="400"
      @close="close(data.id)"
      left="calc(90% - 900px)"
      top="calc(100% - 470px) "
    >
      <div>
        <div style="width:940px;height:400px;"
             v-drag>
        <div
          style="width:940px;height:400px;"
          v-drag
        >
          <map-menu-pop v-if="$store.state.mapPopBoxFlag == '1'" />
          <map-space-pop v-if="$store.state.mapPopBoxFlag == '2'" />
          <pipe-line-analy v-if="$store.state.mapPopBoxFlag == '3'" />
@@ -37,7 +41,7 @@
    pipeLineAnaly,
    mapPickUpPop
  },
  data () {
  data() {
    return {
      // 弹窗数据
      PopupData: ['queryinfo'],
@@ -46,7 +50,11 @@
    };
  },
  computed: {},
  mounted () { },
  mounted() {
  },
  directives: {
    drag: {
      inserted: function (el) {
@@ -57,8 +65,7 @@
          const disX = e.clientX;
          const w = dragDom.clientWidth;
          const minW = 500;
          const maxW = 1024;
          const maxW = 940;
          var nw;
          document.onmousemove = function (e) {
            // 通过事件委托,计算移动的距离
@@ -80,14 +87,14 @@
  },
  methods: {
    // 关闭所有
    closeAll () {
    closeAll() {
      this.PopupData.forEach((item) => {
        item.close && item.close();
      });
      this.PopupData = [];
    },
    // 关闭弹窗
    close (id) {
    close(id) {
      let index = this.PopupData.findIndex((item) => {
        console.log(item);
        return item.id === id;
@@ -98,6 +105,7 @@
        for (var i in this.$store.state.pipelineEntity) {
          sgworld.Viewer.entities.remove(this.$store.state.pipelineEntity[i]);
        }
      }
      if (this.$store.state.primitLayer != null) {
        sgworld.Viewer.entities.remove(this.$store.state.primitLayer);
@@ -125,7 +133,7 @@
      this.$store.state.histLenged = false;
    },
    // 打开弹窗
    open (title, value, style = {}) {
    open(title, value, style = {}) {
      this.PopupData.push({
        id: this.createRandomId(),
        title,
@@ -139,7 +147,7 @@
      return this.PopupData[index];
    },
    // 随机id
    createRandomId () {
    createRandomId() {
      return (
        (Math.random() * 10000000).toString(16).substr(0, 4) +
        '-' +
@@ -148,10 +156,12 @@
        Math.random().toString().substr(2, 5)
      );
    },
    mouseDown (event) {
    mouseDown(event) {
      // document.addEventListener("mousemove", this.mouseMove);
      // this.lastX = event.screenX;
    },
  },
};
</script>
</script>
src/views/datamanage/catalogueManage.vue
@@ -184,7 +184,6 @@
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
@@ -230,7 +229,6 @@
              disabled
              type="textarea"
              style=" max-width: 420px"
              autosize
            />
          </el-form-item>
@@ -335,7 +333,7 @@
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')"
          />
        </el-form-item>
        <el-form-item
@@ -352,7 +350,7 @@
            v-model="ruleForm.checks"
            multiple
            style="width:100%;"
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')"
          >
            <el-option
              v-for="item in options"
@@ -702,6 +700,7 @@
      queryDirTree().then((res) => {
        // console.log(res);
        if (res.code == 200) {
          this.oriData = res.result;
          this.newData = res.result;
          this.dirList = this.treeData(res.result);
@@ -754,19 +753,22 @@
          if (currentId != 0) {
            const tempChildrenNodex1 = pchildNodes[currentId - 1];
            const tempChildrenNodex2 = pchildNodes[currentId];
            tempChildrenNodex2.orderNum =
              pchildNodes[currentId - 1].data.orderNum;
            tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
            // tempChildrenNodex2.orderNum =
            //   pchildNodes[currentId - 1].data.orderNum;
            // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
            var arr = [];
            this.oriData.filter((res) => {
              if (res.id == tempChildrenNodex2.data.id) {
                res.orderNum = tempChildrenNodex2.orderNum;
                // res.orderNum = tempChildrenNodex2.orderNum;
                arr.push(res);
              } else if (res.id == tempChildrenNodex1.data.id) {
                res.orderNum = tempChildrenNodex1.orderNum;
                // res.orderNum = tempChildrenNodex1.orderNum;
                arr.push(res);
              }
            });
            const orderNum = arr[1].orderNum
            arr[1].orderNum = arr[0].orderNum
            arr[0].orderNum = orderNum
            this.newData = arr;
            this.sendChange();
          } else {
@@ -780,19 +782,22 @@
          if (currentId < pchildNodes.length - 1) {
            const tempChildrenNodex1 = pchildNodes[currentId + 1];
            const tempChildrenNodex2 = pchildNodes[currentId];
            tempChildrenNodex2.orderNum =
              pchildNodes[currentId + 1].data.orderNum;
            tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
            // tempChildrenNodex2.orderNum =
            //   pchildNodes[currentId + 1].data.orderNum;
            // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
            var arr = [];
            this.oriData.filter((res) => {
              if (res.id == tempChildrenNodex2.data.id) {
                res.orderNum = tempChildrenNodex2.orderNum;
                // res.orderNum = tempChildrenNodex2.orderNum;
                arr.push(res);
              } else if (res.id == tempChildrenNodex1.data.id) {
                res.orderNum = tempChildrenNodex1.orderNum;
                // res.orderNum = tempChildrenNodex1.orderNum;
                arr.push(res);
              }
            });
            const orderNum = arr[1].orderNum
            arr[1].orderNum = arr[0].orderNum
            arr[0].orderNum = orderNum
            this.newData = arr;
            this.sendChange();
          } else {
@@ -870,7 +875,13 @@
          if (valid) {
            this.fullscreenLoading = true;
            var val = this.ruleForm;
            val.checks = this.ruleForm.checks.toString()
            if (this.ruleForm.checks) {
              val.checks = this.ruleForm.checks.toString()
            } else {
              val.checks = ''
            }
            insertDir(val)
              .then((res) => {
                setTimeout(() => {
@@ -1041,11 +1052,11 @@
            this.getDirTree();
            return;
          } else {
            this.$message.error("修改失败,请重试!");
            this.$message.error("移动失败,请重试!");
          }
        })
        .catch(() => {
          this.$message.error("修改失败,请重试!");
          this.$message.error("移动失败,请重试!");
        });
    },
src/views/datamanage/dictionaryManage.vue
@@ -152,7 +152,7 @@
              min-width="100"
              prop="tab"
              :label="
                $t('dataManage.dictionaryManageObj.rangeAssociationTable')
                $t('dataManage.dictionaryManageObj.tableName')
              "
            />
            <el-table-column
src/views/datamanage/metadataManage.vue
@@ -1,14 +1,19 @@
<template>
  <div class="authorityManagement_box">
    <My-bread
      :list="[
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.metadataManage')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="inquire subpage_Div" ref="container">
      <el-form ref="queryForm" :model="queryForm" :inline="true">
    <div
      class="inquire subpage_Div"
      ref="container"
    >
      <el-form
        ref="queryForm"
        :model="queryForm"
        :inline="true"
      >
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item size="small">
@@ -95,19 +100,21 @@
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item prop="name" size="small">
            <el-form-item
              prop="name"
              size="small"
            >
              <!--            suffix-icon="el-icon-edit"  :placeholder="$t('common.pleaseInput')"-->
              <el-input
                v-model="queryForm.name"
                :placeholder="$t('shuJuGuanLi.lable2')"
                style="width: 200px"
                ><i
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="queryInfo()"
                  style="padding-right: 8px"
                ></i
              ></el-input>
                ></i></el-input>
            </el-form-item>
          </div>
          <div>
@@ -127,7 +134,7 @@
                size="small"
                @click="deleteMetaInfo"
                icon="el-icon-delete"
                >{{ $t("common.delete") }}
              >{{ $t("common.delete") }}
              </el-button>
            </el-form-item>
            <el-form-item v-if="btnStatus.download">
@@ -136,7 +143,7 @@
                icon="el-icon-download"
                type="success"
                size="small"
                >{{ $t("common.download") }}
              >{{ $t("common.download") }}
              </el-button>
            </el-form-item>
@@ -146,7 +153,7 @@
                icon="el-icon-refresh"
                type="info"
                size="small"
                >{{ $t("common.reset") }}
              >{{ $t("common.reset") }}
              </el-button>
            </el-form-item>
          </div>
@@ -197,7 +204,10 @@
      </el-form>
    </div>
    <div class="dividing-line"></div>
    <div class="table_box subpage_Div" :style="styleVar">
    <div
      class="table_box subpage_Div"
      :style="styleVar"
    >
      <el-table
        :data="tableData"
        style="width: 100%"
@@ -205,7 +215,10 @@
        @selection-change="handleSelectionChange"
        height="calc(100% - 57px)"
      >
        <el-table-column type="selection" width="55" />
        <el-table-column
          type="selection"
          width="55"
        />
        <el-table-column
          :label="$t('dataManage.dictionaryManageObj.number')"
          type="index"
@@ -220,8 +233,7 @@
                title="源数据查询"
                @click="setQueryMetaData(scope.row)"
                target="_blank"
                >{{ scope.row.name }}</el-link
              >
              >{{ scope.row.name }}</el-link>
            </span>
            <span v-else-if="scope.row.metaid > 0">
              <el-link
@@ -229,14 +241,15 @@
                title="元数据查询"
                @click="setMetaDataQuery(scope.row)"
                target="_blank"
                >{{ scope.row.name }}</el-link
              ></span
            >
              >{{ scope.row.name }}</el-link></span>
            <span v-else>{{ scope.row.name }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" />
        <el-table-column
          prop="type"
          :label="$t('dataManage.vmobj.format')"
        />
        <el-table-column
          prop="sizes"
          :label="$t('dataManage.vmobj.size')"
@@ -259,7 +272,10 @@
          <template slot-scope="scope">
            <!-- <span ></span> -->
            <el-link></el-link>
            <el-link :underline="false" @click="detail(scope.row)">{{
            <el-link
              :underline="false"
              @click="detail(scope.row)"
            >{{
              scope.row.tab
            }}</el-link>
          </template>
@@ -270,7 +286,10 @@
              :label="$t('dataManage.vmobj.tab')"
              :formatter="formatData"
            /> -->
        <el-table-column prop="rows" :label="$t('dataManage.vmobj.row')" />
        <el-table-column
          prop="rows"
          :label="$t('dataManage.vmobj.row')"
        />
        <el-table-column
          prop="uname"
          :label="$t('dataManage.vmobj.createonuser')"
@@ -280,14 +299,17 @@
          :label="$t('dataManage.vmobj.createontime')"
          :formatter="formatData"
        />
        <el-table-column min-width="210" :label="$t('common.operate')">
        <el-table-column
          min-width="210"
          :label="$t('common.operate')"
        >
          <template slot-scope="scope">
            <el-button
              @click="showDetail(scope.row)"
              type="primary"
              plain
              size="small"
              >{{ $t("common.details") }}
            >{{ $t("common.details") }}
            </el-button>
            <el-button
              type="warning"
@@ -296,7 +318,7 @@
              v-if="btnStatus.update"
              @click="editInfo(scope.row)"
              style="margin-left: 10px"
              >{{ $t("common.edit") }}
            >{{ $t("common.edit") }}
            </el-button>
            <el-button
              plain
@@ -304,12 +326,15 @@
              v-if="showPreview(scope.row)"
              @click="handlePreview(scope.row)"
              style="margin-left: 10px"
              >{{ $t("common.preview") }}
            >{{ $t("common.preview") }}
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagination_box" style="margin-top: 15px">
      <div
        class="pagination_box"
        style="margin-top: 15px"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -322,16 +347,28 @@
        </el-pagination>
      </div>
    </div>
    <div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox_box"
      v-show="showinfoBox"
    >
      <div class="infoBox box_div">
        <div slot="header" class="clearfix">
        <div
          slot="header"
          class="clearfix"
        >
          <span>{{ $t("common.details") }}</span>
          <div style="float: right; cursor: pointer" @click="closeDetial">
          <div
            style="float: right; cursor: pointer"
            @click="closeDetial"
          >
            <i class="el-icon-close"></i>
          </div>
        </div>
        <el-divider></el-divider>
        <div class="contentBox" style="padding: 1%">
        <div
          class="contentBox"
          style="padding: 1%"
        >
          <p>{{ $t("dataManage.vmobj.name") }}:{{ itemdetail.name }}</p>
          <el-divider></el-divider>
          <p>{{ $t("dataManage.vmobj.format") }}:{{ itemdetail.type }}</p>
@@ -348,7 +385,7 @@
          <el-divider></el-divider>
          <p>{{ $t("dataManage.vmobj.tab") }}:{{ itemdetail.tab }}</p>
          <el-divider></el-divider>
          <p>{{ $t("dataManage.vmobj.row") }}:{{ itemdetail.row }}</p>
          <p>{{ $t("dataManage.vmobj.row") }}:{{ itemdetail.rows }}</p>
          <el-divider></el-divider>
          <p>
            {{ $t("dataManage.vmobj.createonuser") }}:{{ itemdetail.uname }}
@@ -360,7 +397,7 @@
            }}
          </p>
          <el-divider></el-divider>
          <p>
          <!-- <p>
            {{ $t("dataManage.vmobj.depName") }}:{{ itemdetail.updateUser }}
          </p>
          <el-divider></el-divider>
@@ -368,7 +405,7 @@
            {{ $t("dataManage.vmobj.depName") }}:{{
              setInfoBoxTime(itemdetail.updateTime)
            }}
          </p>
          </p> -->
        </div>
      </div>
    </div>
@@ -384,24 +421,36 @@
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <el-form :model="editForm" ref="editForm">
      <el-form
        :model="editForm"
        ref="editForm"
      >
        <el-form-item
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.name" autocomplete="off"></el-input>
          <el-input
            v-model="editForm.name"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.format')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.type" autocomplete="off"></el-input>
          <el-input
            v-model="editForm.type"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.size')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.sizes" autocomplete="off"></el-input>
          <el-input
            v-model="editForm.sizes"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.depName')"
@@ -467,7 +516,10 @@
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.describe" autocomplete="off"></el-input>
          <el-input
            v-model="editForm.describe"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <!-- <el-form-item
          :label="$t('dataManage.vmobj.gather')"
@@ -476,28 +528,40 @@
          <el-input v-model="editForm.gather" autocomplete="off"></el-input>
        </el-form-item> -->
      </el-form>
      <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer">
        <el-button size="small" @click="cancelEdit()"
          >{{ $t("common.reset") }}
      <div
        v-if="behavior == '修改信息'"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="cancelEdit()"
        >{{ $t("common.reset") }}
        </el-button>
        <el-button
          size="small"
          type="primary"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.submit") }}
        >{{ $t("common.submit") }}
        </el-button>
      </div>
      <div v-else slot="footer" class="dialog-footer">
        <el-button size="small" @click="cancelAdd('editForm')"
          >{{ $t("common.reset") }}
      <div
        v-else
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="cancelAdd('editForm')"
        >{{ $t("common.reset") }}
        </el-button>
        <el-button
          size="small"
          type="primary"
          @click="sendAdd('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.submit") }}
        >{{ $t("common.submit") }}
        </el-button>
      </div>
    </el-dialog>
@@ -529,7 +593,10 @@
            align="center"
          ></el-table-column>
        </el-table>
        <div style="margin-top: 10px" class="pagination_box">
        <div
          style="margin-top: 10px"
          class="pagination_box"
        >
          <el-pagination
            @size-change="handleLoaderSizeChange"
            @current-change="handleLoaderCurrentChange"
@@ -543,7 +610,10 @@
        </div>
      </div>
    </el-dialog>
    <div class="downloadBox box_div subpage_Div" v-if="showCodeBox">
    <div
      class="downloadBox box_div subpage_Div"
      v-if="showCodeBox"
    >
      <h4 style="padding: 20px">{{ $t("common.passworld") }}</h4>
      <el-form
        :model="codeForm"
@@ -552,14 +622,20 @@
        label-width="100px"
        class="codeForm"
      >
        <el-form-item :label="$t('common.passworld')" prop="password">
        <el-form-item
          :label="$t('common.passworld')"
          prop="password"
        >
          <el-input
            type="password"
            v-model="codeForm.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item :label="$t('common.SPassword')" prop="repassword">
        <el-form-item
          :label="$t('common.SPassword')"
          prop="repassword"
        >
          <el-input
            type="password"
            v-model="codeForm.repassword"
@@ -567,11 +643,17 @@
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button class="primary" size="small" @click="download('codeForm')"
            >{{ $t("common.confirm") }}
          <el-button
            class="primary"
            size="small"
            @click="download('codeForm')"
          >{{ $t("common.confirm") }}
          </el-button>
          <el-button type="info" size="small" @click="closeDown('codeForm')"
            >{{ $t("common.cancel") }}
          <el-button
            type="info"
            size="small"
            @click="closeDown('codeForm')"
          >{{ $t("common.cancel") }}
          </el-button>
        </el-form-item>
      </el-form>
@@ -582,17 +664,30 @@
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-form :inline="true" :model="fromQueryMeta" class="demo-form-inline">
        <el-form
          :inline="true"
          :model="fromQueryMeta"
          class="demo-form-inline"
        >
          <el-form-item>
            <el-input size="small" v-model="fromQueryMeta.name"></el-input>
            <el-input
              size="small"
              v-model="fromQueryMeta.name"
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" size="small" @click="setSearchMetaData()"
              >查询
            <el-button
              type="primary"
              size="small"
              @click="setSearchMetaData()"
            >查询
            </el-button>
            <el-button type="info" size="small" @click="setRestMetaData()"
              >重置
            <el-button
              type="info"
              size="small"
              @click="setRestMetaData()"
            >重置
            </el-button>
          </el-form-item>
        </el-form>
@@ -648,7 +743,10 @@
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a class="scopeRowColor" @click="detail(scope.row)">{{
              <a
                class="scopeRowColor"
                @click="detail(scope.row)"
              >{{
                scope.row.tab
              }}</a>
            </template>
@@ -664,7 +762,10 @@
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
        <div class="pagination_box" style="margin-top: 15px">
        <div
          class="pagination_box"
          style="margin-top: 15px"
        >
          <el-pagination
            @size-change="handleMetaSizeChange"
            @current-change="handMetaCurrentChange"
@@ -736,7 +837,10 @@
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a class="scopeRowColor" @click="detail(scope.row)">{{
              <a
                class="scopeRowColor"
                @click="detail(scope.row)"
              >{{
                scope.row.tab
              }}</a>
            </template>
@@ -762,7 +866,10 @@
      width="70%"
      :close-on-click-modal="false"
    >
      <div v-if="dialog.isPdf" class="pdfClass">
      <div
        v-if="dialog.isPdf"
        class="pdfClass"
      >
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
@@ -771,7 +878,10 @@
        >
        </iframe>
      </div>
      <div v-if="dialog.isJpg" class="pdfClass">
      <div
        v-if="dialog.isJpg"
        class="pdfClass"
      >
        <el-image
          style="width: 100%; height: 100%"
          :src="dialog.src"
@@ -789,7 +899,11 @@
      :close-on-click-modal="false"
      :show-close="false"
    >
      <el-form ref="form" :model="fileFrom" label-width="100px">
      <el-form
        ref="form"
        :model="fileFrom"
        label-width="100px"
      >
        <el-form-item label="审核单位">
          <div>
            <ul>
@@ -815,14 +929,12 @@
            class="primary"
            size="small"
            @click="getFileInsertApply()"
            >{{ $t("common.confirm") }}</el-button
          >
          >{{ $t("common.confirm") }}</el-button>
          <el-button
            type="info"
            size="small"
            @click="handleInsertFileClose()"
            >{{ $t("common.cancel") }}</el-button
          >
          >{{ $t("common.cancel") }}</el-button>
        </el-form-item>
      </el-form>
    </el-dialog>
@@ -907,8 +1019,8 @@
        dirid: "",
        depid: "",
        verid: "",
        depName:"",
        depName: "",
      },
      behavior: "",
      initialForm: "",
@@ -1016,11 +1128,11 @@
  },
  watch: {
    "queryForm.depName"() {
      this.$refs.treeSelect.visible = false;
    },
    "queryForm.dirid"() {
      this.$refs.treeSelect1.visible = false;
    },
  },
@@ -1480,7 +1592,9 @@
    showDetail(row) {
      // console.log(index, row);
      this.showinfoBox = true;
      debugger
      this.itemdetail = row;
    },
    // 关闭查看
    closeDetial() {
@@ -1506,7 +1620,7 @@
          this.editForm = {};
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    // 提交修改
@@ -1771,5 +1885,8 @@
      position: relative;
    }
  }
  .el-divider--horizontal {
    margin: 15px 0;
  }
}
</style>
src/views/datamanage/styleManage.vue
@@ -638,7 +638,7 @@
              v-model="insertform.type"
              autocomplete="off"
              style="width:85%"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.type')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.type')"
            ></el-input>
          </el-form-item>
          <el-form-item
@@ -650,7 +650,6 @@
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.dirid')"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                :value="insertform.dirid"
@@ -692,10 +691,9 @@
          >
            <el-select
              v-model="insertform.depid"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.depid')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.depid')"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                :value="insertform.depid"
@@ -739,7 +737,7 @@
              v-model="insertform.ver"
              autocomplete="off"
              style="width:85%"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.ver')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.ver')"
            ></el-input>
          </el-form-item>
          <el-form-item
@@ -750,7 +748,6 @@
              v-model="insertform.status"
              style="width:85%"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.status')"
            >
              <el-option
                value="0"
@@ -795,7 +792,6 @@
                  disabled
                  autocomplete="off"
                  style="width:100%"
                />
              </div>
              <div>
@@ -1557,8 +1553,13 @@
        this.upform.vname = this.upform.viewGuid;
        this.upform.viewGuid = this.viewFile;
      }
      this.upform.status = this.status
      if (this.status == '启用') {
        this.status = '1'
      } else if (this.status == '停用') {
        this.status = '0'
      }
      this.upform.status = this.status
      const data = await updateStyle(this.upform);
      if (data.code == 200) {
        this.dialogFormVisible = false;
src/views/datamanage/uploadmanage.vue
@@ -576,6 +576,7 @@
  publish_update,
  publish_insert,
} from '../../api/api.js'
import { conditions } from '../Archive/Archive';
export default {
  components: {
@@ -785,6 +786,7 @@
        var url = this.editLayer.url;
        this.editLayer.url = url.replace(iisHost, "{host}");
      }
      const data = await publish_update(this.editLayer);
      if (data.code != 200) {
        this.$message.error("数据修改失败")
@@ -1053,18 +1055,20 @@
        if (data.result) {
          var that = this
          var val = data.result.filter((res) => {
            if (res.createTime) {
              res.createTime = that.format(res.createTime);
          var val = data.result.filter((rs) => {
            if (rs.createTime) {
              rs.createTime = that.format(rs.createTime);
            }
            if (res.updateTime) {
              res.updateTime = that.format(res.updateTime);
            if (rs.updateTime) {
              rs.updateTime = that.format(rs.updateTime);
            }
            if (res.url) {
              res.url = res.url.replace("{host}", iisHost);
            if (rs.url) {
              rs.url = rs.url.replace("{host}", iisHost);
            }
            return res
            return rs
          })
          this.tableData = val;
          this.listData.count = data.count;
        }
src/views/userManage/templateManage.vue
@@ -200,7 +200,7 @@
            <el-input
              style="width:85%"
              v-model=" editForm.name"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.name')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.name')"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('common.templateType')">
@@ -214,7 +214,6 @@
              @change="selFileCodeChange"
              v-model="editForm.code"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.common.templateType')"
            >
              <el-option
                v-for="item in options"
@@ -274,7 +273,6 @@
                  :accept="selectFileType"
                  style="display: none"
                  @change="geteditFile(1)"
                />
                <el-button
                  style="margin-left: 6px;"
@@ -296,7 +294,7 @@
            <el-input
              style="width:85%"
              v-model="editForm.bak"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('common.bak')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('common.bak')"
            ></el-input>
          </el-form-item>
        </el-form>
@@ -538,19 +536,19 @@
        .catch((_) => { });
    },
    codeData(row, column) {
      let data = row[column.property];
      if (data == null) {
        return data;
      var code = row.code;
      let val = this.options.filter(res => {
        if (res.value == code) {
          return res
        }
      })
      if (val.length > 0) {
        return val[0].label
      } else {
        return code
      }
      var val;
      if (row.code.indexOf("countSizes") != -1) {
        val = "数据量统计";
      } else if (row.code.indexOf("countServices") != -1) {
        val = "服务调用量统计";
      } else if (row.code.indexOf("countOperates") != -1) {
        val = "用户流量统计";
      }
      return val;
    },
    //查看
    showDetail(index, row) {