From 56626eac7678fc2618df7cb0837e5f724e327902 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期五, 14 七月 2023 14:26:24 +0800 Subject: [PATCH] mpt 定位 --- src/views/Tools/LayerTree.vue | 235 ++++++++++++------ src/components/preview_map.vue | 463 ++++++++++++++++++++++++++++---------- 2 files changed, 491 insertions(+), 207 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index bd27627..a014193 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -1,63 +1,143 @@ <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" v-if="$store.state.previewLayer.type == 'mpt'" @click="setcropping">瑁佸壀</el-button> - <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" @click="locateTo">瀹氫綅</el-button> - <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" @click="showTileset">鏄鹃殣</el-button> - <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" - @click="setUndergroundMode">鍦颁笅</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml' && + <el-button + size="small" + v-if="$store.state.previewLayer.type == 'mpt'" + @click="setcropping" + >瑁佸壀</el-button> + <el-button + size="small" + v-if="$store.state.previewLayer.type != 'mpt'" + @click="locateTo" + >瀹氫綅</el-button> + <el-button + size="small" + v-if="$store.state.previewLayer.type != 'mpt'" + @click="showTileset" + >鏄鹃殣</el-button> + <el-button + size="small" + v-if="$store.state.previewLayer.type != 'mpt'" + @click="setUndergroundMode" + >鍦颁笅</el-button> + <el-button + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'" size="small" @click="pickupCoords">鎷惧彇</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'mpt'" + size="small" + @click="pickupCoords" + >鎷惧彇</el-button> + <el-button + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'" size="small" @click="reload"> + $store.state.previewLayer.type != 'mpt'" + size="small" + @click="reload" + > 閲嶈浇 </el-button> - <el-button v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml' && + <el-button + v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'" size="small" @click="getModeKeyId">妯″瀷涓婚敭</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'mpt'" + size="small" + @click="getModeKeyId" + >妯″瀷涓婚敭</el-button> + <el-button + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' - " size="small" @click="resave">淇濆瓨</el-button> + " + size="small" + @click="resave" + >淇濆瓨</el-button> </el-form-item> - <el-form-item label="缁忓害:" v-if="$store.state.previewLayer.type != '3dml' && + <el-form-item + label="缁忓害:" + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'"> - <el-input size="small" v-model="modelForm.lon"></el-input> + $store.state.previewLayer.type != 'mpt'" + > + <el-input + size="small" + v-model="modelForm.lon" + ></el-input> </el-form-item> - <el-form-item label="绾害:" v-if="$store.state.previewLayer.type != '3dml' && + <el-form-item + label="绾害:" + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'"> - <el-input size="small" v-model="modelForm.lat"></el-input> + $store.state.previewLayer.type != 'mpt'" + > + <el-input + size="small" + v-model="modelForm.lat" + ></el-input> </el-form-item> - <el-form-item label="楂樺害:" v-if="$store.state.previewLayer.type != '3dml' && + <el-form-item + label="楂樺害:" + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'"> - <el-input size="small" v-model="modelForm.height"></el-input> + $store.state.previewLayer.type != 'mpt'" + > + <el-input + size="small" + v-model="modelForm.height" + ></el-input> </el-form-item> - <el-form-item label="瑙掑害:" v-if="$store.state.previewLayer.type != '3dml' && + <el-form-item + label="瑙掑害:" + v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && - $store.state.previewLayer.type != 'mpt'"> - <el-input size="small" v-model="modelForm.yaw"></el-input> + $store.state.previewLayer.type != 'mpt'" + > + <el-input + size="small" + v-model="modelForm.yaw" + ></el-input> </el-form-item> <!-- <el-form-item label="閫忔槑搴�:"> @@ -70,20 +150,45 @@ </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> @@ -94,53 +199,113 @@ </el-form-item> <el-form-item> - <el-button v-show="isShowModel" type="success" plain size="small" @click="InsertData">{{ + <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 + 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> + <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> + 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 + 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> @@ -163,29 +328,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> @@ -212,7 +414,7 @@ components: { undergroundModel }, - data () { + data() { return { levelArray: [ 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, @@ -296,12 +498,12 @@ modelKeyFlag: false, } }, - mounted () { + mounted() { this.init3DMap(); }, methods: { //瑁佸壀 - setcropping () { + setcropping() { var that = this; sgworld.Creator.SimpleGraphic.clear() sgworld.Creator.SimpleGraphic.edit(false, { editProp: false }); @@ -324,7 +526,7 @@ } ); }, - setUndergroundMode () { + setUndergroundMode() { if (window.UndergroundMode) { this.$refs && this.$refs.undergroundModel && @@ -335,14 +537,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) { @@ -368,7 +570,7 @@ this.dialog.src = url } }, - async setAttachDel () { + async setAttachDel() { var std = []; for (var i in this.attacgSelection) { std.push(this.attacgSelection[i].id); @@ -379,7 +581,7 @@ } this.getAttacthFlieList(); }, - setAttachInsert () { + setAttachInsert() { var token = getToken(); var fs = document.getElementById("insertFile"); if (fs.files.length == 0) { @@ -423,15 +625,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 ( @@ -453,10 +655,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'; @@ -465,11 +667,11 @@ } }, // 闄勪欢=>琛ㄦ牸閫夋嫨 - handleAttatchChange (val) { + handleAttatchChange(val) { this.attacgSelection = val; }, //闄勪欢鍒楄〃鏌ヨ - async getAttacthFlieList () { + async getAttacthFlieList() { var obj = { eventid: this.layerID, tabName: "lf.sys_style" @@ -481,12 +683,12 @@ } this.tableData = res.result; }, - handleClick () { + handleClick() { if (this.activeName == "second") { this.getAttacthFlieList(); } }, - async EditData () { + async EditData() { const data = await comprehensive_updateModel(this.formInline) @@ -508,7 +710,7 @@ this.startModelData(); }, - async InsertData () { + async InsertData() { var std = { "bak": this.formInline.bak, "guid": this.formInline.Id, @@ -535,7 +737,7 @@ }, - handleClose () { + handleClose() { this.dialogVisible = false; this.formInline = { title: '', @@ -550,7 +752,7 @@ this.activeName = "first" }, - async setShowModelInfo (result) { + async setShowModelInfo(result) { var modelKey = 'id'; if (result.tileset) { @@ -590,7 +792,7 @@ this.dialogVisible = true; }, - async startModelData () { + async startModelData() { var obj = { layerid: this.formInline.layerId, modelid: this.formInline.Id @@ -608,7 +810,7 @@ this.formInline.title = this.formInline.name; } }, - setChangeTileset (result) { + setChangeTileset(result) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { @@ -627,7 +829,7 @@ } } }, - setAddLayers (rs) { + setAddLayers(rs) { if (rs.serveType == "Tileset" || rs.serveType == "3DML") { var url; @@ -660,7 +862,7 @@ } }, - async getArgsTileset (tileset, rs) { + async getArgsTileset(tileset, rs) { if (rs.pubid > 0) { @@ -683,7 +885,7 @@ } }, - tileSet (tileset, height) { + tileSet(tileset, height) { //3dtile妯″瀷鐨勮竟鐣岀悆浣� var boundingSphere = tileset.boundingSphere; //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� @@ -697,7 +899,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; @@ -709,7 +911,7 @@ - handleCheckChange (data, checked, indeterminate) { + handleCheckChange(data, checked, indeterminate) { if (data.type == 1) { this.getchilds(data); this.setChangeTileset(this.childOption, checked); @@ -717,7 +919,7 @@ this.setChangeTileset([data], checked); } }, - handleNodeClick (data) { + handleNodeClick(data) { if (data.type == 2) { this.currentData = data; for (var j in Viewer.scene.primitives._primitives) { @@ -727,7 +929,7 @@ } } }, - getchilds (source) { + getchilds(source) { if (source.children) { var child = source.children for (var i in child) { @@ -741,7 +943,7 @@ this.childOption.push(source) } }, - init3DMap () { + init3DMap() { //鍦板浘鍒濆鍖� window.sgworld = new SmartEarth.SGWorld("mapdiv", { licenseServer: window.sceneConfig.licenseServer, @@ -865,12 +1067,22 @@ } sgworld.Creator.createImageryProvider(res.cnName, "wms", ops, "0", undefined, true, ""); + + if (res && res.json) { + var rs = JSON.parse(res.json); + Viewer.camera.flyTo({ + destination: Cesium.Rectangle.fromDegrees(rs.west, rs.south, rs.east, rs.north) + }) + } + + + } else if (res.url.indexOf('menuLayer') != -1) { this.setShowModelLayer(); } } }, - getModeKeyId () { + getModeKeyId() { window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.ModeKeyIdHandler.setInputAction((event) => { @@ -889,7 +1101,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, - async resave () { + async resave() { if (this.$store.state.previewLayer.type != "mpt") { if (!this.modelForm.modelid) { @@ -916,7 +1128,7 @@ } this.reload(); }, - reload () { + reload() { sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) var json = JSON.stringify(this.modelForm); var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); @@ -943,7 +1155,7 @@ }, //鎷惧彇 - pickupCoords () { + pickupCoords() { if (this.app.handler) { this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); this.app.handler = undefined; @@ -969,12 +1181,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; @@ -998,7 +1210,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; @@ -1011,22 +1223,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, @@ -1050,7 +1262,7 @@ dynamicScreenSpaceError: true // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿 }); }, - setEditModelLayer (res) { + setEditModelLayer(res) { if (res.json) { @@ -1061,7 +1273,7 @@ this.getTilesetArgs(); } }, - setModleLocatin () { + setModleLocatin() { var res = this.$store.state.previewLayer; var type = res.type; if (this.modelType.indexOf(type) != -1) { @@ -1074,7 +1286,7 @@ } }, - setModeLayerID (res) { + setModeLayerID(res) { var value = res.getPropertyNames(); var std = []; @@ -1088,12 +1300,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]); @@ -1106,7 +1318,7 @@ } this.app.isBusy = false; }, - getEditTilesetArgs () { + getEditTilesetArgs() { this.app.isBusy = true; var std = { lon: 0, @@ -1129,7 +1341,7 @@ return std }, - async setShowModelLayer () { + async setShowModelLayer() { const data = await perms_selectLayers(); if (data.code != 200) { @@ -1178,7 +1390,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) } }, - setTreeData (source) { + setTreeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 return cloneData.filter((father) => { // 寰幆鎵�鏈夐」 @@ -1202,7 +1414,7 @@ // //淇敼妯″瀷鐭╅樀 // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // }, - getHeight (level) { + getHeight(level) { if (level > 0 && level < 23) { return this.levelArray[level] } @@ -1242,7 +1454,8 @@ } .el-icon-sunrise { - background: url("../assets/img/synthesis/images/3鐧藉簳_157.png") center center no-repeat; + background: url("../assets/img/synthesis/images/3鐧藉簳_157.png") center + center no-repeat; background-size: 24px; } diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index bb89c74..3c0a08d 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -2,56 +2,107 @@ <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="prjChanged" + placeholder="璇烽�夋嫨椤圭洰" + > + <el-option + v-for="item in menus" + :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> + <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' : '']">{{ + 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> - </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> + </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 + class="edit" + @click="showLayerAttribute()" + v-if="showProp && !shwoHistogram" + > <i class="el-icon-tickets"></i> 灞炴�� </div> - <div class="edit" @click="positioning()" v-if="showLocal"> + <div + class="edit" + @click="positioning()" + v-if="showLocal" + > <i class="el-icon-tickets"></i> 瀹氫綅 </div> - <div class="edit" @click="pellucidity()" v-if="showOpacity"> + <div + class="edit" + @click="pellucidity()" + v-if="showOpacity" + > <i class="el-icon-tickets"></i> 閫忔槑搴� </div> - <div class="edit" @click="histogram()" v-show="shwoHistogram"> + <div + class="edit" + @click="histogram()" + v-show="shwoHistogram" + > <i class="el-icon-tickets"></i> 閽诲瓟鏌辩姸鍥� </div> - <div class="edit" v-show="shwoTileDown" @click="tileDownload()"> + <div + class="edit" + v-show="shwoTileDown" + @click="tileDownload()" + > <i class="el-icon-download"></i> 鐡︾墖涓嬭浇 </div> </el-card> @@ -68,7 +119,7 @@ export default { name: "tree", components: { queryinfo }, - data () { + data() { return { isBusy: false, // 姝e繖 lastPrjCode: "", // 鏈�鍚庨�夋嫨椤圭洰缂栫爜 @@ -105,11 +156,11 @@ }; }, watch: { - filterText (val) { + filterText(val) { this.$refs.tree.filter(val); }, }, - mounted () { + mounted() { this.getMenus(); this.$bus.$on("treeDataCopy", (res) => { this.$store.state.treeData = this.treeData; @@ -125,12 +176,12 @@ }, methods: { // 鑾峰彇鑿滃崟 - async getMenus () { + async getMenus() { let data = await project_selectDirAll(); if (data && data.code == 200) this.menus = data.result; }, // 鍒濆鍖栧浘灞� - async layersStart () { + async layersStart() { let data = await perms_selectLayers(); if (data.code != 200) { return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触"); @@ -151,7 +202,7 @@ sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); }, // 璁剧疆鏍戞暟鎹� - setTreeData (source) { + setTreeData(source) { /*let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 return cloneData.filter((father) => { // 寰幆鎵�鏈夐」 @@ -168,7 +219,7 @@ return arr; }, // 璁剧疆鏍戝瓙鑺傜偣鏁版嵁 - setTreeChildData (data, arr, pid) { + setTreeChildData(data, arr, pid) { let i = 0; while (i < data.length) { let d = data[i]; @@ -192,7 +243,7 @@ } }, // 鑺傜偣鑾峰緱鐒︾偣浜嬩欢 - nodeBlur (node, data) { + nodeBlur(node, data) { if (!data.label.length) return this.$message.error("鑿滃崟鍚嶄笉鍙负绌猴紒"); if (data.isEdit) this.$set(data, "isEdit", false); this.$nextTick(() => { @@ -200,22 +251,22 @@ }); }, // 榧犳爣宸﹀嚮浜嬩欢 - handleLeftclick (data, node) { + handleLeftclick(data, node) { this.rmListener(); }, // 鍙栨秷榧犳爣鐩戝惉浜嬩欢 - rmListener () { + rmListener() { this.menuVisible = false; // 瑕佸強鏃跺叧鎺夌洃鍚紝涓嶅叧鎺夌殑鏄竴涓潙锛屼笉淇′綘璇曡瘯锛岃櫧鐒跺墠鍙版樉绀虹殑鏃跺�欐病鏈夊暐姣涚梾锛屽姞涓�涓猘lert浣犲氨鐭ラ亾浜� document.removeEventListener("click", this.rmListener); }, // 杩囨护鑺傜偣 - filterNode (value, data) { + filterNode(value, data) { if (!value) return true; return data.cnName.indexOf(value) !== -1; }, // 榧犳爣鍙冲嚮浜嬩欢 - rightClick (event, object, node, element) { + rightClick(event, object, node, element) { if (object.type == 1 || node.data.children != null) return; this.currentNode = node; @@ -233,7 +284,7 @@ this.$refs.card.$el.style.top = event.pageY + "px"; }, // 灞炴�ф樉绀� - showLayerAttribute (data) { + showLayerAttribute(data) { this.rmListener(); this.currentData = data ? data : this.currentData; let layer = this.currentData.enName.replaceAll("_", ""); @@ -242,8 +293,9 @@ this.$store.state.mapPopBoxFlag = "2"; }, // 瀹氫綅 - async positioning () { + 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) { @@ -267,11 +319,22 @@ } if ("Mpt" == this.currentData.serveType) { - viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(101.8, 37.9, 10000000.0) }); // 涓浗 + if (this.currentData.json) { + var json = JSON.parse(this.currentData.json); + if (json.west) { + Viewer.camera.flyTo({ + destination: Cesium.Rectangle.fromDegrees(json.west, json.south, json.east, json.north) + }) + } + } else { + debugger + Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(101.8, 37.9, 10000000.0) }); // 涓浗 + } + } }, // 閽诲瓟鏌辩姸鍥� - async histogram () { + async histogram() { this.rmListener(); let layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; @@ -279,7 +342,7 @@ this.$store.state.showPopBoxFlag = true; }, // 閫忔槑搴� - pellucidity () { + pellucidity() { this.rmListener(); for (let j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) { @@ -290,13 +353,13 @@ } }, // 鑾峰彇楂樺害 - getHeight (level) { + getHeight(level) { if (level > -1 && level < 23) return this.levelArray[level]; return this.levelArray[this.levelArray.length - 1]; }, // 鐡︾墖涓嬭浇 - tileDownload () { + tileDownload() { this.rmListener(); var that = this; @@ -309,7 +372,7 @@ ); }, // 鑾峰彇鐡︾墖鍥涜嚦鑼冨洿 - getTileRectangle (res) { + getTileRectangle(res) { var value = res.rectangle.coordinates.getValue(); var val = { pubid: this.currentData.pubid, @@ -323,7 +386,7 @@ this.$bus.$emit("titleDown", val); }, // 鍥惧眰閫変腑浜嬩欢 - handleCheckChange (data, checked) { + handleCheckChange(data, checked) { if (this.isBusy) return; let nodes = []; @@ -359,7 +422,7 @@ if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked); }, // 鑾峰彇瀛愯妭鐐� - getNodes (data, arr) { + getNodes(data, arr) { if (data.children) { for (let i = 0, c = data.children.length; i < c; i++) { let node = data.children[i]; @@ -374,7 +437,7 @@ } }, // 鑾峰彇鑺傜偣ID - getCheckNodesIds () { + getCheckNodesIds() { let nodes = this.$refs.tree.getCheckedNodes(); let ids = []; for (let i in nodes) { @@ -384,12 +447,12 @@ return ids; }, // 鍒囨崲WMS鏈嶅姟 - setChangeWMS (layers, checked) { + setChangeWMS(layers, checked) { let value = this.$refs.tree.getCheckedNodes(); this.$bus.$emit("showMenuLayer", value); }, // 鍒囨崲Tileset - setChangeTileset (layers, checked) { + setChangeTileset(layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let k in layers) { let layer = layers[k]; @@ -416,7 +479,7 @@ if (arr.length) this.addTilesetLayers(arr); }, // 娣诲姞Tileset鍥惧眰 - addTilesetLayers (layers) { + 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; @@ -470,7 +533,7 @@ } }, // 鍒囨崲TMS - setChangeTMS (layers, checked) { + setChangeTMS(layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let j in layers) { let layer = layers[j]; @@ -490,7 +553,7 @@ if (arr.length) this.addTMSLayers(arr); }, // 娣诲姞TMS鍥惧眰 - addTMSLayers (layers) { + 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; @@ -510,7 +573,7 @@ } }, // 鍒囨崲Mpt - setChangeMpt (layers, checked) { + setChangeMpt(layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let j in layers) { let layer = layers[j]; @@ -530,7 +593,7 @@ if (arr.length) this.addMptLayers(arr); }, // 娣诲姞Mpt鍥惧眰 - addMptLayers (layers) { + addMptLayers(layers) { for (let i in layers) { let res = layers[i]; if (res.url.indexOf("{host}") > -1) res.url = res.url.replace("{host}", iisHost); @@ -550,7 +613,7 @@ } }, // 鍒囨崲DEM - setChangeDEM (layers, checked) { + setChangeDEM(layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let i in layers) { let layer = layers[i]; @@ -564,7 +627,7 @@ this.addDEMLayers(url, null == url); }, // 娣诲姞DEM鍥惧眰 - addDEMLayers (url, useSG) { + addDEMLayers(url, useSG) { if (useSG) { if (Viewer.terrainProvider._isMPT) return; @@ -584,7 +647,7 @@ }); }, // 璁剧疆Tileset鍙傛暟 - async setTilesetArgs (tileset, res) { + async setTilesetArgs(tileset, res) { if (res.serveType == '3DML' || !res.pubid) { this.setTilesetHeigth(tileset, parseFloat(res.elev)); return; @@ -594,7 +657,7 @@ if (data.code == 200 && data.result.json) this.setTilesetCoord(tileset, data.result.json); }, // 璁剧疆Tileset楂樺害 - setTilesetHeigth (tileset, height) { + setTilesetHeigth(tileset, height) { //3dtile妯″瀷鐨勮竟鐣岀悆浣� let boundingSphere = tileset.boundingSphere; //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� @@ -609,7 +672,7 @@ // Viewer.flyTo(tileset); }, // 璁剧疆Tileset鍧愭爣 - setTilesetCoord (tileset, json) { + setTilesetCoord(tileset, json) { let vm = JSON.parse(json); let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); let converter = Cesium.Transforms.eastNorthUpToFixedFrame; @@ -619,7 +682,7 @@ // Viewer.flyTo(tileset); }, // 鏍规嵁Pubid璁剧疆TMS鍥惧眰 - async setTMSLayerByPubid (res) { + async setTMSLayerByPubid(res) { const data = await comprehensive_selectPubById({ id: res.pubid }); if (!data || data.code != 200) return; @@ -647,7 +710,7 @@ // } }, // 鍒囨崲椤圭洰 - prjChanged (code) { + prjChanged(code) { this.$store.state.pigCode = code; @@ -672,7 +735,7 @@ } }, // 鏍规嵁椤圭洰缂栫爜鑾峰彇閫変腑鍥惧眰 - getCheckedLayersByCode (code) { + getCheckedLayersByCode(code) { let layers = []; for (let i = 0, c = this.treeData.length; i < c; i++) { this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false); @@ -681,7 +744,7 @@ return layers; }, // 鏍规嵁椤圭洰缂栫爜鑾峰彇閫変腑瀛愬浘灞� - getCheckedChildLayersByCode (data, code, layers, isPrj) { + 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]; @@ -708,7 +771,7 @@ } }, // 鑾峰彇鏂版爲鏁版嵁 - getNewTreeData (code) { + getNewTreeData(code) { let data = JSON.parse(JSON.stringify(this.sourceData)); if (!code) return data; @@ -718,7 +781,7 @@ return data; }, // 璁剧疆鏍戞暟鎹瓙鑺傜偣 - setSubTreeData (data, code) { + setSubTreeData(data, code) { let j = 0; while (j < data.length) { let d = data[j]; @@ -737,7 +800,7 @@ } }, // 绉婚櫎椤圭洰鏍戞暟鎹� - rmPrjTreeData (data, code) { + rmPrjTreeData(data, code) { /*let j = 0; while (j < data.length) { let d = data[j]; @@ -790,7 +853,7 @@ } }, // 娣诲姞WFS鍥惧眰 * - addWFSLayers (res) { + addWFSLayers(res) { let url = res.resource + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + @@ -831,7 +894,7 @@ </script> <style scoped lang="less"> /* 鐐瑰嚮鑺傜偣鏃剁殑閫変腑棰滆壊 */ -.tree-container /deep/.el-tree-node.is-current>.el-tree-node__content { +.tree-container /deep/.el-tree-node.is-current > .el-tree-node__content { color: #409eff !important; } @@ -863,19 +926,19 @@ padding-left: 16px; } -.tree-container /deep/ .el-tree>.el-tree-node:before { +.tree-container /deep/ .el-tree > .el-tree-node:before { border-left: none; } -.tree-container /deep/ .el-tree>.el-tree-node:after { +.tree-container /deep/ .el-tree > .el-tree-node:after { border-top: none; } -.tree-container /deep/ .el-tree>.el-tree-node:before { +.tree-container /deep/ .el-tree > .el-tree-node:before { border-left: none; } -.tree-container /deep/ .el-tree>.el-tree-node:after { +.tree-container /deep/ .el-tree > .el-tree-node:after { border-top: none; } @@ -938,7 +1001,11 @@ z-index: 8; } -.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::before { +.tree-container + /deep/ + .el-tree-node + .el-tree-node__children + .el-tree-node__content::before { border-left: 0px dashed #ccc; height: 100%; top: 0; @@ -958,7 +1025,7 @@ } .tree-container /deep/ .el-tree-node { - .is-leaf+.el-checkbox .el-checkbox__inner { + .is-leaf + .el-checkbox .el-checkbox__inner { display: inline-block; } @@ -967,7 +1034,11 @@ } } -.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::after { +.tree-container + /deep/ + .el-tree-node + .el-tree-node__children + .el-tree-node__content::after { border-top: 0px dashed #ccc; } @@ -985,7 +1056,7 @@ /deep/.el-card__body { padding: 10px !important; - >div { + > div { padding-bottom: 10px; border-bottom: 1px solid #ccc; -- Gitblit v1.9.3