From e285f391c74460d4a3e093e9d8f349c70b37bb6d Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期六, 25 三月 2023 16:55:16 +0800 Subject: [PATCH] 发布管理,模型挂附件功能修改,模型编辑功能修改,模型挂附件页面添加地下模式功能;官网一张图漫游效果修改,图层管理功能优化 --- src/components/preview_map.vue | 205 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 174 insertions(+), 31 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index e135114..3defe49 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -8,18 +8,29 @@ 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 class="modelBox"> + <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="[2, 3]" + :default-checked-keys="[5]" + :props="defaultProps" + @node-click="handleNodeClick" + @check="handleCheckChange" + > + </el-tree> + </div> </div> <div v-if="editModelFlag" @@ -54,9 +65,15 @@ 閲嶈浇 </el-button> <el-button + v-if="modelForm.modelid == null" + size="small" + @click="getModeKeyId" + >妯″瀷涓婚敭</el-button> + <el-button size="small" @click="resave" >淇濆瓨</el-button> + </el-form-item> <el-form-item label="缁忓害:"> <el-input @@ -339,6 +356,37 @@ </div> </el-dialog> + <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> + </el-select> + </el-form-item> + <el-form-item> + <el-button + type="primary" + size="small" + @click="setSureKeyModelKey" + >{{$t('common.confirm')}}</el-button> + </el-form-item> + </el-form> + </div> + <undergroundModel ref="undergroundModel" /> </div> </template> @@ -354,7 +402,12 @@ comprehensive_selectPubById } from '../api/api.js'; import { getToken } from '@/utils/auth'; +import undergroundModel from '../views/Tools/undergroundModel.vue' + export default { + components: { + undergroundModel + }, data() { return { levelArray: [ @@ -420,20 +473,35 @@ lat: 39, height: 0, yaw: 0, - alpha: 1 + alpha: 1, + modelid: null, }, app: { tileset: null, isBusy: false, under: false, handler: null - } + }, + modelLayerId: null, + optionKey: [], + modelKeyFlag: false, } }, mounted() { this.init3DMap(); }, methods: { + setUndergroundMode() { + if (window.UndergroundMode) { + this.$refs && + this.$refs.undergroundModel && + this.$refs.undergroundModel.close(); + } else { + this.$refs && + this.$refs.undergroundModel && + this.$refs.undergroundModel.open("鍦颁笅妯″紡", null,); + } + }, refreshAttatchDetail() { this.dialog.src = ""; this.dialog.dialogVisible = false; @@ -581,7 +649,7 @@ this.formInline.title = this.formInline.name that.dialogVisible = true; - + this.startModelData(); }, async InsertData() { var std = { @@ -605,7 +673,7 @@ that.dialogVisible = false; this.formInline.title = this.formInline.name that.dialogVisible = true; - + this.startModelData(); @@ -622,13 +690,30 @@ bak: '', Id: '' } + this.activeName = "first" }, - setShowModelInfo(result) { + async setShowModelInfo(result) { + var modelKey = 'id'; - this.formInline.title = result.getProperty("name") - this.formInline.Id = result.getProperty("id"); - this.layerID = result.getProperty("id"); + if (result.tileset.pubid > 0) { + const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) + if (data.code != 200) { + return + } else { + + modelKey = JSON.parse(data.result.json).modelid + } + if (!modelKey) { + return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); + } + } + + + + // this.formInline.title = result.getProperty("name") + this.formInline.Id = result.getProperty(modelKey); + this.layerID = result.getProperty(modelKey); this.formInline.layerId = result.primitive.layerId; this.formInline.layerName = result.primitive.id; this.startModelData(); @@ -697,6 +782,7 @@ tileset.readyPromise.then((tileset) => { tileset.id = res.cnName; tileset.layerId = res.id; + tileset.pubid = res.pubid; that.getArgsTileset(tileset, res); }); } @@ -825,7 +911,6 @@ this.app.tileset = this.createTileset(res); var that = this; Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { - that.setModleLocatin() Viewer.flyTo(ts); }); @@ -842,7 +927,26 @@ } } }, + getModeKeyId() { + window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); + window.ModeKeyIdHandler.setInputAction((event) => { + + 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) { + + this.setModeLayerID(pickedFeature); + } + } + } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + }, + async resave() { + if (!this.modelForm.modelid) { + return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); + } this.$store.state.previewLayer.json = JSON.stringify(this.modelForm); const data = await publish_update(this.$store.state.previewLayer); @@ -980,15 +1084,37 @@ if (this.modelType.indexOf(type) != -1) { this.setEditModelLayer(res) } + + }, + setModeLayerID(res) { + + var value = res.getPropertyNames(); + var std = []; + for (var i in value) { + std.push({ + value: value[i], + label: value[i] + }) + } + this.optionKey = std; + this.modelLayerId = this.optionKey[0].label; + this.modelKeyFlag = true; + }, + setSureKeyModelKey() { + this.modelKeyFlag = false; + this.modelForm.modelid = this.modelLayerId + window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //绉婚櫎浜嬩欢 }, getTilesetArgs() { this.app.isBusy = true; var cm = this.app.tileset._root.transform; var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); var carto = Cesium.Cartographic.fromCartesian(cartesian); - this.modelForm.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); - this.modelForm.lat = Cesium.Math.toDegrees(carto.latitude).toFixed(7); - this.modelForm.height = carto.height.toFixed(3); + if (carto) { + this.modelForm.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); + this.modelForm.lat = Cesium.Math.toDegrees(carto.latitude).toFixed(7); + this.modelForm.height = carto.height.toFixed(3); + } this.app.isBusy = false; }, @@ -1011,15 +1137,18 @@ this.treeData = res; this.modelLayer = true; var that = this; + var pickedFeature, pickedColor; 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); + if (pickedColor) { pickedFeature && (pickedFeature.color = pickedColor); } + + pickedFeature = sgworld.Viewer.scene.pick(event.position); + if (Cesium.defined(pickedFeature)) { + if (pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { + if (pickedFeature && pickedFeature.getProperty) { + pickedColor = pickedFeature.color + pickedFeature.color = Cesium.Color.RED.withAlpha(0.3); + that.setShowModelInfo(pickedFeature); } } @@ -1076,11 +1205,25 @@ margin: 10px; max-height: 600px; overflow: auto; + .modelBox { + width: 100%; + min-height: 24px; + } } .pdfClass { height: 70vh; width: 100%; position: relative; } + .el-icon-sunrise { + background: url("../assets/img/synthesis/images/3鐧藉簳_157.png") center + center no-repeat; + background-size: 24px; + } + + .el-icon-sunrise:before { + content: "11"; + visibility: hidden; + } } </style> \ No newline at end of file -- Gitblit v1.9.3