+
{record.target_skin || '黑色ROCK长袖T恤'}
- {record.upstream_fulfill_id && (
-
- {record.upstream_fulfill_id}
-
- )}
)
diff --git a/frontend/src/utils/voucher.ts b/frontend/src/utils/voucher.ts
index 8b562fd..4e79d65 100644
--- a/frontend/src/utils/voucher.ts
+++ b/frontend/src/utils/voucher.ts
@@ -163,16 +163,20 @@ export async function generateVoucherDataURL(data: DeliveryVoucherData): Promise
ctx.lineTo(width - 80, lineY)
ctx.stroke()
- // 6. 核心数据列表明细 (Key - Value 对齐)
- const listItems = [
- { label: '游戏角色', value: data.roleName || '-' },
+ // 6. 核心数据列表明细 (Key - Value 对齐,与提货页保持完全一致)
+ const listItems: Array<{ label: string; value: string }> = []
+
+ // 仅在有合法角色名且非 '-' 时才展示游戏角色
+ const cleanRole = (data.roleName || '').trim()
+ if (cleanRole && cleanRole !== '-') {
+ listItems.push({ label: '游戏角色', value: cleanRole })
+ }
+
+ listItems.push(
{ label: '游戏区服', value: data.channel || '安卓-微信' },
{ label: '兑换账号', value: data.roleUID || '-' },
{ label: '兑换时间', value: data.redeemedAt || formatDateTime(new Date().toISOString()) },
- ]
- if (data.voucherNo) {
- listItems.push({ label: '官方单号', value: data.voucherNo })
- }
+ )
let rowY = 475
const rowHeight = 44
@@ -241,12 +245,11 @@ export async function generateDeliveryVoucher(order: DeliveryOrderInfo): Promise
productName: order.product?.name || (isRock ? '黑色ROCK长袖T恤' : '和平精英道具'),
productSKU: order.product?.sku,
productImage: resolveProductImage({ sku: order.product?.sku, name: order.product?.name, url: order.product?.image }),
- roleName: order.role_name || '-',
+ roleName: order.role_name && order.role_name.trim() !== '-' ? order.role_name.trim() : '',
roleUID: order.game_uid || order.buyer_name || '-',
channel: order.game_channel || (order.game_uid?.length === 10 ? '微信区' : '手Q / 微信区'),
currencyText: isRock ? '幸运币 x 10' : undefined,
redeemedAt: order.shipped_at ? formatDateTime(order.shipped_at) : formatDateTime(order.created_at),
- voucherNo: order.provider_order_no || undefined,
})
}