From c2a6c53657baaf0830cd881e1a23a15af23ac6fa Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 21 九月 2023 18:35:14 +0800 Subject: [PATCH] 代码更新 --- src/components/MapView/mapMenuPop.vue | 1009 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 880 insertions(+), 129 deletions(-) diff --git a/src/components/MapView/mapMenuPop.vue b/src/components/MapView/mapMenuPop.vue index 4bfd496..0afb133 100644 --- a/src/components/MapView/mapMenuPop.vue +++ b/src/components/MapView/mapMenuPop.vue @@ -1,70 +1,208 @@ <template> <div class="menuPop"> <div class="leftBox"> + <!-- v-if="$store.state.download" --> + <div class="leftDown"> + <div @click="getDownloadDep"> + <el-link icon="el-icon-download"> </el-link> + </div> + </div> <ul> <li v-for="(item, index) in option" @click="setTableChange(item)" class="leftBoxLi" > - {{ item.tabDesc }} + {{ item.label }} </li> </ul> </div> <div class="rightBox"> - <div class="rightTitle"> - <span>绠¢亾</span> - <el-link :underline="false" class="boxClose" - ><i class="el-icon-close"></i> - </el-link> + <div class="tableBox"> + <el-table + :data="tableData" + ref="dialogPayChannel" + height="100%" + style="width: 100%" + border + > + <el-table-column + align="center" + type="index" + label="搴忓彿" + width="50" + /> + <el-table-column + label="瀹氫綅" + width="100" + align="center" + > + <template slot-scope="scope"> + <el-button + icon="el-icon-map-location" + size="small" + @click="spaceLocation(scope.$index, scope.row)" + ></el-button> + </template> + </el-table-column> + <el-table-column + v-for="(item, index) in attributeData" + :key="index" + :label="item.alias" + :prop="item.field" + show-overflow-tooltip + align="center" + ></el-table-column> + </el-table> </div> - <el-table :data="tableData" height="220"> - <el-table-column align="center" type="index" label="搴忓彿" width="50" /> - <el-table-column label="瀹氫綅" width="100" align="center"> - <template slot-scope="scope"> - <el-button - icon="el-icon-map-location" - size="mini" - @click="spaceLocation(scope.$index, scope.row)" - ></el-button> - </template> - </el-table-column> - <el-table-column - v-for="(item, index) in attributeData" - :key="index" - :label="item.alias" - :prop="item.field" - show-overflow-tooltip - align="center" - ></el-table-column> - </el-table> - <div class="rightPage"> - <!-- <el-pagination + <div + class="pagination_box" + style="margin-top: 10px" + > + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="listPage.pageIndex" - :page-sizes="[10, 20, 30, 40]" - :page-size="listPage.pageSize" + :current-page="listdata.pageIndex" + :page-sizes="[10, 20, 50, 100]" + :page-size="listdata.pageSize" layout="total, sizes, prev, pager, next, jumper" - :total="listPage.pageCount" + :total="pageCount" > - </el-pagination> --> + </el-pagination> </div> </div> + <el-dialog + :title="$t('common.passworld')" + :visible.sync="dialogVisible" + width="30%" + top="35vh" + :modal="false" + :before-close="handleCloseDown" + > + <el-form + :model="codeForm" + :rules="rules" + ref="codeForm" + label-width="100px" + class="codeForm" + > + <el-form-item + :label="$t('common.passworld')" + prop="password" + > + <el-input + type="password" + v-model="codeForm.password" + show-password + ></el-input> + </el-form-item> + <el-form-item + :label="$t('common.SPassword')" + prop="repassword" + > + <el-input + type="password" + v-model="codeForm.repassword" + show-password + ></el-input> + </el-form-item> + <el-form-item> + <el-button + class="primary" + size="small" + @click="download('codeForm')" + >{{ $t("common.confirm") }}</el-button> + <el-button + type="info" + size="small" + @click="closeDown('codeForm')" + >{{ + $t("common.cancel") + }}</el-button> + </el-form-item> + </el-form> + </el-dialog> + + <iframe + id="Iframe1" + src="" + style="display: none; border: 0; padding: 0; height: 0; width: 0" + ></iframe> </div> </template> <script> import { - dataQuerySelectByPage, + dataQuery_selectByPage, inquiry_selectDomains, inquiry_selectFields, dataQuerySelectWktById, + sign_getPublicKey, + dataLib_selectDownloadFile, + dataQuery_selectDbOverflowDep, + apply_insertApply, decr, -} from '../../api/api.js'; + encr, + dataLib_selectDepsByIds, + dataLib_selectDbOverflowDep +} from "../../api/api.js" +import { getToken } from "@/utils/auth" +import $ from "jquery" +import { View } from "ol" export default { data() { + var repasswordValidator = (rule, value, callback) => { + if (value === "") { + callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�")) + } else if (value !== this.codeForm.password) { + callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!")) + } else { + callback() + } + } + var passwordValidator = (rule, value, callback) => { + var passwordreg = + /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/ + if (!passwordreg.test(value)) { + callback(new Error("瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�13-20浣�")) + } else { + callback() + } + } return { + ruleForm: { + depname: [], + tabs: [], + pwd: null, + repwd: null, + wkt: null, + descr: null, + }, + dialogVisible: false, + dialogInsertVisible: false, + insertFlag: null, + codeForm: { + password: "", + repassword: "", + }, + rules: { + password: [ + { required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" }, + { validator: passwordValidator, trigger: "blur" }, + ], + repassword: [ + { required: true, message: "璇疯緭鍏ョ‘璁ゅ瘑鐮�", trigger: "blur" }, + { validator: repasswordValidator, trigger: "blur" }, + ], + }, + insertOption: { + ids: [], + pwd: null, + tabs: [], + entity: [], + wkt: null, + descr: null, + }, listPage: { pageSize: 10, pageIndex: 1, @@ -81,42 +219,349 @@ wkt: null, filter: null, }, + pageCount: 0, querylayer: null, queryTable: [], domainsLayer: [], optionx: [], imagePoint: null, - }; + Layerprimit: null, + insertOption: null, + isflag: true, + } }, methods: { + getInsertDown(res) { + + // this.dialogInsertVisible = false + // this.dialogVisible = true + if (this.isflag) { + this.codeForm = res; + this.download1(); + this.isflag = false + } + + }, + handleInsertClose() { + this.$confirm("纭鍏抽棴锛�") + .then(_ => { + this.closeInsertDown() + }) + .catch(_ => { }) + }, + closeInsertDown() { + this.ruleForm = { + depname: [], + tabs: [], + pwd: null, + repwd: null, + wkt: null, + descr: null, + } + this.dialogInsertVisible = false + }, + async getDownloadDep() { + this.$bus.$emit("setDialogInsertVisible", true) + + // var std = [] + // for (var i in this.option) { + // std.push(this.option[i].entity) + // } + // var obj = { + // entities: std, + // wkt: this.listdata.wkt, + // } + // const data = await dataQuery_selectDbOverflowDep(JSON.stringify(obj)) + // if (data.code != 200) { + // this.$message.error("鏁版嵁璇锋眰澶辫触") + // return + // } + + // if (data.result.length == 0 || data.result == null) { + // this.insertFlag = 1 + // // this.dialogVisible = true + // + // } else { + // this.insertFlag = 2 + // var std = [] + // this.insertOption.ids = data.result + // var val = "" + // for (var i in data.result) { + // if (val == "") { + // val += "codes=" + data.result[i] + // } else { + // val += "&codes=" + data.result[i] + // } + + // std.push({ + // name: data.result[i], + // }) + // } + // const data1 = await dataLib_selectDepsByIds(val) + + // this.ruleForm.depid = data1.result + // this.ruleForm.depname = std + // this.ruleForm.wkt = decr(this.listdata.wkt) + // this.ruleForm.tabs = this.option + // // this.dialogInsertVisible = true + // this.$bus.$emit("setDialogInsertVisible", this.ruleForm) + // } + }, + async signGetPublicKey() { + const res = await sign_getPublicKey() + if (res && res.code == 200) { + window.encrypt = new JSEncrypt() + encrypt.setPublicKey(res.result) + } + }, + async download1() { + if (this.codeForm.password == "") return + + var entities = []; + for (var i in this.option) { + entities.push(this.option[i].entity) + } + var obj = { + pwd: encrypt.encrypt(this.codeForm.password), + entities: entities, + wkt: this.listdata.wkt, + filter: null, + ids: null, + depcode: null, + dirs: null + } + const data = await dataLib_selectDbOverflowDep(obj) + if (data.code != 200) { + return + } + + if (data.result.length == 0) { + var that = this; + + $.ajax({ + url: BASE_URL + "/dataLib/downloadDbData?token=" + getToken(), + type: "POST", + data: JSON.stringify(obj), + dataType: 'json', // html銆乯son銆乯sonp銆乻cript銆乼ext + contentType: "application/json", // "application/x-www-form-urlencoded" + success: (data) => { + if (data.code == 200) { + + if (data.result) { + that.selectDownloadFile(data.result, obj.pwd) + } + + } + }, + error: function (e) { + } + }); + } else { + + var val = "" + var std = []; + for (var i in data.result) { + if (val == "") { + val += "codes=" + data.result[i] + } else { + val += "&codes=" + data.result[i] + } + + std.push({ + name: data.result[i], + }) + } + const data1 = await dataLib_selectDepsByIds(val) + this.ruleForm.depid = data1.result + this.ruleForm.depname = std + this.ruleForm.wkt = decr(this.listdata.wkt) + this.ruleForm.tabs = this.option + this.$bus.$emit("setDialogInsertVisible", this.ruleForm) + } + + // if (this.insertFlag == 1) { + + // for (var i in this.option) { + // obj.entities.push(this.option[i].entity) + // } + // var token = getToken() + // var that = this + // $.ajax(BASE_URL + "/dataLib/downloadDbReq?token=" + token, { + // type: "post", + // data: JSON.stringify(obj), + // async: true, + // cache: false, + // processData: false, + // contentType: false, + // success: res => { + // if (res.code != 200) { + // return + // } + + // this.selectDownloadFile(res.result, obj.pwd) + // }, + // }) + // } else if (this.insertFlag == 2) { + // var std = [] + // var std1 = [] + // for (var i in this.option) { + // std.push(this.option[i].tabDesc) + // std1.push(this.option[i].entity) + // } + // var obj = { + // depcodes: this.insertOption.ids, + // pwd: encr(this.codeForm.password), + // tabs: std, + // entities: std1, + // wkt: this.listdata.wkt, + // descr: this.ruleForm.descr, + // } + // const data1 = await apply_insertApply(JSON.stringify(obj)) + + // this.closeDown() + // } + }, + async getInsertApply(res) { + + if (!this.isflag) { + var entities = []; + var tabs = []; + if (this.option.length != res.tabs.length) { + return + } + + for (var i in this.option) { + entities.push(this.option[i].entity) + tabs.push(this.option[i].tabDesc) + } + var std = []; + for (var i in this.ruleForm.depname) { + std.push(this.ruleForm.depname[i].name) + } + var obj = { + pwd: encr(this.codeForm.password), + entities: entities, + wkt: this.listdata.wkt, + filter: null, + ids: null, + depcode: null, + dirs: null, + depcodes: std, + descr: res.descr, + tabs: tabs + } + const data = await apply_insertApply(JSON.stringify(obj)) + if (data.code != 200) { + this.$message.error("鏁版嵁鐢宠澶辫触") + return + } + this.$message({ + message: "鏁版嵁鐢宠鎴愬姛", + type: "success", + }) + this.isflag = true; + } + }, + + + + + async selectDownloadFile(rsid, rspwd) { + var downObj = { + guid: rsid, + pwd: encodeURIComponent(rspwd), + } + const data = await dataLib_selectDownloadFile(downObj) + + if (data.code != 200) { + this.$message.error("涓嬭浇璇锋眰澶辫触") + return + } + + this.closeDown() + var token = getToken() + var url = + BASE_URL + + "/dataLib/downloadFile?token=" + + token + + "&guid=" + + rsid + + "&pwd=" + + encodeURIComponent(rspwd) + $("#Iframe1").attr("src", url).click() + // this.isflag = true; + }, + handleCloseDown() { + this.$confirm("纭鍏抽棴锛�") + .then(_ => { + this.closeDown() + }) + .catch(_ => { }) + }, + closeDown() { + this.dialogVisible = false + this.codeForm.password = "" + this.codeForm.repassword = "" + // this.closeInsertDown() + }, startTableMssage() { - this.listdata.pageIndex = 1; - this.listdata.pageSize = 10; - this.listdata.name = null; - this.option = []; + this.listdata.pageIndex = 1 + this.listdata.pageSize = 10 + this.listdata.name = null + this.option = [] + }, + clearQuerInfo() { + if (this.$store.state.queryInfo.length != 0) { + sgworld.Creator.SimpleGraphic.clear() + for (var i in this.$store.state.queryInfo) { + sgworld.Viewer.entities.remove(this.$store.state.queryInfo[i]) + } + this.$store.state.queryInfo = [] + if (this.$store.state.primitLayer != null) { + sgworld.Viewer.entities.remove(this.$store.state.primitLayer) + sgworld.Creator.DeleteObject(this.$store.state.primitLayer) + this.$store.state.primitLayer = null + } + } }, setTableAll() { - this.startTableMssage(); - this.listdata.wkt = this.$store.state.mapMenuShpFile; - this.querylayer = this.$store.state.mapSpaceQueryLayer; - this.option = this.$store.state.mapSpaceQueryLayer; - this.listdata.name = this.option[0].entity; + this.clearQuerInfo() + this.signGetPublicKey() + this.startTableMssage() + this.listdata.wkt = this.$store.state.mapMenuShpFile + this.querylayer = this.$store.state.mapSpaceQueryLayer + // = this.$store.state.mapSpaceQueryLayer; + var arr = this.$store.state.mapSpaceQueryLayer + var obj = {} + arr = arr.reduce(function (item, next) { + obj[next.label] ? "" : (obj[next.label] = true && item.push(next)) + return item + }, []) + this.option = arr + this.listdata.name = this.option[0].entity - this.getTableDateHidder(); + this.getTableDateHidder() }, async getTableDateHidder() { - const data = await inquiry_selectFields({ name: this.listdata.name }); + this.$store.state.loading = true; + const data = await inquiry_selectFields({ name: this.listdata.name }) if (data.code != 200) { - this.$message.error('鍒楄〃璋冪敤澶辫触'); + this.$message.error("鍒楄〃璋冪敤澶辫触") } - const data1 = await inquiry_selectDomains({ name: this.listdata.name }); + if (data.result.length == 0) { + this.$message("鍒楄〃瀛楁鏌ユ棤鏁版嵁") + } + const data1 = await inquiry_selectDomains({ name: this.listdata.name }) if (data1.code != 200) { - this.$message.error('鍒楄〃璋冪敤澶辫触'); + this.$message.error("鍒楄〃璋冪敤澶辫触") } - this.optionx = []; - this.attributeData = []; - var valadata = data.result; - var laydomain = data1.result; + // if (data.result.length == 0) { + // this.$message("鍒楄〃闃堝�兼煡鏃犳暟鎹�") + // } + this.optionx = [] + this.attributeData = [] + var valadata = data.result + var laydomain = data1.result for (var i in valadata) { if (valadata[i].showtype == 1) { @@ -126,93 +571,412 @@ ) { for (var j in laydomain) { if (laydomain[j].domName == valadata[i].domainNa) { - valadata[i].domainNa = laydomain[j].codeDesc; + valadata[i].domainNa = laydomain[j].codeDesc } } } - this.optionx.push(valadata[i]); - this.attributeData.push(valadata[i]); + this.optionx.push(valadata[i]) + this.attributeData.push(valadata[i]) } } - this.getTableData(); + this.getTableData() }, async spaceLocation(index, row) { var param = { gid: row.gid, name: this.listdata.name, - }; - const data = await dataQuerySelectWktById(param); - if (data.code != 200) { - this.$message.error('鍒楄〃璋冪敤澶辫触'); } - - var val1 = decr(data.result); + const data = await dataQuerySelectWktById(param) + if (data.code != 200) { + this.$message.error("鍒楄〃璋冪敤澶辫触") + } + // if (data.result.length == 0) { + // return this.$message.error("鍒楄〃鏌ユ棤鏁版嵁") + // } + var val1 = decr(data.result) if (val1) { if (this.imagePoint != null) { - sgworld.Creator.DeleteObject(this.imagePoint); - this.imagePoint = null; + sgworld.Creator.DeleteObject(this.imagePoint) + this.imagePoint = null } - var wkt = this.$wkt.parse(val1); - this.setMapLoaction(wkt); + var wkt = this.$wkt.parse(val1) + this.setMapLoaction(wkt, row) } }, - setMapLoaction(res) { - var coord = res.coordinates; - if (res.type == 'Point') { - this.imagePoint = sgworld.Creator.CreateLabel( - { X: coord[0], Y: coord[1], Altitude: 2000 }, - '', - SmartEarthRootUrl + 'Workers/image/mark.png', - { - disableDepthTestDistance: Infinity, - scale: 0.8, - }, - 0, - '宸℃鐐�' - ); - sgworld.Navigate.flyToObj(this.imagePoint.item); + setMapLoaction(res, properties) { + if (this.$store.state.primitLayer != null) { + sgworld.Creator.DeleteObject(this.$store.state.primitLayer) + // this.$store.state.primitLayer = null; + sgworld.Viewer.entities.remove(this.$store.state.primitLayer) + this.$store.state.primitLayer = null } + var coord = res.coordinates + + switch (res.type) { + case "Point": + var val = Cesium.Cartesian3.fromDegrees( + res.coordinates[0], + res.coordinates[1] + ) + var point = Viewer.entities.add({ + properties: properties, + tag: "properties_point", + position: val, + billboard: { + // 鍥惧儚鍦板潃锛孶RI鎴朇anvas鐨勫睘鎬� + image: SmartEarthRootUrl + "Workers/image/mark.png", + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + // 澶у皬鏄惁浠ョ背涓哄崟浣� + sizeInMeters: false, + // 鐩稿浜庡潗鏍囩殑鍨傜洿浣嶇疆 + verticalOrigin: Cesium.VerticalOrigin.CENTER, + // 鐩稿浜庡潗鏍囩殑姘村钩浣嶇疆 + horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + // 搴旂敤浜庡浘鍍忕殑缁熶竴姣斾緥銆傛瘮渚嬪ぇ浜庝細1.0鏀惧ぇ鏍囩锛岃�屾瘮渚嬪皬浜庝細1.0缂╁皬鏍囩銆� + scale: 1.0, + // 鏄惁鏄剧ず + show: true, + }, + }) + point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY + this.$store.state.queryInfo.push(point) + sgworld.Navigate.flyToObj(point) + this.$store.state.primitLayer = point + + break + case "LineString": + case "MultiLineString": + var line = res.coordinates[0] + var std = [] + for (var i in line) { + std.push(line[i][0], line[i][1]) + } + var polyline = Viewer.entities.add({ + properties: properties, + tag: "properties_line", + polyline: { + positions: Cesium.Cartesian3.fromDegreesArray(std), + width: 5, + material: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + clampToGround: true, + }, + }) + this.$store.state.queryInfo.push(polyline) + sgworld.Navigate.flyToObj(polyline) + this.$store.state.primitLayer = polyline + break + case "MultiPolygon": + var val = res.coordinates[0][0] + var std = [] + for (var i in val) { + std.push(val[i][0], val[i][1]) + } + var entity = Viewer.entities.add({ + properties: properties, + tag: "properties_polygon", + polygon: { + hierarchy: Cesium.Cartesian3.fromDegreesArray(std), + //height : 100000, + material: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + outline: true, + outlineColor: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + }, + }) + this.$store.state.queryInfo.push(entity) + sgworld.Navigate.flyToObj(entity) + this.$store.state.primitLayer = entity + break + } + this.setMapHandler() + }, + setMapHandler() { + window.propertieshandler = new Cesium.ScreenSpaceEventHandler( + sgworld.Viewer.scene.canvas + ) + window.propertieshandler.setInputAction(event => { + let pick = sgworld.Viewer.scene.pick(event.position) + if (pick && pick.id && pick.id.tag && pick.id.tag.includes('properties_')) { + this.$store.state.propertiesFlag = "1" + let properties = pick.id.properties + let propertyNames = pick.id.properties.propertyNames + + let obj = {} + obj["eventid"] = properties["_eventid"]._value + // + this.attributeData.forEach(item => { + propertyNames.forEach(itemElement => { + if (itemElement == item.field) { + obj[item.alias] = properties[itemElement]._value + } + }) + }) + + this.$store.state.propertiesInfo = obj + } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, setTableChange(res) { - this.listdata.pageIndex = 1; - this.listdata.pageSize = 10; - this.listdata.name = res.entity; - this.getTableDateHidder(); + this.listdata.pageIndex = 1 + this.listdata.pageSize = 10 + this.listdata.name = res.entity + + this.$store.state.propertiesName = res + this.getTableDateHidder() + }, + handleSizeChange(val) { + this.listdata.pageIndex = 1 + this.listdata.pageSize = val + this.getTableData() + }, + handleCurrentChange(val) { + this.listdata.pageIndex = val + this.getTableData() }, async getTableData() { - this.tableData = []; + this.tableData = [] - const data = await dataQuerySelectByPage(this.listdata); + const data = await dataQuery_selectByPage(this.listdata) + this.$store.state.loading = false; if (data.code != 200) { - this.$message.error('鍒楄〃璋冪敤澶辫触'); + return this.$message.error("鍒楄〃璋冪敤澶辫触") + } + if (data.result.length == 0) { + + return this.$message.error("鍒楄〃鏌ユ棤鏁版嵁") } - var val_Data = data.result; + + var val_Data = data.result for (var i in val_Data) { - var valste = val_Data[i]; + var valste = val_Data[i] 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; + valste[this.optionx[j].field] = this.optionx[j].domainNa } } } - this.tableData = data.result; + this.pageCount = data.count + + + var val = data.result; + val = val.filter((res) => { + + if (res.dirName) { + res.dirid = res.dirName + } + if (res.depName) { + res.depid = res.depName + } + if (res.verName) { + res.verid = res.verName + } + if (res.updateName) { + res.updateuser = res.updateName + } + if (res.createName) { + res.createuser = res.createName + } + + if (res.createtime) { + res.createtime = this.format(res.createtime) + } + if (res.updatetime) { + res.createtime = this.format(res.updatetime) + } + return res + }) + + + + this.tableData = val + this.$refs.dialogPayChannel.doLayout() + // this.showAllImage(data.result) + }, + //鏍煎紡鍖栨椂闂� + 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); + }, + //鏍煎紡鍖栨椂闂� + add0(m) { + return m < 10 ? "0" + m : m; + }, + async showAllImage(res) { + for (var i in res) { + let properties = res[i] + var param = { + gid: res[i].gid, + name: this.listdata.name, + } + const data = await dataQuerySelectWktById(param) + if (data.code != 200) { + this.$message.error("鍒楄〃璋冪敤澶辫触") + } + var val1 = decr(data.result) + if (val1) { + var wkt = this.$wkt.parse(val1) + // this.getprimitiLayer(wkt); + this.primitivesAddLayer(wkt, properties) + } + } + }, + getprimitiLayer(res) { + switch (res.type) { + case "Point": + this.$store.state.primitLayer = window.Viewer.scene.primitives.add( + new Cesium.BillboardCollection() + ) + break + } + }, + primitivesAddLayer(res, properties) { + switch (res.type) { + case "Point": + var val = Cesium.Cartesian3.fromDegrees( + res.coordinates[0], + res.coordinates[1] + ) + var point = Viewer.entities.add({ + position: val, + properties: properties, + tag: "properties_point", + billboard: { + // 鍥惧儚鍦板潃锛孶RI鎴朇anvas鐨勫睘鎬� + image: SmartEarthRootUrl + "Workers/image/mark.png", + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + // 澶у皬鏄惁浠ョ背涓哄崟浣� + sizeInMeters: false, + // 鐩稿浜庡潗鏍囩殑鍨傜洿浣嶇疆 + verticalOrigin: Cesium.VerticalOrigin.CENTER, + // 鐩稿浜庡潗鏍囩殑姘村钩浣嶇疆 + horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + // 搴旂敤浜庡浘鍍忕殑缁熶竴姣斾緥銆傛瘮渚嬪ぇ浜庝細1.0鏀惧ぇ鏍囩锛岃�屾瘮渚嬪皬浜庝細1.0缂╁皬鏍囩銆� + scale: 1.0, + // 鏄惁鏄剧ず + show: true, + }, + }) + point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY + this.$store.state.queryInfo.push(point) + //鐐瑰嚮浜嬩欢 + window.propertieshandler = new Cesium.ScreenSpaceEventHandler( + sgworld.Viewer.scene.canvas + ) + window.propertieshandler.setInputAction(event => { + let pick = sgworld.Viewer.scene.pick(event.position) + // ; + if (pick && pick.id && pick.id.tag == "properties_point") { + this.$store.state.propertiesFlag = "1" + let properties = pick.id.properties + let propertyNames = pick.id.properties.propertyNames + let obj = {} + obj["eventid"] = properties["_eventid"]._value + this.attributeData.forEach(item => { + propertyNames.forEach(itemElement => { + if (itemElement == item.field) { + obj[item.alias] = properties[itemElement]._value + } + }) + }) + this.$store.state.propertiesInfo = obj + } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + break + case "LineString": + case "MultiLineString": + var line = res.coordinates[0] + var std = [] + for (var i in line) { + std.push(line[i][0], line[i][1]) + } + var polyline = Viewer.entities.add({ + polyline: { + properties: properties, + tag: "properties_line", + positions: Cesium.Cartesian3.fromDegreesArray(std), + width: 5, + material: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + clampToGround: true, + }, + }) + this.$store.state.queryInfo.push(polyline) + break + case "MultiPolygon": + var val = res.coordinates[0][0] + var std = [] + for (var i in val) { + std.push(val[i][0], val[i][1]) + } + var entity = Viewer.entities.add({ + properties: properties, + tag: "properties_polygon", + polygon: { + hierarchy: Cesium.Cartesian3.fromDegreesArray(std), + //height : 100000, + material: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + outline: true, + outlineColor: new Cesium.Color(1.0, 0.0, 0.0, 0.3), + }, + }) + this.$store.state.queryInfo.push(entity) + break + } + }, + + closeMenuBox() { + if (this.imagePoint != null) { + sgworld.Creator.DeleteObject(this.imagePoint) + this.imagePoint = null + } + sgworld.Creator.SimpleGraphic.clear() + this.$store.state.mapPopBoolean = false + this.$store.state.mapPopBoxFlag = null }, }, created() { - this.setTableAll(); + + this.setTableAll() + }, mounted() { - this.$bus.$on('changeMapMenuTop', (res) => { - if (res == 'true') { - this.setTableAll(); + + this.$bus.$on("changeMapMenuTop", res => { + if (res == "true") { + this.setTableAll() } - }); + }) + this.$bus.$on("setInsertDown2", res => { + this.getInsertDown(res) + }) + this.$bus.$on("setInsertDown1", res => { + this.isflag = true; + this.getInsertDown(res) + }) + this.$bus.$on("setInsertApply1", res => { + + this.getInsertApply(res) + }) }, -}; + destroyed() { + this.$store.state.propertiesFlag = null + if (window.propertieshandler != null && Cesium.defined(window.propertieshandler)) { + window.propertieshandler.removeInputAction( + Cesium.ScreenSpaceEventType.LEFT_CLICK + ) + window.propertieshandler = null + } + }, +} </script> <style scoped lang="less"> @@ -231,7 +995,6 @@ float: left; border-right: 1px solid gray; li { - color: white; line-height: 20px; border-bottom: 1px solid gray; padding: 5px; @@ -241,6 +1004,12 @@ color: #409eff; background: rgba(128, 128, 128, 0.2); } + .leftDown { + width: 94%; + padding: 3%; + display: flex; + justify-content: flex-end; + } } .rightBox { @@ -249,46 +1018,28 @@ float: left; .rightTitle { padding: 5px; - color: white; + width: 100%; } + .tableBox { + position: relative; + height: 89%; + } .rightPage { - position: absolute; - bottom: 10px; margin-left: 50px; /*涓嶅彲鐐瑰嚮鐨�*/ } + .boxClose { float: right; margin-right: 20px; - color: white; } } } -</style> -<style lang="less"> -/deep/ .el-table, -.el-table__expanded-cell { - background-color: transparent !important; -} -/* 琛ㄦ牸鍐呰儗鏅鑹� */ -/deep/ .el-table th, -.el-table tr, -.el-table td { - background-color: transparent !important; - color: white; -} -/*鏈�澶栧眰閫忔槑*/ -/deep/ .el-table, -/deep/ .el-table__expanded-cell { - background-color: transparent; -} -/* 琛ㄦ牸鍐呰儗鏅鑹� */ -/deep/ .el-table th, -/deep/ .el-table tr, -/deep/ .el-table td { - background-color: transparent; +li { + line-height: 20px; + border-bottom: 1px solid gray; + padding: 5px; } </style> -<style scoped lang="less"></style> -- Gitblit v1.9.3