diff --git a/src/components/AiAreaPicker.vue b/src/components/AiAreaPicker.vue index 77c25890..db6b96fb 100644 --- a/src/components/AiAreaPicker.vue +++ b/src/components/AiAreaPicker.vue @@ -5,7 +5,7 @@
-
+
@@ -75,7 +75,7 @@ export default { }) return level }, - currentArea() { + currentSelector() { return this.fullArea?.slice(-1)?.[0] || {} }, locationIcon() { @@ -98,16 +98,13 @@ export default { } }, watch: { - areaId(v) { - v && this.getFullArea() - }, value(v) { v && this.handleInit() } }, methods: { getFullArea() { - let areaId = this.areaId || (this.all ? '' : this.$areaId) + let areaId = this.index || (this.all ? '' : this.$areaId) return areaId && this.$http.post('/admin/area/getAllParentAreaId', null, { withoutToken: true, params: {areaId}, @@ -116,8 +113,14 @@ export default { res.data.forEach(e => { e.levelLabel = this.levelLabels[e.type] }) + if (!/0{3}$/g.test(areaId)) {//如果是村需要特殊处理 + this.selected = res.data.shift() + } else { + this.selected = res.data?.[0] + } + this.$emit('update:name', this.selected.name) if (res.data.length > 1) { - this.fullArea = res.data.reverse().slice(this.dataRange) + this.fullArea = res.data.filter(e => !!e.levelLabel).reverse().slice(this.dataRange) } else { this.fullArea = res.data } @@ -132,8 +135,8 @@ export default { }).then((res) => { if (res?.data) { this.list = res.data - let self = this.fullArea.find((e) => e.id == this.index) - this.list.unshift(self) + let self = this.fullArea.find((e) => e.id == id) + self && this.list.unshift(self) } }) }, @@ -172,13 +175,16 @@ export default { handleInit() { this.index = this.value || this.areaId this.getFullArea().then(() => { - if (this.all && !this.currentArea.id) this.getProvinces() - else this.getChildAreas(this.currentArea.id) + if (this.all && !this.currentSelector.id) this.getProvinces() + else this.getChildAreas(this.currentSelector.id) }) }, closePopup() { this.$refs.areaSelector?.handleSelect() } + }, + created() { + !!this.value && this.handleInit() } }