From 801f2d76b4b6f41247ebe33da59a0981c08bf63b Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期六, 18 三月 2023 14:03:20 +0800
Subject: [PATCH] 数据发布预览

---
 src/views/datamanage/uploadmanage.vue |  177 ++++++++++++++++++++++++++++-------
 src/api/api.js                        |   12 +
 src/components/preview_map.vue        |   67 ++++++++++---
 3 files changed, 201 insertions(+), 55 deletions(-)

diff --git a/src/api/api.js b/src/api/api.js
index 6915b37..3b64a6f 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -1084,11 +1084,17 @@
 
 
 
-//鍒嗛〉鏌ヨ鍏冩暟鎹� => 鏍规嵁瀹炰綋鍚嶆煡璇㈣〃鍚�
+//鏁版嵁鍙戝竷 => 鏍规嵁瀹炰綋鍚嶆煡璇㈣〃鍚�
 export function publish_selectMetasByPage(params) {
   return request.get('/publish/selectMetasByPage', { params: params });
 }
 
-
-
+//鏁版嵁鍙戝竷 => 鍒嗛〉鏌ヨ
+export function publish_selectByPage(params) {
+  return request.get('/publish/selectByPageAndCount', { params: params });
+}
+//鏁版嵁鍙戝竷 => 鍒犻櫎澶氭潯
+export function publish_deletes(params) {
+  return request.get('/publish/deletes', { params: params });
+}
 
diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue
index 25bd220..cc37652 100644
--- a/src/components/preview_map.vue
+++ b/src/components/preview_map.vue
@@ -23,12 +23,12 @@
   methods: {
     init3DMap() {
       //鍦板浘鍒濆鍖�
-      window.sg = new SmartEarth.SGWorld("mapdiv", {
+      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
         url: SmartEarthRootUrl + "Workers/image/earth.jpg",
         licenseServer: window.sceneConfig.licenseServer,
       });
 
-      window.Viewer = window.sg._Viewer;
+      window.Viewer = window.sgworld._Viewer;
 
       // Viewer.camera.flyTo({
       //   destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
@@ -45,43 +45,76 @@
       //鏄剧ずfps
       Viewer.scene.debugShowFramesPerSecond = false;
       //瀵艰埅鎺т欢
-      window.sg.navControl("nav", false);
+      window.sgworld.navControl("nav", false);
       //姣斾緥灏�
-      window.sg.navControl("scale", false);
+      window.sgworld.navControl("scale", false);
       //寮�鍚繁搴︽娴�
       // sg.Analysis.depthTestAgainstTerrain(true)
       Viewer.scene.globe.depthTestAgainstTerrain = true;
 
-      var option = {
-        url: window.sceneConfig.SGUrl,
-        layerName: window.sceneConfig.mptName,
-        requestVertexNormals: true,
-      };
-      sg.Creator.sfsterrainprovider("", option, "", true, "");
 
-      window.elevationTool = new SmartEarth.ElevationTool(window.sg);
-      elevationTool.setContourColor("#F1D487");
+      // window.elevationTool = new SmartEarth.ElevationTool(window.sg);
+      // elevationTool.setContourColor("#F1D487");
+
       if (this.$store.state.previewLayer) {
         var res = this.$store.state.previewLayer;
-        if (res.layer.indexOf('.png')) {
-          console.log(res.layer)
+
+        if (res.url.indexOf('.png') != -1) {
           var wkt = this.$wkt.parse(res.geom);
           var height = this.getHeight(wkt.coordinates[2])
-          console.log(wkt)
           window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
             new Cesium.UrlTemplateImageryProvider({
-              url: res.layer,
+              url: res.url,
               maximumLevel: 18
             })
 
           );
-          debugger
           Viewer.camera.flyTo({
             destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
           });
+        } else if (res.url.indexOf('.json') != -1) {
+          var tileset = Viewer.scene.primitives.add(
+            new Cesium.Cesium3DTileset({
+              url: res.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, 50)
+            Viewer.flyTo(tileset);
+          });
+        } else {
+
+          Viewer.imageryLayers.removeAll();
+          var url = res.url.split(';')
+          console.log(url)
+
+          sgworld.Creator.createImageryProvider('mpt褰卞儚', "wms", {
+            url: url[0],
+            layers: url[1]
+          }, "0", undefined, true, "");
+
         }
       }
     },
+    tileSet(tileset, height) {
+      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
+      var boundingSphere = tileset.boundingSphere;
+      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
+      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
+      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
+      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);
+      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
+      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
+      //淇敼妯″瀷鐭╅樀
+      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+    },
     getHeight(level) {
       if (level > 0 && level < 23) {
         return this.levelArray[level]
diff --git a/src/views/datamanage/uploadmanage.vue b/src/views/datamanage/uploadmanage.vue
index 19436aa..3107a46 100644
--- a/src/views/datamanage/uploadmanage.vue
+++ b/src/views/datamanage/uploadmanage.vue
@@ -37,7 +37,7 @@
         class="demo-form-inline"
       >
         <!-- 鍗曚綅 -->
-        <el-form-item>
+        <el-form-item v-if="active == 'first'">
           <el-select
             size="small"
             v-model="formInline.depid"
@@ -58,7 +58,7 @@
           </el-select>
         </el-form-item>
         <!-- 鐩綍 -->
-        <el-form-item>
+        <el-form-item v-if="active == 'first'">
           <el-select
             size="small"
             v-model="formInline.dirid"
@@ -79,7 +79,7 @@
           </el-select>
         </el-form-item>
         <!-- 鐗堟湰 -->
-        <el-form-item>
+        <el-form-item v-if="active == 'first'">
           <el-select
             size="small"
             v-model="formInline.verid"
@@ -94,7 +94,7 @@
           </el-select>
         </el-form-item>
         <!-- 绫诲瀷 -->
-        <el-form-item>
+        <el-form-item v-if="active == 'first'">
           <el-select
             size="small"
             v-model="formInline.type"
@@ -128,6 +128,13 @@
             size="small"
             icon="el-icon-s-promotion"
           >{{$t('common.publish')}}</el-button>
+          <!-- 鍒櫎 -->
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            @click="setPageDelete"
+          >{{$t('common.delete')}}</el-button>
           <!-- 閲嶇疆 -->
           <el-button
             type="info"
@@ -169,6 +176,7 @@
             align="center"
           />
           <el-table-column
+            v-if="active == 'first'"
             prop="sizes"
             :label="$t('dataManage.vmobj.size')"
             :formatter="stateFormatSizes"
@@ -191,30 +199,57 @@
             align="center"
           />
           <el-table-column
-            prop="layer"
+            prop="url"
             :label="$t('common.publishAddress')"
             align="center"
           />
           <el-table-column
+            v-if="active == 'first'"
             prop="uname"
-            :label="$t('common.releaseTime')"
+            :label="$t('common.rublisher')"
             align="center"
+            :key="Math.random()"
+          />
+          <el-table-column
+            v-if="active != 'first'"
+            prop="createName"
+            :label="$t('common.rublisher')"
+            align="center"
+            :key="Math.random()"
           />
           <el-table-column
             prop="createTime"
-            :label="$t('common.rublisher')"
-            :formatter="formatData"
+            :label="$t('common.releaseTime')"
             align="center"
           />
+
           <el-table-column
             min-width="150"
             :label="$t('common.operate')"
           >
             <template slot-scope="scope">
               <el-button
-                v-if="scope.row.layer"
+                v-if="scope.row.url"
                 size="small"
                 type="success"
+                plain
+                @click="setPreviewLayer(scope.row)"
+              >{{$t('common.preview')}}
+
+              </el-button>
+              <el-button
+                v-if="scope.row.url"
+                size="small"
+                type="warning"
+                plain
+                @click="setPreviewLayer(scope.row)"
+              >{{$t('common.preview')}}
+
+              </el-button>
+              <el-button
+                v-if="scope.row.url"
+                size="small"
+                type="info"
                 plain
                 @click="setPreviewLayer(scope.row)"
               >{{$t('common.preview')}}
@@ -232,7 +267,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="listData.pageIndex"
-          :page-sizes="[100, 200, 500, 1000]"
+          :page-sizes="showPageSize"
           :page-size="listData.pageSize"
           layout="total, sizes, prev, pager, next, jumper"
           :total="listData.count"
@@ -259,7 +294,14 @@
 <script>
 import mapview from '../../components/preview_map.vue'
 import MyBread from "../../components/MyBread.vue"
-import { selectdepTab, selectdirTab, meta_selectVerByDirid, publish_selectMetasByPage } from '../../api/api.js'
+import {
+  selectdepTab,
+  selectdirTab,
+  meta_selectVerByDirid,
+  publish_selectMetasByPage,
+  publish_selectByPage,
+  publish_deletes
+} from '../../api/api.js'
 
 export default {
   components: { MyBread, mapview },
@@ -307,23 +349,43 @@
       },
       dialogVisible: false,
       showMapView: false,
+      showPageSize: [],
 
     }
   },
   methods: {
+    async setPageDelete() {
+      if (this.multipleSelection.length == 0) {
+        return this.$message.error("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁")
+      } else {
+        var std = [];
+        for (var i in this.multipleSelection) {
+          std.push(this.multipleSelection[i].id);
+        }
+        const data = await publish_deletes(std);
+        if (data.code != 200) {
+          this.$message.error("鍗曚綅鍒楄〃鑾峰彇澶辫触")
+          return
+        } else {
+          this.$message({
+            message: '鍒犻櫎鎴愬姛',
+            type: 'success'
+          });
+          this.getTableData();
+        }
+      }
+
+    },
     //棰勮寮圭獥鎵撳紑
     setPreviewLayer(res) {
       this.$store.state.previewLayer = res;
       this.dialogVisible = true;
       this.showMapView = true;
-
     },
-
     //棰勮寮圭獥鍏抽棴
     handleClose() {
       this.dialogVisible = false;
       this.showMapView = false;
-
 
     },
     // 鑾峰彇澶氶�夐�変腑鐨勫璞�
@@ -392,11 +454,22 @@
         name: "",
         type: ""
       }
-      this.listData = {
-        pageIndex: 1,
-        pageSize: 100,
-        count: 0
+      if (this.active == "first") {
+        this.listData = {
+          pageIndex: 1,
+          pageSize: 100,
+          count: 0
+        }
+        this.showPageSize = [100, 200, 500, 1000]
+      } else {
+        this.listData = {
+          pageIndex: 1,
+          pageSize: 10,
+          count: 0
+        }
+        this.showPageSize = [10, 20, 50, 100]
       }
+
       this.formInline.type = this.typeOption[0].value;
       this.getDepTreeList();
       this.getDirTreeList();
@@ -449,27 +522,61 @@
     },
     //鑾峰彇Table琛ㄦ牸鏁版嵁
     async getTableData() {
-      this.listData.depcode = this.formInline.depid;
-      this.listData.dircode = this.formInline.dirid;
-      this.listData.name = this.formInline.name;
-      this.listData.type = this.formInline.type;
-      this.listData.verid = this.formInline.verid;
-      const data = await publish_selectMetasByPage(this.listData)
-      if (data.code != 200) {
+      this.tableData = [];
+      this.listData.count = 0;
+      if (this.active == "first") {
 
+        this.listData.depcode = this.formInline.depid;
+        this.listData.dircode = this.formInline.dirid;
+        this.listData.name = this.formInline.name;
+        this.listData.type = this.formInline.type;
+        this.listData.verid = this.formInline.verid;
+        const data = await publish_selectMetasByPage(this.listData)
+        if (data.code != 200) {
+
+        }
+        if (data.result) {
+
+
+          var that = this
+
+          var val = data.result.filter((res) => {
+            if (res.createTime) {
+              res.createTime = that.format(res.createTime);
+            }
+
+            if (res.url) {
+              res.url = res.url.replace("{host}", iisHost);
+            }
+            return res
+          })
+          this.tableData = val;
+          this.listData.count = data.count;
+        }
       }
-      var that = this
-      var val = data.result.filter((res) => {
-        if (res.createTime) {
-          res.createTime = that.format(res.createTime);
+      else {
+        if (this.formInline.name) {
+          this.listData.name = this.formInline.name
         }
-        if (res.layer) {
-          res.layer = res.layer.replace("{host}", iisHost);
+
+        const data = await publish_selectByPage(this.listData);
+        debugger
+        if (data.result) {
+          var that = this
+          var val = data.result.filter((res) => {
+            if (res.createTime) {
+              res.createTime = that.format(res.createTime);
+            }
+
+            if (res.url) {
+              res.url = res.url.replace("{host}", iisHost);
+            }
+            return res
+          })
+          this.tableData = val;
+          this.listData.count = data.count;
         }
-        return res
-      })
-      this.tableData = val;
-      this.listData.count = data.count;
+      }
     },
     //鏍煎紡鍖栨椂闂�
     format(shijianchuo) {

--
Gitblit v1.9.3