perf: 代码优化 layout/Settings

This commit is contained in:
pany 2023-06-14 18:14:47 +08:00
parent 9083700b3d
commit 46747e7ce2
2 changed files with 55 additions and 50 deletions

View File

@ -1,66 +1,58 @@
<script lang="ts" setup> <script lang="ts" setup>
import { storeToRefs } from "pinia"
import { useSettingsStore } from "@/store/modules/settings" import { useSettingsStore } from "@/store/modules/settings"
const settingsStore = useSettingsStore() const settingsStore = useSettingsStore()
/** 使用 storeToRefs 将提取的属性保持其响应性 */
const {
showTagsView,
showSidebarLogo,
fixedHeader,
showNotify,
showThemeSwitch,
showScreenfull,
showGreyMode,
showColorWeakness
} = storeToRefs(settingsStore)
/** 定义 switch 设置项 */
const switchSettings = {
显示标签栏: showTagsView,
"显示侧边栏 Logo": showSidebarLogo,
"固定 Header": fixedHeader,
显示消息通知: showNotify,
显示切换主题按钮: showThemeSwitch,
显示全屏按钮: showScreenfull,
显示灰色模式: showGreyMode,
显示色弱模式: showColorWeakness
}
</script> </script>
<template> <template>
<div class="drawer-container"> <div class="setting-container">
<div> <h4>系统布局配置</h4>
<h3 class="drawer-title">系统布局配置</h3> <div class="setting-item" v-for="(settingValue, settingName, index) in switchSettings" :key="index">
<div class="drawer-item"> <span class="setting-name">{{ settingName }}</span>
<span>显示标签栏</span> <el-switch v-model="settingValue.value" />
<el-switch v-model="settingsStore.showTagsView" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示侧边栏 Logo</span>
<el-switch v-model="settingsStore.showSidebarLogo" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>固定 Header</span>
<el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示消息通知</span>
<el-switch v-model="settingsStore.showNotify" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示切换主题按钮</span>
<el-switch v-model="settingsStore.showThemeSwitch" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示全屏按钮</span>
<el-switch v-model="settingsStore.showScreenfull" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示灰色模式</span>
<el-switch v-model="settingsStore.showGreyMode" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示色弱模式</span>
<el-switch v-model="settingsStore.showColorWeakness" class="drawer-switch" />
</div>
</div> </div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.drawer-container { @import "@/styles/mixins.scss";
padding: 24px;
.setting-container {
padding: 20px;
.setting-item {
font-size: 14px; font-size: 14px;
line-height: 1.5; padding: 6px 0;
word-wrap: break-word; display: flex;
.drawer-title { justify-content: space-between;
margin-bottom: 12px; align-items: center;
font-size: 14px; .setting-name {
line-height: 22px; @include ellipsis;
} }
.drawer-item {
font-size: 14px;
padding: 12px 0;
}
.drawer-switch {
float: right;
} }
} }
</style> </style>

View File

@ -1,3 +1,4 @@
/** 清除浮动 */
@mixin clearfix { @mixin clearfix {
&:after { &:after {
content: ""; content: "";
@ -6,6 +7,7 @@
} }
} }
/** 美化原生滚动条 */
@mixin scrollbar { @mixin scrollbar {
// 整个滚动条 // 整个滚动条
&::-webkit-scrollbar { &::-webkit-scrollbar {
@ -23,7 +25,18 @@
&::-webkit-scrollbar-thumb:active { &::-webkit-scrollbar-thumb:active {
background-color: #90939999; background-color: #90939999;
} }
// 当同时有垂直滚动条和水平滚动条时交汇的部分
&::-webkit-scrollbar-corner { &::-webkit-scrollbar-corner {
background-color: transparent; background-color: transparent;
} }
} }
/** 文本溢出时显示省略号 */
@mixin ellipsis {
// 隐藏溢出的文本
overflow: hidden;
// 防止文本换行
white-space: nowrap;
// 文本内容溢出容器时文本末尾显示省略号
text-overflow: ellipsis;
}