import { ACCESS_TOKEN, USER_ID, FLAG } from '@/store/mutation-types' import storage from '@/utils/storage' import * as LoginApi from '@/api/login' // 登陆成功后执行 const loginSuccess = (commit, { token, buyerId, flag }) => { // 过期时间30天 const expiryTime = 30 * 86400 // 保存tokne和userId到缓存 storage.set(USER_ID, buyerId, expiryTime) storage.set(ACCESS_TOKEN, token, expiryTime) storage.set(FLAG, flag, expiryTime) // 记录到store全局变量 commit('SET_TOKEN', token) commit('SET_USER_ID', buyerId) commit('SET_FLAG', flag) } const user = { state: { // 用户认证token token: '', // 用户ID userId: null, // 用户标识 flag: null, }, mutations: { SET_TOKEN: (state, value) => { state.token = value }, SET_USER_ID: (state, value) => { state.userId = value }, SET_FLAG: (state, value) => { state.flag = value } }, actions: { // 用户登录 (普通登录: 输入手机号和验证码) Login({ commit }, data) { return new Promise((resolve, reject) => { LoginApi.login({ form: data }) .then(response => { const result = response.data loginSuccess(commit, result) resolve(response) }) .catch(reject) }) }, // 微信小程序一键授权登录 (获取用户基本信息) LoginMpWx({ commit }, data) { return new Promise((resolve, reject) => { // LoginApi.loginMpWx({ form: data }, { isPrompt: true }) LoginApi.quickLogin(data) .then(response => { const result = response.data uni.setStorageSync('user_info', result.buyer) loginSuccess(commit, result.buyer) resolve(response) }) .catch(reject) }) }, // 微信小程序一键授权登录 (授权手机号) LoginMpWxMobile({ commit }, data) { return new Promise((resolve, reject) => { LoginApi.loginMpWxMobile({ form: data }, { isPrompt: true }) .then(response => { const result = response.data loginSuccess(commit, result) resolve(response) }) .catch(reject) }) }, // 退出登录 Logout({ commit }, data) { const store = this return new Promise((resolve, reject) => { if (store.getters.userId > 0) { // 删除缓存中的tokne和userId storage.remove(USER_ID) storage.remove(ACCESS_TOKEN) // 记录到store全局变量 commit('SET_TOKEN', '') commit('SET_USER_ID', null) resolve() } }) } } } export default user