From 3ddb9448058989b4f3662e38d45fc1d887c337cf Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 24 八月 2023 17:08:48 +0800 Subject: [PATCH] 投影图层管理功能修改 --- /dev/null | 321 --------------------- src/views/baseMapSwitching/baseMapSwitching.vue | 54 ++- src/api/api.js | 9 src/assets/js/Map/server.js | 23 + src/views/layer/layerManage.vue | 25 + src/assets/js/Map/projectionServer.js | 409 +++++++++++++++++++++++++++ src/store/index.ts | 1 7 files changed, 497 insertions(+), 345 deletions(-) diff --git a/src/api/api.js b/src/api/api.js index e6a93e0..5f662c2 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -70,3 +70,12 @@ export function dataQuery_selectByGid(params) { return request.get('/dataQuery/selectByGid', { params: params }); } + +//鎺堟潈绠$悊=>鏌ヨ褰撳墠鐢ㄦ埛鐨勬姇褰卞浘灞傛巿鏉� +export function perms_selectProjectLayers(params) { + return request.get('/perms/selectProjectLayers', { params: params }); +} + + + + diff --git a/src/assets/js/Map/projectionServer.js b/src/assets/js/Map/projectionServer.js new file mode 100644 index 0000000..40d54f5 --- /dev/null +++ b/src/assets/js/Map/projectionServer.js @@ -0,0 +1,409 @@ +import { getToken } from "@/utils/auth"; +//閰嶇疆鏂囦欢鍦板潃 +import config from "./config"; +import store from "@/store"; +const projection = { + layerList: [], + addTreeData(treeNode) { + this.delLayerAll(); + //鍒ゆ柇鏄惁涓轰唬鐞� + if (treeNode.proxy) { + this.addProxyAddress(treeNode); //鏈変唬鐞� + } else { + this.addUrlAddress(treeNode); //鏃犱唬鐞� + } + }, + //浠g悊鍦板潃 + addProxyAddress(res) { + //鍒ゆ柇鏁版嵁绫诲瀷 + switch (res.data) { + case 1: //鏁板瓧姝e皠褰卞儚鍥� + 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: //鏁板瓧姝e皠褰卞儚鍥� + 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); + let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider( + "tms鏈嶅姟", + { + url: Cesium.buildModuleUrl(url + "/{z}/{x}/{reverseY}.png"), + }, + "0", + undefined, + true, + "" + ); + this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" }); + }, + //鍔犺浇WMTS鏈嶅姟 + setAddWmtsLayer(res) { + var url = this.getLayrUrl(res); + var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({ + sourceType: "wmts", + url: url, + layer: "", + format: "image/png", + tileMatrixSetID: "GoogleCRS84Quad01", + tileMatrixLabels: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + ], + style: "", + tilingScheme: new Cesium.GeographicTilingScheme({ + ellipsoid: Cesium.Ellipsoid.MOON, + }), + }); + this.layerList.push({ + id: res.id, + layerData: urlTemplateImageryProvider._primitive, + type: "wmts", + }); + }, + //鍔犺浇鍦板舰鏈嶅姟 + setAddTearrinLayer(res) { + this.setChangeTearrinLayer(); + var url = this.getLayrUrl(res); + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + url: url, + }); + Viewer.terrainProvider = window.terrainLayer; + this.layerList.push({ id: res.id, type: "dem" }); + }, + //鍔犺浇WMS鏈嶅姟 + setAddWmsLayer(res) { + var url = this.getLayrUrl(res); + var img_layer = sgworld.Creator.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 = Viewer.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, // 鑷姩浠庝腑蹇冨紑濮嬭秴娓呭寲妯″瀷锛歠alse + cullWithChildrenBounds: true, // 浣跨敤瀛愰」杈圭晫浣撶Н鐨勫苟闆嗘潵鍓旈櫎鍥惧潡锛歵rue + cullRequestsWhileMoving: true, + cullRequestsWhileMovingMultiplier: 10, // 鍊艰秺灏忚兘澶熸洿蹇殑鍓旈櫎锛�60 + preloadWhenHidden: true, + preferLeaves: true, // 棰勮瀛愯妭鐐癸細false + maximumMemoryUsage: 768, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙 + progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯� + dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩 + dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟 + dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿 + }) + ); + 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.Viewer.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.Viewer.imageryLayers.remove(e.layerData); + break; + case "tms": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "dem": + window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( + {} + ); + break; + case "tileset": + window.Viewer.scene.primitives.remove(e.layerData) + break; + } + this.layerList.splice(i, 1); + } + }); + }, + + delLayerAll() { + this.layerList.forEach((e, i) => { + switch (e.type) { + case "wmts": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "tms": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "dem": + window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( + {} + ); + break; + case "tileset": + window.Viewer.scene.primitives.remove(e.layerData) + break; + } + this.layerList.splice(i, 1); + }); + this.layerList = []; + }, + //鍔犺浇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}`; + let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer); + this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" }); + }, + getFeatureInfo(html) { + store.state.details.showDetails = false; + var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length; + var end = html.indexOf("</caption>"); + var tab = html.substr(start, end - start); + var std = html.substr(html.indexOf('<th>'), html.lastIndexOf('</th>') - html.indexOf('<th>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</th>') + var gindex = null; + for (var i = 0; i < std.length; i++) { + if (std[i].indexOf('gid') > -1) { + gindex = i; + break; + } + } + if (!gindex) return + var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>') + var gid = parseInt(str[gindex].replaceAll( + '<td>', '' + )) + if (gid && tab) { + + store.state.details = { + gid: gid, + tab: tab, + showDetails: true + } + } + + }, +}; +export default projection; diff --git a/src/assets/js/Map/server copy.js b/src/assets/js/Map/server copy.js deleted file mode 100644 index b7dfc89..0000000 --- a/src/assets/js/Map/server copy.js +++ /dev/null @@ -1,321 +0,0 @@ -import { getToken } from "@/utils/auth"; -//閰嶇疆鏂囦欢鍦板潃 -import config from "./config"; - -const server = { - layerList: [], - addTreeData(treeNode) { - if (!treeNode.checked) { - this.delLayer(treeNode.id); - return; - } - // WMTS -> 鍥剧墖 - // DOM\DEM 褰╄壊\榛戠櫧 - - // TMS -> DOM銆丏EM - // DOM->鍥剧墖 - // DEM -> Terrain - - // URL -> URL - // TMS -> URL DOM DEM - // WMTS -> URL DOM DEM - // WMS -> URL - // WFS -> URL - // Tileset -> URL` - //comment on table lf.sys_res is '璧勬簮琛�'; - // comment on column lf.sys_res.id is '涓婚敭ID'; - // comment on column lf.sys_res.pid is '鐖禝D锛�0-鏍硅妭鐐�'; - // comment on column lf.sys_res.cn_name is '涓枃鍚嶇О'; - // comment on column lf.sys_res.en_name is '鑻辨枃鍚嶇О'; - // comment on column lf.sys_res.type is '绫诲瀷锛�1-鍥惧眰缁�,2-鏅�氬浘灞�,3-浠g悊鍥惧眰'; - // comment on column lf.sys_res.status is '鐘舵�侊細-1-搴熷純锛�0-鍋滅敤锛�1-鍚敤'; - // comment on column lf.sys_res.category is '绫诲瀷锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - // comment on column lf.sys_res.firm is '鍘傚晢锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝'; - // comment on column lf.sys_res.url is '鏈嶅姟鍦板潃'; - // comment on column lf.sys_res.test is '娴嬭瘯鍦板潃'; - // comment on column lf.sys_res.proxy is '浠g悊鍦板潃'; - // comment on column lf.sys_res.descr is '鎻忚堪'; - // comment on column lf.sys_res.depid is '鍗曚綅缂栫爜'; - // comment on column lf.sys_res.dirid is '椤圭洰缂栫爜'; - // comment on column lf.sys_res.img is '缂╃暐鍥�'; - // comment on column lf.sys_res.level is '灞傜骇锛�0-鏍硅妭鐐�'; - // comment on column lf.sys_res.sort is '鎺掑簭'; - // comment on column lf.sys_res.create_user is '鍒涘缓浜篒D'; - // comment on column lf.sys_res.create_time is '鍒涘缓鏃堕棿'; - // comment on column lf.sys_res.update_user is '鏇存柊浜篒D'; - // comment on column lf.sys_res.update_time is '鏇存柊鏃堕棿'; - // comment on column lf.sys_res.bak is '澶囨敞'; - // 浠g悊锛�/proxy/{token}/4 - // 鍦板潃锛歨ttp://192.168.20.83:8088/MoonServer + proxy.replace("{token}", token) - // order_num -> sort - // serve_type -> category - - // switch (treeNode.type) { - // case 1: - // treeNode.useUrl = treeNode.url; - // break; - // case 2: - // treeNode.useUrl = treeNode.url; - // break; - // case 3: - // treeNode.useUrl = treeNode.url; - // - // break; - // } - - - // - // if (treeNode.resid && treeNode.resid > 0) { - - // } else { - - // } - - //鍒ゆ柇鏄惁浠g悊 - //treeNode.proxy鏈夋暟鎹唬鐞�,鏁版嵁涓嶄唬鐞� - - - if (treeNode.proxy) { - this.addProxyAddress(treeNode);//鏈変唬鐞� - } else { - this.addUrlAddress(treeNode);//鏃犱唬鐞� - } - - - // this.addGisServer(treeNode); - // if (treeNode.firm == 2) { - // this.addGeoServer(treeNode); - // } else { - // this.addGisServer(treeNode); - // } - }, - addProxyAddress(res) { - switch (res.data) { - case 1://dom - this.addGisServer(res) - break; - case 2://鍦板舰 - this.addGisServer(res) - break; - case 3: - this.addGisServer(res) - break; - case 4: - this.addGisServer(res) - break; - case 5: - this.addGisServer(res) - break; - case 6: - this.addGisServer(res) - break; - case 7: - this.addGisServer(res) - break; - case 8: - break; - } - }, - - addUrlAddress(res) { - switch (res.data) { - case 1://dom - this.addGeoServer(res) - break; - case 2://鍦板舰 - this.addGeoServer(res) - break; - case 3: - this.addGeoServer(res) - break; - case 4: - this.addGeoServer(res) - break; - case 5: - this.addGeoServer(res) - break; - case 6: - this.addGeoServer(res) - break; - case 7: - this.addGeoServer(res) - break; - case 8: - break; - } - }, - - - //娓呴櫎鍥惧眰 - delLayer(code) { - this.layerList.forEach((e, i) => { - if (e.id === code) { - switch (e.type) { - case "wmts": - window.Viewer.imageryLayers.remove(e.layerData.item); - break; - case "tms": - window.Viewer.imageryLayers.remove(e.layerData.item); - break; - case "dem": - window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( - {} - ); - break; - } - this.layerList.splice(i, 1); - } - }); - }, - addGisServer(treeNode) { - // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - //鍒ゆ柇鏈嶅姟鏄惁宸插瓨鍦� - var service = []; - if (this.layerList.length > 0) { - service = this.layerList.filter((res) => { - if (res.id == treeNode.id) { - return res - } - }) - } - if (service.length > 0) return - var url = null; - - if (treeNode.proxy && treeNode.proxy.indexOf('{token}') > -1) { - const token = getToken() - url = config.proxy + treeNode.proxy.replaceAll("{token}", token) - } - console.log(url) - switch (treeNode.type) { - case 1: - this.AddTmsLayer(url, treeNode.data, treeNode.id); - break; - case 2: - this.AddWmtesLayer(url, treeNode.id); - break; - case 3: - break; - case 4: - break; - } - }, - addGeoServer(treeNode) { - // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - - switch (treeNode.type) { - case 1: - break; - case 2: - - break; - case 3: - this.AddGeoWmsLayer(treeNode.url, treeNode.id, treeNode.tab); - break; - case 4: - break; - } - }, - //娣诲姞geoserver鏈嶅姟wms鏈嶅姟 - AddGeoWmsLayer(url, id, tab) { - if (!tab) return - - let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ - // url: "http://192.168.22.198:8090/geoserver/moon/wms", - url: url, - layers: "moon:geo_alkaline_rock_suite", - parameters: { - transparent: true, - format: "image/png", - srs: "EPSG:104903", - styles: "", - }, - tileWidth: 512, - tileHeight: 512, - }); - layer.name = `Wms_Layer${id}`; - - let img_layer = Viewer.imageryLayers.addImageryProvider(layer); - this.layerList.push({ id: id, layerData: img_layer, type: "wmts" }); - }, - //娣诲姞GisServer鏈嶅姟TMS鍒囩墖鏈嶅姟 - AddTmsLayer(url, data, id) { - // var urlTemplateImageryProvider = new SmartEarth.Cesium.UrlTemplateImageryProvider({ - // url: url + "/{z}/{x}/{y}.png" - // }); - // Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider); - - if (data == '0' || data == '1') { - let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider( - "tms鏈嶅姟", - { - url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"), - }, - "0", - undefined, - true, - "" - ); - this.layerList.push({ id: id, layerData: img_layer, type: "tms" }); - } else if (data == '2') { - window.terrainLayer = new Cesium.CesiumTerrainProvider({ - url: url - }); - Viewer.terrainProvider = window.terrainLayer - this.layerList.push({ id: id, type: "dem", }); - } - }, - AddWmtesLayer(url, id) { - var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({ - sourceType: "wmts", - url: url, - layer: "", - format: "image/png", - tileMatrixSetID: "GoogleCRS84Quad01", - tileMatrixLabels: [ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - "14", - "15", - "16", - "17", - "18", - ], - style: "", - tilingScheme: new Cesium.GeographicTilingScheme({ - ellipsoid: Cesium.Ellipsoid.MOON, - }), - }); - console.log(urlTemplateImageryProvider); - this.layerList.push({ - id: id, - layerData: urlTemplateImageryProvider._primitive, - type: "wmts", - }); - }, - AddDemLayer(url, id) { - var terrain = new Cesium.CesiumTerrainProvider({ - url: config.moonTerrain, - // url: url, - tilingScheme: new Cesium.GeographicTilingScheme({ - ellipsoid: Cesium.Ellipsoid.MOON, - }), - }); - window.Viewer.terrainProvider = terrain; - - // let img_layer = Viewer.imageryLayers.addImageryProvider(layer); - this.layerList.push({ id: id, type: "dem" }); - }, -}; -export default server; diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js index 65ea768..067126a 100644 --- a/src/assets/js/Map/server.js +++ b/src/assets/js/Map/server.js @@ -338,6 +338,29 @@ } }); }, + + delLayerAll() { + this.layerList.forEach((e, i) => { + switch (e.type) { + case "wmts": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "tms": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "dem": + window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( + {} + ); + break; + case "tileset": + window.Viewer.scene.primitives.remove(e.layerData) + break; + } + this.layerList.splice(i, 1); + }); + + }, //鍔犺浇GeoServer-WMS鏈嶅姟 setAddGeoWmsLayer(res) { var url = this.getLayrUrl(res); diff --git a/src/store/index.ts b/src/store/index.ts index 29cfd72..38a190b 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -26,6 +26,7 @@ tab: null, showDetails: false, }, + restLayer: false, }, mutations: { //鑾峰彇鐧诲綍Code diff --git a/src/views/baseMapSwitching/baseMapSwitching.vue b/src/views/baseMapSwitching/baseMapSwitching.vue index 9755b1c..835953d 100644 --- a/src/views/baseMapSwitching/baseMapSwitching.vue +++ b/src/views/baseMapSwitching/baseMapSwitching.vue @@ -8,7 +8,7 @@ <div class="titleImg"> <ArrowLeft /> </div> - <div class="titleLable"></div> + <div class="titleLable"> 鎶曞奖鍥惧眰绠$悊</div> </div> </div> <div class="baseMapSwitching_content"> @@ -17,9 +17,10 @@ class="baseMapSwitching_list_tr" v-for="(item, i) in list" :key="i" + @click="setProjectionLayerChange(item)" > <div class="baseMapSwitching_list_tr_name"> - <span>{{ item.name }}</span> + <span :class="{ 'baseMapActive' : activceIndex == item.id}">{{item.cnName }}</span> </div> </div> </div> @@ -36,23 +37,33 @@ defineProps, defineEmits, } from "vue"; -let list = ref([ - { - name: "绛夎窛绂绘煴鎶曞奖 ( <75)", - type: "poi", - icon: "d.png", - }, - { - name: "鍖楁瀬骞抽潰鎶曞奖", - type: "line", - icon: "x.png", - }, - { - name: "鍗楁瀬骞抽潰鎶曞奖", - type: "cover", - icon: "m.png", - }, -]); +import { perms_selectProjectLayers } from "@/api/api"; +import server from "@/assets/js/Map/server"; +import store from "@/store"; + +import projection from "@/assets/js/Map/projectionServer"; +let list = ref([]); +const activceIndex = ref(); +const setProjectionLayerChange = (res) => { + server.delLayerAll(); + projection.addTreeData(res); + activceIndex.value = res.id; + store.state.restLayer = true; +}; +const getProjectionLayer = async () => { + const data = await perms_selectProjectLayers(); + if (data.code != 200) return; + var result = data.result.filter((res) => { + if (res.isLayer == 1) { + return res; + } + }); + list.value = result.reverse(); + if (!activceIndex.value) { + setProjectionLayerChange(list.value[0]); + } +}; +getProjectionLayer(); </script> <style lang="less" scoped> @@ -78,7 +89,7 @@ align-items: center; .titleLable { - font-size: 24px; + font-size: 18px; font-family: Source Han Sans CN; font-weight: 400; color: #ffffff; @@ -122,6 +133,9 @@ margin-left: 10px; } } + .baseMapActive { + color: #73a1fa !important; + } } } } diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue index 623181b..e686c42 100644 --- a/src/views/layer/layerManage.vue +++ b/src/views/layer/layerManage.vue @@ -97,6 +97,7 @@ defineProps, defineEmits, nextTick, + watch, } from "vue"; import layerSet from "./layerSet"; import attributeList from "./attributeList"; @@ -147,12 +148,17 @@ let isCheck = checked.checkedKeys.indexOf(data.id) > -1; // this.setVisiable(data, isCheck); - let son = estreeRef.value.getCheckedNodes(); - + let son = estreeRef.value.getCheckedNodes().reverse(); + server.delLayerAll(); + for (var i in son) { + var layerArr = son[i]; + layerArr.checked = true; + server.addTreeData(layerArr); + } store.commit("SET_CHECKLAYER", son); - setVisiable(data, isCheck); + // setVisiable(data, isCheck); - // server.addLayer(layerArr, isCheck); + // }; const setVisiable = (treeNode, checked) => { if (checked !== undefined) { @@ -250,6 +256,8 @@ }; const getLayer = async () => { + store.state.restLayer = false; + server.delLayerAll(); const dt = await perms_selectLayers(); if (dt.code == 200) { treeData.value = setTreeData(dt.result).sort(function (a, b) { @@ -300,6 +308,15 @@ return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� }); } +watch( + () => store.state.restLayer, + (nVal, oVal) => { + if (nVal) { + getLayer(); + } + }, + { deep: true } +); getLayer(); onMounted(() => {}); </script> -- Gitblit v1.9.3