155 lines
4.1 KiB
JavaScript
155 lines
4.1 KiB
JavaScript
// 统一给参数
|
||
const dataObj = (url, params) => {
|
||
let options = params
|
||
// #ifdef APP-PLUS
|
||
let data = null; //业务数据
|
||
let terminal = 1 //终端类型,web:0,app:1
|
||
options = {
|
||
...params,
|
||
data,
|
||
terminal
|
||
}
|
||
// #endif
|
||
return options
|
||
}
|
||
const goLogin = () => {
|
||
console.log('token失效,request.js的 goLogin 方法输出');
|
||
uni.reLaunch({
|
||
url: '/pages/login/login'
|
||
})
|
||
}
|
||
// 请求错误处理
|
||
const checkError = (e, reject) => {
|
||
console.log(e,`未请求成功的接口,request.js的 checkError 方法输出`);
|
||
if (e.data) {
|
||
if (e.data.code) {
|
||
switch (Number(e.data.code)) {
|
||
case 4001:
|
||
goLogin()
|
||
break;
|
||
}
|
||
}
|
||
reject(e.data)
|
||
} else reject({msg:`接口错误,request.js的 checkError 方法输出`})
|
||
}
|
||
|
||
// 封装请求
|
||
const request = (method, url, options) => {
|
||
// console.log(`请求方法:${method},请求接口:${url},38行输出`);
|
||
let methods = '';
|
||
let headers = {};
|
||
switch (method) {
|
||
case 'get':
|
||
methods = 'GET'
|
||
headers = {
|
||
'Content-Type': 'application/json; charset=UTF-8',
|
||
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
|
||
}
|
||
break;
|
||
case 'post':
|
||
methods = 'POST'
|
||
headers = {
|
||
'Content-Type': 'application/json; charset=UTF-8',
|
||
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
|
||
}
|
||
break;
|
||
case 'postForm':
|
||
methods = 'POST'
|
||
headers = {
|
||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
||
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
|
||
}
|
||
break;
|
||
}
|
||
return new Promise((resolve, reject) => {
|
||
uni.request({
|
||
url: `${uni.getStorageSync('hostapi')}${url}`,
|
||
method: methods,
|
||
data: dataObj(url, options),
|
||
header: headers,
|
||
success: res => {
|
||
// console.log('反的结果===>',res);
|
||
if (res.statusCode == 200) {
|
||
if (res.data.code == 0) {
|
||
resolve(res.data)
|
||
} else {
|
||
resolve(res.data)
|
||
}
|
||
} else {
|
||
reject(res.data)
|
||
}
|
||
},
|
||
fail: e => {
|
||
checkError(e, reject)
|
||
},
|
||
complete: rest => {
|
||
uni.hideToast();
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
|
||
// 上传文件 封装请求
|
||
const uploadFile = (url, options) => {
|
||
let tempData = options || {}
|
||
uni.showLoading({title: "上传中..."})
|
||
return new Promise((resolve, reject) => {
|
||
uni.uploadFile({
|
||
url: `${uni.getStorageSync('hostapi')}${url}`,
|
||
filePath: tempData.file,
|
||
name: 'image',
|
||
fileType:'image',
|
||
formData: tempData,
|
||
header: {
|
||
'Content-Type': 'multipart/form-data;charset=UTF-8',
|
||
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
|
||
},
|
||
success: res => {
|
||
if (res.statusCode == 200) {
|
||
let temp = JSON.parse(res.data)
|
||
if (temp.code == 0) {
|
||
resolve(temp)
|
||
} else {
|
||
reject(temp)
|
||
uni.showToast({
|
||
title: temp.msg || '接口错误(' + temp.code + ')',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
} else {
|
||
uni.showToast({
|
||
title: `未知错误(${res.statusCode})`,
|
||
icon: 'none'
|
||
})
|
||
}
|
||
},
|
||
fail(e) {
|
||
reject(e.data)
|
||
},
|
||
complete: () => {
|
||
uni.hideToast();
|
||
}
|
||
});
|
||
})
|
||
}
|
||
|
||
|
||
export default {
|
||
get: (url, options) => {
|
||
return request('get', url, options)
|
||
},
|
||
// JOSN格式
|
||
post: (url, options) => {
|
||
return request('post', url, options)
|
||
},
|
||
// form-data格式
|
||
postForm: (url, options) => {
|
||
return request('postForm', url, options)
|
||
},
|
||
// 上传
|
||
upload: (url, options) => {
|
||
return uploadFile(url, options)
|
||
}
|
||
}
|