全栈小学生 36967076d4 update code
2023-09-06 14:52:30 +08:00

74 lines
2.5 KiB
TypeScript

import { defineStore } from 'pinia'
import { getToken, setToken, removeToken, getAppType } from '@/utils/common'
import { login, getAuthMenus } from '@/api/auth'
import storage from '@/utils/storage'
import router from '@/router'
import { formatRouters } from '@/router/routers'
import useTabbarStore from './tabbar'
interface User {
token: string,
userInfo: object,
siteInfo: object,
routers: any[],
rules: any[]
}
const useSystemStore = defineStore('user', {
state: (): User => {
return {
token: getToken() || '',
userInfo: storage.get('userinfo') || {},
siteInfo: storage.get('siteInfo') || {},
routers: [],
rules: []
}
},
actions: {
login(form: object, app_type: any) {
return new Promise((resolve, reject) => {
login(form, app_type)
.then((res) => {
this.token = res.data.token
this.userInfo = res.data.userinfo
setToken(res.data.token)
storage.set({ key: 'userinfo', data: res.data.userinfo })
storage.set({ key: 'siteId', data: res.data.site_info.site_id })
storage.set({ key: 'siteInfo', data: res.data.site_info })
storage.set({ key: 'comparisonSiteIdStorage', data: res.data.site_info.site_id })
storage.set({ key: 'comparisonTokenStorage', data: res.data.token })
storage.set({ key: 'layout', data: (res.data.layout || 'default') })
resolve(res)
})
.catch((error) => {
reject(error)
})
})
},
logout() {
this.token = ''
this.userInfo = {}
this.siteInfo = {}
removeToken()
storage.remove(['userinfo', 'siteId', 'siteInfo'])
this.routers = []
// 清除tabbar
useTabbarStore().clearTab()
router.push(`/${getAppType()}/login`)
},
getAuthMenus() {
return new Promise((resolve, reject) => {
getAuthMenus()
.then((res) => {
this.routers = formatRouters(res.data)
resolve(res)
})
.catch((error) => {
reject(error)
})
})
}
}
})
export default useSystemStore