Files
crawlab/frontend/src/store/modules/user.js
yaziming c671d113c9 * 增加Docker开发环境
* 更新Dockerfile构建文件,升级NodeJS依赖版本。
 * 遵循ESLint重新格式化代码,修复部分警告
 * 登录Token失效增加登出提示
 * 网络请求问题增加错误错误提示
 * 升级UI依赖库
2020-06-19 16:57:00 +08:00

184 lines
4.5 KiB
Go

import request from '../../api/request'
import { getToken, setToken, removeToken } from '@/utils/auth'
const user = {
namespaced: true,
state: {
token: getToken(),
name: '',
avatar: '',
roles: [],
userList: [],
globalVariableList: [],
globalVariableForm: {},
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
},
SET_GLOBAL_VARIABLE_LIST: (state, value) => {
state.globalVariableList = value
}
},
actions: {
// 登录
async login({ commit }, userInfo) {
const username = userInfo.username.trim()
const res = await request.post('/login',
{ username, password: userInfo.password })
if (res.status === 200) {
const token = res.data.data
commit('SET_TOKEN', token)
setToken(token)
}
return res
},
// 获取用户信息
async getInfo({ commit, state }) {
const response = await request.get('/me')
// ensure compatibility
if (!response.data.data.setting.max_error_log) {
response.data.data.setting.max_error_log = 1000
}
commit('SET_USER_INFO', response.data.data)
window.localStorage.setItem('user_info',
JSON.stringify(response.data.data))
},
// 修改用户信息
postInfo({ commit }, form) {
return request.post('/me', form)
},
// 注册
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()
})
},
async resetToken({ commit }) {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
removeToken()
},
// 获取用户列表
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-add', state.userForm)
},
// 新增全局变量
addGlobalVariable({ commit, state }) {
return request.put(`/variable`, state.globalVariableForm)
.then(() => {
state.globalVariableForm = {}
})
},
// 获取全局变量列表
getGlobalVariable({ commit, state }) {
request.get('/variables').then((response) => {
commit('SET_GLOBAL_VARIABLE_LIST', response.data.data)
})
},
// 删除全局变量
deleteGlobalVariable({ commit, state }, id) {
return request.delete(`/variable/${id}`)
}
}
}
export default user