整合小程序库
This commit is contained in:
29
src/components/utils/http.js
Normal file
29
src/components/utils/http.js
Normal 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
|
||||
66
src/components/utils/modules.js
Normal file
66
src/components/utils/modules.js
Normal 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("登录失败,请联系管理员")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user