2024-02-02 15:04:47 +08:00
|
|
|
<template>
|
|
|
|
|
<el-cascader
|
|
|
|
|
:options="area.data"
|
|
|
|
|
:show-all-levels="showAllLevels"
|
|
|
|
|
v-model="model"
|
|
|
|
|
:filterable="filterable"
|
|
|
|
|
:placeholder="placeholder"
|
|
|
|
|
:disabled="disabled"
|
|
|
|
|
:clearable="clearable"
|
|
|
|
|
></el-cascader>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import { mapGetters } from "vuex";
|
|
|
|
|
|
|
|
|
|
function getProv(code) {
|
|
|
|
|
return code.substring(0, 2) + "0000";
|
|
|
|
|
}
|
|
|
|
|
function getCity(code) {
|
|
|
|
|
return code.substring(0, 4) + "00";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
props: {
|
|
|
|
|
value: String,
|
|
|
|
|
filterable: Boolean,
|
|
|
|
|
placeholder: String,
|
|
|
|
|
showAllLevels: { type: Boolean, default: true },
|
|
|
|
|
disabled: Boolean,
|
|
|
|
|
clearable: Boolean,
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options: [],
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.$store.dispatch("InitArea");
|
|
|
|
|
},
|
|
|
|
|
watch: {},
|
|
|
|
|
computed: {
|
|
|
|
|
...mapGetters(["area"]),
|
|
|
|
|
prov() {
|
|
|
|
|
if (this.county) {
|
|
|
|
|
return getProv(this.county);
|
|
|
|
|
} else {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
city() {
|
|
|
|
|
if (this.county) {
|
|
|
|
|
return getCity(this.county);
|
|
|
|
|
} else {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
county: {
|
|
|
|
|
get() {
|
|
|
|
|
return this.value;
|
|
|
|
|
},
|
|
|
|
|
set(val) {
|
|
|
|
|
this.$emit("input", val);
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
model: {
|
|
|
|
|
set(val) {
|
|
|
|
|
if (val.length > 2) {
|
|
|
|
|
this.county = val[2];
|
|
|
|
|
} else {
|
|
|
|
|
this.county = undefined;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
get() {
|
|
|
|
|
if (this.county) {
|
|
|
|
|
return [this.prov, this.city, this.county];
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style>
|
2024-04-19 14:58:16 +08:00
|
|
|
</style>
|