From eb40916cf76c24475825e25dfbd7201184ec6614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E9=A6=99=E7=90=AA?= <624506849@qq.com> Date: Wed, 5 Aug 2026 13:48:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E4=BF=83?= =?UTF-8?q?=E9=94=80=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8=E5=92=8C=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E5=8D=A1=E5=88=B8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新促销商品列表组件,简化商品详情页跳转逻辑 - 移除不必要的礼品卡相关状态管理,确保电子卡券逻辑的清晰性 - 调整 utils/goodsType.js 中的卡密处理函数,专注于当前订单的卡密履约行 - 优化订单详情页的卡密展示逻辑,确保信息准确性 --- components/m-goods-list/promotion.vue | 293 +++++++++++++------------- pages/order/cardKey/cardKeyDetail.vue | 24 +-- pages/order/orderDetail.vue | 14 +- utils/goodsType.js | 27 +-- 4 files changed, 165 insertions(+), 193 deletions(-) diff --git a/components/m-goods-list/promotion.vue b/components/m-goods-list/promotion.vue index 57cc804..be91b9e 100644 --- a/components/m-goods-list/promotion.vue +++ b/components/m-goods-list/promotion.vue @@ -1,148 +1,145 @@ - - - - - + + + + + diff --git a/pages/order/cardKey/cardKeyDetail.vue b/pages/order/cardKey/cardKeyDetail.vue index eb48021..4f9a6c6 100644 --- a/pages/order/cardKey/cardKeyDetail.vue +++ b/pages/order/cardKey/cardKeyDetail.vue @@ -16,7 +16,7 @@ class="card-key-fulfill-block" > - {{ line.goodsName || (line.isGift ? '满赠电子卡券' : '电子卡券') }} + {{ line.goodsName || '电子卡券' }} /** * 电子卡券卡密二级页(原型 P-09)。 - * 数据来源:GET /buyer/order/order/{orderSn} → orderItems[].cardKeys(明文 cardSecret)。 + * 仅展示当前 orderSn 对应订单的 orderItems[].cardKeys;满赠赠品请进赠品订单查看。 */ import { ref, computed } from 'vue' import { onLoad, onPullDownRefresh } from '@dcloudio/uni-app' @@ -69,27 +69,23 @@ const orderSn = ref('') const loading = ref(true) const errorMessage = ref('') const orderItems = ref([]) -const giftECouponOrders = ref([]) const orderStatus = ref('') const cardKeyFulfillLines = computed(() => - collectCardKeyFulfillLines(orderItems.value, giftECouponOrders.value).filter( + collectCardKeyFulfillLines(orderItems.value).filter( (line) => line.status === CARD_KEY_FULFILL_STATUS.DELIVERED && line.cardKeys.length ) ) -const cardKeyRows = computed(() => - flattenOrderCardKeys(orderItems.value, false, giftECouponOrders.value) -) +const cardKeyRows = computed(() => flattenOrderCardKeys(orderItems.value)) const emptyMessage = computed(() => { if (orderStatus.value === 'CANCELLED') { return '订单已关闭,暂无卡密信息' } - const pending = collectCardKeyFulfillLines( - orderItems.value, - giftECouponOrders.value - ).find((line) => line.status !== CARD_KEY_FULFILL_STATUS.DELIVERED) + const pending = collectCardKeyFulfillLines(orderItems.value).find( + (line) => line.status !== CARD_KEY_FULFILL_STATUS.DELIVERED + ) if (pending) { return resolveCardKeyFulfillMessage(pending) } @@ -126,15 +122,11 @@ function loadData(fromPullDown = false) { return } const result = res.data.result - const isEcoupon = isECouponOrder(result?.order?.orderType) - const hasGiftEcoupon = - Array.isArray(result?.giftECouponOrders) && result.giftECouponOrders.length > 0 - if (!isEcoupon && !hasGiftEcoupon) { + if (!isECouponOrder(result?.order?.orderType)) { errorMessage.value = '该订单没有电子卡券卡密' return } orderItems.value = result.orderItems || [] - giftECouponOrders.value = result.giftECouponOrders || [] orderStatus.value = result.order?.orderStatus || '' }) .catch(() => { diff --git a/pages/order/orderDetail.vue b/pages/order/orderDetail.vue index fb4063d..08ebd9f 100644 --- a/pages/order/orderDetail.vue +++ b/pages/order/orderDetail.vue @@ -312,19 +312,16 @@ const cancelList = ref([]) const rogShow = ref(false) const reason = ref('') const orderPackage = ref('') -const giftECouponOrders = ref([]) - -// orderType=E_COUPON:无物流/核销码,卡密见 cardKeyDetail(API-B-01 orderItems[].cardKeys) +// orderType=E_COUPON:无物流/核销码;卡密见 cardKeyDetail(仅本单 orderItems,不含满赠子单) const isECouponOrder = computed(() => checkECouponOrder(order.value?.orderType)) const isNonPhysicalOrder = computed(() => checkNonPhysicalOrder(order.value?.orderType)) const ecouponCardKeyDelivered = computed(() => - orderHasCardKeyContent(orderGoodsList.value, giftECouponOrders.value) + orderHasCardKeyContent(orderGoodsList.value) ) const ecouponPendingMessage = computed(() => { - const pending = collectCardKeyFulfillLines( - orderGoodsList.value, - giftECouponOrders.value - ).find((line) => line.status !== CARD_KEY_FULFILL_STATUS.DELIVERED) + const pending = collectCardKeyFulfillLines(orderGoodsList.value).find( + (line) => line.status !== CARD_KEY_FULFILL_STATUS.DELIVERED + ) return pending ? resolveCardKeyFulfillMessage(pending) : '' }) @@ -412,7 +409,6 @@ function loadData(orderSnParam: string) { order.value = result.order orderGoodsList.value = result.orderItems orderDetail.value = result - giftECouponOrders.value = result.giftECouponOrders || [] if ( result.order.deliveryMethod === 'LOGISTICS' && !checkECouponOrder(result.order.orderType) && diff --git a/utils/goodsType.js b/utils/goodsType.js index cad6f3a..649363d 100644 --- a/utils/goodsType.js +++ b/utils/goodsType.js @@ -115,20 +115,16 @@ function normalizeCardKeyFulfillLine(source) { status, message: source.cardKeyFulfillMessage, cardKeys, - isGift: !!source.isGift, } } -/** 汇总 E_COUPON 主单行 + 满赠子单摘要的履约行 */ -export function collectCardKeyFulfillLines(orderItems = [], giftSummaries = []) { +/** 汇总当前订单 orderItems 的卡密履约行(仅本单;满赠赠品在赠品订单单独查看) */ +export function collectCardKeyFulfillLines(orderItems = []) { const lines = [] ;(orderItems || []).forEach((item) => { if (!isCardKeyFulfillApplicable(item)) return lines.push(normalizeCardKeyFulfillLine(item)) }) - ;(giftSummaries || []).forEach((gift) => { - lines.push(normalizeCardKeyFulfillLine({ ...gift, isGift: true })) - }) return lines } @@ -143,19 +139,15 @@ function flattenCardKeyFulfillLines(lines, withGoodsName = false) { return rows } -/** 订单是否含已交付卡密(含满赠 E_COUPON 子单) */ -export function orderHasCardKeyContent(orderItems, giftSummaries) { - const lines = collectCardKeyFulfillLines(orderItems, giftSummaries) +/** 当前订单是否含已交付卡密(仅 orderItems) */ +export function orderHasCardKeyContent(orderItems) { + const lines = collectCardKeyFulfillLines(orderItems) return flattenCardKeyFulfillLines(lines).length > 0 } /** 将 orderItems[].cardKeys 展平为明文列表(DELIVERED 且含 cardSecret) */ -export function flattenOrderCardKeys( - orderItems, - withGoodsName = false, - giftSummaries -) { - const lines = collectCardKeyFulfillLines(orderItems, giftSummaries) +export function flattenOrderCardKeys(orderItems, withGoodsName = false) { + const lines = collectCardKeyFulfillLines(orderItems) if (lines.some((line) => line.status)) { return flattenCardKeyFulfillLines(lines, withGoodsName) } @@ -168,8 +160,3 @@ export function flattenOrderCardKeys( }) return rows } - -/** 是否已发卡(兼容旧调用;含满赠子单) */ -export function isCardKeyDelivered(orderItems, giftSummaries) { - return orderHasCardKeyContent(orderItems, giftSummaries) -}