/** * 登录状态管理 * 个人信息数据持久化 */ import Vue from 'vue'; import Vuex from 'vuex'; // import $api from "@/api.js"; import Request from '@/js_sdk/luch-request/luch-request/index.js'; const http = new Request(); import md5 from '@/js_sdk/js-md5/md5.min.js'; import {config} from '@/config/config.js' Vue.use(Vuex); // const userKey = md5("userInfo"); const userKey = "userInfo"; const hPageKey = md5('historyPage'); // const sysTokenKey = md5('accessToken'); const sysTokenKey ='accessToken'; const loginUrl = '/pages/login/loginType'; export default new Vuex.Store({ state: { hasLogin: false, userInfo: { customerCompanyInfoForm:{} }, token: '', cartListTmp:[], hPage: '' }, mutations: { addCart(state,data){ console.log('addCart',data); if(data){ state.cartListTmp = data console.log("vuex add:",state.cartListTmp) } }, clearCart(state){ state.cartListTmp = [] console.log(state.cartListTmp) }, login(state, token = '') { token = token instanceof Object ? token.token : token; state.token = token || uni.getStorageSync(sysTokenKey).accessToken || ''; state.hasLogin = Boolean(state.token); //保存token uni.setStorage({ key: sysTokenKey, data: { accessToken: state.token } }); uni.setStorage({ key: "hasLogin", data: true }); }, /** * 退出登录,传入false只更新缓存不跳转 */ logout(state, v = true) { const token = uni.getStorageSync(sysTokenKey); let thetoken = 'Bearer ' + token.accessToken; http.get(config.apiBaseurl + '/carbon-h5/wap/customer/logout',{header: {Authorization:thetoken}}).then(res =>{ console.log('res',res) }); state.hasLogin = false; state.userInfo = {}; state.token = ''; uni.removeStorage({ key: userKey }); uni.removeStorage({ key: sysTokenKey }); uni.removeStorage({ key: "userInfo" }); uni.setStorage({ key: "hasLogin", data: false }); //跳到登录页 // v && $api.goto(loginUrl); }, // historyPage(state, pUrl = '') { // if($api.alterUrl('/',pUrl) != loginUrl){ // state.hPage = pUrl || uni.getStorageSync(hPageKey).url; // //记录历史页 // uni.setStorage({ // key: hPageKey, // data: { // url: state.hPage // } // }); // } // }, async upInfo(state, provider = {}) { // const token = uni.getStorageSync(sysTokenKey); // let thetoken = 'Bearer ' + token.accessToken; const token = state.token; let thetoken = 'Bearer ' + token; //用户信息结构 const infoObj = { "page": 0, "pageNo": 0, "pageNum": 1, "pageSize": 10, "pageStart": null, "pageEnd": null, "limit": 0, "accessToken": null, "fkProductGuid": null, "fkOrgGuid": null, "state": null, "createUser": "", "createTime": "", "modifiedUser": "", "modifiedTime": "", "orgBrevity": null, "ico": null, "params": null, "codeUrlPrefix": null, "loginOrgGuid": null, "msgCode": null, "storeName": null, "guid": "", "account": "", "passwd": "", "customerType": null, "customerName": "", "nickName": "", "pid": null, "phone": null, "sex": null, "score": null, "wxId": "", "unionId": null, "headImage": "", "isCompany": 0, "isValidate": 0, "isEnable": 1, "queryStr": null, "carbonAmount": null, "goodsNum": null, "farmerNum": null, "farmerPersonNum": null, "goodsList": null, "loginType": null, "customerCompanyInfoForm": null, "channelType": null }; const then = res => { if (res.data.code == 0) { let data = res.data.retBody instanceof Object ? res.data.retBody : infoObj; //处理头像连接 // data.headImage = $api.alterUrl($api.href, data.headImage || ""); state.userInfo = data; uni.setStorage({ //缓存用户登陆状态 key: userKey, data }); } }; //读取本地缓存信息进行赋值 then({ code: 0, data: Object.assign(uni.getStorageSync(userKey),provider) }); //在线更新取得用户信息 then(await( http.get(config.apiBaseurl + '/carbon-h5/wap/customer/getCustomerByToken',{header: {Authorization:thetoken}}).then(res => { console.log('getCustomerByToken',JSON.parse(JSON.stringify(res))); if(res.data.retHead.errCode == 0){res.data.code = 0;} // 处理非微信头像 let headImage = res.data.retBody.headImage; if (headImage) { //判断是否符合http://符合返回真不符合返回假 var http = /^http:\/\/.*/i.test(headImage); //判断是否符合https://符合返回真不符合返回假 var https = /^https:\/\/.*/i.test(headImage); //如果两个都为假,我们就为客户添加http:// if (!http && !https) { headImage = config.onlineImg + headImage; } }; res.data.retBody.headImage = headImage; // 处理非微信头像 return res; }).catch(err => { // console.log('err', err) }) )); } } });