162 lines
5.1 KiB
Vue
162 lines
5.1 KiB
Vue
|
<script setup lang="ts">
|
|||
|
import {
|
|||
|
provinceAndCityDataPlus,
|
|||
|
provinceAndCityData,
|
|||
|
convertTextToCode,
|
|||
|
regionDataPlus,
|
|||
|
regionData,
|
|||
|
CodeToText
|
|||
|
} from "@/utils/chinaArea";
|
|||
|
import { ref } from "vue";
|
|||
|
|
|||
|
defineOptions({
|
|||
|
name: "Cascader"
|
|||
|
});
|
|||
|
|
|||
|
const selectedOptions1 = ref(["110000", "110100"]);
|
|||
|
const selectedOptions2 = ref(["120000", "120100", "120101"]);
|
|||
|
const selectedOptions3 = ref(["130000", ""]);
|
|||
|
const selectedOptions4 = ref(["120000", "120100", ""]);
|
|||
|
|
|||
|
const handleChange = value => {
|
|||
|
console.log(value);
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<template>
|
|||
|
<el-card shadow="never">
|
|||
|
<template #header>
|
|||
|
<p class="font-medium">区域级联选择器</p>
|
|||
|
<el-link
|
|||
|
class="mt-2"
|
|||
|
href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/cascader.vue"
|
|||
|
target="_blank"
|
|||
|
>
|
|||
|
代码位置 src/views/components/cascader.vue
|
|||
|
</el-link>
|
|||
|
</template>
|
|||
|
<el-row :gutter="24">
|
|||
|
<el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
|
|||
|
<div class="flex flex-col items-center justify-center">
|
|||
|
<span class="text-[var(--el-color-primary)]">
|
|||
|
1. 二级联动(不带“全部”选项)
|
|||
|
<el-cascader
|
|||
|
v-model="selectedOptions1"
|
|||
|
:options="provinceAndCityData"
|
|||
|
@change="handleChange"
|
|||
|
/>
|
|||
|
</span>
|
|||
|
<div class="leading-10">
|
|||
|
<div>绑定值:{{ selectedOptions1 }}</div>
|
|||
|
<div>
|
|||
|
区域码转汉字:
|
|||
|
{{ CodeToText[selectedOptions1[0]] }},
|
|||
|
{{ CodeToText[selectedOptions1[1]] }}
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
汉字转区域码:
|
|||
|
{{
|
|||
|
convertTextToCode(
|
|||
|
CodeToText[selectedOptions1[0]],
|
|||
|
CodeToText[selectedOptions1[1]]
|
|||
|
)
|
|||
|
}}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
<el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
|
|||
|
<div class="flex flex-col items-center justify-center mt-3">
|
|||
|
<span class="text-[var(--el-color-primary)]">
|
|||
|
2. 二级联动(带有“全部”选项)
|
|||
|
<el-cascader
|
|||
|
v-model="selectedOptions3"
|
|||
|
:options="provinceAndCityDataPlus"
|
|||
|
@change="handleChange"
|
|||
|
/>
|
|||
|
</span>
|
|||
|
<div class="leading-10">
|
|||
|
<div>绑定值:{{ selectedOptions3 }}</div>
|
|||
|
<div>
|
|||
|
区域码转汉字:
|
|||
|
{{ CodeToText[selectedOptions3[0]] }},
|
|||
|
{{ CodeToText[selectedOptions3[1]] }}
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
汉字转区域码:
|
|||
|
{{
|
|||
|
convertTextToCode(
|
|||
|
CodeToText[selectedOptions3[0]],
|
|||
|
CodeToText[selectedOptions3[1]]
|
|||
|
)
|
|||
|
}}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
<el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
|
|||
|
<div class="flex flex-col items-center justify-center mt-3">
|
|||
|
<span class="text-[var(--el-color-primary)]">
|
|||
|
3. 三级联动(不带“全部”选项)
|
|||
|
<el-cascader
|
|||
|
v-model="selectedOptions2"
|
|||
|
:options="regionData"
|
|||
|
@change="handleChange"
|
|||
|
/>
|
|||
|
</span>
|
|||
|
<div class="leading-10">
|
|||
|
<div>绑定值:{{ selectedOptions2 }}</div>
|
|||
|
<div>
|
|||
|
区域码转汉字:
|
|||
|
{{ CodeToText[selectedOptions2[0]] }},
|
|||
|
{{ CodeToText[selectedOptions2[1]] }},
|
|||
|
{{ CodeToText[selectedOptions2[2]] }}
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
汉字转区域码:
|
|||
|
{{
|
|||
|
convertTextToCode(
|
|||
|
CodeToText[selectedOptions2[0]],
|
|||
|
CodeToText[selectedOptions2[1]],
|
|||
|
CodeToText[selectedOptions2[2]]
|
|||
|
)
|
|||
|
}}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
<el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
|
|||
|
<div class="flex flex-col items-center justify-center mt-3">
|
|||
|
<span class="text-[var(--el-color-primary)]">
|
|||
|
4. 三级联动(带"全部选项")
|
|||
|
<el-cascader
|
|||
|
v-model="selectedOptions4"
|
|||
|
:options="regionDataPlus"
|
|||
|
@change="handleChange"
|
|||
|
/>
|
|||
|
</span>
|
|||
|
<div class="leading-10">
|
|||
|
<div>绑定值:{{ selectedOptions4 }}</div>
|
|||
|
<div>
|
|||
|
区域码转汉字:
|
|||
|
{{ CodeToText[selectedOptions4[0]] }},
|
|||
|
{{ CodeToText[selectedOptions4[1]] }},
|
|||
|
{{ CodeToText[selectedOptions4[2]] }}
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
汉字转区域码:
|
|||
|
{{
|
|||
|
convertTextToCode(
|
|||
|
CodeToText[selectedOptions4[0]],
|
|||
|
CodeToText[selectedOptions4[1]],
|
|||
|
CodeToText[selectedOptions4[2]]
|
|||
|
)
|
|||
|
}}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
</el-row>
|
|||
|
</el-card>
|
|||
|
</template>
|