From 53e11cdc61e09f092b00b9454342b0c63642e13d Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Tue, 26 Sep 2023 15:59:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9C=B0=E5=9B=BE=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E9=87=8D=E3=80=81=E6=98=BE=E7=A4=BA=E7=AD=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 地图数据管理功能优化查重、显示等问题 --- .../MapDataManagement/src/AddForm.vue | 25 ++++++++++++-- .../MapDataManagement/src/EditForm.vue | 33 +++++++++++++++++-- .../packages/MapDataManagement/src/index.vue | 32 ++++++++++++------ .../packages/js/utils/mapDataService.js | 12 +++++-- 4 files changed, 85 insertions(+), 17 deletions(-) diff --git a/data-room-ui/packages/MapDataManagement/src/AddForm.vue b/data-room-ui/packages/MapDataManagement/src/AddForm.vue index aaa29c16..675344e1 100644 --- a/data-room-ui/packages/MapDataManagement/src/AddForm.vue +++ b/data-room-ui/packages/MapDataManagement/src/AddForm.vue @@ -97,6 +97,11 @@ :label="level.label" :value="level.value" /> + import vueJsonViewer from 'vue-json-viewer' -import { getMapChildFromGeoJson, mapAdd, repeatCheck } from 'data-room-ui/js/utils/mapDataService' +import { getMapChildFromGeoJson, mapAdd, repeatCheck, nameRepeatCheck } from 'data-room-ui/js/utils/mapDataService' export default { name: 'AddForm', @@ -171,6 +176,9 @@ export default { autoParseNextLevelShow () { // geoJson 不为空 return !this.isEmpty(this.mapForm.geoJson) + }, + outRangeLabel() { + return `级别${this.mapForm.level}`; } }, data () { @@ -191,6 +199,18 @@ export default { } }) } + const validateName = (rule, value, callback) => { + nameRepeatCheck({ + parentId: this.mapForm.parentId, + mapName: value + }).then(res => { + if (res) { + callback(new Error('地图名称已存在')) + } else { + callback() + } + }) + } return { mapFormVisible: false, geoJsonVisible: false, @@ -212,7 +232,8 @@ export default { { validator: validateCode, trigger: 'blur' } ], name: [ - { required: true, message: '请输入地图名称', trigger: 'blur' } + { required: true, message: '请输入地图名称', trigger: 'blur' }, + { validator: validateName, trigger: 'blur' } ], level: [ { required: true, message: '请选择地图级别', trigger: 'change' } diff --git a/data-room-ui/packages/MapDataManagement/src/EditForm.vue b/data-room-ui/packages/MapDataManagement/src/EditForm.vue index 5212f062..5f4829cd 100644 --- a/data-room-ui/packages/MapDataManagement/src/EditForm.vue +++ b/data-room-ui/packages/MapDataManagement/src/EditForm.vue @@ -93,6 +93,11 @@ :label="level.label" :value="level.value" /> + import _ from 'lodash' import vueJsonViewer from 'vue-json-viewer' -import { mapUpdate, getMapChildFromGeoJson } from 'data-room-ui/js/utils/mapDataService' +import { mapUpdate, getMapChildFromGeoJson, nameRepeatCheck } from 'data-room-ui/js/utils/mapDataService' export default { name: 'EditForm', @@ -169,6 +174,9 @@ export default { autoParseNextLevelShow () { // geoJson 不为空,且未上传过(说明是刚上传的) return !this.isWhitespace(this.mapForm.geoJson) && this.mapForm.uploadedGeoJson === 0 + }, + outRangeLabel() { + return `级别${this.mapForm.level}`; } }, data () { @@ -181,7 +189,7 @@ export default { getMapChildFromGeoJson(this.mapForm.parentId).then(children => { let repeat = false children.forEach(child => { - if (child.exist && child.name === value) { + if (child.exist && child.name === value && child.existId !== this.mapForm.id) { repeat = true } }) @@ -192,6 +200,24 @@ export default { } }) } + const validateName = (rule, value, callback) => { + if (this.mapForm.parentId !== '0') { + // 不需要校验 + callback() + return + } + nameRepeatCheck({ + id: this.mapForm.id, + parentId: this.mapForm.parentId, + mapName: value + }).then(res => { + if (res) { + callback(new Error('地图名称已存在')) + } else { + callback() + } + }) + } return { mapFormVisible: false, geoJsonVisible: false, @@ -213,7 +239,8 @@ export default { { validator: validateCode, trigger: 'blur' } ], name: [ - { required: true, message: '请输入地图名称', trigger: 'blur' } + { required: true, message: '请输入地图名称', trigger: 'blur' }, + { validator: validateName, trigger: 'blur' } ], level: [ { required: true, message: '请选择地图级别', trigger: 'change' } diff --git a/data-room-ui/packages/MapDataManagement/src/index.vue b/data-room-ui/packages/MapDataManagement/src/index.vue index ee309ad8..07cfa6fb 100644 --- a/data-room-ui/packages/MapDataManagement/src/index.vue +++ b/data-room-ui/packages/MapDataManagement/src/index.vue @@ -11,6 +11,7 @@ class="bs-el-input" clearable maxlength="200" + @clear="getDataList" placeholder="请输入地图名称或标识" /> @@ -67,19 +68,19 @@ @@ -89,6 +90,7 @@ 省份 城市 区县 + {{ getMoreLevel(scope.row.level) }} { - mapDelete(map.id).then(() => { - this.$message({ - type: 'success', - message: '删除成功' - }) - this.getDataList() + mapDelete(map.id).then((deleteSuccess) => { + if (deleteSuccess) { + this.$message({ + type: 'success', + message: '删除成功' + }) + this.getDataList() + } else { + this.deleteMapCascade(map) + } }).catch(() => { - this.deleteMapCascade(map) + this.$message({ + type: 'error', + message: '删除失败' + }) }) }).catch(() => { }) diff --git a/data-room-ui/packages/js/utils/mapDataService.js b/data-room-ui/packages/js/utils/mapDataService.js index 473d6f8f..c91023c7 100644 --- a/data-room-ui/packages/js/utils/mapDataService.js +++ b/data-room-ui/packages/js/utils/mapDataService.js @@ -57,7 +57,14 @@ const uploadGeoJson = (params = {}, flag = false) => Vue.prototype.$dataRoomAxio * @param params * @param flag */ -const repeatCheck = (params = {}, flag = false) => Vue.prototype.$dataRoomAxios.post('/bigScreen/map/repeat', params, flag) +const repeatCheck = (params = {}, flag = false) => Vue.prototype.$dataRoomAxios.post('/bigScreen/map/repeat/code', params, flag) + +/** + * 名称重复校验 + * @param params + * @param flag + */ +const nameRepeatCheck = (params = {}, flag = false) => Vue.prototype.$dataRoomAxios.post('/bigScreen/map/repeat/name', params, flag) export { mapList, @@ -67,5 +74,6 @@ export { mapCascadeDelete, getMapChildFromGeoJson, uploadGeoJson, - repeatCheck + repeatCheck, + nameRepeatCheck }