49 lines
1.3 KiB
TypeScript
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) : [])) |