Files
crawlab/frontend/src/store/modules/user.js
2019-12-20 13:10:46 +08:00

151 lines
3.6 KiB
JavaScript

import request from '../../api/request'
const user = {
namespaced: true,
state: {
// token: getToken(),
name: '',
avatar: '',
roles: [],
userList: [],
userForm: {},
userInfo: undefined,
adminPaths: [
'/users'
],
pageNum: 1,
pageSize: 10,
totalCount: 0
},
getters: {
userInfo (state) {
if (state.userInfo) return state.userInfo
const userInfoStr = window.localStorage.getItem('user_info')
if (!userInfoStr) return {}
return JSON.parse(userInfoStr)
},
token () {
return window.localStorage.getItem('token')
}
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ROLES: (state, roles) => {
state.roles = roles
},
SET_USER_LIST: (state, value) => {
state.userList = value
},
SET_USER_FORM: (state, value) => {
state.userForm = value
},
SET_USER_INFO: (state, value) => {
state.userInfo = value
},
SET_PAGE_NUM: (state, value) => {
state.pageNum = value
},
SET_PAGE_SIZE: (state, value) => {
state.pageSize = value
},
SET_TOTAL_COUNT: (state, value) => {
state.totalCount = value
}
},
actions: {
// 登录
login ({ commit }, userInfo) {
const username = userInfo.username.trim()
return new Promise((resolve, reject) => {
request.post('/login', { username, password: userInfo.password })
.then(response => {
const token = response.data.data
commit('SET_TOKEN', token)
window.localStorage.setItem('token', token)
resolve()
})
.catch(error => {
reject(error)
})
})
},
// 获取用户信息
getInfo ({ commit, state }) {
return request.get('/me')
.then(response => {
commit('SET_USER_INFO', response.data.data)
window.localStorage.setItem('user_info', JSON.stringify(response.data.data))
})
},
// 注册
register ({ dispatch, commit, state }, userInfo) {
return new Promise((resolve, reject) => {
request.put('/users', { username: userInfo.username, password: userInfo.password })
.then(() => {
resolve()
})
.catch(r => {
reject(r.response.data.error)
})
})
},
// 登出
logout ({ commit, state }) {
return new Promise((resolve, reject) => {
window.localStorage.removeItem('token')
window.localStorage.removeItem('user_info')
commit('SET_USER_INFO', undefined)
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
resolve()
})
},
// 获取用户列表
getUserList ({ commit, state }) {
return new Promise((resolve, reject) => {
request.get('/users', {
page_num: state.pageNum,
page_size: state.pageSize
})
.then(response => {
commit('SET_USER_LIST', response.data.data)
commit('SET_TOTAL_COUNT', response.data.total)
})
})
},
// 删除用户
deleteUser ({ state }, id) {
return request.delete(`/users/${id}`)
},
// 编辑用户
editUser ({ state }) {
return request.post(`/users/${state.userForm._id}`, state.userForm)
},
// 添加用户
addUser ({ dispatch, commit, state }) {
return request.put('/users', state.userForm)
}
}
}
export default user