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()
   }
 }