- axios.config: 拦截登录过期响应,统一弹框后清除用户信息,防多次弹框 - app.js: chooseChip 改为越南 K 格式默认 10k,支持 localStorage 恢复 - bettingChips.js: 移除(逻辑已合并)
181 lines
4.3 KiB
JavaScript
181 lines
4.3 KiB
JavaScript
import axios from "axios"
|
|
import $store from "@/store"
|
|
import { encrypt, decrypt } from "@/utils/secret"
|
|
import { showDialog, closeDialog } from "vant"
|
|
|
|
let api = ""
|
|
|
|
// 登录失效统一处理(防止多 API 同时失败弹多个框)
|
|
let _authExpiredHandling = false
|
|
const handleAuthExpired = (res) => {
|
|
const msg = res && res.Msg
|
|
const isAuthExpired =
|
|
res &&
|
|
res.Success == 0 &&
|
|
(msg === "获取信息失败" ||
|
|
msg === "登录已过期" ||
|
|
msg === "token失效" ||
|
|
msg === "请重新登录")
|
|
if (!isAuthExpired) return false
|
|
if (_authExpiredHandling) return true
|
|
_authExpiredHandling = true
|
|
|
|
const cfg = $store.state.config
|
|
const Lang = cfg.$lang && cfg.$Type ? cfg.$lang[cfg.$Type] : {}
|
|
const title = Lang.tips || "提示"
|
|
const message = Lang.login_expired || "登录已过期,请重新登录"
|
|
|
|
let autoClose = null
|
|
showDialog({ title, message })
|
|
.then(() => {
|
|
clearTimeout(autoClose)
|
|
_authExpiredHandling = false
|
|
$store.commit("app/removeUserInfo")
|
|
})
|
|
.catch(() => {
|
|
_authExpiredHandling = false
|
|
$store.commit("app/removeUserInfo")
|
|
})
|
|
autoClose = setTimeout(() => {
|
|
closeDialog()
|
|
_authExpiredHandling = false
|
|
$store.commit("app/removeUserInfo")
|
|
}, 4000)
|
|
return true
|
|
}
|
|
const instance = axios.create({
|
|
timeout: 6000,
|
|
headers: {
|
|
"Content-Type": "application/json;charset=UTF-8"
|
|
}
|
|
})
|
|
|
|
//请求拦截器
|
|
instance.interceptors.request.use(
|
|
(config) => {
|
|
return config
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
//响应拦截器
|
|
instance.interceptors.response.use(
|
|
(response) => {
|
|
return response.data
|
|
},
|
|
(error) => {
|
|
console.log(error)
|
|
if (error.response) {
|
|
switch (error.response.status) {
|
|
case 401:
|
|
error.message = "未登录"
|
|
break
|
|
case 400:
|
|
error.message = "请求错误"
|
|
break
|
|
case 403:
|
|
error.message = "拒绝访问"
|
|
break
|
|
case 404:
|
|
error.message = `请求地址出错: ${error.response.config.url}`
|
|
break
|
|
case 408:
|
|
error.message = "请求超时"
|
|
break
|
|
case 500:
|
|
error.message = "服务器内部错误"
|
|
break
|
|
case 501:
|
|
error.message = "服务未实现"
|
|
break
|
|
case 502:
|
|
error.message = "网关错误"
|
|
break
|
|
case 503:
|
|
error.message = "服务不可用"
|
|
break
|
|
case 504:
|
|
error.message = "网关超时"
|
|
break
|
|
case 505:
|
|
error.message = "HTTP版本不受支持"
|
|
break
|
|
default:
|
|
error.message = "连接服务器异常"
|
|
}
|
|
} else {
|
|
error.message = "连接服务器失败"
|
|
}
|
|
return Promise.reject(error.message)
|
|
}
|
|
)
|
|
|
|
const config = (url) => {
|
|
instance.defaults.baseURL = url
|
|
return new Promise((resolve, reject) => {
|
|
instance
|
|
.get()
|
|
.then((res) => {
|
|
api = res.apiUrl
|
|
resolve(res)
|
|
})
|
|
.catch((err) => {
|
|
reject(err)
|
|
})
|
|
})
|
|
}
|
|
|
|
// 封装get
|
|
const get = (url, params, option = {}) => {
|
|
instance.defaults.baseURL = api || $store.state.config.apiUrl
|
|
if (option.responseType) {
|
|
instance.defaults.responseType = option.responseType
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
const language = $store.state.config.$Type
|
|
const encryptData = encrypt(
|
|
JSON.stringify({ ...params, language })
|
|
).toString()
|
|
instance
|
|
.get(url, {
|
|
encryptData
|
|
})
|
|
.then((res) => {
|
|
handleAuthExpired(res)
|
|
resolve(res)
|
|
})
|
|
.catch((err) => {
|
|
reject(err)
|
|
})
|
|
})
|
|
}
|
|
// 封装post
|
|
const post = (url, params, option = {}) => {
|
|
instance.defaults.baseURL = api || $store.state.config.apiUrl
|
|
if (option.responseType) {
|
|
instance.defaults.responseType = option.responseType
|
|
}
|
|
const language = $store.state.config.$Type
|
|
const encryptData = encrypt(
|
|
JSON.stringify({ ...params, language })
|
|
).toString()
|
|
return new Promise((resolve, reject) => {
|
|
instance
|
|
.post(url, {
|
|
encryptData
|
|
})
|
|
.then((res) => {
|
|
res.Data = res.Data ? JSON.parse(decrypt(res.Data)) : {}
|
|
handleAuthExpired(res)
|
|
resolve(res)
|
|
})
|
|
.catch((err) => {
|
|
reject(err)
|
|
})
|
|
})
|
|
}
|
|
|
|
export { get, post, config }
|