From 342edad78b81788712beabafea2eb66cc7515513 Mon Sep 17 00:00:00 2001 From: yml Date: Wed, 17 Jun 2026 21:58:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AF=94=E4=BE=8B=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=80=89=E6=8B=A9=E5=92=8C=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/modules/chat/listing_group.go | 2 +- frontend/src/features/seller/composables/usePublishDraft.ts | 5 +++-- .../src/features/seller/views/SellerListingCreateView.vue | 4 ++-- frontend/src/shared/utils/pricing.ts | 5 +++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/internal/modules/chat/listing_group.go b/backend/internal/modules/chat/listing_group.go index 6ae9683..3b11798 100644 --- a/backend/internal/modules/chat/listing_group.go +++ b/backend/internal/modules/chat/listing_group.go @@ -316,7 +316,7 @@ func checkQrCodeStockAndAlert(tx *gorm.DB, conversation *model.ChatConversation) alertContent := fmt.Sprintf("企业微信群二维码库存不足(剩余 %d 张),请及时补充", count) // 发送站内信给所有客服 - var entries []interface{} + entries := make([]map[string]interface{}, 0, len(csAdmins)) now := time.Now() for _, admin := range csAdmins { entries = append(entries, map[string]interface{}{ diff --git a/frontend/src/features/seller/composables/usePublishDraft.ts b/frontend/src/features/seller/composables/usePublishDraft.ts index 303ce33..e085099 100644 --- a/frontend/src/features/seller/composables/usePublishDraft.ts +++ b/frontend/src/features/seller/composables/usePublishDraft.ts @@ -89,8 +89,9 @@ function normalizeDraftForm(value: unknown): PublishForm { next.common_regions = Array.isArray(value.common_regions) ? value.common_regions.filter((region): region is string => typeof region === 'string') : [] - // 默认使用参考比例:如果草稿中的 accelerated_sale_ratio 是 0 或未设置,重置为空字符串 - if (!next.accelerated_sale_ratio || next.accelerated_sale_ratio === 0) { + // 默认使用参考比例:如果草稿中的 accelerated_sale_ratio 是 0、未设置或非法值,重置为空字符串 + const acceleratedRatio = Number(next.accelerated_sale_ratio) + if (!Number.isFinite(acceleratedRatio) || acceleratedRatio <= 0) { next.accelerated_sale_ratio = '' } if (next.haf_coin_amount === 0) next.haf_coin_amount = '' diff --git a/frontend/src/features/seller/views/SellerListingCreateView.vue b/frontend/src/features/seller/views/SellerListingCreateView.vue index d9dc872..fbc1c49 100644 --- a/frontend/src/features/seller/views/SellerListingCreateView.vue +++ b/frontend/src/features/seller/views/SellerListingCreateView.vue @@ -566,7 +566,7 @@ function selectDailyLoss(value: string | number) { class="ratio-mode-btn" :class="{ active: - form.accelerated_sale_ratio === maxAcceleratedSaleRatio && + Number(form.accelerated_sale_ratio) === maxAcceleratedSaleRatio && maxAcceleratedSaleRatio > 0, }" :disabled="maxAcceleratedSaleRatio <= 0" @@ -584,7 +584,7 @@ function selectDailyLoss(value: string | number) { :class="{ active: hasAcceleratedSaleRatioInput() && - form.accelerated_sale_ratio !== maxAcceleratedSaleRatio, + Number(form.accelerated_sale_ratio) !== maxAcceleratedSaleRatio, }" > 自定比例 diff --git a/frontend/src/shared/utils/pricing.ts b/frontend/src/shared/utils/pricing.ts index 6035365..03440d2 100644 --- a/frontend/src/shared/utils/pricing.ts +++ b/frontend/src/shared/utils/pricing.ts @@ -170,8 +170,9 @@ export function readFinalSaleRatio( return roundRatio(Math.min(Math.max(ratio, defaultRatio), maxAcceleratedSaleRatio)) } -export function hasAcceleratedSaleRatioInput(value: number | '') { - return value !== '' && value !== null +export function hasAcceleratedSaleRatioInput(value: number | '' | null | undefined) { + const ratio = Number(value) + return value !== '' && value !== null && value !== undefined && Number.isFinite(ratio) && ratio > 0 } export function calculatePlatformPricing(options: {