155 lines
5.1 KiB
JavaScript
155 lines
5.1 KiB
JavaScript
![]() |
var e = function() {
|
||
|
function e(e, t) {
|
||
|
var n = [], i = !0, r = !1, s = void 0;
|
||
|
try {
|
||
|
for (var c, u = e[Symbol.iterator](); !(i = (c = u.next()).done) && (n.push(c.value),
|
||
|
!t || n.length !== t); i = !0) ;
|
||
|
} catch (e) {
|
||
|
r = !0, s = e;
|
||
|
} finally {
|
||
|
try {
|
||
|
!i && u.return && u.return();
|
||
|
} finally {
|
||
|
if (r) throw s;
|
||
|
}
|
||
|
}
|
||
|
return n;
|
||
|
}
|
||
|
return function(t, n) {
|
||
|
if (Array.isArray(t)) return t;
|
||
|
if (Symbol.iterator in Object(t)) return e(t, n);
|
||
|
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
||
|
};
|
||
|
}(), t = require("../common/component"), n = require("../picker/shared");
|
||
|
|
||
|
(0, t.VantComponent)({
|
||
|
classes: [ "active-class", "toolbar-class", "column-class" ],
|
||
|
props: Object.assign({}, n.pickerProps, {
|
||
|
value: String,
|
||
|
areaList: {
|
||
|
type: Object,
|
||
|
value: {}
|
||
|
},
|
||
|
columnsNum: {
|
||
|
type: [ String, Number ],
|
||
|
value: 3
|
||
|
}
|
||
|
}),
|
||
|
data: {
|
||
|
columns: [ {
|
||
|
values: []
|
||
|
}, {
|
||
|
values: []
|
||
|
}, {
|
||
|
values: []
|
||
|
} ],
|
||
|
displayColumns: [ {
|
||
|
values: []
|
||
|
}, {
|
||
|
values: []
|
||
|
}, {
|
||
|
values: []
|
||
|
} ]
|
||
|
},
|
||
|
watch: {
|
||
|
value: function(e) {
|
||
|
this.code = e, this.setValues();
|
||
|
},
|
||
|
areaList: "setValues",
|
||
|
columnsNum: function(e) {
|
||
|
this.set({
|
||
|
displayColumns: this.data.columns.slice(0, +e)
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
mounted: function() {
|
||
|
this.setValues();
|
||
|
},
|
||
|
methods: {
|
||
|
getPicker: function() {
|
||
|
return null == this.picker && (this.picker = this.selectComponent(".van-area__picker")),
|
||
|
this.picker;
|
||
|
},
|
||
|
onCancel: function(e) {
|
||
|
this.emit("cancel", e.detail);
|
||
|
},
|
||
|
onConfirm: function(e) {
|
||
|
this.emit("confirm", e.detail);
|
||
|
},
|
||
|
emit: function(e, t) {
|
||
|
t.values = t.value, delete t.value, this.$emit(e, t);
|
||
|
},
|
||
|
onChange: function(e) {
|
||
|
var t = this, n = e.detail, i = n.index, r = n.picker, s = n.value;
|
||
|
this.code = s[i].code, this.setValues().then(function() {
|
||
|
t.$emit("change", {
|
||
|
picker: r,
|
||
|
values: r.getValues(),
|
||
|
index: i
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
getConfig: function(e) {
|
||
|
var t = this.data.areaList;
|
||
|
return t && t[e + "_list"] || {};
|
||
|
},
|
||
|
getList: function(e, t) {
|
||
|
var n = [];
|
||
|
if ("province" !== e && !t) return n;
|
||
|
var i = this.getConfig(e);
|
||
|
return n = Object.keys(i).map(function(e) {
|
||
|
return {
|
||
|
code: e,
|
||
|
name: i[e]
|
||
|
};
|
||
|
}), t && ("9" === t[0] && "city" === e && (t = "9"), n = n.filter(function(e) {
|
||
|
return 0 === e.code.indexOf(t);
|
||
|
})), n;
|
||
|
},
|
||
|
getIndex: function(e, t) {
|
||
|
var n = "province" === e ? 2 : "city" === e ? 4 : 6, i = this.getList(e, t.slice(0, n - 2));
|
||
|
"9" === t[0] && "province" === e && (n = 1), t = t.slice(0, n);
|
||
|
for (var r = 0; r < i.length; r++) if (i[r].code.slice(0, n) === t) return r;
|
||
|
return 0;
|
||
|
},
|
||
|
setValues: function() {
|
||
|
var t = this, n = this.getConfig("county"), i = this.code || Object.keys(n)[0] || "", r = this.getList("province"), s = this.getList("city", i.slice(0, 2)), c = this.getPicker();
|
||
|
if (c) {
|
||
|
var u = [];
|
||
|
if (u.push(c.setColumnValues(0, r, !1)), u.push(c.setColumnValues(1, s, !1)), s.length && "00" === i.slice(2, 4)) {
|
||
|
var o = e(s, 1);
|
||
|
i = o[0].code;
|
||
|
}
|
||
|
return u.push(c.setColumnValues(2, this.getList("county", i.slice(0, 4)), !1)),
|
||
|
Promise.all(u).catch(function() {}).then(function() {
|
||
|
return c.setIndexes([ t.getIndex("province", i), t.getIndex("city", i), t.getIndex("county", i) ]);
|
||
|
}).catch(function() {});
|
||
|
}
|
||
|
},
|
||
|
getValues: function() {
|
||
|
var e = this.getPicker();
|
||
|
return e ? e.getValues().filter(function(e) {
|
||
|
return !!e;
|
||
|
}) : [];
|
||
|
},
|
||
|
getDetail: function() {
|
||
|
var e = this.getValues(), t = {
|
||
|
code: "",
|
||
|
country: "",
|
||
|
province: "",
|
||
|
city: "",
|
||
|
county: ""
|
||
|
};
|
||
|
if (!e.length) return t;
|
||
|
var n = e.map(function(e) {
|
||
|
return e.name;
|
||
|
});
|
||
|
return t.code = e[e.length - 1].code, "9" === t.code[0] ? (t.country = n[1] || "",
|
||
|
t.province = n[2] || "") : (t.province = n[0] || "", t.city = n[1] || "", t.county = n[2] || ""),
|
||
|
t;
|
||
|
},
|
||
|
reset: function() {
|
||
|
return this.code = "", this.setValues();
|
||
|
}
|
||
|
}
|
||
|
});
|