完善客服操作台权限与绑定二维码
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
||||
type DouyuTaskItem,
|
||||
} from '../api/modules';
|
||||
import RealtimeLogPanel from '../components/RealtimeLogPanel';
|
||||
import { usePermissions } from '../hooks/usePermissions';
|
||||
import { useWebSocketLogs } from '../hooks/useWebSocketLogs';
|
||||
import { formatTime } from '../utils/time';
|
||||
import { getErrorMessage } from '../utils/error';
|
||||
@@ -133,6 +134,7 @@ function resultNumber(result: Record<string, unknown> | null | undefined, key: s
|
||||
}
|
||||
|
||||
export default function DouyuTasksPage() {
|
||||
const { can } = usePermissions();
|
||||
const [accounts, setAccounts] = useState<DouyuTaskAccountItem[]>([]);
|
||||
const [selectedIds, setSelectedIds] = useState<number[]>([]);
|
||||
const [goods, setGoods] = useState<DouyuGoodsItem[]>([]);
|
||||
@@ -163,6 +165,7 @@ export default function DouyuTasksPage() {
|
||||
const autoOpenPayReady = useRef(false);
|
||||
|
||||
const logs = useWebSocketLogs();
|
||||
const canConfig = can('douyu:config');
|
||||
const latestQueryGameTaskByAccount = useMemo(() => {
|
||||
const map = new Map<number, DouyuTaskItem>();
|
||||
for (const task of tasks) {
|
||||
@@ -197,7 +200,7 @@ export default function DouyuTasksPage() {
|
||||
douyuApi.listAccounts(),
|
||||
douyuApi.listGoods(),
|
||||
douyuApi.listTasks(),
|
||||
douyuApi.getConfig(),
|
||||
canConfig ? douyuApi.getConfig() : Promise.resolve(null),
|
||||
douyuApi.taskTypes(),
|
||||
]);
|
||||
if (accResult.status === 'fulfilled') setAccounts(accResult.value);
|
||||
@@ -214,12 +217,12 @@ export default function DouyuTasksPage() {
|
||||
autoOpenPayReady.current = true;
|
||||
}
|
||||
}
|
||||
if (cfgResult.status === 'fulfilled') setConfig(cfgResult.value);
|
||||
if (cfgResult.status === 'fulfilled' && cfgResult.value) setConfig(cfgResult.value);
|
||||
if (typeResult.status === 'fulfilled') setTaskTypes(typeResult.value);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, []);
|
||||
}, [canConfig]);
|
||||
|
||||
const loadTasks = useCallback(async () => {
|
||||
try {
|
||||
@@ -688,7 +691,7 @@ export default function DouyuTasksPage() {
|
||||
</div>
|
||||
<Space>
|
||||
<Button icon={<ReloadOutlined />} onClick={loadData} loading={loading}>刷新</Button>
|
||||
<Button icon={<SettingOutlined />} onClick={() => setConfigOpen(true)}>配置</Button>
|
||||
{canConfig && <Button icon={<SettingOutlined />} onClick={() => setConfigOpen(true)}>配置</Button>}
|
||||
{runningBatchId && <Button danger icon={<StopOutlined />} onClick={stopBatch}>停止</Button>}
|
||||
</Space>
|
||||
</Space>
|
||||
@@ -960,11 +963,10 @@ export default function DouyuTasksPage() {
|
||||
<Tag color={qrBindReady ? 'gold' : qrBindPhase === 'role_timeout' ? 'orange' : 'processing'}>
|
||||
{qrStatusText}
|
||||
</Tag>
|
||||
{/* 已有待确认角色时可能不生成二维码(cjm 已是最新换绑态) */}
|
||||
{qrUrl ? (
|
||||
<QRCode value={qrUrl} size={220} bordered={false} />
|
||||
) : qrBindReady ? (
|
||||
<Text type="secondary">已识别待确认角色,无需再次扫码</Text>
|
||||
<Text type="secondary">绑定二维码暂未返回</Text>
|
||||
) : qrTask?.status === 'running' ? (
|
||||
<Text type="secondary">二维码生成中...</Text>
|
||||
) : (
|
||||
|
||||
@@ -27,6 +27,8 @@ const PERMISSION_GROUPS = [
|
||||
{ label: '账号管理', prefix: 'account:' },
|
||||
{ label: '登录任务', prefix: 'login:' },
|
||||
{ label: 'Cookie', prefix: 'cookie:' },
|
||||
{ label: '斗鱼活动', prefix: 'douyu:' },
|
||||
{ label: '虎牙', prefix: 'huya:' },
|
||||
{ label: '代理 & 白名单', prefix: ['proxy:', 'whitelist:'] },
|
||||
{ label: '系统', prefix: ['system:', 'audit:'] },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user