| <template> | 
|   <div class="area-select-wrapper"> | 
|     <el-select | 
|       v-model="innerProvinceId" | 
|       placeholder="请选择省份" | 
|       filterable | 
|       clearable | 
|       :disabled="disabled" | 
|     > | 
|       <el-option | 
|         v-for="(item, index) in provinceList" | 
|         :key="index" | 
|         :label="item.areaName" | 
|         :value="item.areaCode" | 
|       /> | 
|     </el-select> | 
|     <el-select | 
|       v-model="innerCityId" | 
|       placeholder="请选择市" | 
|       filterable | 
|       clearable | 
|       :disabled="disabled" | 
|     > | 
|       <el-option | 
|         v-for="(item, index) in cityList" | 
|         :key="index" | 
|         :label="item.areaName" | 
|         :value="item.areaCode" | 
|       /> | 
|     </el-select> | 
|     <el-select | 
|       v-model="innerCountyId" | 
|       placeholder="请选择区县" | 
|       filterable | 
|       clearable | 
|       :disabled="disabled" | 
|     > | 
|       <el-option | 
|         v-for="(item, index) in countyList" | 
|         :key="index" | 
|         :label="item.areaName" | 
|         :value="item.areaCode" | 
|       /> | 
|     </el-select> | 
|   </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { useVModels, useAreaSelect } from '@/hooks'; | 
|   | 
| defineOptions({ | 
|   name: 'AreaSelect', | 
| }); | 
|   | 
| type Props = { | 
|   provinceId?: number | string; | 
|   cityId?: number | string; | 
|   countyId?: number | string; | 
|   disabled?: boolean; | 
| }; | 
|   | 
| const props = withDefaults(defineProps<Props>(), { | 
|   disabled: false, | 
| }); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'update:provinceId', id: number): void; | 
|   (e: 'update:cityId', id: number): void; | 
|   (e: 'update:countyId', id: number): void; | 
| }>(); | 
|   | 
| const { | 
|   provinceId: innerProvinceId, | 
|   cityId: innerCityId, | 
|   countyId: innerCountyId, | 
| } = useVModels(props, emit); | 
|   | 
| const { provinceList, cityList, countyList } = useAreaSelect( | 
|   innerProvinceId as Ref<number>, | 
|   innerCityId as Ref<number>, | 
|   innerCountyId as Ref<number> | 
| ); | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| @use '@/style/common.scss' as *; | 
|   | 
| .area-select-wrapper { | 
|   display: inline-flex; | 
|   align-items: center; | 
|   | 
|   :deep() { | 
|     .el-select { | 
|       width: 140px; | 
|   | 
|       & + .el-select { | 
|         margin-left: 10px; | 
|       } | 
|     } | 
|   } | 
| } | 
| </style> |