|
|
import {
|
|
|
go,
|
|
|
back,
|
|
|
showModal,
|
|
|
setStorageSync,
|
|
|
getStorageSync,
|
|
|
loading,
|
|
|
} from "./traoAPI";
|
|
|
import { WCUserLogin } from "./Interface";
|
|
|
import Taro from "@tarojs/taro";
|
|
|
import formdata from "./wxFormdata/formData";
|
|
|
|
|
|
import store from "../store";
|
|
|
import { tokenRefresh } from "../store/features/userInfo";
|
|
|
|
|
|
const global = store.getState().globalStore;
|
|
|
const global_requestUrlList = []; // 全局:正在请求的url地址,防止多次点击
|
|
|
|
|
|
// api调用失败重试次数
|
|
|
let api_retry_count = 0;
|
|
|
|
|
|
export const Ajax = (params) => {
|
|
|
const app = Taro.getApp();
|
|
|
const domain = global.domain;
|
|
|
// Taro.showLoading({
|
|
|
// title: "请求中...",
|
|
|
// mask: true,
|
|
|
// });
|
|
|
|
|
|
const whiteListLoading = [""]; // loading
|
|
|
|
|
|
// 防止多次点击
|
|
|
const requestUrlList = global_requestUrlList;
|
|
|
const whiteList = []; // 白名单:不自动重新请求
|
|
|
if (
|
|
|
requestUrlList.indexOf(params.url) > -1 &&
|
|
|
whiteList.indexOf(params.url) < 0
|
|
|
) {
|
|
|
return;
|
|
|
} else {
|
|
|
requestUrlList.push(params.url);
|
|
|
}
|
|
|
return new Promise((reslove, reject) => {
|
|
|
let token = getStorageSync("token");
|
|
|
Taro.request({
|
|
|
url: domain + params.url,
|
|
|
method: params.method || "GET",
|
|
|
header: {
|
|
|
Authorization: "Bearer " + token,
|
|
|
...params.header,
|
|
|
},
|
|
|
data: params.data,
|
|
|
success(res) {
|
|
|
console.log("res", res);
|
|
|
if (res.data.code == 401 || res.data.code == 403) {
|
|
|
// 自动重新登录
|
|
|
Taro.removeStorageSync("token");
|
|
|
loginReload(params);
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
if (res.statusCode !== 200) {
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: String("错误码:" + res.statusCode),
|
|
|
showCancel: false,
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (res.data.code === 500) {
|
|
|
let msg =
|
|
|
typeof res.data.msg == "string"
|
|
|
? res.data.msg
|
|
|
: "系统异常,请联系管理人员";
|
|
|
if (msg == "请不要操作太快哦") {
|
|
|
reject(res);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: String(res.data.msg),
|
|
|
showCancel: false,
|
|
|
});
|
|
|
// reject(res);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (requestUrlList.length > 0) {
|
|
|
requestUrlList.splice(requestUrlList.indexOf(params.url), 1);
|
|
|
}
|
|
|
reslove(res);
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.log(err);
|
|
|
go("/pages/errorpage/errorpage");
|
|
|
// Taro.showModal({
|
|
|
// title: "提示",
|
|
|
// content: "请检查网络是否连接",
|
|
|
// showCancel: false,
|
|
|
// });
|
|
|
},
|
|
|
complete() {
|
|
|
if (requestUrlList.length === 0) {
|
|
|
Taro.hideLoading();
|
|
|
}
|
|
|
|
|
|
// const requestUrlList = global_requestUrlList;
|
|
|
// const newRequestUrlList = requestUrlList.splice(
|
|
|
// requestUrlList.indexOf(params.url),
|
|
|
// 1
|
|
|
// );
|
|
|
},
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
|
|
|
export const AjaxUploadFile = (params, formData) => {
|
|
|
const app = Taro.getApp();
|
|
|
const domain = global.domain;
|
|
|
Taro.showLoading({
|
|
|
title: "请求中...",
|
|
|
mask: true,
|
|
|
});
|
|
|
return new Promise((reslove, reject) => {
|
|
|
let token = getStorageSync("token");
|
|
|
Taro.uploadFile({
|
|
|
filePath: params.filePath, // 上传文件地址
|
|
|
name: params.name || "file", // 上传文件字段
|
|
|
url: domain + params.url,
|
|
|
formData: {
|
|
|
...formData,
|
|
|
},
|
|
|
header: {
|
|
|
Authorization: "Bearer " + token,
|
|
|
...params.header,
|
|
|
},
|
|
|
success(res) {
|
|
|
let o = JSON.parse(res.data);
|
|
|
if (res.statusCode !== 200) {
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: "上传出错",
|
|
|
showCancel: false,
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
if (o.code !== 200) {
|
|
|
let msg =
|
|
|
typeof o.msg == "string" ? o.msg : "系统异常,请联系管理人员";
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: msg,
|
|
|
showCancel: false,
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
reslove(o);
|
|
|
},
|
|
|
fail() {
|
|
|
go("/pages/errorpage/errorpage");
|
|
|
// Taro.showModal({
|
|
|
// title: "提示",
|
|
|
// content: "请检查网络是否连接",
|
|
|
// showCancel: false,
|
|
|
// });
|
|
|
},
|
|
|
complete() {
|
|
|
Taro.hideLoading();
|
|
|
},
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
|
|
|
export const AjaxFormData = (params) => {
|
|
|
const app = Taro.getApp();
|
|
|
const domain = global.domain;
|
|
|
|
|
|
// 防止多次点击
|
|
|
const requestUrlList = global_requestUrlList;
|
|
|
const whiteList = ["/Api/MessageList"];
|
|
|
if (
|
|
|
requestUrlList.indexOf(params.url) > -1 &&
|
|
|
whiteList.indexOf(params.url) < 0
|
|
|
) {
|
|
|
return;
|
|
|
} else {
|
|
|
requestUrlList.push(params.url);
|
|
|
}
|
|
|
return new Promise((reslove, reject) => {
|
|
|
let token = getStorageSync("token");
|
|
|
Taro.request({
|
|
|
url: domain + params.url,
|
|
|
method: params.method || "GET",
|
|
|
header: {
|
|
|
Authorization: "Bearer " + token,
|
|
|
...params.header,
|
|
|
"content-type": params.data.contentType,
|
|
|
},
|
|
|
data: params.data.buffer,
|
|
|
success(res) {
|
|
|
if (res.data.code == 401 || res.data.code == 403) {
|
|
|
// 自动重新登录
|
|
|
Taro.removeStorageSync("token");
|
|
|
loginReload(params);
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
if (res.statusCode !== 200) {
|
|
|
Taro.showModal({
|
|
|
t2: String("错误码:" + res.statusCode),
|
|
|
showCancel: false,
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
if (res.data.code !== 200) {
|
|
|
let msg =
|
|
|
typeof res.data.msg == "string"
|
|
|
? res.data.msg
|
|
|
: "系统异常,请联系管理人员";
|
|
|
if (msg == "请不要操作太快哦") {
|
|
|
reject(res);
|
|
|
return false;
|
|
|
}
|
|
|
const noTipsCodes = [5001, 5002, 5003];
|
|
|
if (noTipsCodes.indexOf(res.data.code) == -1) {
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: msg,
|
|
|
showCancel: false,
|
|
|
}).then(() => {
|
|
|
reject(res);
|
|
|
if (
|
|
|
res.data.code == 401 ||
|
|
|
res.data.code == 403 ||
|
|
|
res.data.msg === "登录状态已过期"
|
|
|
) {
|
|
|
// 自动重新登录
|
|
|
Taro.removeStorageSync("token");
|
|
|
loginReload(params);
|
|
|
return;
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
reject(res);
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
reslove(res);
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.log(err);
|
|
|
go("/pages/errorpage/errorpage");
|
|
|
// Taro.showModal({
|
|
|
// title: "提示",
|
|
|
// content: "请检查网络是否连接",
|
|
|
// showCancel: false,
|
|
|
// });
|
|
|
},
|
|
|
complete() {
|
|
|
// Taro.hideLoading();
|
|
|
const requestUrlList = global_requestUrlList;
|
|
|
const newRequestUrlList = requestUrlList.splice(
|
|
|
requestUrlList.indexOf(params.url),
|
|
|
1
|
|
|
);
|
|
|
},
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// 自动重新登录后,重新发起上一个请求
|
|
|
const AjaxReloadAPI = async (_params) => {
|
|
|
if (api_retry_count === 0) {
|
|
|
Ajax(_params);
|
|
|
}
|
|
|
if (api_retry_count < 3) {
|
|
|
api_retry_count = api_retry_count + 1;
|
|
|
Ajax(_params);
|
|
|
} else {
|
|
|
api_retry_count = 0; // 清空重新调用次数,
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: "接口请求失败,请联系管理员",
|
|
|
showCancel: false,
|
|
|
}).then((res) => {});
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 重新登陆后,发起上一个请求
|
|
|
const loginReload = async (_params) => {
|
|
|
Taro.showLoading({
|
|
|
title: "请求中...",
|
|
|
mask: true,
|
|
|
});
|
|
|
const { code } = await Taro.login();
|
|
|
const { data } = await Ajax({
|
|
|
// url: "/wx/user/login",
|
|
|
url: "/user/login?code=" + code,
|
|
|
data: { code: code },
|
|
|
method: "POST",
|
|
|
});
|
|
|
Taro.hideLoading();
|
|
|
if (data.code === 200) {
|
|
|
setStorageSync("isWelcome", true);
|
|
|
setStorageSync("mobile", data.data.mobile);
|
|
|
store.dispatch(tokenRefresh(data.data));
|
|
|
|
|
|
Ajax(_params);
|
|
|
} else {
|
|
|
Taro.showModal({
|
|
|
title: "提示",
|
|
|
content: "登录已过期,请重新登录",
|
|
|
showCancel: false,
|
|
|
}).then((res) => {
|
|
|
Taro.removeStorageSync("token");
|
|
|
Taro.clearStorage(); // 清空所有缓存
|
|
|
Taro.navigateTo({
|
|
|
url: "/pages/initiate/initiate",
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
};
|