import { login, getInfo, logout } from '@/api/index' import { getToken, setToken, removeToken } from '@/utils/auth' import { resetRouter } from '@/router' import md5 from "js-md5"; // 密码加密 const define = require('@/utils/define') import qs from 'qs' const user = { state: { token: getToken(), id: '', name: '', avatar: '', roles: [], address: '', loginLoading: '', userInfo: {}, menuList: [], }, mutations: { SET_TOKEN: (state, token) => { state.token = token }, SET_ID: (state, id) => { state.id = id }, SET_NAME: (state, name) => { state.name = name }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_ROLES: (state, roles) => { state.roles = roles }, SET_ADDRESS: (state, address) => { state.address = address }, SET_LOGIN_LOADING: (state, loginLoading) => { state.loginLoading = loginLoading }, SET_USERINFO: (state, userInfo) => { state.userInfo = userInfo }, SET_MENULIST: (state, menuList) => { state.menuList = menuList } }, actions: { // 登录 Login({ commit }, data) { return new Promise((resolve, reject) => { let password = md5(data.password); `` let account = data.account; login({ account, password }).then(res => { setToken(res.data.token) commit('SET_TOKEN', res.data.token) resolve() }).catch(error => { reject(error) }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then((res) => { let { menuList, userInfo, permissionList } = res.data const avatar = (userInfo.headIcon == "" || userInfo.headIcon == null) || require("@/assets/images/user.jpg"); if (!menuList.length) { reject('您的权限不足,请联系管理员') return false; } let routerList = [] function setData(list) { for (let i = 0; i < list.length; i++) { const e = list[i] let name = e.enCode.replace(/\./g, '-') e.vueName = name if (e.type == 1) { e.path = '/' + e.enCode if (e.hasChildren && e.children.length) { setData(e.children) } } if (e.type == 2) { let path = e.urlAddress if (path.indexOf("?") > -1) path = path.split("?")[0] e.path = '/' + e.urlAddress let newObj = { path: '/' + path, component: (resolve) => require([`@/views/${path}`], resolve), name: name, meta: { title: name, icon: e.icon, zhTitle: e.fullName, modelId: e.id } } routerList.push(newObj) } // 功能、字典、报表、门户 if ([3, 4, 5, 8].indexOf(e.type) > -1) { let propertyJson = e.propertyJson ? JSON.parse(e.propertyJson) : null, relationId = '', isTree = 0, componentUrl = '' if (propertyJson) { relationId = propertyJson.moduleId || '' isTree = propertyJson.isTree || 0 } if (e.type == 3) { componentUrl = 'dynamicModel' } else if (e.type == 4) { componentUrl = 'dynamicDictionary' } else if (e.type == 5) { componentUrl = 'dynamicDataReport' } else { componentUrl = 'dynamicPortal' } e.path = '/' + e.urlAddress let newObj = { path: '/' + e.urlAddress, component: (resolve) => require([`@/views/basic/${componentUrl}`], resolve), name: e.enCode, meta: { title: name, icon: e.icon, zhTitle: e.fullName, modelId: e.id, relationId, isTree } } routerList.push(newObj) } // 大屏 if (e.type == 6) { let propertyJson = e.propertyJson ? JSON.parse(e.propertyJson) : null, moduleId = ''; if (propertyJson) moduleId = propertyJson.moduleId || '' e.path = `${define.dataV}/view/${moduleId}?token=${getToken()}` } // 外链 if (e.type == 7) { if (e.linkTarget === "_self") { e.path = '/' + e.enCode let newObj = { path: '/' + e.enCode, component: (resolve) => require([`@/views/basic/externalLink`], resolve), name: e.enCode, meta: { title: name, icon: e.icon, zhTitle: e.fullName, modelId: e.id, urlAddress: e.urlAddress } } routerList.push(newObj) } else { const path = e.urlAddress.replace(/\${dataV}/g, define.dataV).replace(/\${nccToken}/g, getToken()) e.path = path } } } } setData(menuList); if (userInfo.roleIds && userInfo.roleIds.length > 0) { // 验证返回的roles是否是一个非空数组 commit('SET_ROLES', userInfo.roleIds) } else { commit('SET_ROLES', ['ROLE_DEFAULT']) } commit('SET_ID', userInfo.userId) commit('SET_NAME', userInfo.userName) commit('SET_AVATAR', avatar) commit('SET_ADDRESS', userInfo.loginIPAddressName) commit('SET_USERINFO', userInfo) commit('SET_MENULIST', menuList) resolve(routerList) }).catch(error => { reject(error) }) }) }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { logout().then(() => { commit('SET_TOKEN', '') commit('SET_ROLES', []) removeToken() resolve() }).catch(error => { reject(error) }) }) }, // 前端退出 FedLogOut({ commit, state }) { return new Promise((resolve, reject) => { commit('SET_TOKEN', '') removeToken() resolve() }) }, } } export default user