<template> <el-dropdown trigger="click" @command="handleSetSize"> <div> <svg-icon class-name="size-icon" icon-class="size" /> </div> <el-dropdown-menu slot="dropdown"> <el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size === item.value" :command="item.value" > {{ item.label }} </el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> <script> export default { data() { return { sizeOptions: [ { label: "Default", value: "default" }, { label: "Medium", value: "medium" }, { label: "Small", value: "small" }, { label: "Mini", value: "mini" }, ], }; }, computed: { size() { return this.$store.getters.size; }, }, methods: { handleSetSize(size) { this.$ELEMENT.size = size; this.$store.dispatch("app/setSize", size); this.refreshView(); this.$message({ message: "Switch Size Success", type: "success", }); }, refreshView() { // In order to make the cached page re-rendered this.$store.dispatch("tagsView/delAllCachedViews", this.$route); const { fullPath } = this.$route; this.$nextTick(() => { this.$router.replace({ path: "/redirect" + fullPath, }); }); }, }, }; </script>