hookehuyr

优化代码

...@@ -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
253 + const result = { province: '', city: '', county: '' }
254 +
255 if (codes.length >= 1) { 255 if (codes.length >= 1) {
256 const provinceNode = findNodeByCode(areaData.value, codes[0]) 256 const provinceNode = findNodeByCode(areaData.value, codes[0])
257 - return provinceNode ? provinceNode.text : '' 257 + if (provinceNode) {
258 - } 258 + result.province = provinceNode.text
259 - return ''
260 -}
261 259
262 -/** 260 + if (codes.length >= 2 && provinceNode.children) {
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]) 261 const cityNode = findNodeByCode(provinceNode.children, codes[1])
273 - return cityNode ? cityNode.text : '' 262 + if (cityNode) {
274 - } 263 + result.city = cityNode.text
275 - }
276 - return ''
277 -}
278 264
279 -/** 265 + if (codes.length >= 3 && cityNode.children) {
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])
288 - if (provinceNode && provinceNode.children) {
289 - const cityNode = findNodeByCode(provinceNode.children, codes[1])
290 - if (cityNode && cityNode.children) {
291 const countyNode = findNodeByCode(cityNode.children, codes[2]) 266 const countyNode = findNodeByCode(cityNode.children, codes[2])
292 - return countyNode ? countyNode.text : '' 267 + if (countyNode) {
268 + result.county = countyNode.text
293 } 269 }
294 } 270 }
295 } 271 }
296 - return '' 272 + }
273 + }
274 + }
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
......