uni-Identify-quality/http/interface.js
xingyy 49880d9969 fix(login): 修改登录按钮文本为"快捷登录"并优化实名认证跳转逻辑
refactor(home): 重构实名认证检查逻辑,增加跳转延迟
fix(mine): 修复身份证号显示为空时的默认值处理
chore: 更新基础URL配置为正式环境
style: 调整JSON文件格式和组件属性顺序
2025-09-02 14:46:46 +08:00

212 lines
5.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 通用uni-app网络请求
* 基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截
*/
function getCurrentPageUrl() {
// 获取页面栈数组
const pages = getCurrentPages();
if (!pages || pages.length === 0) {
console.warn('页面栈为空,可能尚未加载完成');
return '';
}
// 获取当前页面实例(页面栈最后一个元素)
const currentPage = pages[pages.length - 1];
// 获取页面路径(需补全前缀'/'
const path = `/${currentPage.route}`;
// 获取页面参数对象
const options = currentPage.options || {};
// 将参数对象转换为查询字符串
const queryString = Object.keys(options)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(options[key])}`)
.join('&');
// 拼接完整URL
const fullUrl = queryString ? `${path}?${queryString}` : path;
return fullUrl; // 例如:"/pages/index/index?id=123&name=test"
}
export default {
config: {
// baseUrl: "http://192.168.88.58:9021",
// baseUrl: "https://warehouse.szjixun.cn",
baseUrl: "https://stock.szjixun.cn", //"http://172.16.100.93:8017", //"http://192.168.88.175:9021",//测试 'https://warehouse.szjixun.cn' 正式 https://stock.szjixun.cn
header: {
"foo": "bar",
"Content-Type": "application/json;charset=UTF-8",
// 'Content-Type':'application/x-www-form-urlencoded'
},
data: {},
method: "GET",
dataType: "json" /* 如设为json会对返回的数据做一次 JSON.parse */,
responseType: "text",
success() {},
fail() {},
complete() {},
},
interceptor: {
request: null,
response: null,
},
request(options) {
if (!options) {
options = {};
}
options.baseUrl = options.baseUrl || this.config.baseUrl;
options.dataType = options.dataType || this.config.dataType;
options.url = options.baseUrl + options.url;
options.data = options.data || {};
options.method = options.method || this.config.method;
//TODO 加密数据
options.header = options.header || this.config.header;
//TODO 数据签名
let _token = {
Authorization: uni.getStorageSync("token") || "undefined",
};
options.header = Object.assign({}, options.header, _token);
/*
_sign = {'sign': sign(JSON.stringify(options.data))}
options.header = Object.assign({}, options.header, _token,_sign)
*/
return new Promise((resolve, reject) => {
let _config = null;
options.complete = (response) => {
let statusCode = response.statusCode;
response.config = _config;
if (process.env.NODE_ENV === "development") {
if (statusCode === 200) {
// console.log("【" + _config.requestId + "】 结果:" + JSON.stringify(response.data))
}
}
if (this.interceptor.response) {
let newResponse = this.interceptor.response(response);
if (newResponse) {
response = newResponse;
}
}
if (response.data?.status === 401) {
if(getCurrentPageUrl()!=='/pages/home/index'){
uni.showModal({
title: "登录后使用完整功能",
success: (res) => {
if (res.confirm) {
let curPage = getCurrentPages();
let route = curPage[curPage.length - 1].route; //获取当前页面的路由
if (route !== "pages/login/login") {
uni.navigateTo({
url: "/pages/login/login",
});
}
}
},
});
}
}
// 统一的响应日志记录
_reslog(response);
if (statusCode === 200) {
//成功
resolve(response.data);
} else {
reject(response);
}
};
_config = Object.assign({}, this.config, options);
_config.requestId = new Date().getTime();
if (this.interceptor.request) {
this.interceptor.request(_config);
}
// 统一的请求日志记录
_reqlog(_config);
uni.request(_config);
});
},
get(url, data, options) {
if (!options) {
options = {};
}
options.url = url;
options.data = data;
options.method = "GET";
return this.request(options);
},
post(url, data, options, header) {
if (!options) {
options = {};
}
options.url = url;
options.data = data;
options.header = header;
options.method = "POST";
return this.request(options);
},
put(url, data, options) {
if (!options) {
options = {};
}
options.url = url;
options.data = data;
options.method = "PUT";
return this.request(options);
},
delete(url, data, options) {
if (!options) {
options = {};
}
options.url = url;
options.data = data;
options.method = "DELETE";
return this.request(options);
},
};
/**
* 请求接口日志记录
*/
function _reqlog(req) {
if (process.env.NODE_ENV === "development") {
// console.log("【" + req.requestId + "】 地址:" + req.url)
if (req.data) {
// console.log("【" + req.requestId + "】 请求参数:" + JSON.stringify(req.data))
}
}
//TODO 调接口异步写入日志数据库
}
/**
* 响应接口日志记录
*/
function _reslog(res) {
let _statusCode = res.statusCode;
if (process.env.NODE_ENV === "development") {
// console.log("【" + res.config.requestId + "】 地址:" + res.config.url)
if (res.config.data) {
// console.log("【" + res.config.requestId + "】 请求参数:" + JSON.stringify(res.config.data))
}
// console.log("【" + res.config.requestId + "】 响应结果:" + JSON.stringify(res))
}
//TODO 除了接口服务错误外,其他日志调接口异步写入日志数据库
switch (_statusCode) {
case 200:
break;
case 401:
break;
case 404:
break;
default:
break;
}
}