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 }