fix: 设备扫码检测到订单为in_used状态,跳转不成功的问题
This commit is contained in:
+21
-5
@@ -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)
|
||||
}
|
||||
})
|
||||
|
||||
+3
-2
@@ -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',
|
||||
})
|
||||
}
|
||||
|
||||
+13
-2
@@ -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}`
|
||||
})
|
||||
|
||||
+115
-18
@@ -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.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
|
||||
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 = '时间解析错误'
|
||||
} else {
|
||||
console.log('原始时间:', rawTime);
|
||||
console.log('订单数据:', JSON.stringify(orderData))
|
||||
|
||||
// 更新订单信息
|
||||
this.updateOrderInfo(orderData)
|
||||
|
||||
// 格式化开始时间
|
||||
const rawTime = orderData.startTime
|
||||
console.log('开始时间:', rawTime)
|
||||
|
||||
if (rawTime) {
|
||||
try {
|
||||
// 尝试格式化时间
|
||||
const date = new Date(rawTime.replace(' ', 'T'))
|
||||
if (!isNaN(date.getTime())) {
|
||||
this.orderInfo.startTime = this.formatTime(date)
|
||||
}
|
||||
// 计算使用时长
|
||||
this.calculateUsedTime(orderData.createTime)
|
||||
// 设置当前费用
|
||||
this.orderInfo.currentFee = orderData.amount || '0.00'
|
||||
} else {
|
||||
throw new Error('获取订单详情失败')
|
||||
// 如果时间解析失败,直接使用原始时间字符串
|
||||
this.orderInfo.startTime = rawTime
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('时间格式化错误:', e)
|
||||
this.orderInfo.startTime = rawTime
|
||||
}
|
||||
} else {
|
||||
this.orderInfo.startTime = '未知'
|
||||
}
|
||||
} else {
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;;"}
|
||||
{"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;;"}
|
||||
@@ -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;;;;;;;;;"}
|
||||
{"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;;;;;;;;;"}
|
||||
@@ -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;"}
|
||||
{"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;"}
|
||||
@@ -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;"}
|
||||
{"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;"}
|
||||
+11
-2
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
+4
-2
@@ -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"
|
||||
});
|
||||
};
|
||||
|
||||
+10
-3
@@ -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"
|
||||
|
||||
+84
-13
@@ -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.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 = "时间解析错误";
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/return/index.vue:112", "原始时间:", rawTime);
|
||||
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);
|
||||
}
|
||||
this.calculateUsedTime(orderData.createTime);
|
||||
this.orderInfo.currentFee = orderData.amount || "0.00";
|
||||
} else {
|
||||
throw new Error("获取订单详情失败");
|
||||
this.orderInfo.startTime = rawTime;
|
||||
}
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/return/index.vue:148", "时间格式化错误:", e);
|
||||
this.orderInfo.startTime = rawTime;
|
||||
}
|
||||
} else {
|
||||
this.orderInfo.startTime = "未知";
|
||||
}
|
||||
} else {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user