| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { defineStore } from 'pinia'
- import { store } from '../index'
- import { UserLoginType, UserType } from '@/api/login/types'
- import { ElMessageBox } from 'element-plus'
- import { useI18n } from '@/hooks/web/useI18n'
- import { useTagsViewStore } from './tagsView'
- import router from '@/router'
- interface UserState {
- userInfo?: UserType
- tokenKey: string
- token: string
- roleRouters?: string[] | AppCustomRouteRecordRaw[]
- rememberMe: boolean
- loginInfo?: UserLoginType
- }
- export const useUserStore = defineStore('user', {
- state: (): UserState => {
- return {
- userInfo: undefined,
- tokenKey: 'Authorization',
- token: '',
- roleRouters: undefined,
- // 记住我
- rememberMe: true,
- loginInfo: undefined
- }
- },
- getters: {
- getTokenKey(): string {
- return this.tokenKey
- },
- getToken(): string {
- return this.token
- },
- getUserInfo(): UserType | undefined {
- return this.userInfo
- },
- getRoleRouters(): string[] | AppCustomRouteRecordRaw[] | undefined {
- return this.roleRouters
- },
- getRememberMe(): boolean {
- return this.rememberMe
- },
- getLoginInfo(): UserLoginType | undefined {
- return this.loginInfo
- }
- },
- actions: {
- setTokenKey(tokenKey: string) {
- this.tokenKey = tokenKey
- },
- setToken(token: string) {
- this.token = token
- },
- setUserInfo(userInfo?: UserType) {
- this.userInfo = userInfo
- },
- setRoleRouters(roleRouters: string[] | AppCustomRouteRecordRaw[]) {
- this.roleRouters = roleRouters
- },
- logoutConfirm() {
- const { t } = useI18n()
- ElMessageBox.confirm(t('common.loginOutMessage'), t('common.reminder'), {
- confirmButtonText: t('common.ok'),
- cancelButtonText: t('common.cancel'),
- type: 'warning'
- })
- .then(() => {
- this.reset()
- })
- .catch(() => {})
- },
- reset() {
- const tagsViewStore = useTagsViewStore()
- tagsViewStore.delAllViews()
- this.setToken('')
- this.setUserInfo(undefined)
- this.setRoleRouters([])
- router.replace('/login')
- },
- logout() {
- this.reset()
- },
- setRememberMe(rememberMe: boolean) {
- this.rememberMe = rememberMe
- },
- setLoginInfo(loginInfo: UserLoginType | undefined) {
- this.loginInfo = loginInfo
- }
- },
- persist: true
- })
- export const useUserStoreWithOut = () => {
- return useUserStore(store)
- }
|