From 6fe940335b9ca7f4640983929b070c00e401dc61 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 09 三月 2023 09:48:14 +0800 Subject: [PATCH] 综合展示点击模型显示详细信息 --- src/api/api.js | 29 + src/assets/lang/zh.js | 2 src/views/Archive/index.vue | 9 src/views/Tools/LayerTree.vue | 42 ++ src/store/index.js | 6 src/views/Tools/terrainDig.vue | 30 + src/views/Synthesis/LeftMenu.vue | 494 ++++++++++++++++++++++++++++-- src/views/Tools/ModelAttach.vue | 94 +++++ src/assets/lang/en.js | 2 src/components/mapsdk.vue | 73 +++- src/views/Tools/ModelLayer.vue | 147 +++++++++ src/components/MapView/mapSpacePop.vue | 3 12 files changed, 853 insertions(+), 78 deletions(-) diff --git a/src/api/api.js b/src/api/api.js index 11d50d2..8570a59 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -1029,3 +1029,32 @@ return request.get('/perms/selectLayers', { params: params }); } + +//缁煎悎灞曠ず=>鍒嗛〉鏌ヨ妯″瀷骞惰繑鍥炶褰曟暟 +export function comprehensive_selectModelByPageAndCount(params) { + return request.get('/comprehensive/selectModelByPageAndCount', { params: params }); +} +//缁煎悎灞曠ず=>鏍规嵁Guid鏌ヨ妯″瀷 +export function comprehensive_selectModelByGuid(params) { + return request.get('/comprehensive/selectModelByGuid', { params: params }); +} + + +//缁煎悎灞曠ず=>鏍规嵁Guid鏌ヨ妯″瀷 +export function comprehensive_selectFiles(params) { + return request.get('/comprehensive/selectFiles', { params: params }); +} + + +//缁煎悎灞曠ず=>鏍规嵁Guid鏌ヨ妯″瀷 +export function comprehensive_deletes(params) { + return request.get('/comprehensive/deletes', { params: params }); +} +//缁煎悎灞曠ず=>鎻掑叆涓�涓ā鍨� +export function comprehensive_insertModel(params) { + return request.post('/comprehensive/insertModel', params); +} + + + + diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js index af1fa08..ab03399 100644 --- a/src/assets/lang/en.js +++ b/src/assets/lang/en.js @@ -52,6 +52,8 @@ title: 'Title', preview: 'preview', attribute: 'Attribute', + id: "ID", + info: 'Info' }, dataManage: { diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js index aae2e2a..76b35f8 100644 --- a/src/assets/lang/zh.js +++ b/src/assets/lang/zh.js @@ -52,6 +52,8 @@ title: '鏍囬', preview: '棰勮', attribute: '灞炴��', + id: "ID", + info: '淇℃伅' }, dataManage: { dataManage: '鏁版嵁绠$悊', diff --git a/src/components/MapView/mapSpacePop.vue b/src/components/MapView/mapSpacePop.vue index fc5f70a..0d9ab37 100644 --- a/src/components/MapView/mapSpacePop.vue +++ b/src/components/MapView/mapSpacePop.vue @@ -284,6 +284,9 @@ //鍒濆鍖栨煡璇㈡潯浠� showSpacePopLayer() { let val_date = this.optionx[0] + if (val_date == null || val_date == undefined) { + return + } this.formInline.name = val_date.field this.options = [] var std = [] diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue index 14c3520..0cc288b 100644 --- a/src/components/mapsdk.vue +++ b/src/components/mapsdk.vue @@ -351,7 +351,7 @@ > <el-card class="box-card"> <div slot="header"> - <span>{{$store.state.propertiesName.tabDesc || '灞炴�т俊鎭�'}}</span> + <span>灞炴�т俊鎭�</span> <div style="float: right; cursor: pointer"> <el-link type="primary" @@ -404,6 +404,7 @@ </el-card> </div> + <!--闄勪欢鍒楄〃寮圭獥--> <el-dialog title="闄勪欢鍒楄〃" @@ -622,8 +623,37 @@ this.$bus.$on('changemapType', (e) => { this.show2DMap = e; }); + //妯″瀷鎹曟崏 + this.catchmodel() }, methods: { + + catchmodel() { + var that = this; + window.pickedFeature; + window.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); + + this.$store.state.catModel = true; + this.$store.state.catModelInfo = { + id: pickedFeature.getProperty("id"), + name: pickedFeature.getProperty("name"), + layerId: pickedFeature.primitive.layerId, + layerName: pickedFeature.primitive.id + }; + } + } + } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + }, drawTerrainLevel() { this.clearTerrainLevel() var deep = parseFloat(this.terrainFrom.height) @@ -680,13 +710,13 @@ url: gaoDeBaseUrl[1].url, }) ); - this.layer3 = Viewer.imageryLayers.addImageryProvider( - new Cesium.UrlTemplateImageryProvider({ - url: gaoDeBaseUrl[2].url, - }) - ); + // this.layer3 = Viewer.imageryLayers.addImageryProvider( + // new Cesium.UrlTemplateImageryProvider({ + // url: gaoDeBaseUrl[2].url, + // }) + // ); - window.ImageLayer3 = this.layer3; + // window.ImageLayer3 = this.layer3; // for (var i in gaoDeBaseUrl) { // sgworld.Creator.createUrlTemplateImageryProvider( @@ -755,18 +785,18 @@ }, setLayerVisible() { if (this.isActive == true) { - // Viewer.imageryLayers._layers[1].show = true - // Viewer.imageryLayers._layers[2].show = false + Viewer.imageryLayers._layers[1].show = true + Viewer.imageryLayers._layers[2].show = false // Viewer.imageryLayers._layers[3].show = false - Viewer.imageryLayers.lower(this.layer2); - Viewer.imageryLayers.lower(this.layer3); + // Viewer.imageryLayers.lower(this.layer2); + // Viewer.imageryLayers.lower(this.layer3); } else { - Viewer.imageryLayers.raise(this.layer3); - Viewer.imageryLayers.raise(this.layer2); + // Viewer.imageryLayers.raise(this.layer3); + // Viewer.imageryLayers.raise(this.layer2); - // Viewer.imageryLayers._layers[1].show = false - // Viewer.imageryLayers._layers[2].show = true + Viewer.imageryLayers._layers[1].show = false + Viewer.imageryLayers._layers[2].show = true // Viewer.imageryLayers._layers[3].show = true } }, @@ -1200,8 +1230,12 @@ }, //鑾峰彇闄勪欢鍒楄〃 async getAttatchList() { + if (this.$store.state.propertiesName == null) { + return + } let tabName = this.$store.state.propertiesName.ns + '.' + this.$store.state.propertiesName.tab; let eventid = this.$store.state.propertiesInfo.eventid; + var obj = { eventid: eventid, tabName: tabName, @@ -1332,6 +1366,7 @@ padding: 10px 20px; } } + .terrainLevelBox { width: 350px; height: 370px; @@ -1339,14 +1374,6 @@ position: absolute; right: 8%; bottom: -11%; - } - .pathAnalysisBox { - width: 412px; - - z-index: 40; - position: absolute; - right: 8%; - bottom: 1%; } .box-card { diff --git a/src/store/index.js b/src/store/index.js index 13ef0d6..689fe65 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -62,7 +62,11 @@ checkedKeys: [], queryInfo: [], Map3: [], - histogramLayer: [] + histogramLayer: [], + attachModel: false, + attachinfo: null, + catModel: false, + catModelInfo: null, }, mutations: { //鑾峰彇鏉冮檺鍚堥泦 diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue index 92acf83..9516da4 100644 --- a/src/views/Archive/index.vue +++ b/src/views/Archive/index.vue @@ -200,7 +200,8 @@ <span v-show="formInline.dataType !='type2'">{{item.tabDesc}}</span> <div style="float: right; padding: 3px 0"> <i - v-show="!showView(item.type) && formInline.dataType=='type2'" + v-show=" formInline.dataType=='type2'" + v-if="showView(item.type) " class="el-icon-view" :title="$t('common.preview')" @click="setAttatchFileView(index, item)" @@ -1334,7 +1335,11 @@ }, showView(name) { if (!name) return false - return name.indexOf('pdf') || name.indexOf('jpg') != -1 || name.indexOf('gif') != -1 || name.indexOf('png') != -1 || name.indexOf('jpeg') != -1 + if (name.indexOf('pdf') || name.indexOf('jpg') != -1 || name.indexOf('gif') != -1 || name.indexOf('png') != -1 || name.indexOf('jpeg') != -1) { + return true + } else { + return false + } }, //闄勪欢鍒櫎 async setAttachDel() { diff --git a/src/views/Synthesis/LeftMenu.vue b/src/views/Synthesis/LeftMenu.vue index 50c31de..648cb1e 100644 --- a/src/views/Synthesis/LeftMenu.vue +++ b/src/views/Synthesis/LeftMenu.vue @@ -16,6 +16,7 @@ <maplayer ref="maplayer" /> <queryinfo ref="queryinfo" /> <terrainDig ref="terrainDig" /> + <modelAttach ref="modelAttach" /> <input type="file" accept=".kml" @@ -32,6 +33,197 @@ multiple="multiple" @change="handleOpenShp()" /> + + <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="棰勮" + :append-to-body="false" + :visible.sync="dialog.dialogVisible" + width="70%" + :modal="false" + :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" + > + <img + style="width:100%; height:100%" + :src="dialog.src" + alt="" + /> + </div> + </el-dialog> + <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-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-input v-model="formInline.type"></el-input> + </el-form-item> + <!-- <el-form-item :label="$t('common.info')"> + <el-input v-model="formInline.info"></el-input> + </el-form-item> + <el-form-item label="URL"> + <el-input v-model="formInline.url"></el-input> + </el-form-item> + <el-form-item label="Icon"> + <el-input v-model="formInline.icon"></el-input> + </el-form-item> --> + <el-form-item :label="$t('common.bak')"> + <el-input v-model="formInline.bak"></el-input> + </el-form-item> + <el-form-item> + <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> + </el-form-item> + </el-form-item> + </el-form> + + </el-tab-pane> + <el-tab-pane + label="闄勪欢" + name="second" + > + <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" + > + <template slot-scope="scope"> + <el-link + v-if="matchState(scope, /[]/)" + @click="setAttatchDetail(scope.$index, scope.row)" + class="elLink" + >{{ $t('common.see') }}</el-link> + + </template> + </el-table-column> + </el-table> + + </el-tab-pane> + + </el-tabs> + <!-- <el-form :model="formInline"> + <el-form-item> + <el-row :gutter="20"> + <el-col :span="20"> + <el-input + size="small" + disabled + v-model="formInline.file" + ></el-input> + + <input + name="file1" + type="file" + id="insertFile" + multiple="multiple" + style="display: none" + @change="insertFile( )" + /> + </el-col> + <el-col :span="4"> + <el-link + @click="getInsertFile( )" + :underline="false" + icon="el-icon-folder" + > </el-link> + </el-col> + </el-row> + </el-form-item> + <el-form-item> + <el-button + @click="setAttachInsert" + size="mini" + type="primary" + plain + >娣诲姞</el-button> + <el-button + type="danger" + plain + size="mini" + @click="setAttachDel" + >鍒犻櫎</el-button> + </el-form-item> + </el-form> --> + <!-- @selection-change="handleAttatchChange" --> + + </div> + </el-dialog> </div> </template> @@ -41,6 +233,7 @@ import maplayer from "../Tools/maplayer.vue"; import queryinfo from "../Tools/queryinfo.vue"; import terrainDig from "../Tools/terrainDig.vue"; +import modelAttach from "../Tools/ModelAttach.vue"; import $ from "jquery"; import { getToken } from "@/utils/auth"; import ImageWMS from "ol/source/ImageWMS"; @@ -48,7 +241,14 @@ import GeoJSON from "ol/format/GeoJSON.js"; import { Vector as VectorSource } from "ol/source"; import { Vector as VectorLayer } from "ol/layer"; -import { perms_selectLayers } from '../../api/api.js' +import { + perms_selectLayers, + comprehensive_selectModelByGuid, + comprehensive_selectFiles, + comprehensive_deletes, + comprehensive_selectModelByPageAndCount, + comprehensive_insertModel +} from "../../api/api.js"; import { OverviewMap, defaults as defaultControls, @@ -60,7 +260,7 @@ import { geometry } from "@turf/turf"; export default { - components: { mapinfo, maplayer, queryinfo, terrainDig }, + components: { mapinfo, maplayer, queryinfo, terrainDig, modelAttach }, data() { return { showTwoMenuFlag: false, @@ -424,6 +624,25 @@ isRouter: false, //璺緞鍒嗘瀽 isPiple: false, //绠¢亾鍒嗘瀽 DXZPState: null, //鍦板舰鏁村钩 + dialogVisible: false, + formInline: { + title: '', + file: '', + name: '', + type: '', + info: '', + icon: '', + bak: '' + }, + tableData: [], + dialog: { + dialogVisible: false, + isPdf: false, + isJpg: false, + src: '' + }, + activeName: "first", + isShowModel: false, }; }, methods: { @@ -440,7 +659,7 @@ } if (this.isMenuFlag != val) { - if (res.id != 'b9') { + if (res.id != "b9") { this.$store.state.mapMenuBoolean = false; this.$store.state.mapMenuBoxFlag = null; this.$store.state.mapPopBoolean = false; @@ -463,7 +682,6 @@ this.$store.state.primitLayer = null; } } - } this.showTwoMenuFlag = res.id; @@ -1179,7 +1397,7 @@ var val = { name: "Lengend", id: res, - vshow: that.isslopeFlag + vshow: that.isslopeFlag, }; this.$bus.$emit("mapChangeBox", val); window.PDelevationTool = new SmartEarth.ElevationTool(sgworld); //鍏ㄥ眬鍙橀噺 @@ -1193,20 +1411,19 @@ break; case "d3": //璺緞鍒嗘瀽 - this.isRouter = !this.isRouter; let value; if (this.isRouter) { value = { name: "Analysis", id: 3, - show: true + show: true, }; } else { value = { name: "Analysis", id: 3, - show: false + show: false, }; } this.$bus.$emit("mapChangeBox", value); @@ -1266,7 +1483,7 @@ var that = this; window.model = sgworld.Creator.create3DTilesets( "", - modelUrl + '/tileset/m/SN/tileset.json', + modelUrl + "/tileset/m/SN/tileset.json", {}, {}, "0", @@ -1288,7 +1505,9 @@ close: () => { if (this.$store.state.pipelineEntity.length != 0) { for (var i in this.$store.state.pipelineEntity) { - sgworld.Viewer.entities.remove(this.$store.state.pipelineEntity[i]); + sgworld.Viewer.entities.remove( + this.$store.state.pipelineEntity[i] + ); } } }, @@ -1347,27 +1566,27 @@ break; case "d11": //鍦板舰寮�鎸� - this.$refs && - this.$refs.terrainDig && - this.$refs.terrainDig.open("绠¢亾绌洪棿鍒嗘瀽", null, { - close: () => { + // this.$refs && + // this.$refs.terrainDig && + // this.$refs.terrainDig.open("绠¢亾绌洪棿鍒嗘瀽", null, { + // close: () => { - }, - }); - // if (window.Excavation) { - // window.Excavation.drawHandler && - // window.Excavation.drawHandler.destroy(); - // Viewer._container.style.cursor = "default"; - // window.Excavation.tooltip && window.Excavation.tooltip.show(false); - // window.Excavation.clear(); - // window.Excavation = null; - // } else { - // window.Excavation = sgworld.Analysis.TerrainExcavation( - // 10, - // {}, - // function () { } - // ); - // } + // }, + // }); + if (window.Excavation) { + window.Excavation.drawHandler && + window.Excavation.drawHandler.destroy(); + Viewer._container.style.cursor = "default"; + window.Excavation.tooltip && window.Excavation.tooltip.show(false); + window.Excavation.clear(); + window.Excavation = null; + } else { + window.Excavation = sgworld.Analysis.TerrainExcavation( + 10, + {}, + function () { } + ); + } break; case "d12": //閫氳鍒嗘瀽 @@ -1505,9 +1724,7 @@ ); }, setWander(res) { - ; switch (res) { - case "c1": if (window.PointMY != null) { window.PointMY.drawHandler && window.PointMY.drawHandler.destroy(); @@ -1677,7 +1894,7 @@ } this.$store.state.treeData = res; // this.$refs.tree.setCheckedKeys(checkKey); - this.$store.state.checkedKeys = checkKey + this.$store.state.checkedKeys = checkKey; }, setTreeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 @@ -1768,7 +1985,6 @@ }); window.map.addLayer(vectorLayer); } else if (res.serveType == "Tileset") { - var tileset = Viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ name: res.cnName, @@ -1782,9 +1998,196 @@ tileset.readyPromise.then(function (tileset) { tileset.id = res.cnName; + tileset.layerId = res.id; Viewer.flyTo(tileset); }); } + }, + showModelAttach() { + if (this.$store.state.attachModel) { + var name = this.$store.state.attachinfo.cnName; + this.$refs && + this.$refs.modelAttach && + this.$refs.modelAttach.open(name, null, { + close: () => { }, + }); + } else { + } + }, + async showModelCatch() { + if (this.$store.state.catModel) { + + this.startModelData(); + this.formInline.title = this.$store.state.catModelInfo.name; + + this.formInline.Id = this.$store.state.catModelInfo.id; + this.formInline.LayerName = this.$store.state.catModelInfo.layerName; + + this.activeName = "first" + this.getAttacthFlieList(); + this.dialogVisible = true; + } else { + this.dialogVisible = false; + window.pickedFeature.color = window.pickedColor; + } + }, + async startModelData() { + var obj = { + layerid: this.$store.state.catModelInfo.layerId, + pageIndex: 1, + pageSize: 10, + } + const data = await comprehensive_selectModelByPageAndCount(obj); + if (data.code != 200) { + return; + } + if (data.count == 0) { + this.isShowModel = true; + this.formInline.name = this.formInline.title; + } else { + this.formInline = data.result; + + this.isShowModel = false; + } + }, + async InsertData() { + const data = await comprehensive_insertModel(this.formInline) + debugger + this.startModelData(); + + }, + handleClose() { + this.$store.state.catModel = false; + }, + + //闄勪欢鍒楄〃鏂板 + setAttachInsert() { + var token = getToken(); + var fs = document.getElementById("insertFile"); + if (fs.files.length == 0) { + + this.$message({ + message: '璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢锛�', + type: 'warning' + }); + return; + } + const formData = new FormData() + for (var i = 0, c = fs.files.length; i < c; i++) { + + formData.append('file', fs.files[i]); // fs.files[i].name,file + } + + $.ajax(BASE_URL + "/comprehensive/uploadFiles?token=" + token + "&tabName=lf.sys_style&eventid=" + this.$store.state.catModelInfo.id, { + type: "post", + data: formData, + async: true, + cache: false, + processData: false, + contentType: false, + success: (rs) => { + this.$message({ + message: '闄勪欢娣诲姞鎴愬姛', + type: 'success' + }); + document.getElementById("insertFile").value = ""; + this.formInline.file = ""; + this.getAttacthFlieList(); + }, + error: (e) => { + document.getElementById("insertFile").value = ""; + this.formInline.file = ""; + this.$message.error('闄勪欢娣诲姞澶辫触'); + } + }); + }, + //闄勪欢鍒楄〃鏌ヨ + async getAttacthFlieList() { + var obj = { + eventid: this.$store.state.catModelInfo.id, + tabName: "lf.sys_style" + }; + const res = await comprehensive_selectFiles(obj); + if (res.code != 200) { + this.$message.error('鍒楄〃璋冪敤澶辫触'); + return + } + this.tableData = res.result; + }, + + + //闄勪欢=>鏂囦欢閫夋嫨 + getInsertFile() { + $('#insertFile').click(); + }, + insertFile() { + var val = document.getElementById('insertFile').files; + if (!val || !val.length) return; + this.formInline.file = val[0].name; + }, + statSizeChange(row, column) { + return this.stateFormatSizes(row.sizes) + }, + stateFormatSizes(res) { + if (res >= 1024) { + const val = parseFloat(res / 1024).toFixed(3); + return val + ' GB'; + } else { + return res + ' MB'; + } + }, + matchState(state = "", reg) { + var row = state.row; + var name = row.name; + if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) { + return true; + } + + return false; + }, + refreshAttatchDetail() { + this.dialog.src = ""; + this.dialog.dialogVisible = false; + this.dialog.isPdf = false; + this.dialog.isJpg = false; + }, + //闄勪欢鏌ョ湅 + setAttatchDetail(index, row) { + this.refreshAttatchDetail() + var name = row.name; + if (name.indexOf('.pdf') != -1) { + this.dialog.dialogVisible = true; + this.dialog.isPdf = true; + var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken(); + this.dialog.src = url + } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) { + this.dialog.dialogVisible = true; + this.dialog.isJpg = true; + var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken(); + this.dialog.src = url + } + }, + handleClick(tab, event) { + if (tab.name == "second") { + this.getAttacthFlieList(); + } + }, + //闄勪欢鍒櫎 + async setAttachDel() { + var std = []; + for (var i in this.attacgSelection) { + std.push(this.attacgSelection[i].id); + } + + const res = await comprehensive_deletes({ ids: std.toString() }); + if (res.code != 200) { + this.$message.error('鏂囦欢鍒犻櫎澶辫触'); + } + this.getAttacthFlieList(); + }, + // 闄勪欢=>琛ㄦ牸閫夋嫨 + handleAttatchChange(val) { + this.attacgSelection = val; }, }, mounted() { @@ -1808,8 +2211,23 @@ this.$store.state.treeData = null; this.$store.state.checkedKeys = []; // this.setCoverage("a1"); - this.layersStart() - + this.layersStart(); + }, + watch: { + Obj(newVal, oldVal) { + this.showModelAttach(); + }, + catch(newVal, oldVal) { + this.showModelCatch(); + }, + }, + computed: { + Obj() { + return this.$store.state.attachModel; + }, + catch() { + return this.$store.state.catModel; + }, }, }; </script> @@ -1857,5 +2275,9 @@ height: 30px; display: inline-block; } + .pdfClass { + height: 63vh; + width: 100%; + } } </style> diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index a57be67..47ba4f6 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -17,6 +17,7 @@ @check-change="handleCheckChange" :default-checked-keys="handleTreeCheck" :expand-on-click-node="false" + :filter-node-method="filterNode" > <span class="slot-t-node" @@ -92,6 +93,13 @@ v-show="shwoHistogram" > <i class="el-icon-tickets"></i> 閽诲瓟鏌辩姸鍥� + </div> + <div + class="edit" + v-show="showModelAttach" + @click="modelAttach()" + > + <i class="el-icon-tickets"></i> 妯″瀷灞炴�� </div> <!-- <div class="edit" @@ -196,6 +204,7 @@ rightClickMenuStyle: {}, handleTreeCheck: [], dialogVisible: false, + showModelAttach: false, addFormServer: { opacity: 100, serveType: "WMS", @@ -225,6 +234,7 @@ }; }, methods: { + //杞瓟鏌辩姸鍥� async histogram() { this.menuVisible = false @@ -247,6 +257,13 @@ }, }); }, + modelAttach() { + this.menuVisible = false; + this.$store.state.attachinfo = this.currentData; + this.$store.state.attachModel = true; + + + }, NodeBlur(Node, data) { if (data.label.length === 0) { this.$message.error("鑿滃崟鍚嶄笉鍙负绌猴紒"); @@ -260,11 +277,7 @@ }); } }, - // 鏌ヨ - filterNode(value, data) { - if (!value) return true; - return data.label.indexOf(value) !== -1; - }, + allowDrop(draggingNode, dropNode, type) { if (dropNode.data.label === "浜岀骇 3-1") { @@ -280,6 +293,12 @@ rightClick(event, object, Node, element) { this.currentData = object; this.currentNode = Node; + this.$store.state.propertiesName = this.currentData; + if (this.currentData.serveType == "Tileset") { + this.showModelAttach = true; + } else { + this.showModelAttach = false; + } if (this.currentData.enName == "s_explorationpoint") { this.shwoHistogram = true; } else { @@ -659,13 +678,10 @@ }) ); - tileset.readyPromise.then((tileset0) => { + tileset.readyPromise.then((tileset) => { tileset.id = res.cnName; - + tileset.layerId = res.id; this.tileSet(tileset, parseFloat(res.elev)) - - - Viewer.flyTo(tileset); }); } @@ -788,6 +804,12 @@ } this.$refs.tree.setCheckedKeys(std); }, + // 鏌ヨ + filterNode(value, data) { + + if (!value) return true; + return data.cnName.indexOf(value) !== -1; + }, }, watch: { filterText(val) { diff --git a/src/views/Tools/ModelAttach.vue b/src/views/Tools/ModelAttach.vue new file mode 100644 index 0000000..159e9b0 --- /dev/null +++ b/src/views/Tools/ModelAttach.vue @@ -0,0 +1,94 @@ +<template> + <div class="InfoPopup"> + <Popup + ref="pop" + v-for="(data, index) in PopupData" + :key="data.id" + :title="data.title || '灞炴��'" + maxHeight="400" + @close="close(data.id)" + left="calc(90% - 800px)" + top="calc(100% - 550px) " + > + + <div> + <div style="width:300px;height:200px;"> + <model-layer-vue></model-layer-vue> + </div> + + </div> + </Popup> + </div> +</template> + +<script> +import ModelLayerVue from './ModelLayer.vue'; +import Popup from './Popup.vue'; + +export default { + name: 'modelAttach', + + components: { + Popup, + ModelLayerVue, + + }, + data() { + return { + // 寮圭獥鏁版嵁 + PopupData: ['modelAttach'], + left: 'calc(100% - 600px)', + top: 'calc(100% - 10px)', + + + }; + }, + computed: {}, + mounted() { + + }, + methods: { + + // 鍏抽棴鎵�鏈� + closeAll() { + this.PopupData.forEach((item) => { + item.close && item.close(); + }); + this.PopupData = []; + }, + // 鍏抽棴寮圭獥 + close(id) { + let index = this.PopupData.findIndex((item) => { + return item.id === id; + }); + this.$store.state.attachModel = false; + }, + // 鎵撳紑寮圭獥 + open(title, value, style = {}) { + this.PopupData.push({ + id: this.createRandomId(), + title, + value, + ...style, + }); + let index = this.PopupData.length - 1; + this.$nextTick(() => { + this.$refs.pop[index].open(); + }); + return this.PopupData[index]; + }, + // 闅忔満id + createRandomId() { + return ( + (Math.random() * 10000000).toString(16).substr(0, 4) + + '-' + + new Date().getTime() + + '-' + + Math.random().toString().substr(2, 5) + ); + }, + }, +}; +</script> + + diff --git a/src/views/Tools/ModelLayer.vue b/src/views/Tools/ModelLayer.vue new file mode 100644 index 0000000..12a6146 --- /dev/null +++ b/src/views/Tools/ModelLayer.vue @@ -0,0 +1,147 @@ +<template> + <div class="modelBox"> + <el-form + label-width="80px" + :model="formLabelAlign" + > + <el-form-item :label="$t('common.name')"> + <el-input v-model="formLabelAlign.name"></el-input> + </el-form-item> + <el-form-item :label="$t('common.type')"> + <el-input v-model="formLabelAlign.type"></el-input> + </el-form-item> + <el-form-item> + <el-button + v-show="isShow" + type="success" + plain + size="small" + @click="InsertData" + >{{$t('common.increase')}}</el-button> + <el-button + v-show="!isShow" + type="info" + plain + size="small" + @click="EditData" + >{{$t('common.update')}}</el-button> + </el-form-item> + </el-form> + <!-- <el-table + :data="tableData" + style="width: 100%" + height="calc(100% - 50px)" + > + </el-table> --> + <!-- <div + class="bottomPage pagination_box" + style="margin-top:10px" + > --> + <!-- <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="listData.pageIndex" + :page-sizes="[10, 20, 50, 100]" + :page-size="listData.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="listData.count" + > + </el-pagination> --> + <!-- </div> --> + + </div> +</template> + +<script> +import { comprehensive_selectModelByPageAndCount, comprehensive_insertModel } from '../../api/api.js' +export default { + data() { + return { + resinfo: null, + tableData: [], + listData: { + pageIndex: 1, + pageSize: 10, + layerid: null, + }, + isShow: false, + formLabelAlign: { + name: '', + type: '' + } + + } + }, + mounted() { + this.startListData(); + this.setModeCatch(); + }, + methods: { + async InsertData() { + var obj = { + modelid: this.resinfo.id, + name: this.formLabelAlign.name, + type: this.formLabelAlign.type + } + const data = await comprehensive_insertModel(obj) + this.startModelData(); + + }, + EditData() { + + }, + //妯″瀷鎹曟崏 + setModeCatch() { + var that = this; + + }, + //鍒嗛〉鍒囨崲 + handleSizeChange(val) { + this.listdata.pageSize = val; + this.listData.pageIndex = 1; + this.startModelData(); + }, + //鍒嗛〉鍒囨崲 + handleCurrentChange(val) { + this.listData.pageIndex = val; + this.startModelData(); + }, + //鍒濆鍖栨煡璇� + startListData() { + this.listData = { + pageIndex: 1, + pageSize: 10, + layerid: null, + }; + + this.resinfo = this.$store.state.attachinfo; + this.startModelData(); + }, + //鏌ヨ妯″瀷灞炴�ф暟鎹� + async startModelData() { + if (this.resinfo) { + this.listData.layerid = this.resinfo.id; + + const data = await comprehensive_selectModelByPageAndCount(this.listData) + if (data.code != 200) { + return; + } + if (data.count == 0) { + this.isShow = true; + } else { + this.isShow = false; + } + + } + }, + }, + +} +</script> + +<style lang="less" scoped> +.modelBox { + width: 100%; + height: 100%; +} +</style> \ No newline at end of file diff --git a/src/views/Tools/terrainDig.vue b/src/views/Tools/terrainDig.vue index 52bcb45..44c0ecd 100644 --- a/src/views/Tools/terrainDig.vue +++ b/src/views/Tools/terrainDig.vue @@ -1,7 +1,15 @@ <template> - <Popup ref="pop" :title="form.title" left="calc(100% - 330px)"> + <Popup + ref="pop" + :title="form.title" + left="calc(100% - 330px)" + > <div class="terrainDig"> - <el-form ref="form" :model="form" label-width="100px"> + <el-form + ref="form" + :model="form" + label-width="100px" + > <el-form-item label="娣卞害(绫�):"> <el-input-number v-model="form.depth" @@ -14,7 +22,11 @@ <el-switch v-model="form.showWall"></el-switch> </el-form-item> --> <el-form-item> - <el-button type="primary" size="mini" @click="dig">缁樺埗</el-button> + <el-button + type="primary" + size="mini" + @click="dig" + >缁樺埗</el-button> <!-- <el-upload class="button-group" action="" @@ -50,11 +62,14 @@ }; }, computed: {}, - mounted() {}, + mounted() { }, methods: { // 鍏抽棴寮圭獥 close() { this.$refs.pop.close(); + if (window.Excavation) { + window.Excavation.drawHandler.destroy(); + } }, // 鎵撳紑寮圭獥 open() { @@ -68,6 +83,9 @@ }, // 鍦板舰寮�鎸� dig() { + // if (window.Excavation) { + // window.Excavation.drawHandler.destroy(); + // } window.Excavation = sgworld.Analysis.TerrainExcavation( this.form.depth, { @@ -95,11 +113,11 @@ ) { degreesArr.splice(length - 3, 3); } - Excavation = sgworld.Analysis.TerrainExcavation(this.form.depth, { + window.Excavation = sgworld.Analysis.TerrainExcavation(this.form.depth, { positions: degreesArr, showWall: this.form.showWall, }); - this.addToTree(Excavation, degreesArr); + // this.addToTree(Excavation, degreesArr); }); this.$message('寮�鎸栧尯鍩熷凡瀵煎叆'); }; -- Gitblit v1.9.3