forked from gxwebsoft/mp-10550
feat(ticket): 添加水票释放计划功能
- 在应用配置中注册新的释放计划页面路由 ticket/release/index - 简化 API 请求参数结构,移除不必要的包装对象 - 在用户票券列表中添加释放计划详情入口和跳转逻辑 - 显示票券套票名称信息增强用户体验 - 在配送时间选择中添加日期验证防止选择过去日期 - 新增完整的释放计划详情页面实现列表展示、下拉刷新、上拉加载等功能 - 添加释放计划状态显示和数量统计信息展示
This commit is contained in:
@@ -13,7 +13,7 @@ import {
|
||||
Space
|
||||
} from '@nutui/nutui-react-taro'
|
||||
import { ArrowRight, Location, Ticket } from '@nutui/icons-react-taro'
|
||||
import dayjs from 'dayjs'
|
||||
import dayjs, { type Dayjs } from 'dayjs'
|
||||
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
||||
import { getShopGoods } from '@/api/shop/shopGoods'
|
||||
import { getShopUserAddress, listShopUserAddress } from '@/api/shop/shopUserAddress'
|
||||
@@ -136,6 +136,12 @@ const OrderConfirm = () => {
|
||||
return d.isValid() ? d : null
|
||||
}
|
||||
|
||||
const clampSendDateToToday = (d: Dayjs) => {
|
||||
const today = dayjs().startOf('day')
|
||||
if (!d.isValid()) return today
|
||||
return d.isBefore(today, 'day') ? today : d.startOf('day')
|
||||
}
|
||||
|
||||
const getOrderTime = (o?: Partial<GltTicketOrder> | null) => {
|
||||
return parseTime(o?.createTime) || parseTime(o?.updateTime)
|
||||
}
|
||||
@@ -728,6 +734,11 @@ const OrderConfirm = () => {
|
||||
Taro.showToast({ title: '请选择配送时间', icon: 'none' })
|
||||
return
|
||||
}
|
||||
if (dayjs(sendTime).isBefore(dayjs().startOf('day'), 'day')) {
|
||||
Taro.showToast({ title: '配送时间不能早于今天', icon: 'none' })
|
||||
setSendTime(dayjs().startOf('day').toDate())
|
||||
return
|
||||
}
|
||||
|
||||
// 配送范围校验(电子围栏)
|
||||
const ok = await ensureInDeliveryRange()
|
||||
@@ -869,7 +880,7 @@ const OrderConfirm = () => {
|
||||
setQuantity(Number.isFinite(initQty) && initQty > 0 ? initQty : minStartQty)
|
||||
setOrderRemark(String(editingOrderRes.buyerRemarks || ''))
|
||||
const st = parseTime(editingOrderRes.sendTime)
|
||||
if (st) setSendTime(st.startOf('day').toDate())
|
||||
if (st) setSendTime(clampSendDateToToday(st).toDate())
|
||||
|
||||
const addrId = Number(editingOrderRes.addressId)
|
||||
const addrIdSafe = Number.isFinite(addrId) && addrId > 0 ? addrId : undefined
|
||||
@@ -1162,11 +1173,18 @@ const OrderConfirm = () => {
|
||||
extra={(
|
||||
<Picker
|
||||
mode="date"
|
||||
start={dayjs().format('YYYY-MM-DD')}
|
||||
value={dayjs(sendTime).format('YYYY-MM-DD')}
|
||||
onChange={(e) => {
|
||||
const v = (e as any)?.detail?.value
|
||||
const d = dayjs(v)
|
||||
if (d.isValid()) setSendTime(d.startOf('day').toDate())
|
||||
if (!d.isValid()) return
|
||||
if (d.isBefore(dayjs().startOf('day'), 'day')) {
|
||||
Taro.showToast({ title: '配送时间不能早于今天', icon: 'none' })
|
||||
setSendTime(dayjs().startOf('day').toDate())
|
||||
return
|
||||
}
|
||||
setSendTime(d.startOf('day').toDate())
|
||||
}}
|
||||
>
|
||||
<View className={'flex items-center gap-2'}>
|
||||
|
||||
Reference in New Issue
Block a user