From 4c634c5542c4d61f33c98bc4756aca6e195ac6d2 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期六, 18 三月 2023 11:49:02 +0800 Subject: [PATCH] 发布管理接口对接添加预览页面 --- src/views/datamanage/uploadmanage.vue | 157 ++++++++++++++++++++++--- src/api/api.js | 5 src/assets/lang/zh.js | 5 src/store/index.js | 1 src/components/preview_map.vue | 102 +++++++++++++++++ src/assets/lang/en.js | 5 src/views/Tools/AddOnlineMap.vue | 52 +++++++- 7 files changed, 300 insertions(+), 27 deletions(-) diff --git a/src/api/api.js b/src/api/api.js index 8f1bff2..6915b37 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -1084,6 +1084,11 @@ +//鍒嗛〉鏌ヨ鍏冩暟鎹� => 鏍规嵁瀹炰綋鍚嶆煡璇㈣〃鍚� +export function publish_selectMetasByPage(params) { + return request.get('/publish/selectMetasByPage', { params: params }); +} + diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js index 6d1117c..8ab0618 100644 --- a/src/assets/lang/en.js +++ b/src/assets/lang/en.js @@ -1,5 +1,10 @@ const en = { common: { + preview: 'preview', + publish: "Publish", + releaseTime: 'Release time', + rublisher: 'Publisher', + publishAddress: 'Publishing address', increase: 'increase', bak: 'Bak', domCode: 'DomCode', diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js index 403ff86..0f7e790 100644 --- a/src/assets/lang/zh.js +++ b/src/assets/lang/zh.js @@ -1,5 +1,10 @@ const zh = { common: { + preview: '棰勮', + publish: "鍙戝竷", + releaseTime: '鍙戝竷鏃堕棿', + rublisher: '鍙戝竷浜哄憳', + publishAddress: '鍙戝竷鍦板潃', increase: '娣诲姞', bak: '澶囨敞', domCode: '缂栫爜', diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue new file mode 100644 index 0000000..25bd220 --- /dev/null +++ b/src/components/preview_map.vue @@ -0,0 +1,102 @@ + +<template> + <div + id="mapdiv" + class="previewBox" + ></div> +</template> + +<script> +export default { + data() { + return { + 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, + ], + } + }, + mounted() { + this.init3DMap(); + }, + methods: { + init3DMap() { + //鍦板浘鍒濆鍖� + window.sg = new SmartEarth.SGWorld("mapdiv", { + url: SmartEarthRootUrl + "Workers/image/earth.jpg", + licenseServer: window.sceneConfig.licenseServer, + }); + + window.Viewer = window.sg._Viewer; + + // Viewer.camera.flyTo({ + // destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), + // }); + + Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: gaoDeBaseUrl[1].url, + maximumLevel: 18 + }) + ); + + Viewer._enableInfoOrSelection = false; + //鏄剧ずfps + Viewer.scene.debugShowFramesPerSecond = false; + //瀵艰埅鎺т欢 + window.sg.navControl("nav", false); + //姣斾緥灏� + window.sg.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"); + if (this.$store.state.previewLayer) { + var res = this.$store.state.previewLayer; + if (res.layer.indexOf('.png')) { + console.log(res.layer) + 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, + maximumLevel: 18 + }) + + ); + debugger + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), + }); + } + } + }, + getHeight(level) { + if (level > 0 && level < 23) { + return this.levelArray[level] + } + return this.levelArray[this.levelArray.length - 1] + }, + + }, + +} +</script> + +<style> +.previewBox { + width: 100%; + height: 100%; +} +</style> \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index d944bf5..1294515 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -70,6 +70,7 @@ catModelInfo: null, showPopBoxFlag: false, pickoption: null, + previewLayer: null }, mutations: { //鑾峰彇鏉冮檺鍚堥泦 diff --git a/src/views/Tools/AddOnlineMap.vue b/src/views/Tools/AddOnlineMap.vue index 092f8f1..d360cec 100644 --- a/src/views/Tools/AddOnlineMap.vue +++ b/src/views/Tools/AddOnlineMap.vue @@ -168,7 +168,25 @@ }, ], - }, + }, { + name: '鏈湴鏈嶅姟', + sourceType: 'localmap', + id: 3, + isShow: true, + list: [ + { + name: "鍦板浘", + image: require("../../assets/img/imageLayer/gdmap_map.jpg"), + urls: "http://{host}/LFData/2d/tiles/vec/{z}/{x}/{y}.png", + }, + { + name: "褰卞儚", + image: require("../../assets/img/imageLayer/gdmap_image.jpg"), + urls: "http://{host}/LFData/2d/tiles/img/{z}/{x}/{y}.png", + }, + + ], + } ], }; @@ -259,16 +277,38 @@ zIndex: -1 }); window.map.addLayer(window.olBaseMapLayer); + } else if (mapCollection.sourceType === "localmap") { + var ulr = map.urls; + ulr = ulr.replace("{host}", iisHost) + console.log(ulr) + window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: ulr, + maximumLevel: this.data.maximumLevel, + }) + ); + + window.olBaseMapLayer = new TileLayer({ + title: "楂樺痉鍦板浘", + source: new XYZ({ + url: ulr, + wrapX: false + }), + zIndex: -1 + }); + window.map.addLayer(window.olBaseMapLayer); } Viewer.imageryLayers.lowerToBottom(window.BaseMapLayer);//灏嗗浘灞傜Щ鍒版渶搴曞眰 Viewer.imageryLayers.raise(window.BaseMapLayer);//灏嗗浘灞備笂绉讳竴灞� - - - - - }, + + + + + + + // 娣诲姞鏁版嵁 addData() { if (this.data.urls && this.data.sourceType) { diff --git a/src/views/datamanage/uploadmanage.vue b/src/views/datamanage/uploadmanage.vue index 3a5edd0..19436aa 100644 --- a/src/views/datamanage/uploadmanage.vue +++ b/src/views/datamanage/uploadmanage.vue @@ -122,6 +122,13 @@ ></i></el-input> </el-form-item> <el-form-item style="float:right"> + <!-- 鍙戝竷 --> + <el-button + type="success" + size="small" + icon="el-icon-s-promotion" + >{{$t('common.publish')}}</el-button> + <!-- 閲嶇疆 --> <el-button type="info" size="small" @@ -184,16 +191,37 @@ align="center" /> <el-table-column + prop="layer" + :label="$t('common.publishAddress')" + align="center" + /> + <el-table-column prop="uname" - :label="$t('dataManage.vmobj.createonuser')" + :label="$t('common.releaseTime')" align="center" /> <el-table-column prop="createTime" - :label="$t('dataManage.vmobj.createontime')" + :label="$t('common.rublisher')" :formatter="formatData" align="center" /> + <el-table-column + min-width="150" + :label="$t('common.operate')" + > + <template slot-scope="scope"> + <el-button + v-if="scope.row.layer" + size="small" + type="success" + plain + @click="setPreviewLayer(scope.row)" + >{{$t('common.preview')}} + + </el-button> + </template> + </el-table-column> </el-table> </div> <div @@ -204,7 +232,7 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listData.pageIndex" - :page-sizes="[10, 20, 50, 100]" + :page-sizes="[100, 200, 500, 1000]" :page-size="listData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="listData.count" @@ -212,15 +240,29 @@ </el-pagination> </div> </div> + <!-- 鍦板潃棰勮 --> + <el-dialog + :title="$t('common.preview')" + :visible.sync="dialogVisible" + width="70%" + :before-close="handleClose" + top="13vh" + > + <div style="width:100%;height:65vh"> + <mapview v-if="showMapView"></mapview> + </div> + </el-dialog> + </div> </template> <script> - +import mapview from '../../components/preview_map.vue' import MyBread from "../../components/MyBread.vue" -import { selectdepTab, selectdirTab, meta_selectVerByDirid } from '../../api/api.js' +import { selectdepTab, selectdirTab, meta_selectVerByDirid, publish_selectMetasByPage } from '../../api/api.js' + export default { - components: { MyBread }, + components: { MyBread, mapview }, data() { return { active: 'first', @@ -235,7 +277,7 @@ }, listData: { pageIndex: 1, - pageSize: 10, + pageSize: 100, count: 0 }, multipleSelection: [], @@ -244,19 +286,16 @@ dirOption: [], verOption: [], typeOption: [{ - value: 't1', - label: '鍏ㄩ儴' - }, { - value: 't2', + value: 'DOM', label: '褰卞儚鏁版嵁(.tif, .img)' }, { - value: 't3', + value: 'MPT', label: '鍦烘櫙鏁版嵁(.mpt)' }, { - value: 't4', + value: '3DML', label: '涓夌淮妯″瀷(.3dml)' }, { - value: 't5', + value: 'BIM', label: '涓夌淮妯″瀷(.fbx, .ifc, .rvt)' }], defaultProps: { @@ -266,9 +305,27 @@ checkStrictly: true, emitPath: false, }, + dialogVisible: false, + showMapView: false, + } }, methods: { + //棰勮寮圭獥鎵撳紑 + setPreviewLayer(res) { + this.$store.state.previewLayer = res; + this.dialogVisible = true; + this.showMapView = true; + + }, + + //棰勮寮圭獥鍏抽棴 + handleClose() { + this.dialogVisible = false; + this.showMapView = false; + + + }, // 鑾峰彇澶氶�夐�変腑鐨勫璞� handleSelectionChange(val) { this.multipleSelection = val @@ -281,6 +338,15 @@ } else { return row.sizes + " MB" } + }, + //鏍煎紡鍖栧湴鍧� + formatLayer(row, column) { + let data = row.layer + if (data == null) { + return data + } + + return data.replace("{host}", iisHost) }, //鏍煎紡鍖栨椂闂� formatData(row, column) { @@ -328,7 +394,7 @@ } this.listData = { pageIndex: 1, - pageSize: 10, + pageSize: 100, count: 0 } this.formInline.type = this.typeOption[0].value; @@ -343,7 +409,7 @@ return } this.dirOption = this.treeData(data.result); - this.formInline.dirid = this.dirOption[0].id; + this.formInline.dirid = this.dirOption[0].code; this.formInline.dirName = this.dirOption[0].name; this.getVerList() }, @@ -370,19 +436,68 @@ }, //鍗曚綅鍒楄〃鍒囨崲 handleDepChange(data, node, nodeData) { - this.formInline.depid = data.id + this.formInline.depid = data.code this.formInline.depName = data.name this.getTableData(); }, - //鍗曚綅鍒楄〃鍒囨崲 + //鐩綍鍒楄〃鍒囨崲 handleDirChange(data, node, nodeData) { - this.formInline.dirid = data.id + + this.formInline.dirid = data.code this.formInline.dirName = data.name this.getVerList() }, //鑾峰彇Table琛ㄦ牸鏁版嵁 - getTableData() { + 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) { + } + var that = this + var val = data.result.filter((res) => { + if (res.createTime) { + res.createTime = that.format(res.createTime); + } + if (res.layer) { + res.layer = res.layer.replace("{host}", iisHost); + } + return res + }) + this.tableData = val; + this.listData.count = data.count; + }, + //鏍煎紡鍖栨椂闂� + format(shijianchuo) { + //shijianchuo鏄暣鏁帮紝鍚﹀垯瑕乸arseInt杞崲 + var time = new Date(shijianchuo); + var y = time.getFullYear(); + var m = time.getMonth() + 1; + var d = time.getDate(); + var h = time.getHours(); + var mm = time.getMinutes(); + var s = time.getSeconds(); + return ( + y + + '-' + + this.add0(m) + + '-' + + this.add0(d) + + ' ' + + h + + ':' + + mm + + ':' + + s + ); + }, + //鏍煎紡鍖栨椂闂� + add0(m) { + return m < 10 ? '0' + m : m; }, //鑾峰彇鍗曚綅鍒楄〃 async getDepTreeList() { @@ -392,7 +507,7 @@ return } this.depOption = this.treeData(data.result); - this.formInline.depid = this.depOption[0].id + this.formInline.depid = this.depOption[0].code this.formInline.depName = this.depOption[0].name }, //鏍戝垪琛ㄧ敓鎴� -- Gitblit v1.9.3