wwf
20 小时以前 e1b028d486713eaf55aaf35fbf334aa568059c0d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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>