2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
"use strict";const e=require("./vendor.js"),t=require("./config.js");function r(){const t=getCurrentPages();if(t.length>0){const e=t[t.length-1];if(e.route&&e.route.includes("login"))return}e.index.reLaunch({url:"/uni_modules/uni-id-pages/pages/login/login-withpwd",fail:e=>{console.error("跳转登录页失败:",e)}})}function n(e){return!!e&&e.includes("/api/sys/auth/login")}function o(o={}){const{url:s,method:a="GET",data:u={},header:i={},timeout:c=1e4,needTenantId:d=!0,needToken:l=!0,...g}=o,p=s.startsWith("http")?s:t.getApiUrl(s),h="function"==typeof t.getApiEnv?t.getApiEnv():"";console.log("[Request] 开始处理请求:",{originalUrl:s,fullUrl:p,method:a.toUpperCase(),isLoginApi:n(p),apiEnv:h,needTenantId:d,needToken:l}),console.log(`[Request] 完整请求URL: ${p}`);const f={"Content-Type":"application/json",...i};if(l&&!n(p)){const t=function(){try{return e.index.getStorageSync("backend-token")||""}catch(t){return console.error("获取 token 失败:",t),""}}();if(!t)return console.warn("[Request] token 为空,拦截请求并跳转到登录页面"),r(),Promise.reject(new Error("未登录或登录已失效,请先登录"));f.Authorization=`Bearer ${t}`}const m=function(){try{return e.index.getStorageSync("backend-role-name")||""}catch(t){return console.error("获取 roleName 失败:",t),""}}();m&&(f["X-Role-Name"]=m);const q=function(){try{return e.index.getStorageSync("backend-scenario")||""}catch(t){return console.error("获取 scenario 失败:",t),""}}();q&&(f["X-Scenario"]=q);let y={...u};if(d){const t=function(){try{return e.index.getStorageSync("backend-tenant-id")||""}catch(t){return console.error("获取 tenantId 失败:",t),""}}();if(!n(p)&&!t)return console.warn("[Request] 租户ID为空,跳转到登录页面"),r(),Promise.reject(new Error("未登录,请先登录"));t&&(f["X-Tenant-Id"]=t)}return console.log("[Request] 准备发起 uni.request:",{url:p,method:a.toUpperCase(),hasData:!!y,hasHeaders:!!f,timeout:c}),new Promise(((t,n)=>{console.log("[Request] 调用 uni.request 开始执行"),e.index.request({url:p,method:a.toUpperCase(),data:y,header:f,timeout:c,...g,success:e=>{if(console.log("[Request] 收到响应:",{url:p,method:a.toUpperCase(),statusCode:e.statusCode,hasData:!!e.data,dataType:typeof e.data}),401===e.statusCode)return console.warn("[Request] 收到401状态码,跳转到登录页面"),r(),void n(new Error("登录已过期,请重新登录"));t(e)},fail:e=>{console.error("[Request] 请求失败:",{url:p,method:a.toUpperCase(),error:e,errorMessage:e.errMsg||"未知错误",errorCode:e.code||"无错误码"}),n(e)}})}))}exports.get=function(e,t={},r={}){return o({url:e,method:"GET",data:t,...r})},exports.post=function(e,t={},r={}){return o({url:e,method:"POST",data:t,...r})},exports.put=function(e,t={},r={}){return o({url:e,method:"PUT",data:t,...r})};
|