mirror of
https://github.com/ouqiang/gocron.git
synced 2024-04-21 12:31:58 +00:00
120 lines
2.5 KiB
Go
120 lines
2.5 KiB
Go
import axios from 'axios'
|
|
import {Message} from 'element-ui'
|
|
import router from '../router/index'
|
|
import store from '../store/index'
|
|
import Qs from 'qs'
|
|
|
|
const errorMessage = '加载失败, 请稍后再试'
|
|
// 成功状态码
|
|
const SUCCESS_CODE = 0
|
|
// 认证失败
|
|
const AUTH_ERROR_CODE = 401
|
|
// 应用未安装
|
|
const APP_NOT_INSTALL_CODE = 801
|
|
|
|
axios.defaults.baseURL = 'api'
|
|
axios.defaults.timeout = 10000
|
|
axios.defaults.responseType = 'json'
|
|
axios.interceptors.request.use(config => {
|
|
config.headers['Auth-Token'] = store.getters.user.token
|
|
return config
|
|
}, error => {
|
|
Message.error({
|
|
message: errorMessage
|
|
})
|
|
|
|
return Promise.reject(error)
|
|
})
|
|
|
|
axios.interceptors.response.use(data => {
|
|
return data
|
|
}, error => {
|
|
Message.error({
|
|
message: errorMessage
|
|
})
|
|
|
|
return Promise.reject(error)
|
|
})
|
|
|
|
function handle (promise, next) {
|
|
promise.then((res) => successCallback(res, next))
|
|
.catch((error) => failureCallback(error))
|
|
}
|
|
|
|
function checkResponseCode (code, msg) {
|
|
switch (code) {
|
|
// 应用未安装
|
|
case APP_NOT_INSTALL_CODE:
|
|
router.push('/install')
|
|
return false
|
|
// 认证失败
|
|
case AUTH_ERROR_CODE:
|
|
router.push('/user/login')
|
|
return false
|
|
}
|
|
if (code !== SUCCESS_CODE) {
|
|
Message.error({
|
|
message: msg
|
|
})
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
function successCallback (res, next) {
|
|
if (!checkResponseCode(res.data.code, res.data.message)) {
|
|
return
|
|
}
|
|
if (!next) {
|
|
return
|
|
}
|
|
next(res.data.data, res.data.code, res.data.message)
|
|
}
|
|
|
|
function failureCallback (error) {
|
|
Message.error({
|
|
message: '请求失败 - ' + error
|
|
})
|
|
}
|
|
|
|
export default {
|
|
get (uri, params, next) {
|
|
const promise = axios.get(uri, {params})
|
|
handle(promise, next)
|
|
},
|
|
|
|
batchGet (uriGroup, next) {
|
|
const requests = []
|
|
for (let item of uriGroup) {
|
|
let params = {}
|
|
if (item.params !== undefined) {
|
|
params = item.params
|
|
}
|
|
requests.push(axios.get(item.uri, {params}))
|
|
}
|
|
|
|
axios.all(requests).then(axios.spread(function (...res) {
|
|
const result = []
|
|
for (let item of res) {
|
|
if (!checkResponseCode(item.data.code, item.data.message)) {
|
|
return
|
|
}
|
|
result.push(item.data.data)
|
|
}
|
|
next(...result)
|
|
})).catch((error) => failureCallback(error))
|
|
},
|
|
|
|
post (uri, data, next) {
|
|
const promise = axios.post(uri, Qs.stringify(data), {
|
|
headers: {
|
|
post: {
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
}
|
|
}
|
|
})
|
|
handle(promise, next)
|
|
}
|
|
}
|