整合小程序库

This commit is contained in:
aixianling
2022-06-29 16:41:40 +08:00
parent 0b83cec78b
commit 2ef633a0c8
7 changed files with 133 additions and 138 deletions

View File

@@ -0,0 +1,29 @@
import axios from 'axios'
import adapter from 'axios-miniprogram-adapter'
const instance = axios.create({
timeout: 600000,
withCredentials: true,
adapter
})
const getToken = () => {
let vuex = uni.getStorageSync("vuex")
return !!vuex ? JSON.parse(vuex).token : null
}
const source = axios.CancelToken.source();
instance.interceptors.request.use(config => {
if (config.withoutToken) {
return config
} else if (getToken()) {
config.headers["Authorization"] = getToken()
} else {
config.cancelToken = source.token
source.cancel("用户未验证,取消请求:" + config.url)
}
return config
}, err => {
console.error(err)
return Promise.reject(err)
})
export default instance

View File

@@ -0,0 +1,66 @@
import http from "./http";
import Vue from "vue";
/**
* 用户登录信息
*/
export const user = {
state: () => ({}),
mutations: {
setUser(state, user) {
for (const key in user) {
Vue.set(state, key, user[key])
}
},
},
actions: {
getUserInfo({commit}) {
//获取企业微信后台账号信息
//党员认证状态 partyStatusForWX:0、未认证 1、认证中 2、已认证
return http.post("/app/appwechatuser/check").then(res => {
if (res?.code == 0) {
commit('setUser', res.data)
return Promise.all([])
}
})
},
getCode({dispatch}, count = 0) {
if (count > 3) {
return Promise.reject("无法获取code")
} else return new Promise((resolve, reject) => {
uni.login({
success: res => {
if (res?.code) {
resolve(res.code);
} else {
reject(res);
}
},
fail: () => resolve(dispatch("getCode", ++count))
})
})
},
getToken({commit}, code) {
if (code) {
return http.post("/auth/wechat-con/token", {code}, {
headers: {"Authorization": "Basic d2VjaGF0OndlY2hhdA=="},
withoutToken: true
}).then(res => {
if (res?.access_token) {
const token = [res?.token_type, res?.access_token].join(" ").trim()
commit("setToken", token)
return token
} else {
uni.showToast({title: res?.msg})
return Promise.resolve(res?.msg)
}
})
} else return Promise.reject("缺少登录code")
},
autoLogin({dispatch}, count = 0) {
if (count <= 3) {
return dispatch("getCode").then(code => dispatch("getToken", code).catch(() => dispatch("autoLogin", ++count)))
} else return Promise.reject("登录失败,请联系管理员")
}
}
}