import { login, logout, getInfo, LoginMenu } from '@/api/user'
|
import { getToken, removeToken, setCookie } from '@/utils/auth'
|
import { resetRouter } from '@/router'
|
import { ButtonData } from '@/api/GeneralBasicData'
|
import Vue from 'vue'
|
|
const getDefaultState = () => {
|
return {
|
token: getToken(),
|
name: '',
|
avatar: ''
|
}
|
}
|
|
const state = getDefaultState()
|
|
const mutations = {
|
RESET_STATE: (state) => {
|
Object.assign(state, getDefaultState())
|
},
|
SET_TOKEN: (state, token) => {
|
state.token = token
|
},
|
SET_NAME: (state, name) => {
|
state.name = name
|
},
|
SET_MENU: (state, menu) => {
|
state.menu = menu
|
},
|
SET_AVATAR: (state, avatar) => {
|
state.avatar = avatar
|
}
|
}
|
|
const actions = {
|
// user login
|
login({ commit }, userInfo) {
|
const { username, password } = userInfo
|
return new Promise((resolve, reject) => {
|
login({ username: username.trim(), password: password, usertype: 'PC' }).then(res => {
|
console.log('PC端登录接口')
|
console.log(res)
|
|
localStorage.setItem('token', res.data)
|
|
setCookie('code', res.code)
|
resolve()
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// get user info
|
getInfo({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
getInfo(state.token).then(response => {
|
const { data } = response
|
|
if (!data) {
|
return reject('Verification failed, please Login again.')
|
}
|
|
const { name, avatar } = data
|
|
commit('SET_NAME', name)
|
commit('SET_AVATAR', avatar)
|
resolve(data)
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// get user menu
|
getMenu({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
LoginMenu({
|
usertype: 'PC',
|
usercode: localStorage.getItem('usercode'),
|
torg_code: localStorage.getItem('torg_code')
|
}).then(res => {
|
if (res.code === '200') {
|
ButtonData().then(res2 => {
|
localStorage.setItem('ButtonData', JSON.stringify(res2.data))
|
})
|
|
commit('SET_NAME', res.message)
|
commit('SET_MENU', res.data)
|
resolve(res.data)
|
}
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// user logout
|
logout({ commit, state, dispatch }) {
|
return new Promise((resolve, reject) => {
|
// const usercode = getCookie('navTabId')
|
// const username = getCookie('admin')
|
// const usertype = getCookie('usertype')
|
// const userid = getCookie('userid')
|
// const stu_torgcode = getCookie('stu_torgcode')
|
// const data = {
|
// usercode,
|
// username,
|
// usertype,
|
// userid,
|
// stu_torgcode
|
// }
|
|
logout().then(res => {
|
if (res.code === '200') {
|
removeToken() // must remove token first
|
resetRouter()
|
|
localStorage.removeItem('torg_code')
|
localStorage.removeItem('ButtonData')
|
localStorage.removeItem('usercode')
|
localStorage.removeItem('username')
|
localStorage.removeItem('torg')
|
localStorage.removeItem('token')
|
localStorage.removeItem('torg_name')
|
|
// removeCookie('ruleCode')
|
// removeCookie('username')
|
// removeCookie('usercode')
|
// removeCookie('stu_torgname')
|
// removeCookie('code')
|
|
// reset visited views and cached views
|
dispatch('tagsView/delAllViews', null, { root: true })
|
|
sessionStorage.removeItem('tabViews')
|
commit('RESET_STATE')
|
|
resolve()
|
}
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// remove token
|
resetToken({ commit }) {
|
return new Promise(resolve => {
|
removeToken() // must remove token first
|
commit('RESET_STATE')
|
resolve()
|
})
|
}
|
}
|
|
export default {
|
namespaced: true,
|
state,
|
mutations,
|
actions
|
}
|