You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
4.1 KiB

2 years ago
import urlConfig from './config.js'
// import store from '@/store/index'
const request = {}
request.globalRequest = (url, options = {}, power) => {
/*
1 == 不通过access_token校验的接口
2 == 文件下载接口列表
3 == 验证码登录 */
// switch (power){
// case 1:
// headers['Authorization'] = 'Basic a3N1ZGk6a3N1ZGk='
// break;
// case 2:
// headers['Authorization'] = 'Basic a3N1ZGlfcGM6a3N1ZGlfcGM='
// break;
// case 3:
// responseType = 'blob'
// break;
// default:
// headers['Authorization'] = `Bearer ${
// this.$store.getters.userInfo
// }`
// headers['TENANT-ID'] = this.$store.getters.userInfo.tenant_id
// break;
// }
2 years ago
let contentType = localStorage.token_type ? "application/json" : "application/x-www-form-urlencoded";
return uni.request({
url: url,
...options, //data,method...
header: {
"content-type": contentType,
"Authorization": localStorage.token_type,
'withCredentials': true,
// 'Blade-Auth':'bearer '+store.state.token,
'token_type': localStorage.token_type,
...options.header,
}
})
.then(res => {
if (res != null && res[1] != null) {
if (res[1].statusCode != null) {
let statusCode = res[1].statusCode.toString();
//状态码类型 2开头的全是成功
// let code = statusCode.substring(0, 1);
if (statusCode == '200') {
return res[1].data;
} else if (statusCode == '204') {
if (options.method == 'get') {
return null;
} else {
return res[1].data;
}
} else if (statusCode == '400') {
if (res[1].data.error) {
if (res[1].data.error.message) {
throw res[1].data.error.message;
}
} else if (res[1].data.errors) {
let errors = res[1].data.errors;
let errorMsg = '请求参数错误:\n';
let keys = Object.keys(errors);
for (var i = 0; i < keys.length; i++) {
let key = keys[i];
let value = errors[key];
errorMsg += i + 1 + ':' + value + '\n';
}
throw errorMsg;
}
} else if (statusCode == '404') {
if (res[1].data === '') {
throw '未找到接口';
} else {
throw res[1].data;
}
} else if (statusCode == '403') {
let message = res[1].data.error?.message;
if (message) {
let temp;
try {
temp = JSON.parse(message)
} catch (err) {
throw message;
}
if (temp) {
var hintError = temp.error;
var hintErrorDes = temp.error_description;
if (hintError == 'invalid_grant') {
if (hintErrorDes.includes('Invalid username or password!')) {
throw '用户名或密码错误';
} else if (hintErrorDes.includes(
'The user account has been locked out due to invalid login attempts'
)) {
throw "账号已被锁定,请稍后再试";
2 years ago
}
} else {
throw message;;
2 years ago
}
}
} else {
throw res[1].statusCode + "错误";
2 years ago
}
} else {
let message = res[1].data.error?.message;
if (message != undefined) {
throw res[1].data.error.message;
} else {
throw res[1].statusCode + "错误";
}
2 years ago
}
} else {
throw url + "返回的状态码类型为空"
2 years ago
}
} else {
throw url + "返回的res为空"
}
})
.catch(params => {
1 year ago
throw new Error("后台提示 : "+params);
2 years ago
})
}
export default request.globalRequest
// 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String。转换规则如下:
// 对于 GET 方法,会将数据转换为 query string。例如 { name: 'name', age: 18 } 转换后的结果是 name=name&age=18。
// 对于 POST 方法且 header['content-type'] 为 application/json 的数据,会进行 JSON 序列化。
// 对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。