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

news/2024/7/10 23:05:02 标签: javascript, uni-app, jquery
javascript">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 });
    },
}


http://www.niftyadmin.cn/n/424562.html

相关文章

成功解决ImportError: cannot import name ‘image‘ from ‘PIL‘(unknown location)

pillow的问题 卸了重装就可以了 pip uninstall pillow pip install pillow不过要注意重装的时候会默认安装最新版本的 有时候最新的版本会报新的错误 比如如下错误可能就是由于pillow版本升级导致的 ImportError: cannot import name ‘UnidentifiedImageError’ 所以重装的时…

CSPM项目管理专业人员能力等级评价各级考试题目由什么构成?

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

谷歌的passkey是什么?

谷歌的passkey是什么? 谷歌正在研发一种名为“Passkey”的新技术,它将用于用户身份验证。Passkey不同于传统的密码,它采用了硬件加密密钥(如安全密钥或生物识别方式)以及双因素身份验证等技术,可以更好地保…

软件开发模型

一、 概述   软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码、测试和维护 阶段。   软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作…

Excel怎么设置密码?这4个方法必须掌握!

案例:做报表时有些很重要的数据不想被别人改动,Excel怎么设置密码呀? 【用Excel制作一些报表时怎么为Excel设置密码呢?因为有些数据比较重要,想将Excel设置密码。请大家帮帮我!】 Excel是一款常用的电子表…

Java XML教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 XML是一种简单的基于文本的语言,旨在以纯文本格式存储和传输数据。它代表可扩展标记语言。 Java XML入门教程 - 从基本到高级概念的简单步骤了解Java XML,其中包括概述,Java XML解析器,DOM解析器,解析XML文…

Dapr来实现跨多个微服务的跨事务

当我们在分布式系统中执行事务性操作时,需要确保这些操作要么同时成功,要么同时失败。但是,由于多个服务之间的通信可能会在某些情况下失败,从而导致出现问题。因此,实现一个分布式事务是一项具有挑战性的任务。 Dapr…

手机通话录音删除了怎么恢复

手机是我们日常生活中必不可少的工具。我们常常使用手机进行通话,因此手机通话录音功能也变得越来越重要。但是有时,由于诸如误操作、系统故障或其他问题,手机中的通话录音可能会被误删。那么,如果发生这种情况,我们该…