import { login, logout, getPhoneValidate, forgetPass, register } from '@/api/user'
import { resetRouter } from '@/router'
const state = {
name: '',
userInfo: (sessionStorage.getItem(`userInfo`) && JSON.parse(sessionStorage.getItem(`userInfo`))) || {},
phoneValidate: ''
}
const mutations = {
SET_NAME: (state, name) => {
state.name = name
},
SET_USERINFO: (state, userInfo) => {
state.userInfo = userInfo
},
SET_PHONE: (state, phoneValidate) => {
state.phoneValidate = phoneValidate
}
}
const actions = {
// 登录
login({ commit }, userInfo) {
const { username, password, rememberMe, teamId } = userInfo
return new Promise((resolve, reject) => {
// 登录以form-data形式传参
const formData = new FormData()
formData.set('account', username)
formData.set('password', password)
teamId && formData.set('teamId', teamId)
login(formData).then(response => {
const { user } = response
// 记住用户信息 - 记住—》存localStorage中,不记住则下次打开就消失(sessionStorage中存储)
if (rememberMe === true) {
localStorage.setItem('token', user.jwtToken)
} else {
sessionStorage.setItem('token', user.jwtToken)
}
commit('SET_NAME', user.realName)
sessionStorage.setItem('userInfo', JSON.stringify(user))
localStorage.setItem('userInfo', JSON.stringify(user))
state.userInfo = user
resolve()
}).catch(error => {
reject(error)
})
})
},
// 注册
register({ commit }, params) {
return new Promise((resolve, reject) => {
register({ ...params }).then(response => {
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取验证码
getPhoneValidate({ commit }, params) {
return new Promise((resolve, reject) => {
getPhoneValidate({ ...params }).then(response => {
commit('SET_PHONE', response.message)
resolve()
}).catch(error => {
reject(error)
})
})
},
// 忘记密码
forgetPass({ commit }, params) {
return new Promise((resolve, reject) => {
forgetPass({ ...params }).then(response => {
resolve()
}).catch(error => {
reject(error)
})
})
},
// 注销 - 登出
logout({ commit, state, dispatch }) {
return new Promise((resolve, reject) => {
const token = localStorage.getItem('token') || sessionStorage.getItem('token')
logout(token).then(() => {
// 去掉token
sessionStorage.setItem('token', '')
localStorage.setItem('token', '')
resetRouter()
resolve()
}).catch(error => {
reject(error)
})
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}