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 } from "@/common/util/constants" Vue.use(Vuex) export default new Vuex.Store({ state: { token: '', userid: '', username: '', realname: '', welcome: '', avatar: '' }, mutations: { 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) => { var username = userInfo.username; api.login(userInfo).then(response => { if (response.data.state == 200) { const result = response.data const userInfo = response.data.data commit('SET_TOKEN', "") commit('SET_AVATAR', null) commit('SET_NAME', userInfo) let params = { login_state: userInfo, client_id: 'ibps' } //授权第二步 api.authorize(params).then(response2 => { if (response2.data.state == 200) { let auparams = { authorize_code: response2.data.data, client_id: 'ibps', client_secret: '58b65297-3467-0859-8337-8cbaf81ef68a', grant_type: 'authorization_code' } //授权第三步 api.authentication(auparams).then(response3 => { if (response3.data.state == 200) { let dataAuparams = response3.data.data //将返回的token给到 uni.setStorageSync(ACCESS_TOKEN, dataAuparams.access_token); uni.setStorageSync("refresh_token", dataAuparams.refresh_token); //获取用户信息 api.context(username).then(res => { if (res.data.state == 200) { let info = res.data.data uni.setStorageSync(USER_INFO, info) if (info.user.id == '1100364672239927296' || info.user.id == '1100468240921919488') { uni.setStorageSync('administrator', true) resolve(res) return } if (info && info.org && info.org.id == '1041786072788369408') { uni.setStorageSync('administrator', false) resolve(res) return } else { uni.showToast({ title: '该账户不是客户账号', icon: 'none', duration: 2000 }) reject(res) return } } else { reject(res) } }) } else { reject(response3) } }) } else { reject(response2) } }) } else { uni.showToast({ title: response.data.cause, icon: 'none', duration: 2000 }) reject(response) } }).catch(error => { reject(error) }) }) }, // 注册并登录 mSign({ commit }, userInfo) { return new Promise((resolve, reject) => { api.sign(userInfo).then(response => { if (response.data.state == 200) { const result = response.data const userInfo = response.data.data //uni.setStorageSync(ACCESS_TOKEN,"ashdgajd"); uni.setStorageSync(USER_INFO, userInfo); commit('SET_TOKEN', "ashdgajd") commit('SET_AVATAR', userInfo.id) commit('SET_NAME', userInfo.username) //授权第二步 let params = {}; params.login_state = userInfo.data; params.client_id = "ibps"; api.authorize(params).then(response2 => { if (response.data.state == 200) { let auparams = {}; auparams.authorize_code = response2.data.data; auparams.client_id = "ibps"; //写死的client_secret auparams.client_secret = "58b65297-3467-0859-8337-8cbaf81ef68a" auparams.grant_type = "authorization_code" //授权第三步 api.authentication(auparams).then(res => { if (res.data.state == 200) { //将返回的token给到 uni.setStorageSync(ACCESS_TOKEN, res .data.data.access_token); uni.setStorageSync("refresh_token", res .data.data.refresh_token); resolve(response) } else { resolve(response) } }) } else { resolve(response) } }) } else { resolve(response) } }).catch(error => { reject(error) }) }) }, //手机号登录 PhoneLogin({ commit }, userInfo) { return new Promise((resolve, reject) => { api.phoneNoLogin(userInfo).then(response => { if (response.data.state == 200) { const result = response.data const userInfo = response.data.data uni.setStorageSync(ACCESS_TOKEN, "ashdgajd"); uni.setStorageSync(USER_INFO, userInfo); commit('SET_TOKEN', "") commit('SET_AVATAR', userInfo.id) commit('SET_NAME', userInfo.username) //授权第二步 let params = {}; params.login_state = userInfo.data; params.client_id = "ibps"; api.authorize(params).then(response2 => { if (response.data.state == 200) { let auparams = {}; auparams.authorize_code = response2.data.data; auparams.client_id = "ibps"; //写死的client_secret auparams.client_secret = "58b65297-3467-0859-8337-8cbaf81ef68a" auparams.grant_type = "authorization_code" //授权第三步 api.authentication(auparams).then(res => { if (res.data.state == 200) { //将返回的token给到 uni.setStorageSync(ACCESS_TOKEN, res .data.data.access_token); uni.setStorageSync("refresh_token", res .data.data.refresh_token); resolve(res) } else { resolve(res) } }) } else { resolve(response2) } }) } 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() }) }) }, }, getters: { token: state => state.token, username: state => { state.username = uni.getStorageSync(USER_INFO).username; return state.username }, nickname: state => { state.companyname = uni.getStorageSync(USER_INFO).companyname; return state.companyname }, 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 }, userinfo: state => { state.info = uni.getStorageSync(USER_INFO); return state.info }, }, })