import { login, loginOut, loginPhone, getUserProfile, getLoginCode, loginUserInfo, phoneLogin, dealerPhoneLogin } from '@/api/user.js' import uniGo from '@/utils/unIGO.js'; export default { state: () => ({ token: uni.getStorageSync("token") ? uni.getStorageSync("token") : null, userInfo: uni.getStorageSync("userInfo") ? JSON.parse(uni.getStorageSync("userInfo")) : {}, role: uni.getStorageSync("role") ? uni.getStorageSync("role") : 'consumer', //consumer消费 head团长 loginUser: uni.getStorageSync("loginUser") ? JSON.parse(uni.getStorageSync("loginUser")) : {} }), mutations: { loginIn(state) { let userInfo = uni.getStorageSync("userInfo"); let token = uni.getStorageSync("token"); let role = uni.getStorageSync("role"); if (userInfo && token && role) { state.token = token; state.userInfo = JSON.parse(userInfo); state.role = role; } }, login(state, obj) { uni.setStorageSync("token", obj.token); uni.setStorageSync("userInfo", JSON.stringify(obj.userInfo)); uni.setStorageSync("role", obj.role); state.token = obj.token; state.userInfo = obj.userInfo; state.role = obj.role; }, loginOut(state) { uni.removeStorageSync("token"); uni.removeStorageSync("userInfo"); uni.removeStorageSync("role"); uni.removeStorageSync("loginUser"); state.token = null; state.userInfo = {}; state.role = 'consumer'; state.loginUser = {}; }, upDateRoleMount(state, val) { uni.setStorageSync("role", val); state.role = val; }, upDateRoleToken(state, obj) { uni.setStorageSync("token", obj.token); state.token = obj.token; }, upDateLoginUserMount(state, val) { uni.setStorageSync("loginUser", JSON.stringify(val)); state.loginUser = val; }, upDateUserInfoMount(state, val) { loginUserInfo(state.token).then(kh => { const { data } = kh uni.setStorageSync("userInfo", JSON.stringify(data)); state.userInfo = data; if (val === 'login') { if (data.isUpdatePassword == 0) { uniGo.navigateTo({ url: `/pages/login/changePwd` }) } else { if (data.shopList && data.shopList.length > 1) { uniGo.navigateTo({ url: `/personal/selectStore/index` }); } else { uniGo.switchTab({ url: `/pages/index/index` }); } } } }) } }, actions: { async phoneLogin({ commit }, userInfo) { const { data } = await phoneLogin(userInfo) console.log(data, '======state phoneLogin') uni.setStorageSync("token", data.token); commit("login", { token: data.token, userInfo: data, role: 'consumer' }); }, upDateRole({ commit }, data) { commit("upDateRoleMount", data); commit("upDateUserInfoMount"); }, upDateToken({ commit }, data) { commit("upDateRoleToken", data); }, postLogin({ commit }, data) { if (data) { console.log('登录111111111111', data) let paramsV = { code: data.code, encryptedData: data.encryptedData, iv: data.iv, userCode: data.userCode, userInfo: { avatarUrl: data.loginUser.avatarUrl, city: data.loginUser.city, country: data.loginUser.country, gender: data.loginUser.gender, language: data.loginUser.language, nickName: data.loginUser.nickName, province: data.loginUser.province, } } console.log(paramsV, '11111111111111111参数') commit('upDateLoginUserMount', data.loginUser) loginPhone(paramsV).then(back => { const { data: dataFromV } = back // headOrNot 1团长 2消费 const { headOrNot } = dataFromV let roleV; headOrNot == 1 ? roleV = 'head' : roleV = 'consumer' let objFormV = { token: dataFromV.token, userInfo: dataFromV, role: roleV } commit("login", objFormV); }) } else { console.log('登录2222222222222222222') // 展示加载框 Promise.all([getUserProfile(), getLoginCode()]).then((res) => { console.log(res, 'bbbbbbbbbbb') let obj = res[0], rev = res[1]; let params = { code: rev.code, encryptedData: obj.encryptedData, iv: obj.iv, userInfo: { avatarUrl: obj.userInfo.avatarUrl, city: obj.userInfo.city, country: obj.userInfo.country, gender: obj.userInfo.gender, language: obj.userInfo.language, nickName: obj.userInfo.nickName, province: obj.userInfo.province, } } commit('upDateLoginUserMount', obj.userInfo) dealerPhoneLogin({ code: rev.code, encryptedData: obj.encryptedData, iv: obj.iv, }).then(back => { console.log(bakc, 'postLogin 2222222') }) }) } }, wxPhoneLogin({ commit }, data) { console.log(data, 'wxPhoneLogin vuex') // return dealerPhoneLogin({ code: data.loginCodeData.code, encryptedData: data.wxPhoneDetail.encryptedData, iv: data.wxPhoneDetail.iv, }).then(back => { console.log(back, 'wxPhoneLogin dealerPhoneLogin vuex') uni.setStorageSync("token", back.data.token); commit("upDateRoleToken", { token: back.data.token }); commit("upDateUserInfoMount", data.form) }) } } }