import { useState } from 'react' import { Table, Tag, Button, Space, Card, Modal, Form, Input, message, Popconfirm, Alert, Typography, } from 'antd' import { KeyOutlined, PlusOutlined } from '@ant-design/icons' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import type { ColumnsType } from 'antd/es/table' import dayjs from 'dayjs' import { appApi } from '../../api/app' import type { App } from '../../types' const { Text } = Typography export default function AppPage() { const [createOpen, setCreateOpen] = useState(false) const [secretModal, setSecretModal] = useState<{ appID: string; secret: string; tip: string } | null>(null) const [form] = Form.useForm() const qc = useQueryClient() const { data, isLoading } = useQuery({ queryKey: ['apps'], queryFn: () => appApi.list({ limit: 50, offset: 0 }), }) const createMutation = useMutation({ mutationFn: appApi.create, onSuccess: (res) => { setCreateOpen(false) form.resetFields() qc.invalidateQueries({ queryKey: ['apps'] }) const d = res.data.data setSecretModal({ appID: d.app_id, secret: d.app_secret, tip: d.secret_tip }) }, }) const disableMutation = useMutation({ mutationFn: appApi.disable, onSuccess: () => { message.success('已禁用') qc.invalidateQueries({ queryKey: ['apps'] }) }, }) const enableMutation = useMutation({ mutationFn: appApi.enable, onSuccess: () => { message.success('已启用') qc.invalidateQueries({ queryKey: ['apps'] }) }, }) const resetMutation = useMutation({ mutationFn: appApi.resetSecret, onSuccess: (res) => { const d = res.data.data setSecretModal({ appID: d.app_id, secret: d.app_secret, tip: d.secret_tip }) }, }) const columns: ColumnsType = [ { title: 'App ID', dataIndex: 'app_id', width: 200 }, { title: '应用名称', dataIndex: 'app_name', width: 160 }, { title: '状态', dataIndex: 'status', width: 80, render: (v: number) => v === 1 ? 启用 : 禁用, }, { title: '创建时间', dataIndex: 'created_at', width: 180, render: (v) => dayjs(v).format('YYYY-MM-DD HH:mm:ss'), }, { title: '操作', width: 220, render: (_, record) => ( resetMutation.mutate(record.app_id)} > {record.status === 1 ? ( disableMutation.mutate(record.app_id)}> ) : ( enableMutation.mutate(record.app_id)}> )} ), }, ] const list: App[] = data?.data?.data?.list ?? [] return ( <> } onClick={() => setCreateOpen(true)}> 新建应用 } > {/* 新建应用弹窗 */} form.submit()} onCancel={() => { setCreateOpen(false); form.resetFields() }} confirmLoading={createMutation.isPending} >
createMutation.mutate(v)}>
{/* Secret 展示弹窗(创建/重置后) */} setSecretModal(null)}>我已保存} onCancel={() => setSecretModal(null)} closable={false} maskClosable={false} > {secretModal && ( <>
{secretModal.appID} {secretModal.secret} )}
) }