From 1cdb6404adc7efad62cf65a50948b6868776c605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 10 Mar 2026 13:56:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(ticket):=20=E6=B7=BB=E5=8A=A0=E6=B0=B4?= =?UTF-8?q?=E7=A5=A8=E7=AB=8B=E5=8D=B3=E9=80=81=E6=B0=B4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 ensureLoggedIn 工具函数用于登录验证 - 实现 goSendWater 函数处理送水逻辑 - 添加水票状态和可用次数校验 - 在水票列表项中添加立即送水按钮 - 设置按钮禁用状态根据水票可用性 - 防止卡片点击事件冒泡冲突 --- src/user/ticket/index.tsx | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/user/ticket/index.tsx b/src/user/ticket/index.tsx index dc7d7b0..9583dfb 100644 --- a/src/user/ticket/index.tsx +++ b/src/user/ticket/index.tsx @@ -20,6 +20,7 @@ import { pageGltTicketOrder, removeGltTicketOrder, updateGltTicketOrder } from ' import type { GltTicketOrder } from '@/api/glt/gltTicketOrder/model'; import { BaseUrl } from '@/config/app'; import dayjs from "dayjs"; +import { ensureLoggedIn } from '@/utils/auth'; const PAGE_SIZE = 10; @@ -94,6 +95,27 @@ const UserTicketList = () => { setQrVisible(true); }; + const goSendWater = async (ticket: GltUserTicket) => { + if (!ticket?.id) { + Taro.showToast({ title: '水票信息不完整', icon: 'none' }); + return; + } + if (Number(ticket.status) === 1) { + Taro.showToast({ title: '该水票已冻结,无法下单', icon: 'none' }); + return; + } + const avail = Number(ticket.availableQty ?? 0); + if (!Number.isFinite(avail) || avail <= 0) { + Taro.showToast({ title: '可用次数不足', icon: 'none' }); + return; + } + const gid = Number(ticket.goodsId); + const url = + Number.isFinite(gid) && gid > 0 ? `/user/ticket/use?goodsId=${gid}` : '/user/ticket/use'; + if (!ensureLoggedIn(url)) return; + await Taro.navigateTo({ url }); + }; + const showTicketDetail = (ticket: GltUserTicket) => { const lines: string[] = []; if (ticket.templateName) lines.push(`水票:${ticket.templateName}`); @@ -555,13 +577,25 @@ const UserTicketList = () => { )} - + + {/**/} {/* {item.status === 1 ? '冻结' : '正常'}*/} {/**/}