index.vue 985 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <template>
  2. <el-dropdown trigger="click" @command="handleSizeChange">
  3. <div>
  4. <svg-icon icon-class="size" />
  5. </div>
  6. <template #dropdown>
  7. <el-dropdown-menu>
  8. <el-dropdown-item
  9. v-for="item of sizeOptions"
  10. :key="item.value"
  11. :disabled="appStore.size == item.value"
  12. :command="item.value"
  13. >
  14. {{ item.label }}
  15. </el-dropdown-item>
  16. </el-dropdown-menu>
  17. </template>
  18. </el-dropdown>
  19. </template>
  20. <script setup lang="ts">
  21. import { useAppStore } from "@/store/modules/app";
  22. const { t } = useI18n();
  23. const sizeOptions = computed(() => {
  24. return [
  25. { label: t("sizeSelect.default"), value: "default" },
  26. { label: t("sizeSelect.large"), value: "large" },
  27. { label: t("sizeSelect.small"), value: "small" },
  28. ];
  29. });
  30. const appStore = useAppStore();
  31. function handleSizeChange(size: string) {
  32. appStore.changeSize(size);
  33. ElMessage.success(t("sizeSelect.message.success"));
  34. }
  35. </script>