Files
shop-toy/src/store/order.ts
FlowerWater 0eb8ac9181 页面提交
2025-11-29 17:20:17 +08:00

75 lines
1.9 KiB
TypeScript

import { defineStore } from 'pinia'
import { createOrder, getOrderList, getOrderDetail, cancelOrder, payOrder } from '@/api/order'
import type { Order, OrderStatus } from '@/typings/mall'
export const useOrderStore = defineStore('order', {
state: () => ({
orderList: [] as Order[],
currentOrder: null as Order | null,
}),
actions: {
// 获取订单列表
async fetchOrderList(status?: OrderStatus) {
try {
const res: any = await getOrderList(status)
this.orderList = res.data
} catch (error) {
console.error('获取订单列表失败', error)
}
},
// 获取订单详情
async fetchOrderDetail(id: string) {
try {
const res: any = await getOrderDetail(id)
this.currentOrder = res.data
return res.data
} catch (error) {
console.error('获取订单详情失败', error)
return null
}
},
// 创建订单
async createOrder(data: any) {
try {
const res: any = await createOrder(data)
return res.data
} catch (error) {
console.error('创建订单失败', error)
throw error
}
},
// 支付订单
async payOrder(id: string) {
try {
await payOrder(id)
// 更新列表或详情
if (this.currentOrder && this.currentOrder.id === id) {
this.fetchOrderDetail(id)
}
this.fetchOrderList()
} catch (error) {
console.error('支付订单失败', error)
throw error
}
},
// 取消订单
async cancelOrder(id: string) {
try {
await cancelOrder(id)
if (this.currentOrder && this.currentOrder.id === id) {
this.fetchOrderDetail(id)
}
this.fetchOrderList()
} catch (error) {
console.error('取消订单失败', error)
throw error
}
},
},
})