From 5102e086aadc0f16a699489810a849a15d718dde Mon Sep 17 00:00:00 2001 From: zhx Date: Sat, 16 May 2026 02:26:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0vip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/resource-config-modal.vue | 34 +++++++++++++++++++ .../views/resident-activity/vip-config.vue | 18 ++++++---- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/apps/src/views/props/components/resource-config-modal.vue b/apps/src/views/props/components/resource-config-modal.vue index 117e1f8..253d77b 100644 --- a/apps/src/views/props/components/resource-config-modal.vue +++ b/apps/src/views/props/components/resource-config-modal.vue @@ -24,6 +24,7 @@ import { } from '#/api/legacy/props'; import { + BADGE_DISPLAY_TYPE_OPTIONS, BADGE_TYPE_OPTIONS, NOBLE_VIP_OPTIONS, PROPS_RESOURCE_CONFIG_TYPES, @@ -54,6 +55,7 @@ const notSelectInputRef = ref(); const form = reactive>({ adminFree: false, amount: '', + badgeDisplayType: 'SHORT', badgeKey: '', badgeLevel: '', badgeType: 'ACTIVITY', @@ -107,6 +109,10 @@ const badgeTypeOptions = BADGE_TYPE_OPTIONS.filter((item) => label: item.name, value: item.value as any, })); +const badgeDisplayTypeOptions = BADGE_DISPLAY_TYPE_OPTIONS.map((item) => ({ + label: item.name, + value: item.value as any, +})); function parseBadgeExpand(value: unknown) { if (!value || typeof value !== 'string') { @@ -124,12 +130,17 @@ function applyBadgeExpand(value: unknown) { form.badgeKey = expand.badgeKey ?? ''; form.badgeLevel = expand.badgeLevel ?? ''; form.badgeType = expand.badgeType || 'ACTIVITY'; + form.badgeDisplayType = normalizeBadgeDisplayType( + expand.badgeDisplayType || expand.displayType, + form.badgeType, + ); form.milestone = expand.milestone ?? ''; form.notSelectUrl = expand.notSelectUrl ?? ''; } function buildBadgeExpand() { const expand: Record = { + badgeDisplayType: normalizeBadgeDisplayType(form.badgeDisplayType, form.badgeType), badgeType: form.badgeType || 'ACTIVITY', }; if (String(form.badgeKey || '').trim()) { @@ -147,9 +158,18 @@ function buildBadgeExpand() { return JSON.stringify(expand); } +function normalizeBadgeDisplayType(value: unknown, badgeType?: unknown) { + const displayType = String(value || '').trim().toUpperCase(); + if (displayType === 'LONG' || displayType === 'SHORT') { + return displayType; + } + return String(badgeType || '').trim().toUpperCase() === 'VIP' ? 'LONG' : 'SHORT'; +} + function resetForm() { form.adminFree = false; form.amount = ''; + form.badgeDisplayType = 'SHORT'; form.badgeKey = ''; form.badgeLevel = ''; form.badgeType = 'ACTIVITY'; @@ -212,6 +232,9 @@ watch( if (value === 'BADGE' && !form.badgeType) { form.badgeType = 'ACTIVITY'; } + if (value === 'BADGE' && !form.badgeDisplayType) { + form.badgeDisplayType = 'SHORT'; + } if (!['BADGE', 'CHAT_BUBBLE'].includes(value)) { form.expand = ''; } @@ -288,6 +311,10 @@ function validateForm() { message.warning('请选择徽章类型'); return false; } + if (form.type === 'BADGE' && !form.badgeDisplayType) { + message.warning('请选择徽章展示形态'); + return false; + } if ( form.type === 'BADGE' && String(form.badgeLevel || '').trim() && @@ -384,6 +411,13 @@ async function handleSubmit() { />