feat(store): 优化门店中心订单管理和Checkout订单创建
- Checkout创建订单时直接传递payStatus和payTime字段防止未付款订单被删除 - 门店中心Tab改为三个(全部、待处理、已完成),并合并多个statusFilter查询 - 操作按钮逻辑调整为根据订单状态判断,已完成及已关闭订单无操作和删除按钮 - 状态文案和颜色适配完善,添加订单送达凭证照片预览功能 - 确认完成操作强制上传配送凭证照片,凭证支持JSON数组格式存储 - 收款操作支持上传凭证照片并追加至备注中 - 优化订单列表加载逻辑,多个请求结果合并去重并按创建时间降序排序 - 代码格式调整及UI细节优化,提升代码一致性和用户体验
This commit is contained in:
@@ -37,3 +37,22 @@
|
|||||||
- 已完成订单仅展示,无操作按钮
|
- 已完成订单仅展示,无操作按钮
|
||||||
- 状态文案适配货到付款:待收款/待发货/待收货/已完成
|
- 状态文案适配货到付款:待收款/待发货/待收货/已完成
|
||||||
- Tab 颜色改为绿色主题
|
- Tab 颜色改为绿色主题
|
||||||
|
|
||||||
|
## Checkout 页面货到付款 payStatus 修复
|
||||||
|
|
||||||
|
- 修改 `src/api/shop/shopOrder/model/index.ts`:`OrderCreateRequest` 增加 `payStatus` 和 `payTime` 可选字段
|
||||||
|
- 修改 `src/pages/shop/checkout.tsx`:
|
||||||
|
- 创建订单时直接传 `payStatus: true` + `payTime`(格式 `yyyy-MM-dd HH:mm:ss`)
|
||||||
|
- 防止后端定时任务自动删除未付款的货到付款订单
|
||||||
|
|
||||||
|
## 门店中心 Tab 改为三个(全部 + 待处理 + 已完成)
|
||||||
|
|
||||||
|
- 重写 `src/pages/store/center/index.tsx`:Tab 从2个改为3个
|
||||||
|
- 参考后台管理 `shop-admin` 的 `statusFilter` 映射:
|
||||||
|
- 全部:不传 statusFilter(params: `[{}]`)
|
||||||
|
- 待处理:合并 `statusFilter=1`(待发货)+ `statusFilter=8`(已关闭)
|
||||||
|
- 已完成:`statusFilter=5`
|
||||||
|
- 操作按钮逻辑改为按订单状态判断(`isOrderActionable`),不再按 Tab 判断
|
||||||
|
- 已完成/已关闭订单:无操作按钮,无删除按钮
|
||||||
|
- 其他订单:显示"确认收款"/"确认完成"和"删除订单"
|
||||||
|
- 状态文案完善:已完成、已关闭、待收款、待发货、待收货、进行中
|
||||||
|
|||||||
@@ -189,6 +189,10 @@ export interface OrderCreateRequest {
|
|||||||
addressId?: number;
|
addressId?: number;
|
||||||
// 支付方式
|
// 支付方式
|
||||||
payType: number;
|
payType: number;
|
||||||
|
// 支付状态(货到付款时传 true 防止定时任务删除)
|
||||||
|
payStatus?: boolean;
|
||||||
|
// 支付时间(货到付款时传当前时间)
|
||||||
|
payTime?: string;
|
||||||
// 优惠券ID
|
// 优惠券ID
|
||||||
couponId?: number;
|
couponId?: number;
|
||||||
// 备注
|
// 备注
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { getMyAvailableCoupons } from '@/api/shop/shopUserCoupon'
|
|||||||
import AddressCard from '@/components/business/AddressCard'
|
import AddressCard from '@/components/business/AddressCard'
|
||||||
import CouponCard from '@/components/business/CouponCard'
|
import CouponCard from '@/components/business/CouponCard'
|
||||||
import { createOrder } from '@/api/shop/shopOrder'
|
import { createOrder } from '@/api/shop/shopOrder'
|
||||||
import type { ShopOrder } from '@/api/shop/shopOrder/model'
|
|
||||||
import { listShopGoods } from '@/api/shop/shopGoods'
|
import { listShopGoods } from '@/api/shop/shopGoods'
|
||||||
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
||||||
import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model'
|
import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model'
|
||||||
@@ -258,11 +257,19 @@ const CheckoutPage: React.FC = () => {
|
|||||||
specInfo: item.skuSpec || item.sku?.sku || item.product?.specName,
|
specInfo: item.skuSpec || item.sku?.sku || item.product?.specName,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
// 格式化当前时间:yyyy-MM-dd HH:mm:ss(与后端 LocalDateTime 兼容)
|
||||||
|
const now = new Date()
|
||||||
|
const pad = (n: number) => n.toString().padStart(2, '0')
|
||||||
|
const payTime = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`
|
||||||
|
|
||||||
// 创建订单
|
// 创建订单
|
||||||
|
// 货到付款:直接设置 payStatus=true + payTime,防止后端定时任务自动删除未付款订单
|
||||||
const orderParams: OrderCreateRequest = {
|
const orderParams: OrderCreateRequest = {
|
||||||
goodsItems,
|
goodsItems,
|
||||||
addressId: defaultAddress.id,
|
addressId: defaultAddress.id,
|
||||||
payType,
|
payType,
|
||||||
|
payStatus: true,
|
||||||
|
payTime,
|
||||||
couponId: selectedCoupon?.id ? Number(selectedCoupon.id) : undefined,
|
couponId: selectedCoupon?.id ? Number(selectedCoupon.id) : undefined,
|
||||||
comments: remarks,
|
comments: remarks,
|
||||||
deliveryType: 0, // 快递配送
|
deliveryType: 0, // 快递配送
|
||||||
@@ -270,9 +277,6 @@ const CheckoutPage: React.FC = () => {
|
|||||||
|
|
||||||
const res = await createOrder(orderParams)
|
const res = await createOrder(orderParams)
|
||||||
|
|
||||||
// 货到付款 - 只需创建订单,无需调用支付接口
|
|
||||||
console.log('订单创建成功', res)
|
|
||||||
|
|
||||||
// 清理数据
|
// 清理数据
|
||||||
if (fromBuyNow) {
|
if (fromBuyNow) {
|
||||||
Taro.removeStorageSync('buy_now')
|
Taro.removeStorageSync('buy_now')
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user