import Vue from 'vue' import Vuex from 'vuex' import api from "@/api/api" import MinCache from '@/common/util/MinCache.js' import { ACCESS_TOKEN, USER_NAME, USER_INFO, X_TENANT_ID } from "@/common/util/constants" Vue.use(Vuex) export default new Vuex.Store({ state: { auth: [], token: '', userid: '', username: '', realname: '', welcome: '', avatar: '' }, mutations: { SET_AUTH(state, auth) { state.auth = auth }, SET_TOKEN: (state, token) => { state.token = token }, SET_NAME: (state, { username, realname, welcome }) => { state.username = username state.realname = realname state.welcome = welcome }, SET_AVATAR: (state, avatar) => { state.avatar = avatar } }, actions: { // 登录 mLogin({ commit }, userInfo) { return new Promise((resolve, reject) => { api.login(userInfo).then(response => { if (response.data.code == 200) { const result = response.data.result const userInfo = result.userInfo uni.setStorageSync(ACCESS_TOKEN, result.token); uni.setStorageSync("isLogin", true); uni.setStorageSync("userId", userInfo.id); uni.setStorageSync(USER_INFO, userInfo); commit('SET_TOKEN', result.token) commit('SET_AVATAR', userInfo.avatar) commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname }) resolve(response) } else { resolve(response) } }).catch(error => { console.log("catch===>response", response) reject(error) }) }) }, //手机号登录 PhoneLogin({ commit }, userInfo) { return new Promise((resolve, reject) => { api.phoneNoLogin(userInfo).then(response => { if (response.data.code == 200) { const result = response.data.result const userInfo = result.userInfo uni.setStorageSync(ACCESS_TOKEN, result.token); uni.setStorageSync(USER_INFO, userInfo); commit('SET_TOKEN', result.token) commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname }) commit('SET_AVATAR', userInfo.avatar) resolve(response) } else { reject(response) } }).catch(error => { reject(error) }) }) }, // 第三方登录 ThirdLogin({ commit }, param) { return new Promise((resolve, reject) => { api.thirdLogin(param.token, param.thirdType, param.tenantId).then(response => { if (response.data.code == '200') { const result = response.data.result const userInfo = result.userInfo uni.setStorageSync(ACCESS_TOKEN, result.token); uni.setStorageSync(USER_INFO, userInfo); uni.setStorageSync(X_TENANT_ID, userInfo.loginTenantId); commit('SET_TOKEN', result.token) commit('SET_AVATAR', userInfo.avatar) commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname }) commit('SET_ID', userInfo.id) commit('SET_INFO', userInfo) commit('SET_TENANTID', userInfo.loginTenantId) resolve(response) } else { reject(response) } }).catch(error => { reject(error) }) }) }, // 登出 Logout({ commit, state }) { return new Promise((resolve) => { let logoutToken = state.token; commit('SET_TOKEN', '') uni.removeStorageSync(ACCESS_TOKEN) api.logout(logoutToken).then(() => { resolve() }).catch(() => { resolve() }) }) }, saveAuth({ commit }, auth) { commit('SET_AUTH', auth) } }, getters: { getAuth: state => state.auth, token: state => state.token, username: state => { state.userid = uni.getStorageSync(USER_INFO).username; return state.username }, nickname: state => { state.userid = uni.getStorageSync(USER_INFO).realname; return state.user.realname }, avatar: state => { state.userid = uni.getStorageSync(USER_INFO).avatar; return state.user.avatar }, userid: state => { state.userid = uni.getStorageSync(USER_INFO).id; return state.userid }, } })