W72crm_web-master/src/store/modules/user.js

217 lines
4.9 KiB
JavaScript

import {
loginAPI,
logoutAPI
} from '@/api/login'
import {
userListAPI,
depListAPI,
adminIndexAuthListAPI
} from '@/api/common'
import {
resetRouter
} from '@/router'
import {
adminUsersReadAPI
} from '@/api/user/personCenter'
import {
addAuth,
removeAuth
} from '@/utils/auth'
import {
request
} from '@/utils'
import Lockr from 'lockr'
import { debounce } from 'throttle-debounce'
const user = {
state: {
userInfo: null, // 用户信息
// 权限信息
allAuth: null, // 总权限信息 默认空 调整动态路由
userList: [], // 管理后台员工和部门
deptList: [],
crm: {}, // 客户管理
bi: {}, // 商业智能
manage: {}, // 管理后台
oa: {}, // 办公
project: {}, // 项目管理
hrm: {}, // 人力资源
compliance: {} // 合规管理
},
mutations: {
SET_COMPLIANCE: (state, compliance) => {
state.compliance = compliance
},
SET_USERINFO: (state, userInfo) => {
state.userInfo = userInfo
localStorage.setItem('loginUserInfo', JSON.stringify(userInfo))
},
SET_ALLAUTH: (state, allAuth) => {
state.allAuth = allAuth
},
SET_CRM: (state, crm) => {
state.crm = crm
},
SET_BI: (state, bi) => {
state.bi = bi
},
SET_MANAGE: (state, manage) => {
state.manage = manage
},
SET_OA: (state, oa) => {
state.oa = oa
},
SET_PROJECT: (state, project) => {
state.project = project
},
SET_HRM: (state, hrm) => {
state.hrm = hrm
},
SET_AUTH: (state, data) => {
const token = data.adminToken
Lockr.set('Admin-Token', token)
addAuth(token)
},
SET_USERLIST: (state, data) => {
state.userList = data
},
SET_DEPTLIST: (state, data) => {
state.deptList = data
}
},
actions: {
// 登录
Login({
commit,
dispatch
}, userInfo) {
return new Promise((resolve, reject) => {
loginAPI(userInfo).then(res => {
const data = res.data || {}
if (!data.hasOwnProperty('companyList')) {
commit('SET_AUTH', data)
dispatch('GetUserInfo')
}
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 获取权限
getAuth({
commit,
dispatch
}) {
return new Promise((resolve, reject) => {
adminIndexAuthListAPI().then((response) => {
let data = response.data
data.compliance='compliance'
Lockr.set('authList', data)
data.wkFirstModel = data.firstModel
commit('SET_ALLAUTH', data)
commit('SET_CRM', data.crm)
commit('SET_BI', data.bi)
commit('SET_MANAGE', data.manage)
commit('SET_OA', data.oa)
commit('SET_PROJECT', data.project)
commit('SET_HRM', data.hrm)
commit('SET_COMPLIANCE', data.compliance)
// 获取 管理后台 员工和部门信息
dispatch('GetUserList')
dispatch('GetDeptList')
if (data.hrm) {
dispatch('GetHrmUserList')
dispatch('GetHrmDeptList')
}
resolve(data)
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息
GetUserInfo({
commit,
dispatch
}) {
return new Promise((resolve, reject) => {
adminUsersReadAPI().then(response => {
// 邮件信息 走之前的逻辑
commit('SET_USERINFO', response.data)
dispatch('SystemLogoAndName')
request(response.data)
resolve(response)
}).catch(error => {
reject(error)
})
})
},
// 登出
LogOut({
commit
}) {
return new Promise((resolve, reject) => {
logoutAPI().then(() => {
/** flush 清空localStorage .rm('authKey') 按照key清除 */
removeAuth()
resetRouter()
resolve()
}).catch(error => {
removeAuth()
resetRouter()
reject(error)
})
})
},
debounceGetUserList: debounce(3000, ({ dispatch }) => {
dispatch('GetUserList')
}),
// 管理后台员工列表
GetUserList({
commit
}) {
return new Promise((resolve, reject) => {
userListAPI({
pageType: 0
}).then(res => {
commit('SET_USERLIST', res.data.list || [])
resolve()
}).catch(error => {
reject(error)
})
})
},
debounceGetDeptList: debounce(3000, ({ dispatch }) => {
dispatch('GetDeptList')
}),
// 管理后台部门列表
GetDeptList({
commit
}) {
return new Promise((resolve, reject) => {
depListAPI({ type: 'tree' }).then(res => {
commit('SET_DEPTLIST', res.data || [])
resolve()
}).catch(error => {
reject(error)
})
})
}
}
}
export default user