feat(area-selector): 重构地区选择器数据加载逻辑

- 将数据请求逻辑独立为 requestCityData 方法
- 集成腾讯地图行政区域 API 获取准确地区数据
- 实现地区数据格式转换适配组件需求
- 添加内置精简地区数据作为降级方案
- 优化异步处理和错误捕获机制
- 修复子级数据为空时的显示问题
This commit is contained in:
2026-04-03 21:58:30 +08:00
parent ea8fcd691d
commit 2b82e4a6d0
3 changed files with 94 additions and 40 deletions

View File

@@ -254,7 +254,7 @@
<!-- 地址选择器 -->
<liu-customize-sel ref="area" @change="chooseSuccess"></liu-customize-sel>
<liu-customize-sel ref="area" :level="2" @change="chooseSuccess"></liu-customize-sel>
</block>
</u--form>
@@ -308,13 +308,16 @@
avatarUrl: '',
// 临时图片 (用于上传)
tempFile: null,
// 表单数据
form: {
houseTitle: '',
area: '',
status: 10,
address: ''
},
// 表单数据
form: {
houseTitle: '',
province: '',
city: '',
region: '',
area: '',
status: 10,
address: ''
},
fileList1: [],
fileList2: [],
loading: false,
@@ -537,6 +540,9 @@
app.form.videoUrl = app.fileList2[0] ? app.fileList2[0].url : null
app.form.monthlyRent = app.monthlyRent
const saveOrUpdate = app.selectId > 0 ? updateHouseInfo : addHouseInfo;
// 调试:打印提交的数据
console.log('提交表单数据:', JSON.stringify(app.form, null, 2));
console.log('province:', app.form.province, 'city:', app.form.city, 'area:', app.form.area);
saveOrUpdate(app.form).then(result => {
app.$toast('保存成功')
setTimeout(() => {
@@ -647,12 +653,23 @@
},
//地址选择成功
chooseSuccess(e) {
console.log('chooseSuccess 收到数据:', JSON.stringify(e));
const data = e.value
if (!data || data.length < 2) {
console.error('地区数据不完整:', data);
return;
}
this.form.province = data[0].label
this.form.city = data[1].label
this.form.region = data[2].label
this.form.area = `${data[0].label} ${data[1].label} ${data[2].label}`
console.log("this.form.area: ", this.form.area);
// 根据选择层级保存数据
if (data.length >= 3 && data[2]) {
this.form.region = data[2].label
this.form.area = `${data[0].label} ${data[1].label} ${data[2].label}`
} else {
this.form.region = ''
this.form.area = `${data[0].label} ${data[1].label}`
}
console.log('地区选择完成 - province:', this.form.province, 'city:', this.form.city, 'area:', this.form.area);
},
changeHandler(e) {
console.log("e: ", e);