import config from '@/common/config.js' import storage from '@/utils/storage' import constant from '@/utils/constant' import { login, logout, getInfo, codeLogin, getUserDetail, updateUserCurOrg, getDetailByAccountOrId } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' import { encrypt } from '@/utils/encrypt.js' const baseUrl = config.baseUrl const user = { state: { token: getToken(), name: storage.get(constant.name), avatar: storage.get(constant.avatar), roles: storage.get(constant.roles), permissions: storage.get(constant.permissions), deptPermissions: storage.get(constant.deptPermissions), userInfo: null, stats: null, org:null, //当前选择org对象 orgMap:null, //org数组集合 }, mutations: { SET_TOKEN: (state, token) => { state.token = token }, SET_NAME: (state, name) => { state.name = name storage.set(constant.name, name) }, SET_AVATAR: (state, avatar) => { state.avatar = avatar storage.set(constant.avatar, avatar) }, SET_ROLES: (state, roles) => { state.roles = roles storage.set(constant.roles, roles) }, SET_PERMISSIONS: (state, permissions) => { state.permissions = permissions storage.set(constant.permissions, permissions) }, SET_USER: (state, user) => { state.userInfo = user || {} }, SET_DEPT_PERMISSIONS: (state, deptPermissions) => { state.deptPermissions = deptPermissions || {} storage.set(constant.deptPermissions, deptPermissions) }, SET_STATS: (state, stats) => { state.stats = stats || {} }, SET_ORG: (state, org) => { state.org = org || {} }, SET_ORGMAP: (state, orgmap) => { state.orgMap = orgmap || {} }, }, actions: { // 登录 Login({ commit }, userInfo) { console.log('userInfo', userInfo); const username = userInfo.mobile.trim() const password = userInfo.password // const code = userInfo.code // const uuid = userInfo.uuid return new Promise((resolve, reject) => { login(username, password).then(async res => { setToken(res.token) commit('SET_TOKEN', res.token) let encryptUser = await encrypt(username); let encryptPwd = await encrypt(password); let autoInformation = { username:encryptUser, password:encryptPwd } uni.setStorageSync('autoInformation',autoInformation) resolve() }).catch(error => { reject(error) }) }) }, //验证码登录 codeLogin({ commit }, userInfo) { return new Promise((resolve, reject) => { codeLogin(userInfo).then(res => { setToken(res.token) commit('SET_TOKEN', res.token) resolve() }).catch(error => { reject(error) }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo({yhlx:'yg'}).then(res => { console.log("用户信息接口", res); const user = res.value const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar const username = (user == null || user.fullname == "" || user.fullname == null) ? "" : user.fullname const userInfo = user.userInfo || null const stats = user.stats || null; commit('SET_NAME', username) commit('SET_AVATAR', avatar) commit('SET_STATS', stats) commit('SET_USER', userInfo) console.log('获取用户信息',JSON.parse(JSON.stringify(this.state.user))); resolve(res) }).catch(error => { reject(error) }) }) }, GetOrg({ commit, state }){ return new Promise((resolve, reject) => { //获取用户组织机构 getUserDetail().then(res =>{ console.log("组织机构",res); if(res.code === 200 && res.state){ let allOrgMap = res.value.allOrgMap; let orgMap = allOrgMap.filter(item => !item.isMaster); let curOrg = res.value.curOrg; orgMap.map(item => { item.orgName = `${item.orgName}[${item.orgTypeDetail}]` }) commit('SET_ORG', curOrg); commit('SET_ORGMAP', orgMap); console.log("orgMap",user.state.orgMap); console.log("org",user.state.org); resolve(res) }else{ resolve(res.message) } }) }) }, SetOrg({ commit, state },org){ return new Promise((resolve, reject) => { //设置用户组织机构 console.log("设置org对象",org); org.orgName = org.orgName.replace(/\[.*?\]/g, ''); commit('SET_ORG', org); let orgId = {orgId:org.orgId} updateUserCurOrg(orgId).then(res =>{ if(res.state && res.code === 200){ resolve(res.message) }else{ reject(res.message) } }) }) }, // 获取用户角色 GetRoles({ commit, state }, sjh) { return new Promise((resolve, reject) => { //获取用户角色 // console.log("接收", sjh); getDetailByAccountOrId({ 'accountOrId': sjh }).then(res => { // console.log("角色", res); if (res.roles && res.roles.length > 0) { commit('SET_ROLES', res.roles) commit('SET_PERMISSIONS', res.permissions) } else { commit('SET_ROLES', ['ROLE_DEFAULT']) } let deptPermissions = {} if (res.deptRoles) { res.deptRoles.forEach(item => { const key = item.dept.deptId let pers = deptPermissions[key]?.permissions || [] let roles = deptPermissions[key]?.roles || [] pers.push(...item.permissions) item.role && roles.push(item.role) deptPermissions[key] = { dept: item.dept, permissions: pers, roles: roles } }) } // console.log("获取roles", this.state.user.roles); commit('SET_DEPT_PERMISSIONS', deptPermissions); resolve(res) }).catch(error => { console.log("获取roles错误", error); reject(error) }) }) }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { logout(state.token).then((res) => { commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) removeToken() storage.clean() resolve() }).catch(error => { console.log("退出失败",error); reject(error) }) }) } } } export default user