Browse Source

fix(地址选择器): 统一使用地址ID代替文本进行提交和回显

修改地址选择器组件和相关页面,将地址提交和回显逻辑从使用文本改为使用ID
- 在AddressPicker组件中返回selectedId和selectedIds
- 修改jobPosting页面保存areaId用于后端提交
- 更新addResume页面根据ID回显地址文本
- 调整screenWork组件使用areaId.value代替地址文本
master
前端-胡立永 1 month ago
parent
commit
a877c01ff8
5 changed files with 95 additions and 36 deletions
  1. +15
    -3
      components/AddressPicker.vue
  2. +3
    -3
      components/screen/screenWork.vue
  3. +12
    -11
      pages_order/auth/certification.vue
  4. +49
    -6
      pages_order/work/addResume.vue
  5. +16
    -13
      pages_order/work/jobPosting.vue

+ 15
- 3
components/AddressPicker.vue View File

@ -9,8 +9,6 @@
</view>
</view>
<view class="content">
<!-- 左侧一级地址列表 -->
<view class="left-panel">
@ -303,6 +301,9 @@
//
let fullAddress = ''
let selectedId = '' // ID
let selectedIds = [] // ID
if (this.selectedProvince) {
fullAddress += this.selectedProvince.adress
}
@ -310,9 +311,12 @@
//
if (this.multiple && this.selectedCities.length > 0) {
const cityNames = this.selectedCities.map(item => item.adress).join(',')
fullAddress += cityNames
fullAddress = cityNames
result.selectedAddress = this.selectedProvince //
result.selectedCities = this.selectedCities
// ID
selectedIds = this.selectedCities.map(item => item.id)
result.selectedIds = selectedIds
} else if (this.selectedCity) {
fullAddress += this.selectedCity.adress
@ -322,20 +326,28 @@
fullAddress += districtNames
result.selectedAddress = this.selectedCity //
result.selectedDistricts = this.selectedDistricts
// ID
selectedIds = this.selectedDistricts.map(item => item.id)
result.selectedIds = selectedIds
} else if (this.selectedDistrict) {
//
fullAddress += this.selectedDistrict.adress
result.selectedAddress = this.selectedDistrict
selectedId = this.selectedDistrict.id
} else {
//
result.selectedAddress = this.selectedCity
selectedId = this.selectedCity.id
}
} else {
//
result.selectedAddress = this.selectedProvince
selectedId = this.selectedProvince.id
}
result.fullAddress = fullAddress
result.selectedId = selectedId // ID
result.selectedIds = selectedIds // ID
this.$emit('confirm', result)
this.close()


+ 3
- 3
components/screen/screenWork.vue View File

@ -340,7 +340,7 @@
this.result.push({
name: n.type,
label: this.popupSelectedAddress,
value: this.popupSelectedAddress == '全部地区' ? 'all' : this.popupSelectedAddress
value: this.popupSelectedAddress == '全部地区' ? 'all' : this.areaId.value // 使ID
})
} else {
// 使tag
@ -372,14 +372,14 @@
// areaId
this.areaId.label = addressResult.fullAddress
this.areaId.value = addressResult.selectedAddress.adress
this.areaId.value = addressResult.selectedId // 使ID
console.log('addressResult', addressResult);
// clickItemresult
this.clickItem({
label: addressResult.fullAddress,
value: addressResult.selectedAddress.adress,
value: addressResult.selectedId, // ID
})
// -


+ 12
- 11
pages_order/auth/certification.vue View File

@ -166,17 +166,17 @@
<script>
export default {
data() {
return {
checkboxValue : [],
form : {},
fileList: [],
authFileList : [],
skillBook : [],
sub : 0,
isExpiringSoon: false, //
expireText: '认证即将过期,重新认证', //
}
},
return {
checkboxValue : [],
form : {},
fileList: [],
authFileList : [],
skillBook : [],
sub : 0,
isExpiringSoon: false, //
expireText: '认证即将过期,重新认证', //
}
},
onLoad() {
this.getAuthenticationPerson();
},
@ -236,6 +236,7 @@
let self = this
e.file.forEach(file => {
self.$Oss.ossUpload(file.url).then(url => {
console.log(url);
self[e.name].push({
url
})


+ 49
- 6
pages_order/work/addResume.vue View File

@ -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) {
// 使AddressPickerfullAddress
//
this.selectedAddress = addressResult.fullAddress
this.form.expectAddress = addressResult.fullAddress
// IDID
if (addressResult.selectedIds && addressResult.selectedIds.length > 0) {
// ID
this.form.expectAddress = addressResult.selectedIds.join(',')
} else {
// ID
this.form.expectAddress = addressResult.selectedId
}
},
},
}


+ 16
- 13
pages_order/work/jobPosting.vue View File

@ -220,17 +220,18 @@
data() {
return {
form : {
// jobContext : '',
phone : '',
workAddress:'',
title : '',
workAge : '',
natureId : 0,
areaId_dictText : '',
typeId_dictText : '',
qulification : '',
deadline : '',
},
// jobContext : '',
phone : '',
workAddress:'',
title : '',
workAge : '',
natureId : 0,
areaId : '', // ID
areaId_dictText : '', //
typeId_dictText : '',
qulification : '',
deadline : '',
},
radiovalue : '',
priceList : [
{
@ -313,7 +314,7 @@
delete detail.hanHaiMember
delete detail.updateTime
delete detail.updateBy
delete detail.areaId // areaId
// areaId
this.form = detail
@ -443,8 +444,10 @@
//
onAddressConfirm(addressResult) {
// ID
//
this.form.areaId_dictText = addressResult.fullAddress
// ID
this.form.areaId = addressResult.selectedId
},
}
}


Loading…
Cancel
Save