账号导入--可以直接打标签

This commit is contained in:
yml2213
2026-08-01 12:24:19 +08:00
parent d417d15d9b
commit 11b249f1fb
6 changed files with 43 additions and 9 deletions
+15 -2
View File
@@ -25,6 +25,7 @@ export default function AccountsPage() {
const [loading, setLoading] = useState(false);
const [importOpen, setImportOpen] = useState(false);
const [importText, setImportText] = useState('');
const [importTag, setImportTag] = useState('');
const [importing, setImporting] = useState(false);
const [tagFilter, setTagFilter] = useState<string>('');
const [searchText, setSearchText] = useState('');
@@ -137,10 +138,11 @@ export default function AccountsPage() {
}
setImporting(true);
try {
const result = await accountApi.import(importText);
const result = await accountApi.import(importText, importTag);
message.success(result.message);
setImportOpen(false);
setImportText('');
setImportTag('');
loadAccounts();
loadTags();
loadSummary();
@@ -375,7 +377,7 @@ export default function AccountsPage() {
</Popconfirm>
)}
{canImport && (
<Button type="primary" icon={<ImportOutlined />} onClick={() => setImportOpen(true)}>
<Button type="primary" icon={<ImportOutlined />} onClick={() => { setImportTag(''); setImportOpen(true); }}>
</Button>
)}
@@ -480,6 +482,17 @@ export default function AccountsPage() {
placeholder={`用户名|密码|邮箱|邮箱密码|标签\n用户名|密码|邮箱|邮箱密码|标签`}
style={{ marginTop: 8 }}
/>
<div style={{ marginTop: 12 }}>
<Text type="secondary">使</Text>
<Select
mode="tags"
style={{ width: '100%', marginTop: 4 }}
placeholder="输入或选择标签"
value={importTag ? [importTag] : []}
onChange={(vals) => setImportTag(vals.length > 0 ? vals[vals.length - 1] : '')}
options={tags.map((t) => ({ value: t, label: t }))}
/>
</div>
</Modal>
<Modal
+5 -1
View File
@@ -44,6 +44,8 @@ const ESPORTS_QUICK_ACTIONS = [
{ key: 'query_esports_game_name', icon: <SearchOutlined /> },
{ key: 'create_esports_qr', icon: <CreditCardOutlined /> },
{ key: 'query_esports_points', icon: <SearchOutlined /> },
{ key: 'query_change_bind_time', icon: <FieldTimeOutlined /> },
{ key: 'query_limited_goods', icon: <SearchOutlined /> },
{ key: 'query_gold_balance', icon: <SearchOutlined /> },
{ key: 'refresh_esports_goods', icon: <ReloadOutlined /> },
{ key: 'exchange_esports_goods', icon: <ShoppingOutlined /> },
@@ -76,6 +78,8 @@ const ESPORTS_TASK_TYPES = new Set([
'create_esports_qr',
'query_esports_points',
'query_gold_balance',
'query_change_bind_time',
'query_limited_goods',
'refresh_esports_goods',
'exchange_esports_goods',
'create_gold_qr',
@@ -1308,7 +1312,7 @@ export default function DouyuTasksPage({ handbook }: { handbook: HandbookKind })
dataSource={filteredAccounts}
pagination={{ pageSize: 15, showSizeChanger: false, size: 'small', showLessItems: true }}
tableLayout="fixed"
scroll={{ y: Math.max(120, accountTableAreaHeight - 80) }}
scroll={{ x: 960, y: Math.max(120, accountTableAreaHeight - 80) }}
onRow={(record) => ({
onContextMenu: (e) => handleRowContextMenu(record, e),
style: { cursor: 'context-menu' },