303 lines
6.6 KiB
JavaScript
303 lines
6.6 KiB
JavaScript
// #ifdef APP-PLUS
|
|
import appUpgrade from '@/common/appUpgrade.js';
|
|
// #endif
|
|
import config from "@/common/config.js"
|
|
let http = {
|
|
'setBaseUrl': (url) => {
|
|
if (url.charAt(url.length - 1) === "/") {
|
|
url = url.substr(0, url.length - 1)
|
|
}
|
|
http.baseUrl = url;
|
|
},
|
|
'header': {},
|
|
'beforeRequestFilter': (config) => {
|
|
return config
|
|
},
|
|
'beforeResponseFilter': (res) => {
|
|
return res
|
|
},
|
|
'afterResponseFilter': (successResult) => {},
|
|
'get': get,
|
|
'delete': deletE,
|
|
'post': post,
|
|
'put': put,
|
|
'request': request,
|
|
'uploadFile': uploadFile,
|
|
'downloadFile': downloadFile
|
|
}
|
|
|
|
|
|
function init(con) {
|
|
//url
|
|
let url = http.baseUrl;
|
|
if (url && con.url && !con.url.match(/^(http|https):\/\/([\w.]+\/?)\S*$/)) {
|
|
if (con.url.charAt(0) !== "/") {
|
|
con.url = "/" + con.url;
|
|
}
|
|
con.url = url.concat(con.url);
|
|
}
|
|
//header
|
|
if (http.header != undefined && http.header != null) {
|
|
if (!con.header) {
|
|
con.header = http.header;
|
|
} else {
|
|
Object.keys(http.header).forEach(function(key) {
|
|
con.header[key] = http.header[key]
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
function request(con) {
|
|
init(con);
|
|
let config = { //判断是否有以下属性没有就赋予默认值
|
|
url: con.url ? con.url : http.baseUrl,
|
|
data: con.data,
|
|
header: con.header,
|
|
method: con.method ? con.method : 'GET',
|
|
dataType: con.dataType ? con.dataType : 'json',
|
|
responseType: con.responseType ? con.responseType : 'text',
|
|
success: con.success ? (res) => {
|
|
http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
|
|
} : null,
|
|
fail: con.fail ? (res) => {
|
|
con.fail(res);
|
|
} : () => {
|
|
uni.showToast({
|
|
title: '请检查网络',
|
|
icon: 'none'
|
|
});
|
|
uni.hideLoading();
|
|
},
|
|
complete: con.complete ? (res) => {
|
|
con.complete(res);
|
|
} : (res) => {
|
|
if (!res.statusCode) {
|
|
uni.showToast({
|
|
title: '请求失败',
|
|
icon: 'none'
|
|
});
|
|
uni.hideLoading();
|
|
}
|
|
if (res.statusCode !== 200) {
|
|
uni.showToast({
|
|
title: '请求失败',
|
|
icon: 'none'
|
|
});
|
|
uni.hideLoading();
|
|
}
|
|
if (res.statusCode == 200) {
|
|
if (res.data.code == 401) { //登录过期
|
|
// uni.showToast({
|
|
// title: '登录已过期,请重新登录',
|
|
// icon: 'none'
|
|
// });
|
|
// uni.hideLoading();
|
|
// uni.reLaunch({
|
|
// url:'/pages/wxindex/index'
|
|
// })
|
|
}
|
|
// #ifdef APP-PLUS
|
|
if (res.data.code == 601) { //强制拉起升级
|
|
request({
|
|
url: '/common/getVersion',
|
|
success: (res) => {
|
|
appUpgrade.init({
|
|
titleText: '版本更新'+res.data.data.version,
|
|
packageUrl:res.data.data.url,
|
|
content: res.data.data.content,
|
|
forceUpgrade:true
|
|
});
|
|
appUpgrade.show();
|
|
}
|
|
});
|
|
}
|
|
// #endif
|
|
else if (res.data.code && res.data.code !== 200) { //这里code是自己的服务器正确标识
|
|
uni.showToast({
|
|
title: res.data.msg,
|
|
icon: 'none',
|
|
position:'top'
|
|
});
|
|
}
|
|
uni.hideLoading();
|
|
}
|
|
uni.stopPullDownRefresh();
|
|
}
|
|
}
|
|
const AUTH_TOKEN = ["Authorization","device","version"];
|
|
for (var i = 0; i < AUTH_TOKEN.length; i++) {
|
|
if (uni.getStorageSync(AUTH_TOKEN[i])) {
|
|
http.header[AUTH_TOKEN[i]] = uni.getStorageSync(AUTH_TOKEN[i]);
|
|
}
|
|
}
|
|
return uni.request(http.beforeRequestFilter(config));
|
|
}
|
|
|
|
function get(url, con, success) {
|
|
let conf = {};
|
|
if (con && typeof con == 'function') {
|
|
if (success && typeof success == 'object') {
|
|
conf = success;
|
|
}
|
|
conf.success = con
|
|
} else {
|
|
if (con && typeof con == 'object') {
|
|
conf = con;
|
|
}
|
|
conf.success = success;
|
|
}
|
|
|
|
if (url) {
|
|
conf.url = url
|
|
}
|
|
conf.method = "GET";
|
|
return request(conf);
|
|
}
|
|
|
|
function deletE(url, con, success) {
|
|
let conf = {};
|
|
if (con && typeof con == 'function') {
|
|
if (success && typeof success == 'object') {
|
|
conf = success;
|
|
}
|
|
conf.success = con
|
|
} else {
|
|
if (con && typeof con == 'object') {
|
|
conf = con;
|
|
}
|
|
conf.success = success;
|
|
}
|
|
|
|
if (url) {
|
|
conf.url = url
|
|
}
|
|
conf.method = "DELETE";
|
|
return request(conf);
|
|
}
|
|
|
|
function post(url, data, con, success) {
|
|
let conf = {};
|
|
if (con && typeof con == 'function') {
|
|
if (success && typeof success == 'object') {
|
|
conf = success
|
|
}
|
|
conf.success = con;
|
|
} else {
|
|
if (con && typeof con == 'object') {
|
|
conf = con;
|
|
}
|
|
conf.success = success;
|
|
}
|
|
if (url) {
|
|
conf.url = url
|
|
}
|
|
if (data) {
|
|
conf.data = data
|
|
}
|
|
conf.method = "POST";
|
|
return request(conf);
|
|
}
|
|
|
|
function put(url, data, con, success) {
|
|
let conf = {};
|
|
if (con && typeof con == 'function') {
|
|
if (success && typeof success == 'object') {
|
|
conf = success
|
|
}
|
|
conf.success = con;
|
|
} else {
|
|
if (con && typeof con == 'object') {
|
|
conf = con;
|
|
}
|
|
conf.success = success;
|
|
}
|
|
if (url) {
|
|
conf.url = url
|
|
}
|
|
if (data) {
|
|
conf.data = data
|
|
}
|
|
conf.method = "PUT";
|
|
return request(conf);
|
|
}
|
|
|
|
function uploadFile(con) {
|
|
init(con);
|
|
console.log("========================")
|
|
console.log("========================")
|
|
console.log("========================")
|
|
console.error(con.url)
|
|
console.error(con.url)
|
|
console.error(con.url)
|
|
console.error(con.url)
|
|
let config = {
|
|
url: con.url ? con.url : http.baseUrl,
|
|
files: con.files,
|
|
filesType: con.filesType,
|
|
filePath: con.filePath,
|
|
name: con.name,
|
|
header: con.header,
|
|
formData: con.formData,
|
|
success: con.success ? (res) => {
|
|
http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
|
|
} : null,
|
|
fail: con.fail ? (res) => {
|
|
con.fail(res);
|
|
} : null,
|
|
complete: con.complete ? (res) => {
|
|
con.complete(res);
|
|
} : null
|
|
}
|
|
const AUTH_TOKEN = ["Authorization","device","version"];
|
|
for (var i = 0; i < AUTH_TOKEN.length; i++) {
|
|
if (uni.getStorageSync(AUTH_TOKEN[i])) {
|
|
http.header[AUTH_TOKEN[i]] = uni.getStorageSync(AUTH_TOKEN[i]);
|
|
}
|
|
}
|
|
return uni.uploadFile(http.beforeRequestFilter(config));
|
|
}
|
|
|
|
function downloadFile(con) {
|
|
init(con);
|
|
let config = {
|
|
url: con.url ? con.url : http.baseUrl,
|
|
header: con.header,
|
|
success: con.success ? (res) => {
|
|
http.afterResponseFilter(con.success(http.beforeResponseFilter(res)));
|
|
} : null,
|
|
fail: con.fail ? (res) => {
|
|
con.fail(res);
|
|
} : null,
|
|
complete: con.complete ? (res) => {
|
|
con.complete(res);
|
|
} : null
|
|
}
|
|
return uni.downloadFile(http.beforeRequestFilter(config));
|
|
}
|
|
// 使用
|
|
//POST
|
|
// this.$http.request({
|
|
// url: '/xxx',
|
|
// method: 'POST',
|
|
// data:JSON.stringify({id:111}),
|
|
// success: (res) => {
|
|
// if (res.data.code == 200) {
|
|
//
|
|
// }
|
|
// }
|
|
// });
|
|
//GET
|
|
// this.$http.request({
|
|
// url: '/xxx?id=111',
|
|
// success: (res) => {
|
|
// if (res.data.code == 200) {
|
|
//
|
|
// }
|
|
// }
|
|
// });
|
|
// 地址及配置
|
|
http.setBaseUrl(config.getBaseApiUrl()); //在线服务器
|
|
// http.setBaseUrl("http://192.168.0.105:8080"); //离线服务器
|
|
export default http
|