| import { defineStore } from 'pinia'; | 
| import { store } from '@/store'; | 
| import { | 
|   getToken, | 
|   setToken, | 
|   removeToken, | 
|   removeUserInfo, | 
|   setUserInfo, | 
|   getUserInfo, | 
|   md5Encrypt, | 
|   getUserDetail, | 
|   setUserDetail, | 
|   removeUserDetail, | 
| } from '@/utils'; | 
| import { resetRouter, router } from '@/router'; | 
| import { useTagsViewStoreHook } from './tagsView'; | 
| import { usePermissionStoreHook } from './permission'; | 
| import { getAccountInfoFromAccessToken, AccountInfo } from '@bole-core/core'; | 
| import { useClearSubModule } from '@/hooks'; | 
| import { myClient } from '@/constants/query'; | 
| import * as authServices from '@/services/api/auth'; | 
|   | 
| export interface UserState { | 
|   token: string; | 
|   userInfo: API.LoginCommandCallback; | 
|   userDetail?: Nullable<API.GetEnterpriseLoginInfoQueryResult>; | 
| } | 
|   | 
| function getDefaultState() { | 
|   const accessToken = getToken(); | 
|   const userInfo = getUserInfo(); | 
|   const userDetail = getUserDetail(); | 
|   | 
|   return { | 
|     token: accessToken, | 
|     userInfo: userInfo || {}, | 
|     userDetail: userDetail, | 
|   } as UserState; | 
| } | 
|   | 
| export const useUserStore = defineStore({ | 
|   id: 'user', | 
|   state: getDefaultState, | 
|   getters: { | 
|     accessToken(state) { | 
|       return state.token; | 
|     }, | 
|     user(state) { | 
|       return state.userInfo; | 
|     }, | 
|   | 
|     userId(state) { | 
|       return state.userDetail?.id; | 
|     }, | 
|   }, | 
|   actions: { | 
|     setToken(token: string) { | 
|       this.token = token; | 
|       setToken(token); | 
|     }, | 
|     setUserInfo(userInfo: API.LoginCommandCallback) { | 
|       this.userInfo = userInfo; | 
|       setUserInfo(userInfo); | 
|     }, | 
|   | 
|     setUserDetail(detail: API.GetEnterpriseLoginInfoQueryResult) { | 
|       this.userDetail = detail; | 
|       setUserDetail(detail); | 
|     }, | 
|   | 
|     // 用户登入 | 
|     async loginByUsername(params: API.PasswordLoginCommand) { | 
|       let res = await authServices.passwordLogin( | 
|         { | 
|           ...params, | 
|           password: params.password, | 
|           // password: md5Encrypt(params.password), | 
|           type: AppLocalConfig.userType, | 
|           clientType: AppLocalConfig.clientType, | 
|         }, | 
|         { | 
|           showLoading: false, | 
|         } | 
|       ); | 
|       if (res) { | 
|         this.setToken(res.accessToken); | 
|         this.setUserInfo(res); | 
|         this.getCurrentUserInfo(); | 
|       } | 
|     }, | 
|   | 
|     async getCurrentUserInfo() { | 
|       try { | 
|         let res = await authServices.getEnterpriseLoginInfo({}, { showLoading: false }); | 
|         if (res) { | 
|           // res.frontStatus = getUserCertificationFrontStatusAdapter( | 
|           //   res.userCertificationStatus, | 
|           //   res.userCertificationAuditStatus | 
|           // ); | 
|           this.setUserDetail(res); | 
|         } | 
|       } catch (error) {} | 
|     }, | 
|   | 
|     // 登出 清空缓存 | 
|     logout(redirectPath = '/') { | 
|       return new Promise(async (resolve) => { | 
|         removeToken(); | 
|         removeUserInfo(); | 
|         removeUserDetail(); | 
|         this.resetState(); | 
|         resetRouter(); | 
|         myClient.removeQueries(); | 
|   | 
|         await router.push(`/login?redirect=${redirectPath}`); | 
|   | 
|         const tagsViewStore = useTagsViewStoreHook(); | 
|         tagsViewStore.delAllViews(); | 
|         const { clearSubModule } = useClearSubModule(); | 
|         clearSubModule(); | 
|   | 
|         const permissionStore = usePermissionStoreHook(); | 
|         permissionStore.resetModuleList(); | 
|         resolve(1); | 
|       }); | 
|     }, | 
|   | 
|     resetToken() { | 
|       this.token = ''; | 
|       removeToken(); | 
|       this.resetState(); | 
|     }, | 
|   | 
|     resetState() { | 
|       Object.assign(this, getDefaultState()); | 
|     }, | 
|   | 
|     async refreshToken(params: any) { | 
|       return Promise.resolve({ | 
|         accessToken: '1222', | 
|         expiresIn: 1000 * 60 * 24 * 60, | 
|         creationTime: '2025-08-04 00:00:00', | 
|         refreshToken: '1222', | 
|       }); | 
|     }, | 
|   }, | 
| }); | 
|   | 
| export function useUserStoreHook() { | 
|   return useUserStore(store); | 
| } |