|
@@ -9,26 +9,53 @@ import { useState } from 'react'
|
|
|
import './index.css'
|
|
import './index.css'
|
|
|
|
|
|
|
|
export default function OrderDetailPage() {
|
|
export default function OrderDetailPage() {
|
|
|
- // 获取订单ID
|
|
|
|
|
|
|
+ // 获取订单ID或订单号
|
|
|
const params = Taro.getCurrentInstance().router?.params
|
|
const params = Taro.getCurrentInstance().router?.params
|
|
|
const orderId = params?.id ? parseInt(params.id) : 0
|
|
const orderId = params?.id ? parseInt(params.id) : 0
|
|
|
|
|
+ const orderNo = params?.order_no || ''
|
|
|
const queryClient = useQueryClient()
|
|
const queryClient = useQueryClient()
|
|
|
|
|
|
|
|
// 取消原因对话框状态
|
|
// 取消原因对话框状态
|
|
|
const [showCancelDialog, setShowCancelDialog] = useState(false)
|
|
const [showCancelDialog, setShowCancelDialog] = useState(false)
|
|
|
|
|
|
|
|
|
|
+ // 通过订单ID或订单号查询订单详情
|
|
|
const { data: order, isLoading } = useQuery({
|
|
const { data: order, isLoading } = useQuery({
|
|
|
- queryKey: ['order', orderId],
|
|
|
|
|
|
|
+ queryKey: ['order', orderId, orderNo],
|
|
|
queryFn: async () => {
|
|
queryFn: async () => {
|
|
|
- const response = await orderClient[':id'].$get({
|
|
|
|
|
- param: { id: orderId }
|
|
|
|
|
- })
|
|
|
|
|
- if (response.status !== 200) {
|
|
|
|
|
- throw new Error('获取订单详情失败')
|
|
|
|
|
|
|
+ // 如果提供了订单ID,直接通过ID查询
|
|
|
|
|
+ if (orderId > 0) {
|
|
|
|
|
+ const response = await orderClient[':id'].$get({
|
|
|
|
|
+ param: { id: orderId }
|
|
|
|
|
+ })
|
|
|
|
|
+ if (response.status !== 200) {
|
|
|
|
|
+ throw new Error('获取订单详情失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ return response.json()
|
|
|
}
|
|
}
|
|
|
- return response.json()
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 如果提供了订单号,通过订单列表过滤查询
|
|
|
|
|
+ if (orderNo) {
|
|
|
|
|
+ const response = await orderClient.$get({
|
|
|
|
|
+ query: {
|
|
|
|
|
+ filters: JSON.stringify({ orderNo }),
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ pageSize: 1
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ if (response.status !== 200) {
|
|
|
|
|
+ throw new Error('获取订单详情失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ const data = await response.json()
|
|
|
|
|
+ if (data.data && data.data.length > 0) {
|
|
|
|
|
+ return data.data[0]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw new Error('订单不存在')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ throw new Error('缺少订单参数')
|
|
|
},
|
|
},
|
|
|
- enabled: orderId > 0,
|
|
|
|
|
|
|
+ enabled: orderId > 0 || orderNo !== '',
|
|
|
staleTime: 5 * 60 * 1000,
|
|
staleTime: 5 * 60 * 1000,
|
|
|
})
|
|
})
|
|
|
|
|
|
|
@@ -37,7 +64,7 @@ export default function OrderDetailPage() {
|
|
|
mutationFn: async (reason: string) => {
|
|
mutationFn: async (reason: string) => {
|
|
|
const response = await orderClient['cancel-order'].$post({
|
|
const response = await orderClient['cancel-order'].$post({
|
|
|
json: {
|
|
json: {
|
|
|
- orderId,
|
|
|
|
|
|
|
+ orderId: order?.id || orderId,
|
|
|
reason
|
|
reason
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -48,7 +75,7 @@ export default function OrderDetailPage() {
|
|
|
},
|
|
},
|
|
|
onSuccess: () => {
|
|
onSuccess: () => {
|
|
|
// 取消成功后刷新订单数据
|
|
// 取消成功后刷新订单数据
|
|
|
- queryClient.invalidateQueries({ queryKey: ['order', orderId] })
|
|
|
|
|
|
|
+ queryClient.invalidateQueries({ queryKey: ['order', orderId, orderNo] })
|
|
|
|
|
|
|
|
// 显示取消成功信息
|
|
// 显示取消成功信息
|
|
|
Taro.showToast({
|
|
Taro.showToast({
|
|
@@ -131,7 +158,7 @@ export default function OrderDetailPage() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 使用orderGoods关联关系获取商品信息
|
|
// 使用orderGoods关联关系获取商品信息
|
|
|
- const orderGoods = order?.orderGoods || []
|
|
|
|
|
|
|
+ const orderGoods = (order as any)?.orderGoods || []
|
|
|
|
|
|
|
|
if (isLoading) {
|
|
if (isLoading) {
|
|
|
return (
|
|
return (
|
|
@@ -195,7 +222,7 @@ export default function OrderDetailPage() {
|
|
|
refresherTriggered={false}
|
|
refresherTriggered={false}
|
|
|
onRefresherRefresh={() => {
|
|
onRefresherRefresh={() => {
|
|
|
// 下拉刷新逻辑
|
|
// 下拉刷新逻辑
|
|
|
- queryClient.invalidateQueries({ queryKey: ['order', orderId] })
|
|
|
|
|
|
|
+ queryClient.invalidateQueries({ queryKey: ['order', orderId, orderNo] })
|
|
|
}}
|
|
}}
|
|
|
>
|
|
>
|
|
|
{/* 顶部状态卡片 */}
|
|
{/* 顶部状态卡片 */}
|