"use strict";
|
|
const components_cityselect_utils_province = require("./utils/province.js");
|
|
const components_cityselect_utils_city = require("./utils/city.js");
|
|
const components_cityselect_utils_area = require("./utils/area.js");
|
|
const common_vendor = require("../../common/vendor.js");
|
|
const _sfc_main = {
|
|
props: {
|
|
// 通过双向绑定控制组件的弹出与收起
|
|
value: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
// 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"]
|
|
defaultRegion: {
|
|
type: Array,
|
|
default() {
|
|
return [];
|
|
}
|
|
},
|
|
// 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"]
|
|
areaCode: {
|
|
type: Array,
|
|
default() {
|
|
return [];
|
|
}
|
|
},
|
|
// 是否允许通过点击遮罩关闭Picker
|
|
maskCloseAble: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
// 弹出的z-index值
|
|
zIndex: {
|
|
type: [String, Number],
|
|
default: 0
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
cityValue: "",
|
|
isChooseP: false,
|
|
//是否已经选择了省
|
|
province: 0,
|
|
//省级下标
|
|
provinces: components_cityselect_utils_province.provinceData,
|
|
isChooseC: false,
|
|
//是否已经选择了市
|
|
city: 0,
|
|
//市级下标
|
|
citys: components_cityselect_utils_city.cityData[0],
|
|
isChooseA: false,
|
|
//是否已经选择了区
|
|
area: 0,
|
|
//区级下标
|
|
areas: components_cityselect_utils_area.areaData[0][0],
|
|
tabsIndex: 0
|
|
};
|
|
},
|
|
mounted() {
|
|
this.init();
|
|
},
|
|
computed: {
|
|
isChange() {
|
|
return this.tabsIndex > 1;
|
|
},
|
|
genTabsList() {
|
|
let tabsList = [{
|
|
name: "请选择"
|
|
}];
|
|
if (this.isChooseP) {
|
|
tabsList[0]["name"] = this.provinces[this.province]["label"];
|
|
tabsList[1] = {
|
|
name: "请选择"
|
|
};
|
|
}
|
|
if (this.isChooseC) {
|
|
tabsList[1]["name"] = this.citys[this.city]["label"];
|
|
tabsList[2] = {
|
|
name: "请选择"
|
|
};
|
|
}
|
|
if (this.isChooseA) {
|
|
tabsList[2]["name"] = this.areas[this.area]["label"];
|
|
}
|
|
return tabsList;
|
|
},
|
|
uZIndex() {
|
|
return this.zIndex ? this.zIndex : 99;
|
|
}
|
|
},
|
|
methods: {
|
|
open() {
|
|
this.$refs.popup.open();
|
|
},
|
|
init() {
|
|
if (this.areaCode.length == 3) {
|
|
this.setProvince("", this.areaCode[0]);
|
|
this.setCity("", this.areaCode[1]);
|
|
this.setArea("", this.areaCode[2]);
|
|
} else if (this.defaultRegion.length == 3) {
|
|
this.setProvince(this.defaultRegion[0], "");
|
|
this.setCity(this.defaultRegion[1], "");
|
|
this.setArea(this.defaultRegion[2], "");
|
|
}
|
|
},
|
|
setProvince(label = "", value = "") {
|
|
this.provinces.map((v, k) => {
|
|
if (value ? v.value == value : v.label == label) {
|
|
this.provinceChange(k);
|
|
}
|
|
});
|
|
},
|
|
setCity(label = "", value = "") {
|
|
this.citys.map((v, k) => {
|
|
if (value ? v.value == value : v.label == label) {
|
|
this.cityChange(k);
|
|
}
|
|
});
|
|
},
|
|
setArea(label = "", value = "") {
|
|
this.areas.map((v, k) => {
|
|
if (value ? v.value == value : v.label == label) {
|
|
this.isChooseA = true;
|
|
this.area = k;
|
|
}
|
|
});
|
|
},
|
|
close() {
|
|
this.$refs.popup.close();
|
|
},
|
|
tabsChange(index) {
|
|
this.tabsIndex = index;
|
|
},
|
|
provinceChange(param) {
|
|
this.isChooseP = true;
|
|
this.isChooseC = false;
|
|
this.isChooseA = false;
|
|
this.province = param.name;
|
|
this.citys = components_cityselect_utils_city.cityData[param.name];
|
|
this.tabsIndex = 1;
|
|
},
|
|
cityChange(param) {
|
|
this.isChooseC = true;
|
|
this.isChooseA = false;
|
|
this.city = param.name;
|
|
this.areas = components_cityselect_utils_area.areaData[this.province][param.name];
|
|
this.tabsIndex = 2;
|
|
},
|
|
areaChange(param) {
|
|
this.isChooseA = true;
|
|
this.area = param.name;
|
|
let result = {};
|
|
result.province = this.provinces[this.province];
|
|
result.city = this.citys[this.city];
|
|
result.area = this.areas[this.area];
|
|
this.$emit("city-change", result);
|
|
this.close();
|
|
}
|
|
}
|
|
};
|
|
if (!Array) {
|
|
const _easycom_uv_tabs2 = common_vendor.resolveComponent("uv-tabs");
|
|
const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon");
|
|
const _easycom_uv_cell2 = common_vendor.resolveComponent("uv-cell");
|
|
const _easycom_uv_cell_group2 = common_vendor.resolveComponent("uv-cell-group");
|
|
const _easycom_uv_popup2 = common_vendor.resolveComponent("uv-popup");
|
|
(_easycom_uv_tabs2 + _easycom_uv_icon2 + _easycom_uv_cell2 + _easycom_uv_cell_group2 + _easycom_uv_popup2)();
|
|
}
|
|
const _easycom_uv_tabs = () => "../../uni_modules/uv-tabs/components/uv-tabs/uv-tabs.js";
|
|
const _easycom_uv_icon = () => "../../uni_modules/uv-icon/components/uv-icon/uv-icon.js";
|
|
const _easycom_uv_cell = () => "../../uni_modules/uv-cell/components/uv-cell/uv-cell.js";
|
|
const _easycom_uv_cell_group = () => "../../uni_modules/uv-cell/components/uv-cell-group/uv-cell-group.js";
|
|
const _easycom_uv_popup = () => "../../uni_modules/uv-popup/components/uv-popup/uv-popup.js";
|
|
if (!Math) {
|
|
(_easycom_uv_tabs + _easycom_uv_icon + _easycom_uv_cell + _easycom_uv_cell_group + _easycom_uv_popup)();
|
|
}
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return common_vendor.e({
|
|
a: $props.value
|
|
}, $props.value ? {
|
|
b: common_vendor.sr("tabs", "6511adfd-1,6511adfd-0"),
|
|
c: common_vendor.o($options.tabsChange),
|
|
d: common_vendor.p({
|
|
lineColor: "#a0cd63",
|
|
list: $options.genTabsList,
|
|
scrollable: true,
|
|
current: $data.tabsIndex
|
|
})
|
|
} : {}, {
|
|
e: common_vendor.f($data.provinces, (item, index, i0) => {
|
|
return common_vendor.e({
|
|
a: $data.isChooseP && $data.province === index
|
|
}, $data.isChooseP && $data.province === index ? {
|
|
b: "6511adfd-4-" + i0 + "," + ("6511adfd-3-" + i0),
|
|
c: common_vendor.p({
|
|
size: "34",
|
|
color: "#a0cd63",
|
|
name: "checkbox-mark"
|
|
})
|
|
} : {}, {
|
|
d: index,
|
|
e: common_vendor.o($options.provinceChange, index),
|
|
f: "6511adfd-3-" + i0 + ",6511adfd-2",
|
|
g: common_vendor.p({
|
|
title: item.label,
|
|
arrow: false,
|
|
name: index
|
|
})
|
|
});
|
|
}),
|
|
f: $data.isChooseP
|
|
}, $data.isChooseP ? {
|
|
g: common_vendor.f($data.citys, (item, index, i0) => {
|
|
return common_vendor.e({
|
|
a: $data.isChooseC && $data.city === index
|
|
}, $data.isChooseC && $data.city === index ? {
|
|
b: "6511adfd-7-" + i0 + "," + ("6511adfd-6-" + i0),
|
|
c: common_vendor.p({
|
|
size: "34",
|
|
color: "#a0cd63",
|
|
name: "checkbox-mark"
|
|
})
|
|
} : {}, {
|
|
d: index,
|
|
e: common_vendor.o($options.cityChange, index),
|
|
f: "6511adfd-6-" + i0 + ",6511adfd-5",
|
|
g: common_vendor.p({
|
|
title: item.label,
|
|
arrow: false,
|
|
name: index
|
|
})
|
|
});
|
|
})
|
|
} : {}, {
|
|
h: $data.isChooseC
|
|
}, $data.isChooseC ? {
|
|
i: common_vendor.f($data.areas, (item, index, i0) => {
|
|
return common_vendor.e({
|
|
a: $data.isChooseA && $data.area === index
|
|
}, $data.isChooseA && $data.area === index ? {
|
|
b: "6511adfd-10-" + i0 + "," + ("6511adfd-9-" + i0),
|
|
c: common_vendor.p({
|
|
size: "34",
|
|
color: "#a0cd63",
|
|
name: "checkbox-mark"
|
|
})
|
|
} : {}, {
|
|
d: index,
|
|
e: common_vendor.o($options.areaChange, index),
|
|
f: "6511adfd-9-" + i0 + ",6511adfd-8",
|
|
g: common_vendor.p({
|
|
title: item.label,
|
|
arrow: false,
|
|
name: index
|
|
})
|
|
});
|
|
})
|
|
} : {}, {
|
|
j: $options.isChange ? 1 : "",
|
|
k: common_vendor.sr("popup", "6511adfd-0"),
|
|
l: common_vendor.o($options.close),
|
|
m: common_vendor.p({
|
|
mode: "bottom",
|
|
popup: false,
|
|
mask: true,
|
|
closeable: true,
|
|
["safe-area-inset-bottom"]: true,
|
|
["close-icon-color"]: "#ffffff",
|
|
["z-index"]: $options.uZIndex,
|
|
maskCloseAble: $props.maskCloseAble
|
|
})
|
|
});
|
|
}
|
|
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
wx.createComponent(Component);
|