cascader.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <script setup lang="ts">
  2. import {
  3. provinceAndCityDataPlus,
  4. provinceAndCityData,
  5. convertTextToCode,
  6. regionDataPlus,
  7. regionData,
  8. CodeToText
  9. } from "@/utils/chinaArea";
  10. import { ref } from "vue";
  11. defineOptions({
  12. name: "Cascader"
  13. });
  14. const selectedOptions1 = ref(["110000", "110100"]);
  15. const selectedOptions2 = ref(["120000", "120100", "120101"]);
  16. const selectedOptions3 = ref(["130000", ""]);
  17. const selectedOptions4 = ref(["120000", "120100", ""]);
  18. const handleChange = value => {
  19. console.log(value);
  20. };
  21. </script>
  22. <template>
  23. <el-card shadow="never">
  24. <template #header>
  25. <p class="font-medium">区域级联选择器</p>
  26. <el-link
  27. class="mt-2"
  28. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/cascader.vue"
  29. target="_blank"
  30. >
  31. 代码位 src/views/components/cascader.vue
  32. </el-link>
  33. </template>
  34. <el-row :gutter="24">
  35. <el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
  36. <div class="flex flex-col items-center justify-center">
  37. <span class="text-[var(--el-color-primary)]">
  38. 1. 二级联动(不带“全部”选项)
  39. <el-cascader
  40. v-model="selectedOptions1"
  41. :options="provinceAndCityData"
  42. @change="handleChange"
  43. />
  44. </span>
  45. <div class="leading-10">
  46. <div>绑定值:{{ selectedOptions1 }}</div>
  47. <div>
  48. 区域码转汉字:
  49. {{ CodeToText[selectedOptions1[0]] }},
  50. {{ CodeToText[selectedOptions1[1]] }}
  51. </div>
  52. <div>
  53. 汉字转区域码:
  54. {{
  55. convertTextToCode(
  56. CodeToText[selectedOptions1[0]],
  57. CodeToText[selectedOptions1[1]]
  58. )
  59. }}
  60. </div>
  61. </div>
  62. </div>
  63. </el-col>
  64. <el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
  65. <div class="flex flex-col items-center justify-center mt-3">
  66. <span class="text-[var(--el-color-primary)]">
  67. 2. 二级联动(带有“全部”选项)
  68. <el-cascader
  69. v-model="selectedOptions3"
  70. :options="provinceAndCityDataPlus"
  71. @change="handleChange"
  72. />
  73. </span>
  74. <div class="leading-10">
  75. <div>绑定值:{{ selectedOptions3 }}</div>
  76. <div>
  77. 区域码转汉字:
  78. {{ CodeToText[selectedOptions3[0]] }},
  79. {{ CodeToText[selectedOptions3[1]] }}
  80. </div>
  81. <div>
  82. 汉字转区域码:
  83. {{
  84. convertTextToCode(
  85. CodeToText[selectedOptions3[0]],
  86. CodeToText[selectedOptions3[1]]
  87. )
  88. }}
  89. </div>
  90. </div>
  91. </div>
  92. </el-col>
  93. <el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
  94. <div class="flex flex-col items-center justify-center mt-3">
  95. <span class="text-[var(--el-color-primary)]">
  96. 3. 三级联动(不带“全部”选项)
  97. <el-cascader
  98. v-model="selectedOptions2"
  99. :options="regionData"
  100. @change="handleChange"
  101. />
  102. </span>
  103. <div class="leading-10">
  104. <div>绑定值:{{ selectedOptions2 }}</div>
  105. <div>
  106. 区域码转汉字:
  107. {{ CodeToText[selectedOptions2[0]] }},
  108. {{ CodeToText[selectedOptions2[1]] }},
  109. {{ CodeToText[selectedOptions2[2]] }}
  110. </div>
  111. <div>
  112. 汉字转区域码:
  113. {{
  114. convertTextToCode(
  115. CodeToText[selectedOptions2[0]],
  116. CodeToText[selectedOptions2[1]],
  117. CodeToText[selectedOptions2[2]]
  118. )
  119. }}
  120. </div>
  121. </div>
  122. </div>
  123. </el-col>
  124. <el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24">
  125. <div class="flex flex-col items-center justify-center mt-3">
  126. <span class="text-[var(--el-color-primary)]">
  127. 4. 三级联动(带"全部选项")
  128. <el-cascader
  129. v-model="selectedOptions4"
  130. :options="regionDataPlus"
  131. @change="handleChange"
  132. />
  133. </span>
  134. <div class="leading-10">
  135. <div>绑定值:{{ selectedOptions4 }}</div>
  136. <div>
  137. 区域码转汉字:
  138. {{ CodeToText[selectedOptions4[0]] }},
  139. {{ CodeToText[selectedOptions4[1]] }},
  140. {{ CodeToText[selectedOptions4[2]] }}
  141. </div>
  142. <div>
  143. 汉字转区域码:
  144. {{
  145. convertTextToCode(
  146. CodeToText[selectedOptions4[0]],
  147. CodeToText[selectedOptions4[1]],
  148. CodeToText[selectedOptions4[2]]
  149. )
  150. }}
  151. </div>
  152. </div>
  153. </div>
  154. </el-col>
  155. </el-row>
  156. </el-card>
  157. </template>