From 0bf21e713350c4a5e047a0b65e96cd753e60c369 Mon Sep 17 00:00:00 2001 From: DU Date: Sun, 18 Jan 2026 00:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E8=B4=AD=E5=8D=B7=E5=BC=80=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.config.ts | 1 + .../couponStart/images/scanIconIn.png | Bin 0 -> 3394 bytes src/pageScan/couponStart/index.config.ts | 5 + src/pageScan/couponStart/index.scss | 449 ++++++++++++++++++ src/pageScan/couponStart/index.tsx | 307 ++++++++++++ src/pageScan/startTable/index.tsx | 8 + 6 files changed, 770 insertions(+) create mode 100644 src/pageScan/couponStart/images/scanIconIn.png create mode 100644 src/pageScan/couponStart/index.config.ts create mode 100644 src/pageScan/couponStart/index.scss create mode 100644 src/pageScan/couponStart/index.tsx diff --git a/src/app.config.ts b/src/app.config.ts index c52ab69..0a9ad92 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -37,6 +37,7 @@ export default defineAppConfig({ 'startTable/index', // 开台页面 'selfStart/index', // 自助开台页面 'timedStart/index', // 定时开台页面 + 'couponStart/index', // 团购券开台页面 ] } ], diff --git a/src/pageScan/couponStart/images/scanIconIn.png b/src/pageScan/couponStart/images/scanIconIn.png new file mode 100644 index 0000000000000000000000000000000000000000..fa32cec1e5870664e0509434a1d0d6478bbe7385 GIT binary patch literal 3394 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 { + const [couponCode, setCouponCode] = useState('') // 券码 + const [selectedCouponType, setSelectedCouponType] = useState(CouponType.THIRD_PARTY) + const [selectedCouponId, setSelectedCouponId] = useState(1) // 选中的券ID + + // 券列表数据 + const [coupons, setCoupons] = useState([ + { + id: 1, + type: '团八', + duration: '20', + couponType: '活动抵时券', + title: '20分钟通用券(体验券)', + expireDate: '2025-10-01 16:21', + description: '需要交押金,超时扣押金\n单笔满40分钟可减免20分钟', + details: ['不限时段,全天可用', '适用类型:中八', '每桌只单限用1张'], + expanded: false, + }, + { + id: 2, + type: '黑八', + duration: '180', + couponType: '抵时券', + title: '自助中式台球3小时59.9元体验券', + expireDate: '2025-11-01 09:00', + description: '', + details: ['不限时段,全天可用'], + expanded: false, + }, + ]) + + useLoad(() => { + console.log('团购券开台页面加载') + }) + + // 拨打电话 + const handlePhoneCall = () => { + Taro.makePhoneCall({ + phoneNumber: '100-666-XXXX', + }).catch((err) => { + console.error('拨打电话失败:', err) + }) + } + + // 扫描券码 + const handleScanCode = () => { + Taro.scanCode({ + scanType: ['qrCode', 'barCode'], + }).then((res) => { + setCouponCode(res.result) + }).catch((err) => { + console.error('扫码失败:', err) + }) + } + + // 切换券类型 + const handleSwitchType = (type: CouponType) => { + setSelectedCouponType(type) + } + + // 选择券 + const handleSelectCoupon = (id: number) => { + setSelectedCouponId(id) + } + + // 展开/收起券详情 + const handleToggleExpand = (id: number) => { + setCoupons(prev => prev.map(coupon => + coupon.id === id ? { ...coupon, expanded: !coupon.expanded } : coupon + )) + } + + // 兑换开台 + const handleExchange = () => { + if (!selectedCouponId) { + Taro.showToast({ + title: '请选择一张券', + icon: 'none', + duration: 2000 + }) + return + } + + console.log('兑换开台,选中券ID:', selectedCouponId) + Taro.showToast({ + title: '功能开发中', + icon: 'none', + duration: 2000 + }) + } + + return ( + + {/* 内容区域 */} + + {/* 台球桌信息卡片 */} + + {/* 顶部:店名和电话 */} + + 北京黑八大师联盟球厅店 + + + 联系店长 + + + + {/* 台球桌标题 */} + + [中式台球]来力.山岩-A03/3号球桌 + + + {/* 价格信息 */} + + + ¥28.80 + /小时 + + + 押金 + ¥100.00 + + + VIP ¥20.00 + + + + {/* 价格时段 */} + + 价格时段:00:00-24:00 + + + + {/* 使用说明 */} + + + + + + 打开美团、抖音、大众点评或快手等 + + + + + + 长按复制券码贴到对方输入框 + + + + + + 点击[兑换],成功兑换团购券 + + 注:也可以通过扫团购券码完成兑换 + + + {/* 券码输入框 */} + + setCouponCode(e.detail.value)} + /> + + + + {/* 券类型选项卡 */} + + + handleSwitchType(CouponType.THIRD_PARTY)} + > + 第三方卡券 + {selectedCouponType === CouponType.THIRD_PARTY && } + + handleSwitchType(CouponType.ACTIVITY)} + > + 活动卡券 + {selectedCouponType === CouponType.ACTIVITY && } + + + + 共{coupons.length}张 + + + + + {/* 券列表 */} + + {coupons.map((coupon) => ( + + {/* 左上角标签 */} + {coupon.type} + + handleSelectCoupon(coupon.id)}> + {/* 左侧:时长和券类型 */} + + + {coupon.duration} + 分钟 + + {coupon.couponType} + + + {/* 右侧:信息区域 */} + + {/* 标题行:标题 + 选择按钮 */} + + {coupon.title} + { + e.stopPropagation() + handleSelectCoupon(coupon.id) + }} + > + {selectedCouponId === coupon.id && } + + + + {/* 有效期 */} + 有效日期至:{coupon.expireDate} + + {/* 描述 */} + {coupon.description && {coupon.description}} + + + + {/* 详情区域 */} + + {/* 第一条详情 + 展开/收起按钮 */} + {coupon.details.length > 0 && ( + + {coupon.details[0]} + handleToggleExpand(coupon.id)} + > + {coupon.expanded ? '∧' : '∨'} + + + )} + + {/* 展开时显示其余详情 */} + {coupon.expanded && coupon.details.slice(1).map((detail, index) => ( + {detail} + ))} + + + ))} + + + {/* 底部提示 */} + 到底了~ + + + {/* 底部固定按钮 */} + + + 兑换开台 + + + + ) +} + +export default CouponStart diff --git a/src/pageScan/startTable/index.tsx b/src/pageScan/startTable/index.tsx index 03b71d9..1fe58d7 100644 --- a/src/pageScan/startTable/index.tsx +++ b/src/pageScan/startTable/index.tsx @@ -66,6 +66,14 @@ const StartTable = () => { return } + // 如果是团购券开台,跳转到团购券开台页面 + if (method.id === 4) { + Taro.navigateTo({ + url: '/pageScan/couponStart/index' + }) + return + } + // 其他方式暂时提示功能开发中 Taro.showToast({ title: '功能开发中',