【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本

import $g from "./sg";

//常用路径________________________________________________________________________________

const API_ROOT_URL = "https://www.shuzhiqiang.com/api"; //生产的IP

//一些前提条件和方法________________________________________________________________________________
//跳转到登录页面
const jumpLoginPage = () => {
	Object.keys(localStorage).forEach(k => delete localStorage[k]); //清空对象键、值
	if (getCurrentPages()[0].route !== '/pages/login/index') {
		uni.redirectTo({
			url: `/pages/login/index?url=${encodeURIComponent(location.href)}`
		});
	}
}
// 请求报错提示
const errAlert = (url, d) => sgAlert(`【可能是后端报错】\n\r【接口地址】${url}\n\r【返回报文】${JSON.stringify(d, null, 4)}`);
// 普通报错提示
const sgAlert = (d) => {
	uni.showToast({
		icon: 'none',
		title: d
	});
}
//主体请求________________________________________________________________________________
export default {
	jumpLoginPage,
	API_ROOT_URL,
	imgPrePath: API_ROOT_URL + '/',
	//API FUNCTION ________________________________________________________________________________
	__sd(type, url, data, doing, otherConfig = {}) {
		type || (type = 'POST');
		//noAutoToken=true代表该接口无需保持登录状态就可以获取信息,譬如一些公共对外开放的接口
		let token = uni.getStorageSync('token'); //获取token
		if (!otherConfig.noAutoToken) {			
			if (!token) return jumpLoginPage();//判断如果本地没有token,否者直接跳转到登录页面
		}
		let headers = {
			'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
		};
		if (!otherConfig.noAutoToken) {
			token && (headers["kkToken"] || (headers["kkToken"] = token));
			data || (data = {});
		}
		// ________________________________________________________________________________
		doing.s && (doing.success = doing.s); //精简别名
		doing.f && (doing.fail = doing.f); //精简别名
		doing.e && (doing.error = doing.e); //精简别名
		doing.l && (doing.loading = doing.l, doing.loading.show && doing.loading.show()); //精简别名[加载]
		uni.request({
			method: type,
			url,
			data,
			header: headers,
			success: d => {
				d = d.data;
				doing.loading && doing.loading.close(); //关闭加载
				if (otherConfig.isDownload) return doing.success(d); //如果是下载,直接返回文档流
				switch (d.success) {
					case true: //登录成功 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ 
						doing.success && doing.success(otherConfig.isGetAllData ? d : (d.data || d));
						break;
					case false: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
						doing.fail && doing.fail(d);
						break;
				}
				switch (d.code) {
					case 403: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
					case 404: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
						jumpLoginPage();
						doing.fail ? doing.fail(d) : sgAlert(d.msg);
						break;
					case -2: //扫码失败 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ 
					case -1: //请求失败 ✖ ✖ ✖ ✖
						doing.fail ? doing.fail(d) : sgAlert(d.msg);
						break;
				}
			},
			error: d => { //请求报错 ✖ ✖ ✖ ✖
				if (d.status == 403) {
					jumpLoginPage();
					return doing.error ? doing.error(d) : sgAlert(JSON.parse(d.responseText).msg);
				}
				doing.loading && doing.loading.close(); //关闭加载
				doing.error ? doing.error(d) : errAlert(url, d);
				console.log("【报错】" + JSON.stringify(d, null, 4),d);
			},
		});
	},

	//【通用接口demo】________________________________________________________________________________
    API_NAME({ data, doing, config }) { this.__sd("post", `${API_ROOT_URL}/XXX/bill/print${$g.formatAsUrlParamString(data)}`, data, doing, config); },


    //提交用例________________________________________
    get({doing}) {
        this.__sd("get", `${API_ROOT_URL}/get.do`, null, doing) { isGetAllData: true };
    },
    post({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing);
    },
    login({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing, { noAutoToken: true });
    },
    download({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing, { isDownload: true });
    },
}

你可能感兴趣的:(uni-app,javascript,uni-app,jquery)