|
@@ -1,163 +1,165 @@
|
|
|
import axios from "axios";
|
|
|
import {
|
|
|
- UniAdapter
|
|
|
+ UniAdapter
|
|
|
} from 'uniapp-axios-adapter'
|
|
|
import store from '@/store'
|
|
|
import {
|
|
|
- getAccessToken,
|
|
|
- setAccessToken,
|
|
|
- setRefreshToken,
|
|
|
- refreshToken,
|
|
|
- isRefreshRequest
|
|
|
+ getAccessToken,
|
|
|
+ setAccessToken,
|
|
|
+ setRefreshToken,
|
|
|
+ refreshToken,
|
|
|
+ isRefreshRequest
|
|
|
} from "./auth"
|
|
|
|
|
|
// 每次请求都创建一个新的实例
|
|
|
const instance = axios.create({
|
|
|
- // baseURL: "https://test.api.chelvc.com",
|
|
|
- baseURL: "http://192.168.68.77:11000",
|
|
|
- timeout: 10000,
|
|
|
- adapter: UniAdapter
|
|
|
+ // baseURL: "https://test.api.chelvc.com",
|
|
|
+ // baseURL: "http://192.168.68.77:11000",
|
|
|
+ baseURL: "https://358175z5l5.yicp.fun",
|
|
|
+ timeout: 10000,
|
|
|
+ adapter: UniAdapter
|
|
|
});
|
|
|
|
|
|
instance.interceptors.request.use((config) => {
|
|
|
- uni.showLoading({
|
|
|
- title: '加载中'
|
|
|
- })
|
|
|
- // 带上token 和其他请求头信息
|
|
|
- if (store.getters.accessToken) {
|
|
|
- config.headers['Authorization'] = `Bearer ${getAccessToken()}`
|
|
|
- }
|
|
|
- config.headers = {
|
|
|
- ...config.headers,
|
|
|
- platform: store.getters.app.system.osName.toUpperCase(),
|
|
|
- terminal: 'APPLET', // TODO:
|
|
|
- version: store.getters.app.system.appVersion.toUpperCase(),
|
|
|
- // scope: store.getters.scope,
|
|
|
- device: store.getters.app.system.deviceId,
|
|
|
- timestamp: new Date().getTime()
|
|
|
- }
|
|
|
- return config
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中'
|
|
|
+ })
|
|
|
+ // 带上token 和其他请求头信息
|
|
|
+ if (store.getters.accessToken) {
|
|
|
+ config.headers['Authorization'] = `Bearer ${getAccessToken()}`
|
|
|
+ }
|
|
|
+ console.log("@@@@config",config)
|
|
|
+ config.headers = {
|
|
|
+ ...config.headers,
|
|
|
+ platform: store.getters.app.system.osName.toUpperCase(),
|
|
|
+ terminal: 'APPLET', // TODO:
|
|
|
+ version: store.getters.app.system.appVersion.toUpperCase(),
|
|
|
+ // scope: store.getters.scope,
|
|
|
+ device: store.getters.app.system.deviceId,
|
|
|
+ timestamp: new Date().getTime()
|
|
|
+ }
|
|
|
+ return config
|
|
|
})
|
|
|
|
|
|
instance.interceptors.response.use(async (res) => {
|
|
|
- uni.hideLoading()
|
|
|
- const {
|
|
|
- code,
|
|
|
- data,
|
|
|
- message
|
|
|
- } = res.data
|
|
|
- if (data && data.accessToken) {
|
|
|
- setAccessToken(data.accessToken)
|
|
|
- }
|
|
|
- if (data && data.refreshToken) {
|
|
|
- setRefreshToken(data.refreshToken)
|
|
|
- }
|
|
|
- // 未知错误
|
|
|
- if (code === 'ERROR') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'未知错误'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 请求错误
|
|
|
- if (code === 'BAD_REQUEST') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'请求异常'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 拒绝访问
|
|
|
- if (code === 'FORBIDDEN') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'拒绝访问'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- // 请求参数异常
|
|
|
- if (code === 'PARAMETER_INVALID') {
|
|
|
- const errorTextList = Object.keys(res.data.data).map(key => {
|
|
|
- return res.data.data[key]
|
|
|
- })
|
|
|
- uni.showToast({
|
|
|
- title: errorTextList.join(','),
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 访问资源异常
|
|
|
- if (code === 'UNAVAILABLE') {
|
|
|
- uni.showToast({
|
|
|
- title: `${message ? message :'访问资源不可用'}`,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- // 未登录
|
|
|
- if (code === 'UNAUTHORIZED') {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // 身份切换
|
|
|
- if (code === 'SCOPE_CHANGED') {
|
|
|
- uni.reLaunch({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- uni.showToast({
|
|
|
- title: '您的身份信息已切换',
|
|
|
- icon: 'none',
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- if (code === 'TOKEN_CHANGED') {
|
|
|
- uni.showModal({
|
|
|
- title: '提示',
|
|
|
- content: res.data.messsage,
|
|
|
- showCancel: false,
|
|
|
- success: (res) => {
|
|
|
- if (res.confirm) {
|
|
|
- // 小程序用户跳转到我的页面 , 登录状态为未登录
|
|
|
+ uni.hideLoading()
|
|
|
+ const {
|
|
|
+ code,
|
|
|
+ data,
|
|
|
+ message
|
|
|
+ } = res.data
|
|
|
+ if (data && data.accessToken) {
|
|
|
+ setAccessToken(data.accessToken)
|
|
|
+ }
|
|
|
+ if (data && data.refreshToken) {
|
|
|
+ setRefreshToken(data.refreshToken)
|
|
|
+ }
|
|
|
+ // 未知错误
|
|
|
+ if (code === 'ERROR') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message :'未知错误'}`,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ // 请求错误
|
|
|
+ if (code === 'BAD_REQUEST') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message :'请求异常'}`,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ // 拒绝访问
|
|
|
+ if (code === 'FORBIDDEN') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message :'拒绝访问'}`,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 请求参数异常
|
|
|
+ if (code === 'PARAMETER_INVALID') {
|
|
|
+ const errorTextList = Object.keys(res.data.data).map(key => {
|
|
|
+ return res.data.data[key]
|
|
|
+ })
|
|
|
+ uni.showToast({
|
|
|
+ title: errorTextList.join(','),
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ // 访问资源异常
|
|
|
+ if (code === 'UNAVAILABLE') {
|
|
|
+ uni.showToast({
|
|
|
+ title: `${message ? message :'访问资源不可用'}`,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 未登录
|
|
|
+ if (code === 'UNAUTHORIZED') {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/login/index'
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ // 身份切换
|
|
|
+ if (code === 'SCOPE_CHANGED') {
|
|
|
+ uni.reLaunch({
|
|
|
+ url: '/pages/login/index'
|
|
|
+ })
|
|
|
+ uni.showToast({
|
|
|
+ title: '您的身份信息已切换',
|
|
|
+ icon: 'none',
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ if (code === 'TOKEN_CHANGED') {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: res.data.messsage,
|
|
|
+ showCancel: false,
|
|
|
+ success: (res) => {
|
|
|
+ if (res.confirm) {
|
|
|
+ // 小程序用户跳转到我的页面 , 登录状态为未登录
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
- // token过期处理
|
|
|
- if (code === 'TOKEN_EXPIRED' && !isRefreshRequest(res.config)) {
|
|
|
- // 刷新token
|
|
|
- const isSuccess = await refreshToken()
|
|
|
- if (isSuccess) {
|
|
|
- // 重新请求
|
|
|
- instance.config.headers.authorization = `Bearer ${getAccessToken()}`
|
|
|
- const resp = await instance.request(res.config)
|
|
|
- return resp
|
|
|
- } else {
|
|
|
- // 无权限
|
|
|
- store.commit('SET_ACCESS_TOKEN', '')
|
|
|
- store.commit('SET_REFRESH_TOKEN', '')
|
|
|
- uni.showModal({
|
|
|
- title: '提示',
|
|
|
- content: "您的登录信息已过期,请重新登录",
|
|
|
- showCancel: false,
|
|
|
- success: (res) => {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/login/index'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- return res.data
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ // token过期处理
|
|
|
+ if (code === 'TOKEN_EXPIRED' && !isRefreshRequest(res.config)) {
|
|
|
+ // 刷新token
|
|
|
+ const isSuccess = await refreshToken()
|
|
|
+ if (isSuccess) {
|
|
|
+ // 重新请求
|
|
|
+ instance.config.headers.authorization = `Bearer ${getAccessToken()}`
|
|
|
+ const resp = await instance.request(res.config)
|
|
|
+ return resp
|
|
|
+ } else {
|
|
|
+ // 无权限
|
|
|
+ store.commit('SET_ACCESS_TOKEN', '')
|
|
|
+ store.commit('SET_REFRESH_TOKEN', '')
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: "您的登录信息已过期,请重新登录",
|
|
|
+ showCancel: false,
|
|
|
+ success: (res) => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/login/index'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- return res.data
|
|
|
+ }
|
|
|
+ return res.data
|
|
|
}, (err) => {
|
|
|
- console.log("->", err)
|
|
|
- uni.hideLoading()
|
|
|
+ console.log("->", err)
|
|
|
+ uni.hideLoading()
|
|
|
});
|
|
|
|
|
|
-export default instance;
|
|
|
+export default instance;
|