Files
vue3-element-admin/src/store/modules/settings.ts
2024-02-22 23:09:41 +08:00

89 lines
1.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import defaultSettings from "@/settings";
type SettingsValue = boolean | string;
export const useSettingsStore = defineStore("setting", () => {
// 是否显示标签视图
const tagsView = useStorage<boolean>("tagsView", defaultSettings.tagsView);
// 是否显示侧边栏logo
const sidebarLogo = useStorage<boolean>(
"sidebarLogo",
defaultSettings.sidebarLogo
);
// 是否固定头部
const fixedHeader = useStorage<boolean>(
"fixedHeader",
defaultSettings.fixedHeader
);
// 布局模式left-左侧模式(默认) top-顶部模式 mix-混合模式
const layout = useStorage<string>("layout", defaultSettings.layout);
// 主题颜色
const themeColor = useStorage<string>(
"themeColor",
defaultSettings.themeColor
);
// 主题light-亮色(默认) dark-暗色
const theme = useStorage<string>("theme", defaultSettings.theme);
// 是否开启水印
const watermarkEnabled = useStorage<boolean>(
"watermarkEnabled",
defaultSettings.watermarkEnabled
);
const settingsMap: Record<string, Ref<SettingsValue>> = {
fixedHeader,
tagsView,
sidebarLogo,
layout,
watermarkEnabled,
};
function changeSetting({
key,
value,
}: {
key: string;
value: SettingsValue;
}) {
const setting = settingsMap[key];
if (setting) {
setting.value = value;
}
}
/**
* 切换主题
*/
function changeTheme(val: string) {
theme.value = val;
}
/**
* 切换主题颜色
*/
function changeThemeColor(val: string) {
themeColor.value = val;
}
/**
* 切换布局
*/
function changeLayout(val: string) {
layout.value = val;
}
return {
tagsView,
fixedHeader,
sidebarLogo,
layout,
themeColor,
theme,
watermarkEnabled,
changeSetting,
changeTheme,
changeThemeColor,
changeLayout,
};
});