| | |
| | | const install = (Vue, vm) => { |
| | | // 是否正在刷新的标记 |
| | | let isRefreshing = false |
| | | // 重试队列,每一项将是一个待执行的函数形式 |
| | | let requests = [] |
| | | // 请求队列 |
| | | let requestAll = [] |
| | | |
| | | // 请求拦截器 |
| | | uni.$u.http.interceptors.request.use((config) => { |
| | | const Headtoken = vm.$store.state.token |
| | | if (Headtoken) { |
| | | config.header['token'] = Headtoken; |
| | | } |
| | | // const Headtoken = vm.$store.state.token |
| | | // if (Headtoken) { |
| | | config.header['token'] = 'eyJhbGciOiJIUzUxMiJ9.eyJpZCI6IjE4MDU1MTU5NDUzIiwiZXhwIjoxNzcwMTg3MDgxfQ.xoNzXq98cZQEAlCO3UeJU6zn5obIdoCWxWLRJumlj4AAzVeBNQosrVfxZMBfYOAZKB7qBcM_4JiWlDCEyL8hrg'; |
| | | // } |
| | | return config |
| | | }, config => { |
| | | return Promise.reject(config) |
| | |
| | | |
| | | // 响应拦截器 |
| | | uni.$u.http.interceptors.response.use((response) => { |
| | | // 登录过期 |
| | | if (response.data.code === 401) { |
| | | if (!isRefreshing) { // 是否已经执行刷新 |
| | | isRefreshing = true |
| | | uni.login({ |
| | | provider: 'weixin', |
| | | success: async function (loginRes) { |
| | | let { code } = loginRes; |
| | | uni.request({ |
| | | url: vm.$baseUrl + 'mobile/system/login', |
| | | method: "GET", |
| | | data: { code }, |
| | | success: (res) => { |
| | | isRefreshing = false |
| | | vm.$store.commit('setToken', res.data.data) |
| | | // 已经刷新了token,将所有队列中的请求进行重试 |
| | | requests.forEach(item => item(res.data.data)) |
| | | requests = [] |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | return new Promise((resolve) => { |
| | | // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行 |
| | | requests.push(token => { |
| | | response.config.header['eva-auth-token'] = token |
| | | resolve(uni.$u.http.request(response.config)); |
| | | }) |
| | | }) |
| | | } |
| | | // 接口业务报错 |
| | | if (response.data.code !== 200) { |
| | | uni.showToast({ |