From 14178da59b9d568c808dc086530841a956638f69 Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Wed, 27 Sep 2023 13:37:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=EF=BC=8C=E5=9C=A8=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E3=80=81=E4=BF=AE=E6=94=B9=E3=80=81=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=AD=89=E6=93=8D=E4=BD=9C=E5=90=8E=E4=BF=9D=E6=8C=81=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化地图数据管理,在新增、修改、删除等操作后保持展开状态 --- .../MapDataManagement/src/AddForm.vue | 5 +- .../MapDataManagement/src/EditForm.vue | 5 +- .../packages/MapDataManagement/src/index.vue | 57 +++++++++++++++++-- .../packages/js/utils/mapDataService.js | 9 ++- 4 files changed, 67 insertions(+), 9 deletions(-) diff --git a/data-room-ui/packages/MapDataManagement/src/AddForm.vue b/data-room-ui/packages/MapDataManagement/src/AddForm.vue index 675344e1..0d7092e1 100644 --- a/data-room-ui/packages/MapDataManagement/src/AddForm.vue +++ b/data-room-ui/packages/MapDataManagement/src/AddForm.vue @@ -289,7 +289,10 @@ export default { geoJson: geoJson }).then(res => { this.mapFormVisible = false - this.$emit('refresh') + this.$emit('refresh', { + id: res, + parentId: this.mapForm.parentId + }) }) }) }, diff --git a/data-room-ui/packages/MapDataManagement/src/EditForm.vue b/data-room-ui/packages/MapDataManagement/src/EditForm.vue index 5f4829cd..c8ca5c12 100644 --- a/data-room-ui/packages/MapDataManagement/src/EditForm.vue +++ b/data-room-ui/packages/MapDataManagement/src/EditForm.vue @@ -286,7 +286,10 @@ export default { geoJson: geoJson }).then(res => { this.mapFormVisible = false - this.$emit('refresh') + this.$emit('refresh', { + id: this.mapForm.id, + parentId: this.mapForm.parentId + }) }) }) }, diff --git a/data-room-ui/packages/MapDataManagement/src/index.vue b/data-room-ui/packages/MapDataManagement/src/index.vue index 07cfa6fb..3b74ee3b 100644 --- a/data-room-ui/packages/MapDataManagement/src/index.vue +++ b/data-room-ui/packages/MapDataManagement/src/index.vue @@ -144,11 +144,11 @@ import table from 'data-room-ui/js/utils/table.js' -import {mapList, mapDelete, uploadGeoJson, mapCascadeDelete} from 'data-room-ui/js/utils/mapDataService' +import {mapList, mapDelete, uploadGeoJson, mapCascadeDelete, mapInfo} from 'data-room-ui/js/utils/mapDataService' import AddForm from "./AddForm" import EditForm from "./EditForm" import vueJsonViewer from 'vue-json-viewer' @@ -218,6 +218,7 @@ export default { searchLoading: false, geoJsonVisible: false, lazyResolveIds: [], + lazyResolveMap: new Map(), searchForm: { searchKey: '', level: null, @@ -270,6 +271,7 @@ export default { }) }, getDataList() { + this.lazyResolveMap.clear() this.searchLoading = true this.loadingText = '正在加载地图数据...' mapList(this.searchForm).then(res => { @@ -284,6 +286,38 @@ export default { this.$refs.table.store.states.treeData[this.lazyResolveIds[i]].expanded = false } }, + /** + * 新增、删除、修改等操作成功后刷新数据,不改变展开状态 + * @param cbObj + */ + refreshData(cbObj) { + let parentId = cbObj.parentId + if (this.lazyResolveMap.get(parentId)) { + // 刷新父节点 + const { data, treeNode, resolve } = this.lazyResolveMap.get(parentId) + // debugger + this.$set(this.$refs.table.store.states.lazyTreeNodeMap, parentId, []) + this.load(data, treeNode, resolve) + return + } + if (parentId === '0' || parentId === 0) { + // 刷新根节点 + this.getDataList() + return + } + mapInfo(parentId).then((res) => { + parentId = res.parentId + if (this.lazyResolveMap.get(parentId)) { + // 刷新父节点的父节点 + const { data, treeNode, resolve } = this.lazyResolveMap.get(parentId) + this.$set(this.$refs.table.store.states.lazyTreeNodeMap, parentId, []) + this.load(data, treeNode, resolve) + } else { + // 刷新根节点 + this.getDataList() + } + }) + }, getMoreLevel(level) { return '级别' + level }, @@ -292,6 +326,7 @@ export default { this.$refs.addForm.init() }, load(data, treeNode, resolve) { + this.lazyResolveMap.set(data.id, { data, treeNode, resolve }) this.lazyResolveIds.push(data.id) mapList({ parentId: data.id @@ -314,7 +349,10 @@ export default { type: 'success', message: '删除成功' }) - this.getDataList() + this.refreshData({ + id: map.id, + parentId: map.parentId + }) } else { this.deleteMapCascade(map) } @@ -351,7 +389,10 @@ export default { type: 'success', message: '删除成功' }) - this.getDataList() + this.refreshData({ + id: map.id, + parentId: map.parentId + }) }).catch(() => { }) }).catch(() => { @@ -414,7 +455,11 @@ export default { message: '上传成功' }) this.geoJsonVisible = false - this.getDataList() + // 刷新 + this.refreshData({ + id: this.currentMap.id, + parentId: this.currentMap.parentId + }) }).catch(err => { this.$message({ type: 'error', diff --git a/data-room-ui/packages/js/utils/mapDataService.js b/data-room-ui/packages/js/utils/mapDataService.js index c91023c7..878e4098 100644 --- a/data-room-ui/packages/js/utils/mapDataService.js +++ b/data-room-ui/packages/js/utils/mapDataService.js @@ -66,6 +66,12 @@ const repeatCheck = (params = {}, flag = false) => Vue.prototype.$dataRoomAxios. */ const nameRepeatCheck = (params = {}, flag = false) => Vue.prototype.$dataRoomAxios.post('/bigScreen/map/repeat/name', params, flag) +/** + * 根据父编码解析父级json中的子级 + * @param id + */ +const mapInfo = (id = '-1') => Vue.prototype.$dataRoomAxios.get(`/bigScreen/map/info/${id}`) + export { mapList, mapAdd, @@ -75,5 +81,6 @@ export { getMapChildFromGeoJson, uploadGeoJson, repeatCheck, - nameRepeatCheck + nameRepeatCheck, + mapInfo }