| | |
| | | <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" |
| | |
| | | <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" |
| | | /> |
| | |
| | | <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" |
| | | /> |
| | |
| | | <el-form-item label="时间范围"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="form.time" |
| | | v-model="acqTime" |
| | | type="datetimerange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | |
| | | > |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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" |
| | |
| | | <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.path }}</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 |
| | |
| | | <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> |
| | |
| | | <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 |
| | |
| | | ></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 |
| | |
| | | <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, |
| | |
| | | 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() { |
| | | if (this.geoWkt) { |
| | | this.form.wkt = encr(this.geoWkt) |
| | | } else { |
| | | this.form.wkt = null; |
| | | } |
| | | if (this.acqTime) { |
| | | this.form.endDate = this.setFromDate(this.acqTime[0]) |
| | | this.form.startDate = this.setFromDate(this.acqTime[1]) |
| | | } else { |
| | | this.form.endDate = null |
| | | this.form.startDate = null |
| | | } |
| | | const data = await select_meta_ByPageAndCount(this.form); |
| | | 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; |
| | |
| | | this.drawType = 'polygon'; |
| | | this.setDrawEntity(); |
| | | break |
| | | case 5: |
| | | this.setClearWktGeom(); |
| | | break |
| | | } |
| | | }, |
| | | handleClose() { |
| | |
| | | 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); |
| | | }); |
| | | }, |
| | |
| | | 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; |
| | |
| | | }, |
| | | 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 => { |
| | |
| | | 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> |
| | | |
| | |
| | | background-size: 100% 100%; |
| | | } |
| | | .left_box { |
| | | width: 427px; |
| | | min-width: 427px; |
| | | height: auto; |
| | | left: 10px; |
| | | top: 10px; |
| | |
| | | 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 { |
| | |
| | | } |
| | | .list_box { |
| | | overflow: auto; |
| | | // height: 350px; |
| | | height: 42%; |
| | | height: 350px; |
| | | //height: 42%; |
| | | |
| | | .list { |
| | | padding: 10px; |
| | | background: #0d131d; |
| | |
| | | .details_box { |
| | | width: 533px; |
| | | // height: 430px; |
| | | overflow: auto; |
| | | background: rgba(7, 8, 14, 0.8); |
| | | padding: 10px; |
| | | position: absolute; |
| | |
| | | .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> |