collapse.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. defineOptions({
  4. name: "Collapse"
  5. });
  6. const radio = ref();
  7. const collapseRef = ref();
  8. const activeNames = ref(["1", "2", "3", "4", "5"]);
  9. const isOpen = ref(true);
  10. function onClick() {
  11. isOpen.value
  12. ? (activeNames.value = [])
  13. : radio.value === "accordion"
  14. ? (activeNames.value = ["5"])
  15. : (activeNames.value = ["1", "2", "3", "4", "5"]);
  16. isOpen.value = !isOpen.value;
  17. }
  18. const handleChange = (val: string[]) => {
  19. console.log(val);
  20. };
  21. </script>
  22. <template>
  23. <el-card shadow="never">
  24. <template #header>
  25. <div class="card-header">
  26. <el-space wrap :size="40">
  27. <el-link
  28. v-tippy="{
  29. content: '点击查看详细文档'
  30. }"
  31. href="https://element-plus.org/zh-CN/component/collapse.html"
  32. target="_blank"
  33. style="font-size: 16px; font-weight: 800"
  34. >
  35. 折叠面板
  36. </el-link>
  37. </el-space>
  38. </div>
  39. <el-link
  40. class="mt-2"
  41. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/collapse.vue"
  42. target="_blank"
  43. >
  44. 代码位置 src/views/components/collapse.vue
  45. </el-link>
  46. </template>
  47. <div class="mb-2">基础用法</div>
  48. <el-radio-group v-model="radio" class="mb-3">
  49. <el-radio value="">可同时展开多个面板</el-radio>
  50. <el-radio value="accordion">每次只能展开一个面板</el-radio>
  51. </el-radio-group>
  52. <el-button size="small" text bg class="ml-8! mb-1!" @click="onClick">
  53. 外部触发打开、关闭
  54. </el-button>
  55. <el-collapse
  56. ref="collapseRef"
  57. v-model="activeNames"
  58. class="w-[360px]"
  59. :accordion="radio === 'accordion' ? true : false"
  60. @change="handleChange"
  61. >
  62. <el-collapse-item title="周一" name="1">
  63. 周一启航,新的篇章
  64. </el-collapse-item>
  65. <el-collapse-item title="周二" name="2">
  66. 周二律动,携手共进
  67. </el-collapse-item>
  68. <el-collapse-item title="周三" name="3">
  69. 周三昂扬,激情不减
  70. </el-collapse-item>
  71. <el-collapse-item title="周四" name="4">
  72. 周四精进,事半功倍
  73. </el-collapse-item>
  74. <el-collapse-item name="5">
  75. <template #title>
  76. 周五
  77. <IconifyIconOnline
  78. icon="streamline-emojis:beaming-face-with-smiling-eyes"
  79. class="ml-1"
  80. width="30"
  81. />
  82. </template>
  83. 周五喜悦,收尾归档
  84. </el-collapse-item>
  85. </el-collapse>
  86. </el-card>
  87. </template>