处理地址BUG

This commit is contained in:
Flow 2025-05-27 10:02:58 +08:00
parent a8c4780407
commit 3d1247a4cf

View File

@ -28,14 +28,21 @@
<el-input v-model="formData.name" placeholder="请输入机构名称" /> <el-input v-model="formData.name" placeholder="请输入机构名称" />
</el-form-item> </el-form-item>
<el-form-item label="机构地址" prop="orgaddress"> <el-form-item label="机构地址" prop="orgaddress">
<el-cascader <div class="flex items-center gap-2">
v-model="selectedOptions" <el-cascader
:options="options" v-model="selectedOptions"
size="large" :options="options"
@change="handleAddressChange" @change="handleAddressChange"
placeholder="请选择省/市/区" placeholder="请选择省/市/区"
clearable clearable
/> class="w-[450px]"
/>
<el-input
v-model="formData.detailAddress"
placeholder="请输入详细地址"
class="w-[450px]"
/>
</div>
</el-form-item> </el-form-item>
<el-form-item label="显示排序" prop="sort"> <el-form-item label="显示排序" prop="sort">
<el-input-number v-model="formData.sort" :min="0" controls-position="right" /> <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
@ -87,6 +94,12 @@ pcTextArr,
codeToText, codeToText,
} from "element-china-area-data" } from "element-china-area-data"
interface CascaderOption {
value: string
label: string
children?: CascaderOption[]
}
defineOptions({ name: 'SystemDeptForm' }) defineOptions({ name: 'SystemDeptForm' })
const { t } = useI18n() // const { t } = useI18n() //
@ -96,13 +109,27 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formType = ref('') // create - update -
const formData = ref({ const formData = ref<{
id: number | undefined
title: string
parentId: number
orgid: number | undefined
name: string | undefined
orgaddress: string | undefined
detailAddress: string | undefined
sort: number | undefined
leaderUserId: number | undefined
phone: string | undefined
email: string | undefined
status: number
}>({
id: undefined, id: undefined,
title: '', title: '',
parentId: 0, parentId: 0,
orgid: undefined, orgid: undefined,
name: undefined, name: undefined,
orgaddress: undefined, orgaddress: undefined,
detailAddress: undefined,
sort: undefined, sort: undefined,
leaderUserId: undefined, leaderUserId: undefined,
phone: undefined, phone: undefined,
@ -123,7 +150,7 @@ const formRules = reactive<FormRules>({
const formRef = ref() // Ref const formRef = ref() // Ref
const deptTree = ref() // const deptTree = ref() //
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //
const selectedOptions = ref([]) // const selectedOptions = ref<string[]>([]) //
const options = ref<CascaderOption[]>(regionData as unknown as CascaderOption[]) const options = ref<CascaderOption[]>(regionData as unknown as CascaderOption[])
/** 打开弹窗 */ /** 打开弹窗 */
@ -137,6 +164,27 @@ const open = async (type: string, id?: number) => {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await DeptApi.getDept(id) formData.value = await DeptApi.getDept(id)
//
if (formData.value.orgaddress) {
const addressParts = formData.value.orgaddress.split('/')
if (addressParts.length >= 3) {
//
const provinceCode = Object.keys(codeToText).find(key => codeToText[key] === addressParts[0])
let cityCode = Object.keys(codeToText).find(key => codeToText[key] === addressParts[1])
if(provinceCode == '12'){
cityCode = '1201'
}
const areaCode = Object.keys(codeToText).find(key => codeToText[key] === addressParts[2])
if (provinceCode && cityCode && areaCode) {
selectedOptions.value = [provinceCode, cityCode, areaCode]
}
//
if (addressParts.length > 3) {
formData.value.detailAddress = addressParts.slice(3).join('/')
}
}
}
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -183,12 +231,14 @@ const resetForm = () => {
orgid: undefined, orgid: undefined,
name: undefined, name: undefined,
orgaddress: undefined, orgaddress: undefined,
detailAddress: undefined,
sort: undefined, sort: undefined,
leaderUserId: undefined, leaderUserId: undefined,
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: CommonStatusEnum.ENABLE status: CommonStatusEnum.ENABLE
} }
selectedOptions.value = []
formRef.value?.resetFields() formRef.value?.resetFields()
} }
@ -202,7 +252,7 @@ const getTree = async () => {
} }
/** 检查机构ID */ /** 检查机构ID */
const checkorgid = async () => { const checkOrgId = async () => {
const result = await DeptApi.getDeptByOrgId(Number(formData.value.orgid)) const result = await DeptApi.getDeptByOrgId(Number(formData.value.orgid))
if (result) { if (result) {
message.warning('机构ID已存在') message.warning('机构ID已存在')
@ -215,7 +265,23 @@ const checkorgid = async () => {
const handleAddressChange = (value: any) => { const handleAddressChange = (value: any) => {
if (value && value.length === 3) { if (value && value.length === 3) {
const address = codeToText[value[0]] + '/' + codeToText[value[1]] + '/' + codeToText[value[2]] const address = codeToText[value[0]] + '/' + codeToText[value[1]] + '/' + codeToText[value[2]]
formData.value.orgaddress = address if (formData.value.detailAddress) {
formData.value.orgaddress = address + '/' + formData.value.detailAddress
} else {
formData.value.orgaddress = address
}
} }
} }
//
watch(() => formData.value.detailAddress, (newValue) => {
if (selectedOptions.value && selectedOptions.value.length === 3) {
const address = codeToText[selectedOptions.value[0]] + '/' + codeToText[selectedOptions.value[1]] + '/' + codeToText[selectedOptions.value[2]]
if (newValue) {
formData.value.orgaddress = address + '/' + newValue
} else {
formData.value.orgaddress = address
}
}
})
</script> </script>