|
|
@@ -131,11 +131,11 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="城市" v-show="!isMunicipalitySelected()">
|
|
|
+ <el-form-item label="城市">
|
|
|
<el-select
|
|
|
v-model="selectedCity"
|
|
|
placeholder="请选择城市"
|
|
|
- :disabled="!selectedProvince || isMunicipalitySelected()"
|
|
|
+ :disabled="!selectedProvince"
|
|
|
filterable
|
|
|
clearable
|
|
|
@change="onCityChange"
|
|
|
@@ -154,7 +154,7 @@
|
|
|
<el-select
|
|
|
v-model="selectedArea"
|
|
|
placeholder="请选择区县"
|
|
|
- :disabled="!selectedProvince || (!selectedCity && !isMunicipalitySelected())"
|
|
|
+ :disabled="!selectedCity"
|
|
|
filterable
|
|
|
clearable
|
|
|
>
|
|
|
@@ -217,180 +217,6 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-// 省级数据
|
|
|
-const PROVINCES = [
|
|
|
- {
|
|
|
- "code": "110000",
|
|
|
- "name": "北京市",
|
|
|
- "province": "11"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "120000",
|
|
|
- "name": "天津市",
|
|
|
- "province": "12"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "130000",
|
|
|
- "name": "河北省",
|
|
|
- "province": "13"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "140000",
|
|
|
- "name": "山西省",
|
|
|
- "province": "14"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "150000",
|
|
|
- "name": "内蒙古自治区",
|
|
|
- "province": "15"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "210000",
|
|
|
- "name": "辽宁省",
|
|
|
- "province": "21"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "220000",
|
|
|
- "name": "吉林省",
|
|
|
- "province": "22"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "230000",
|
|
|
- "name": "黑龙江省",
|
|
|
- "province": "23"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "310000",
|
|
|
- "name": "上海市",
|
|
|
- "province": "31"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "320000",
|
|
|
- "name": "江苏省",
|
|
|
- "province": "32"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "330000",
|
|
|
- "name": "浙江省",
|
|
|
- "province": "33"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "340000",
|
|
|
- "name": "安徽省",
|
|
|
- "province": "34"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "350000",
|
|
|
- "name": "福建省",
|
|
|
- "province": "35"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "360000",
|
|
|
- "name": "江西省",
|
|
|
- "province": "36"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "370000",
|
|
|
- "name": "山东省",
|
|
|
- "province": "37"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "410000",
|
|
|
- "name": "河南省",
|
|
|
- "province": "41"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "420000",
|
|
|
- "name": "湖北省",
|
|
|
- "province": "42"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "430000",
|
|
|
- "name": "湖南省",
|
|
|
- "province": "43"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "440000",
|
|
|
- "name": "广东省",
|
|
|
- "province": "44"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "450000",
|
|
|
- "name": "广西壮族自治区",
|
|
|
- "province": "45"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "460000",
|
|
|
- "name": "海南省",
|
|
|
- "province": "46"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "500000",
|
|
|
- "name": "重庆市",
|
|
|
- "province": "50"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "510000",
|
|
|
- "name": "四川省",
|
|
|
- "province": "51"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "520000",
|
|
|
- "name": "贵州省",
|
|
|
- "province": "52"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "530000",
|
|
|
- "name": "云南省",
|
|
|
- "province": "53"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "540000",
|
|
|
- "name": "西藏自治区",
|
|
|
- "province": "54"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "610000",
|
|
|
- "name": "陕西省",
|
|
|
- "province": "61"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "620000",
|
|
|
- "name": "甘肃省",
|
|
|
- "province": "62"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "630000",
|
|
|
- "name": "青海省",
|
|
|
- "province": "63"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "640000",
|
|
|
- "name": "宁夏回族自治区",
|
|
|
- "province": "64"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "650000",
|
|
|
- "name": "新疆维吾尔自治区",
|
|
|
- "province": "65"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "710000",
|
|
|
- "name": "台湾省",
|
|
|
- "province": "71"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "810000",
|
|
|
- "name": "香港特别行政区",
|
|
|
- "province": "81"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": "820000",
|
|
|
- "name": "澳门特别行政区",
|
|
|
- "province": "82"
|
|
|
- }
|
|
|
-];
|
|
|
-
|
|
|
export default {
|
|
|
name: 'LimitPurchaseRule',
|
|
|
props: {
|
|
|
@@ -433,41 +259,36 @@ export default {
|
|
|
},
|
|
|
|
|
|
|
|
|
- // 使用本地省市区 JSON 级联
|
|
|
- provinces: PROVINCES,
|
|
|
+ // 使用接口获取省市区数据
|
|
|
+ provinces: [],
|
|
|
cities: [],
|
|
|
areas: [],
|
|
|
selectedProvince: '',
|
|
|
selectedCity: '',
|
|
|
selectedArea: '',
|
|
|
- currentRuleRegions: [], // 当前规则下的地区数组
|
|
|
-
|
|
|
- // 直辖市编码列表
|
|
|
- municipalityCodes: ['11', '12', '31', '50'] // 北京、天津、上海、重庆
|
|
|
+ currentRuleRegions: []
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.fetchRuleList()
|
|
|
+ this.fetchProvinces()
|
|
|
},
|
|
|
methods: {
|
|
|
http() {
|
|
|
// 默认用全局 axios,如果父组件传入则优先用父组件的
|
|
|
return this.axiosInstance || this.$axios || this.$http
|
|
|
},
|
|
|
-
|
|
|
- // 判断是否为直辖市
|
|
|
- isMunicipality(provinceCode) {
|
|
|
- if (!provinceCode) return false;
|
|
|
- // 提取前两位作为省份编码进行判断
|
|
|
- const provincePrefix = provinceCode.substring(0, 2);
|
|
|
- return this.municipalityCodes.includes(provincePrefix);
|
|
|
- },
|
|
|
-
|
|
|
- // 判断当前选中的省份是否为直辖市
|
|
|
- isMunicipalitySelected() {
|
|
|
- if (!this.selectedProvince) return false;
|
|
|
- const province = PROVINCES.find(p => p.name === this.selectedProvince);
|
|
|
- return province ? this.isMunicipality(province.code) : false;
|
|
|
+
|
|
|
+ // 获取省份数据
|
|
|
+ async fetchProvinces() {
|
|
|
+ if (!this.http()) return
|
|
|
+ try {
|
|
|
+ const response = await this.http().get('/limit_purchase/region/province')
|
|
|
+ this.provinces = response.data || []
|
|
|
+ } catch (e) {
|
|
|
+ console.error('获取省份数据失败:', e)
|
|
|
+ this.$message.error('获取省份数据失败')
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
// ========== 列表相关 ==========
|
|
|
@@ -621,20 +442,11 @@ export default {
|
|
|
if (!this.selectedProvince) return
|
|
|
|
|
|
try {
|
|
|
- const province = PROVINCES.find(p => p.name === this.selectedProvince)
|
|
|
+ const province = this.provinces.find(p => p.name === this.selectedProvince)
|
|
|
if (province) {
|
|
|
- // 判断是否为直辖市
|
|
|
- if (this.isMunicipality(province.code)) {
|
|
|
- // 直辖市直接获取区县数据,参数需要特殊处理
|
|
|
- // 将110000转换为110100格式
|
|
|
- const municipalityCode = province.code.substring(0, 2) + '0100';
|
|
|
- const response = await this.http().get(`/limit_purchase/region/area/${municipalityCode}`)
|
|
|
- this.areas = response.data || []
|
|
|
- } else {
|
|
|
- // 非直辖市获取城市数据
|
|
|
- const response = await this.http().get(`/limit_purchase/region/city/${province.code}`)
|
|
|
- this.cities = response.data || []
|
|
|
- }
|
|
|
+ // 获取城市数据
|
|
|
+ const response = await this.http().get(`/limit_purchase/region/city/${province.code}`)
|
|
|
+ this.cities = response.data || []
|
|
|
}
|
|
|
} catch (e) {
|
|
|
console.error('获取城市数据失败:', e)
|
|
|
@@ -650,7 +462,7 @@ export default {
|
|
|
if (!this.selectedCity || !this.selectedProvince) return
|
|
|
|
|
|
try {
|
|
|
- const province = PROVINCES.find(p => p.name === this.selectedProvince)
|
|
|
+ const province = this.provinces.find(p => p.name === this.selectedProvince)
|
|
|
if (province) {
|
|
|
const city = this.cities.find(c => c.name === this.selectedCity)
|
|
|
if (city) {
|
|
|
@@ -671,7 +483,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
// 查找选中的省市区对象
|
|
|
- const provinceObj = PROVINCES.find(p => p.name === this.selectedProvince)
|
|
|
+ const provinceObj = this.provinces.find(p => p.name === this.selectedProvince)
|
|
|
const cityObj = this.cities.find(c => c.name === this.selectedCity) || null
|
|
|
const areaObj = this.areas.find(a => a.name === this.selectedArea) || null
|
|
|
|