2021-10-03 10:11:06 +08:00

49 lines
1.3 KiB
TypeScript

import { createStore } from 'vuex'
import { StateType, UserInfo } from './types'
class Store {
constructor(breadcrumb: string[]) {
this.state.breadcrumb = breadcrumb
}
state: StateType = {
loginInfo: {
userInfo: null,
token: null
},
breadcrumb: [],
pageSizeOpts: [10, 20, 50, 100]
}
mutations = {
/**
* 登录
* @param {Object} state
* @param {UserInfo} data 登录数据
*/
login(state: StateType, data: {token: string, userInfo: UserInfo}): void {
localStorage.setItem('login_token', data.token)
state.loginInfo.token = data.token
state.loginInfo.userInfo = data.userInfo
},
/**
* 注销
* @param {Object} state
*/
logout(state: StateType): void {
localStorage.removeItem('login_token')
state.loginInfo.token = null
state.loginInfo.userInfo = null
},
/**
* 设置面包屑导航
* @param {Object} state
* @param {Array} breadcrumbArr 面包屑导航的内容
*/
setBreadcrumb(state: StateType, breadcrumbArr: string[]): void {
localStorage.setItem('breadcrumb', JSON.stringify(breadcrumbArr))
state.breadcrumb = breadcrumbArr
}
}
}
const breadcrumbStr = localStorage.getItem('breadcrumb')
export default createStore(new Store(breadcrumbStr ? JSON.parse(breadcrumbStr) : []))