com-setting.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <!-- 全局设置组件 -->
  2. <template>
  3. <div class="setting-drawer-box">
  4. <el-drawer
  5. v-model="appStore.isShowSetting"
  6. title="全局设置"
  7. size="300px"
  8. >
  9. <div style="height: 100%">
  10. <el-scrollbar>
  11. <div style="padding: 0px 20px;">
  12. <ComSettingLayoutMode></ComSettingLayoutMode>
  13. <ComSettingTheme></ComSettingTheme>
  14. <ComSettingTabStyle></ComSettingTabStyle>
  15. <ComSettingSwitch></ComSettingSwitch>
  16. <ComSettingMore></ComSettingMore>
  17. <el-divider></el-divider>
  18. <div class="btn-box">
  19. <el-button icon="el-icon-Refresh" style="width: 100%;" @click="reset">一键重置</el-button>
  20. </div>
  21. </div>
  22. </el-scrollbar>
  23. </div>
  24. </el-drawer>
  25. </div>
  26. </template>
  27. <script setup name="com-setting">
  28. import ComSettingTheme from './com-setting/com-setting-theme';
  29. import ComSettingSwitch from './com-setting/com-setting-switch';
  30. import ComSettingTabStyle from './com-setting/com-setting-tab-style';
  31. import ComSettingLayoutMode from './com-setting/com-setting-layout-mode';
  32. import ComSettingMore from './com-setting/com-setting-more';
  33. import {useAppStore} from "../../store/app";
  34. import {watch} from "vue";
  35. import {useThemeStore} from "../../store/theme";
  36. import {ElMessage} from "element-plus";
  37. const appStore = useAppStore();
  38. const themeStore = useThemeStore();
  39. // 监听 themeStore,用户改动时,缓存下来
  40. watch(themeStore, () => {
  41. localStorage.setItem('user-layout-theme', JSON.stringify(themeStore.$state));
  42. })
  43. // 恢复默认
  44. const reset = function () {
  45. themeStore.resetTheme();
  46. ElMessage({message: '重置成功'})
  47. }
  48. </script>
  49. <style scoped lang="scss">
  50. .setting-drawer-box{
  51. :deep(.el-drawer__header){
  52. margin-bottom: 25px !important;
  53. }
  54. :deep(.el-drawer__body){
  55. padding: 0 !important;
  56. overflow: hidden;
  57. }
  58. }
  59. .btn-box{
  60. .el-button{border-radius: 2px !important;}
  61. padding-bottom: 50px;
  62. }
  63. </style>