1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import config from "../config/index.js";
- import { showLoadingToast, showToast, closeToast } from "vant";
- import "vant/lib/toast/style/index";
- function getdata(data) {
- let text = "";
- for (const key in data) {
- text += key + "=" + data[key] + "&";
- }
- text ? (text = "?" + text) : "";
- text = text.replace(/&$/, "");
- return text;
- }
- export default function (ori) {
- let baseurl = config.base[ori.urlType || "ajax"];
- let url = baseurl + ori.url;
- let isEnd = false;
- let noToast = ori.noToast;
- let time = setTimeout(() => {
- clearTimeout(time);
- !isEnd &&
- !ori.noLoad &&
- showLoadingToast({
- message: "加载中...",
- forbidClick: true,
- duration: 0,
- });
- }, 300);
- return new Promise((resolve, reject) => {
- var xhttp;
- if (window.XMLHttpRequest) xhttp = new XMLHttpRequest();
- else if (window.ActiveXObject)
- xhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
- let method = ori.method.toUpperCase();
- if (method === "GET") url += getdata(ori.data || {});
- xhttp.open(method, url, true);
- xhttp.setRequestHeader(
- "Content-type",
- ori.header
- ? ori.header.contentType || "application/json"
- : "application/json"
- );
- xhttp.setRequestHeader(
- "Authorization",
- ori.header && ori.header.Authorization
- );
- method === "GET" ? xhttp.send() : xhttp.send(JSON.stringify(ori.data));
- xhttp.onreadystatechange = function () {
- if (this.readyState != 4) return;
- isEnd = true;
- closeToast();
- if (this.status != 200) {
- let t = JSON.parse(this.responseText || "{}");
- !noToast && showToast(t.message || "请求失败 " + this.status);
- reject(t);
- return;
- }
- let data = {};
- try {
- data =
- this.responseText !== "null"
- ? JSON.parse(this.responseText || "{}")
- : {};
- } catch (err) {
- !noToast && showToast("请求失败");
- console.error(err);
- reject(err);
- }
- if (data.code === 0 || ori.next) resolve(data.data);
- else reject(data);
- };
- });
- }
|