From ab350ccc14a8bdaf915602494d2a5953ed9183a9 Mon Sep 17 00:00:00 2001 From: YeMingfei666 <1619116647@qq.com> Date: Thu, 6 Nov 2025 10:42:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/api/request.js | 254 ++++++++++++++------------- components/devetools.vue | 126 +++++++++---- framework/0-conf.js | 9 +- pages/order/confirm-order.vue | 108 ++++++++---- pages/product/index.vue | 35 ++-- stores/carts.js | 7 +- user/exchange/components/confirm.vue | 4 + utils/goods.ts | 5 +- utils/order-utils.js | 1 + 9 files changed, 332 insertions(+), 217 deletions(-) diff --git a/common/api/request.js b/common/api/request.js index 6e62009..adda8b2 100644 --- a/common/api/request.js +++ b/common/api/request.js @@ -1,120 +1,138 @@ export default (params) => { - let url = params.url; - let method = params.method || "get"; - let data = params.data || {}; - let type = params.type || 1; - let toast = params.toast || true; - let token=uni.cache.get('token') || ''; - const shopId=uni.cache.get('shopId')*1; - const userInfo=uni.cache.get('userInfo')||{}; - // #ifdef H5 - token="21f0a0b10e1d40ce9c6464037fedb792" - // #endif - let header = { - version: uni.conf.version, - type: uni.getSystemInfoSync().platform, - // #ifdef APP-PLUS - platformType: 'APP', - // #endif - // #ifdef H5 - platformType: 'H5', - // #endif - // #ifdef MP-WEIXIN - platformType: 'WX', - // #endif - // #ifdef MP-ALIPAY - platformType: 'ALI', - // #endif - token, - id: userInfo.id || '', - shopId:shopId || '', - userId: userInfo.id || '', - } - if (toast) { - uni.showLoading({ - title: '加载中', - mask: true - }) - } - return new Promise((resolve, reject) => { - const timeoutDuration = params.timeout || 10000; // 可以通过 params 传入超时时间,默认 10 秒 - uni.request({ - url: uni.conf.baseUrl + url, - method: method, - header: header, - data: data, - timeout: timeoutDuration, - success(response) { - const res = response.data - // 根据返回的状态码做出对应的操作 - //获取成功 - if (res.code == 200) { - uni.hideLoading(); - uni.hideToast(); - resolve(res.data ? res.data : true); - } else { - switch (res.code) { - case '501': - uni.cache.remove('shopId') - // uni.showToast({ - // title: '', - // icon: "none", - // success: () => { + let url = params.url; + let method = params.method || "get"; + let data = params.data || {}; + let type = params.type || 1; + let toast = params.toast || true; + let token = uni.cache.get("token") || ""; + const shopId = uni.cache.get("shopId") * 1; + const userInfo = uni.cache.get("userInfo") || {}; + // #ifdef H5 + token = "21f0a0b10e1d40ce9c6464037fedb792"; + // #endif + let header = { + version: uni.conf.version, + type: uni.getSystemInfoSync().platform, + // #ifdef APP-PLUS + platformType: "APP", + // #endif + // #ifdef H5 + platformType: "H5", + // #endif + // #ifdef MP-WEIXIN + platformType: "WX", + // #endif + // #ifdef MP-ALIPAY + platformType: "ALI", + // #endif + token, + id: userInfo.id || "", + shopId: shopId || "", + userId: userInfo.id || "", + }; + if (toast) { + uni.showLoading({ + title: "加载中", + mask: true, + }); + } + return new Promise((resolve, reject) => { + const timeoutDuration = params.timeout || 10000; // 可以通过 params 传入超时时间,默认 10 秒 + uni.request({ + url: uni.conf.baseUrl + url, + method: method, + header: header, + data: data, + timeout: timeoutDuration, + success(response) { + const res = response.data; + // 根据返回的状态码做出对应的操作 + //获取成功 + if (res.code == 200) { + uni.hideLoading(); + uni.hideToast(); + resolve(res.data ? res.data : true); + } else { + switch (res.code) { + case "501": + uni.cache.remove("shopId"); + // uni.showToast({ + // title: '', + // icon: "none", + // success: () => { - // } - // }) - setTimeout(() => { - uni.reLaunch({ - url: "/pages/index/index", - }) - }, 1000); - break; - case 404: - uni.showToast({ - title: '请求地址不存在...', - duration: 2000, - }) - break; - default: - // 是否提示 - if (toast) { - uni.showToast({ - title: res.message || res.msg || res.error, - icon: "none", - success: () => { - setTimeout(res => { - reject(false); - }, 1000) - } - }) - } - break; - } - } - }, - fail(err) { - if (err.errMsg.indexOf('request:fail') !== -1) { - if (err.errMsg.indexOf('timeout') !== -1) { - if (toast) { - uni.showToast({ - title: `请求超时,请稍后重试`, - icon: "error", - duration: 2000 - }); - } - } - } - reject(err); - }, - complete() { - // 不管成功还是失败都会执行 - setTimeout(res => { - uni.hideLoading(); - uni.hideToast(); - }, 10000) - - } - }); - }).catch((e) => { - }); -}; \ No newline at end of file + // } + // }) + setTimeout(() => { + uni.reLaunch({ + url: "/pages/index/index", + }); + }, 1000); + break; + case 404: + uni.showToast({ + title: "请求地址不存在...", + duration: 2000, + }); + break; + default: + // 是否提示 + if (toast) { + uni.showToast({ + title: (() => { + // 1. 获取原始提示文本(兜底空字符串避免报错) + const originMsg = res.message || res.msg || res.error || ""; + // 2. 定义要匹配的前缀 + const exceptionPrefix = "Exception:"; + // 3. 判断是否包含目标前缀 + if (originMsg.includes(exceptionPrefix)) { + // 截取前缀后的内容 → 去除首尾空格 → 限制最大20个字符 + return originMsg + .slice( + originMsg.indexOf(exceptionPrefix) + + exceptionPrefix.length + ) + .trim() + .slice(0, 20); + } else { + // 不包含则按原逻辑截取前20个字符 + return originMsg.slice(0, 20); + } + })(), + icon: "none", + success: () => { + // 修复:去掉多余的 res 参数(避免覆盖外层 res) + setTimeout(() => { + reject(false); + }, 1000); + }, + }); + } + break; + } + } + }, + fail(err) { + if (err.errMsg.indexOf("request:fail") !== -1) { + if (err.errMsg.indexOf("timeout") !== -1) { + if (toast) { + uni.showToast({ + title: `请求超时,请稍后重试`, + icon: "error", + duration: 2000, + }); + } + } + } + reject(err); + }, + complete() { + // 不管成功还是失败都会执行 + setTimeout((res) => { + uni.hideLoading(); + uni.hideToast(); + }, 10000); + }, + }); + }).catch((e) => {}); +}; diff --git a/components/devetools.vue b/components/devetools.vue index 343ba9c..c1afafb 100644 --- a/components/devetools.vue +++ b/components/devetools.vue @@ -8,8 +8,12 @@ backgroundColor: btnColor, width: `${btnSize}px`, height: `${btnSize}px`, + transform: `translateX(${currentOffsetX}px) translateY(${currentOffsetY}px)`, }" :class="{ active: isPopupVisible }" + @touchstart="touchstart" + @touchmove="touchmove" + @touchend="touchend" > - +