From e1b028d486713eaf55aaf35fbf334aa568059c0d Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期二, 14 四月 2026 15:46:54 +0800
Subject: [PATCH] 项目复制

---
 src/views/components/SearchAddress.vue |  130 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 130 insertions(+), 0 deletions(-)

diff --git a/src/views/components/SearchAddress.vue b/src/views/components/SearchAddress.vue
new file mode 100644
index 0000000..251e1d4
--- /dev/null
+++ b/src/views/components/SearchAddress.vue
@@ -0,0 +1,130 @@
+<template>
+  <el-dialog
+    v-model="dialogFlag"
+    width="600"
+    title="閫夋嫨鍦板潃"
+    align-center
+    :show-close="false"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+  >
+    <el-divider class="m-0"></el-divider>
+    <div class="py-2 mt-3">
+      <el-form-item label="鎼滅储鍦板潃">
+        <el-select
+          v-model="selected"
+          :debounce="800"
+          filterable
+          value-key="uid"
+          remote
+          reserve-keyword
+          placeholder="璇疯緭鍏ュ叧閿瓧"
+          :remote-method="getAddressOptions"
+          :loading="loading"
+          loading-text="鏁版嵁鍔犺浇涓�"
+        >
+          <template #label>
+            <el-row>
+              <el-text>{{ selected.address }}</el-text>
+            </el-row>
+          </template>
+          <el-option
+            v-for="item in addressOptions"
+            :key="item.uid"
+            :label="item.label"
+            :value="item"
+          >
+            <template #default>
+              <el-row>
+                <el-text :style="{ color: selected.uid == item.uid ? 'var(--el-color-primary)' : '' }">
+                  {{ item.name }}
+                </el-text>
+                <el-text class="text-sm ml-2" style="color: #999999;">锛坽{ item.address }}锛�</el-text>
+              </el-row>
+            </template>
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </div>
+    <el-divider class="m-0"></el-divider>
+    <template #footer>
+      <div>
+        <el-button plain @click="dialogFlag=false">鍙栨秷</el-button>
+        <el-button type="primary" @click="confirm">
+          纭畾
+        </el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+<script>
+export default {
+  components: {
+  },
+  data() {
+    return {
+      dialogFlag: false,
+      selected: {},
+      loading: false,
+      addressOptions: []
+    }
+  },
+  props: {
+    modelValue: {
+      type: Boolean,
+      default: false
+    },
+    selectedAddress: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    }
+  },
+  watch: {
+    modelValue(val) {
+      this.dialogFlag = val
+      if (this.dialogFlag) {
+        this.selected = this.selectedAddress
+      }
+    },
+    dialogFlag(val) {
+      this.$emit('update:modelValue', val)
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    getAddressOptions(query) {
+      if (!query) { return [] }
+      const params = {
+        ak: '1gBZhNmy47PFUB3iS2XVJySCO7mXLf01', // 璇锋浛鎹负鎮ㄧ殑瀹為檯AK
+        query: query,
+        region: '骞夸笢',
+        type: '',
+      }
+      this.loading = true
+      this.$axios.get('/exam/baidu-map/region-search', { params }).then(res => {
+        if (res.data.status == 0) {
+          let list = res.data.results || []
+          list.forEach(ele => {
+            if (!ele.address) {
+              ele.address = ele.province + ele.city + ele.district + ele.town
+            }
+          })
+          this.addressOptions = list
+        } else {
+          this.$message.error(res.data.msg || '鑾峰彇鍦板潃妫�绱㈠垪琛ㄥけ璐�')
+        }
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    confirm() {
+      this.$emit('handlerSelectedAddress', this.selected)
+      this.dialogFlag = false
+    }
+  }
+}
+</script>

--
Gitblit v1.8.0