4 changed files with 137 additions and 92 deletions
@ -1,65 +1,101 @@ |
|||||||
import { create } from 'zustand'; |
import { create } from "zustand"; |
||||||
import { ordersApi, PaginatedOrderResponse, PaginatedOrderRequest,UpdateOrderShippingInfo} from '../services/api/orders'; |
import { |
||||||
|
ordersApi, |
||||||
|
PaginatedOrderResponse, |
||||||
|
PaginatedOrderRequest, |
||||||
|
UpdateOrderShippingInfo, |
||||||
|
} from "../services/api/orders"; |
||||||
|
|
||||||
interface OrderListState { |
interface OrderListState { |
||||||
orders: PaginatedOrderResponse, |
orders: PaginatedOrderResponse; |
||||||
getAllOrders: (data: PaginatedOrderRequest,page:number) => Promise<void>, |
getAllOrders: (data: PaginatedOrderRequest, page: number) => Promise<void>; |
||||||
deleteOrder: (orderId: string) => Promise<void>, |
deleteOrder: (orderId: string) => Promise<void>; |
||||||
changeOrder: (orderId: string,status:number) => Promise<void>, |
changeOrder: (orderId: string, status: number) => Promise<void>; |
||||||
updateOrderShippingInfo: (orderId: string,data:UpdateOrderShippingInfo) => Promise<void>, |
updateOrderShippingInfo: ( |
||||||
|
orderId: string, |
||||||
|
data: UpdateOrderShippingInfo |
||||||
|
) => Promise<void>; |
||||||
|
cancelOrder: (orderId: string) => Promise<void>; |
||||||
|
confirmOrder: (orderId: string) => Promise<void>; |
||||||
} |
} |
||||||
|
|
||||||
export const useOrderListStore = create<OrderListState>((set, get) => ({ |
export const useOrderListStore = create<OrderListState>((set, get) => ({ |
||||||
orders: { |
orders: { |
||||||
items: [], |
items: [], |
||||||
total: 0, |
total: 0, |
||||||
page: 1, |
page: 1, |
||||||
page_size: 10, |
page_size: 10, |
||||||
}, |
}, |
||||||
|
|
||||||
getAllOrders: async (data: PaginatedOrderRequest,page:number) => { |
getAllOrders: async (data: PaginatedOrderRequest, page: number) => { |
||||||
const response = await ordersApi.getAllOrders(data);
|
const response = await ordersApi.getAllOrders(data); |
||||||
set((state) => ({ |
set((state) => ({ |
||||||
orders: { |
orders: { |
||||||
...response, |
...response, |
||||||
items: page === 1 |
items: |
||||||
? response.items |
page === 1 |
||||||
: [...state.orders.items, ...response.items], |
? response.items |
||||||
} |
: [...state.orders.items, ...response.items], |
||||||
})); |
}, |
||||||
}, |
})); |
||||||
|
}, |
||||||
|
|
||||||
deleteOrder: async (orderId: string) => { |
deleteOrder: async (orderId: string) => { |
||||||
await ordersApi.deleteOrder(orderId); |
await ordersApi.deleteOrder(orderId); |
||||||
set((state) => ({ |
set((state) => ({ |
||||||
orders: { |
orders: { |
||||||
...state.orders, |
...state.orders, |
||||||
items: state.orders.items.filter(item => item.order_id !== orderId), |
items: state.orders.items.filter((item) => item.order_id !== orderId), |
||||||
total: state.orders.total - 1 |
total: state.orders.total - 1, |
||||||
} |
}, |
||||||
})); |
})); |
||||||
}, |
}, |
||||||
|
|
||||||
changeOrder: async (orderId: string,status:number) => { |
changeOrder: async (orderId: string, status: number) => { |
||||||
await ordersApi.changeOrder(orderId,status); |
await ordersApi.changeOrder(orderId, status); |
||||||
set((state) => ({ |
set((state) => ({ |
||||||
orders: { |
orders: { |
||||||
...state.orders, |
...state.orders, |
||||||
items: state.orders.items.filter(item => item.order_id !== orderId), |
items: state.orders.items.filter((item) => item.order_id !== orderId), |
||||||
total: state.orders.total - 1 |
total: state.orders.total - 1, |
||||||
} |
}, |
||||||
})); |
})); |
||||||
}, |
}, |
||||||
|
|
||||||
updateOrderShippingInfo: async (orderId: string,data:UpdateOrderShippingInfo) => { |
updateOrderShippingInfo: async ( |
||||||
await ordersApi.updateOrderShippingInfo(orderId,data); |
orderId: string, |
||||||
set((state) => ({ |
data: UpdateOrderShippingInfo |
||||||
orders: { |
) => { |
||||||
...state.orders, |
await ordersApi.updateOrderShippingInfo(orderId, data); |
||||||
items: state.orders.items.filter(item => item.order_id !== orderId), |
set((state) => ({ |
||||||
total: state.orders.total - 1 |
orders: { |
||||||
} |
...state.orders, |
||||||
})); |
items: state.orders.items.filter((item) => item.order_id !== orderId), |
||||||
}, |
total: state.orders.total - 1, |
||||||
})); |
}, |
||||||
|
})); |
||||||
|
}, |
||||||
|
// 取消订单
|
||||||
|
cancelOrder: async (orderId: string) => { |
||||||
|
set((state) => ({ |
||||||
|
orders: { |
||||||
|
...state.orders, |
||||||
|
items: state.orders.items.filter((item) => item.order_id !== orderId), |
||||||
|
total: state.orders.total - 1, |
||||||
|
}, |
||||||
|
})); |
||||||
|
await ordersApi.cancelOrder(orderId); |
||||||
|
}, |
||||||
|
|
||||||
|
// 确定收货
|
||||||
|
confirmOrder: async (orderId: string) => { |
||||||
|
set((state) => ({ |
||||||
|
orders: { |
||||||
|
...state.orders, |
||||||
|
items: state.orders.items.filter((item) => item.order_id !== orderId), |
||||||
|
total: state.orders.total - 1, |
||||||
|
}, |
||||||
|
})); |
||||||
|
await ordersApi.confirmOrder(orderId); |
||||||
|
}, |
||||||
|
})); |
||||||
|
Loading…
Reference in new issue