Forráskód Böngészése

fix: 地图数据管理功能优化查重、显示等问题

地图数据管理功能优化查重、显示等问题
hong.yang 1 éve
szülő
commit
53e11cdc61

+ 23 - 2
data-room-ui/packages/MapDataManagement/src/AddForm.vue

@@ -97,6 +97,11 @@
               :label="level.label"
               :value="level.value"
             />
+            <el-option
+              v-if="![0,1,2,3,4].includes(mapForm.level)"
+              :value="mapForm.level"
+              :label="outRangeLabel"
+            />
           </el-select>
         </el-form-item>
         <el-form-item
@@ -160,7 +165,7 @@
 
 <script>
 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' }

+ 30 - 3
data-room-ui/packages/MapDataManagement/src/EditForm.vue

@@ -93,6 +93,11 @@
               :label="level.label"
               :value="level.value"
             />
+            <el-option
+              v-if="![0,1,2,3,4].includes(mapForm.level)"
+              :value="mapForm.level"
+              :label="outRangeLabel"
+            />
           </el-select>
         </el-form-item>
         <el-form-item
@@ -158,7 +163,7 @@
 <script>
 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' }

+ 22 - 10
data-room-ui/packages/MapDataManagement/src/index.vue

@@ -11,6 +11,7 @@
             class="bs-el-input"
             clearable
             maxlength="200"
+            @clear="getDataList"
             placeholder="请输入地图名称或标识"
           />
         </el-form-item>
@@ -67,19 +68,19 @@
           <el-empty slot="empty"/>
           <el-table-column
             align="left"
-            label="名称"
+            label="地图名称"
             prop="name"
             show-overflow-tooltip
           />
           <el-table-column
             align="center"
-            label="标识"
+            label="地图标识"
             prop="mapCode"
             show-overflow-tooltip
           />
           <el-table-column
             align="center"
-            label="级别"
+            label="地图级别"
             prop="level"
             show-overflow-tooltip
           >
@@ -89,6 +90,7 @@
               <span v-else-if="scope.row.level === 2">省份</span>
               <span v-else-if="scope.row.level === 3">城市</span>
               <span v-else-if="scope.row.level === 4">区县</span>
+              <span v-else>{{ getMoreLevel(scope.row.level) }}</span>
             </template>
           </el-table-column>
           <el-table-column
@@ -282,6 +284,9 @@ export default {
         this.$refs.table.store.states.treeData[this.lazyResolveIds[i]].expanded = false
       }
     },
+    getMoreLevel(level) {
+      return '级别' + level
+    },
     addMap() {
       this.$refs.addForm.mapFormVisible = true
       this.$refs.addForm.init()
@@ -303,14 +308,21 @@ export default {
         type: 'warning',
         customClass: 'bs-el-message-box'
       }).then(async () => {
-        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(() => {
       })

+ 10 - 2
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
 }