103 lines
2.6 KiB
TypeScript
103 lines
2.6 KiB
TypeScript
|
|
import { defineStore } from 'pinia'
|
||
|
|
import { ref, computed } from 'vue'
|
||
|
|
import { LanguageEnum } from '@/enums/appEnum'
|
||
|
|
import { router } from '@/router'
|
||
|
|
import { useSettingStore } from './setting'
|
||
|
|
import { useWorktabStore } from './worktab'
|
||
|
|
import { AppRouteRecord } from '@/types/router'
|
||
|
|
import { setPageTitle } from '@/router/utils/utils'
|
||
|
|
import { resetRouterState } from '@/router/guards/beforeEach'
|
||
|
|
import { RoutesAlias } from '@/router/routesAlias'
|
||
|
|
|
||
|
|
// 用户
|
||
|
|
export const useUserStore = defineStore(
|
||
|
|
'userStore',
|
||
|
|
() => {
|
||
|
|
const language = ref(LanguageEnum.ZH)
|
||
|
|
const isLogin = ref(false)
|
||
|
|
const isLock = ref(false)
|
||
|
|
const lockPassword = ref('')
|
||
|
|
const info = ref<Partial<Api.User.UserInfo>>({})
|
||
|
|
const searchHistory = ref<AppRouteRecord[]>([])
|
||
|
|
const accessToken = ref('')
|
||
|
|
const refreshToken = ref('')
|
||
|
|
|
||
|
|
const getUserInfo = computed(() => info.value)
|
||
|
|
const getSettingState = computed(() => useSettingStore().$state)
|
||
|
|
const getWorktabState = computed(() => useWorktabStore().$state)
|
||
|
|
|
||
|
|
const setUserInfo = (newInfo: Api.User.UserInfo) => {
|
||
|
|
info.value = newInfo
|
||
|
|
}
|
||
|
|
|
||
|
|
const setLoginStatus = (status: boolean) => {
|
||
|
|
isLogin.value = status
|
||
|
|
}
|
||
|
|
|
||
|
|
const setLanguage = (lang: LanguageEnum) => {
|
||
|
|
setPageTitle(router.currentRoute.value)
|
||
|
|
language.value = lang
|
||
|
|
}
|
||
|
|
|
||
|
|
const setSearchHistory = (list: AppRouteRecord[]) => {
|
||
|
|
searchHistory.value = list
|
||
|
|
}
|
||
|
|
|
||
|
|
const setLockStatus = (status: boolean) => {
|
||
|
|
isLock.value = status
|
||
|
|
}
|
||
|
|
|
||
|
|
const setLockPassword = (password: string) => {
|
||
|
|
lockPassword.value = password
|
||
|
|
}
|
||
|
|
|
||
|
|
const setToken = (newAccessToken: string, newRefreshToken?: string) => {
|
||
|
|
accessToken.value = newAccessToken
|
||
|
|
if (newRefreshToken) {
|
||
|
|
refreshToken.value = newRefreshToken
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const logOut = () => {
|
||
|
|
info.value = {}
|
||
|
|
isLogin.value = false
|
||
|
|
isLock.value = false
|
||
|
|
lockPassword.value = ''
|
||
|
|
accessToken.value = ''
|
||
|
|
refreshToken.value = ''
|
||
|
|
useWorktabStore().opened = []
|
||
|
|
sessionStorage.removeItem('iframeRoutes')
|
||
|
|
resetRouterState(router)
|
||
|
|
router.push(RoutesAlias.Login)
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
language,
|
||
|
|
isLogin,
|
||
|
|
isLock,
|
||
|
|
lockPassword,
|
||
|
|
info,
|
||
|
|
searchHistory,
|
||
|
|
accessToken,
|
||
|
|
refreshToken,
|
||
|
|
getUserInfo,
|
||
|
|
getSettingState,
|
||
|
|
getWorktabState,
|
||
|
|
setUserInfo,
|
||
|
|
setLoginStatus,
|
||
|
|
setLanguage,
|
||
|
|
setSearchHistory,
|
||
|
|
setLockStatus,
|
||
|
|
setLockPassword,
|
||
|
|
setToken,
|
||
|
|
logOut
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
persist: {
|
||
|
|
key: 'user',
|
||
|
|
storage: localStorage
|
||
|
|
}
|
||
|
|
}
|
||
|
|
)
|