| <template> | 
|   <ProFieldCustom> | 
|     <div class="address-select"> | 
|       <el-cascader | 
|         v-bind="areaByCascaderProps" | 
|         v-model="innerAreaList" | 
|         :placeholder="areaListPlaceholder" | 
|         clearable | 
|         :value-on-clear="() => []" | 
|       ></el-cascader> | 
|       <FieldText | 
|         class="address-input" | 
|         v-model.trim="innerAddress" | 
|         :maxlength="20" | 
|         show-word-limit | 
|         :placeholder="addressPlaceholder" | 
|       > | 
|       </FieldText> | 
|     </div> | 
|     <template #readContent> {{ addressName }} </template> | 
|   </ProFieldCustom> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { ProFieldCustom, FieldText } from '@bole-core/components'; | 
| import { useVModels, useAreaByCascader, useAllAreaList } from '@/hooks'; | 
| // import { useAreaStore } from '@/store/modules/area'; | 
|   | 
| defineOptions({ | 
|   name: 'ProFromAddressSelect', | 
| }); | 
|   | 
| type Props = { | 
|   areaList: number[]; | 
|   address?: string; | 
|   areaListPlaceholder?: string; | 
|   addressPlaceholder?: string; | 
| }; | 
|   | 
| const props = withDefaults(defineProps<Props>(), { | 
|   address: '', | 
|   areaListPlaceholder: '请选择企业所在地', | 
|   addressPlaceholder: '请输入详细地址', | 
| }); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'update:areaList', val: number[]): void; | 
|   (e: 'update:address', val: string): void; | 
| }>(); | 
|   | 
| const { areaList: innerAreaList, address: innerAddress } = useVModels(props, emit); | 
|   | 
| // const areaStore = useAreaStore(); | 
|   | 
| // const { completeAreaList } = storeToRefs(areaStore); | 
| const { findAreaNameFromCode } = useAllAreaList(); | 
|   | 
| const areaByCascaderProps = useAreaByCascader(); | 
|   | 
| const addressName = computed(() => { | 
|   return `${props.areaList.map((x) => findAreaNameFromCode(x)).join('-')} ${props.address}`; | 
| }); | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| @use '@/style/common.scss' as *; | 
|   | 
| .address-select { | 
|   display: flex; | 
|   align-items: center; | 
|   width: 100%; | 
|   | 
|   :deep() { | 
|     .el-cascader { | 
|       flex: 2; | 
|     } | 
|   | 
|     .address-input { | 
|       flex: 1; | 
|       margin-left: 10px; | 
|     } | 
|   } | 
| } | 
| </style> |