= {
- SUCCESS: 'success',
- FAILED: 'error',
- PENDING: 'processing',
-};
-
-function formatFileSize(size: number | null | undefined) {
- if (size == null || size <= 0) return '—';
- if (size < 1024) return `${size} B`;
- if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`;
- return `${(size / 1024 / 1024).toFixed(2)} MB`;
-}
-
-function JsonBlock({ value }: { value: unknown }) {
- if (value == null) return —;
- return (
-
- {JSON.stringify(value, null, 2)}
-
- );
-}
-
-export default function OssUploadLogsPage() {
- const [filters, setFilters] = useState>({});
- const { data, loading, page, pageSize, setPage, setPageSize } = useAdminList(
- '/admin/logs/oss',
- () => {
- const qs = new URLSearchParams();
- if (filters.scene) qs.set('scene', filters.scene);
- if (filters.status) qs.set('status', filters.status);
- if (filters.bizType) qs.set('bizType', filters.bizType);
- if (filters.clientApp) qs.set('clientApp', filters.clientApp);
- if (filters.refId) qs.set('refId', filters.refId);
- return qs;
- },
- [filters],
- );
- const [detail, setDetail] = useState | null>(null);
- const [drawerOpen, setDrawerOpen] = useState(false);
-
- const columns: ColumnsType = [
- { title: '时间', dataIndex: 'createdAt', width: 160, render: fmtTime },
- {
- title: '场景',
- dataIndex: 'scene',
- width: 120,
- render: (v: string) => SCENE_OPTIONS.find((o) => o.value === v)?.label ?? v,
- },
- {
- title: '状态',
- dataIndex: 'status',
- width: 90,
- render: (v: string) => {v},
- },
- { title: '端', dataIndex: 'clientApp', width: 110, render: (v) => v || '—' },
- {
- title: '操作者',
- width: 120,
- render: (_, r) => (r.actorType && r.actorId ? `${r.actorType}#${r.actorId}` : '—'),
- },
- { title: '业务类型', dataIndex: 'bizType', width: 120, render: (v) => v || '—' },
- { title: '文件名', dataIndex: 'fileName', ellipsis: true, render: (v) => v || '—' },
- {
- title: '大小',
- dataIndex: 'fileSize',
- width: 90,
- render: (v: number | null) => formatFileSize(v),
- },
- { title: 'OSS Key', dataIndex: 'ossKey', ellipsis: true, width: 160, render: (v) => v || '—' },
- {
- title: 'Mock',
- dataIndex: 'mock',
- width: 70,
- render: (v: boolean | null) => (v == null ? '—' : v ? '是' : '否'),
- },
- {
- title: '错误',
- dataIndex: 'errorMessage',
- ellipsis: true,
- render: (v: string | null | undefined) => v || '—',
- },
- {
- title: '操作',
- width: 80,
- fixed: 'right',
- render: (_, row) => (
-
- ),
- },
- ];
-
- return (
-
-
OSS 上传日志
-
- 记录各端经 /common/resources/upload 的文件上传与直传凭证申请。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{
- setPage(p);
- setPageSize(ps);
- },
- }}
- />
- setDrawerOpen(false)}>
- {detail && (
-
- {String(detail.id)}
- {String(detail.scene)}
-
- {String(detail.status)}
-
- {String(detail.clientApp ?? '—')}
-
- {detail.actorType ? `${String(detail.actorType)}#${String(detail.actorId)}` : '—'}
-
- {String(detail.bizType ?? '—')}
- {String(detail.mediaType ?? '—')}
- {String(detail.fileName ?? '—')}
- {formatFileSize(detail.fileSize as number | null)}
- {String(detail.mimeType ?? '—')}
- {String(detail.bucket ?? '—')}
- {String(detail.ossKey ?? '—')}
-
- {detail.url ? (
-
- {String(detail.url)}
-
- ) : (
- '—'
- )}
-
- {detail.mock == null ? '—' : detail.mock ? '是' : '否'}
-
- {detail.errorMessage ? (
-
- {String(detail.errorMessage)}
-
- ) : (
- '—'
- )}
-
- {fmtTime(String(detail.createdAt))}
-
-
-
-
-
-
-
- )}
-
-
- );
-}