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

地图数据管理功能优化查重、显示等问题
main
hong.yang 2 years ago
parent cd6dd0f769
commit 53e11cdc61

@ -97,6 +97,11 @@
:label="level.label" :label="level.label"
:value="level.value" :value="level.value"
/> />
<el-option
v-if="![0,1,2,3,4].includes(mapForm.level)"
:value="mapForm.level"
:label="outRangeLabel"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -160,7 +165,7 @@
<script> <script>
import vueJsonViewer from 'vue-json-viewer' 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 { export default {
name: 'AddForm', name: 'AddForm',
@ -171,6 +176,9 @@ export default {
autoParseNextLevelShow () { autoParseNextLevelShow () {
// geoJson // geoJson
return !this.isEmpty(this.mapForm.geoJson) return !this.isEmpty(this.mapForm.geoJson)
},
outRangeLabel() {
return `级别${this.mapForm.level}`;
} }
}, },
data () { 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 { return {
mapFormVisible: false, mapFormVisible: false,
geoJsonVisible: false, geoJsonVisible: false,
@ -212,7 +232,8 @@ export default {
{ validator: validateCode, trigger: 'blur' } { validator: validateCode, trigger: 'blur' }
], ],
name: [ name: [
{ required: true, message: '请输入地图名称', trigger: 'blur' } { required: true, message: '请输入地图名称', trigger: 'blur' },
{ validator: validateName, trigger: 'blur' }
], ],
level: [ level: [
{ required: true, message: '请选择地图级别', trigger: 'change' } { required: true, message: '请选择地图级别', trigger: 'change' }

@ -93,6 +93,11 @@
:label="level.label" :label="level.label"
:value="level.value" :value="level.value"
/> />
<el-option
v-if="![0,1,2,3,4].includes(mapForm.level)"
:value="mapForm.level"
:label="outRangeLabel"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -158,7 +163,7 @@
<script> <script>
import _ from 'lodash' import _ from 'lodash'
import vueJsonViewer from 'vue-json-viewer' 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 { export default {
name: 'EditForm', name: 'EditForm',
@ -169,6 +174,9 @@ export default {
autoParseNextLevelShow () { autoParseNextLevelShow () {
// geoJson // geoJson
return !this.isWhitespace(this.mapForm.geoJson) && this.mapForm.uploadedGeoJson === 0 return !this.isWhitespace(this.mapForm.geoJson) && this.mapForm.uploadedGeoJson === 0
},
outRangeLabel() {
return `级别${this.mapForm.level}`;
} }
}, },
data () { data () {
@ -181,7 +189,7 @@ export default {
getMapChildFromGeoJson(this.mapForm.parentId).then(children => { getMapChildFromGeoJson(this.mapForm.parentId).then(children => {
let repeat = false let repeat = false
children.forEach(child => { children.forEach(child => {
if (child.exist && child.name === value) { if (child.exist && child.name === value && child.existId !== this.mapForm.id) {
repeat = true 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 { return {
mapFormVisible: false, mapFormVisible: false,
geoJsonVisible: false, geoJsonVisible: false,
@ -213,7 +239,8 @@ export default {
{ validator: validateCode, trigger: 'blur' } { validator: validateCode, trigger: 'blur' }
], ],
name: [ name: [
{ required: true, message: '请输入地图名称', trigger: 'blur' } { required: true, message: '请输入地图名称', trigger: 'blur' },
{ validator: validateName, trigger: 'blur' }
], ],
level: [ level: [
{ required: true, message: '请选择地图级别', trigger: 'change' } { required: true, message: '请选择地图级别', trigger: 'change' }

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

@ -57,7 +57,14 @@ const uploadGeoJson = (params = {}, flag = false) => Vue.prototype.$dataRoomAxio
* @param params * @param params
* @param flag * @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 { export {
mapList, mapList,
@ -67,5 +74,6 @@ export {
mapCascadeDelete, mapCascadeDelete,
getMapChildFromGeoJson, getMapChildFromGeoJson,
uploadGeoJson, uploadGeoJson,
repeatCheck repeatCheck,
nameRepeatCheck
} }

Loading…
Cancel
Save