import Vue from 'vue' import { login, mobileOrEmailCodeLogin, logout } from '@/api/login.js' import { setToken, removeToken, setRefreshToken, getToken } from '@/utils/auth'; import { LOGIN, MOBILE_LOGIN, LOGOUT, SET_USER, SET_USER_FROM_STORAGE, SAVE_AGREEMENT_INFORMATION, SAVE_USER_TASK_COMPLETE, SAVE_USER_GRADES, SAVE_USER_RIGHTS } from '@/store/mutation-types' import { saveAgreementInformation } from "@/api/operation/interactiveMessage"; import { submitHandler } from "@/utils/autoLogin"; import { getUserTaskComplete, getUserLevelList, getUserRightsList } from "@/api/user"; import { addGrowth } from "@/utils/toCompleteTask"; const state = { user: { userId: null, username: '', realName: '', office: {}, department: {}, authorities: [], }, } // getters const getters = { isLogin: state => { if (!state.user.userId) { var userJson = sessionStorage.getItem('user'); if (userJson && userJson != '') { //state.user = JSON.parse(userJson); //Vue.set(state.user, 'office', user.office); } } return state.user.userId; } } // actions const actions = { [LOGIN]({ commit, dispatch }, user) { return new Promise((resolve, reject) => { login(user.account, user.password, user.captcha, user.codeUid, user.token, user.validate, user.captchaToken, user.language).then(response => { if (response.status === 200) { Vue.prototype.$Cookies.set('token', response.data.access_token, { expires: Vue.prototype.$moment.add(response.data.expires_in, "second").toDate() }); Vue.prototype.$Cookies.set('userInfo', response.data.userInfo, { expires: Vue.prototype.$moment.add(response.data.expires_in, "second").toDate() }); } const data = response.data; user.password = ''; data['user'] = user; commit(SET_USER, data); dispatch(SAVE_AGREEMENT_INFORMATION); resolve() }).catch(error => { reject(error) }) }) }, [MOBILE_LOGIN]({ commit, dispatch }, param) { return new Promise((resolve, reject) => { mobileOrEmailCodeLogin(param.mobile, param.checkCode, param.service, param.token, param.language).then(response => { if (response.status === 200) { Vue.prototype.$Cookies.set('token', response.data.access_token, { expires: Vue.prototype.$moment.add(response.data.expires_in, "second").toDate() }); Vue.prototype.$Cookies.set('userInfo', response.data.userInfo, { expires: Vue.prototype.$moment.add(response.data.expires_in, "second").toDate() }); } const data = response.data; param.password = ''; data['user'] = param; commit(SET_USER, data); dispatch(SAVE_AGREEMENT_INFORMATION); resolve() }).catch(error => { reject(error) }) }) }, [SAVE_AGREEMENT_INFORMATION]({ commit }) { let params = { "versionName": "12", "versionType": "21", "userId": "34", "userName": "5", "userAgent": "46" } let token = 'Bearer ' + getToken() saveAgreementInformation({ agreementInformationEntity: JSON.stringify(params) }, token).then(response => { }).catch(error => { }) }, [LOGOUT]({ commit }, meetingId) { return new Promise((resolve, reject) => { logout().then(response => { // commit(SET_USER, { // user: { // userId: '', // account: '', // realName: '', // } // }) if (response.status === "200") { Vue.prototype.$Cookies.remove('token'); Vue.prototype.$Cookies.remove('userInfo'); } removeToken(); localStorage.removeItem('user'); localStorage.removeItem('userLevel'); localStorage.removeItem('userRight'); localStorage.removeItem('orderDetail'); localStorage.removeItem('detailID'); localStorage.removeItem('orderId'); resolve() }).catch(error => { removeToken(); localStorage.removeItem('user'); localStorage.removeItem('userLevel'); localStorage.removeItem('userRight'); localStorage.removeItem('orderDetail'); localStorage.removeItem('detailID'); localStorage.removeItem('orderId'); reject(error) }) }) // return null; }, [SAVE_USER_TASK_COMPLETE]({ commit }) { return new Promise((resolve, reject) => { if (!!Vue.prototype.$Cookies.get('token')) { getUserTaskComplete().then((res) => { if (res) { window.localStorage.setItem('userTaskComplete', JSON.stringify(res.data)); resolve() } }).catch(error => { reject(error) }) } }) }, [SAVE_USER_GRADES]({ commit }) { return new Promise((resolve, reject) => { if (!!Vue.prototype.$Cookies.get('token')) { getUserLevelList().then((res) => { if (res) { window.localStorage.setItem('userLevel', JSON.stringify(res.data)); resolve() } }).catch(error => { reject(error) }) } }) }, [SAVE_USER_RIGHTS]({ commit }) { return new Promise((resolve, reject) => { if (!!Vue.prototype.$Cookies.get('token')) { getUserRightsList().then((res) => { if (res) { window.localStorage.setItem('userRight', JSON.stringify(res.data)); resolve() } }).catch(error => { reject(error) }) } }) }, } // mutations const mutations = { [SET_USER](state, data) { state.user.account = data.user.account; var userInfo = JSON.parse(data.userInfo); Vue.set(state.user, 'office', userInfo.office); Vue.set(state.user, 'realName', userInfo.realName); Vue.set(state.user, 'username', userInfo.username); Vue.set(state.user, "userId", userInfo.id); Vue.set(state.user, "office", userInfo.office); Vue.set(state.user, "department", userInfo.department); Vue.set(state.user, "authorities", userInfo.authorities); Vue.set(state.user, "umsUser", userInfo.umsUser); setToken(data.access_token); setRefreshToken(data['refresh_token']); localStorage.setItem('user', JSON.stringify(state.user)); addGrowth("point_task_sign") if (userInfo.umsUser.languageSettingDict) { window.localStorage.setItem("locale", userInfo.umsUser.languageSettingDict); window.sessionStorage.setItem("locale", userInfo.umsUser.languageSettingDict); } }, [SET_USER_FROM_STORAGE](state, data) { state.user = data; // Vue.set(state.user, 'office', data.office); // Vue.set(state.user, 'realName', data.realName); } } export default { namespaced: true, state, getters, actions, mutations }