店铺列表店铺地址,选择经纬度调整

This commit is contained in:
2026-01-13 16:38:04 +08:00
parent e61a297d9a
commit db467815dd
3 changed files with 543 additions and 178 deletions

View File

@@ -1,13 +1,40 @@
<template>
<div class="center">
<el-select placeholder="请选择省" style="width: 100px;" v-model="provCode" @change="provChange">
<el-option v-for="item in provList" :key="item.regionId" :label="item.regionName" :value="item.regionId" />
<el-select placeholder="请选择省" style="width: 100px" v-model="provCode" @change="provChange">
<el-option
v-for="item in provList"
:key="item.regionId"
:label="item.regionName"
:value="item.regionId"
/>
</el-select>
<el-select placeholder="请选择市" style="width: 100px;" :disabled="!provCode" v-model="cityCode" @change="cityChange">
<el-option v-for="item in cityList" :key="item.regionId" :label="item.regionName" :value="item.regionId" />
<el-select
placeholder="请选择市"
style="width: 100px"
:disabled="!provCode"
v-model="cityCode"
@change="cityChange"
>
<el-option
v-for="item in cityList"
:key="item.regionId"
:label="item.regionName"
:value="item.regionId"
/>
</el-select>
<el-select placeholder="请选择区" style="width: 100px;" :disabled="!cityCode" v-model="areaCode" @change="areaChange">
<el-option v-for="item in areaList" :key="item.regionId" :label="item.regionName" :value="item.regionId" />
<el-select
placeholder="请选择区"
style="width: 100px"
:disabled="!cityCode"
v-model="areaCode"
@change="areaChange"
>
<el-option
v-for="item in areaList"
:key="item.regionId"
:label="item.regionName"
:value="item.regionId"
/>
</el-select>
</div>
</template>
@@ -26,23 +53,31 @@ const provCode = defineModel("provCode", {
});
// 监听省份code变化
watch(provCode, async (n, o) => {
await getRegionAjax()
if (n && n !== undefined) {
provChange(n, true)
watch(
provCode,
async (n, o) => {
await getRegionAjax();
if (n && n !== undefined) {
provChange(n, true);
// 监听市区code变化
watch(cityCode, async (n, o) => {
if (n !== undefined && n) {
cityChange(n, true)
}
}, {
immediate: true // 可选:初始化立即执行,验证是否监听到初始值
})
// 监听市区code变化
watch(
cityCode,
async (n, o) => {
if (n !== undefined && n) {
cityChange(n, true);
}
},
{
immediate: true, // 可选:初始化立即执行,验证是否监听到初始值
}
);
}
},
{
immediate: true, // 可选:初始化立即执行,验证是否监听到初始值
}
}, {
immediate: true // 可选:初始化立即执行,验证是否监听到初始值
})
);
const cityCode = defineModel("cityCode", {
type: String,
@@ -69,10 +104,10 @@ const area = defineModel("area", {
default: "",
});
const wxProvinceCode = defineModel('wxProvinceCode', {
const wxProvinceCode = defineModel("wxProvinceCode", {
type: String,
default: ''
})
default: "",
});
// 省份变化 e code isEcho是否回显
function provChange(e: string, isEcho: boolean = false) {
@@ -100,7 +135,7 @@ function cityChange(e: string, isEcho: boolean = false) {
city.value = cityObj ? cityObj.regionName : "";
if (cityObj && cityObj.children) {
areaList.value = cityObj.children;
wxProvinceCode.value = cityObj.wxProvinceCode
wxProvinceCode.value = cityObj.wxProvinceCode;
}
}
@@ -116,7 +151,7 @@ async function getRegionAjax() {
const res = await getRegion();
provList.value = res;
} catch (error) {
console.error('获取省市区数据失败:', error);
console.error("获取省市区数据失败:", error);
}
}
</script>
@@ -127,4 +162,4 @@ async function getRegionAjax() {
align-items: center;
gap: 14px;
}
</style>
</style>