图层管理属性查询;空间查询下载借款给调试,分屏对比功能修改;
| | |
| | | const BASE_URL = "http://192.168.20.83:8088/MoonServer/"; //å端æ¥å£å°å |
| | | // const BASE_URL = "http://192.168.20.106:9000/MoonServer/"; //å端æ¥å£å°å |
| | |
| | | |
| | | export function dataQuery_selectFields(params) { |
| | | //请æ±å°å |
| | | return request.get("/dataQuery/selectFields", { params: params }); |
| | | return request.get("/dataQuery/selectTabFields", { params: params }); |
| | | } |
| | | |
| | | //æ°æ®æ¥è¯¢=>ä¸è½½DBæ°æ® |
| | | export function dataQuery_downloadDbData(params) { |
| | | //请æ±å°å |
| | | return request.post("/dataQuery/downloadDbData", params); |
| | | } |
| | | |
| | | |
| | | //è·åRSAå å¯å
¬é¥ |
| | | export function sign_getPublicKey(params) { |
| | | //请æ±å°å |
| | |
| | | //æ¯å¦ä¸ºç产ç¯å¢ |
| | | const isWeb = true; |
| | | const isWeb = false; |
| | | //æ¯å¦ä¸ºç产ç¯å¢ |
| | | const webUrl = isWeb ? "/web" : ""; |
| | | //é
ç½®æä»¶å°å |
| | |
| | | sgworld.Creator.SimpleGraphic.edit(true, { editProp: true }); |
| | | //======================= |
| | | window.Viewer.imageryLayers.removeAll(); |
| | | |
| | | Viewer.animation.container.style.visibility = "hidden"; |
| | | Viewer.timeline.container.style.visibility = "hidden"; |
| | | //======================= |
| | | //大æ°å± |
| | | Viewer.scene.globe.showGroundAtmosphere = false; |
| | | |
| | | // server.AddDemLayer("", 12316); |
| | | // server.AddTmsLayer( |
| | | // "http://172.16.2.10:50001/sj_raster/v6/service/10003901/1" |
| | | // ); |
| | | |
| | | // var param = { |
| | | // name: labelName, |
| | | // id: earthCtrl.factory.createUUID(), |
| | | // text: "æåå·¥å
·", |
| | | // font: '50pt monospace', |
| | | // outlineWidth: 2, |
| | | // fillColor: SmartEarth.Cesium.Color.RED, |
| | | // lon: 47.5087, |
| | | // lat: 23.6963, |
| | | // alt: 10 |
| | | // }; |
| | | // labelEntity = earthCtrl.factory.createLabel(param); |
| | | |
| | | // server.AddTmsLayer('http://localhost:8080/abc'); |
| | | |
| | | // earthCtrl.camera.flyTo(47.5087, 23.6963, 300, 9.5, -45, 0.0, 5); |
| | | |
| | | // //æ·»å é¼ æ å·¦å»äºä»¶ |
| | | // this.addMouseLeftClickEvents(); |
| | | // this.addMouseMouseMoveEvents(); |
| | | }, |
| | | //é¼ æ å·¦é®ç¹å»äºä»¶æ·»å |
| | | addMouseLeftClickEvents() { |
| | |
| | | import rightServer from "./rightServer"; |
| | | import config from "./config"; |
| | | import CryptoJS from "crypto-js"; |
| | | |
| | | // import { Store } from "vuex"; |
| | | import store from "@/store"; |
| | | const menuTool = { |
| | | toolMenu: null, |
| | | toolFlag: null, |
| | |
| | | destination: Cesium.Rectangle.fromDegrees(west, south, east, north), |
| | | }); |
| | | |
| | | // var e = Viewer.entities.add({ |
| | | // name: "æ£æ¹", |
| | | // polygon: { |
| | | // hierarchy: geometry1, |
| | | // //height : 100000, |
| | | // material: Cesium.Color.RED, |
| | | // outline: true, |
| | | // outlineColor: Cesium.Color.RED, |
| | | // }, |
| | | // }); |
| | | // const stripeMaterial = new Cesium.StripeMaterialProperty({ |
| | | // evenColor: Cesium.Color.WHITE.withAlpha(0.5), |
| | | // oddColor: Cesium.Color.BLUE.withAlpha(0.5), |
| | | // repeat: 5.0, |
| | | // }); |
| | | // var e = Viewer.entities.add({ |
| | | // rectangle: { |
| | | // coordinates: geometry, |
| | | // outline: true, |
| | | // outlineColor: Cesium.Color.WHITE, |
| | | // outlineWidth: 4, |
| | | // stRotation: Cesium.Math.toRadians(45), |
| | | // material: stripeMaterial, |
| | | // }, |
| | | // }); |
| | | // this.squareOjb.push(e); |
| | | // // earthCtrl.Creator.SimpleGraphic.clear(); |
| | | // Viewer.entities.remove(entity); |
| | | |
| | | |
| | | setTimeout(() => { |
| | | window.functionForJs({ |
| | |
| | | window.DoubleScreen = null; |
| | | const compass = document.getElementsByClassName("bottom_btn")[0]; |
| | | compass.style.right = "70px"; |
| | | store.state.doubleMap = false; |
| | | store.state.doubleMenu = false; |
| | | return; |
| | | } |
| | | window.DoubleScreen = new SmartEarth.DoubleScreen( |
| | |
| | | {}, |
| | | SmartEarth |
| | | ); |
| | | DoubleScreen.right._Viewer.imageryLayers.removeAll(); |
| | | var terrain = new Cesium.CesiumTerrainProvider({ |
| | | url: config.moonTerrain, |
| | | tilingScheme: new Cesium.GeographicTilingScheme({ |
| | | ellipsoid: Cesium.Ellipsoid.MOON, |
| | | }), |
| | | }); |
| | | DoubleScreen.right._Viewer.terrainProvider = terrain; |
| | | rightServer.AddWmtesLayer(config.moonWmts); |
| | | |
| | | window.rightViewer = DoubleScreen.right._Viewer; |
| | | window.rightViewer.imageryLayers.removeAll(); |
| | | window.rightViewer = DoubleScreen.right._Viewer; |
| | | window.rightViewer.animation.container.style.visibility = "hidden"; |
| | | // window.rightViewer.timeline.container.style.visibility = "hidden"; |
| | | //大æ°å± |
| | | window.rightViewer.scene.globe.showGroundAtmosphere = false; |
| | | window.rightViewer.scene.skyAtmosphere.show = false; |
| | | const compass = document.getElementsByClassName("bottom_btn")[0]; |
| | | compass.style.right = "calc(50% + 70px)"; |
| | | store.state.doubleMap = true; |
| | | setTimeout(() => { |
| | | window.functionGetLayer({ |
| | | type: "getlayer", |
| | | value: true, |
| | | }); |
| | | }, 100); |
| | | }, |
| | | //åæ¹éè®¡ç® |
| | | Volumetric() { |
| | |
| | | earthCtrl.analysis.deleteObject(); |
| | | }, |
| | | clearLeftTools(res) { }, |
| | | //ç©ºé´æ¥è¯¢å±æ§å®ä½ |
| | | spaceLocation(res) { |
| | | var name = 'ç©ºé´æ¥è¯¢'; |
| | | debugger |
| | | this.setClearLocation(name); |
| | | switch (res.type) { |
| | | case 'MultiPolygon': |
| | | for (var i in res.coordinates) { |
| | | this.setLocationPolygon(res.coordinates[i], name) |
| | | } |
| | | break; |
| | | case 'MultiLineString': |
| | | for (var i in res.coordinates) { |
| | | this.setLocationLine(res.coordinates[i], name) |
| | | } |
| | | break; |
| | | case 'Point': |
| | | this.setLocationPoint(res.coordinates, name) |
| | | break; |
| | | } |
| | | }, |
| | | //æ¸
空ä¹åç»å¶å¾å½¢ |
| | | setClearLocation(res) { |
| | | for (var i = 0; i < window.Viewer.entities._entities._array.length; i++) { |
| | | if (window.Viewer.entities._entities._array[i].name == res) { |
| | | window.Viewer.entities.remove(window.Viewer.entities._entities._array[i]) |
| | | i = i - 1; |
| | | } |
| | | } |
| | | }, |
| | | setLocationPolygon(res, name) { |
| | | var position = []; |
| | | var geom = res[0] |
| | | for (var i in geom) { |
| | | position.push(geom[i][0], geom[i][1]) |
| | | } |
| | | var locationPolygonEntity = window.Viewer.entities.add({ |
| | | name: name, |
| | | polygon: { |
| | | hierarchy: { positions: Cesium.Cartesian3.fromDegreesArray(position) }, |
| | | outline: true, |
| | | outlineWidth: 100, |
| | | arcType: Cesium.ArcType.RHUMB, |
| | | material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4), |
| | | outline: true, // height is required for outline to display |
| | | outlineColor: Cesium.Color.DODGERBLUE, |
| | | } |
| | | }); |
| | | window.Viewer.flyTo(locationPolygonEntity, { |
| | | duration: 5, |
| | | offset: new SmartEarth.Cesium.HeadingPitchRange(0.0, SmartEarth.Cesium.Math.toRadians(-20.0)) |
| | | }); |
| | | }, |
| | | setLocationPoint(res, name) { |
| | | const position = window.Viewer.entities.add({ |
| | | name: name, |
| | | position: Cesium.Cartesian3.fromDegrees(res[0], res[1]), |
| | | billboard: { |
| | | image: config.StaticFileBaseUrl + '/Workers/image/location.png', |
| | | // è®¾ç½®è´´å° |
| | | heightReference: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4), |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, |
| | | scale: 5.0, |
| | | }, |
| | | }); |
| | | window.Viewer.flyTo(position, { |
| | | duration: 5, |
| | | offset: new SmartEarth.Cesium.HeadingPitchRange(0.0, SmartEarth.Cesium.Math.toRadians(-20.0)) |
| | | }); |
| | | }, |
| | | setLocationLine(res, name) { |
| | | var position = []; |
| | | |
| | | for (var i in res) { |
| | | position.push(res[i][0], res[i][1]) |
| | | } |
| | | var polyline = window.Viewer.entities.add({ |
| | | name: name, |
| | | polyline: { |
| | | positions: Cesium.Cartesian3.fromDegreesArray(position), |
| | | width: 10.0, |
| | | material: new Cesium.PolylineOutlineMaterialProperty({ |
| | | color: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4), |
| | | outlineWidth: 1, |
| | | outlineColor: Cesium.Color.CORNFLOWERBLUE, |
| | | }), |
| | | clampToGround: true, |
| | | |
| | | }, |
| | | }) |
| | | window.Viewer.flyTo(polyline, { |
| | | duration: 5, |
| | | offset: new SmartEarth.Cesium.HeadingPitchRange(0.0, SmartEarth.Cesium.Math.toRadians(-20.0)) |
| | | }); |
| | | } |
| | | |
| | | }; |
| | | export default menuTool; |
| | |
| | | const rightServer = { |
| | | import { getToken } from "@/utils/auth"; |
| | | //é
ç½®æä»¶å°å |
| | | import config from "./config"; |
| | | |
| | | AddWmtesLayer(url) { |
| | | var urlTemplateImageryProvider = DoubleScreen.right.factory.createImageryLayer({ |
| | | const rightServer = { |
| | | layerList: [], |
| | | addTreeData(treeNode) { |
| | | if (!treeNode.checked) { |
| | | this.delLayer(treeNode.id); |
| | | return; |
| | | } |
| | | //夿æ¯å¦ä¸ºä»£ç |
| | | if (treeNode.proxy) { |
| | | this.addProxyAddress(treeNode); //æä»£ç |
| | | } else { |
| | | this.addUrlAddress(treeNode); //æ 代ç |
| | | } |
| | | }, |
| | | //代çå°å |
| | | addProxyAddress(res) { |
| | | //å¤ææ°æ®ç±»å |
| | | switch (res.data) { |
| | | case 1: //æ°åæ£å°å½±åå¾ |
| | | this.setDataType(res); |
| | | break; |
| | | case 2: //åºæ¯å°å½¢æ°æ® |
| | | this.setTerrainData(res); |
| | | break; |
| | | case 3: //æ°åé«ç¨æ¨¡åï¼ææ¸²å¾ï¼ |
| | | this.setDataType(res); |
| | | break; |
| | | case 4: //åæ³¢æ®µæ
æ ¼æ°æ® |
| | | this.setDataType(res); |
| | | break; |
| | | case 5: //å¤å
è°±æ
æ ¼æ°æ® |
| | | this.setDataType(res); |
| | | break; |
| | | case 6: //é«å
è°±æ
æ ¼æ°æ® |
| | | this.setDataType(res); |
| | | break; |
| | | case 7: //ç¢éå¾å± |
| | | this.setVectorData(res); |
| | | break; |
| | | case 8: //ä¸ç»´æ¨¡å |
| | | this.setModelData(res); |
| | | break; |
| | | } |
| | | }, |
| | | //æ®éå°å |
| | | addUrlAddress(res) { |
| | | switch (res.category) { |
| | | case 0: //å
¶ä» |
| | | break; |
| | | case 1: //GisServer |
| | | this.addProxyAddress(res); |
| | | break; |
| | | case 2: //GeoServer |
| | | this.addGeoServerAddress(res); |
| | | break; |
| | | case 3: //æ°ç® |
| | | this.addProxyAddress(res); |
| | | break; |
| | | } |
| | | }, |
| | | //Geoserveræå¡ |
| | | addGeoServerAddress(res) { |
| | | //å¤ææ°æ®ç±»å |
| | | switch (res.data) { |
| | | case 1: //æ°åæ£å°å½±åå¾ |
| | | this.setGeoDataType(res); |
| | | break; |
| | | case 2: //åºæ¯å°å½¢æ°æ® |
| | | this.setTerrainData(res); |
| | | break; |
| | | case 3: //æ°åé«ç¨æ¨¡åï¼ææ¸²å¾ï¼ |
| | | this.setGeoDataType(res); |
| | | break; |
| | | case 4: //åæ³¢æ®µæ
æ ¼æ°æ® |
| | | this.setGeoDataType(res); |
| | | break; |
| | | case 5: //å¤å
è°±æ
æ ¼æ°æ® |
| | | this.setGeoDataType(res); |
| | | break; |
| | | case 6: //é«å
è°±æ
æ ¼æ°æ® |
| | | this.setGeoDataType(res); |
| | | break; |
| | | case 7: //ç¢éå¾å± |
| | | this.setGeoVectorData(res); |
| | | break; |
| | | case 8: //ä¸ç»´æ¨¡å |
| | | this.setModelData(res); |
| | | break; |
| | | } |
| | | }, |
| | | setGeoDataType(res) { |
| | | switch (res.type) { |
| | | case 0: //URL |
| | | break; |
| | | case 1: //TMS |
| | | this.setAddTmsLayer(res); |
| | | break; |
| | | case 2: //WMTS |
| | | this.setAddWmtsLayer(res); |
| | | break; |
| | | case 3: //WMS |
| | | this.setAddGeoWmsLayer(res); |
| | | break; |
| | | } |
| | | }, |
| | | setGeoVectorData(res) { |
| | | switch (res.type) { |
| | | case 0: //URL |
| | | break; |
| | | case 3: //WMS |
| | | this.setAddGeoWmsLayer(res); |
| | | break; |
| | | case 4: //WFS |
| | | break; |
| | | } |
| | | }, |
| | | setDataType(res) { |
| | | switch (res.type) { |
| | | case 0: //URL |
| | | break; |
| | | case 1: //TMS |
| | | this.setAddTmsLayer(res); |
| | | break; |
| | | case 2: //WMTS |
| | | this.setAddWmtsLayer(res); |
| | | break; |
| | | case 3: //WMS |
| | | this.setAddWmsLayer(res); |
| | | break; |
| | | } |
| | | }, |
| | | |
| | | setTerrainData(res) { |
| | | switch (res.type) { |
| | | case 0: //URL |
| | | this.setAddTearrinLayer(res); |
| | | break; |
| | | case 1: //TMS |
| | | this.setAddTearrinLayer(res); |
| | | break; |
| | | } |
| | | }, |
| | | setVectorData(res) { |
| | | switch (res.type) { |
| | | case 0: //URL |
| | | break; |
| | | case 3: //WMS |
| | | this.setAddWmsLayer(res); |
| | | break; |
| | | case 4: //WFS |
| | | break; |
| | | } |
| | | }, |
| | | setModelData(res) { |
| | | switch (res.type) { |
| | | case 0: //Tileset |
| | | this.setAddModelLayer(res); |
| | | break; |
| | | case 3: //WMS |
| | | this.setAddModelLayer(res); |
| | | break; |
| | | case 5: //WFS |
| | | break; |
| | | } |
| | | }, |
| | | //è·åæå¡å°å |
| | | getLayrUrl(res) { |
| | | var url; |
| | | if (res.proxy) { |
| | | const token = getToken(); |
| | | url = config.proxy + res.proxy.replaceAll("{token}", token); |
| | | } else { |
| | | url = res.url; |
| | | } |
| | | return url; |
| | | }, |
| | | //å è½½TMSæå¡ |
| | | setAddTmsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | var urlTemplateImageryProvider = new Cesium.UrlTemplateImageryProvider({ |
| | | url: url + '/{z}/{x}/{reverseY}.png', |
| | | }); |
| | | let img_layer = window.rightViewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider); |
| | | this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" }); |
| | | }, |
| | | //å è½½WMTSæå¡ |
| | | setAddWmtsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | var urlTemplateImageryProvider = new Cesium.WebMapTileServiceImageryProvider({ |
| | | sourceType: "wmts", |
| | | url: url, |
| | | layer: "", |
| | |
| | | ellipsoid: Cesium.Ellipsoid.MOON, |
| | | }), |
| | | }); |
| | | let img_layer = window.rightViewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider); |
| | | this.layerList.push({ |
| | | id: res.id, |
| | | layerData: img_layer, |
| | | type: "wmts", |
| | | }); |
| | | }, |
| | | //å è½½å°å½¢æå¡ |
| | | setAddTearrinLayer(res) { |
| | | this.setChangeTearrinLayer(); |
| | | var url = this.getLayrUrl(res); |
| | | window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | | url: url, |
| | | }); |
| | | window.rightViewer.terrainProvider = window.terrainLayer; |
| | | this.layerList.push({ id: res.id, type: "dem" }); |
| | | }, |
| | | //å è½½WMSæå¡ |
| | | setAddWmsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | var img_layer = window.rightViewer.createImageryProvider( |
| | | "giserver", |
| | | "wms", |
| | | { |
| | | url: url, |
| | | layers: "", |
| | | parameters: { |
| | | format: "image/png", |
| | | transparent: true, |
| | | }, |
| | | }, |
| | | "0", |
| | | undefined, |
| | | true, |
| | | "" |
| | | ); |
| | | this.layerList.push({ |
| | | id: res.id, |
| | | layerData: img_layer, |
| | | type: "wmts", |
| | | }); |
| | | }, |
| | | //å 载模åæå¡ |
| | | setAddModelLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | let tileset = window.rightViewer.scene.primitives.add( |
| | | new Cesium.Cesium3DTileset({ |
| | | name: res.cnName, |
| | | url: url, |
| | | skipLevelOfDetail: true, // å¨éåæ¶åè·³è¿è¯¦æ
ï¼false |
| | | baseScreenSpaceError: 1024, |
| | | maximumScreenSpaceError: 64, // æå¤§å±å¹ç©ºé´é误ï¼16ï¼æ°å¼å 大è½è®©æç»æå忍¡ç³ |
| | | skipScreenSpaceErrorFactor: 16, |
| | | skipLevels: 1, |
| | | immediatelyLoadDesiredLevelOfDetail: false, |
| | | loadSiblings: true, // èªå¨ä»ä¸å¿å¼å§è¶
æ¸
忍¡åï¼false |
| | | cullWithChildrenBounds: true, // 使ç¨å项边çä½ç§¯ç并鿥åé¤å¾åï¼true |
| | | cullRequestsWhileMoving: true, |
| | | cullRequestsWhileMovingMultiplier: 10, // å¼è¶å°è½å¤æ´å¿«çåé¤ï¼60 |
| | | preloadWhenHidden: true, |
| | | preferLeaves: true, // é¢è£
åèç¹ï¼false |
| | | maximumMemoryUsage: 768, // å
ååé
åå°æå©äºå
ååæ¶ï¼æåæ§è½ä½éª |
| | | progressiveResolutionHeightFraction: 0.5, // æ°å¼åäº0è½å¤è®©åå§å è½½å徿¨¡ç³ |
| | | dynamicScreenSpaceErrorDensity: 0.5, // æ°å¼å 大ï¼è½è®©å¨è¾¹å è½½åå¿« |
| | | dynamicScreenSpaceErrorFactor: 2, // 卿å±å¹ç©ºé´è¯¯å·®çç³»æ° |
| | | dynamicScreenSpaceError: true, // åå°ç¦»ç¸æºè¾è¿çå±å¹ç©ºé´é误ï¼falseï¼å
¨å±å è½½å®ä¹åææ¸
æ°åæ¿å± |
| | | }) |
| | | ); |
| | | tileset.readyPromise.then((tileset) => { |
| | | tileset.id = res.id; |
| | | }); |
| | | this.layerList.push({ id: res.id, layerData: tileset, type: "tileset" }); |
| | | }, |
| | | //å°å½¢ç§»é¤äºä»¶ |
| | | setChangeTearrinLayer() { |
| | | this.layerList.forEach((e, i) => { |
| | | switch (e.type) { |
| | | case "dem": |
| | | window.rightViewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( |
| | | {} |
| | | ); |
| | | this.layerList.splice(i, 1); |
| | | break; |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | //æ¸
é¤å¾å± |
| | | delLayer(code) { |
| | | this.layerList.forEach((e, i) => { |
| | | if (e.id === code) { |
| | | switch (e.type) { |
| | | case "wmts": |
| | | window.rightViewer.imageryLayers.remove(e.layerData); |
| | | break; |
| | | case "tms": |
| | | window.rightViewer.imageryLayers.remove(e.layerData); |
| | | break; |
| | | case "dem": |
| | | window.rightViewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( |
| | | {} |
| | | ); |
| | | break; |
| | | case "tileset": |
| | | window.rightViewer.scene.primitives.remove(e.layerData) |
| | | break; |
| | | } |
| | | this.layerList.splice(i, 1); |
| | | } |
| | | }); |
| | | }, |
| | | //å è½½GeoServer-WMSæå¡ |
| | | setAddGeoWmsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ |
| | | url: url, |
| | | layers: res.tab, |
| | | parameters: { |
| | | transparent: true, |
| | | format: "image/png", |
| | | srs: "EPSG:104903", |
| | | styles: "", |
| | | }, |
| | | tileWidth: 512, |
| | | tileHeight: 512, |
| | | }); |
| | | layer.name = `Wms_Layer${res.id}`; |
| | | |
| | | |
| | | } |
| | | export default rightServer; |
| | | let img_layer = window.rightViewer.imageryLayers.addImageryProvider(layer); |
| | | this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" }); |
| | | }, |
| | | }; |
| | | export default rightServer; |
| | |
| | | }, |
| | | chekNowLayers: [], |
| | | exportImgUrl: "", |
| | | tab: null, |
| | | doubleMap: false, |
| | | doubleMenu: false, |
| | | }, |
| | | mutations: { |
| | | //è·åç»å½Code |
| | |
| | | <template> |
| | | <div class="body_box"> |
| | | <div id="cesiumContainer"></div> |
| | | <div id="cesiumContainer"> |
| | | |
| | | </div> |
| | | <export-map |
| | | v-if="layerExportshow" |
| | | @SETexportMap="SETexportMap" |
| | |
| | | <template> |
| | | <div v-drag="true" class="spatialBox"> |
| | | <div |
| | | v-drag="true" |
| | | class="spatialBox" |
| | | > |
| | | <!-- v-resizable="'right, bottom'" --> |
| | | <div class="spatialTitle"> |
| | | <label>屿§</label> |
| | | <el-icon @click="setSpatialClose" :size="20" style="cursor: pointer"> |
| | | <el-icon |
| | | @click="setSpatialClose" |
| | | :size="20" |
| | | style="cursor: pointer" |
| | | > |
| | | <Close /> |
| | | </el-icon> |
| | | </div> |
| | | <div class="spatialContent"> |
| | | <div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="16"> |
| | | <el-input |
| | | v-model="listData.filter" |
| | | type="text" |
| | | placeholder="è¯·éæ©..." |
| | | disabled |
| | | /> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-button |
| | | :icon="Plus" |
| | | type="success" |
| | | @click="dialogVisible = true" |
| | | >é«çº§æ¥è¯¢</el-button> |
| | | <el-button |
| | | :icon="Refresh" |
| | | type="info" |
| | | @click="setdialogRefresh" |
| | | >éç½®</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="spatialTable"> |
| | | <el-table :data="tableData" style="width: 100%; height: 82%"> |
| | | <el-table |
| | | :data="tableData" |
| | | style="width: 100%; height: 75%" |
| | | > |
| | | <el-table-column |
| | | align="center" |
| | | type="index" |
| | | label="åºå·" |
| | | width="70" |
| | | /> |
| | | <el-table-column |
| | | label="å®ä½" |
| | | width="100" |
| | | align="center" |
| | | > |
| | | <template #default="scope"> |
| | | <el-button |
| | | :icon="Location" |
| | | size="small" |
| | | @click.prevent="spaceLocation(scope.$index, scope.row)" |
| | | > |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-for="(item, index) in attributeData" |
| | | :key="index" |
| | |
| | | show-overflow-tooltip |
| | | align="center" |
| | | :fit="true" |
| | | width="120" |
| | | min-width="120" |
| | | ></el-table-column> |
| | | </el-table> |
| | | <div class="spatialBottom"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- é«çº§æ¥è¯¢ --> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | title="é«çº§æ¥è¯¢" |
| | | width="30%" |
| | | :show-close="false" |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | > |
| | | <div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-select |
| | | v-model="formSql.field" |
| | | class="m-2" |
| | | placeholder="Select" |
| | | @change="setFieldChange($event)" |
| | | > |
| | | <el-option |
| | | v-for="item in fieldOption" |
| | | :key="item.field" |
| | | :label="item.alias" |
| | | :value="item.field" |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-select |
| | | v-model="formSql.type" |
| | | class="m-2" |
| | | placeholder="Select" |
| | | > |
| | | <el-option |
| | | v-for="item in condOption" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-input v-model="formSql.value"></el-input> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | |
| | | </div> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">åæ¶</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="setInsertDialog" |
| | | > æ·»å </el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | watch, |
| | | } from "vue"; |
| | | import config from "@/assets/js/Map/config"; |
| | | import { User, Lock, Plus } from "@element-plus/icons-vue"; |
| | | import { User, Lock, Plus, Location } from "@element-plus/icons-vue"; |
| | | import { dataQuery_selectByPage, dataQuery_selectFields } from "@/api/api"; |
| | | import { ElMessage } from "element-plus"; |
| | | import store from "@/store"; |
| | | |
| | | import menuTool from "@/assets/js/Map/menuTool"; |
| | | import WKT from "terraformer-wkt-parser"; |
| | | const emits = defineEmits(["spatialClose"]); |
| | | const setSpatialClose = () => { |
| | | menuTool.setClearLocation("ç©ºé´æ¥è¯¢"); |
| | | emits("spatialClose", false); |
| | | }; |
| | | const dialogVisible = ref(false); |
| | |
| | | count: 0, |
| | | wkt: null, |
| | | hasGeom: 1, |
| | | |
| | | filter: "", |
| | | name: "", |
| | | }); |
| | | const condOption = ref([]); |
| | |
| | | value: "", |
| | | cut: "", |
| | | }); |
| | | //å®ä½æ¾ç¤º |
| | | const spaceLocation = (index, row) => { |
| | | var geom = menuTool.decr(row.geom); |
| | | |
| | | var wkt = WKT.parse(geom); |
| | | menuTool.spaceLocation(wkt); |
| | | }; |
| | | //defineProps æ¥æ¥æ¶ç»ä»¶çä¼ å¼ |
| | | const props = defineProps({ |
| | | layerData: Object, |
| | | }); |
| | | const setdialogRefresh = () => { |
| | | listData.value.filter = ""; |
| | | listData.value.pageIndex = 1; |
| | | listData.value.pageSize = 10; |
| | | |
| | | var res = attributeData.value[0]; |
| | | conditionChange(res); |
| | | setQueySpatialData(); |
| | | }; |
| | | const handleSizeChange = (res) => { |
| | | listData.value.pageSize = res; |
| | | setQueySpatialData(); |
| | |
| | | |
| | | //æ¥è¯¢åè¡¨æ°æ® |
| | | const setQueySpatialData = async () => { |
| | | listData.value.name = listData.value.name.replaceAll("_", ""); |
| | | const data = await dataQuery_selectByPage(listData.value); |
| | | if (data.code != 200) { |
| | | return ElMessage.error("ç©ºé´æ¥è¯¢å¤±è´¥"); |
| | |
| | | }; |
| | | |
| | | const setQueySpatialFields = async () => { |
| | | const data = await dataQuery_selectFields({ name: listData.value.name }); |
| | | const data = await dataQuery_selectFields({ |
| | | ns: "mn", |
| | | tab: listData.value.name, |
| | | }); |
| | | if (data.code != 200) { |
| | | return ElMessage.error("åæ®µæ¥è¯¢å¤±è´¥"); |
| | | } |
| | | |
| | | attributeData.value = data.result; |
| | | |
| | | var std = data.result.filter((res) => { |
| | | if (res.showtype > 0) { |
| | | return res; |
| | | } |
| | | }); |
| | | attributeData.value = std; |
| | | fieldOption.value = std; |
| | | conditionChange(data.result[0]); |
| | | setQueySpatialData(); |
| | | }; |
| | | const setInsertDialog = () => { |
| | | if (!formSql.value.value) { |
| | | return ElMessage.error("请è¾å
¥è¦æ¥è¯¢çåæ°"); |
| | | } |
| | | dialogVisible.value = false; |
| | | if (listData.value.filter != "") { |
| | | listData.value.filter += " and "; |
| | | } |
| | | const val = null; |
| | | if (formSql.value.cut === "long" || formSql.value.cut === "integer") { |
| | | val = parseInt(formSql.value.value); |
| | | } else if (formSql.value.cut === "double") { |
| | | if (formSql.value.value.indexOf(".") != -1) { |
| | | val = parseInt(formSql.value.value); |
| | | } else { |
| | | val = parseFloat(formSql.value.value).toFixed(1); |
| | | } |
| | | } else if (formSql.value.cut == "date" || formSql.value.cut == "datetime") { |
| | | var time = new Date(formSql.value.value); |
| | | var m = time.getMonth() + 1; |
| | | var d = time.getDate(); |
| | | var y = time.getFullYear(); |
| | | val = "'" + y + "-" + add0(m) + "-" + add0(d) + "'"; |
| | | } else { |
| | | val = "'" + formSql.value.value + "'"; |
| | | } |
| | | listData.value.filter += |
| | | formSql.value.field + " " + formSql.value.type + " " + val; |
| | | |
| | | var res = attributeData.value[0]; |
| | | conditionChange(res); |
| | | setQueySpatialData(); |
| | | }; |
| | | const conditionChange = (res) => { |
| | | formSql.value.value = ""; |
| | | formSql.value.field = res.field; |
| | | formSql.value.cut = res.type; |
| | | const type = res.type; |
| | | |
| | | var type = res.type; |
| | | var std = []; |
| | | if (type == "text" || type == "blob") { |
| | | std = config.conditions[0]; |
| | |
| | | value: std[i], |
| | | }); |
| | | } |
| | | debugger; |
| | | condOption.value = str; |
| | | formSql.value.type = std[0]; |
| | | }; |
| | | |
| | | //页é¢åå§å |
| | | const startQueryData = () => { |
| | | listData.value.wkt = store.state.spatialQueryData.wkt; |
| | | listData.value.name = "lunarplacenane"; |
| | | listData.value.hasGeom = 1; |
| | | // |
| | | setQueySpatialFields(); |
| | | if (store.state.tab) { |
| | | listData.value.wkt = ""; |
| | | listData.value.name = store.state.tab.tab.replaceAll("moon:", ""); |
| | | listData.value.hasGeom = 1; |
| | | |
| | | setQueySpatialFields(); |
| | | } |
| | | }; |
| | | |
| | | watch( |
| | |
| | | }, |
| | | { deep: true } |
| | | ); |
| | | onMounted(() => {}); |
| | | onMounted(() => { |
| | | startQueryData(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div |
| | | v-drag |
| | | class="layerBox" |
| | | > |
| | | <div class="layerTitle"> |
| | | <div class="tileLeft"> |
| | | <div |
| | | @click="setCloseLayer" |
| | | class="titleImg" |
| | | > |
| | | <ArrowLeft /> |
| | | </div> |
| | | <div class="titleLable">å¾å±ç®¡ç</div> |
| | | </div> |
| | | <!-- <div |
| | | class="titleImg set" |
| | | @click="layerSetBox" |
| | | > |
| | | <Setting /> |
| | | </div> --> |
| | | </div> |
| | | <div class="layerContent"> |
| | | <el-tree |
| | | node-key="id" |
| | | :props="props" |
| | | :highlight-current="false" |
| | | :current-node-key="selectedNodeId" |
| | | :data="treeData" |
| | | :expand-on-click-node="false" |
| | | show-checkbox |
| | | @check="handleCheckChange" |
| | | ref="estreeRef" |
| | | v-if="treeData.length" |
| | | :default-checked-keys="DefaultId" |
| | | > |
| | | <template #default="{ node, data }"> |
| | | <span class="custom-tree-node"> |
| | | <span class="label">{{ node.label }}</span> |
| | | <!-- <span> |
| | | <a @click="append(data)"> Append </a> |
| | | <a style="margin-left: 8px" @click="remove(node, data)"> |
| | | Delete |
| | | </a> |
| | | </span> --> |
| | | <span |
| | | class="button" |
| | | v-if="data.isLayer == 1" |
| | | > |
| | | <el-dropdown trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <el-icon class="el-icon--right"> |
| | | <MoreFilled /> |
| | | </el-icon> |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item @click.native="clickdropdown(1, data)">详ç»</el-dropdown-item> |
| | | <el-dropdown-item |
| | | v-if="data.type == 3" |
| | | @click.native="clickdropdown(2, data)" |
| | | >屿§</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | </span> |
| | | </span> |
| | | </template> |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <layer-set |
| | | v-if="layerSetIsshow" |
| | | @SETstate="SETstate" |
| | | :layerTree="treeData" |
| | | @addlayer="addlayer" |
| | | @delLayer="delLayer" |
| | | ></layer-set> |
| | | <attribute-list |
| | | v-if="layerAttributeIsshow" |
| | | :layerData="layerObjData" |
| | | @spatialClose="setSpatialClose" |
| | | ></attribute-list> |
| | | <layer-detail |
| | | :layerData="layerObjData" |
| | | v-if="layerDetailIsshow" |
| | | @detailClose="detailClose" |
| | | ></layer-detail> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | onBeforeUnmount, |
| | | reactive, |
| | | defineProps, |
| | | defineEmits, |
| | | nextTick, |
| | | } from "vue"; |
| | | import layerSet from "./layerSet"; |
| | | import attributeList from "./attributeList"; |
| | | import layerDetail from "./layerDetail"; |
| | | import { useStore } from "vuex"; // å¼å
¥useStore æ¹æ³ |
| | | import { perms_selectLayers } from "@/api/api"; |
| | | import rightServer from "@/assets/js/Map/rightServer"; |
| | | import { ElMessage } from "element-plus"; |
| | | const store = useStore(); // è¯¥æ¹æ³ç¨äºè¿åstore å®ä¾ |
| | | const stretchValue = ref(""); |
| | | |
| | | let estreeRef = ref(); |
| | | |
| | | const transparence = ref(0); |
| | | var treeData = ref([]); |
| | | var layerListData = ref([]); |
| | | let menuOption = reactive([]); |
| | | |
| | | const layerSetIsshow = ref(false); |
| | | const layerAttributeIsshow = ref(false); |
| | | const layerDetailIsshow = ref(false); |
| | | const props = { |
| | | label: "cnName", |
| | | children: "children", |
| | | }; |
| | | const layerObjData = ref(null); |
| | | // å½åéä¸çèç¹ id |
| | | const selectedNodeId = ref(null as any); //åç±»åæè¨å¤ç |
| | | const emits = defineEmits(["setDobuleCloseLayer"]); |
| | | //é»è®¤éä¸id |
| | | const DefaultId = ref([]); |
| | | //å¾å±è®¾ç½®å¼¹æ¡ |
| | | const layerSetBox = () => { |
| | | layerSetIsshow.value = !layerSetIsshow.value; |
| | | }; |
| | | //å
³éç¶æ |
| | | const SETstate = (res) => { |
| | | layerSetIsshow.value = res; |
| | | }; |
| | | const setCloseLayer = () => { |
| | | store.state.doubleMenu = true; |
| | | store.state.doubleMap = false; |
| | | }; |
| | | //éæ©å¾å± |
| | | const handleCheckChange = (data, checked) => { |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | |
| | | let isCheck = checked.checkedKeys.indexOf(data.id) > -1; |
| | | // this.setVisiable(data, isCheck); |
| | | |
| | | let son = estreeRef.value.getCheckedNodes(); |
| | | |
| | | store.commit("SET_CHECKLAYER", son); |
| | | setVisiable(data, isCheck); |
| | | |
| | | // server.addLayer(layerArr, isCheck); |
| | | }; |
| | | const setVisiable = (treeNode, checked) => { |
| | | if (checked !== undefined) { |
| | | treeNode.checked = checked; |
| | | } else { |
| | | treeNode.checked = !treeNode.checked; |
| | | } |
| | | |
| | | if (treeNode.children) { |
| | | treeNode.children.forEach((item) => { |
| | | setVisiable(item, treeNode.checked); |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | if (!treeNode.isAdd) { |
| | | rightServer.addTreeData(treeNode); |
| | | return; |
| | | } |
| | | }; |
| | | const defaultLayer = (val) => { |
| | | val.forEach((e) => { |
| | | DefaultId.value.forEach((v) => { |
| | | if (e.id == v) { |
| | | setVisiable(e, true); |
| | | // return; |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | | const clickdropdown = (res, e) => { |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | layerObjData.value = e; |
| | | |
| | | if (res == 2) { |
| | | layerAttributeIsshow.value = true; |
| | | store.state.tab = e; |
| | | } else { |
| | | if (!e.checked) { |
| | | return ElMessage.error("请å
å¾éå¾å±"); |
| | | } |
| | | layerDetailIsshow.value = true; |
| | | } |
| | | }; |
| | | const setSpatialClose = (res) => { |
| | | layerAttributeIsshow.value = res; |
| | | }; |
| | | const detailClose = (res) => { |
| | | layerDetailIsshow.value = res; |
| | | }; |
| | | //ç¼è¾å¾å±æ |
| | | const addlayer = (res) => { |
| | | let node; |
| | | layerListData.value.forEach((e) => { |
| | | if (e.id == res.id) { |
| | | node = estreeRef.value.getNode(e); |
| | | } |
| | | }); |
| | | // å°åå¨ä¹åçnodeå¤ä»½ |
| | | let copyNode = { ...node }; |
| | | copyNode.previousSibling = { ...node.previousSibling }; |
| | | copyNode.nextSibling = { ...node.nextSibling }; |
| | | if (res.type === 1) { |
| | | // ä¸ç§» |
| | | if (node.previousSibling) { |
| | | // å é¤åå
çnode |
| | | estreeRef.value.remove(node.data); |
| | | // æ¿å°copyçnode |
| | | // nodeData = CircularJSON.parse(window.sessionStorage.getItem("menuNode")); |
| | | // å¤å¶è¯¥nodeå°æå®ä½ç½®(åæ°ï¼1. è¦å¢å çèç¹ç data 2. è¦å¢å çèç¹çåä¸ä¸ªèç¹ç dataãkey æè
node) |
| | | |
| | | estreeRef.value.insertBefore( |
| | | copyNode.data, |
| | | copyNode.previousSibling.data |
| | | ); |
| | | // window.sessionStorage.removeItem("menuNode"); |
| | | } |
| | | } else { |
| | | // ä¸ç§» |
| | | if (node.nextSibling) { |
| | | estreeRef.value.remove(node.data); |
| | | estreeRef.value.insertAfter(copyNode.data, copyNode.nextSibling.data); |
| | | } |
| | | } |
| | | }; |
| | | //å é¤å¾å±æ |
| | | const delLayer = (res) => { |
| | | // menuOption = menuOption.filter((item) => { |
| | | // return item.id != res; |
| | | // }); |
| | | // treeData = handleTree(menuOption, "id", "pid", "children"); |
| | | }; |
| | | |
| | | const getLayer = async () => { |
| | | const dt = await perms_selectLayers(); |
| | | if (dt.code == 200) { |
| | | treeData.value = setTreeData(dt.result).sort(function (a, b) { |
| | | return a.sort - b.sort; |
| | | }); |
| | | var std = []; |
| | | var terrainId = null; |
| | | dt.result.filter((res) => { |
| | | if (res.isLayer == 1 && res.status == 1) { |
| | | if (res.type == 1 && res.data == 2) { |
| | | if (!terrainId) { |
| | | terrainId = res.id; |
| | | std.push(res.id); |
| | | } |
| | | } else { |
| | | std.push(res.id); |
| | | } |
| | | } |
| | | }); |
| | | DefaultId.value = std; |
| | | |
| | | //æ·»å é»è®¤éä¸å¾å± |
| | | layerListData.value = dt.result; |
| | | defaultLayer(dt.result); |
| | | nextTick(() => { |
| | | let son = estreeRef.value.getCheckedNodes(); |
| | | |
| | | store.commit("SET_CHECKLAYER", son); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //æé æ |
| | | function setTreeData(source) { |
| | | let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ°æ®æ·±åº¦å
é |
| | | return cloneData.filter((father) => { |
| | | // å¾ªç¯ææé¡¹ |
| | | let branchArr = cloneData.filter((child) => father.id == child.pid); |
| | | if (branchArr.length > 0) { |
| | | branchArr.sort(function (a, b) { |
| | | return a.sort - b.sort; |
| | | }); |
| | | } |
| | | |
| | | branchArr.length > 0 ? (father.children = branchArr) : ""; // ç»ç¶çº§æ·»å ä¸ä¸ªchildren屿§ï¼å¹¶èµå¼ |
| | | // å±äºåä¸å¯¹è±¡é®é¢ï¼ä¾å¦ï¼ä»¤ a=bãc=1 ï¼ç¶åå令 b.c=c ï¼ é£ä¹ a.c=b.c=c=1 ï¼åçï¼åç»ä»¤ c.d=2 ,é£ä¹ a.c.d 乿¯=2ï¼ |
| | | // ç±æ¤å¾ªç¯å¤æ¬¡åï¼å°±è½å½¢æç¸åºçæ å½¢æ°æ®ç»æ |
| | | return father.pid == 0; // è¿åä¸çº§èå |
| | | }); |
| | | } |
| | | const functionGetLayer = (res) => { |
| | | getLayer(); |
| | | }; |
| | | onMounted(() => { |
| | | window.functionGetLayer = functionGetLayer; |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .layerBox { |
| | | width: 359px; |
| | | height: 680px; |
| | | right: calc(50% - 370px); |
| | | top: 105px; |
| | | position: absolute; |
| | | z-index: 30; |
| | | background: rgba(7, 8, 14, 0.8); |
| | | box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1); |
| | | .layerTitle { |
| | | width: calc(100% - 27px); |
| | | height: 42px; |
| | | background: #0e151f; |
| | | box-shadow: 0px 0px 6px 0px #080c13, |
| | | 0px 14px 16px 0px rgba(38, 47, 71, 0.68); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding-left: 7px; |
| | | padding-right: 20px; |
| | | color: white; |
| | | .tileLeft { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .titleLable { |
| | | font-size: 18px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | .titleImg { |
| | | width: 20px; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | color: rgba(104, 156, 255, 1); |
| | | } |
| | | .set { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .layerContent { |
| | | height: 625px; |
| | | padding: 0 8px; |
| | | overflow: auto; |
| | | overflow-y: auto; |
| | | } |
| | | .layerContent::-webkit-scrollbar { |
| | | width: 8px; |
| | | } |
| | | .layerContent::-webkit-scrollbar-thumb { |
| | | border-radius: 10px; |
| | | background: rgba(0, 0, 0, 0.2); |
| | | } |
| | | .layerContent::-webkit-scrollbar-track { |
| | | border-radius: 0; |
| | | background: rgba(0, 0, 0, 0); |
| | | } |
| | | .el-tree { |
| | | width: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .layerContent .el-tree-node__content { |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .layerContent .custom-tree-node { |
| | | overflow: hidden; |
| | | flex-shrink: 1; |
| | | flex-grow: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | font-size: 16px; |
| | | padding-right: 8px; |
| | | } |
| | | |
| | | .layerContent .custom-tree-node .label { |
| | | flex-shrink: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .layerContent .custom-tree-node .button { |
| | | flex-grow: 0; |
| | | flex-shrink: 0; |
| | | } |
| | | } |
| | | .dropdown_box { |
| | | position: relative; |
| | | } |
| | | |
| | | /deep/.el-select-dropdown__item { |
| | | font-size: 12px !important; |
| | | } |
| | | .el-tree { |
| | | background: transparent; |
| | | } |
| | | /deep/ .el-tree-node { |
| | | background: #0d131d; |
| | | color: #ffffff; |
| | | font-size: 20px; |
| | | font-weight: 300; |
| | | margin-top: 3px; |
| | | padding: 8px; |
| | | } |
| | | /deep/ .el-tree-node:focus > .el-tree-node__content { |
| | | background: transparent; |
| | | } |
| | | /deep/ .el-tree-node__content:hover { |
| | | background: #0d131d; |
| | | } |
| | | /deep/ .el-tree-node__children { |
| | | background: #1e2a3d; |
| | | .el-tree-node { |
| | | background: #1e2a3d; |
| | | margin-top: 0; |
| | | padding: 4px; |
| | | } |
| | | } |
| | | /deep/ |
| | | .el-tree--highlight-current |
| | | .el-tree-node.is-current |
| | | > .el-tree-node__content { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | .highlight { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | // .custom-tree-node { |
| | | // flex: 1; |
| | | // display: flex; |
| | | // align-items: center; |
| | | // justify-content: space-between; |
| | | // font-size: 16px; |
| | | // padding-right: 8px; |
| | | // } |
| | | |
| | | .el-dropdown-menu { |
| | | background: rgba(7, 8, 14, 0.8); |
| | | box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1); |
| | | color: #fff; |
| | | border: 0; |
| | | /deep/ .el-dropdown-menu__item { |
| | | color: #fff; |
| | | } |
| | | } |
| | | /deep/ .el-dropdown-menu__item:not(.is-disabled):focus { |
| | | background-color: rgba(104, 156, 255, 0.5); |
| | | |
| | | color: #fff; |
| | | } |
| | | </style> |
| | | <style> |
| | | .el-popper.is-light { |
| | | border: 1px solid rgba(7, 8, 14, 0.8) !important; |
| | | } |
| | | .el-scrollbar { |
| | | border: 0 !important; |
| | | } |
| | | </style> |
| | |
| | | @delLayer="delLayer" |
| | | ></layer-set> |
| | | <attribute-list |
| | | v-show="layerAttributeIsshow" |
| | | v-if="layerAttributeIsshow" |
| | | :layerData="layerObjData" |
| | | @spatialClose="setSpatialClose" |
| | | ></attribute-list> |
| | |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | layerObjData.value = e; |
| | | |
| | | if (res == 2) { |
| | | layerAttributeIsshow.value = true; |
| | | store.state.tab = e; |
| | | } else { |
| | | if (!e.checked) { |
| | | return ElMessage.error("请å
å¾éå¾å±"); |
| | |
| | | <template> |
| | | <div class="menus" v-show="fullScreen"> |
| | | <div |
| | | class="menus" |
| | | v-show="fullScreen" |
| | | > |
| | | <div class="logo_box"> |
| | | <img src="../assets/img/logo.png" alt="" class="logo" /> |
| | | <img |
| | | src="../assets/img/logo.png" |
| | | alt="" |
| | | class="logo" |
| | | /> |
| | | <div class="logo_name"> |
| | | <h3>æçå¤§æ°æ®å°ç空é´åæå±ç¤ºå¹³å°</h3> |
| | | <img src="../assets/img/logob.png" alt="" class="logo_name_b" /> |
| | | <img |
| | | src="../assets/img/logob.png" |
| | | alt="" |
| | | class="logo_name_b" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="menus_box"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="content_box" v-show="fullScreen"> |
| | | <div |
| | | class="content_box" |
| | | v-show="fullScreen" |
| | | > |
| | | <div |
| | | v-show="checkMenuFlag == 'l1'" |
| | | style="position: relative; display: flex" |
| | |
| | | <search v-if="thematicMapBtnState"> </search> |
| | | </div> |
| | | |
| | | <top-btn v-show="fullScreen" v-if="thematicMapBtnState"></top-btn> |
| | | <top-btn |
| | | v-show="fullScreen" |
| | | v-if="thematicMapBtnState" |
| | | ></top-btn> |
| | | |
| | | <thematic-map v-show="!thematicMapBtnState"></thematic-map> |
| | | <div class="fullScreen_btn" v-show="!fullScreen" @click="screen"></div> |
| | | <div |
| | | class="fullScreen_btn" |
| | | v-show="!fullScreen" |
| | | @click="screen" |
| | | ></div> |
| | | <div |
| | | v-show="store.state.doubleMenu" |
| | | class="setDobuleMap" |
| | | @click="setDoubleScreenMap" |
| | | > |
| | | <Operation /> |
| | | </div> |
| | | <div |
| | | @setDobuleCloseLayer="setDobuleCloseLayer" |
| | | v-show="store.state.doubleMap" |
| | | > |
| | | <double-layer></double-layer> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | |
| | | defineProps, |
| | | defineEmits, |
| | | } from "vue"; |
| | | import { Operation } from "@element-plus/icons-vue"; |
| | | import menuData from "@/assets/js/Map/menuData"; |
| | | import menuTool from "@/assets/js/Map/menuTool"; |
| | | //é¡¶é¨èå |
| | |
| | | import plotting from "@/views/plotting/plotting.vue"; |
| | | //åºå¾åæ¢ |
| | | import baseMapSwitching from "@/views/baseMapSwitching/baseMapSwitching.vue"; |
| | | //åå±èå |
| | | import doubleLayer from "@/views/layer/doubleLayer.vue"; |
| | | import store from "@/store"; |
| | | const menuOptions = ref([]); |
| | | const checkMenuFlag = ref(""); |
| | | let fullScreen = ref(true); |
| | | let thematicMapState = ref(true); |
| | | let thematicMapBtnState = ref(true); |
| | | const setDoubleScreenMap = () => { |
| | | store.state.doubleMenu = false; |
| | | store.state.doubleMap = true; |
| | | }; |
| | | const setDobuleCloseLayer = () => { |
| | | store.state.doubleMenu = true; |
| | | store.state.doubleMap = false; |
| | | }; |
| | | const setMenuClick = (res) => { |
| | | if (res.id == "l6") { |
| | | // fullScreen.value = !fullScreen.value; |
| | |
| | | } |
| | | } |
| | | } |
| | | .setDobuleMap { |
| | | position: absolute; |
| | | top: 105px; |
| | | right: calc(50% - 50px); |
| | | z-index: 30; |
| | | width: 20px; |
| | | height: 20px; |
| | | color: #d6e4ff; |
| | | background: rgba(7, 8, 14, 0.8); |
| | | box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1); |
| | | padding: 10px; |
| | | } |
| | | .menu_Image_box { |
| | | height: 778px; |
| | | width: 100%; |
| | |
| | | <!-- v-resizable="'right, bottom'" --> |
| | | <div class="spatialTitle"> |
| | | <label>ç©ºé´æ¥è¯¢</label> |
| | | <el-icon |
| | | @click="setSpatialClose" |
| | | :size="20" |
| | | > |
| | | <Close /> |
| | | </el-icon> |
| | | <div> |
| | | <el-icon |
| | | @click="setSpatialDownload" |
| | | :size="20" |
| | | style="margin-right: 20px;" |
| | | > |
| | | <Download /> |
| | | </el-icon> |
| | | <el-icon |
| | | @click="setSpatialClose" |
| | | :size="20" |
| | | > |
| | | <Close /> |
| | | </el-icon> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="spatialContentBox"> |
| | | <div class="spatialMenu"> |
| | |
| | | :data="tableData" |
| | | style="width: 100%; height: 73%;" |
| | | > |
| | | <el-table-column |
| | | align="center" |
| | | type="index" |
| | | label="åºå·" |
| | | width="70" |
| | | /> |
| | | <el-table-column |
| | | label="å®ä½" |
| | | width="100" |
| | | align="center" |
| | | > |
| | | <template #default="scope"> |
| | | <el-button |
| | | :icon="Location" |
| | | size="small" |
| | | @click.prevent="spaceLocation(scope.$index, scope.row)" |
| | | > |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-for="(item, index) in attributeData" |
| | | :key="index" |
| | |
| | | > |
| | | <el-option |
| | | v-for="item in fieldOption" |
| | | :key="item.id" |
| | | :key="item.field" |
| | | :label="item.alias" |
| | | :value="item.id" |
| | | :value="item.field" |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- ä¸è½½ä¿¡æ¯ --> |
| | | <el-dialog |
| | | v-model="downloaVisible" |
| | | title="ä¸è½½" |
| | | width="30%" |
| | | > |
| | | <div |
| | | class="spatialTable" |
| | | style="max-height: 40vh;" |
| | | > |
| | | <el-table |
| | | :data="downTable" |
| | | @selection-change="handleSelectionChange" |
| | | style="width: 100%; height: 73%;" |
| | | > |
| | | <el-table-column |
| | | type="selection" |
| | | width="55" |
| | | /> |
| | | <el-table-column |
| | | align="center" |
| | | type="index" |
| | | label="åºå·" |
| | | width="70" |
| | | /> |
| | | <el-table-column |
| | | align="center" |
| | | label="表å" |
| | | prop="cnName" |
| | | /> |
| | | </el-table> |
| | | <el-form |
| | | ref="downFormRef" |
| | | class="setdownFrom" |
| | | :model="downFrom" |
| | | :rules="rules" |
| | | label-width="180px" |
| | | > |
| | | <el-form-item |
| | | label="请è¾å
¥å¯ç :" |
| | | prop="pass" |
| | | > |
| | | <el-input |
| | | type="password" |
| | | v-model="downFrom.pass" |
| | | autocomplete="off" |
| | | show-password |
| | | placeholder="请è¾å
¥å¯ç " |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="è¯·åæ¬¡è¾å
¥å¯ç :" |
| | | prop="repass" |
| | | > |
| | | <el-input |
| | | type="password" |
| | | show-password |
| | | v-model="downFrom.repass" |
| | | autocomplete="off" |
| | | placeholder="è¯·åæ¬¡è¾å
¥å¯ç " |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="submitForm(downFormRef)" |
| | | >æäº¤</el-button> |
| | | <el-button size="small">åæ¶</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-dialog> |
| | | <iframe |
| | | id="Iframe1" |
| | | src="" |
| | | style="display: none; border: 0; padding: 0; height: 0; width: 0" |
| | | ></iframe> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | window.encrypt = null; |
| | | import { |
| | | ref, |
| | | onMounted, |
| | |
| | | defineEmits, |
| | | nextTick, |
| | | } from "vue"; |
| | | import menuTool from "@/assets/js/Map/menuTool"; |
| | | import config from "@/assets/js/Map/config"; |
| | | import { User, Lock, Plus, Refresh } from "@element-plus/icons-vue"; |
| | | import { dataQuery_selectByPage, dataQuery_selectFields } from "@/api/api"; |
| | | import { User, Lock, Plus, Refresh, Location } from "@element-plus/icons-vue"; |
| | | import { |
| | | dataQuery_selectByPage, |
| | | dataQuery_selectFields, |
| | | dataQuery_downloadDbData, |
| | | sign_getPublicKey, |
| | | } from "@/api/api"; |
| | | import { ElMessage } from "element-plus"; |
| | | import store from "@/store"; |
| | | |
| | | import WKT from "terraformer-wkt-parser"; |
| | | import type { FormInstance, FormRules } from "element-plus"; |
| | | import { removeToken, getToken } from "@/utils/auth"; |
| | | import JSEncrypt from "jsencrypt"; |
| | | const emits = defineEmits(["SETspatialClose"]); |
| | | const setSpatialClose = () => { |
| | | menuTool.setClearLocation("ç©ºé´æ¥è¯¢"); |
| | | emits("SETspatialClose", false); |
| | | }; |
| | | var encrypt = new JSEncrypt(); |
| | | const dialogVisible = ref(false); |
| | | const listData = ref({ |
| | | pageIndex: 1, |
| | |
| | | filter: "", |
| | | name: "", |
| | | }); |
| | | |
| | | const condOption = ref([]); |
| | | const fieldOption = ref([]); |
| | | const attributeData = ref([]); |
| | | const tableData = ref([]); |
| | | const menuList = ref([]); |
| | | const downTable = ref([]); |
| | | const formSql = ref({ |
| | | field: "", |
| | | type: "", |
| | | value: "", |
| | | cut: "", |
| | | }); |
| | | const downloaVisible = ref(false); |
| | | const isActive = ref(null); |
| | | const multipleSelection = ref([]); |
| | | const downFormRef = ref<FormInstance>(); |
| | | const downFrom = ref({ |
| | | pass: "", |
| | | repass: "", |
| | | }); |
| | | |
| | | const validatepass = (rule: any, value: any, callback: any) => { |
| | | 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(); |
| | | } |
| | | }; |
| | | const validaterepass = (rule: any, value: any, callback: any) => { |
| | | 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 if (value != downFrom.value.pass) { |
| | | callback(new Error("两次è¾å
¥å¯ç ä¸ä¸è´,è¯·éæ°è¾å
¥")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const rules = reactive<FormRules<typeof downFrom>>({ |
| | | pass: [{ validator: validatepass, trigger: "blur" }], |
| | | repass: [{ validator: validaterepass, trigger: "blur" }], |
| | | }); |
| | | |
| | | const submitForm = (formEl: FormInstance | undefined) => { |
| | | if (!formEl) return; |
| | | formEl.validate((valid) => { |
| | | if (valid) { |
| | | console.log("submit!"); |
| | | if (multipleSelection.value.length <= 0) { |
| | | ElMessage.error("è¯·éæ©è¦ä¸è½½ç表"); |
| | | } else { |
| | | setDownLoadFrom(); |
| | | } |
| | | } else { |
| | | console.log("erro submit!"); |
| | | return false; |
| | | } |
| | | }); |
| | | }; |
| | | const getpublickey = async () => { |
| | | const res = await sign_getPublicKey(); |
| | | if (res && res.code == 200) { |
| | | encrypt.setPublicKey(res.result); |
| | | } |
| | | }; |
| | | const setDownLoadFrom = async () => { |
| | | downloaVisible.value = false; |
| | | var entities = []; |
| | | var tabs = []; |
| | | |
| | | for (var i in multipleSelection.value) { |
| | | var tab = multipleSelection.value[i].tab; |
| | | if (tab.indexOf("moon:") > -1) { |
| | | tab = tab.replaceAll("moon:", ""); |
| | | } |
| | | tabs.push(tab); |
| | | var entity = tab; |
| | | if (entity.indexOf("_") > -1) { |
| | | entity = entity.replaceAll("_", ""); |
| | | } |
| | | entities.push(entity); |
| | | } |
| | | |
| | | var obj = { |
| | | pwd: encrypt.encrypt(downFrom.value.pass), |
| | | filter: listData.value.filter, |
| | | tabs: tabs, |
| | | entities: entities, |
| | | wkt: listData.value.wkt, |
| | | }; |
| | | const data = await dataQuery_downloadDbData(obj); |
| | | |
| | | if (data.code != 200 && !data.result) { |
| | | setClearDownload(); |
| | | return ElMessage.error("æ°æ®ä¸è½½å¤±è´¥"); |
| | | } |
| | | |
| | | var token = getToken(); |
| | | var url = |
| | | config.proxy + |
| | | "/dataLib/downloadFile?token=" + |
| | | token + |
| | | "&guid=" + |
| | | data.result + |
| | | "&pwd=" + |
| | | encodeURIComponent(downFrom.value.pass); |
| | | $("#Iframe1").attr("src", url).click(); |
| | | setClearDownload(); |
| | | }; |
| | | const setClearDownload = () => { |
| | | downFrom.value = { |
| | | pass: "", |
| | | repass: "", |
| | | }; |
| | | multipleSelection.value = []; |
| | | downTable.value = []; |
| | | }; |
| | | const handleSelectionChange = (res) => { |
| | | multipleSelection.value = res; |
| | | }; |
| | | //ä¸è½½ |
| | | const setSpatialDownload = () => { |
| | | downTable.value = menuList.value; |
| | | downloaVisible.value = true; |
| | | }; |
| | | //å®ä½æ¾ç¤º |
| | | const spaceLocation = (index, row) => { |
| | | var geom = menuTool.decr(row.geom); |
| | | |
| | | var wkt = WKT.parse(geom); |
| | | menuTool.spaceLocation(wkt); |
| | | }; |
| | | const handleSizeChange = (res) => { |
| | | listData.value.pageSize = res; |
| | | setQueySpatialData(); |
| | |
| | | setQueySpatialData(); |
| | | }; |
| | | const setMenuListClick = (res) => { |
| | | listData.value.name = res.name; |
| | | if (res.tab && res.tab.indexOf("moon:") > -1) { |
| | | listData.value.name = res.tab.replaceAll("moon:", ""); |
| | | } else { |
| | | listData.value.name = res.tab; |
| | | } |
| | | |
| | | isActive.value = res.id; |
| | | listData.value.filter = ""; |
| | | listData.value.pageIndex = 1; |
| | |
| | | }; |
| | | //æ¥è¯¢åè¡¨æ°æ® |
| | | const setQueySpatialData = async () => { |
| | | listData.value.name = listData.value.name.replaceAll("_", ""); |
| | | const data = await dataQuery_selectByPage(listData.value); |
| | | if (data.code != 200) { |
| | | return ElMessage.error("ç©ºé´æ¥è¯¢å¤±è´¥"); |
| | |
| | | }; |
| | | |
| | | const setQueySpatialFields = async () => { |
| | | const data = await dataQuery_selectFields({ name: listData.value.name }); |
| | | const data = await dataQuery_selectFields({ |
| | | ns: "mn", |
| | | tab: listData.value.name, |
| | | }); |
| | | if (data.code != 200) { |
| | | return ElMessage.error("åæ®µæ¥è¯¢å¤±è´¥"); |
| | | } |
| | | attributeData.value = data.result; |
| | | fieldOption.value = data.result; |
| | | |
| | | var std = data.result.filter((res) => { |
| | | if (res.showtype > 0) { |
| | | return res; |
| | | } |
| | | }); |
| | | |
| | | attributeData.value = std; |
| | | fieldOption.value = std; |
| | | conditionChange(data.result[0]); |
| | | setQueySpatialData(); |
| | | }; |
| | |
| | | formSql.value.value = ""; |
| | | formSql.value.field = res.field; |
| | | formSql.value.cut = res.type; |
| | | const type = res.type; |
| | | |
| | | var type = res.type; |
| | | var std = []; |
| | | if (type == "text" || type == "blob") { |
| | | std = config.conditions[0]; |
| | |
| | | |
| | | menuList.value = str; |
| | | listData.value.wkt = store.state.spatialQueryData.wkt; |
| | | var val_name = menuList.value[0].tab.replaceAll("moon:", ""); |
| | | val_name = val_name.replaceAll("_", ""); |
| | | listData.value.name = val_name; |
| | | listData.value.name = menuList.value[0].tab.replaceAll("moon:", ""); |
| | | isActive.value = menuList.value[0].id; |
| | | |
| | | listData.value.hasGeom = 1; |
| | | // |
| | | setQueySpatialFields(); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | startQueryData(); |
| | | getpublickey(); |
| | | }); |
| | | </script> |
| | | |
| | |
| | | height: calc(100% - 10px); |
| | | width: calc(80% - 20px); |
| | | padding: 10px; |
| | | |
| | | .spatialTable { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | | |
| | | .el-table /deep/ .el-table__header-wrapper tr th { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | color: #d6e4ff; |
| | | } |
| | | // ä¿®æ¹æ¯è¡æ ·å¼ï¼ |
| | | .el-table /deep/ .el-table__row { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | color: #d6e4ff; |
| | | } |
| | | .el-table /deep/ .el-table__body tr.current-row > td { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | .el-table /deep/ .el-table__body tr:hover > td { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | // ä¿®æ¹è¡¨æ ¼æ¯è¡è¾¹æ¡çæ ·å¼ï¼ |
| | | .el-table /deep/ td, |
| | | .el-table /deep/ th.is-leaf { |
| | | // border-bottom: 1px solid #409eff; |
| | | // border-right: 1px solid #409eff; |
| | | } |
| | | .el-table /deep/ .el-table__cell { |
| | | padding: 8px 0; |
| | | } |
| | | // è®¾ç½®è¡¨æ ¼æ¯è¡çé«åº¦ï¼ |
| | | .el-table /deep/ .el-table__header tr, |
| | | .el-table /deep/ .el-table__header th { |
| | | height: 50px; |
| | | } |
| | | .el-table__body tr, |
| | | .el-table__body td { |
| | | height: 50px; |
| | | padding: 0; |
| | | } |
| | | // è®¾ç½®è¡¨æ ¼è¾¹æ¡é¢è²ï¼ |
| | | |
| | | .el-table--border::after, |
| | | .el-table--group::after { |
| | | width: 0; |
| | | } |
| | | .el-table::before { |
| | | height: 0; |
| | | } |
| | | } |
| | | } |
| | | .spatialBottom { |
| | | padding: 10px; |
| | |
| | | ::-webkit-scrollbar-track:hover { |
| | | background: rgba(38, 47, 71, 0); |
| | | } |
| | | .spatialTable { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | | |
| | | .el-table /deep/ .el-table__header-wrapper tr th { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | color: #d6e4ff; |
| | | } |
| | | // ä¿®æ¹æ¯è¡æ ·å¼ï¼ |
| | | .el-table /deep/ .el-table__row { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | color: #d6e4ff; |
| | | } |
| | | .el-table /deep/ .el-table__body tr.current-row > td { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | .el-table /deep/ .el-table__body tr:hover > td { |
| | | background-color: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | // ä¿®æ¹è¡¨æ ¼æ¯è¡è¾¹æ¡çæ ·å¼ï¼ |
| | | .el-table /deep/ td, |
| | | .el-table /deep/ th.is-leaf { |
| | | // border-bottom: 1px solid #409eff; |
| | | // border-right: 1px solid #409eff; |
| | | } |
| | | .el-table /deep/ .el-table__cell { |
| | | padding: 8px 0; |
| | | } |
| | | // è®¾ç½®è¡¨æ ¼æ¯è¡çé«åº¦ï¼ |
| | | .el-table /deep/ .el-table__header tr, |
| | | .el-table /deep/ .el-table__header th { |
| | | height: 50px; |
| | | } |
| | | .el-table__body tr, |
| | | .el-table__body td { |
| | | height: 50px; |
| | | padding: 0; |
| | | } |
| | | // è®¾ç½®è¡¨æ ¼è¾¹æ¡é¢è²ï¼ |
| | | |
| | | .el-table--border::after, |
| | | .el-table--group::after { |
| | | width: 0; |
| | | } |
| | | .el-table::before { |
| | | height: 0; |
| | | } |
| | | } |
| | | .setdownFrom { |
| | | margin-top: 10px; |
| | | /deep/.el-form-item__label { |
| | | color: #d6e4ff !important; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | <style lang="less" > |