| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import defaultSettings from '@/settings'
- import { useDark, useToggle } from '@vueuse/core'
- import { useDynamicTitle } from '@/utils/dynamicTitle'
- import { handleThemeStyle } from '@/utils/theme'
- const isDark = useDark()
- const toggleDark = useToggle(isDark)
- const { sideTheme, showSettings, navType, tagsView, tagsViewPersist, tagsIcon, tagsViewStyle, fixedHeader, sidebarLogo, dynamicTitle, footerVisible, footerContent } = defaultSettings
- const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
- const useSettingsStore = defineStore(
- 'settings',
- {
- state: () => ({
- title: '',
- theme: storageSetting.theme || '#409EFF',
- sideTheme: storageSetting.sideTheme || sideTheme,
- showSettings: showSettings,
- navType: storageSetting.navType === undefined ? navType : storageSetting.navType,
- tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
- tagsViewPersist: storageSetting.tagsViewPersist === undefined ? tagsViewPersist : storageSetting.tagsViewPersist,
- tagsIcon: storageSetting.tagsIcon === undefined ? tagsIcon : storageSetting.tagsIcon,
- tagsViewStyle: storageSetting.tagsViewStyle === undefined ? tagsViewStyle : storageSetting.tagsViewStyle,
- fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
- sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
- dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle,
- footerVisible: storageSetting.footerVisible === undefined ? footerVisible : storageSetting.footerVisible,
- footerContent: footerContent,
- isDark: isDark.value
- }),
- actions: {
- // 修改布局设置
- changeSetting(data) {
- const { key, value } = data
- if (this.hasOwnProperty(key)) {
- this[key] = value
- }
- },
- // 设置网页标题
- setTitle(title) {
- this.title = title
- useDynamicTitle()
- },
- // 切换暗黑模式
- toggleTheme() {
- this.isDark = !this.isDark
- toggleDark()
- nextTick(() => {
- handleThemeStyle(this.theme)
- })
- }
- }
- })
- export default useSettingsStore
|