fix: 优化地图数据管理,在新增、修改、删除等操作后保持展开状态

优化地图数据管理,在新增、修改、删除等操作后保持展开状态
main
hong.yang 2 years ago
parent 4e34bb64a7
commit 14178da59b

@ -289,7 +289,10 @@ export default {
geoJson: geoJson geoJson: geoJson
}).then(res => { }).then(res => {
this.mapFormVisible = false this.mapFormVisible = false
this.$emit('refresh') this.$emit('refresh', {
id: res,
parentId: this.mapForm.parentId
})
}) })
}) })
}, },

@ -286,7 +286,10 @@ export default {
geoJson: geoJson geoJson: geoJson
}).then(res => { }).then(res => {
this.mapFormVisible = false this.mapFormVisible = false
this.$emit('refresh') this.$emit('refresh', {
id: this.mapForm.id,
parentId: this.mapForm.parentId
})
}) })
}) })
}, },

@ -144,11 +144,11 @@
</div> </div>
<add-form <add-form
ref="addForm" ref="addForm"
@refresh="getDataList" @refresh="refreshData"
/> />
<edit-form <edit-form
ref="editForm" ref="editForm"
@refresh="getDataList" @refresh="refreshData"
/> />
<el-dialog <el-dialog
:close-on-click-modal="false" :close-on-click-modal="false"
@ -195,7 +195,7 @@
<script> <script>
import table from 'data-room-ui/js/utils/table.js' 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 AddForm from "./AddForm"
import EditForm from "./EditForm" import EditForm from "./EditForm"
import vueJsonViewer from 'vue-json-viewer' import vueJsonViewer from 'vue-json-viewer'
@ -218,6 +218,7 @@ export default {
searchLoading: false, searchLoading: false,
geoJsonVisible: false, geoJsonVisible: false,
lazyResolveIds: [], lazyResolveIds: [],
lazyResolveMap: new Map(),
searchForm: { searchForm: {
searchKey: '', searchKey: '',
level: null, level: null,
@ -270,6 +271,7 @@ export default {
}) })
}, },
getDataList() { getDataList() {
this.lazyResolveMap.clear()
this.searchLoading = true this.searchLoading = true
this.loadingText = '正在加载地图数据...' this.loadingText = '正在加载地图数据...'
mapList(this.searchForm).then(res => { mapList(this.searchForm).then(res => {
@ -284,6 +286,38 @@ export default {
this.$refs.table.store.states.treeData[this.lazyResolveIds[i]].expanded = false 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) { getMoreLevel(level) {
return '级别' + level return '级别' + level
}, },
@ -292,6 +326,7 @@ export default {
this.$refs.addForm.init() this.$refs.addForm.init()
}, },
load(data, treeNode, resolve) { load(data, treeNode, resolve) {
this.lazyResolveMap.set(data.id, { data, treeNode, resolve })
this.lazyResolveIds.push(data.id) this.lazyResolveIds.push(data.id)
mapList({ mapList({
parentId: data.id parentId: data.id
@ -314,7 +349,10 @@ export default {
type: 'success', type: 'success',
message: '删除成功' message: '删除成功'
}) })
this.getDataList() this.refreshData({
id: map.id,
parentId: map.parentId
})
} else { } else {
this.deleteMapCascade(map) this.deleteMapCascade(map)
} }
@ -351,7 +389,10 @@ export default {
type: 'success', type: 'success',
message: '删除成功' message: '删除成功'
}) })
this.getDataList() this.refreshData({
id: map.id,
parentId: map.parentId
})
}).catch(() => { }).catch(() => {
}) })
}).catch(() => { }).catch(() => {
@ -414,7 +455,11 @@ export default {
message: '上传成功' message: '上传成功'
}) })
this.geoJsonVisible = false this.geoJsonVisible = false
this.getDataList() //
this.refreshData({
id: this.currentMap.id,
parentId: this.currentMap.parentId
})
}).catch(err => { }).catch(err => {
this.$message({ this.$message({
type: 'error', type: 'error',

@ -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) 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 { export {
mapList, mapList,
mapAdd, mapAdd,
@ -75,5 +81,6 @@ export {
getMapChildFromGeoJson, getMapChildFromGeoJson,
uploadGeoJson, uploadGeoJson,
repeatCheck, repeatCheck,
nameRepeatCheck nameRepeatCheck,
mapInfo
} }

Loading…
Cancel
Save