From 1befcc5e506a191e8b157338ca9a93a15dcf7eb7 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 22 三月 2023 18:04:37 +0800
Subject: [PATCH] 服务发布模型挂接附件,一张图修改

---
 src/components/Screen/bottom.vue      |    7 
 src/views/datamanage/uploadmanage.vue |   46 ++
 src/assets/lang/zh.js                 |    3 
 src/views/Tools/LayerTree.vue         |   24 -
 src/components/preview_map.vue        |  600 +++++++++++++++++++++++++++++++++++++++++++++
 src/assets/lang/en.js                 |    3 
 src/components/Screen/ProjectTree.vue |   26 +
 src/components/Screen/mapsdk.vue      |   48 ++-
 src/views/datamanage/SpatialData.vue  |    2 
 9 files changed, 692 insertions(+), 67 deletions(-)

diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js
index a120f96..308c192 100644
--- a/src/assets/lang/en.js
+++ b/src/assets/lang/en.js
@@ -127,7 +127,8 @@
     uploadManage: 'Release management',
     uploadObj: {
       dataRelease: 'Data release',
-      releaseList: 'Release list'
+      releaseList: 'Release list',
+      modelAttachMount: 'Model attachment mounting'
     },
     dataLoading: 'dataLoading',
     SpatialData: 'SpatialData',
diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js
index 2b90dff..9c60be6 100644
--- a/src/assets/lang/zh.js
+++ b/src/assets/lang/zh.js
@@ -129,7 +129,8 @@
     uploadManage: '鍙戝竷绠$悊',
     uploadObj: {
       dataRelease: '鏁版嵁鍙戝竷',
-      releaseList: '鍙戝竷娓呭崟'
+      releaseList: '鍙戝竷娓呭崟',
+      modelAttachMount: '妯″瀷闄勪欢鎸傝浇'
     },
 
     dataLoading: '鏁版嵁鍏ュ簱',
diff --git a/src/components/Screen/ProjectTree.vue b/src/components/Screen/ProjectTree.vue
index 7fec0d7..5ce4970 100644
--- a/src/components/Screen/ProjectTree.vue
+++ b/src/components/Screen/ProjectTree.vue
@@ -1,5 +1,8 @@
 <template>
-  <div class="project_tree" :class="{ left_main_show: !leftMenuOpen }">
+  <div
+    class="project_tree"
+    :class="{ left_main_show: !leftMenuOpen }"
+  >
     <div class="project_tree__title">宸ョ▼椤圭洰</div>
     <el-input
       style="width: 80%"
@@ -32,7 +35,11 @@
               style="color: yellow"
               class="el-icon-folder-opened"
             ></i>
-            <i v-else style="color: skyblue" class="el-icon-folder-opened"></i>
+            <i
+              v-else
+              style="color: skyblue"
+              class="el-icon-folder-opened"
+            ></i>
           </div>
           <!-- <div style="">
             <i
@@ -102,6 +109,9 @@
     this.changeSelectli = this.rightList[0].id
     this.changeSelectStyle = this.rightMenu[0].id
     this.addImageLayer()
+    this.$bus.$on("changeProjectLayer", (res) => {
+      this.setShowCheckedLayer();
+    })
   },
   watch: {
     filterText(val) {
@@ -109,6 +119,18 @@
     },
   },
   methods: {
+    setShowCheckedLayer() {
+      var value = this.$refs.tree.getCheckedNodes();
+      var std = [];
+      for (var i in value) {
+        std.push(value[i].id)
+      }
+      if (std.indexOf(3) == -1) {
+        std.push(3);
+        this.$refs.tree.setCheckedKeys(std)
+      }
+
+    },
     async addImageLayer() {
       const data = await perms_selectLayers()
       if (data.code != 200) {
diff --git a/src/components/Screen/bottom.vue b/src/components/Screen/bottom.vue
index 49c00c2..3f9805e 100644
--- a/src/components/Screen/bottom.vue
+++ b/src/components/Screen/bottom.vue
@@ -227,8 +227,8 @@
     ChangeBaseLayer(name) {
       this.currYX = name
       Viewer.imageryLayers._layers[1].show = false
-      Viewer.imageryLayers._layers[2].show = false
-      Viewer.imageryLayers._layers[3].show = false
+      // Viewer.imageryLayers._layers[2].show = false
+      // Viewer.imageryLayers._layers[3].show = false
       if (yunxuanLayer) {
         Viewer.imageryLayers.remove(yunxuanLayer);
         yunxuanLayer = null
@@ -292,12 +292,13 @@
           this.showPathLine(child)
           break
         case "椤圭洰灞曠ず":
+          this.$bus.$emit("changeProjectLayer", child.id)
           this.DisplayCurrentProject(child)
           this.changeProject(child)
           this.$bus.$emit("changeProjectCode", child.id)
-
           break
         case "涓撻灞曠ず":
+          this.$bus.$emit("changeProjectLayer", child.id)
           this.changeProject(child)
           break
 
diff --git a/src/components/Screen/mapsdk.vue b/src/components/Screen/mapsdk.vue
index 3800764..900a42e 100644
--- a/src/components/Screen/mapsdk.vue
+++ b/src/components/Screen/mapsdk.vue
@@ -44,42 +44,46 @@
       // window.sgworld = new SmartEarth.SGWorld("Centermapdiv", {
       //   licenseServer: window.sceneConfig.licenseServer,
       // })
-      window.sgworld = new SmartEarth.SGWorld(
-        "Centermapdiv",
-        SmartEarthRootUrl + "Workers/image/earth.jpg",
-        function () {}
-      )
+      // window.sgworld = new SmartEarth.SGWorld(
+      //   "Centermapdiv",
+      //   function () { }
+      // )
+      window.sgworld = new SmartEarth.SGWorld("Centermapdiv", {
+
+        licenseServer: window.sceneConfig.licenseServer,
+      });
       window.viewer = window.Viewer = window.sgworld._Viewer;
-      Viewer.imageryLayers._layers[0].show = false
-       sgworld.Navigate.jumpTo({      //璺宠浆瑙嗚
-            destination: new Cesium.Cartesian3.fromDegrees(110, 32, 50000000)
+      // Viewer.imageryLayers._layers[0].show = false
+      sgworld.Navigate.jumpTo({      //璺宠浆瑙嗚
+        destination: new Cesium.Cartesian3.fromDegrees(110, 32, 50000000)
       });
       setTimeout(() => {
         window.viewer.camera.flyTo({
-          destination:new Cesium.Cartesian3.fromDegrees(110, 32, 20000000),
-          orientation:{
-            heading:Cesium.Math.toRadians(0), 
+          destination: new Cesium.Cartesian3.fromDegrees(110, 32, 20000000),
+          orientation: {
+            heading: Cesium.Math.toRadians(0),
             pitch: Cesium.Math.toRadians(-90),
           }
         })
       }, 1000);
-      
+
       Viewer.imageryLayers.addImageryProvider(
         new Cesium.UrlTemplateImageryProvider({
           url: gaoDeBaseUrl[0].url,
         })
       )
+      Viewer.imageryLayers._layers[1].show = false
 
-      Viewer.imageryLayers.addImageryProvider(
-        new Cesium.UrlTemplateImageryProvider({
-          url: gaoDeBaseUrl[1].url,
-        })
-      )
-      Viewer.imageryLayers.addImageryProvider(
-        new Cesium.UrlTemplateImageryProvider({
-          url: gaoDeBaseUrl[2].url,
-        })
-      )
+      // Viewer.imageryLayers.addImageryProvider(
+      //   new Cesium.UrlTemplateImageryProvider({
+      //     url: gaoDeBaseUrl[1].url,
+      //   })
+      // )
+      // Viewer.imageryLayers.addImageryProvider(
+      //   new Cesium.UrlTemplateImageryProvider({
+      //     url: gaoDeBaseUrl[2].url,
+      //   })
+      // )
 
       Viewer._enableInfoOrSelection = false
       //鏄剧ずfps
diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue
index 9a79c55..40c1fc6 100644
--- a/src/components/preview_map.vue
+++ b/src/components/preview_map.vue
@@ -3,10 +3,202 @@
   <div
     id="mapdiv"
     class="previewBox"
-  ></div>
+  >
+    <div
+      v-if="modelLayer"
+      class="modelLayer box_divm"
+    >
+      <el-tree
+        :data="treeData"
+        show-checkbox
+        node-key="id"
+        ref="tree"
+        :default-expanded-keys="[2, 3]"
+        :default-checked-keys="[5]"
+        :props="defaultProps"
+        @node-click="handleNodeClick"
+        @check="handleCheckChange"
+      >
+      </el-tree>
+    </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%"
+    >
+      <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-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-option>
+                </el-select>
+
+              </el-form-item>
+
+              <el-form-item :label="$t('common.bak')">
+                <el-input v-model="formInline.bak"></el-input>
+
+              </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-form-item>
+            </el-form>
+
+          </el-tab-pane>
+          <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-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-col>
+                  <el-col :span="3">
+                    <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-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>
+
+                </template>
+              </el-table-column>
+            </el-table>
+
+          </el-tab-pane>
+
+        </el-tabs>
+
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
+import {
+  perms_selectLayers,
+  comprehensive_selectModelByGuid,
+  comprehensive_insertModel,
+  comprehensive_updateModel,
+  comprehensive_selectFiles,
+  dataQuery_deletes
+} from '../api/api.js';
+import { getToken } from '@/utils/auth';
 export default {
   data() {
     return {
@@ -15,12 +207,347 @@
         250000, 200000, 100000, 50000, 17000, 9000, 5000, 2000, 1000, 500, 200,
         100, 50, 25, 10, 0,
       ],
+      modelLayer: false,
+      treeData: [],
+      defaultProps: {
+        children: "children",
+        label: "cnName",
+      },
+      childOption: [],
+      dialogVisible: false,
+      isShowModel: false,
+      tableData: [],
+      formInline: {
+        title: '',
+        file: '',
+        name: '',
+        type: '',
+        info: '',
+        icon: '',
+        bak: '',
+        Id: ''
+      },
+      options: [
+        {
+          value: '鍊炬枩妯″瀷',
+          label: '鍊炬枩妯″瀷'
+        }, {
+          value: 'BIM妯″瀷',
+          label: 'BIM妯″瀷'
+        }, {
+          value: '鐐逛簯妯″瀷',
+          label: '鐐逛簯妯″瀷'
+        }, {
+          value: '鍦拌川璁捐妯″瀷',
+          label: '鍦拌川璁捐妯″瀷'
+        }, {
+          value: '浜哄伐妯″瀷',
+          label: '浜哄伐妯″瀷'
+        }, {
+          value: '鍏朵粬妯″瀷',
+          label: '鍏朵粬妯″瀷'
+        }],
+      activeName: 'first',
+      currentData: null,
+      attacgSelection: [],
+      fromfile: { file: '' },
+      layerID: null,
+      dialog: {
+        dialogVisible: false,
+        isPdf: false,
+        isJpg: false,
+        src: ''
+      },
     }
   },
   mounted() {
     this.init3DMap();
   },
   methods: {
+    refreshAttatchDetail() {
+      this.dialog.src = "";
+      this.dialog.dialogVisible = false;
+      this.dialog.isPdf = false;
+      this.dialog.isJpg = false;
+    },
+    //闄勪欢鏌ョ湅
+    setAttatchDetail(index, row) {
+      this.refreshAttatchDetail()
+      var name = row.name;
+      if (name.indexOf('.pdf') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isPdf = true;
+        var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isJpg = true;
+        var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      }
+    },
+    async setAttachDel() {
+      var std = [];
+      for (var i in this.attacgSelection) {
+        std.push(this.attacgSelection[i].id);
+      }
+      const res = await dataQuery_deletes({ ids: std.toString() });
+      if (res.code != 200) {
+        this.$message.error("鏂囦欢鍒犻櫎澶辫触");
+      }
+      this.getAttacthFlieList();
+    },
+    setAttachInsert() {
+      var token = getToken();
+      var fs = document.getElementById("insertFile");
+      if (fs.files.length == 0) {
+        this.$message({
+          message: "璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢锛�",
+          type: "warning",
+        });
+        return;
+      }
+      const formData = new FormData();
+      for (var i = 0, c = fs.files.length; i < c; i++) {
+        formData.append("file", fs.files[i]); // fs.files[i].name,file
+      }
+
+
+      $.ajax(BASE_URL + "/comprehensive/uploadFiles?token=" + token + "&tabName=lf.sys_style&eventid=" + this.layerID,
+        {
+          type: "post",
+          data: formData,
+          async: true,
+          cache: false,
+          processData: false,
+          contentType: false,
+          success: (rs) => {
+            this.$message({
+              message: "闄勪欢娣诲姞鎴愬姛",
+              type: "success",
+            });
+            document.getElementById("insertFile").value = "";
+            this.fromfile = {
+              file: "",
+            };
+
+            this.getAttacthFlieList();
+          },
+          error: (e) => {
+            document.getElementById("insertFile").value = "";
+            this.$message.error("闄勪欢娣诲姞澶辫触");
+          },
+        }
+      );
+    },
+    //闄勪欢=>鏂囦欢閫夋嫨
+    getInsertFile() {
+      $('#insertFile').click();
+    },
+    insertFile() {
+      var val = document.getElementById('insertFile').files;
+      if (!val || !val.length) return;
+      this.fromfile.file = val[0].name;
+    },
+    matchState(state = "", reg) {
+      var row = state.row;
+      var name = row.name;
+      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+        return true;
+      }
+
+      return false;
+    },
+    statSizeChange(row, column) {
+      return this.stateFormatSizes(row.sizes)
+    },
+    stateFormatSizes(res) {
+      if (res >= 1024) {
+        const val = parseFloat(res / 1024).toFixed(3);
+        return val + ' GB';
+      } else {
+        return res + ' MB';
+      }
+    },
+    // 闄勪欢=>琛ㄦ牸閫夋嫨
+    handleAttatchChange(val) {
+      this.attacgSelection = val;
+    },
+    //闄勪欢鍒楄〃鏌ヨ
+    async getAttacthFlieList() {
+      debugger
+      var obj = {
+        eventid: this.layerID,
+        tabName: "lf.sys_style"
+      };
+      const res = await comprehensive_selectFiles(obj);
+      if (res.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+        return
+      }
+      this.tableData = res.result;
+    },
+    handleClick() {
+      if (this.activeName == "second") {
+        this.getAttacthFlieList();
+      }
+    },
+    async EditData() {
+      const data = await comprehensive_updateModel(this.formInline)
+      if (data.code != 200) {
+        this.$message.error('淇敼澶辫触');
+      } else {
+        this.$message({
+          message: '淇敼鎴愬姛',
+          type: 'success'
+        });
+      }
+      this.startModelData();
+    },
+    async InsertData() {
+      var std = {
+        "bak": this.formInline.bak,
+        "guid": this.formInline.Id,
+        "layerid": this.formInline.layerId,
+        "modelid": this.formInline.Id,
+        "name": this.formInline.name,
+        "type": this.formInline.type
+      }
+      const data = await comprehensive_insertModel(std)
+      if (data.code != 200) {
+        this.$message.error('娣诲姞澶辫触');
+      } else {
+        this.$message({
+          message: '娣诲姞鎴愬姛',
+          type: 'success'
+        });
+      }
+      this.startModelData();
+
+    },
+    handleClose() {
+      this.dialogVisible = false;
+      this.formInline = {
+        title: '',
+        file: '',
+        name: '',
+        type: '',
+        info: '',
+        icon: '',
+        bak: '',
+        Id: ''
+      }
+    },
+
+    setShowModelInfo(result) {
+
+      this.formInline.title = result.getProperty("name")
+      this.formInline.Id = result.getProperty("id");
+      this.layerID = result.getProperty("id");
+      this.formInline.layerId = result.primitive.layerId;
+      this.formInline.layerName = result.primitive.id;
+      this.startModelData();
+
+      this.dialogVisible = true;
+    },
+    async startModelData() {
+      var obj = {
+        layerid: this.formInline.layerId,
+        modelid: this.formInline.Id
+      }
+      const data = await comprehensive_selectModelByGuid(obj);
+      if (data.code != 200) {
+        return;
+      }
+
+      if (data.result == null) {
+        this.isShowModel = true;
+        this.formInline.name = this.formInline.title;
+      } else {
+        this.isShowModel = false;
+        this.formInline = data.result;
+
+        this.formInline.title = this.formInline.name;
+
+      }
+    },
+    setChangeTileset(result) {
+      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])
+            }
+          }
+        }
+      }
+    },
+    setAddLayers(res) {
+      if (res.serveType == "Tileset") {
+        var url;
+        if (res.url.indexOf("{host}") != -1) {
+          url = res.url.replace("{host}", iisHost);
+        } else {
+          url = modelUrl + "/" + res.url
+        }
+        var tileset = Viewer.scene.primitives.add(
+          new Cesium.Cesium3DTileset({
+            name: res.cnName,
+            url: url, //192.168.20.106,to4
+            maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16
+            maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512
+            dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse
+            skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+          })
+        );
+        tileset.readyPromise.then((tileset) => {
+          tileset.id = res.cnName;
+          tileset.layerId = res.id;
+          this.tileSet(tileset, parseFloat(res.elev))
+          Viewer.flyTo(tileset);
+        });
+      }
+    },
+    handleCheckChange(data, checked, indeterminate) {
+      if (data.type == 1) {
+        this.getchilds(data);
+        this.setChangeTileset(this.childOption, checked);
+      } else {
+        this.setChangeTileset([data], checked);
+      }
+    },
+    handleNodeClick(data) {
+      if (data.type == 2) {
+        this.currentData = data;
+        for (var j in Viewer.scene.primitives._primitives) {
+          if (Viewer.scene.primitives._primitives[j].id == data.cnName) {
+            Viewer.flyTo(Viewer.scene.primitives._primitives[j]);
+          }
+        }
+      }
+    },
+    getchilds(source) {
+      if (source.children) {
+        var child = source.children
+        for (var i in child) {
+          if (child[i].children) {
+            this.getchilds(child[i])
+          } else {
+            this.childOption.push(child[i])
+          }
+        }
+      } else {
+        this.childOption.push(source)
+      }
+    },
     init3DMap() {
       //鍦板浘鍒濆鍖�
       window.sgworld = new SmartEarth.SGWorld("mapdiv", {
@@ -82,7 +609,7 @@
             this.tileSet(tileset, 50)
             Viewer.flyTo(tileset);
           });
-        } else {
+        } else if (res.url.indexOf('.mpt') != -1) {
 
           Viewer.imageryLayers.removeAll();
           var url = res.url.split(';')
@@ -93,8 +620,65 @@
             layers: url[1]
           }, "0", undefined, true, "");
 
+        } else if (res.url.indexOf('menuLayer') != -1) {
+          this.setShowModelLayer();
         }
       }
+    },
+    async setShowModelLayer() {
+      const data = await perms_selectLayers();
+      if (data.code != 200) {
+
+      } else {
+        var std = data.result
+        var val = std.filter((str) => {
+          if (str.type == 1) {
+            return str;
+          }
+          if (str.url != null && str.type == 2) {
+            return str;
+          }
+        });
+
+        var res = this.setTreeData(val);
+        this.treeData = res;
+        this.modelLayer = true;
+        var that = this;
+        window.modeCatchHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
+        window.modeCatchHandler.setInputAction((event) => {
+          window.pickedFeature && (window.pickedFeature.color = window.pickedColor);
+          window.pickedFeature = sgworld.Viewer.scene.pick(event.position);
+          if (Cesium.defined(window.pickedFeature)) {
+            if (window.pickedFeature.primitive instanceof Cesium.Cesium3DTileset) {
+              if (window.pickedFeature && window.pickedFeature.getProperty) {
+                window.pickedColor = window.pickedFeature.color
+                window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3);
+                that.setShowModelInfo(pickedFeature);
+                // this.$store.state.catModel = true;
+                // this.$store.state.catModelInfo = {
+                //   id: pickedFeature.getProperty("id"),
+                //   name: pickedFeature.getProperty("name"),
+                //   layerId: pickedFeature.primitive.layerId,
+                //   layerName: pickedFeature.primitive.id
+                // };
+              }
+            }
+          }
+        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
+
+
+      }
+    },
+    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) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
+        // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
+        return father.pid == 430; // 杩斿洖涓�绾ц彍鍗�
+      });
     },
     tileSet(tileset, height) {
       //3dtile妯″瀷鐨勮竟鐣岀悆浣�
@@ -121,9 +705,19 @@
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 .previewBox {
   width: 100%;
   height: 100%;
+  .modelLayer {
+    position: absolute;
+    z-index: 40;
+    padding: 10px 20px;
+
+    border: 1px solid #409eff;
+    margin: 10px;
+    max-height: 300px;
+    overflow: auto;
+  }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index 9d39953..a2c2a58 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -735,30 +735,6 @@
       } else {
         this.childOption.push(source)
       }
-      // let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
-      // var std = [];
-      // if (cloneData.children) {
-      //   var child = cloneData.children;
-      //   child.filter((father) => {
-      //     if (father.children) {
-      //       father.father
-      //     } else {
-
-      //     }
-
-      //   })
-      // }
-      // cloneData.filter((father) => {
-      //   // 寰幆鎵�鏈夐」
-      //   console.log(father)
-      //   // let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
-      //   // branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
-      //   // // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
-      //   // // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
-      //   // return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
-      // });
-
-
     },
 
     setAddLayers(res) {
diff --git a/src/views/datamanage/SpatialData.vue b/src/views/datamanage/SpatialData.vue
index 3fed848..41bcb6c 100644
--- a/src/views/datamanage/SpatialData.vue
+++ b/src/views/datamanage/SpatialData.vue
@@ -272,7 +272,7 @@
                   @click="setAttachDel"
                 >{{$t('common.delete')}}</el-link>
               </el-col>
-              <!-- <el-col :span="3">  <el-link  class="elLink" :underline="false" >{{$t('common.reset')}}</i></el-link></el-col> -->
+
             </el-row>
           </el-form-item>
         </el-form>
diff --git a/src/views/datamanage/uploadmanage.vue b/src/views/datamanage/uploadmanage.vue
index 69cb4da..8696aca 100644
--- a/src/views/datamanage/uploadmanage.vue
+++ b/src/views/datamanage/uploadmanage.vue
@@ -10,7 +10,7 @@
     <div class="tabs_box">
       <div
         class="tabs_pane"
-        @click="setTabsChange()"
+        @click="setTabsChange(1)"
       >
         <div
           class="tabsSpan"
@@ -21,7 +21,7 @@
       </div>
       <div
         class="tabs_pane"
-        @click="setTabsChange()"
+        @click="setTabsChange(2)"
       >
         <div
           class="tabsSpan"
@@ -30,8 +30,22 @@
           <span> {{$t('dataManage.uploadObj.releaseList')}}</span>
         </div>
       </div>
+      <div
+        class="tabs_pane"
+        @click="setTabsChange(3)"
+      >
+        <div
+          class="tabsSpan"
+          :class="{ changetabs : active == 'third'}"
+        >
+          <span> {{$t('dataManage.uploadObj.modelAttachMount')}}</span>
+        </div>
+      </div>
     </div>
-    <div class="content_box">
+    <div
+      v-if="active != 'third'"
+      class="content_box"
+    >
       <el-form
         :inline="true"
         :model="formInline"
@@ -280,6 +294,12 @@
         >
         </el-pagination>
       </div>
+    </div>
+    <div
+      v-if="active == 'third'"
+      class="content_box"
+    >
+      <mapview v-if="active == 'third'"></mapview>
     </div>
     <!-- 鍦板潃棰勮 -->
     <el-dialog
@@ -843,17 +863,23 @@
       this.getTableData();
     },
     //tabs鍒囨彌
-    setTabsChange() {
-      switch (this.active) {
-        case 'first':
-          this.active = 'second';
-          this.setPageStart();
-          break;
-        case 'second':
+    setTabsChange(res) {
+      switch (res) {
+        case 1:
           this.active = 'first';
           this.setPageStart();
           break;
+        case 2:
+          this.active = 'second';
+          this.setPageStart();
+          break;
+        case 3:
+          this.$store.state.previewLayer = {
+            url: "menuLayer"
+          }
+          this.active = 'third';
 
+          break;
       }
     },
     //椤甸潰鍒濆鍖�

--
Gitblit v1.9.3