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