From 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3 Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期三, 29 十一月 2023 16:50:16 +0800 Subject: [PATCH] 坡度分析下载修改 --- src/views/layer/layerManage.vue | 438 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 283 insertions(+), 155 deletions(-) diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue index 7d5b0c9..6b86e42 100644 --- a/src/views/layer/layerManage.vue +++ b/src/views/layer/layerManage.vue @@ -23,7 +23,7 @@ <a style="margin-left: 8px" @click="remove(node, data)"> Delete </a> - </span> --> + </span>--> <span class="button" v-if="!data.isTemporaryLayer"> <el-dropdown trigger="click"> <span class="el-dropdown-link"> @@ -44,6 +44,10 @@ @click.native="clickdTemporary(1, data)">缂栬緫</el-dropdown-item> <el-dropdown-item v-if="data.shpType == 'temporaryLayer'" @click.native="clickdTemporary(2, data)">鍒犻櫎</el-dropdown-item> + <el-dropdown-item v-if="data.shpType == 'temporaryLayer'" + @click.native="clickdTemporary(3, data)">瀹氫綅</el-dropdown-item> + <el-dropdown-item v-if="data.shpType == 'temporaryLayer'" @click.native="clickdTemporary(4, data)">涓嬭浇 + [ Shp ]</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> @@ -53,8 +57,8 @@ </el-tree> </div> </div> - <layer-set v-if="layerSetIsshow" @SETstate="SETstate" :layerTree="treeData" @addlayer="addlayer" - @delLayer="delLayer"></layer-set> + <layer-set v-if="layerSetIsshow" @SETstate="SETstate" :layerTree="treeData" @addlayer="addlayer" @delLayer="delLayer" + @onSubmit="editLayer"></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> @@ -70,15 +74,25 @@ nextTick, watch, } from "vue"; +import $ from "jquery"; import layerSet from "./layerSet"; import attributeList from "./attributeList"; import layerDetail from "./layerDetail"; import { useStore } from "vuex"; // 寮曞叆useStore 鏂规硶 -import { perms_selectLayers, mark_selectByPageAndCount, mark_insert, mark_deletes, mark_update } from "@/api/api"; +import { + perms_selectLayers, + mark_selectByPageAndCount, + mark_insert, + mark_deletes, + mark_update, + comprehensive_downloadShp, +} from "@/api/api"; import server from "@/assets/js/Map/server"; import { ElMessage } from "element-plus"; import temporaryTool from "@/assets/js/Map/temporaryTools"; import json from "@/assets/js/colorValue"; +import menuTool from "@/assets/js/Map/menuTool"; +import { removeToken, getToken } from "@/utils/auth"; const store = useStore(); // 璇ユ柟娉曠敤浜庤繑鍥瀞tore 瀹炰緥 const stretchValue = ref(""); const emits = defineEmits(["setCloseLayer"]); @@ -117,6 +131,10 @@ const temporary = ref(new Date().getTime()); const clickdTemporary = async (res, data) => { if (res == 1) { + let son = estreeRef.value.getCheckedKeys(); + if (son.indexOf(data.id) < 0) { + return ElMessage(data.cnName + "鍥惧眰娌℃湁鍕鹃��,鏃犳硶杩涜缂栬緫"); + } if (store.state.editTemporaryId) { var id = store.state.editTemporaryId; var edit_id = sgworld.Creator.SimpleGraphic.SimpleGraphicObj.indexOf(id); @@ -127,115 +145,160 @@ } store.state.editTemporaryId = data.id; sgworld.Creator.SimpleGraphic.SimpleGraphicObj.push(data.id); - sgworld.Creator.SimpleGraphic.edit(true, { editProp: false }); + sgworld.Creator.SimpleGraphic.edit(true, { + editProp: false, + tipText: { + ActiveText: "鐐瑰嚮婵�娲荤紪杈�", + }, + enableDelete: false, + }); } else if (res == 2) { - var layerId = [] - layerId.push(data.sid) - const data1 = await mark_deletes({ ids: layerId.toString() }) - if (data1.code != 200) return + var layerId = []; + layerId.push(data.sid); + const data1 = await mark_deletes({ ids: layerId.toString() }); + if (data1.code != 200) return; temporaryTool.removeTemporaryLayer(data); + + // estreeRef.value.setCheckedKeys(checkedKeys, true); + // for (var i in keys) { + // checkedKeys.push(keys[i]); + // } var keys = estreeRef.value.getCheckedKeys(); - const checkedKeys = []; - for (var i in keys) { - checkedKeys.push(keys[i]) - } var val = treeData.value[0].children; for (var i = 0; i < val.length; i++) { if (val[i].id == data.id) { val.splice(i, 1); } } - if (checkedKeys.indexOf(data.id) > -1) { - checkedKeys.splice(checkedKeys.indexOf(data.id), 1) + + var std = []; + for (var i in keys) { + var layer_res = estreeRef.value.getNode(keys[i]).data; + if (layer_res.shpType && layer_res.shpType == 'temporaryLayer') { + std.push(keys[i]); + } else if (layer_res.isLayer == 1) { + std.push(keys[i]); + } } - if (checkedKeys.indexOf(temporary.value) > -1) { - checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1) + estreeRef.value.setCheckedKeys([], true); + console.log(data.id); + nextTick(() => { + console.log(std); + estreeRef.value.setCheckedKeys(std, true); + }); + } else if (res == 3) { + let son = estreeRef.value.getCheckedKeys(); + if (son.indexOf(data.id) < 0) { + return ElMessage(data.cnName + "鍥惧眰娌℃湁鍕鹃��,鏃犳硶杩涜瀹氫綅"); } - estreeRef.value.setCheckedKeys(checkedKeys, true); + temporaryTool.locationTemporaryLayer(data); + } else if (res == 4) { + var name = null; + if (res.type == 'label') { + name = data.text; + + } else { + name = data.cnName; + } + var obj = { + bak: null, + fillColor: data.material, + id: data.sid, + name: name, + opacity: data.materialAlpha, + type: data.type, + wkt: temporaryTool.getWKT(data), + } + downLoadShp(obj) + } }; +const downLoadShp = (res) => { + + $.ajax({ + url: config.proxy + "/comprehensive/downloadShp?token=" + getToken(), + type: "POST", + data: JSON.stringify([res]), + dataType: "json", // html銆乯son銆乯sonp銆乻cript銆乼ext + contentType: "application/json", // "application/x-www-form-urlencoded" + success: (rs) => { + if (rs && rs.code == 200) { + var a = document.createElement("a"); // 鍒涘缓涓�涓猘鏍囩鍏冪礌 + a.style.display = "none"; // 璁剧疆鍏冪礌涓嶅彲瑙� + + a.href = + config.proxy + + "/comprehensive/downloadFile?token=" + + getToken() + + "&guid=" + + rs.result; + + document.body.appendChild(a); // 鍔犲叆 + a.click(); // 瑙﹀彂鐐瑰嚮,涓嬭浇 + document.body.removeChild(a); // 閲婃斁 + } + }, + error: function (e) { }, + }); + +} //閫夋嫨鍥惧眰 const handleCheckChange = (data, checked) => { layerAttributeIsshow.value = false; layerDetailIsshow.value = false; - let isCheck = checked.checkedKeys.indexOf(data.id) > -1; - if (isCheck) { - let son = estreeRef.value.getCheckedNodes().reverse(); - for (var i in son) { - var layerArr = son[i]; - layerArr.checked = true; - if (layerArr.shpType && layerArr.shpType == 'temporaryLayer') {//涓存椂鍥惧眰娣诲姞 - temporaryTool.addTemporaryTool(layerArr); - } else { - server.addTreeData(layerArr); - } - } - } else { + // let isCheck = checked.checkedKeys.indexOf(data.id) > -1; - if (data.isLayer == 0) { - var layers = data.children; - for (var i in layers) { - if (layers[i].shpType && layers[i].shpType == 'temporaryLayer') {//涓存椂鍥惧眰娣诲姞 - temporaryTool.removeTemporaryLayer(layers[i]); + let son = estreeRef.value.getCheckedNodes(); + store.commit("SET_CHECKLAYER", son); + temporaryTool.removeTemporaryLayerAll(); + server.delLayerAll(); + var alphaGroup = []; + var idGroup = []; + for (var i in server.layerList) { + const layerData = server.layerList[i]; + if (layerData.layerData && layerData.id != server.wmsLayerId) { + alphaGroup.push(layerData.layerData.alpha); + idGroup.push(layerData.layerData.id); + } + } + server.delLayerAll(); + + var setGeoWms = []; + var geoUrl = null; + var layerTreeDate = estreeRef.value.getCheckedNodes().reverse(); + for (var i in layerTreeDate) { + var layerArr = layerTreeDate[i]; + if (layerArr.shpType && layerArr.shpType == "temporaryLayer") { + temporaryTool.addTemporaryTool(layerArr); + } else { + if (layerArr.isLayer == 1) { + if (layerArr.category == 2 && layerArr.type == 3) { + if (layerArr.tab != "moon:geo_mappable_unit") { + var id = layerArr.id; + if (idGroup.indexOf(id) > -1) { + var alpha = alphaGroup[idGroup.indexOf(id)]; + if (alpha == 1) { + setGeoWms.push(layerArr.tab); + geoUrl = layerArr.url; + } else { + server.setAddGeoWmsLayer(layerArr, alpha); + } + } else { + setGeoWms.push(layerArr.tab); + geoUrl = layerArr.url; + } + } } else { - server.delLayer(layers[i].id) + server.addTreeData(layerArr); } } - } else { - if (data.shpType && data.shpType == 'temporaryLayer') {//涓存椂鍥惧眰娣诲姞 - temporaryTool.removeTemporaryLayer(data); - } else { - server.delLayer(data.id) - } } - + } + if (setGeoWms.length > 0) { + server.addGeoServerMmsLayers(setGeoWms, geoUrl); } - - - - //鍒ゆ柇鏄惁涓虹埗绾� - // if (data.isLayer == 0) {//涓虹埗绾� - - // let son = estreeRef.value.getCheckedNodes().reverse(); - // for(var i in ) - - - - - // } else {//涓哄瓙绾� - - // } - - - // - // if (data.shpType && data.shpType == 'temporaryLayer') { - // if (isCheck) { - // temporaryTool.addTemporaryTool(data); - // } else if(!isCheck) { - // temporaryTool.removeTemporaryLayer(data); - // } - // } else { - // if (isCheck) { - // let son = estreeRef.value.getCheckedNodes().reverse(); - // for (var i in son) { - // var layerArr = son[i]; - // layerArr.checked = true; - // if (layerArr.category == 2 && layerArr.type == 3) { - - // if (layerArr.tab != "moon:geo_mappable_unit") { - - // server.addTreeData(layerArr) - // } - // } else { - // server.addTreeData(layerArr); - // } - // } - // store.commit("SET_CHECKLAYER", son); - // } else { - // - // } - // } + menuTool.setImageLayerChange(); }; const setVisiable = (treeNode, checked) => { if (checked !== undefined) { @@ -276,11 +339,16 @@ layerAttributeIsshow.value = true; store.state.tab = e; } else if (res == 3) { - let son = estreeRef.value.getCheckedNodes() - var layerId = getCheckedLayerID(e, son); + let son = estreeRef.value.getCheckedKeys(); + var layerId = getCheckedLayerPID(e, son); if (layerId.length <= 0) { return ElMessage.error("璇峰厛鍕鹃�夊浘灞�"); } + layerDetailIsshow.value = true; + store.state.layerGroups = { + id: e.id, + layerIds: layerId, + }; } else { var val = estreeRef.value!.getCheckedKeys(false); if (val.indexOf(e.id) > -1) { @@ -289,30 +357,61 @@ return ElMessage.error("璇峰厛鍕鹃�夊浘灞�"); } } - }) - + }); }; -const getCheckedLayerID = (res, result) => { +const getCheckedLayerPID = (res, result) => { var temp = []; + var ids = result; + let forFn = (data) => { - data.children.forEach(item => { - if (item.children) { - forFn(item) - } else { - if (result.indexOf(item.id) > -1) { - temp.push(item.id) + if (data.children) { + data.children.forEach((item) => { + if (item.children) { + forFn(item); + } else { + if (ids.indexOf(item.id) > -1) { + temp.push(item); + } } + }); + } else { + if (ids.indexOf(data.id) > -1) { + temp.push(data); } - }) - } + } + }; + forFn(res); return temp; }; + +const getCheckedLayerChildren = (res) => { + var temp2 = []; + let forFn = (data) => { + if (data.children) { + data.children.forEach((item) => { + if (item.children) { + forFn(item); + } else { + temp2.push(item); + } + }); + } else { + temp2.push(data); + } + }; + forFn(res); + return temp2; +}; + const setSpatialClose = (res) => { layerAttributeIsshow.value = res; }; const detailClose = (res) => { - layerDetailIsshow.value = res; + if (res.type == 0) { + estreeRef.value.getNode(store.state.layerGroups.id).data.alpha = res.val; + } + layerDetailIsshow.value = res.flag; }; //缂栬緫鍥惧眰鏍� const addlayer = (res) => { @@ -322,7 +421,16 @@ node = estreeRef.value.getNode(e); } }); + + var checKey = estreeRef.value.getCheckedKeys(); + let checkid = []; + for (var i in checKey) { + if (estreeRef.value.getNode(checKey[i]).data.isLayer == 1) { + checkid.push(checKey[i]) + } + } // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤 + estreeRef.value.setCheckedKeys([], true); let copyNode = { ...node }; copyNode.previousSibling = { ...node.previousSibling }; copyNode.nextSibling = { ...node.nextSibling }; @@ -348,6 +456,7 @@ estreeRef.value.insertAfter(copyNode.data, copyNode.nextSibling.data); } } + estreeRef.value.setCheckedKeys(checkid, true); }; //鍒犻櫎鍥惧眰鏍� const delLayer = (res) => { @@ -356,24 +465,42 @@ // }); // treeData = handleTree(menuOption, "id", "pid", "children"); }; +const editLayer = () => { + var layer = store.state.chekNowLayers; + var std = []; + for (var i in layer) { + if (layer[i].isLayer == 1) { + std.push(layer[i].id) + } + } + estreeRef.value.setCheckedKeys([], true); + nextTick(() => { + estreeRef.value.setCheckedKeys(std, true); + }) + +} const setRestLayerData = () => { let son = estreeRef.value.getCheckedNodes().reverse(); + + var setGeoWms = []; + var geoUrl = null; for (var i in son) { var layerArr = son[i]; + console.log(layerArr.isLayer); layerArr.checked = true; if (layerArr.category == 2 && layerArr.type == 3) { if (layerArr.tab != "moon:geo_mappable_unit") { - // setGeoWms.push(layerArr.tab); - // url = layerArr.url; - server.addTreeData(layerArr); + setGeoWms.push(layerArr.tab); + geoUrl = layerArr.url; + // server.addTreeData(layerArr); } } else { server.addTreeData(layerArr); } } - // if (setGeoWms.length > 0) { - // server.addGeoServerMmsLayers(setGeoWms, url); - // } + if (setGeoWms.length > 0) { + server.addGeoServerMmsLayers(setGeoWms, geoUrl); + } store.commit("SET_CHECKLAYER", son); }; const getLayer = async () => { @@ -381,24 +508,37 @@ // server.delLayerAll(); const dt = await perms_selectLayers(); if (dt.code == 200) { - treeData.value = setTreeData(dt.result).sort(function (a, b) { + var va_data = dt.result.filter((res) => { + if (res.isLayer == 0) { + res.alpha = 1; + } + return res; + }); + treeData.value = setTreeData(va_data).sort(function (a, b) { return a.orderNum - b.orderNum; }); const comperLayer = await mark_selectByPageAndCount({ pageIndex: 1, pageSize: 100000, name: null, - }) + }); var children = []; if (comperLayer.code == 200 && comperLayer.result) { for (var i in comperLayer.result) { - var slayer = JSON.parse(comperLayer.result[i].wkt); - slayer.sid = comperLayer.result[i].id; - children.push(slayer) + var layer = comperLayer.result[i] + if (layer.wkt && layer.wkt.indexOf("shpType") > -1 && layer.wkt.indexOf("shpType") > -1) { + + var slayer = JSON.parse(comperLayer.result[i].wkt); + + slayer.sid = comperLayer.result[i].id; + children.push(slayer); + + } } } + treeData.value.unshift({ - cnName: "涓存椂鍥惧眰", + cnName: "鑷畾涔夊浘灞�", level: 1, pid: 0, isLayer: 0, @@ -430,28 +570,10 @@ //娣诲姞榛樿閫変腑鍥惧眰 layerListData.value = dt.result; defaultLayer(dt.result); - // var setGeoWms = []; - // var url = null; - // for (var i in adLayer) { - // var layer = adLayer[i]; - // if (layer.category == 2 && layer.type == 3) { - // if (layer.tab != "moon:geo_mappable_unit") { - // // setGeoWms.push(layer.tab); - // // url = layer.url; - // server.addTreeData(layer); - // } - // } else { - // server.addTreeData(layer); - // } - // } - // if (setGeoWms.length > 0) { - // server.addGeoServerMmsLayers(setGeoWms, url); - // } - //; nextTick(() => { let son = estreeRef.value.getCheckedNodes(); - setRestLayerData() + setRestLayerData(); store.commit("SET_CHECKLAYER", son); }); } @@ -477,24 +599,29 @@ } const addTemporaryLayer = async (res) => { var obj = { - id: res.id, name: res.cnName, - wkt: JSON.stringify(res) - } + wkt: JSON.stringify(res), + }; + var checkedKeys = estreeRef.value.getCheckedKeys(); const data = await mark_insert(obj); - if (data.code != 200 || !data.result) return + if (data.code != 200 || !data.result) return; store.state.temporaryLayer = null; res.sid = data.result; treeData.value[0].children.push(res); - var id = res.id; + nextTick(() => { - var checkedKeys = estreeRef.value.getCheckedKeys(); - if (checkedKeys.indexOf(temporary.value) > -1) { - checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1) + var std = [res.id]; + for (var i in checkedKeys) { + var layer_res = estreeRef.value.getNode(checkedKeys[i]).data; + if (layer_res.shpType && layer_res.shpType == 'temporaryLayer') { + std.push(checkedKeys[i]); + } else if (layer_res.isLayer == 1) { + std.push(checkedKeys[i]); + } } - checkedKeys.push(id); - estreeRef.value.setCheckedKeys(checkedKeys, true); + estreeRef.value.setCheckedKeys([], true); + estreeRef.value.setCheckedKeys(std, true); temporaryTool.addTemporaryTool(res); }); }; @@ -506,7 +633,7 @@ for (var i = 0; i < val.length; i++) { if (val[i].id == id) { val[i].cnName = res; - setEditLayerChange(val[i]) + setEditLayerChange(val[i]); } } defaultExpanded.value = [treeData.value[0].id]; @@ -516,35 +643,33 @@ var val = treeData.value[0].children; var checkedKeys = estreeRef.value.getCheckedKeys(); if (checkedKeys.indexOf(temporary.value) > -1) { - checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1) + checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1); } for (var i = 0; i < val.length; i++) { if (val[i].id == res) { obj.sid = val[i].sid; val[i] = obj; - setEditLayerChange(obj) + setEditLayerChange(obj); } } nextTick(() => { - - estreeRef.value.setCheckedKeys(checkedKeys, true); - }); }; const setEditLayerChange = async (res) => { var obj = { id: res.sid, name: res.cnName, - wkt: JSON.stringify(res) - } - const data = await mark_update(obj) - if (data.code != 200) return -} + wkt: JSON.stringify(res), + }; + const data = await mark_update(obj); + if (data.code != 200) return; +}; watch( () => store.state.restLayer, (nVal, oVal) => { if (nVal) { + setRestLayerData(); } }, @@ -554,6 +679,7 @@ () => store.state.temporaryLayer, (nVal, oVal) => { if (nVal) { + addTemporaryLayer(nVal); } }, @@ -563,6 +689,7 @@ () => store.state.editTemporarName, (nVal, oVal) => { if (nVal) { + editTemporaryLayerName(nVal); } }, @@ -572,6 +699,7 @@ () => store.state.editTemporaryback, (nVal, oVal) => { if (nVal) { + editTemporaryBackById(nVal); } }, -- Gitblit v1.9.3