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); }; }); }