From 78345e3940e5252c63e2e52b57a1fd18af982a2b Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期五, 08 九月 2023 16:59:43 +0800 Subject: [PATCH] 发布管理改,资源查询界面修改 --- src/views/resourceQuery/resourceQuery.vue | 510 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 395 insertions(+), 115 deletions(-) diff --git a/src/views/resourceQuery/resourceQuery.vue b/src/views/resourceQuery/resourceQuery.vue index 79ba022..2681ed6 100644 --- a/src/views/resourceQuery/resourceQuery.vue +++ b/src/views/resourceQuery/resourceQuery.vue @@ -1,6 +1,18 @@ <template> <div class="resourceQuery"> <moon-map></moon-map> + <div class="bottom_btn_TWO"> + <div + v-show="mapFlag == '2D'" + class="ChangeMap twoImg" + @click="setMapImg('2D')" + ></div> + <div + v-show="mapFlag != '2D'" + class="ChangeMap threeImg" + @click="setMapImg('3D')" + ></div> + </div> <div class="left_menu" @click="leftDialog =true" @@ -29,12 +41,12 @@ <el-form-item label="浼犳劅鍣ㄧ被鍨�"> <el-select style="width: 100%" - v-model="form.region" + v-model="form.sensorType" placeholder="" > <el-option - v-for="(e, i) in stretchOptions" - :label="e.label" + v-for="(e, i) in sensorOption" + :label="e.name" :value="e.value" :key="i" /> @@ -43,12 +55,12 @@ <el-form-item label="鏁版嵁绫诲瀷"> <el-select style="width: 100%" - v-model="form.region" + v-model="form.mataType" placeholder="" > <el-option - v-for="(e, i) in stretchOptions" - :label="e.label" + v-for="(e, i) in metaOption" + :label="e.name" :value="e.value" :key="i" /> @@ -57,7 +69,7 @@ <el-form-item label="鏃堕棿鑼冨洿"> <el-date-picker style="width: 100%" - v-model="form.time" + v-model="acqTime" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" @@ -66,12 +78,7 @@ > </el-date-picker> </el-form-item> - <el-form-item> - <!-- <div class="btnstyle editBtn"> - <el-button type="primary" @click="onSubmit">纭畾</el-button> - <el-button class="delbtn">鍙栨秷</el-button> - </div> --> - </el-form-item> + </el-form> <div class="KJCX"> <div class="KJCX_title">绌洪棿鏌ヨ</div> @@ -104,6 +111,13 @@ <span>澶氳竟褰�</span> <div class="btn_bg db"></div> </div> + <div + class="KJCX_btn" + @click="setDrawMenu(5)" + > + <span>娓呴櫎</span> + <div class="btn_bg qc"></div> + </div> </div> </div> </div> @@ -118,33 +132,39 @@ <el-button type="primary" class="btnbox" + @click="setQueryRetrieval" >妫�绱�</el-button> </div> <div> <el-button type="primary" class="btnbox delbtn" + @click="setQueryRestRetrieval" >閲嶇疆</el-button> </div> </div> </div> - <div v-show="listDialog"> - </div> - <!-- <div class="pagination"> + <div + class="pagination" + v-show="listDialog" + > <el-pagination small @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="currentPage4" + :current-page="form.pageIndex" :page-sizes="[100, 200, 300, 400]" - :page-size="100" + :page-size="form.pageSize" layout="sizes, prev, pager, next, jumper" - :total="400" + :total="form.count" > </el-pagination> - </div> --> - <!-- <div class="list_box"> + </div> + <div + class="list_box" + v-show="listDialog" + > <div class="list" v-for="(e, i) in list" @@ -158,19 +178,19 @@ <span class="attribute_content">{{ e.name }}</span> </div> <div class="attribute"> - <span class="attribute_title">瀛樻儏浣嶉噺锛�</span> - <span class="attribute_content">{{ e.time }}</span> + <span class="attribute_title">瀛樺偍浣嶇疆锛�</span> + <span class="attribute_content">{{ e.dirName }}</span> </div> <div class="attribute"> <span class="attribute_title">鐢熶骇鏃堕棿锛�</span> - <span class="attribute_content">{{ e.data }}</span> + <span class="attribute_content">{{ e.createTime }}</span> </div> <div class="attribute" style="margin: 0" > <span class="attribute_title">鏁版嵁澶у皬锛�</span> - <span class="attribute_content">dsadas</span> + <span class="attribute_content">{{ e.sizes }}M</span> </div> </div> <div @@ -180,10 +200,13 @@ <i class="el-icon-more"></i> </div> </div> - </div> --> - <!-- <div class="bottom_box"> - <span class="msg_box">鏄剧ず绗瑊{ paginationData.pageNo }}鍒皗{ - paginationData.pageSize + </div> + <div + class="bottom_box" + v-show="listDialog" + > + <span class="msg_box">鏄剧ず绗瑊{ (( (form.pageIndex - 1)* form.pageSize) + 1 )}}鍒皗{(form.pageIndex*form.pageSize) + }}鏉★紝鍏眥{ list.length }}鏉¤褰曪紝宸查�夋嫨{{ listChecked.length }}鏉�</span> @@ -191,17 +214,20 @@ <el-button type="primary" class="btnbox" + @click="setListCheckAll" >鍏ㄩ��</el-button> <el-button type="primary" class="btnbox delbtn" + @click="setListRemoveCheckAll" >鍙栨秷</el-button> </div> - </div> --> + </div> </div> <div class="details_box" v-show="detailsBox" + v-drag="true" > <div class="details_t"> <i @@ -210,18 +236,22 @@ ></i> </div> <div class="details_table"> - <div class="table_header"> - <div class="table_td">灞炴��</div> - <div class="table_td">灞炴�у��</div> + <div style="height: 430px;overflow: auto;"> + <div class="table_header"> + <div class="table_td">灞炴��</div> + <div class="table_td">灞炴�у��</div> + </div> + + <div + class="table_tr" + v-for="(e, i) in tableList" + :key="i" + > + <div class="table_td">{{ e.alias}}</div> + <div class="table_td">{{ e.value }}</div> + </div> </div> - <div - class="table_tr" - v-for="(e, i) in tableList" - :key="i" - > - <div class="table_td">{{ e.name }}</div> - <div class="table_td">{{ e.value }}</div> - </div> + </div> </div> <el-dialog @@ -262,6 +292,8 @@ <script> import * as turf from "@turf/turf" import moonMap from "../../components/MapView/moonMap.vue"; //鍦板浘 +import { meta_type, sensor_type } from "../datamanage/js/layerManage"; +import { select_meta_ByPageAndCount, encr, selectByPageAndCount } from '../../api/api' export default { components: { moonMap, @@ -272,107 +304,262 @@ pageNo: 1, pageSize: 10, }, - tableList: [ - { - name: "dataid", - value: "LC81350352022001LGN00", - }, - { - name: "satellite", - value: "LANDSAT8", - }, - { - name: "datatype", - value: "OLLTIRS", - }, - { - name: "ines samples", - value: "7931.0", - }, - { - name: "sensor", - value: "7811.0", - }, - ], + tableList: [], listChecked: [], - list: [ - { - name: "鍚嶇О", - CQWZ: "浣嶇疆", - time: "鏃堕棿", - data: "澶у皬", - checked: false, - }, - { - name: "鍚嶇О", - CQWZ: "浣嶇疆", - time: "鏃堕棿", - data: "澶у皬", - checked: false, - }, - { - name: "鍚嶇О", - CQWZ: "浣嶇疆", - time: "鏃堕棿", - data: "澶у皬", - checked: false, - }, - { - name: "鍚嶇О", - CQWZ: "浣嶇疆", - time: "鏃堕棿", - data: "澶у皬", - checked: false, - }, - ], + list: [], currentPage4: 4, form: { name: "", - region: "", - selectName: "", - layerUrl: "", - children: [], - value1: "", + sensorType: 0, + mataType: 0, + wkt: null, + pageIndex: 1, + pageSize: 100, + count: 0, + startDate: null, + endDate: null }, - stretchOptions: [ - { - value: "鐩綍", - label: "鐩綍", - }, - ], + acqTime: '', + sensorOption: [], + metaOption: [], detailsBox: false, listDialog: false, leftDialog: true, drawType: null, dialogVisible: false, bufferNumber: 100, + geoWkt: null, + wktEntity: null, + mapFlag: '2D' }; }, methods: { - details(val) { - this.detailsBox = true; + setMapImg(res) { + if (res == "2D") { + this.mapFlag = "3D"; + window.earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE2D; + } else if (res == "3D") { + this.mapFlag = "2D"; + window.earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE3D; + } }, + setListCheckAll() { + for (var i in this.list) { + var checked = this.list[i].checked + if (!checked) { + this.list[i].checked = true; + this.listChecked.push(this.list[i]); + this.setAddCheckLayer(this.list[i]); + } + } + }, + setListRemoveCheckAll() { + for (var i in this.list) { + if (this.list[i].checked) { + this.list[i].checked = false; + this.setRemoveCheckLayer(this.list[i]); + } + + + + } + this.listChecked = []; + }, + async details(e) { + + const data = await selectByPageAndCount({ + ns: 'lf', + pageIndex: 1, + pageSize: 100000, + tab: 'sys_meta' + }) + if (data.code != 200) return + var std = []; + var result = data.result; + + e.createUser = e.createName; + e.depcode = e.depName + e.dircode = e.dirName; + e.updateUser = e.updateName; + + e.verid = e.verName; + if (e.sensortype > 0) { + for (var i in this.sensorOption) { + if (this.sensorOption[i].value == e.sensortype) { + e.sensortype = this.sensorOption[i].name + } + } + } else { + e.sensortype = null + } + if (e.mataType > 0) { + for (var i in this.metaOption) { + if (this.metaOption[i].value == e.mataType) { + e.mataType = this.metaOption[i].name + } + } + } else { + e.mataType = null + } + for (var i in result) { + for (var key in e) { + if (result[i].field == key) { + result[i].value = e[key] + } + if (result[i].field == 'gid' && key == 'id') { + result[i].value = e[key] + } + + } + } + + + this.detailsBox = true; + this.tableList = result; + }, + setQueryRestRetrieval() { + this.listDialog = false; + this.setFromStart(); + this.setDrawMenu(5); + this.listChecked = []; + Viewer.entities.removeAll() + }, + async setQueryRetrieval() { + var obj = JSON.parse(JSON.stringify(this.form)) + if (this.geoWkt) { + obj.wkt = encr(this.geoWkt) + } else { + obj.wkt = null; + } + if (this.acqTime) { + obj.endDate = this.setFromDate(this.acqTime[0]) + obj.startDate = this.setFromDate(this.acqTime[1]) + } else { + obj.endDate = null + obj.startDate = null + } + if (obj.sensorType == 0) { + obj.sensorType = '' + } + if (obj.mataType == 0) { + obj.mataType = '' + } + const data = await select_meta_ByPageAndCount(obj); + if (data.code != 200) return + this.form.count = data.count; + var result = data.result; + for (var i in result) { + if (result[i].createTime) { + result[i].createTime = this.setFromDate(result[i].createTime) + } + if (result[i].updateTime) { + result[i].updateTime = this.setFromDate(result[i].updateTime) + } + if (result[i].acqTime) { + result[i].acqTime = this.setFromDate(result[i].acqTime) + } + + } + + if (result) { + this.list = result; + } else { + this.list = []; + } + this.listDialog = true; + }, + setFromDate(res) { + var time = new Date(res); + 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) + + ' ' + + this.add0(h) + + ':' + + this.add0(mm) + + ':' + + this.add0(s) + ); + }, + //鏍煎紡鍖栨椂闂� + add0(m) { + + return m < 10 ? "0" + m : m; + }, + //澶у皬鍊兼敼鍙� handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); + this.form.pageIndex = 1; + this.form.pageSize = val; + this.setQueryRetrieval(); + }, handleCurrentChange(val) { + this.form.pageIndex = val; + this.setQueryRetrieval(); + console.log(`褰撳墠椤�: ${val}`); }, checkedList(val) { val.checked = !val.checked; if (val.checked) { this.listChecked.push(val); + this.setAddCheckLayer(val); } if (this.listChecked.length > 0) { if (!val.checked) { this.listChecked.forEach((e, i) => { - if (e.name == val.name) { + if (e.id == val.id) { this.listChecked.splice(i, 1); + this.setRemoveCheckLayer(val); } }); } } + }, + setAddCheckLayer(res) { + if (!res.geom) return + var wkt = this.$wkt.parse(res.geom).coordinates[0] + var geom = []; + for (var i in wkt) { + geom.push(Cesium.Cartesian3.fromDegrees(wkt[i][0], wkt[i][1])) + } + Viewer.entities.add({ + name: res.name + "&&" + res.id, + polygon: { + hierarchy: geom, + material: Cesium.Color.WHITE.withAlpha(0.1), + // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + outline: true, + outlineColor: Cesium.Color.fromCssColorString("rgba(130,167,33, 1)"), + outlineWidth: 10, + classificationType: Cesium.ClassificationType.BOTH,//璐村湴褰㈠拰3dtile + clampToGround: true,//寮�鍚创鍦� + height: 0, + }, + + }); + }, + setRemoveCheckLayer(res) { + var name = res.name + "&&" + res.id; + var entity = Viewer.entities._entities._array + for (var i = 0; i < entity.length; i++) { + if (entity[i].name == name) { + Viewer.entities.remove(entity[i]) + i--; + } + } + + }, setDrawMenu(res) { this.bufferNumber = 100; @@ -393,6 +580,9 @@ this.drawType = 'polygon'; this.setDrawEntity(); break + case 5: + this.setClearWktGeom(); + break } }, handleClose() { @@ -411,9 +601,12 @@ if (this.drawType != 'point') { config = { showSize: false } } + if (this.wktEntity) { + this.setClearWktGeom(); + } var that = this; sgworld.Creator.createSimpleGraphic(this.drawType, config, (entity) => { - sgworld.Creator.SimpleGraphic.clear() + that.querySatialQuery(entity); }); }, @@ -433,8 +626,44 @@ res_val = res.polygon.hierarchy.getValue().positions; break; } - var val = this.getEntityGeometry(res_val, this.drawType) - debugger + sgworld.Creator.SimpleGraphic.clear() + this.geoWkt = this.getEntityGeometry(res_val, this.drawType) + if (this.geoWkt) { + this.$nextTick(() => { + this.setAddWktEntity(this.geoWkt) + }) + } + + }, + setAddWktEntity(res) { + var wkt = this.$wkt.parse(res).coordinates[0]; + var geom = []; + for (var i in wkt) { + geom.push(Cesium.Cartesian3.fromDegrees(wkt[i][0], wkt[i][1], wkt[i][2] ?? 0)) + } + this.wktEntity = Viewer.entities.add({ + name: '璧勬簮鏌ヨ', + polygon: { + hierarchy: geom, + material: Cesium.Color.WHITE.withAlpha(0.2), + //heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + outline: true, + outlineColor: Cesium.Color.RED, + outlineWidth: 10, + classificationType: Cesium.ClassificationType.BOTH,//璐村湴褰㈠拰3dtile + clampToGround: true,//寮�鍚创鍦� + height: 0, + }, + + }); + }, + setClearWktGeom() { + if (this.wktEntity) { + Viewer.entities.remove(this.wktEntity) + this.wktEntity = null; + this.geoWkt = null; + } + }, getEntityGeometry(res, type) { var res_val; @@ -480,7 +709,7 @@ }, setTurfBuffer(geom, distance, type) { - return turf.buffer(geom, distance, { units: 'miles' }); + return turf.buffer(geom, distance, { units: 'meters' }); }, fixToPositon(restVal, digits = 6) { restVal.geometry.coordinates.forEach(coord => { @@ -503,9 +732,31 @@ std.lng = Cesium.Math.toDegrees(cartographic.longitude) std.alt = cartographic.height return std + }, + getSensorMeta() { + this.metaOption = meta_type; + this.sensorOption = sensor_type; + }, + setFromStart() { + this.form = { + name: "", + sensorType: 0, + mataType: 0, + wkt: null, + pageIndex: 1, + pageSize: 100, + count: 0, + startDate: null, + endDate: null + } + this.acqTime = '' } }, created() { }, + mounted() { + this.getSensorMeta(); + this.setFromStart(); + } }; </script> @@ -524,7 +775,7 @@ background-size: 100% 100%; } .left_box { - width: 427px; + min-width: 427px; height: auto; left: 10px; top: 10px; @@ -611,6 +862,10 @@ background: url("../../assets/img/db.png") no-repeat center; background-size: 100% 100%; } + .qc { + background: url("../../assets/img/娓呴櫎.png") no-repeat center; + background-size: 100% 100%; + } } /deep/ .el-input.is-disabled .el-input__wrapper, /deep/ .el-input__wrapper { @@ -645,8 +900,9 @@ } .list_box { overflow: auto; - // height: 350px; - height: 42%; + height: 350px; + //height: 42%; + .list { padding: 10px; background: #0d131d; @@ -730,6 +986,7 @@ .details_box { width: 533px; // height: 430px; + overflow: auto; background: rgba(7, 8, 14, 0.8); padding: 10px; position: absolute; @@ -785,4 +1042,27 @@ .dialogContent /deep/.el-icon-plus { color: #606266 !important; } +.bottom_btn_TWO { + position: absolute; + z-index: 39; + /* prettier-ignore */ + bottom: 68PX; + /* prettier-ignore */ + right: 70PX; + + .ChangeMap { + /* prettier-ignore */ + width: 30PX; + /* prettier-ignore */ + height: 30PX; + /* prettier-ignore */ + border: 1PX solid rgba(255, 255, 255, 0.1); + } + .twoImg { + background: url("../../assets/img/2D.png") no-repeat; + } + .threeImg { + background: url("../../assets/img/3D.png") no-repeat; + } +} </style> \ No newline at end of file -- Gitblit v1.9.3