hookehuyr

refactor(订单): 重构订单确认收货逻辑并移除mock数据

移除订单列表中的mock数据,改为直接调用API获取真实数据
重构确认收货成功处理逻辑,增加状态查询API调用
移除成功时的冗余toast提示,改为在状态查询成功后显示
/*
* @Date: 2025-06-28 10:33:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-25 15:53:11
* @LastEditTime: 2025-07-28 12:26:05
* @FilePath: /jgdl/src/app.js
* @Description: 文件描述
*/
......@@ -53,12 +53,6 @@ const App = createApp({
transactionId: req_extradata.transaction_id,
merchantTradeNo: req_extradata.merchant_trade_no,
})
Taro.showToast({
title: '确认收货成功',
icon: 'success',
duration: 2000
})
} else if (status === 'fail') {
Taro.showToast({
title: errormsg || '确认收货失败',
......
<!--
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-28 11:52:38
* @LastEditTime: 2025-07-28 12:48:34
* @FilePath: /jgdl/src/pages/myOrders/index.vue
* @Description: 订单管理页面
-->
......@@ -106,8 +106,8 @@
<nut-button type="default" size="small" @click="viewOrderDetail(order.id)">
查看详情
</nut-button>
<nut-button type="primary" size="small" @click="handleConfirmReceive(order)" color="orange"
class="ml-2" :loading="receivingOrderId === order.id" :disabled="receivingOrderId === order.id">
<nut-button type="primary" size="small" @click="handleConfirmReceive(order)" color="orange" class="ml-2"
:loading="receivingOrderId === order.id" :disabled="receivingOrderId === order.id">
{{ receivingOrderId === order.id ? '收货中...' : '确认收货' }}
</nut-button>
</template>
......@@ -365,7 +365,7 @@ import './index.less'
import { $ } from '@tarojs/extend'
import payCard from '@/components/payCard.vue'
// 导入接口
import { getOrderListAPI, getOrderDetailAPI, reviewOrderAPI, cancelOrderAPI, deleteOrderAPI } from '@/api/orders'
import { getOrderListAPI, getOrderDetailAPI, reviewOrderAPI, cancelOrderAPI, deleteOrderAPI, shipOrderAPI, receiptOrderStatusAPI } from '@/api/orders'
import { DEFAULT_COVER_IMG } from '@/utils/config'
const scrollStyle = ref({
......@@ -479,40 +479,40 @@ const loadOrderData = async (isLoadMore = false) => {
const status = activeTab.value || undefined
const page = isLoadMore ? currentPage.value + 1 : 0
// 添加mock数据用于测试
if (page === 0) {
const mockOrder = {
id: `mock_${type}_${Date.now()}`,
status: 9, // 已发货/待收货状态
created_time: new Date().toLocaleString('zh-CN'),
total_amount: 15000,
details: {
id: `detail_${Date.now()}`,
vehicle: {
id: `vehicle_${Date.now()}`,
brand: '雅迪',
model: 'DE2',
manufacture_year: 2023,
range_km: 60,
battery_capacity_ah: 48,
price: 15000,
front_photo: DEFAULT_COVER_IMG,
seller: {
nickname: '测试卖家',
phone: '138****8888'
}
}
},
buyer: {
nickname: '测试买家',
phone: '139****9999'
},
is_sold: false
}
const targetOrders = viewMode.value === 'buy' ? boughtOrders : soldOrders
targetOrders.value = [mockOrder]
}
// TAG: 添加mock数据用于测试
// if (page === 0) {
// const mockOrder = {
// id: `mock_${type}_${Date.now()}`,
// status: 9, // 已发货/待收货状态
// created_time: new Date().toLocaleString('zh-CN'),
// total_amount: 15000,
// details: {
// id: `detail_${Date.now()}`,
// vehicle: {
// id: `vehicle_${Date.now()}`,
// brand: '雅迪',
// model: 'DE2',
// manufacture_year: 2023,
// range_km: 60,
// battery_capacity_ah: 48,
// price: 15000,
// front_photo: DEFAULT_COVER_IMG,
// seller: {
// nickname: '测试卖家',
// phone: '138****8888'
// }
// }
// },
// buyer: {
// nickname: '测试买家',
// phone: '139****9999'
// },
// is_sold: false
// }
// const targetOrders = viewMode.value === 'buy' ? boughtOrders : soldOrders
// targetOrders.value = [mockOrder]
// }
const response = await getOrderListAPI({
type,
......@@ -1191,7 +1191,7 @@ const handleConfirmShip = async (order) => {
pendingShipOrderId.value = order.id
showShipConfirmModal.value = true
} catch (error) {
console.error('确认发货失败:', error)
// 确认发货失败处理
}
}
......@@ -1207,11 +1207,8 @@ const performConfirmShip = async (orderId) => {
shippingOrderId.value = orderId
try {
// TODO: 调用确认发货API(暂时使用mock)
// const response = await confirmShipAPI({ id: orderId })
// Mock API响应
const response = { code: true, msg: '发货成功' }
// 调用确认发货API
const response = await shipOrderAPI({ order_id: orderId })
if (response.code) {
// API发货成功后的处理
......@@ -1232,7 +1229,7 @@ const performConfirmShip = async (orderId) => {
throw new Error(response.msg || '发货失败')
}
} catch (error) {
console.error('确认发货失败:', error)
// 确认发货失败处理
Taro.showToast({
title: error.msg || '确认发货失败,请重试',
icon: 'error',
......@@ -1299,12 +1296,32 @@ const performDeleteOrder = async (orderId) => {
* 处理确认收货成功事件
* @param {Object} data - 事件数据
*/
const handleConfirmReceiveSuccess = ({ merchantId, transactionId, merchantTradeNo }) => {
const handleConfirmReceiveSuccess = async ({ merchantId, transactionId, merchantTradeNo }) => {
const orders = boughtOrders.value
const order = orders.find(o => o.id === merchantTradeNo)
if (order) {
try {
// 调用买家查询收货状态接口
const response = await receiptOrderStatusAPI({ id: merchantTradeNo })
if (response.code && response.data && response.data.status === 11) {
// 接口返回状态为11,确认收货成功
order.status = 11 // 更新为已完成状态
Taro.showToast({
title: '确认收货成功',
icon: 'success',
duration: 2000
})
} else {
// 状态不是11,可能还在处理中
// 可以根据需要添加其他处理逻辑
}
} catch (error) {
// 查询收货状态失败,即使接口调用失败,也更新本地状态
order.status = 11
}
}
}
......