Showing
2 changed files
with
47 additions
and
64 deletions
| ... | @@ -96,6 +96,9 @@ const props = defineProps({ | ... | @@ -96,6 +96,9 @@ const props = defineProps({ |
| 96 | province: '', | 96 | province: '', |
| 97 | city: '', | 97 | city: '', |
| 98 | county: '', | 98 | county: '', |
| 99 | + province_code: '', | ||
| 100 | + city_code: '', | ||
| 101 | + county_code: '', | ||
| 99 | detail_address: '', | 102 | detail_address: '', |
| 100 | full_address: '' | 103 | full_address: '' |
| 101 | }) | 104 | }) |
| ... | @@ -141,6 +144,9 @@ const fullAddress = computed(() => { | ... | @@ -141,6 +144,9 @@ const fullAddress = computed(() => { |
| 141 | * @param {Object} addressData - 地址数据对象 | 144 | * @param {Object} addressData - 地址数据对象 |
| 142 | */ | 145 | */ |
| 143 | const initAddressData = (addressData) => { | 146 | const initAddressData = (addressData) => { |
| 147 | + // 统一设置详细地址 | ||
| 148 | + detailAddress.value = addressData.detail_address || addressData.idcard_address || '' | ||
| 149 | + | ||
| 144 | // 优先使用code值来设置级联选择器的选中状态 | 150 | // 优先使用code值来设置级联选择器的选中状态 |
| 145 | if (addressData.province_code && addressData.city_code && addressData.county_code) { | 151 | if (addressData.province_code && addressData.city_code && addressData.county_code) { |
| 146 | selectedAreaCodes.value = [ | 152 | selectedAreaCodes.value = [ |
| ... | @@ -156,15 +162,11 @@ const initAddressData = (addressData) => { | ... | @@ -156,15 +162,11 @@ const initAddressData = (addressData) => { |
| 156 | if (provinceNode && cityNode && countyNode) { | 162 | if (provinceNode && cityNode && countyNode) { |
| 157 | selectedAreaText.value = `${provinceNode.text}${cityNode.text}${countyNode.text}` | 163 | selectedAreaText.value = `${provinceNode.text}${cityNode.text}${countyNode.text}` |
| 158 | } | 164 | } |
| 159 | - detailAddress.value = addressData.detail_address || addressData.idcard_address || '' | ||
| 160 | } else if (addressData.province && addressData.city && addressData.county) { | 165 | } else if (addressData.province && addressData.city && addressData.county) { |
| 161 | // 兼容旧的文本格式 | 166 | // 兼容旧的文本格式 |
| 162 | selectedAreaText.value = `${addressData.province}${addressData.city}${addressData.county}` | 167 | selectedAreaText.value = `${addressData.province}${addressData.city}${addressData.county}` |
| 163 | - detailAddress.value = addressData.detail_address || addressData.idcard_address || '' | ||
| 164 | - // 尝试根据文本查找对应的code值(可选实现) | ||
| 165 | } else { | 168 | } else { |
| 166 | selectedAreaText.value = '' | 169 | selectedAreaText.value = '' |
| 167 | - detailAddress.value = addressData.detail_address || addressData.idcard_address || '' | ||
| 168 | selectedAreaCodes.value = [] | 170 | selectedAreaCodes.value = [] |
| 169 | } | 171 | } |
| 170 | } | 172 | } |
| ... | @@ -223,10 +225,9 @@ const closeModal = () => { | ... | @@ -223,10 +225,9 @@ const closeModal = () => { |
| 223 | const confirmAddress = () => { | 225 | const confirmAddress = () => { |
| 224 | if (selectedAreaText.value && detailAddress.value.trim()) { | 226 | if (selectedAreaText.value && detailAddress.value.trim()) { |
| 225 | const codes = selectedAreaCodes.value | 227 | const codes = selectedAreaCodes.value |
| 228 | + const areaText = getAreaTextFromCodes() | ||
| 226 | const addressData = { | 229 | const addressData = { |
| 227 | - province: getProvinceFromText(selectedAreaText.value), | 230 | + ...areaText, |
| 228 | - city: getCityFromText(selectedAreaText.value), | ||
| 229 | - county: getCountyFromText(selectedAreaText.value), | ||
| 230 | province_code: codes[0] || '', | 231 | province_code: codes[0] || '', |
| 231 | city_code: codes[1] || '', | 232 | city_code: codes[1] || '', |
| 232 | county_code: codes[2] || '', | 233 | county_code: codes[2] || '', |
| ... | @@ -244,56 +245,35 @@ const confirmAddress = () => { | ... | @@ -244,56 +245,35 @@ const confirmAddress = () => { |
| 244 | } | 245 | } |
| 245 | 246 | ||
| 246 | /** | 247 | /** |
| 247 | - * 从选中文本中提取省份 | 248 | + * 根据选中的codes获取地区文本信息 |
| 248 | - * @param {String} text - 选中的地区文本 | 249 | + * @returns {Object} - 包含省市县文本的对象 |
| 249 | - * @returns {String} - 省份名称 | ||
| 250 | */ | 250 | */ |
| 251 | -const getProvinceFromText = (text) => { | 251 | +const getAreaTextFromCodes = () => { |
| 252 | - // 这里可以根据实际需要实现更精确的解析逻辑 | ||
| 253 | - // 暂时使用简单的方式 | ||
| 254 | const codes = selectedAreaCodes.value | 252 | const codes = selectedAreaCodes.value |
| 255 | - if (codes.length >= 1) { | 253 | + const result = { province: '', city: '', county: '' } |
| 256 | - const provinceNode = findNodeByCode(areaData.value, codes[0]) | ||
| 257 | - return provinceNode ? provinceNode.text : '' | ||
| 258 | - } | ||
| 259 | - return '' | ||
| 260 | -} | ||
| 261 | 254 | ||
| 262 | -/** | 255 | + if (codes.length >= 1) { |
| 263 | - * 从选中文本中提取城市 | ||
| 264 | - * @param {String} text - 选中的地区文本 | ||
| 265 | - * @returns {String} - 城市名称 | ||
| 266 | - */ | ||
| 267 | -const getCityFromText = (text) => { | ||
| 268 | - const codes = selectedAreaCodes.value | ||
| 269 | - if (codes.length >= 2) { | ||
| 270 | - const provinceNode = findNodeByCode(areaData.value, codes[0]) | ||
| 271 | - if (provinceNode && provinceNode.children) { | ||
| 272 | - const cityNode = findNodeByCode(provinceNode.children, codes[1]) | ||
| 273 | - return cityNode ? cityNode.text : '' | ||
| 274 | - } | ||
| 275 | - } | ||
| 276 | - return '' | ||
| 277 | -} | ||
| 278 | - | ||
| 279 | -/** | ||
| 280 | - * 从选中文本中提取县区 | ||
| 281 | - * @param {String} text - 选中的地区文本 | ||
| 282 | - * @returns {String} - 县区名称 | ||
| 283 | - */ | ||
| 284 | -const getCountyFromText = (text) => { | ||
| 285 | - const codes = selectedAreaCodes.value | ||
| 286 | - if (codes.length >= 3) { | ||
| 287 | const provinceNode = findNodeByCode(areaData.value, codes[0]) | 256 | const provinceNode = findNodeByCode(areaData.value, codes[0]) |
| 288 | - if (provinceNode && provinceNode.children) { | 257 | + if (provinceNode) { |
| 289 | - const cityNode = findNodeByCode(provinceNode.children, codes[1]) | 258 | + result.province = provinceNode.text |
| 290 | - if (cityNode && cityNode.children) { | 259 | + |
| 291 | - const countyNode = findNodeByCode(cityNode.children, codes[2]) | 260 | + if (codes.length >= 2 && provinceNode.children) { |
| 292 | - return countyNode ? countyNode.text : '' | 261 | + const cityNode = findNodeByCode(provinceNode.children, codes[1]) |
| 262 | + if (cityNode) { | ||
| 263 | + result.city = cityNode.text | ||
| 264 | + | ||
| 265 | + if (codes.length >= 3 && cityNode.children) { | ||
| 266 | + const countyNode = findNodeByCode(cityNode.children, codes[2]) | ||
| 267 | + if (countyNode) { | ||
| 268 | + result.county = countyNode.text | ||
| 269 | + } | ||
| 270 | + } | ||
| 271 | + } | ||
| 293 | } | 272 | } |
| 294 | } | 273 | } |
| 295 | } | 274 | } |
| 296 | - return '' | 275 | + |
| 276 | + return result | ||
| 297 | } | 277 | } |
| 298 | 278 | ||
| 299 | /** | 279 | /** | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-09-19 14:11:06 | 2 | * @Date: 2022-09-19 14:11:06 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2025-08-12 18:08:16 | 4 | + * @LastEditTime: 2025-08-12 18:30:09 |
| 5 | * @FilePath: /jgdl/src/pages/collectionSettings/index.vue | 5 | * @FilePath: /jgdl/src/pages/collectionSettings/index.vue |
| 6 | * @Description: 收款设置 | 6 | * @Description: 收款设置 |
| 7 | --> | 7 | --> |
| ... | @@ -460,6 +460,7 @@ const getUserInfo = async () => { | ... | @@ -460,6 +460,7 @@ const getUserInfo = async () => { |
| 460 | 460 | ||
| 461 | // 同时更新地址选择器的数据,包含code值用于还原选中状态 | 461 | // 同时更新地址选择器的数据,包含code值用于还原选中状态 |
| 462 | if (userInfo.idcard_province && userInfo.idcard_city && userInfo.idcard_district) { | 462 | if (userInfo.idcard_province && userInfo.idcard_city && userInfo.idcard_district) { |
| 463 | + const detailAddr = userInfo.idcard_address || '' | ||
| 463 | addressData.value = { | 464 | addressData.value = { |
| 464 | province: userInfo.province_name || '', | 465 | province: userInfo.province_name || '', |
| 465 | city: userInfo.city_name || '', | 466 | city: userInfo.city_name || '', |
| ... | @@ -467,9 +468,9 @@ const getUserInfo = async () => { | ... | @@ -467,9 +468,9 @@ const getUserInfo = async () => { |
| 467 | province_code: userInfo.idcard_province, | 468 | province_code: userInfo.idcard_province, |
| 468 | city_code: userInfo.idcard_city, | 469 | city_code: userInfo.idcard_city, |
| 469 | county_code: userInfo.idcard_district, | 470 | county_code: userInfo.idcard_district, |
| 470 | - detail_address: userInfo.idcard_address || '', | 471 | + detail_address: detailAddr, |
| 471 | - idcard_address: userInfo.idcard_address || '', | 472 | + idcard_address: detailAddr, |
| 472 | - full_address: `${userInfo.province_name || ''}${userInfo.city_name || ''}${userInfo.county_name || userInfo.district_name || ''} ${userInfo.idcard_address || ''}`.trim() | 473 | + full_address: `${userInfo.province_name || ''}${userInfo.city_name || ''}${userInfo.county_name || userInfo.district_name || ''} ${detailAddr}`.trim() |
| 473 | }; | 474 | }; |
| 474 | } | 475 | } |
| 475 | } | 476 | } |
| ... | @@ -1144,16 +1145,18 @@ const addressData = ref({ | ... | @@ -1144,16 +1145,18 @@ const addressData = ref({ |
| 1144 | * @param {Object} address - 地址数据对象 | 1145 | * @param {Object} address - 地址数据对象 |
| 1145 | */ | 1146 | */ |
| 1146 | const onAddressChange = (address) => { | 1147 | const onAddressChange = (address) => { |
| 1147 | - // 更新临时身份信息中的地址字段(中文名称,用于显示) | 1148 | + // 批量更新临时身份信息 |
| 1148 | - tempIdentityInfo.value.province = address.province | 1149 | + Object.assign(tempIdentityInfo.value, { |
| 1149 | - tempIdentityInfo.value.city = address.city | 1150 | + // 地址字段(中文名称,用于显示) |
| 1150 | - tempIdentityInfo.value.county = address.county | 1151 | + province: address.province, |
| 1151 | - | 1152 | + city: address.city, |
| 1152 | - // 更新身份证地址字段(真实字段名,用于提交) | 1153 | + county: address.county, |
| 1153 | - tempIdentityInfo.value.idcard_province = address.province_code || address.province | 1154 | + // 身份证地址字段(真实字段名,用于提交) |
| 1154 | - tempIdentityInfo.value.idcard_city = address.city_code || address.city | 1155 | + idcard_province: address.province_code || address.province, |
| 1155 | - tempIdentityInfo.value.idcard_district = address.county_code || address.county | 1156 | + idcard_city: address.city_code || address.city, |
| 1156 | - tempIdentityInfo.value.idcard_address = address.detail_address | 1157 | + idcard_district: address.county_code || address.county, |
| 1158 | + idcard_address: address.detail_address | ||
| 1159 | + }) | ||
| 1157 | } | 1160 | } |
| 1158 | </script> | 1161 | </script> |
| 1159 | 1162 | ... | ... |
-
Please register or login to post a comment