From 99a55af2b61367f1410574a31931d6cc7a64e1e9 Mon Sep 17 00:00:00 2001 From: wikiboss Date: Thu, 17 Sep 2026 16:15:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(uniapp):=20=E5=AF=B9=E9=BD=90=E5=85=91?= =?UTF-8?q?=E6=8D=A2=E5=88=B8=E9=A1=B5=E9=9D=A2=E9=BB=91=E9=87=91=E5=B0=8A?= =?UTF-8?q?=E4=BA=AB=E5=8D=A1=E7=89=87=E4=B8=8E=E9=87=8A=E6=94=BE=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=8D=A1=E7=89=87=E6=B5=81=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/verify_voucher_page_spec.js | 74 +++ uniapp/pages/commission/voucher.vue | 751 +++++++++++++++++++++------- 2 files changed, 640 insertions(+), 185 deletions(-) create mode 100644 tests/verify_voucher_page_spec.js diff --git a/tests/verify_voucher_page_spec.js b/tests/verify_voucher_page_spec.js new file mode 100644 index 0000000..ab6e79f --- /dev/null +++ b/tests/verify_voucher_page_spec.js @@ -0,0 +1,74 @@ +const fs = require('fs'); +const path = require('path'); + +let passed = 0; +let failed = 0; + +function assert(condition, testName, detail = '') { + if (condition) { + console.log(` [PASS] ${testName}`); + passed++; + } else { + console.error(` [FAIL] ${testName} - ${detail}`); + failed++; + } +} + +console.log("========================================================"); +console.log(" 兑换券页面对齐马豆页面规格与黑金卡片交互测试"); +console.log("========================================================\n"); + +// 1. 验证 voucher.vue 存在性 +const voucherVuePath = path.resolve(__dirname, '../uniapp/pages/commission/voucher.vue'); +assert(fs.existsSync(voucherVuePath), 'voucher.vue 文件存在'); +const content = fs.readFileSync(voucherVuePath, 'utf-8'); + +// 2. 验证黑金尊享卡片结构对齐 +assert( + content.includes('asset-card') && content.includes('madow-hero') || content.includes('voucher-hero'), + '包含黑金资产大卡片与核心大字数展示结构', + '未包含类似 madow.vue 的黑金尊享卡片' +); + +// 3. 验证 4 项核心数据指标完整对齐 +assert( + content.includes('voucher_total') && + content.includes('voucher_released') && + content.includes('voucher_used') && + content.includes('voucher_available'), + '包含累计获得、已释放、已使用、可用兑换券 4 项核心指标完整绑定', + '缺少核心兑换券指标' +); + +// 4. 验证胶囊指示栏与规则弹窗 +assert( + content.includes('su-popup') && content.includes('showHelp') && content.includes('释放规则'), + '包含释放规则按钮与 su-popup 规则说明弹窗', + '缺少规则弹窗交互' +); + +// 5. 验证订单卡片流与进度展示 +assert( + content.includes('log-card') || content.includes('plan-card'), + '订单释放计划升级为卡片流形式', + '仍为旧版普通边框单列表' +); + +assert( + content.includes('released_days') || content.includes('total_days') || content.includes('planProgress'), + '卡片流中计算并展示释放天数与线性进度条', + '缺少释放天数或进度条' +); + +// 6. 验证快捷兑换入口 +assert( + content.includes('/pages/index/index') || content.includes('/pages/goods/list') || content.includes('去兑换'), + '提供前往商城的兑换引导入口', + '缺少商城引导' +); + +console.log("\n--------------------------------------------------------"); +console.log(`测试执行结果: 通过 ${passed} 项, 失败 ${failed} 项`); +console.log("========================================================"); + +process.exit(failed === 0 ? 0 : 1); diff --git a/uniapp/pages/commission/voucher.vue b/uniapp/pages/commission/voucher.vue index 23b824e..e2025b3 100644 --- a/uniapp/pages/commission/voucher.vue +++ b/uniapp/pages/commission/voucher.vue @@ -1,106 +1,228 @@