From 2da6ef8f4128f98e07935af6fa16337045e42081 Mon Sep 17 00:00:00 2001 From: 8vd8 <1936002261@qq.com> Date: Thu, 10 Apr 2025 14:46:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=88=B0=E8=AE=A2=E5=8D=95=E4=B8=BAin=5Fused?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=8C=E8=B7=B3=E8=BD=AC=E4=B8=8D=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/http.js | 26 +++- config/user.js | 5 +- pages/index/index.vue | 15 +- pages/return/index.vue | 139 +++++++++++++++--- .../.sourcemap/mp-weixin/config/http.js.map | 2 +- .../.sourcemap/mp-weixin/config/user.js.map | 2 +- .../mp-weixin/pages/index/index.js.map | 2 +- .../mp-weixin/pages/return/index.js.map | 2 +- unpackage/dist/dev/mp-weixin/config/http.js | 13 +- unpackage/dist/dev/mp-weixin/config/user.js | 6 +- .../dist/dev/mp-weixin/pages/index/index.js | 13 +- .../dist/dev/mp-weixin/pages/return/index.js | 99 +++++++++++-- 12 files changed, 269 insertions(+), 55 deletions(-) diff --git a/config/http.js b/config/http.js index 6e6e484..70e89f8 100644 --- a/config/http.js +++ b/config/http.js @@ -5,6 +5,9 @@ import { const request = (option) => { return new Promise((resolve, reject) => { + // Debug request info + console.log(`发起请求: ${option.method} ${URL + option.url}`, option.data) + uni.request({ url: URL + option.url, method: option.method, @@ -17,17 +20,29 @@ const request = (option) => { 'Clientid': uni.getStorageSync('client_id') }, success(res) { - // 检查响应状态码和业务状态码 + // 记录响应 + console.log(`请求响应: ${option.url}`, res) + + // 检查响应状态码 if (res.statusCode !== 200) { - // HTTP状态码不是200,表示请求失败 + console.error(`HTTP状态码错误: ${res.statusCode}`, res.data) + + // 为了适应某些服务器的异常响应,我们仍然返回数据 + if (res.data) { + resolve(res.data) + return + } + reject({msg: `请求失败,状态码:${res.statusCode}`}) return } // 检查业务状态码 - if (res.data.code !== 200) { - // 业务状态码不是200,表示业务处理失败 - reject(res.data) + if (res.data && res.data.code !== 200) { + console.warn(`业务状态码错误: ${res.data.code}`, res.data) + + // 仍然返回数据,由业务逻辑处理 + resolve(res.data) return } @@ -35,6 +50,7 @@ const request = (option) => { }, fail(err) { // 网络请求本身失败 + console.error(`请求失败: ${option.url}`, err) reject(err) } }) diff --git a/config/user.js b/config/user.js index e080373..bb3d6a0 100644 --- a/config/user.js +++ b/config/user.js @@ -74,9 +74,10 @@ export const cancelOrder = (data) => { //结束订单 -export const overOrderById = (data) => { +export const overOrderById = (orderId) => { + console.log(`调用结束订单API, orderId: ${orderId}`) return request({ - url: `/app/order/close/${data}`, + url: `/app/order/close/${orderId}`, method: 'get', }) } diff --git a/pages/index/index.vue b/pages/index/index.vue index 10ae8c2..e6a7498 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -62,6 +62,7 @@ let deviceNo = getQueryString(scanResult.path, 'deviceNo') console.log('扫码路径:', scanResult.path) + console.log('解析到的设备号:', deviceNo) // 检查是否有使用中的订单 const inUseRes = await uni.request({ @@ -73,12 +74,18 @@ } }) + console.log('使用中订单检查结果:', JSON.stringify(inUseRes)) + if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { // 存在使用中的订单,跳转到归还页面 const inUseOrder = inUseRes.data.data - uni.navigateTo({ - url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo}` + console.log('检测到使用中订单,准备跳转:', inUseOrder) + + // 直接使用reLaunch而不是navigateTo以确保页面跳转 + uni.reLaunch({ + url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo || inUseOrder.deviceNo}` }) + console.log('已发起页面跳转') return } @@ -92,14 +99,18 @@ } }) + console.log('待支付订单检查结果:', JSON.stringify(orderRes)) + if (orderRes.statusCode === 200 && orderRes.data.code === 200 && orderRes.data.data) { // 存在待支付订单,跳转到支付页面 const unpaidOrder = orderRes.data.data + console.log('检测到待支付订单,准备跳转:', unpaidOrder) uni.navigateTo({ url: `/pages/order/payment?orderId=${unpaidOrder.orderId}` }) } else { // 无待支付订单,正常跳转到设备检查页面 + console.log('无待支付订单,跳转到设备检查页面, deviceNo:', deviceNo) uni.navigateTo({ url: `/pages/serve/bagCheck/index?deviceNo=${deviceNo}` }) diff --git a/pages/return/index.vue b/pages/return/index.vue index 9ffb142..254a1a0 100644 --- a/pages/return/index.vue +++ b/pages/return/index.vue @@ -74,14 +74,36 @@ export default { } }, onLoad(options) { - // 获取传递的参数 - this.deviceId = options.deviceId || '' - this.orderInfo.orderId = options.orderId || '' + console.log('Return page loaded with options:', JSON.stringify(options)) - // 获取订单详情 - this.getOrderDetails() - // 启动定时器更新使用时长 - this.startTimer() + // 获取传递的参数 + this.orderInfo.orderId = options.orderId || '' + this.deviceId = options.deviceId || '' + + console.log(`初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`) + + // 如果没有orderId但有deviceId, 尝试通过设备号查询订单 + if (!this.orderInfo.orderId && this.deviceId) { + this.getOrderByDevice() + } else if (this.orderInfo.orderId) { + // 获取订单详情 + this.getOrderDetails() + // 启动定时器更新使用时长 + this.startTimer() + } else { + // 缺少必要参数 + uni.showToast({ + title: '缺少订单信息', + icon: 'none' + }) + + // 返回首页 + setTimeout(() => { + uni.reLaunch({ + url: '/pages/index/index' + }) + }, 1500) + } }, onUnload() { // 页面卸载时清除定时器 @@ -97,30 +119,43 @@ export default { throw new Error('订单ID不能为空') } + console.log('请求订单详情, orderId:', this.orderInfo.orderId) const result = await queryById(this.orderInfo.orderId) + console.log('订单详情结果:', JSON.stringify(result)) if (result.code === 200 && result.data) { const orderData = result.data + console.log('订单数据:', JSON.stringify(orderData)) + + // 更新订单信息 + this.updateOrderInfo(orderData) + + // 格式化开始时间 const rawTime = orderData.startTime - console.log('原始时间:', rawTime) - const fixedTime = rawTime.replace(' ', 'T') - const date = new Date(fixedTime) - console.log('原始时间:', rawTime); - if (isNaN(date.getTime())) { - this.orderInfo.startTime = '时间解析错误' + console.log('开始时间:', rawTime) + + if (rawTime) { + try { + // 尝试格式化时间 + const date = new Date(rawTime.replace(' ', 'T')) + if (!isNaN(date.getTime())) { + this.orderInfo.startTime = this.formatTime(date) + } else { + // 如果时间解析失败,直接使用原始时间字符串 + this.orderInfo.startTime = rawTime + } + } catch (e) { + console.error('时间格式化错误:', e) + this.orderInfo.startTime = rawTime + } } else { - console.log('原始时间:', rawTime); - - this.orderInfo.startTime = this.formatTime(date) + this.orderInfo.startTime = '未知' } - // 计算使用时长 - this.calculateUsedTime(orderData.createTime) - // 设置当前费用 - this.orderInfo.currentFee = orderData.amount || '0.00' } else { - throw new Error('获取订单详情失败') + throw new Error(result.msg || '获取订单详情失败') } } catch (error) { + console.error('获取订单详情错误:', error) uni.showToast({ title: error.message || '获取订单信息失败', icon: 'none' @@ -150,8 +185,14 @@ export default { // 使用后端返回的使用时长和费用数据 updateOrderInfo(orderData) { + console.log('更新订单信息:', JSON.stringify(orderData)) this.orderInfo.usedTime = orderData.usedTime || '0分钟'; this.orderInfo.currentFee = orderData.currentFee || '0.00'; + + // 如果有设备号,更新设备号 + if (orderData.deviceNo && !this.deviceId) { + this.deviceId = orderData.deviceNo; + } }, // 更新使用时长的定时器 @@ -195,9 +236,13 @@ export default { return } + console.log(`准备结束订单, orderId: ${this.orderInfo.orderId}`) + // 调用结束订单接口 const result = await overOrderById(this.orderInfo.orderId) + console.log('结束订单结果:', JSON.stringify(result)) + if (result.code === 200) { uni.showToast({ title: '归还成功', @@ -214,6 +259,7 @@ export default { throw new Error(result.msg || '归还失败') } } catch (error) { + console.error('归还操作错误:', error) uni.showToast({ title: error.message || '归还失败,请重试', icon: 'none' @@ -222,6 +268,57 @@ export default { this.unlocking = false uni.hideLoading() } + }, + + // 通过设备号查询使用中的订单 + async getOrderByDevice() { + try { + uni.showLoading({ title: '加载中' }) + + if (!this.deviceId) { + throw new Error('设备号不能为空') + } + + // 这里调用API查询该设备的使用中订单 + const inUseRes = await uni.request({ + url: `${uni.getStorageSync('baseUrl') || 'http://127.0.0.1:8080'}/app/order/inUse`, + method: 'GET', + header: { + 'Authorization': "Bearer " + uni.getStorageSync('token'), + 'Clientid': uni.getStorageSync('client_id') + } + }) + + console.log('通过设备号查询订单结果:', JSON.stringify(inUseRes)) + + if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { + const inUseOrder = inUseRes.data.data + // 更新订单ID + this.orderInfo.orderId = inUseOrder.orderId + + // 获取详细订单信息 + this.getOrderDetails() + // 启动定时器 + this.startTimer() + } else { + throw new Error('未找到使用中的订单') + } + } catch (error) { + console.error('通过设备号查询订单失败:', error) + uni.showToast({ + title: error.message || '获取订单信息失败', + icon: 'none' + }) + + // 如果获取订单失败,返回首页 + setTimeout(() => { + uni.reLaunch({ + url: '/pages/index/index' + }) + }, 1500) + } finally { + uni.hideLoading() + } } } } diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/http.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/http.js.map index 18dd6f2..3ee3862 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/http.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/http.js.map @@ -1 +1 @@ -{"version":3,"file":"http.js","sources":["config/http.js"],"sourcesContent":["import {\r\n\tURL,\r\n\tappid\r\n} from './url'\r\n\r\nconst request = (option) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tuni.request({\r\n\t\t\turl: URL + option.url,\r\n\t\t\tmethod: option.method,\r\n\t\t\tdata: option.data,\r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\r\n\t\t\t\t\t...option.headers,\r\n\t\t\t\t'appid': appid,\r\n\t\t\t\t'Authorization': \"Bearer \" + uni.getStorageSync('token'),\r\n\t\t\t\t'Clientid': uni.getStorageSync('client_id')\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\t// 检查响应状态码和业务状态码\r\n\t\t\t\tif (res.statusCode !== 200) {\r\n\t\t\t\t\t// HTTP状态码不是200,表示请求失败\r\n\t\t\t\t\treject({msg: `请求失败,状态码:${res.statusCode}`})\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 检查业务状态码\r\n\t\t\t\tif (res.data.code !== 200) {\r\n\t\t\t\t\t// 业务状态码不是200,表示业务处理失败\r\n\t\t\t\t\treject(res.data)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tresolve(res.data)\r\n\t\t\t},\r\n\t\t\tfail(err) {\r\n\t\t\t\t// 网络请求本身失败\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n\r\nexport default request"],"names":["uni","URL","appid"],"mappings":";;;AAKK,MAAC,UAAU,CAAC,WAAW;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvCA,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAKC,WAAAA,MAAM,OAAO;AAAA,MAClB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,QAAQ;AAAA,QACP,gBAAgB;AAAA,QACf,GAAG,OAAO;AAAA,QACX,SAASC,WAAK;AAAA,QACd,iBAAiB,YAAYF,oBAAI,eAAe,OAAO;AAAA,QACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,MAC1C;AAAA,MACD,QAAQ,KAAK;AAEZ,YAAI,IAAI,eAAe,KAAK;AAE3B,iBAAO,EAAC,KAAK,YAAY,IAAI,UAAU,GAAE,CAAC;AAC1C;AAAA,QACA;AAGD,YAAI,IAAI,KAAK,SAAS,KAAK;AAE1B,iBAAO,IAAI,IAAI;AACf;AAAA,QACA;AAED,gBAAQ,IAAI,IAAI;AAAA,MAChB;AAAA,MACD,KAAK,KAAK;AAET,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;"} \ No newline at end of file +{"version":3,"file":"http.js","sources":["config/http.js"],"sourcesContent":["import {\r\n\tURL,\r\n\tappid\r\n} from './url'\r\n\r\nconst request = (option) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// Debug request info\r\n\t\tconsole.log(`发起请求: ${option.method} ${URL + option.url}`, option.data)\r\n\t\t\r\n\t\tuni.request({\r\n\t\t\turl: URL + option.url,\r\n\t\t\tmethod: option.method,\r\n\t\t\tdata: option.data,\r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\r\n\t\t\t\t\t...option.headers,\r\n\t\t\t\t'appid': appid,\r\n\t\t\t\t'Authorization': \"Bearer \" + uni.getStorageSync('token'),\r\n\t\t\t\t'Clientid': uni.getStorageSync('client_id')\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\t// 记录响应\r\n\t\t\t\tconsole.log(`请求响应: ${option.url}`, res)\r\n\t\t\t\t\r\n\t\t\t\t// 检查响应状态码\r\n\t\t\t\tif (res.statusCode !== 200) {\r\n\t\t\t\t\tconsole.error(`HTTP状态码错误: ${res.statusCode}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 为了适应某些服务器的异常响应,我们仍然返回数据\r\n\t\t\t\t\tif (res.data) {\r\n\t\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treject({msg: `请求失败,状态码:${res.statusCode}`})\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 检查业务状态码\r\n\t\t\t\tif (res.data && res.data.code !== 200) {\r\n\t\t\t\t\tconsole.warn(`业务状态码错误: ${res.data.code}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 仍然返回数据,由业务逻辑处理\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tresolve(res.data)\r\n\t\t\t},\r\n\t\t\tfail(err) {\r\n\t\t\t\t// 网络请求本身失败\r\n\t\t\t\tconsole.error(`请求失败: ${option.url}`, err)\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n\r\nexport default request"],"names":["uni","URL","appid"],"mappings":";;;AAKK,MAAC,UAAU,CAAC,WAAW;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvCA,kBAAA,MAAA,MAAA,OAAA,uBAAY,SAAS,OAAO,MAAM,IAAIC,WAAAA,MAAM,OAAO,GAAG,IAAI,OAAO,IAAI;AAErED,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAKC,WAAAA,MAAM,OAAO;AAAA,MAClB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,QAAQ;AAAA,QACP,gBAAgB;AAAA,QACf,GAAG,OAAO;AAAA,QACX,SAASC,WAAK;AAAA,QACd,iBAAiB,YAAYF,oBAAI,eAAe,OAAO;AAAA,QACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,MAC1C;AAAA,MACD,QAAQ,KAAK;AAEZA,4BAAA,MAAA,OAAA,wBAAY,SAAS,OAAO,GAAG,IAAI,GAAG;AAGtC,YAAI,IAAI,eAAe,KAAK;AAC3BA,wBAAAA,6CAAc,cAAc,IAAI,UAAU,IAAI,IAAI,IAAI;AAGtD,cAAI,IAAI,MAAM;AACb,oBAAQ,IAAI,IAAI;AAChB;AAAA,UACA;AAED,iBAAO,EAAC,KAAK,YAAY,IAAI,UAAU,GAAE,CAAC;AAC1C;AAAA,QACA;AAGD,YAAI,IAAI,QAAQ,IAAI,KAAK,SAAS,KAAK;AACtCA,wBAAAA,MAAa,MAAA,QAAA,wBAAA,YAAY,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI;AAGlD,kBAAQ,IAAI,IAAI;AAChB;AAAA,QACA;AAED,gBAAQ,IAAI,IAAI;AAAA,MAChB;AAAA,MACD,KAAK,KAAK;AAETA,4BAAA,MAAA,SAAA,wBAAc,SAAS,OAAO,GAAG,IAAI,GAAG;AACxC,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map index 34631a4..4bbd045 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map @@ -1 +1 @@ -{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\r\n\r\n\r\nexport const login = (data) => {\r\n return request({\r\n url: '/app/user/login',\r\n method: 'get',\r\n data\r\n })\r\n}\r\n\r\n\r\nexport const getMyIndexInfo = (data) => {\r\n return request({\r\n url: '/app/user/userInfo',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n//获取所有全部订单\r\nexport const getOrderList = (data) => {\r\n return request({\r\n url: '/app/order/list',\r\n method: 'get',\r\n data,\r\n hideLoading:true\r\n })\r\n}\r\n\r\n//查询是否有订单\r\nexport const queryHasOrder = (deviceNo) => {\r\n return request({\r\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//设备查询\r\nexport const getDeviceInfo = (deviceNo) => {\r\n return request({\r\n url: `/app/device/${deviceNo}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//创建订单\r\nexport const createOrder = (data) => {\r\n return request({\r\n url: '/app/order/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n\r\n//查询订单\r\nexport const queryById = (id) => {\r\n return request({\r\n url: `/app/order/${id}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//取消订单\r\nexport const cancelOrder = (data) => {\r\n return request({\r\n url: '/orderInfo/cancelOrder',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n\r\n//结束订单\r\nexport const overOrderById = (data) => {\r\n return request({\r\n url: `/app/order/close/${data}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//立即租借\r\nexport const rentPowerBank = (deviceNo, phone) => {\r\n return request({\r\n url: '/app/device/rentPowerBank',\r\n method: 'post',\r\n data: { deviceNo, phone }\r\n })\r\n}\r\n\r\n\r\n//投诉反馈\r\nexport const addUserFeedback = (data) => {\r\n return request({\r\n url: '/app/feedback/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n"],"names":["request"],"mappings":";;AAGY,MAAC,QAAQ,CAAC,SAAS;AAC3B,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,iBAAiB,CAAC,SAAS;AACpC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,eAAe,CAAC,SAAS;AAClC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,aAAY;AAAA,EACpB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,4BAA4B,QAAQ;AAAA,IACzC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,eAAe,QAAQ;AAAA,IAC5B,QAAQ;AAAA,EAChB,CAAK;AACL;AAaY,MAAC,YAAY,CAAC,OAAO;AAC7B,SAAOA,oBAAQ;AAAA,IACX,KAAK,cAAc,EAAE;AAAA,IACrB,QAAQ;AAAA,EAChB,CAAK;AACL;AAcY,MAAC,gBAAgB,CAAC,SAAS;AACnC,SAAOA,oBAAQ;AAAA,IACX,KAAK,oBAAoB,IAAI;AAAA,IAC7B,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,UAAU,UAAU;AAC9C,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM,EAAE,UAAU,MAAO;AAAA,EACjC,CAAK;AACL;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\r\n\r\n\r\nexport const login = (data) => {\r\n return request({\r\n url: '/app/user/login',\r\n method: 'get',\r\n data\r\n })\r\n}\r\n\r\n\r\nexport const getMyIndexInfo = (data) => {\r\n return request({\r\n url: '/app/user/userInfo',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n//获取所有全部订单\r\nexport const getOrderList = (data) => {\r\n return request({\r\n url: '/app/order/list',\r\n method: 'get',\r\n data,\r\n hideLoading:true\r\n })\r\n}\r\n\r\n//查询是否有订单\r\nexport const queryHasOrder = (deviceNo) => {\r\n return request({\r\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//设备查询\r\nexport const getDeviceInfo = (deviceNo) => {\r\n return request({\r\n url: `/app/device/${deviceNo}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//创建订单\r\nexport const createOrder = (data) => {\r\n return request({\r\n url: '/app/order/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n\r\n//查询订单\r\nexport const queryById = (id) => {\r\n return request({\r\n url: `/app/order/${id}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//取消订单\r\nexport const cancelOrder = (data) => {\r\n return request({\r\n url: '/orderInfo/cancelOrder',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n\r\n//结束订单\r\nexport const overOrderById = (orderId) => {\r\n console.log(`调用结束订单API, orderId: ${orderId}`)\r\n return request({\r\n url: `/app/order/close/${orderId}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//立即租借\r\nexport const rentPowerBank = (deviceNo, phone) => {\r\n return request({\r\n url: '/app/device/rentPowerBank',\r\n method: 'post',\r\n data: { deviceNo, phone }\r\n })\r\n}\r\n\r\n\r\n//投诉反馈\r\nexport const addUserFeedback = (data) => {\r\n return request({\r\n url: '/app/feedback/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n"],"names":["request","uni"],"mappings":";;;AAGY,MAAC,QAAQ,CAAC,SAAS;AAC3B,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,iBAAiB,CAAC,SAAS;AACpC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,eAAe,CAAC,SAAS;AAClC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,aAAY;AAAA,EACpB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,4BAA4B,QAAQ;AAAA,IACzC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,eAAe,QAAQ;AAAA,IAC5B,QAAQ;AAAA,EAChB,CAAK;AACL;AAaY,MAAC,YAAY,CAAC,OAAO;AAC7B,SAAOA,oBAAQ;AAAA,IACX,KAAK,cAAc,EAAE;AAAA,IACrB,QAAQ;AAAA,EAChB,CAAK;AACL;AAcY,MAAC,gBAAgB,CAAC,YAAY;AACtCC,gBAAY,MAAA,MAAA,OAAA,wBAAA,uBAAuB,OAAO,EAAE;AAC5C,SAAOD,oBAAQ;AAAA,IACX,KAAK,oBAAoB,OAAO;AAAA,IAChC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,UAAU,UAAU;AAC9C,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM,EAAE,UAAU,MAAO;AAAA,EACjC,CAAK;AACL;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map index 5be8db1..95259c2 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map index 9f15f27..1042ad6 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcmV0dXJuL2luZGV4LnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/return/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcmV0dXJuL2luZGV4LnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/return/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/config/http.js b/unpackage/dist/dev/mp-weixin/config/http.js index d225fd6..305f8f6 100644 --- a/unpackage/dist/dev/mp-weixin/config/http.js +++ b/unpackage/dist/dev/mp-weixin/config/http.js @@ -3,6 +3,7 @@ const common_vendor = require("../common/vendor.js"); const config_url = require("./url.js"); const request = (option) => { return new Promise((resolve, reject) => { + common_vendor.index.__f__("log", "at config/http.js:9", `发起请求: ${option.method} ${config_url.URL + option.url}`, option.data); common_vendor.index.request({ url: config_url.URL + option.url, method: option.method, @@ -15,17 +16,25 @@ const request = (option) => { "Clientid": common_vendor.index.getStorageSync("client_id") }, success(res) { + common_vendor.index.__f__("log", "at config/http.js:24", `请求响应: ${option.url}`, res); if (res.statusCode !== 200) { + common_vendor.index.__f__("error", "at config/http.js:28", `HTTP状态码错误: ${res.statusCode}`, res.data); + if (res.data) { + resolve(res.data); + return; + } reject({ msg: `请求失败,状态码:${res.statusCode}` }); return; } - if (res.data.code !== 200) { - reject(res.data); + if (res.data && res.data.code !== 200) { + common_vendor.index.__f__("warn", "at config/http.js:42", `业务状态码错误: ${res.data.code}`, res.data); + resolve(res.data); return; } resolve(res.data); }, fail(err) { + common_vendor.index.__f__("error", "at config/http.js:53", `请求失败: ${option.url}`, err); reject(err); } }); diff --git a/unpackage/dist/dev/mp-weixin/config/user.js b/unpackage/dist/dev/mp-weixin/config/user.js index 9a3382e..ea492ae 100644 --- a/unpackage/dist/dev/mp-weixin/config/user.js +++ b/unpackage/dist/dev/mp-weixin/config/user.js @@ -1,4 +1,5 @@ "use strict"; +const common_vendor = require("../common/vendor.js"); const config_http = require("./http.js"); const login = (data) => { return config_http.request({ @@ -40,9 +41,10 @@ const queryById = (id) => { method: "get" }); }; -const overOrderById = (data) => { +const overOrderById = (orderId) => { + common_vendor.index.__f__("log", "at config/user.js:78", `调用结束订单API, orderId: ${orderId}`); return config_http.request({ - url: `/app/order/close/${data}`, + url: `/app/order/close/${orderId}`, method: "get" }); }; diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js index 75dfd45..0971ef9 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -14,6 +14,7 @@ const _sfc_main = { }); let deviceNo = util_index.getQueryString(scanResult.path, "deviceNo"); common_vendor.index.__f__("log", "at pages/index/index.vue:64", "扫码路径:", scanResult.path); + common_vendor.index.__f__("log", "at pages/index/index.vue:65", "解析到的设备号:", deviceNo); const inUseRes = await common_vendor.index.request({ url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/order/inUse`, method: "GET", @@ -22,11 +23,14 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); + common_vendor.index.__f__("log", "at pages/index/index.vue:77", "使用中订单检查结果:", JSON.stringify(inUseRes)); if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { const inUseOrder = inUseRes.data.data; - common_vendor.index.navigateTo({ - url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo}` + common_vendor.index.__f__("log", "at pages/index/index.vue:82", "检测到使用中订单,准备跳转:", inUseOrder); + common_vendor.index.reLaunch({ + url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo || inUseOrder.deviceNo}` }); + common_vendor.index.__f__("log", "at pages/index/index.vue:88", "已发起页面跳转"); return; } const orderRes = await common_vendor.index.request({ @@ -37,18 +41,21 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); + common_vendor.index.__f__("log", "at pages/index/index.vue:102", "待支付订单检查结果:", JSON.stringify(orderRes)); if (orderRes.statusCode === 200 && orderRes.data.code === 200 && orderRes.data.data) { const unpaidOrder = orderRes.data.data; + common_vendor.index.__f__("log", "at pages/index/index.vue:107", "检测到待支付订单,准备跳转:", unpaidOrder); common_vendor.index.navigateTo({ url: `/pages/order/payment?orderId=${unpaidOrder.orderId}` }); } else { + common_vendor.index.__f__("log", "at pages/index/index.vue:113", "无待支付订单,跳转到设备检查页面, deviceNo:", deviceNo); common_vendor.index.navigateTo({ url: `/pages/serve/bagCheck/index?deviceNo=${deviceNo}` }); } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:108", "扫码处理失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:119", "扫码处理失败:", error); common_vendor.index.showToast({ title: "扫码失败", icon: "none" diff --git a/unpackage/dist/dev/mp-weixin/pages/return/index.js b/unpackage/dist/dev/mp-weixin/pages/return/index.js index 0396e03..ad07764 100644 --- a/unpackage/dist/dev/mp-weixin/pages/return/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/return/index.js @@ -16,10 +16,26 @@ const _sfc_main = { }; }, onLoad(options) { - this.deviceId = options.deviceId || ""; + common_vendor.index.__f__("log", "at pages/return/index.vue:77", "Return page loaded with options:", JSON.stringify(options)); this.orderInfo.orderId = options.orderId || ""; - this.getOrderDetails(); - this.startTimer(); + this.deviceId = options.deviceId || ""; + common_vendor.index.__f__("log", "at pages/return/index.vue:83", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`); + if (!this.orderInfo.orderId && this.deviceId) { + this.getOrderByDevice(); + } else if (this.orderInfo.orderId) { + this.getOrderDetails(); + this.startTimer(); + } else { + common_vendor.index.showToast({ + title: "缺少订单信息", + icon: "none" + }); + setTimeout(() => { + common_vendor.index.reLaunch({ + url: "/pages/index/index" + }); + }, 1500); + } }, onUnload() { this.clearTimer(); @@ -32,26 +48,35 @@ const _sfc_main = { if (!this.orderInfo.orderId) { throw new Error("订单ID不能为空"); } + common_vendor.index.__f__("log", "at pages/return/index.vue:122", "请求订单详情, orderId:", this.orderInfo.orderId); const result = await config_user.queryById(this.orderInfo.orderId); + common_vendor.index.__f__("log", "at pages/return/index.vue:124", "订单详情结果:", JSON.stringify(result)); if (result.code === 200 && result.data) { const orderData = result.data; + common_vendor.index.__f__("log", "at pages/return/index.vue:128", "订单数据:", JSON.stringify(orderData)); + this.updateOrderInfo(orderData); const rawTime = orderData.startTime; - common_vendor.index.__f__("log", "at pages/return/index.vue:105", "原始时间:", rawTime); - const fixedTime = rawTime.replace(" ", "T"); - const date = new Date(fixedTime); - common_vendor.index.__f__("log", "at pages/return/index.vue:108", "原始时间:", rawTime); - if (isNaN(date.getTime())) { - this.orderInfo.startTime = "时间解析错误"; + common_vendor.index.__f__("log", "at pages/return/index.vue:135", "开始时间:", rawTime); + if (rawTime) { + try { + const date = new Date(rawTime.replace(" ", "T")); + if (!isNaN(date.getTime())) { + this.orderInfo.startTime = this.formatTime(date); + } else { + this.orderInfo.startTime = rawTime; + } + } catch (e) { + common_vendor.index.__f__("error", "at pages/return/index.vue:148", "时间格式化错误:", e); + this.orderInfo.startTime = rawTime; + } } else { - common_vendor.index.__f__("log", "at pages/return/index.vue:112", "原始时间:", rawTime); - this.orderInfo.startTime = this.formatTime(date); + this.orderInfo.startTime = "未知"; } - this.calculateUsedTime(orderData.createTime); - this.orderInfo.currentFee = orderData.amount || "0.00"; } else { - throw new Error("获取订单详情失败"); + throw new Error(result.msg || "获取订单详情失败"); } } catch (error) { + common_vendor.index.__f__("error", "at pages/return/index.vue:158", "获取订单详情错误:", error); common_vendor.index.showToast({ title: error.message || "获取订单信息失败", icon: "none" @@ -76,8 +101,12 @@ const _sfc_main = { }, // 使用后端返回的使用时长和费用数据 updateOrderInfo(orderData) { + common_vendor.index.__f__("log", "at pages/return/index.vue:188", "更新订单信息:", JSON.stringify(orderData)); this.orderInfo.usedTime = orderData.usedTime || "0分钟"; this.orderInfo.currentFee = orderData.currentFee || "0.00"; + if (orderData.deviceNo && !this.deviceId) { + this.deviceId = orderData.deviceNo; + } }, // 更新使用时长的定时器 startTimer() { @@ -113,7 +142,9 @@ const _sfc_main = { common_vendor.index.hideLoading(); return; } + common_vendor.index.__f__("log", "at pages/return/index.vue:239", `准备结束订单, orderId: ${this.orderInfo.orderId}`); const result = await config_user.overOrderById(this.orderInfo.orderId); + common_vendor.index.__f__("log", "at pages/return/index.vue:244", "结束订单结果:", JSON.stringify(result)); if (result.code === 200) { common_vendor.index.showToast({ title: "归还成功", @@ -128,6 +159,7 @@ const _sfc_main = { throw new Error(result.msg || "归还失败"); } } catch (error) { + common_vendor.index.__f__("error", "at pages/return/index.vue:262", "归还操作错误:", error); common_vendor.index.showToast({ title: error.message || "归还失败,请重试", icon: "none" @@ -136,6 +168,45 @@ const _sfc_main = { this.unlocking = false; common_vendor.index.hideLoading(); } + }, + // 通过设备号查询使用中的订单 + async getOrderByDevice() { + try { + common_vendor.index.showLoading({ title: "加载中" }); + if (!this.deviceId) { + throw new Error("设备号不能为空"); + } + const inUseRes = await common_vendor.index.request({ + url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/order/inUse`, + method: "GET", + header: { + "Authorization": "Bearer " + common_vendor.index.getStorageSync("token"), + "Clientid": common_vendor.index.getStorageSync("client_id") + } + }); + common_vendor.index.__f__("log", "at pages/return/index.vue:292", "通过设备号查询订单结果:", JSON.stringify(inUseRes)); + if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { + const inUseOrder = inUseRes.data.data; + this.orderInfo.orderId = inUseOrder.orderId; + this.getOrderDetails(); + this.startTimer(); + } else { + throw new Error("未找到使用中的订单"); + } + } catch (error) { + common_vendor.index.__f__("error", "at pages/return/index.vue:307", "通过设备号查询订单失败:", error); + common_vendor.index.showToast({ + title: error.message || "获取订单信息失败", + icon: "none" + }); + setTimeout(() => { + common_vendor.index.reLaunch({ + url: "/pages/index/index" + }); + }, 1500); + } finally { + common_vendor.index.hideLoading(); + } } } };