From 2497f33cb40bdb79cccee8e5cdd241e1b60c5b78 Mon Sep 17 00:00:00 2001 From: "pikachu1995@126.com" Date: Fri, 6 Nov 2026 15:20:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(gift-card):=20=E6=96=B0=E5=A2=9E=E6=8F=90?= =?UTF-8?q?=E8=B4=A7=E5=8D=A1=E7=B1=BB=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 列表页拆分为提货卡和现金卡两个独立创建入口 - 创建页支持提货卡兑换方式配置(任选一种/全部兑换/任选N种) - 集成 SKU 商品选择器,支持最多50个商品兑换配置 - 批次凭证页增加"已提货"状态标签及提货卡面额展示适配 - 批次凭证页新增导出卡密功能 - 重构表单布局为响应式 grid 并优化有效期选项交互样式 --- buyer/src/api/pickupCard.js | 13 + buyer/src/pages/home/orderCenter/MyOrder.vue | 3 + .../pages/home/orderCenter/OrderDetail.vue | 1 + .../src/pages/home/userCenter/MyGiftCards.vue | 327 ++++++------ .../src/pages/home/userCenter/PickupCard.vue | 194 ++++++++ buyer/src/router/index.js | 6 + manager/src/api/promotion.js | 7 +- manager/src/utils/specs.js | 44 ++ .../gift-card-cash-activity-add.vue | 467 ++++++++---------- .../gift-card-cash-activity.vue | 11 +- .../gift-card-cash-batch-credentials.vue | 245 +++++---- .../gift-card-cash/gift-card-cash-records.vue | 16 +- 12 files changed, 782 insertions(+), 552 deletions(-) create mode 100644 buyer/src/api/pickupCard.js create mode 100644 buyer/src/pages/home/userCenter/PickupCard.vue create mode 100644 manager/src/utils/specs.js diff --git a/buyer/src/api/pickupCard.js b/buyer/src/api/pickupCard.js new file mode 100644 index 000000000..36b39a5a9 --- /dev/null +++ b/buyer/src/api/pickupCard.js @@ -0,0 +1,13 @@ +/** + * 提货卡选品、试算及一次兑换接口。 + * @author Bulbasaur + * @since 2026-11-05 + */ +import request, { Method } from '@/plugins/request.js'; + +/** 查询当前会员的卡规则及候选 SKU。 */ +export const getPickupCard = id => request({ url: `/buyer/promotion/pickupCard/${encodeURIComponent(id)}`, method: Method.GET, needToken: true }); +/** 服务端校验商品与地址,返回零现金试算。 */ +export const previewPickupCard = data => request({ url: '/buyer/promotion/pickupCard/preview', method: Method.POST, needToken: true, headers: { 'Content-Type': 'application/json' }, data }); +/** 一次兑换;重试返回同一卡已创建的交易。 */ +export const redeemPickupCard = data => request({ url: '/buyer/promotion/pickupCard/redeem', method: Method.POST, needToken: true, headers: { 'Content-Type': 'application/json' }, data }); diff --git a/buyer/src/pages/home/orderCenter/MyOrder.vue b/buyer/src/pages/home/orderCenter/MyOrder.vue index d0e1a319a..fbcdf44a8 100644 --- a/buyer/src/pages/home/orderCenter/MyOrder.vue +++ b/buyer/src/pages/home/orderCenter/MyOrder.vue @@ -176,6 +176,7 @@ + {{ item.reason }} @@ -227,6 +228,7 @@ const changeWay = ref(['全部', '待付款', '待发货', '待收货/使用']); const activeOrderTab = ref(0); const total = ref(0); // 数据总数 const spinShow = ref(false); // 加载状态 +const cancelIsPickup = ref(false); const cancelAvail = ref(false); // 取消订单modal控制 const cancelReason = ref([]); // 取消订单原因 @@ -365,6 +367,7 @@ function changePageSize (val) { // 修改页数 } function handleCancelOrder (sn) { // 取消订单 + cancelIsPickup.value = !!orderList.value.find(order => order.sn === sn)?.pickupCardId; cancelParams.orderSn = sn; afterSaleReason('CANCEL').then(res => { if (res.success) { diff --git a/buyer/src/pages/home/orderCenter/OrderDetail.vue b/buyer/src/pages/home/orderCenter/OrderDetail.vue index 9276a99ad..bd80996a9 100644 --- a/buyer/src/pages/home/orderCenter/OrderDetail.vue +++ b/buyer/src/pages/home/orderCenter/OrderDetail.vue @@ -341,6 +341,7 @@ v-model="cancelAvail" title="请选择取消订单原因" > + diff --git a/buyer/src/pages/home/userCenter/MyGiftCards.vue b/buyer/src/pages/home/userCenter/MyGiftCards.vue index 2c5e95e2e..ba7f75a88 100644 --- a/buyer/src/pages/home/userCenter/MyGiftCards.vue +++ b/buyer/src/pages/home/userCenter/MyGiftCards.vue @@ -1,19 +1,20 @@ @@ -387,8 +389,9 @@ function formatValidity(row) { } return parts.join(" "); } -function addActivity() { - router.push({ name: "add-gift-card-cash-activity" }); +/** 从独立入口创建指定类型的卡,类型在创建页固定展示。 */ +function addActivity(cardType) { + router.push({ name: "add-gift-card-cash-activity", query: { cardType } }); } function goEdit(row) { if (!canEdit(row)) { diff --git a/manager/src/views/promotions/gift-card-cash/gift-card-cash-batch-credentials.vue b/manager/src/views/promotions/gift-card-cash/gift-card-cash-batch-credentials.vue index 28615a254..3c97b68db 100644 --- a/manager/src/views/promotions/gift-card-cash/gift-card-cash-batch-credentials.vue +++ b/manager/src/views/promotions/gift-card-cash/gift-card-cash-batch-credentials.vue @@ -2,52 +2,56 @@