import { getConfigByNameAsync } from '@af-mobile-client-vue3/services/api/common' import { APP_WEB_CONFIG_KEY } from '@af-mobile-client-vue3/stores/mutation-type' import { secureStorageBatchWrite } from '@af-mobile-client-vue3/utils/secureStorage' import { createStorage } from '@af-mobile-client-vue3/utils/Storage' import { defineStore } from 'pinia' import { ref } from 'vue' import { useHomeAppStore } from './homeApp' export interface WebConfig { isAttendance: boolean | false systemName: string routerName: string systemDesc: string homePage: any defaultAvatarUrl: string wechatLogin: boolean wxLoginAge: boolean wxAutoLogin: string tenantName: string systemLogo: string homeAppList: Array slideshowList: Array registerRequire: boolean requestEncrypt: boolean phoneLoginVerification: boolean hiddenTraditionalLogin: boolean isFaceRecognition: boolean // 登录是否需要人脸识别 intervalFaceRecognition: boolean // 登录是否需要开启定时人脸识别 faceIntervalMinutes: number // 定时时间 faceRetryCount: number // 重试次数 getPlatformUser: boolean // 获取外部用户信息 } // 存放 webConfig 中的 setting 配置 export const useSettingStore = defineStore('setting', () => { const setting = ref(undefined) const isInitialized = ref(false) const setSetting = (newSetting: WebConfig) => { setting.value = newSetting } const getSetting = () => { return setting.value } // 将 init 作为 store 的方法导出 const init = async () => { if (isInitialized.value) return const useStore = createStorage() const catchWebConfig = useStore.get(APP_WEB_CONFIG_KEY) const homeAppStore = useHomeAppStore() if (catchWebConfig?.setting) { setSetting(catchWebConfig?.setting) // homeAppList 仅在用户缓存没有时才回填,避免覆盖用户自定义 if (!homeAppStore.homeAppList?.length && catchWebConfig.setting.homeAppList) { homeAppStore.setHomeAppList(catchWebConfig.setting.homeAppList) } } else { const res = await getConfigByNameAsync('webMobileConfig') if (res.setting) { useStore.set(APP_WEB_CONFIG_KEY, res) setSetting(res.setting) // homeAppList 仅在用户缓存没有时才回填 if (!homeAppStore.homeAppList?.length && res.setting.homeAppList) { homeAppStore.setHomeAppList(res.setting.homeAppList) } // 如果有pos相关的配置存储到app安全存储中 if (res.setting.posConfig) { secureStorageBatchWrite([ { key: 'posConfig', value: res.setting.posConfig, }, ]) } } } isInitialized.value = true } return { setSetting, getSetting, init, // 导出 init 方法 isInitialized, } }) export default useSettingStore