From 865fe880b2ee89fd7ac358fa48da5e9510864aa6 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 16 三月 2023 15:30:43 +0800 Subject: [PATCH] 拾取效果修改,地下模型效果优化 --- src/assets/js/drag.js | 28 ++++ src/api/api.js | 6 + src/views/Tools/undergroundModel.vue | 139 +++++++++++++++++++++++ src/main.js | 2 src/views/Synthesis/LeftMenu.vue | 138 +++++++++++++--------- src/components/mapsdk.vue | 1 6 files changed, 257 insertions(+), 57 deletions(-) diff --git a/src/api/api.js b/src/api/api.js index 5f92795..a674e1a 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -1069,6 +1069,12 @@ return request.get('/dataQuery/selectByGid', { params: params }); } +//鏁版嵁鏌ヨ=>鏍规嵁瀹炰綋鍚嶆煡璇㈣〃鍚� +export function dataQuery_selectTabByEntity(params) { + return request.get('/dataQuery/selectTabByEntity', { params: params }); +} + + diff --git a/src/assets/js/drag.js b/src/assets/js/drag.js new file mode 100644 index 0000000..0e6af59 --- /dev/null +++ b/src/assets/js/drag.js @@ -0,0 +1,28 @@ +import Vue from 'vue'; +//浣跨敤Vue.directive()瀹氫箟涓�涓叏灞�鎸囦护 +//1.鍙傛暟涓�锛氭寚浠ょ殑鍚嶇О锛屽畾涔夋椂鎸囦护鍓嶉潰涓嶉渶瑕佸啓v- +//2.鍙傛暟浜岋細鏄竴涓璞★紝璇ュ璞′腑鏈夌浉鍏崇殑鎿嶄綔鍑芥暟 +//3.鍦ㄨ皟鐢ㄧ殑鏃跺�欏繀椤诲啓v- +const drag = Vue.directive('drag', { + //1.鎸囦护缁戝畾鍒板厓绱犱笂鍥炵珛鍒绘墽琛宐ind鍑芥暟锛屽彧鎵ц涓�娆� + //2.姣忎釜鍑芥暟涓涓�涓弬鏁版案杩滄槸el锛岃〃绀虹粦瀹氭寚浠ょ殑鍏冪礌锛宔l鍙傛暟鏄師鐢焜s瀵硅薄 + //3.閫氳繃el.focus()鏄棤娉曡幏鍙栫劍鐐圭殑锛屽洜涓哄彧鏈夋彃鍏OM鍚庢墠鐢熸晥 + bind: function (el) { }, + //inserted琛ㄧず涓�涓厓绱狅紝鎻掑叆鍒癉OM涓細鎵цinserted鍑芥暟锛屽彧瑙﹀彂涓�娆� + inserted: function (el) { + el.onmousedown = function (e) { + var disx = e.pageX - el.offsetLeft; + var disy = e.pageY - el.offsetTop; + document.onmousemove = function (e) { + el.style.left = e.pageX - disx + 'px'; + el.style.top = e.pageY - disy + 'px'; + } + document.onmouseup = function () { + document.onmousemove = document.onmouseup = null; + } + } + }, + //褰揤Node鏇存柊鐨勬椂鍊欎細鎵цupdated锛屽彲浠ヨЕ鍙戝娆� + updated: function (el) { } +}) +export default drag; \ No newline at end of file diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue index dd9844e..f4d5460 100644 --- a/src/components/mapsdk.vue +++ b/src/components/mapsdk.vue @@ -353,6 +353,7 @@ <div class="propertiesPop" v-if="$store.state.propertiesFlag == '1'" + v-drag > <el-card class="box-card"> <div slot="header"> diff --git a/src/main.js b/src/main.js index cb3e22e..04ba251 100644 --- a/src/main.js +++ b/src/main.js @@ -19,7 +19,7 @@ import VueParticles from 'vue-particles' import dataV from '@jiaminghi/data-view' import directive from '@/directive/index.js' // directive - +import drag from '@/assets/js/drag.js' Vue.use(directive) Vue.use(dataV) Vue.use(VueParticles) diff --git a/src/views/Synthesis/LeftMenu.vue b/src/views/Synthesis/LeftMenu.vue index c0211f6..d0e7a8c 100644 --- a/src/views/Synthesis/LeftMenu.vue +++ b/src/views/Synthesis/LeftMenu.vue @@ -17,6 +17,7 @@ <queryinfo ref="queryinfo" /> <terrainDig ref="terrainDig" /> <modelAttach ref="modelAttach" /> + <undergroundModel ref="undergroundModel" /> <input type="file" accept=".kml" @@ -184,50 +185,6 @@ </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> @@ -241,6 +198,7 @@ import queryinfo from "../Tools/queryinfo.vue"; import terrainDig from "../Tools/terrainDig.vue"; import modelAttach from "../Tools/ModelAttach.vue"; +import undergroundModel from "../Tools/undergroundModel"; import $ from "jquery"; import { getToken } from "@/utils/auth"; import ImageWMS from "ol/source/ImageWMS"; @@ -255,7 +213,11 @@ comprehensive_deletes, comprehensive_selectModelByPageAndCount, comprehensive_insertModel, - comprehensive_updateModel, selectByBuffer + comprehensive_updateModel, selectByBuffer, + dataQuery_selectTabByEntity, + inquiry_selectDomains, + inquiry_selectFields, + dataQuery_selectByGid, } from '../../api/api.js' import { OverviewMap, @@ -268,7 +230,7 @@ import { geometry } from "@turf/turf"; export default { - components: { mapinfo, maplayer, queryinfo, terrainDig, modelAttach }, + components: { mapinfo, maplayer, queryinfo, terrainDig, modelAttach, undergroundModel }, data() { return { showTwoMenuFlag: false, @@ -2202,8 +2164,11 @@ this.$store.state.isNaviget = this.isNaviget; break; case "b9": //鍦颁笅妯″紡 - this.UndergroundMode = !this.UndergroundMode; - window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3); + // this.UndergroundMode = !this.UndergroundMode; + // window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3); + this.$refs && + this.$refs.undergroundModel && + this.$refs.undergroundModel.open("鍦颁笅妯″紡", null,); break; } }, @@ -2368,19 +2333,80 @@ name: tab.replaceAll("_", "") } - this.$refs && - this.$refs.queryinfo && - this.$refs.queryinfo.close("queryinfo"); - this.$store.state.mapPopBoxFlag = "4"; + const res = await dataQuery_selectTabByEntity({ + name: this.$store.state.pickoption.name + }) + if (res.code != 200) { + return; + } + var value = res.result.split('.') + this.$store.state.propertiesName = { + ns: value[0], + enName: value[1], + tabDesc: '鎷惧彇淇℃伅' + } + var name = this.$store.state.pickoption.name; + const data = await inquiry_selectFields({ name: name }) + if (data.code != 200) { + this.$message.error("鍒楄〃璋冪敤澶辫触") + } + const data1 = await inquiry_selectDomains({ name: name }) + if (data1.code != 200) { + this.$message.error("鍒楄〃璋冪敤澶辫触") + } + this.optionx = [] + this.attributeData = [] + var valadata = data.result + var laydomain = data1.result + for (var i in valadata) { + if (valadata[i].showtype == 1) { + if ( + valadata[i].domainNa != null && + valadata[i].domainNa != undefined + ) { + for (var j in laydomain) { + if (laydomain[j].domName == valadata[i].domainNa) { + valadata[i].domainNa = laydomain[j].codeDesc + } + } + } + this.optionx.push(valadata[i]) + this.attributeData.push(valadata[i]) + } + } - this.$refs && - this.$refs.queryinfo && - this.$refs.queryinfo.open("鎷惧彇鍒嗘瀽", null,); + this.getTableData() } + }, + async getTableData() { + this.tableData = [] + const data = await dataQuery_selectByGid(this.$store.state.pickoption) + if (data.code != 200) { + return + } + var valste = data.result + + for (var j in this.optionx) { + if ( + this.optionx[j].domainNa != null && + this.optionx[j].domainNa != undefined + ) { + + valste[this.optionx[j].field] = this.optionx[j].domainNa + } + } + var arr = {} + for (var i = (this.attributeData.length - 1); i >= 0; i--) { + var vla = this.attributeData[i] + arr[vla.alias] = valste[vla.field] + } + arr['eventid'] = valste.eventid + this.$store.state.propertiesInfo = arr; + + this.$store.state.propertiesFlag = '1' }, - showModelAttach() { if (this.$store.state.attachModel) { diff --git a/src/views/Tools/undergroundModel.vue b/src/views/Tools/undergroundModel.vue new file mode 100644 index 0000000..1bed81e --- /dev/null +++ b/src/views/Tools/undergroundModel.vue @@ -0,0 +1,139 @@ +<template> + <Popup + ref="pop" + :title="form.title" + left="calc(100% - 330px)" + > + <div class="undergroundModel"> + <el-form + ref="form" + :model="form" + label-width="100px" + > + <el-form-item class="nolabel-form-item"> + <el-form-item + class="inline-form-item" + label="鍦颁笅妯″紡" + > + <el-switch + v-model="form.open" + @change="openChange" + > </el-switch> + </el-form-item> + <el-form-item + class="inline-form-item" + label="鍦颁笅鏍肩綉" + > + <el-switch + v-model="form.grid" + @change="gridChange" + > </el-switch> + </el-form-item> + </el-form-item> + <el-form-item label="閫忔槑搴�"> + <el-slider + v-model="form.alpha" + :min="0" + :max="100" + @change="alphaChange" + ></el-slider> + </el-form-item> + <el-form-item + label="鏍肩綉娣卞害" + v-if="form.grid" + > + <el-slider + v-model="form.depth" + :min="0" + :max="300" + @change="depthChange" + ></el-slider> + </el-form-item> + </el-form> + </div> + </Popup> +</template> +<script> +import Popup from "./Popup.vue"; +let UndergroundMode; +export default { + name: "undergroundModel", + components: { + Popup, + }, + data() { + return { + form: { + title: "鍦颁笅妯″紡", + open: false, + grid: false, + alpha: 50, + depth: 100, + }, + }; + }, + methods: { + // 鍏抽棴寮圭獥 + close() { + this.$refs.pop.close(); + }, + // 鎵撳紑寮圭獥 + open() { + this.$refs.pop.open(); + }, + // 寮�鍏冲紑鍏� + openChange() { + let value = this.form.alpha / 100; + if (this.form.open == 1) { + // this.$notify({ + // title: "鍦颁笅妯″紡", + // message: "鍦颁笅妯″紡宸插紑鍚�", + // type: "success", + // duration: "3000", + // }); + UndergroundMode = window.sgworld.Analysis.UndergroundMode(true, value); + UndergroundMode.grid = this.form.grid; + UndergroundMode.depth = this.form.depth; + } else { + window.sgworld.Analysis.UndergroundMode(false, value); + UndergroundMode = null; + // this.$notify({ + // title: "鍦颁笅妯″紡", + // message: "鍦颁笅妯″紡宸插叧闂�", + // duration: "3000", + // }); + } + }, + // 寮�鍏冲紑鍏� + gridChange() { + UndergroundMode && (UndergroundMode.grid = this.form.grid); + // if (this.form.grid) { + // this.$notify({ + // title: "鍦颁笅妯″紡", + // message: "寮�鍚湴涓嬫牸缃�", + // type: "success", + // duration: "3000", + // }); + // } else { + // this.$notify({ + // title: "鍦颁笅妯″紡", + // message: "鍏抽棴鍦颁笅鏍肩綉", + // duration: "3000", + // }); + // } + }, + // 婊戝潡鍎垮�艰皟鏁� + alphaChange() { + let value = this.form.alpha / 100; + UndergroundMode && (UndergroundMode.alpha = value); + }, + // 婊戝潡鍎垮�艰皟鏁� + depthChange() { + let value = this.form.depth; + UndergroundMode && (UndergroundMode.depth = value); + }, + }, +}; +</script> +<style lang="less"> +</style> \ No newline at end of file -- Gitblit v1.9.3