`共 ${total} 条`,
}}
tableLayout="fixed"
scroll={{ x: 850 }}
/>
{selectedText}}
style={{ flexShrink: 0, display: 'flex', flexDirection: 'column' }}
styles={{ body: { padding: 8, maxHeight: 260, overflow: 'auto' } }}
>
setConcurrency(v || 1)}
style={{ width: '100%' }}
/>
{isEsportsHandbook ? (
开通手册
{renderActionButton('create_esports_qr', 'primary')}
皮肤兑换
充值与送礼
setGoldAmount(v || 1)}
style={{ width: '100%' }}
/>
}
onClick={() => startTask('create_gold_qr')}
disabled={actionDisabled('create_gold_qr')}
>
充值鱼翅
setGiftCount(v || 1)}
addonAfter="赠送数量"
style={{ width: '100%' }}
/>
{renderActionButton('donate_esports_chicken_gift', 'primary')}
{renderActionButton('donate_esports_firework_gift', 'primary')}
) : (
兑换
开通、充值与送礼
{renderActionButton('create_elite_qr', 'primary')}
setGoldAmount(v || 1)}
style={{ width: '100%' }}
/>
}
onClick={() => startTask('create_gold_qr')}
disabled={actionDisabled('create_gold_qr')}
>
充值鱼翅
setGiftCount(v || 1)}
style={{ width: '100%' }}
/>
}
onClick={() => startTask('donate_elite_gift')}
disabled={actionDisabled('donate_elite_gift')}
>
赠送精英令
)}
勾选账号后可批量执行;账号行右键可执行绑定与查询动作。
{/* 右键菜单 */}
{contextMenu && (
e.stopPropagation()}>
1 ? '批量动作' : '账号动作'}
styles={{ body: { padding: 4 } }}
style={{ width: 200, boxShadow: '0 4px 12px rgba(0,0,0,0.12)' }}
>
{quickActions.map((item) => (
))}
)}
{/* Import modal */}
setImportOpen(false)}
footer={null}
width={700}
>
}
value={importSearch} onChange={(e) => setImportSearch(e.target.value)}
style={{ width: 250 }}
/>
setImportSelectedIds(keys.map(Number)) }}
dataSource={importPool}
columns={[
{ title: '昵称', dataIndex: 'nickname', render: (_, r) => r.nickname || r.username },
{ title: 'UID', dataIndex: 'uid' },
{
title: '游戏名',
dataIndex: isEsportsHandbook ? 'esports_game_name' : 'game_name',
render: (v) => v || '-',
},
{
title: isEsportsHandbook ? '电竞积分' : '积分',
dataIndex: isEsportsHandbook ? 'esports_points' : 'points',
render: (v) => v ?? '-',
},
]}
pagination={{ pageSize: 10 }}
locale={{ emptyText: '没有可导入的账号(操作台已包含所有账号)' }}
/>
{/* Config modal */}
setConfigOpen(false)}
onOk={() => configFormValues && saveConfig(configFormValues)}
okText="保存" cancelText="取消"
width={600}
>
{configFormValues && (
{(isEsportsHandbook ? [
{ label: '电竞手册 manualID', key: 'esports_manual_id' },
{ label: '电竞手册活动', key: 'esports_act_alias' },
{ label: '房间 ID', key: 'room_id' },
{ label: '冠军鸡腿礼物 ID', key: 'esports_chicken_gift_id' },
{ label: '冠军鸡腿皮肤 ID', key: 'esports_chicken_skin_id' },
{ label: '冠军烟花礼物 ID', key: 'esports_firework_gift_id' },
{ label: '冠军烟花皮肤 ID', key: 'esports_firework_skin_id' },
] : [
{ label: 'manualID', key: 'manual_id' },
{ label: 'RID', key: 'rid' },
{ label: '绑定二维码活动', key: 'bind_act_alias' },
{ label: '确认绑定活动', key: 'confirm_act_alias' },
{ label: '查询绑定活动(最新)', key: 'legacy_act_alias' },
{ label: '房间 ID', key: 'room_id' },
{ label: '精英令礼物 ID', key: 'gift_id' },
{ label: '皮肤 ID', key: 'skin_id' },
]).map(({ label, key }) => (
{label}
setConfigFormValues((prev) => prev ? { ...prev, [key]: e.target.value } : prev)}
/>
))}
{(isEsportsHandbook ? [
{ label: '电竞手册金额(分)', key: 'esports_amount' },
] : [
{ label: '宝典金额(分)', key: 'elite_amount' },
{ label: '鱼翅支付方式', key: 'gold_pay_type' },
]).map(({ label, key }) => (
{label}
setConfigFormValues((prev) => prev ? { ...prev, [key]: v ?? 0 } : prev)}
/>
))}
)}
{/* 电竞手册绑定弹窗:活动绑定与角色选择是独立流程。 */}
绑定电竞手册角色
}
open={!!esportsBindTask}
onCancel={() => {
setEsportsBindTask(null);
}}
footer={null}
centered
width={440}
>
{esportsBindTask && (
{esportsAccountName ? (
{esportsAccountName}
) : null}
{esportsStatusText}
{esportsRoleName ? (
当前游戏角色
{esportsRoleName}
{esportsRoleLine ? (
{esportsRoleLine}
) : null}
) : (
当前未检测到游戏角色,请先切换角色。
)}
{esportsRebind && esportsRoleName ? (
{esportsRebind.available ? '当前可换绑' : `可换绑时间:${esportsRebind.text}`}
) : null}
{esportsQrUrl ? (
请在腾讯页面选择角色,完成后查询最新角色。
) : null}
}
onClick={queryEsportsRole}
loading={esportsRoleQueryRunning}
disabled={esportsConfirmRunning}
>
查询最新角色
}
onClick={switchEsportsRole}
disabled={!esportsCanChangeRole || esportsConfirmRunning}
>
切换角色
}
onClick={confirmEsportsBindFromDialog}
disabled={!esportsCanConfirm}
loading={esportsConfirmRunning}
>
完成绑定
)}
{/* 精英宝典绑定二维码弹窗。 */}
{qrBindReady ? '已识别新角色' : qrStatusText}
}
open={!!qrTask}
onCancel={() => setQrTask(null)}
footer={null}
centered
width={420}
>
{qrTask && (
{qrAccountName && (
{qrAccountName}
)}
{qrStatusText}
{qrUrl ? (
) : qrBindReady ? (
绑定二维码暂未返回
) : qrTask?.status === 'running' ? (
二维码生成中...
) : (
本次未生成二维码
)}
{qrBindReady ? (
<>
{qrRoleName}
{qrRoleLine && {qrRoleLine}}
>
) : qrCurrentRoleName ? (
<>
当前绑定: {qrCurrentRoleName}
{(qrCurrentAreaName || qrCurrentPlatName) && (
{[qrCurrentPlatName, qrCurrentAreaName].filter(Boolean).join(' - ')}
)}
>
) : null}
{qrBindSummary ? (
{qrBindSummary}
) : null}
{qrQueryTask && qrQueryTask.id > (qrTask?.id || 0) && qrQueryTask.message ? (
最近查询: {qrQueryTask.message}
) : null}
}
onClick={queryQrRole}
loading={qrQueryRunning}
disabled={qrAutoPolling}
>
{qrAutoPolling ? '自动识别中' : '查询角色'}
}
onClick={confirmQrBind}
disabled={!qrBindReady}
>
确认绑定
)}
{/* Pay QR Modal */}
支付二维码
}
open={!!payTask}
onCancel={() => setPayTask(null)}
footer={null}
centered
width={400}
>
{payTask && (
{payAccountName && (
{payAccountName}
)}
{payUrl ? (
) : (
支付码生成中...
)}
{payTask.message || '请扫码支付'}
)}
);
}