业务代理商-三级区域选择-data-picker多余组件清理

This commit is contained in:
WindowBird 2025-08-19 18:05:45 +08:00
parent e23be989d7
commit 95a9d76b4a

View File

@ -47,58 +47,67 @@
<!-- 服务区域选择 - 三级选择 -->
<view class="form-item">
<view class="form-label">请选择您的服务区域</view>
<!-- 省份选择 -->
<view class="region-picker-item">
<view class="picker-label">省份</view>
<picker
:range="provinceList"
<picker
:range="provinceList"
:value="selectedProvinceIndex"
range-key="name"
@change="onProvinceChange"
:value="selectedProvinceIndex"
>
<view class="picker-display">
<text class="picker-text">{{ selectedProvince ? selectedProvince.name : '请选择省份' }}</text>
<text class="picker-text">{{
selectedProvince ? selectedProvince.name : '请选择省份'
}}</text>
<text class="picker-arrow"></text>
</view>
</picker>
</view>
<!-- 城市选择 -->
<view class="region-picker-item" v-if="selectedProvince">
<view v-if="selectedProvince" class="region-picker-item">
<view class="picker-label">城市</view>
<picker
:range="cityList"
<picker
:range="cityList"
:value="selectedCityIndex"
range-key="name"
@change="onCityChange"
:value="selectedCityIndex"
>
<view class="picker-display">
<text class="picker-text">{{ selectedCity ? selectedCity.name : '请选择城市' }}</text>
<text class="picker-text">{{
selectedCity ? selectedCity.name : '请选择城市'
}}</text>
<text class="picker-arrow"></text>
</view>
</picker>
</view>
<!-- 区县选择 -->
<view class="region-picker-item" v-if="selectedCity">
<view v-if="selectedCity" class="region-picker-item">
<view class="picker-label">区县</view>
<picker
:range="districtList"
<picker
:range="districtList"
:value="selectedDistrictIndex"
range-key="name"
@change="onDistrictChange"
:value="selectedDistrictIndex"
>
<view class="picker-display">
<text class="picker-text">{{ selectedDistrict ? selectedDistrict.name : '请选择区县' }}</text>
<text class="picker-text">{{
selectedDistrict ? selectedDistrict.name : '请选择区县'
}}</text>
<text class="picker-arrow"></text>
</view>
</picker>
</view>
<!-- 显示完整地址 -->
<view class="selected-address" v-if="selectedDistrict">
<text class="address-text">已选择: {{ selectedProvince.name }} {{ selectedCity.name }} {{ selectedDistrict.name }}</text>
<view v-if="selectedDistrict" class="selected-address">
<text class="address-text"
>已选择: {{ selectedProvince.name }} {{ selectedCity.name }}
{{ selectedDistrict.name }}
</text>
</view>
</view>
@ -128,7 +137,11 @@
<!-- 提交按钮 -->
<view class="submit-section">
<button :disabled="!canSubmit || submitting" class="submit-btn" @click="submitApplication">
<button
:disabled="!canSubmit || submitting"
class="submit-btn"
@click="submitApplication"
>
{{ submitting ? '提交中...' : '申请成为代理商' }}
</button>
</view>
@ -156,13 +169,10 @@
<script>
import commonEnum from '../../enum/commonEnum'
import { applyForAgent, getAgentAgreement, getServiceAreas } from '@/api/agents'
import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue'
export default {
name: 'AgentsPage',
components: {
uniDataPicker
},
components: {},
computed: {
commonEnum() {
return commonEnum
@ -184,7 +194,7 @@ export default {
this.loadServiceAreas()
this.loadAgreement()
this.loadRegionTreeData()
//
console.log('页面加载完成,三级选择器已初始化')
},
@ -244,10 +254,10 @@ export default {
]
// ID
this.areaIdMap = {
'福建省宁德市福鼎市': 8,
'福建省宁德市霞浦县': 9,
'福建省宁德市古田县': 10,
'福建省宁德市屏南县': 11,
福建省宁德市福鼎市: 8,
福建省宁德市霞浦县: 9,
福建省宁德市古田县: 10,
福建省宁德市屏南县: 11,
}
}
},
@ -256,8 +266,8 @@ export default {
extractRegionData(regions) {
const names = []
const idMap = {}
const extractData = (regionList) => {
const extractData = regionList => {
regionList.forEach(region => {
names.push(region.name)
idMap[region.name] = region.id
@ -266,7 +276,7 @@ export default {
}
})
}
extractData(regions)
return { names, idMap }
},
@ -405,7 +415,7 @@ export default {
城市: this.selectedCity?.name,
区县: this.selectedDistrict?.name,
完整地址: this.formData.serviceArea,
区域ID: regionId
区域ID: regionId,
})
const response = await applyForAgent(requestData)
@ -482,14 +492,14 @@ export default {
{ id: 8, name: '福鼎市' },
{ id: 9, name: '霞浦县' },
{ id: 10, name: '古田县' },
{ id: 11, name: '屏南县' }
]
}
]
}
{ id: 11, name: '屏南县' },
],
},
],
},
]
}
//
this.initThreeLevelData()
},
@ -498,7 +508,7 @@ export default {
initThreeLevelData() {
//
this.provinceList = this.regionTreeData
// areaIdMap
this.initAreaIdMap()
},
@ -506,7 +516,7 @@ export default {
// ID
initAreaIdMap() {
const idMap = {}
const extractIds = (regions) => {
const extractIds = regions => {
regions.forEach(region => {
idMap[region.name] = region.id
if (region.children && region.children.length > 0) {
@ -524,17 +534,17 @@ export default {
const index = e.detail.value
this.selectedProvinceIndex = index
this.selectedProvince = this.provinceList[index]
//
this.selectedCity = null
this.selectedCityIndex = -1
this.selectedDistrict = null
this.selectedDistrictIndex = -1
//
this.cityList = this.selectedProvince.children || []
this.districtList = []
//
this.updateServiceArea()
},
@ -544,14 +554,14 @@ export default {
const index = e.detail.value
this.selectedCityIndex = index
this.selectedCity = this.cityList[index]
//
this.selectedDistrict = null
this.selectedDistrictIndex = -1
//
this.districtList = this.selectedCity.children || []
//
this.updateServiceArea()
},
@ -561,7 +571,7 @@ export default {
const index = e.detail.value
this.selectedDistrictIndex = index
this.selectedDistrict = this.districtList[index]
//
this.updateServiceArea()
},
@ -806,7 +816,7 @@ export default {
.agreement-modal-content {
flex: 1;
padding:50rpx;
padding: 50rpx;
max-width: 500rpx;
max-height: 600rpx;
overflow-y: auto;
@ -843,7 +853,7 @@ export default {
border-radius: 8rpx;
font-size: 24rpx;
color: #666;
text {
display: block;
margin-bottom: 5rpx;
@ -853,14 +863,14 @@ export default {
//
.region-picker-item {
margin-bottom: 20rpx;
.picker-label {
font-size: 26rpx;
color: #666;
margin-bottom: 10rpx;
font-weight: 500;
}
.picker-display {
height: 80rpx;
background: #ffffff;
@ -872,17 +882,17 @@ export default {
align-items: center;
justify-content: space-between;
cursor: pointer;
&:active {
background: #f5f5f5;
}
.picker-text {
font-size: 28rpx;
color: #333;
flex: 1;
}
.picker-arrow {
font-size: 24rpx;
color: #999;
@ -896,7 +906,7 @@ export default {
background: #f8f9fa;
border-radius: 12rpx;
border: 2rpx solid #e9ecef;
.address-text {
font-size: 28rpx;
color: #495057;