|
|
@ -41,9 +41,6 @@ |
|
|
|
@clickItem="clickItem" |
|
|
|
@popupChange="change"></uv-drop-down-popup> |
|
|
|
|
|
|
|
<!-- 地址选择组件 --> |
|
|
|
<AddressPicker ref="addressPicker" @confirm="onAddressConfirm" /> |
|
|
|
|
|
|
|
<uv-popup ref="popup" :round="30" |
|
|
|
:safeAreaInsetBottom="false"> |
|
|
|
<view class="popup"> |
|
|
@ -55,7 +52,17 @@ |
|
|
|
<view class="title"> |
|
|
|
{{ role ? item.bossTitle : item.title }} |
|
|
|
</view> |
|
|
|
<view class="tagList"> |
|
|
|
<!-- 地址选择使用AddressPicker组件 --> |
|
|
|
<view v-if="item.type === 'areaId'" class="address-selector" @click="openAddressPickerInPopup"> |
|
|
|
<view class="selected-address"> |
|
|
|
{{ popupSelectedAddress || '请选择工作地区' }} |
|
|
|
</view> |
|
|
|
<view class="arrow"> |
|
|
|
<uv-icon name="arrow-right" size="30rpx"></uv-icon> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<!-- 其他选项使用tagList --> |
|
|
|
<view v-else class="tagList"> |
|
|
|
<view |
|
|
|
:class="{act : i == item.index}" |
|
|
|
@click="clickTag(item, i)" |
|
|
@ -72,6 +79,9 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</uv-popup> |
|
|
|
|
|
|
|
<!-- 地址选择组件 --> |
|
|
|
<AddressPicker ref="addressPicker" @confirm="onAddressConfirm" /> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
@ -162,7 +172,8 @@ |
|
|
|
index : 0, |
|
|
|
type : 'areaId', |
|
|
|
}, |
|
|
|
] |
|
|
|
], |
|
|
|
popupSelectedAddress: '', // 弹窗中选中的地址 |
|
|
|
} |
|
|
|
}, |
|
|
|
computed : { |
|
|
@ -305,6 +316,7 @@ |
|
|
|
|
|
|
|
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1); |
|
|
|
|
|
|
|
console.log('this.result', this.result); |
|
|
|
|
|
|
|
this.$emit('clickItem', this.result) |
|
|
|
}, |
|
|
@ -313,12 +325,22 @@ |
|
|
|
this.result = [] |
|
|
|
|
|
|
|
this.list.forEach(n => { |
|
|
|
let t = n.tag[n.index] |
|
|
|
this.result.push({ |
|
|
|
name: n.type, |
|
|
|
label : t.label, |
|
|
|
value : t.value |
|
|
|
}) |
|
|
|
// 地址选择使用AddressPicker的结果 |
|
|
|
if(n.type === 'areaId' && this.popupSelectedAddress) { |
|
|
|
this.result.push({ |
|
|
|
name: n.type, |
|
|
|
label: this.popupSelectedAddress, |
|
|
|
value: this.popupSelectedAddress |
|
|
|
}) |
|
|
|
} else { |
|
|
|
// 其他选项使用tag选择 |
|
|
|
let t = n.tag[n.index] |
|
|
|
this.result.push({ |
|
|
|
name: n.type, |
|
|
|
label : t.label, |
|
|
|
value : t.value |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1); |
|
|
@ -327,17 +349,30 @@ |
|
|
|
|
|
|
|
this.$refs.popup.close() |
|
|
|
}, |
|
|
|
// 弹窗中打开地址选择器 |
|
|
|
openAddressPickerInPopup() { |
|
|
|
this.$refs.addressPicker.open() |
|
|
|
}, |
|
|
|
|
|
|
|
// 地址选择确认回调 |
|
|
|
onAddressConfirm(addressResult) { |
|
|
|
// 更新弹窗中的地址显示 |
|
|
|
this.popupSelectedAddress = addressResult.fullAddress |
|
|
|
|
|
|
|
// 更新areaId的状态 |
|
|
|
this.areaId.label = addressResult.fullAddress |
|
|
|
this.areaId.value = addressResult.selectedAddress.selectedAddress |
|
|
|
this.areaId.value = addressResult.selectedAddress.adress |
|
|
|
|
|
|
|
console.log('addressResult', addressResult); |
|
|
|
|
|
|
|
// 调用clickItem来更新result数组并触发父组件事件 |
|
|
|
this.clickItem({ |
|
|
|
label: addressResult.fullAddress, |
|
|
|
value: addressResult.selectedAddress.selectedAddress |
|
|
|
value: addressResult.selectedAddress.adress, |
|
|
|
}) |
|
|
|
|
|
|
|
// 关闭下拉菜单 |
|
|
|
this.$refs.dropDown.close() |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
@ -371,6 +406,26 @@ |
|
|
|
background: $uni-color; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.address-selector { |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
background: rgba($uni-color, 0.1); |
|
|
|
padding: 10rpx 20rpx; |
|
|
|
margin: 10rpx; |
|
|
|
border-radius: 10rpx; |
|
|
|
font-size: 26rpx; |
|
|
|
|
|
|
|
.selected-address { |
|
|
|
flex: 1; |
|
|
|
color: #333; |
|
|
|
} |
|
|
|
|
|
|
|
.arrow { |
|
|
|
margin-left: 10rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
.btn { |
|
|
|