prs_frontend/src/util/request.js
2022-11-10 11:31:43 +08:00

340 lines
6.6 KiB
JavaScript

// import axios from 'axios'
// var request = axios.create({
// baseURL: 'http://10.0.0.240:7800/api/v1',
// timeout: 5000
// })
// //拦截请求
// request.interceptors.request.use((config)=>{
// console.log(22222,config)
// return config
// })
// // 拦截响应
// request.interceptors.response.use((response)=>{
// return response
// },function (error){
// //对响应的错误做点什么
// return Promise.reject(error);
// }
// )
// export default request
/**
* 网络请求配置
*/
import axios from 'axios'
import { message } from 'antd'
import memoryUtils from './memoryUtils'
import storageUtils from './storageUtils'
// const baseURL = 'http://10.0.0.94:7800/api/v1'
// const baseURL = 'http://10.0.0.240:7800/api/v1'
// const baseURL = 'http://myip.legu.cc:7800/api/v1'
const baseURL = 'http://10.0.0.4:7800/api/v1'
axios.defaults.timeout = 600000
axios.defaults.baseURL = baseURL
/**
* http request 拦截器
*/
axios.interceptors.request.use(
(config) => {
let userInfo = memoryUtils.userInfo
const token = userInfo.token_type +" "+ userInfo.token || ""
if (config.url.indexOf('/login') == -1) {
config.data = JSON.stringify(config.data)
config.headers = {
'Content-Type': 'application/json',
'Authorization': token
}
} else {
let data = new FormData()
data.append('username', config.data.username)
data.append('password', config.data.password)
config.data = data
config.headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
}
return config
},
(error) => {
return Promise.reject(error)
}
)
/**
* http response 拦截器
*/
axios.interceptors.response.use(
(response) => {
if (response.data.errCode === 2) {
console.log('过期')
}
return response
},
(error) => {
console.log('请求出错:', error)
}
)
/**
* 封装get方法
* @param url 请求url
* @param params 请求参数
* @returns {Promise}
*/
export function get(url, params = {}) {
return new Promise((resolve, reject) => {
axios
.get(url, {
params: params,
})
.then((response) => {
landing(url, params, response.data)
resolve(response.data)
})
.catch((error) => {
msag(error)
// reject(error);
})
})
}
/**
* 封装post请求
* @param url
* @param data
* @returns {Promise}
*/
export function post(url, data) {
return new Promise((resolve, reject) => {
axios.post(url, data).then(
(response) => {
//关闭进度条
if (response) {
if (response.data.code === 200) {
resolve(response.data)
} else {
message.error(response.data.msg)
//登录信息过期
if(response.data.code === -5){
storageUtils.removerUser()
}
}
}
},
(err) => {
msag(err)
// reject(err);
}
)
})
}
export function hwy(url, data) {
return new Promise((resolve, reject) => {
// console.log(baseURL+url)
resolve(baseURL + url)
})
}
// 封装文件下载post请求
export function ExportPost(url, data) {
return new Promise((resolve, reject) => {
axios({
method: 'post',
url: url, //后端接口地址
responseType: 'blob', //bolb格式的请求方式
headers: {
//Authentication: getToken('Admin-Token') //请求头
'Content-Type': 'application/json',
},
data: data, //需要传给后端的请求参数体
})
.then((res) => {
console.log('文件导出', res)
const BLOB = res.data
const fileReader = new FileReader()
fileReader.readAsDataURL(BLOB) //对请求返回的文件进行处理
fileReader.onload = (e) => {
let a = document.createElement('a')
a.download = data.name + '.xlsx'
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
resolve(res.data)
})
.catch((err) => {
console.log(err.message)
})
})
}
/**
* 封装patch请求
* @param url
* @param data
* @returns {Promise}
*/
export function patch(url, data = {}) {
return new Promise((resolve, reject) => {
axios.patch(url, data).then(
(response) => {
resolve(response.data)
},
(err) => {
msag(err)
reject(err)
}
)
})
}
/**
* 封装put请求
* @param url
* @param data
* @returns {Promise}
*/
export function put(url, data = {}) {
return new Promise((resolve, reject) => {
axios.put(url, data).then(
(response) => {
resolve(response.data)
},
(err) => {
msag(err)
reject(err)
}
)
})
}
//统一接口处理,返回数据
export default function (fecth, url, param) {
let _data = ''
return new Promise((resolve, reject) => {
switch (fecth) {
case 'get':
// console.log('begin a get request,and url:', url)
get(url, param)
.then(function (response) {
resolve(response)
})
.catch(function (error) {
console.log('get request GET failed.', error)
reject(error)
})
break
case 'post':
post(url, param)
.then(function (response) {
resolve(response)
})
.catch(function (error) {
console.log('get request POST failed.', error)
reject(error)
})
break
case 'ExportPost':
ExportPost(url, param)
.then(function (response) {
resolve(response)
})
.catch(function (error) {
console.log('get request POST failed.', error)
reject(error)
})
break
case 'hwy':
hwy(url, param).then(function (response) {
// resolve(url)
resolve(baseURL + url)
})
break
case 'patch':
patch(url, param)
.then(function (response) {
resolve(response)
})
.catch(function (error) {
console.log('get request POST failed.', error)
reject(error)
})
break
default:
break
}
})
}
//失败提示
function msag(err) {
if (err && err.response) {
switch (err.response.status) {
case 400:
alert(err.response.data.error.details)
break
case 401:
alert('未授权,请登录')
break
case 403:
alert('拒绝访问')
break
case 404:
alert('请求地址出错')
break
case 408:
alert('请求超时')
break
case 500:
alert('服务器内部错误')
break
case 501:
alert('服务未实现')
break
case 502:
alert('网关错误')
break
case 503:
alert('服务不可用')
break
case 504:
alert('网关超时')
break
case 505:
alert('HTTP版本不受支持')
break
default:
}
}
}
/**
* 查看返回的数据
* @param url
* @param params
* @param data
*/
function landing(url, params, data) {
if (data.code === -1) {
}
}