|
|
@ -24,7 +24,7 @@ |
|
|
|
<!-- 地址选择器模式 --> |
|
|
|
<view class="address-selector" v-else @click="openAddressPicker"> |
|
|
|
<view class="selected-address"> |
|
|
|
{{ selectedAddress || '请选择工作地区' }} |
|
|
|
{{ selectedAddress || form.expectAddress_dictText || '请选择工作地区' }} |
|
|
|
</view> |
|
|
|
<uv-icon name="arrow-right" size="30rpx"></uv-icon> |
|
|
|
</view> |
|
|
@ -301,10 +301,10 @@ |
|
|
|
this.form = res.result.records[0] |
|
|
|
|
|
|
|
this.list.forEach((n, i) => { |
|
|
|
// 如果是地址选择器,直接显示地址文字 |
|
|
|
// 如果是地址选择器,需要根据ID找到对应的地址文本 |
|
|
|
if(n.useAddressPicker && this.form[n.type]) { |
|
|
|
// 回显时直接使用存储的地址字符串,与提交格式保持一致 |
|
|
|
this.selectedAddress = this.form[n.type] |
|
|
|
// 回显地址:根据存储的ID找到对应的地址文本 |
|
|
|
this.selectedAddress = this.getAddressTextById(this.form[n.type]) |
|
|
|
} else { |
|
|
|
n.tag.forEach((e, index) => { |
|
|
|
if(this.form[n.type] == e.id){ |
|
|
@ -321,11 +321,54 @@ |
|
|
|
openAddressPicker() { |
|
|
|
this.$refs.addressPicker.open() |
|
|
|
}, |
|
|
|
// 根据ID获取地址文本(用于回显) |
|
|
|
getAddressTextById(idOrIds) { |
|
|
|
if (!idOrIds) return '' |
|
|
|
|
|
|
|
// 如果是多个ID(逗号分隔) |
|
|
|
if (typeof idOrIds === 'string' && idOrIds.includes(',')) { |
|
|
|
const ids = idOrIds.split(',') |
|
|
|
const addressTexts = [] |
|
|
|
|
|
|
|
ids.forEach(id => { |
|
|
|
const address = this.findAddressById(id.trim()) |
|
|
|
if (address) { |
|
|
|
addressTexts.push(address.adress) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
return addressTexts.join(',') |
|
|
|
} else { |
|
|
|
// 单个ID |
|
|
|
const address = this.findAddressById(idOrIds) |
|
|
|
return address ? address.adress : '' |
|
|
|
} |
|
|
|
}, |
|
|
|
// 递归查找地址 |
|
|
|
findAddressById(id) { |
|
|
|
// 在省级地址中查找 |
|
|
|
for (let province of this.addressList) { |
|
|
|
if (province.id == id) { |
|
|
|
return province |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 如果没找到,需要异步获取下级地址进行查找 |
|
|
|
// 这里简化处理,实际项目中可能需要更复杂的缓存机制 |
|
|
|
return null |
|
|
|
}, |
|
|
|
// 地址选择确认回调 |
|
|
|
onAddressConfirm(addressResult) { |
|
|
|
// 直接使用AddressPicker返回的fullAddress,确保格式一致 |
|
|
|
// 显示地址文本给用户看 |
|
|
|
this.selectedAddress = addressResult.fullAddress |
|
|
|
this.form.expectAddress = addressResult.fullAddress |
|
|
|
// 传给后端的是ID或ID数组 |
|
|
|
if (addressResult.selectedIds && addressResult.selectedIds.length > 0) { |
|
|
|
// 多选模式,传ID数组的字符串形式 |
|
|
|
this.form.expectAddress = addressResult.selectedIds.join(',') |
|
|
|
} else { |
|
|
|
// 单选模式,传单个ID |
|
|
|
this.form.expectAddress = addressResult.selectedId |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|