import { log } from '@/utils/base.js' import { get, post } from '@/utils/request.js' import storage from "@/utils/storage.js" import modules from './modules/index.js' import Vue from 'vue' import Vuex from 'vuex' import { getOpenid, login,loginByWxCode } from "@/common/api.js" const key = "cems_" const KEYS = { AUTH_TOKEN: `${key}token`, USER_NAME: `${key}username`, USER_TYPE: `${key}usertype`, ORG_ID: `${key}orgid`, DOC_TITLE: `${key}doctitle`, OPEN_ID: `${key}openid`, } const time = 1000 * 60 * 60 * 24 * 3; //有效期3天 Vue.use(Vuex) const store = new Vuex.Store({ state: { token: null, userInfo: { name: "", orgId: "", userType: "", }, openid: "", docTitle: "", tabbarlist: [], overNum: 0, needWxLogin:true }, getters: { hasLogin(s) { return s.token != null } }, mutations: { login(state, user) { state.token = user.auth; state.userInfo.name = user.authName; state.userInfo.userType - user.userType; state.userInfo.orgId = user.enterpriseId; state.docTitle = user.loginMsg; storage.put(KEYS.AUTH_TOKEN, state.token, time) storage.put(KEYS.USER_NAME, state.userInfo.name, time) storage.put(KEYS.USER_TYPE, state.userInfo.userType, time) storage.put(KEYS.ORG_ID, state.userInfo.orgId, time) storage.put(KEYS.DOC_TITLE, state.docTitle, time) }, logout(state) { state.openid = null state.token = null storage.remove(KEYS.OPEN_ID) storage.remove(KEYS.AUTH_TOKEN) storage.remove(KEYS.USER_NAME) storage.remove(KEYS.USER_TYPE) storage.remove(KEYS.ORG_ID) }, setOpenid(state, openid) { state.openid = openid storage.put(KEYS.OPEN_ID, state.openid, time); }, setToken(state, token) { state.token = token storage.put(KEYS.AUTH_TOKEN, state.token, time) }, init(state) { state.token = storage.get(KEYS.AUTH_TOKEN) state.userInfo.name = storage.get(KEYS.USER_NAME) state.userInfo.userType = storage.get(KEYS.USER_TYPE) state.userInfo.orgId = storage.get(KEYS.ORG_ID) state.openid = storage.get(KEYS.OPEN_ID) state.docTitle = storage.get(KEYS.DOC_TITLE) }, setOverNum(state, num) { state.overNum = num; } }, actions: { getUserOpenId: async function({ commit, state }) { return await new Promise((resolve, reject) => { // #ifdef H5 resolve(""); // #endif // #ifndef H5 if (state.openid) { resolve(state.openid) } else { resolve("12343") // uni.login({ // success: (data) => { // log(`CODE=======>${data.code}`); // //resolve("12343") // getOpenid(data.code).then((res) => { // log(`openid====>`, res) // if (res.openid) { // commit("setOpenid", res // .openid) // resolve(res.openid); // } // }).catch(err => { // throw new Error(err); // }) // }, // fail: (err) => { // console.log( // 'uni.login 接口调用失败,将无法正常使用开放接口等服务', // err) // reject(err) // } // }) } // #endif }) }, login2: async function({ commit, dispatch, state }, data) { return await new Promise((resolve, reject) => { if (state.openid) { dispatch("getTokenByOpenid").then((res) => { resolve(res) }) } else { dispatch("getUserOpenId").then((openid) => { data.openid = openid; log(`LOGIN_DATA=======>${JSON.stringify(data)}`) login(data) .then((res) => { if (res.code == 0) { commit("login", res.restluLis); resolve(res); } else { reject(res); } }).catch(err => { reject(err); }) }) } }); }, getTokenByOpenid: async function({ commit, state }) { return await new Promise((resolve, reject) => { if (state.openid) { //todo 通过openid 获取 token log(`通过openid取token====>${state.openid}`); /* post("", { openid: state.openid }).then((res) => { log(`OPENID_TOKEN_DATA=======>${JSON.stringify(res)}`) if(res){ resolve(res); commit("setToken", res.token); }else{ reject(res); } }) */ resolve(state.openid); } else { log("getTokenByOpenid===>state.openid 为空") reject(); } }); }, getTokenByWxCode:async function({ commit, state }){ return await new Promise((resolve,reject)=>{ uni.login({ success: (data) => { log(`CODE=======>${data.code}`); //resolve("12343") loginByWxCode({wxcode:data.code}).then((res) => { log(`result====>`, res) if (res.code ==0) { commit("login", res.restluLis); commit("setOpenid", res.restluLis.wxLoginInfo.openid) resolve(res); } }).catch(err => { throw new Error(err); }) }, fail: (err) => { console.log( 'uni.login 接口调用失败,将无法正常使用开放接口等服务', err) reject(err) } }) }) }, getWxCode: async function({ commit, state }){ return await new Promise((resolve,reject)=>{ // #ifdef H5 resolve(""); // #endif // #ifndef H5 uni.login({ success: (data) => { log(`CODE=======>${data.code}`); resolve(data.code) }, fail: (err) => { console.log( 'uni.login 接口调用失败,将无法正常使用开放接口等服务', err) reject(err) } }) // #endif }) }, login:async function({ commit, dispatch, state }, data){ return await new Promise((resolve,reject)=>{ dispatch("getWxCode").then((code) => { if(code){ data.wxcode = code; } login(data) .then((res) => { if (res.code == 0) { commit("login", res.restluLis); resolve(res); } else { reject(res); } }).catch(err => { reject(err); }) }) }) } }, modules: { ...modules } }) export default store;