wui-components-v2 1.1.70 → 1.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/feishu.ts +20 -20
- package/api/index.ts +4 -4
- package/api/login.ts +51 -51
- package/api/tree.ts +28 -28
- package/components/action-popup/action-popup.vue +116 -116
- package/components/add-address-list/add-address-list.vue +187 -187
- package/components/add-address-page/config.ts +297 -297
- package/components/audio-play/audio-play.vue +220 -220
- package/components/batch-upload-file/batch-upload-file.vue +75 -75
- package/components/card-botom-buttons/card-botom-buttons.vue +279 -279
- package/components/demo-card/demo-card.vue +44 -44
- package/components/fold-card/fold-card.vue +2 -2
- package/components/global-loading/GlobalLoading.md +366 -366
- package/components/global-loading/global-loading.vue +55 -55
- package/components/global-message/GlobalMessage.md +570 -570
- package/components/global-toast/GlobalToast.md +261 -261
- package/components/global-toast/global-toast.vue +56 -56
- package/components/label-value/open-value-more.vue +56 -56
- package/components/loading/loading.vue +5 -5
- package/components/login-form-box/login-form-box.vue +65 -65
- package/components/phone-login-form/phone-login-form.vue +204 -204
- package/components/privacy-popup/privacy-popup.vue +191 -191
- package/components/scan-input/scan-input.vue +406 -406
- package/components/select-col-picker/select-col-picker.vue +168 -168
- package/components/tab-search/tab-search.vue +73 -73
- package/components/tree-select/components/TreeNode.vue +200 -200
- package/components/tree-select/components/index.vue +471 -471
- package/components/tree-select/components/tree-select.vue +56 -56
- package/components/tree-select/index.vue +93 -93
- package/components/user-choose/user-choose.vue +169 -151
- package/components/video-play/video-play.vue +56 -56
- package/components/wui-auto-update-component/wui-auto-update-component.vue +132 -132
- package/components/wui-default/wui-default.vue +49 -49
- package/components/wui-details-page/wui-details-page.vue +147 -147
- package/components/wui-edit-page/wui-edit-page-copy.vue +757 -757
- package/components/wui-edit-page/wui-edit-page.vue +793 -793
- package/components/wui-login/wui-login.vue +43 -43
- package/components/wui-login1/wui-login.vue +41 -41
- package/components/wui-menus/wui-menus-top.vue +137 -137
- package/components/wui-menus/wui-menus-top1.vue +8 -8
- package/components/wui-menus1/components/banner-carousel.vue +320 -320
- package/components/wui-menus1/components/quick-panel.vue +55 -55
- package/components/wui-menus1/components/search-bar.vue +49 -49
- package/components/wui-menus1/components/section-menus.vue +208 -208
- package/components/wui-menus1/wui-menus-top.vue +718 -718
- package/components/wui-menus1/wui-menus-top1.vue +398 -398
- package/components/wui-notify-info/notify-handle.vue +53 -53
- package/components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue +75 -75
- package/components/wui-search-history-babbar/components/SearchBar.vue +70 -70
- package/components/wui-select-popup/wui-select-popup.vue +1 -0
- package/components/wui-tree-page/wui-tree-page.vue +297 -297
- package/components/wui-update-component/wui-update-component.vue +221 -221
- package/composables/types/theme.ts +65 -65
- package/composables/types/user.ts +5 -5
- package/composables/useColorGenerator.ts +221 -221
- package/composables/useEnumes.ts +43 -43
- package/composables/useEventBus.ts +37 -37
- package/composables/useGlobalLoading.ts +47 -47
- package/composables/useGlobalMessage.ts +53 -53
- package/composables/useGlobalToast.ts +63 -63
- package/composables/useLocale.ts +54 -54
- package/composables/useManualTheme.ts +179 -179
- package/composables/useSectionMenus.ts +120 -120
- package/composables/useTabbar.ts +50 -50
- package/composables/useTheme.ts +74 -74
- package/composables/useUser.ts +24 -24
- package/index.d.ts +90 -90
- package/package.json +24 -24
- package/store/manualThemeStore.ts +143 -143
- package/store/persist.ts +41 -41
- package/store/themeStore.ts +74 -74
- package/store/userStore.ts +22 -22
- package/styles/dark-mode.scss +498 -498
- package/type.ts +154 -154
- package/utils/control-tree.ts +353 -353
- package/utils/eventBus.ts +36 -36
- package/utils/idata-scan.ts +99 -99
- package/utils/index.ts +979 -979
- package/utils/rsaEncrypt.ts +10 -10
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
import { defineStore } from 'pinia'
|
|
2
|
-
import type { LocaleOption, ThemeColorOption, ThemeMode, ThemeState } from '../composables/types/theme'
|
|
3
|
-
import { LocaleOptions, themeColorOptions } from '../composables/types/theme'
|
|
4
|
-
/**
|
|
5
|
-
* 完整版主题状态管理
|
|
6
|
-
* 支持手动切换主题、主题色选择、跟随系统主题等完整功能
|
|
7
|
-
*/
|
|
8
|
-
export const useManualThemeStore = defineStore('manualTheme', {
|
|
9
|
-
state: (): ThemeState => ({
|
|
10
|
-
theme: 'light',
|
|
11
|
-
followSystem: true, // 是否跟随系统主题
|
|
12
|
-
hasUserSet: false, // 用户是否手动设置过主题
|
|
13
|
-
currentThemeColor: themeColorOptions[0],
|
|
14
|
-
Locale: LocaleOptions[0],
|
|
15
|
-
themeVars: {
|
|
16
|
-
darkBackground: '#1B1B1E',
|
|
17
|
-
darkBackground2: '#141414',
|
|
18
|
-
darkBackground3: '#1c1c1c',
|
|
19
|
-
darkBackground4: '#262626',
|
|
20
|
-
darkBackground5: '#333333',
|
|
21
|
-
darkBackground6: '#4a4a4a',
|
|
22
|
-
darkBackground7: '#606060',
|
|
23
|
-
darkColor: '#ffffff',
|
|
24
|
-
darkColor2: '#e8e8e8',
|
|
25
|
-
darkColor3: '#999999',
|
|
26
|
-
colorTheme: themeColorOptions[0].primary,
|
|
27
|
-
colorPrimary: themeColorOptions[0].primary, // 添加主色调变量,用于 tabbar 等组件
|
|
28
|
-
},
|
|
29
|
-
}),
|
|
30
|
-
|
|
31
|
-
getters: {
|
|
32
|
-
isDark: state => state.theme === 'dark',
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
actions: {
|
|
36
|
-
/**
|
|
37
|
-
* 手动切换主题
|
|
38
|
-
* @param mode 指定主题模式,不传则自动切换
|
|
39
|
-
*/
|
|
40
|
-
toggleTheme(mode?: ThemeMode) {
|
|
41
|
-
this.theme = mode || (this.theme === 'light' ? 'dark' : 'light')
|
|
42
|
-
this.hasUserSet = true // 标记用户已手动设置
|
|
43
|
-
this.followSystem = false // 不再跟随系统
|
|
44
|
-
this.setNavigationBarColor()
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 设置是否跟随系统主题
|
|
49
|
-
* @param follow 是否跟随系统
|
|
50
|
-
*/
|
|
51
|
-
setFollowSystem(follow: boolean) {
|
|
52
|
-
this.followSystem = follow
|
|
53
|
-
if (follow) {
|
|
54
|
-
this.hasUserSet = false
|
|
55
|
-
this.initTheme() // 重新获取系统主题
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* 设置导航栏颜色
|
|
61
|
-
*/
|
|
62
|
-
setNavigationBarColor() {
|
|
63
|
-
uni.setNavigationBarColor({
|
|
64
|
-
frontColor: this.theme === 'light' ? '#ffffff' : '#ffffff',
|
|
65
|
-
backgroundColor: this.theme === 'light' ? this.themeVars.colorTheme : '#000000',
|
|
66
|
-
})
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* 设置主题色
|
|
71
|
-
* @param color 主题色选项
|
|
72
|
-
*/
|
|
73
|
-
setCurrentThemeColor(color: ThemeColorOption) {
|
|
74
|
-
this.currentThemeColor = color
|
|
75
|
-
this.themeVars.colorTheme = color.primary
|
|
76
|
-
this.themeVars.colorPrimary = color.primary // 同步更新主色调变量
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* 设置语言
|
|
81
|
-
*/
|
|
82
|
-
setLocale(locale: LocaleOption) {
|
|
83
|
-
this.Locale = locale
|
|
84
|
-
},
|
|
85
|
-
/**
|
|
86
|
-
* 获取系统主题
|
|
87
|
-
* @returns 系统主题模式
|
|
88
|
-
*/
|
|
89
|
-
getSystemTheme(): ThemeMode {
|
|
90
|
-
try {
|
|
91
|
-
// #ifdef MP-WEIXIN
|
|
92
|
-
// 微信小程序使用 getAppBaseInfo
|
|
93
|
-
const appBaseInfo = uni.getAppBaseInfo()
|
|
94
|
-
if (appBaseInfo && appBaseInfo.theme) {
|
|
95
|
-
return appBaseInfo.theme as ThemeMode
|
|
96
|
-
}
|
|
97
|
-
// #endif
|
|
98
|
-
|
|
99
|
-
// #ifndef MP-WEIXIN
|
|
100
|
-
// 其他平台使用 getSystemInfoSync
|
|
101
|
-
const systemInfo = uni.getSystemInfoSync()
|
|
102
|
-
if (systemInfo && systemInfo.theme) {
|
|
103
|
-
return systemInfo.theme as ThemeMode
|
|
104
|
-
}
|
|
105
|
-
// #endif
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
console.warn('获取系统主题失败:', error)
|
|
109
|
-
}
|
|
110
|
-
return 'light' // 默认返回 light
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* 初始化主题
|
|
115
|
-
*/
|
|
116
|
-
initTheme() {
|
|
117
|
-
// 如果用户已手动设置且不跟随系统,保持当前主题
|
|
118
|
-
if (this.hasUserSet && !this.followSystem) {
|
|
119
|
-
console.log('使用用户设置的主题:', this.theme)
|
|
120
|
-
this.setNavigationBarColor()
|
|
121
|
-
return
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// 获取系统主题
|
|
125
|
-
const systemTheme = this.getSystemTheme()
|
|
126
|
-
|
|
127
|
-
// 如果是首次启动或跟随系统,使用系统主题
|
|
128
|
-
if (!this.hasUserSet || this.followSystem) {
|
|
129
|
-
this.theme = systemTheme
|
|
130
|
-
if (!this.hasUserSet) {
|
|
131
|
-
this.followSystem = true
|
|
132
|
-
// console.log('首次启动,使用系统主题:', this.theme)
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
console.log('跟随系统主题:', this.theme)
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
this.setNavigationBarColor()
|
|
140
|
-
},
|
|
141
|
-
|
|
142
|
-
},
|
|
143
|
-
})
|
|
1
|
+
import { defineStore } from 'pinia'
|
|
2
|
+
import type { LocaleOption, ThemeColorOption, ThemeMode, ThemeState } from '../composables/types/theme'
|
|
3
|
+
import { LocaleOptions, themeColorOptions } from '../composables/types/theme'
|
|
4
|
+
/**
|
|
5
|
+
* 完整版主题状态管理
|
|
6
|
+
* 支持手动切换主题、主题色选择、跟随系统主题等完整功能
|
|
7
|
+
*/
|
|
8
|
+
export const useManualThemeStore = defineStore('manualTheme', {
|
|
9
|
+
state: (): ThemeState => ({
|
|
10
|
+
theme: 'light',
|
|
11
|
+
followSystem: true, // 是否跟随系统主题
|
|
12
|
+
hasUserSet: false, // 用户是否手动设置过主题
|
|
13
|
+
currentThemeColor: themeColorOptions[0],
|
|
14
|
+
Locale: LocaleOptions[0],
|
|
15
|
+
themeVars: {
|
|
16
|
+
darkBackground: '#1B1B1E',
|
|
17
|
+
darkBackground2: '#141414',
|
|
18
|
+
darkBackground3: '#1c1c1c',
|
|
19
|
+
darkBackground4: '#262626',
|
|
20
|
+
darkBackground5: '#333333',
|
|
21
|
+
darkBackground6: '#4a4a4a',
|
|
22
|
+
darkBackground7: '#606060',
|
|
23
|
+
darkColor: '#ffffff',
|
|
24
|
+
darkColor2: '#e8e8e8',
|
|
25
|
+
darkColor3: '#999999',
|
|
26
|
+
colorTheme: themeColorOptions[0].primary,
|
|
27
|
+
colorPrimary: themeColorOptions[0].primary, // 添加主色调变量,用于 tabbar 等组件
|
|
28
|
+
},
|
|
29
|
+
}),
|
|
30
|
+
|
|
31
|
+
getters: {
|
|
32
|
+
isDark: state => state.theme === 'dark',
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
actions: {
|
|
36
|
+
/**
|
|
37
|
+
* 手动切换主题
|
|
38
|
+
* @param mode 指定主题模式,不传则自动切换
|
|
39
|
+
*/
|
|
40
|
+
toggleTheme(mode?: ThemeMode) {
|
|
41
|
+
this.theme = mode || (this.theme === 'light' ? 'dark' : 'light')
|
|
42
|
+
this.hasUserSet = true // 标记用户已手动设置
|
|
43
|
+
this.followSystem = false // 不再跟随系统
|
|
44
|
+
this.setNavigationBarColor()
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 设置是否跟随系统主题
|
|
49
|
+
* @param follow 是否跟随系统
|
|
50
|
+
*/
|
|
51
|
+
setFollowSystem(follow: boolean) {
|
|
52
|
+
this.followSystem = follow
|
|
53
|
+
if (follow) {
|
|
54
|
+
this.hasUserSet = false
|
|
55
|
+
this.initTheme() // 重新获取系统主题
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 设置导航栏颜色
|
|
61
|
+
*/
|
|
62
|
+
setNavigationBarColor() {
|
|
63
|
+
uni.setNavigationBarColor({
|
|
64
|
+
frontColor: this.theme === 'light' ? '#ffffff' : '#ffffff',
|
|
65
|
+
backgroundColor: this.theme === 'light' ? this.themeVars.colorTheme : '#000000',
|
|
66
|
+
})
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 设置主题色
|
|
71
|
+
* @param color 主题色选项
|
|
72
|
+
*/
|
|
73
|
+
setCurrentThemeColor(color: ThemeColorOption) {
|
|
74
|
+
this.currentThemeColor = color
|
|
75
|
+
this.themeVars.colorTheme = color.primary
|
|
76
|
+
this.themeVars.colorPrimary = color.primary // 同步更新主色调变量
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 设置语言
|
|
81
|
+
*/
|
|
82
|
+
setLocale(locale: LocaleOption) {
|
|
83
|
+
this.Locale = locale
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* 获取系统主题
|
|
87
|
+
* @returns 系统主题模式
|
|
88
|
+
*/
|
|
89
|
+
getSystemTheme(): ThemeMode {
|
|
90
|
+
try {
|
|
91
|
+
// #ifdef MP-WEIXIN
|
|
92
|
+
// 微信小程序使用 getAppBaseInfo
|
|
93
|
+
const appBaseInfo = uni.getAppBaseInfo()
|
|
94
|
+
if (appBaseInfo && appBaseInfo.theme) {
|
|
95
|
+
return appBaseInfo.theme as ThemeMode
|
|
96
|
+
}
|
|
97
|
+
// #endif
|
|
98
|
+
|
|
99
|
+
// #ifndef MP-WEIXIN
|
|
100
|
+
// 其他平台使用 getSystemInfoSync
|
|
101
|
+
const systemInfo = uni.getSystemInfoSync()
|
|
102
|
+
if (systemInfo && systemInfo.theme) {
|
|
103
|
+
return systemInfo.theme as ThemeMode
|
|
104
|
+
}
|
|
105
|
+
// #endif
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.warn('获取系统主题失败:', error)
|
|
109
|
+
}
|
|
110
|
+
return 'light' // 默认返回 light
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 初始化主题
|
|
115
|
+
*/
|
|
116
|
+
initTheme() {
|
|
117
|
+
// 如果用户已手动设置且不跟随系统,保持当前主题
|
|
118
|
+
if (this.hasUserSet && !this.followSystem) {
|
|
119
|
+
console.log('使用用户设置的主题:', this.theme)
|
|
120
|
+
this.setNavigationBarColor()
|
|
121
|
+
return
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 获取系统主题
|
|
125
|
+
const systemTheme = this.getSystemTheme()
|
|
126
|
+
|
|
127
|
+
// 如果是首次启动或跟随系统,使用系统主题
|
|
128
|
+
if (!this.hasUserSet || this.followSystem) {
|
|
129
|
+
this.theme = systemTheme
|
|
130
|
+
if (!this.hasUserSet) {
|
|
131
|
+
this.followSystem = true
|
|
132
|
+
// console.log('首次启动,使用系统主题:', this.theme)
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
console.log('跟随系统主题:', this.theme)
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
this.setNavigationBarColor()
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
},
|
|
143
|
+
})
|
package/store/persist.ts
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: weisheng
|
|
3
|
-
* @Date: 2025-06-23 22:23:05
|
|
4
|
-
* @LastEditTime: 2025-06-24 19:03:21
|
|
5
|
-
* @LastEditors: weisheng
|
|
6
|
-
* @Description:
|
|
7
|
-
* @FilePath: /wot-demo/src/store/persist.ts
|
|
8
|
-
* 记得注释
|
|
9
|
-
*/
|
|
10
|
-
import type { PiniaPluginContext } from 'pinia'
|
|
11
|
-
import { CommonUtil } from '@wot-ui/ui'
|
|
12
|
-
|
|
13
|
-
function persist({ store }: PiniaPluginContext, excludedIds: string[]) {
|
|
14
|
-
// 检查当前store的id是否在排除列表中
|
|
15
|
-
const isExcluded = excludedIds.includes(store.$id)
|
|
16
|
-
|
|
17
|
-
// 如果当前store的id在排除列表中,则不进行持久化
|
|
18
|
-
if (isExcluded) {
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// 暂存State
|
|
23
|
-
let persistState = CommonUtil.deepClone(store.$state)
|
|
24
|
-
// 从缓存中读取
|
|
25
|
-
const storageState = uni.getStorageSync(store.$id)
|
|
26
|
-
if (storageState) {
|
|
27
|
-
persistState = storageState
|
|
28
|
-
}
|
|
29
|
-
store.$state = persistState
|
|
30
|
-
store.$subscribe(() => {
|
|
31
|
-
// 在存储变化的时候将store缓存
|
|
32
|
-
uni.setStorageSync(store.$id, CommonUtil.deepClone(store.$state))
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function persistPlugin(list: string[]) {
|
|
37
|
-
return (context: PiniaPluginContext) => {
|
|
38
|
-
// 调用persist函数,并传入排除列表
|
|
39
|
-
persist(context, list)
|
|
40
|
-
}
|
|
41
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: weisheng
|
|
3
|
+
* @Date: 2025-06-23 22:23:05
|
|
4
|
+
* @LastEditTime: 2025-06-24 19:03:21
|
|
5
|
+
* @LastEditors: weisheng
|
|
6
|
+
* @Description:
|
|
7
|
+
* @FilePath: /wot-demo/src/store/persist.ts
|
|
8
|
+
* 记得注释
|
|
9
|
+
*/
|
|
10
|
+
import type { PiniaPluginContext } from 'pinia'
|
|
11
|
+
import { CommonUtil } from '@wot-ui/ui'
|
|
12
|
+
|
|
13
|
+
function persist({ store }: PiniaPluginContext, excludedIds: string[]) {
|
|
14
|
+
// 检查当前store的id是否在排除列表中
|
|
15
|
+
const isExcluded = excludedIds.includes(store.$id)
|
|
16
|
+
|
|
17
|
+
// 如果当前store的id在排除列表中,则不进行持久化
|
|
18
|
+
if (isExcluded) {
|
|
19
|
+
return
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 暂存State
|
|
23
|
+
let persistState = CommonUtil.deepClone(store.$state)
|
|
24
|
+
// 从缓存中读取
|
|
25
|
+
const storageState = uni.getStorageSync(store.$id)
|
|
26
|
+
if (storageState) {
|
|
27
|
+
persistState = storageState
|
|
28
|
+
}
|
|
29
|
+
store.$state = persistState
|
|
30
|
+
store.$subscribe(() => {
|
|
31
|
+
// 在存储变化的时候将store缓存
|
|
32
|
+
uni.setStorageSync(store.$id, CommonUtil.deepClone(store.$state))
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function persistPlugin(list: string[]) {
|
|
37
|
+
return (context: PiniaPluginContext) => {
|
|
38
|
+
// 调用persist函数,并传入排除列表
|
|
39
|
+
persist(context, list)
|
|
40
|
+
}
|
|
41
|
+
}
|
package/store/themeStore.ts
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
import { defineStore } from 'pinia'
|
|
2
|
-
import type { SystemThemeState, ThemeMode } from '../composables/types/theme'
|
|
3
|
-
import { themeColorOptions } from '../composables/types/theme'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 简化版系统主题状态管理
|
|
7
|
-
* 仅支持跟随系统主题,不提供手动切换功能
|
|
8
|
-
* 导航栏颜色通过 theme.json 自动处理
|
|
9
|
-
*/
|
|
10
|
-
export const useThemeStore = defineStore('theme', {
|
|
11
|
-
state: (): SystemThemeState => ({
|
|
12
|
-
theme: 'light',
|
|
13
|
-
themeVars: {
|
|
14
|
-
darkBackground: '#0f0f0f',
|
|
15
|
-
darkBackground2: '#1a1a1a',
|
|
16
|
-
darkBackground3: '#242424',
|
|
17
|
-
darkBackground4: '#2f2f2f',
|
|
18
|
-
darkBackground5: '#3d3d3d',
|
|
19
|
-
darkBackground6: '#4a4a4a',
|
|
20
|
-
darkBackground7: '#606060',
|
|
21
|
-
darkColor: '#ffffff',
|
|
22
|
-
darkColor2: '#e0e0e0',
|
|
23
|
-
darkColor3: '#a0a0a0',
|
|
24
|
-
colorTheme: themeColorOptions[0].primary,
|
|
25
|
-
},
|
|
26
|
-
}),
|
|
27
|
-
|
|
28
|
-
getters: {
|
|
29
|
-
isDark: state => state.theme === 'dark',
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
actions: {
|
|
33
|
-
/**
|
|
34
|
-
* 获取系统主题
|
|
35
|
-
* @returns 系统主题模式
|
|
36
|
-
*/
|
|
37
|
-
getSystemTheme(): ThemeMode {
|
|
38
|
-
// #ifdef MP-WEIXIN
|
|
39
|
-
// 微信小程序使用 getAppBaseInfo
|
|
40
|
-
const appBaseInfo = uni.getAppBaseInfo()
|
|
41
|
-
if (appBaseInfo && appBaseInfo.theme) {
|
|
42
|
-
return appBaseInfo.theme as ThemeMode
|
|
43
|
-
}
|
|
44
|
-
// #endif
|
|
45
|
-
|
|
46
|
-
// #ifndef MP-WEIXIN
|
|
47
|
-
// 其他平台使用 getSystemInfoSync
|
|
48
|
-
const systemInfo = uni.getSystemInfoSync()
|
|
49
|
-
if (systemInfo && systemInfo.theme) {
|
|
50
|
-
return systemInfo.theme as ThemeMode
|
|
51
|
-
}
|
|
52
|
-
// #endif
|
|
53
|
-
|
|
54
|
-
return 'light' // 默认返回 light
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* 设置主题(仅内部使用)
|
|
59
|
-
* @param theme 主题模式
|
|
60
|
-
*/
|
|
61
|
-
setTheme(theme: ThemeMode) {
|
|
62
|
-
this.theme = theme
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* 初始化系统主题
|
|
67
|
-
*/
|
|
68
|
-
initSystemTheme() {
|
|
69
|
-
const systemTheme = this.getSystemTheme()
|
|
70
|
-
this.theme = systemTheme
|
|
71
|
-
console.log('初始化系统主题:', this.theme)
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
})
|
|
1
|
+
import { defineStore } from 'pinia'
|
|
2
|
+
import type { SystemThemeState, ThemeMode } from '../composables/types/theme'
|
|
3
|
+
import { themeColorOptions } from '../composables/types/theme'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 简化版系统主题状态管理
|
|
7
|
+
* 仅支持跟随系统主题,不提供手动切换功能
|
|
8
|
+
* 导航栏颜色通过 theme.json 自动处理
|
|
9
|
+
*/
|
|
10
|
+
export const useThemeStore = defineStore('theme', {
|
|
11
|
+
state: (): SystemThemeState => ({
|
|
12
|
+
theme: 'light',
|
|
13
|
+
themeVars: {
|
|
14
|
+
darkBackground: '#0f0f0f',
|
|
15
|
+
darkBackground2: '#1a1a1a',
|
|
16
|
+
darkBackground3: '#242424',
|
|
17
|
+
darkBackground4: '#2f2f2f',
|
|
18
|
+
darkBackground5: '#3d3d3d',
|
|
19
|
+
darkBackground6: '#4a4a4a',
|
|
20
|
+
darkBackground7: '#606060',
|
|
21
|
+
darkColor: '#ffffff',
|
|
22
|
+
darkColor2: '#e0e0e0',
|
|
23
|
+
darkColor3: '#a0a0a0',
|
|
24
|
+
colorTheme: themeColorOptions[0].primary,
|
|
25
|
+
},
|
|
26
|
+
}),
|
|
27
|
+
|
|
28
|
+
getters: {
|
|
29
|
+
isDark: state => state.theme === 'dark',
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
actions: {
|
|
33
|
+
/**
|
|
34
|
+
* 获取系统主题
|
|
35
|
+
* @returns 系统主题模式
|
|
36
|
+
*/
|
|
37
|
+
getSystemTheme(): ThemeMode {
|
|
38
|
+
// #ifdef MP-WEIXIN
|
|
39
|
+
// 微信小程序使用 getAppBaseInfo
|
|
40
|
+
const appBaseInfo = uni.getAppBaseInfo()
|
|
41
|
+
if (appBaseInfo && appBaseInfo.theme) {
|
|
42
|
+
return appBaseInfo.theme as ThemeMode
|
|
43
|
+
}
|
|
44
|
+
// #endif
|
|
45
|
+
|
|
46
|
+
// #ifndef MP-WEIXIN
|
|
47
|
+
// 其他平台使用 getSystemInfoSync
|
|
48
|
+
const systemInfo = uni.getSystemInfoSync()
|
|
49
|
+
if (systemInfo && systemInfo.theme) {
|
|
50
|
+
return systemInfo.theme as ThemeMode
|
|
51
|
+
}
|
|
52
|
+
// #endif
|
|
53
|
+
|
|
54
|
+
return 'light' // 默认返回 light
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 设置主题(仅内部使用)
|
|
59
|
+
* @param theme 主题模式
|
|
60
|
+
*/
|
|
61
|
+
setTheme(theme: ThemeMode) {
|
|
62
|
+
this.theme = theme
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 初始化系统主题
|
|
67
|
+
*/
|
|
68
|
+
initSystemTheme() {
|
|
69
|
+
const systemTheme = this.getSystemTheme()
|
|
70
|
+
this.theme = systemTheme
|
|
71
|
+
console.log('初始化系统主题:', this.theme)
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
})
|
package/store/userStore.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { defineStore } from 'pinia'
|
|
2
|
-
|
|
3
|
-
const useUserStore = defineStore('userInfo', {
|
|
4
|
-
state: () => ({
|
|
5
|
-
id: '',
|
|
6
|
-
name: '',
|
|
7
|
-
nickName: '',
|
|
8
|
-
}),
|
|
9
|
-
getters: {
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
actions: {
|
|
13
|
-
setUserInfo(userInfo: any) {
|
|
14
|
-
this.id = userInfo.id
|
|
15
|
-
this.name = userInfo.name
|
|
16
|
-
this.nickName = userInfo.nickName
|
|
17
|
-
},
|
|
18
|
-
|
|
19
|
-
},
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
export default useUserStore
|
|
1
|
+
import { defineStore } from 'pinia'
|
|
2
|
+
|
|
3
|
+
const useUserStore = defineStore('userInfo', {
|
|
4
|
+
state: () => ({
|
|
5
|
+
id: '',
|
|
6
|
+
name: '',
|
|
7
|
+
nickName: '',
|
|
8
|
+
}),
|
|
9
|
+
getters: {
|
|
10
|
+
|
|
11
|
+
},
|
|
12
|
+
actions: {
|
|
13
|
+
setUserInfo(userInfo: any) {
|
|
14
|
+
this.id = userInfo.id
|
|
15
|
+
this.name = userInfo.name
|
|
16
|
+
this.nickName = userInfo.nickName
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
export default useUserStore
|