index.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <template>
  2. <el-select class="app-address" value-key="autoid" :placeholder="placeholder" v-model="selectedItem" @change="onChange"
  3. @clear="onChange" clearable>
  4. <el-option class="app-address-item" v-for="(item, i) in dataList" :key="i"
  5. :label="[item.provincename, item.cityname, item.districtname, item.address].join(' ')" :value="item" />
  6. </el-select>
  7. </template>
  8. <script lang="ts" setup>
  9. import { shallowRef } from 'vue'
  10. import { queryUserReceiveInfo } from '@/services/api/user'
  11. const props = defineProps({
  12. modelValue: Number,
  13. placeholder: {
  14. type: String,
  15. default: '请选择'
  16. }
  17. })
  18. const emit = defineEmits(['update:modelValue', 'change'])
  19. const dataList = shallowRef<Ermcp.UserReceiveInfoRsp[]>([])
  20. const selectedItem = shallowRef<Ermcp.UserReceiveInfoRsp>()
  21. const onChange = (item?: Ermcp.UserReceiveInfoRsp) => {
  22. emit('update:modelValue', item?.autoid)
  23. emit('change', item)
  24. }
  25. queryUserReceiveInfo().then((res) => {
  26. dataList.value = res.data
  27. selectedItem.value = res.data.find((e) => e.autoid === props.modelValue)
  28. })
  29. </script>
  30. <style lang="less">
  31. @import './index.less';
  32. </style>