import config from '@/config' import storage from '@/utils/storage' import constant from '@/utils/constant' import { getweChatLogin, logout, getInfo,login } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' import { toast, showConfirm, tansParams } from '@/utils/common' const baseUrl = config.baseUrl const Clientid = config.Clientid const user = { state: { token: getToken(), name: storage.get(constant.name), phonenumber: storage.get(constant.phonenumber), deptId: storage.get(constant.deptId), schoolId: storage.get(constant.schoolId), schoolName: storage.get(constant.schoolName), openId: storage.get(constant.openId), deptName: storage.get(constant.deptName), avatar: storage.get(constant.avatar), roles: storage.get(constant.roles), userroles: storage.get(constant.userroles), choseroles: storage.get(constant.choseroles), permissions: storage.get(constant.permissions), userId:storage.get(constant.userId), tenantId:storage.get(constant.tenantId), student:storage.get(constant.student), teacherClass:storage.get(constant.teacherClass), shareflag: false, shaflag:false, sharetit: '', sharedesc: '', sharelink: '', shareimg: '', refreshflag:storage.get(constant.refreshflag), scorknow:storage.get(constant.scorknow), autologin:storage.get(constant.autologin), }, mutations: { share:(state, provider)=>{ state.shareflag = provider[0].shareflag; state.shaflag = provider[0].shaflag; state.sharetit = provider[0].sharetit; state.sharedesc = provider[0].sharedesc; state.sharelink = provider[0].sharelink; state.shareimg = provider[0].shareimg; }, SET_TOKEN: (state, token) => { state.token = token }, SET_NAME: (state, name) => { state.name = name storage.set(constant.name, name) }, SET_PHONENUMBER: (state, phonenumber) => { state.phonenumber = phonenumber storage.set(constant.phonenumber, phonenumber) }, SET_DEPTID: (state, deptId) => { state.deptId = deptId storage.set(constant.deptId, deptId) }, SET_OPENID: (state, openId) => { state.openId = openId storage.set(constant.openId, openId) }, SET_SCHOOLID: (state, schoolId) => { state.schoolId = schoolId storage.set(constant.schoolId, schoolId) }, SET_SCHOOLNAME: (state, schoolName) => { state.schoolName = schoolName storage.set(constant.schoolName, schoolName) }, SET_DEPNAME: (state, deptName) => { state.deptName = deptName storage.set(constant.deptName, deptName) }, 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_USERROLES: (state, userroles) => { state.userroles = userroles storage.set(constant.userroles, userroles) }, SET_CHOSEROLES: (state, choseroles) => { state.choseroles = choseroles storage.set(constant.choseroles, choseroles) }, SET_PERMISSIONS: (state, permissions) => { state.permissions = permissions storage.set(constant.permissions, permissions) }, SET_USERID: (state, userId) => { state.userId = userId storage.set(constant.userId, userId) }, SET_TENANID: (state, tenantId) => { state.tenantId = tenantId storage.set(constant.tenantId, tenantId) }, SET_STUDENT: (state, student) => { state.student = student storage.set(constant.student, student) }, SET_TEACHERCLASS: (state, teacherClass) => { state.teacherClass = teacherClass storage.set(constant.teacherClass, teacherClass) }, SET_REFRESH: (state, refreshflag) => { state.refreshflag = refreshflag storage.set(constant.refreshflag, refreshflag) }, SET_SCOREKNOW: (state, scorknow) => { state.scorknow = scorknow storage.set(constant.scorknow, scorknow) }, SET_AUTOLOGIN: (state, autologin) => { state.autologin = autologin storage.set(constant.autologin, autologin) }, }, actions: { //修改存储的角色 权限 checkRole({commit},data){ var roles=data commit('SET_PERMISSIONS', roles.permissions) commit('SET_CHOSEROLES', roles.roleKey) }, checkClass({commit},data){ var roles=data commit('SET_SCHOOLID', roles.schoolId) commit('SET_SCHOOLNAME', roles.schoolName) }, // 刷新问题 checkRefresh({commit},data){ commit('SET_REFRESH', data) }, //下载示例 checkKnow({commit},data){ commit('SET_SCOREKNOW', data) }, // 微信登录 Login({ commit }, userInfo) { const iv = userInfo.iv const encryptedData = userInfo.encryptedData const code = userInfo.code const tenantId = userInfo.tenantId // const uuid = userInfo.uuid return new Promise((resolve, reject) => { var params={ iv: iv, encryptedData: encryptedData, code : code, tenantId : tenantId, } getweChatLogin(params).then(res => { setToken(res.data.access_token) commit('SET_TOKEN', res.data.access_token) // commit('SET_SCOREKNOW', 0) resolve() }).catch(error => { reject(error) }) }) }, // 登录 Logines({ commit }, userInfo) { const username = userInfo.username.trim() const password = userInfo.password const code = userInfo.code const uuid = userInfo.uuid const tenantId = userInfo.tenantId // const clientId = 'e5cd7e4891bf95d1d19206ce24a7b32e' const strfrom = userInfo.strfrom||"" const clientId = Clientid const grantType = 'password' return new Promise((resolve, reject) => { login(username, password, code, uuid,tenantId,clientId,grantType).then(res => { setToken(res.data.access_token) commit('SET_TOKEN', res.data.access_token) commit('SET_AUTOLOGIN',true) resolve() }).catch(error => { console.log(error,strfrom,123) if(error==500&&strfrom=='request'){ uni.hideLoading() // 清空数据 uni.showModal({ title: '提示', content: '登录状态已过期,您可以继续留在该页面,或者重新登录?', cancelText: '取消', confirmText: '确定', success: function(res) { if (res.confirm) { commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) removeToken() storage.clean() uni.reLaunch({ url: '/pages/login' }) }else{ commit('SET_AUTOLOGIN',false) } } }) } reject(error) }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(resd => { const res = resd.data const user = res.user // const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.png") : baseUrl + user.avatar const avatar = (user == null || user.avatar == "" || user.avatar == null) ? '' : user.avatar const username = (user == null || user.nickName == "" || user.nickName == null) ? "" : user.nickName const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId const tenantId = (user == null || user.tenantId == "" || user.tenantId == null) ? "" : user.tenantId const phonenumber = (user == null || user.phonenumber == "" || user.phonenumber == null) ? "" : user.phonenumber const deptId = (user == null || user.deptId == "" || user.deptId == null) ? "" : user.deptId const openId = (user == null || user.openId == "" || user.openId == null) ? "" : user.openId const deptName = (user == null || user.dept == "" || user.dept == null||user.dept.deptName==''||user.dept.deptName==null) ? "" : user.dept.deptName if (res.roles && res.roles.length > 0) { commit('SET_ROLES', res.roles) commit('SET_PERMISSIONS', res.permissions) if(res.roles.length==1){ commit('SET_CHOSEROLES', res.roles) } } else { commit('SET_ROLES', ['ROLE_DEFAULT']) } // 根据角色来储存权限 if (res.user.roles && res.user.roles.length > 0) { var newArr=[]; var schoolId=res.schoolId; var schoolName=''; newArr = res.user.roles.map(v => { if(v.roleKey=='teacher'&&res.user.teacherClass&&res.user.teacherClass.length){ schoolId=res.user.teacherClass[0].schoolId schoolName=res.user.teacherClass[0].schoolName } return { roleKey: v.roleKey, permissions: v.permissions } }) commit('SET_SCHOOLID', schoolId) commit('SET_SCHOOLNAME', schoolName) commit('SET_USERROLES', newArr) } else { commit('SET_USERROLES', ['ROLE_DEFAULT']) } commit('SET_NAME', username) commit('SET_USERID', userId) commit('SET_TENANID', tenantId) commit('SET_PHONENUMBER', phonenumber) commit('SET_DEPTID', deptId) commit('SET_OPENID', openId) commit('SET_DEPNAME', deptName) commit('SET_AVATAR', avatar) resolve(resd) }).catch(error => { reject(error) }) }) }, // 用户列表信息获取用户信息 GetInforoles({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(resd => { var res=resd.data; // 判断和存储的是否一样 不一样重新存 var choseroles=state.choseroles; var roles=state.roles; var user = res.roles; // 塞老师 孩子信息 if(res.user.parentsStudent&&res.user.parentsStudent.length>0){ commit('SET_STUDENT', res.user.parentsStudent) } if(res.user.teacherClass&&res.user.teacherClass.length>0){ // 碰到一样去重 var teacherClass=res.user.teacherClass; var newArrs = []; const map = new Map(); newArrs = teacherClass.filter(v => !map.has(v.classId) && map.set(v.classId, 1)); commit('SET_TEACHERCLASS',newArrs) } // 需要完善信息 var userType=res.userType; if(userType=='register'){ // 必须完信息 showConfirm('您还未选择角色,请去完善信息').then(ress => { if(ress.confirm) { uni.navigateTo('/mine/pages/mine/roles') resolve() return } }) return } if(JSON.stringify(roles.sort()) === JSON.stringify(user.sort())){ }else{ // 必须退出 showConfirm('身份角色有更新,请退出重新登录,避免身份切换错误').then(ress => { if (ress.confirm) { commit('SET_TOKEN', '') commit('SET_ROLES', []) // commit('SET_SCOREKNOW', '') commit('SET_PERMISSIONS', []) removeToken() storage.clean() uni.reLaunch({ url: '/pages/login' }) resolve() return } }) } resolve(resd) }).catch(error => { reject(error) }) }) }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { logout(state.token).then(() => { commit('SET_TOKEN', '') // commit('SET_SCOREKNOW', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) removeToken() storage.clean() resolve() }).catch(error => { reject(error) }) }) } } } export default user