import { login, logout, getInfo } from '@/api/user' import { GetDataByName, PostDataByName } from '@/api/common' import { getToken, setToken, removeToken } from '@/utils/auth' import { resetRouter } from '@/router' import { Message } from 'element-ui' import Cookies from 'js-cookie' const state = { token: getToken(), name: '', avatar: '', pastureid: '', pasturename: '', pasturenumber: '', employename: '', employeid: '', departmentid: '', departmentname: '', depids:'', sumamount: '', roles: [], buttons: [], meslist: [] } const mutations = { SET_TOKEN: (state, token) => { state.token = token }, SET_NAME: (state, name) => { state.name = name Cookies.set('name', name) }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_ROLES: (state, roles) => { state.roles = roles sessionStorage.setItem('roles', JSON.stringify(roles)) }, SET_PASTUREID: (state, pastureid) => { Cookies.set('pastureid', pastureid) state.pastureid = pastureid }, SET_PASTURENAME: (state, pasturename) => { Cookies.set('pasturename', pasturename) state.pasturename = pasturename }, SET_PASTURENUMBER: (state, pasturenumber) => { Cookies.set('pasturenumber', pasturenumber) state.pasturenumber = pasturenumber }, SET_EMPLOYEID: (state, employeid) => { Cookies.set('employeid', employeid) // console.log('Cookies.set.employeid', employeid) state.employeid = employeid }, SET_EMPLOYENAME: (state, employename) => { Cookies.set('employename', employename) state.employename = employename }, SET_DEPARTMENTID: (state, departmentid) => { Cookies.set('departmentid', departmentid) state.departmentid = departmentid }, SET_DEPARTMENTNAME: (state, departmentname) => { Cookies.set('departmentname', departmentname) state.departmentname = departmentname }, SET_DEPIDS: (state, depids) => { Cookies.set('depids', depids) state.depids = depids }, SET_SUMAMOUNT: (state, sumamount) => { Cookies.set('sumamount', sumamount) sessionStorage.setItem('sumamount', JSON.stringify(sumamount)) state.sumamount = sumamount }, SET_MESLIST: (state, meslist) => { sessionStorage.setItem('meslist', JSON.stringify(meslist)) state.meslist = meslist }, SET_BUTTONS: (state, buttons) => { Cookies.set('buttons', buttons) sessionStorage.setItem('buttons', JSON.stringify(buttons)) state.buttons = buttons }, SET_ISHOMEPAGE: (state, isHomePage) => { Cookies.set('isHomePage', isHomePage) sessionStorage.setItem('isHomePage', JSON.stringify(isHomePage)) state.isHomePage = isHomePage }, } const actions = { // user login login({ commit }, userInfo) { const { username, password } = userInfo return new Promise((resolve, reject) => { login({ username: username.trim(), password: password }).then(response => { // ============================= const fullURL = window.location.href; // 使用正则表达式提取code参数的值 const codeMatch = fullURL.match(/[\?&]access=([^&]+)/); console.log('codeMatch===>',codeMatch) if (codeMatch) { // 如果匹配成功,将code的值存储在组件的data中 var code = codeMatch[1]; //TODO 保存token // 去除后面的#/login if ( code && code.includes("#/login")) { code = code.replace("#/login", ""); } console.log('token',code) //base64解密this.cose console.log('解密token',atob(code)) let token = atob(code) commit('SET_TOKEN', token) setToken(token) resolve() let url = window.location.href; // 使用split方法将URL拆分为数组 let jmpurl = url.split('?')[0]+'#/dashboard' window.open(jmpurl, "_self"); } // ============================= // const { data, msg } = response // if (msg !== 'ok') { // Message({ // message: data, // type: 'error', // duration: 5 * 1000 // }) // reject(data) // } // commit('SET_TOKEN', data.token) // if (Cookies == null) { // console.log(1) // } // setToken(data.token) // resolve() }).catch(error => { reject(error) }) }) }, // get user info getInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo(state.token).then(response => { const { data } = response if (!data) { reject('Verification failed, please Login again.') } const { role, username, avatar } = data // roles must be a non-empty array if (!role || role.length <= 0) { reject('该用户未分配角色!') console.log('no=============') setTimeout(()=>{ commit('SET_BUTTONS', []) // console.log('-------------', state) commit('SET_TOKEN', '') commit('SET_ROLES', []) Cookies.remove('employename') Cookies.remove('employeid') Cookies.remove('pastureid') removeToken() resetRouter() resolve() // const url = process.env.VUE_APP_BASE_API // const url = 'http://192.168.61.41/' // const url = 'http://tmrwatch.cn:8082/' var url = process.env.VUE_APP_BASE_API //获取当前url if(url.indexOf('/')==0 && url.length==1){ url= window.location.protocol + "//"+window.location.host+url } const externalURL = "https://id.xiandaimuye.com/api/v1/logout?redirect_url="+url+ '&client_id=fTBm64I4k3kqHYtoFTUpvirCDxxCfx7I'; // 使用 $router.push 进行页面跳转 // 注意: 这里的跳转是在当前窗口进行的,如果需要在新标签页打开,可以使用 window.open(externalURL) window.open(externalURL, "_self"); },2000) } GetDataByName({ 'name': 'getUserPCButtons', 'parammaps': { 'jwt_username': username }}).then(response => { console.log("getUserPCButtons=================",response) if(response.data.list !== null){ commit('SET_BUTTONS', response.data.list) } else{ commit('SET_BUTTONS', []) } }) GetDataByName({ 'name': 'findByUserPastureName', 'parammaps': { 'jwt_username': username }}).then(response => { if (response.data.list.length > 0) { commit('SET_PASTUREID', response.data.list[0].pastureId) commit('SET_PASTURENAME', response.data.list[0].pastureName) commit('SET_PASTURENUMBER', response.data.list[0].pastureNumber) commit('SET_EMPLOYEID', response.data.list[0].employeId) commit('SET_EMPLOYENAME', response.data.list[0].employeName) commit('SET_DEPARTMENTID', response.data.list[0].departmentId) commit('SET_DEPARTMENTNAME', response.data.list[0].departmentName) commit('SET_DEPIDS', response.data.list[0].depIds) Cookies.set('gempid', response.data.list[0].employeId) Cookies.set('gdepartmentname', response.data.list[0].departmentName) Cookies.set('gshebquanx','0') // 接口判断是不是设备主管权限 GetDataByName({ 'name': 'getIsDirectorOfEquipment', 'parammaps': { 'empId': response.data.list[0].employeId }}).then(response => { console.log("111111response=============",response) if(response.data.list[0].status == 0){ //不是sh Cookies.set('gshebquanx','0') }else{ Cookies.set('gshebquanx','1') } }) } GetDataByName({ 'name': 'getNoMesCount', 'parammaps': { 'empId': response.data.list[0].employeId, 'pastureId': response.data.list[0].pastureId, deptId: response.data.list[0].departmentId }}).then(response => { commit('SET_SUMAMOUNT', response.data.list[0].sumAmount) }) // 获取消息通知前五条 GetDataByName({ 'name': 'getNoMesList', 'page': 1, 'offset': 1, 'pagecount': 5, 'parammaps': { 'empId': response.data.list[0].employeId, 'pastureId': response.data.list[0].pastureId, deptId: response.data.list[0].departmentId }}).then(response => { commit('SET_MESLIST', response.data.list) }) GetDataByName({ 'name': 'gethomepagemenu', 'parammaps': { }}).then(response => { commit('SET_ISHOMEPAGE', response.data.list[0].cou) }) }) // 获取消息通知数量 window.setInterval(() => { setTimeout(() => { // console.log(Cookies.get('employeid')) GetDataByName({ 'name': 'getNoMesCount', 'parammaps': { 'empId': Cookies.get('employeid'), 'pastureId': Cookies.get('pastureid'), deptId: Cookies.get('departmentid') }}).then(response => { commit('SET_SUMAMOUNT', response.data.list[0].sumAmount) }) // 获取消息通知前五条 GetDataByName({ 'name': 'getNoMesList', 'page': 1, 'offset': 1, 'pagecount': 5, 'parammaps': { 'empId': Cookies.get('employeid'), 'pastureId': Cookies.get('pastureid'), deptId: Cookies.get('departmentid') }}).then(response => { commit('SET_MESLIST', response.data.list) }) }, 0) }, 1800000) commit('SET_ROLES', role) commit('SET_NAME', username) commit('SET_AVATAR', avatar) resolve(data) }).catch(error => { reject(error) }) }) }, // user logout logout({ commit, state }) { return new Promise((resolve, reject) => { logout(state.token).then(() => { commit('SET_BUTTONS', []) // console.log('-------------', state) commit('SET_TOKEN', '') commit('SET_ROLES', []) Cookies.remove('employename') Cookies.remove('employeid') Cookies.remove('pastureid') removeToken() resetRouter() resolve() // const url = process.env.VUE_APP_BASE_API // const url = 'http://192.168.61.41/' // const url = 'http://tmrwatch.cn:8082/' var url = process.env.VUE_APP_BASE_API //获取当前url if(url.indexOf('/')==0 && url.length==1){ url= window.location.protocol + "//"+window.location.host+url } const externalURL = "https://id.xiandaimuye.com/api/v1/logout?redirect_url=" + url + '&client_id=fTBm64I4k3kqHYtoFTUpvirCDxxCfx7I'; // 使用 $router.push 进行页面跳转 // 注意: 这里的跳转是在当前窗口进行的,如果需要在新标签页打开,可以使用 window.open(externalURL) window.open(externalURL, "_self"); // location.reload() }).catch(error => { reject(error) }) }) }, // remove token resetToken({ commit }) { return new Promise(resolve => { commit('SET_TOKEN', '') commit('SET_ROLES', []) removeToken() resolve() }) } } export default { namespaced: true, state, mutations, actions }