user.js 2.0 KB
Newer Older
Mr.奇淼('s avatar
Mr.奇淼( 已提交
1
import { login } from '@/api/user'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
2
import router from '@/router/index'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
3
export const user = {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
4
    namespaced: true,
Mr.奇淼('s avatar
Mr.奇淼( 已提交
5 6 7
    state: {
        userInfo: {
            uuid: "",
Mr.奇淼('s avatar
Mr.奇淼( 已提交
8 9 10
            nickName: "",
            headerImg: "",
            authority: "",
Mr.奇淼('s avatar
Mr.奇淼( 已提交
11
        },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
12 13
        token: "",
        expiresAt: ""
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14
    },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
15
    mutations: {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
16 17 18 19 20
        setUserInfo(state, userInfo) {
            // 这里的 `state` 对象是模块的局部状态
            state.userInfo = userInfo
        },
        setToken(state, token) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
21
            // 这里的 `state` 对象是模块的局部状态
Mr.奇淼('s avatar
Mr.奇淼( 已提交
22
            state.token = token
Mr.奇淼('s avatar
Mr.奇淼( 已提交
23 24 25 26
        },
        setExpiresAt(state, expiresAt) {
            // 这里的 `state` 对象是模块的局部状态
            state.expiresAt = expiresAt
27
        },
28
        LoginOut(state) {
29 30 31
            state.userInfo = {}
            state.token = ""
            state.expiresAt = ""
32
            router.push({ name: 'login', replace: true })
Mr.奇淼('s avatar
Mr.奇淼( 已提交
33 34 35 36 37
        },
        ResetUserInfo(state, userInfo = {}) {
            state.userInfo = {...state.userInfo,
                ...userInfo
            }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
38 39 40
        }
    },
    actions: {
41
        async LoginIn({ commit, dispatch }, loginInfo) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
42 43 44 45 46
            const res = await login(loginInfo)
            commit('setUserInfo', res.data.user)
            commit('setToken', res.data.token)
            commit('setExpiresAt', res.data.expiresAt)
            if (res.success) {
47
                await dispatch("SetAsyncRouter")
Mr.奇淼('s avatar
Mr.奇淼( 已提交
48 49 50 51 52
                const redirect = router.history.current.query.redirect
                if (redirect) {
                    router.push({ path: redirect, replace: true })
                } else {
                    router.push({ path: '/layout/dashbord', replace: true })
Mr.奇淼('s avatar
Mr.奇淼( 已提交
53 54
                }
            }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
55
        }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
56 57
    },
    getters: {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
58 59
        userInfo(state) {
            return state.userInfo
Mr.奇淼('s avatar
Mr.奇淼( 已提交
60 61 62
        },
        token(state) {
            return state.token
63 64 65
        },
        expiresAt(state) {
            return state.expiresAt
Mr.奇淼('s avatar
Mr.奇淼( 已提交
66 67 68
        }
    }
}