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.
77 lines
1.5 KiB
77 lines
1.5 KiB
import urlConfig from '@/config/index.js'
|
|
import checkError from "./error.js"
|
|
import { uploadOne, uploadImage} from "./upload.js"
|
|
|
|
const {
|
|
url_config
|
|
} = urlConfig;
|
|
|
|
export {
|
|
uploadOne,
|
|
uploadImage
|
|
}
|
|
|
|
export default {
|
|
request: http(),
|
|
// 带加载框的请求
|
|
_request: http(true)
|
|
}
|
|
|
|
function isUrl(url) {
|
|
return /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/.test(url)
|
|
}
|
|
|
|
export function http(showLoading, loadingText="正在加载中") {
|
|
return function(url, method = 'GET', data = {}, type = 'form') {
|
|
let realData = data;
|
|
let realUrl = url
|
|
var header = {};
|
|
if (type == 'json') {
|
|
header['Content-Type'] = 'application/json';
|
|
} else if (type == 'form') {
|
|
header['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
if (showLoading) {
|
|
uni.showLoading({
|
|
title: loadingText,
|
|
mask: true
|
|
})
|
|
}
|
|
uni.request({
|
|
url: isUrl(realUrl) ? realUrl : (url_config + realUrl),
|
|
method,
|
|
dataType: 'json',
|
|
header,
|
|
data: realData,
|
|
success: (res) => {
|
|
if (showLoading) {
|
|
uni.hideLoading();
|
|
}
|
|
if (!(res.statusCode === 200)) {
|
|
checkError(res.statusCode, res);
|
|
reject(res)
|
|
return
|
|
}
|
|
if (res.data.code == 200) {
|
|
resolve(res.data);
|
|
} else {
|
|
checkError(res.data.code, res);
|
|
reject(res.data)
|
|
}
|
|
},
|
|
fail(err) {
|
|
if (showLoading) {
|
|
uni.hideLoading();
|
|
}
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: err.errMsg
|
|
})
|
|
checkError(-1, err);
|
|
reject(err)
|
|
}
|
|
});
|
|
})
|
|
}
|
|
}
|
|
|