feat: support badge gifting in props send

This commit is contained in:
zhx 2026-05-16 03:17:54 +08:00
parent 5102e086aa
commit 5260a674ae

View File

@ -86,7 +86,7 @@ const propsResourceOptions = computed(() =>
); );
const badgeResourceOptions = computed(() => const badgeResourceOptions = computed(() =>
badgeSourceOptions.value.map((item) => ({ badgeSourceOptions.value.map((item) => ({
label: `${item.badgeConfigId} / ${item.name}`, label: `${item.badgeConfigId} / ${item.badgeName || item.name || '-'}`,
value: item.badgeConfigId as any, value: item.badgeConfigId as any,
})), })),
); );
@ -96,6 +96,19 @@ const ticketResourceOptions = computed(() =>
value: item.id as any, value: item.id as any,
})), })),
); );
const badgePreviewItem = computed(() => {
const item = badgeSelectedResource.value;
if (!item) {
return null;
}
return {
...item,
cover: item.selectUrl || item.cover,
id: item.badgeConfigId || item.id,
name: item.badgeName || item.name,
type: 'BADGE',
};
});
const propsForm = reactive({ const propsForm = reactive({
content: '', content: '',
@ -132,7 +145,7 @@ function hasPermission(code: string) {
} }
const canSendProps = computed(() => hasPermission('send:props')); const canSendProps = computed(() => hasPermission('send:props'));
const canSendBadge = computed(() => hasPermission('send:props:badge')); const canSendBadge = computed(() => canSendProps.value || hasPermission('send:props:badge'));
const canSendTicket = computed(() => hasPermission('send:props:coupon')); const canSendTicket = computed(() => hasPermission('send:props:coupon'));
function normalizeAccounts(value: string) { function normalizeAccounts(value: string) {
@ -480,12 +493,12 @@ async function handleSendTicket() {
show-search show-search
@change="handleBadgeResourceChange" @change="handleBadgeResourceChange"
/> />
<div v-if="badgeSelectedResource" class="resource-preview"> <div v-if="badgePreviewItem" class="resource-preview">
<RewardIcon :item="badgeSelectedResource" :size="64" /> <RewardIcon :item="badgePreviewItem" :size="64" />
<div class="resource-preview__meta"> <div class="resource-preview__meta">
<div>{{ badgeSelectedResource.name }}</div> <div>{{ badgePreviewItem.name }}</div>
<div class="resource-preview__id"> <div class="resource-preview__id">
ID: {{ badgeSelectedResource.badgeConfigId }} ID: {{ badgePreviewItem.id }}
</div> </div>
</div> </div>
</div> </div>