| <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> |