feat: add channel report batch briefs

This commit is contained in:
hectorzhao
2026-09-02 18:29:05 +08:00
parent 2dff1be750
commit 7cb5dd376e
27 changed files with 1083 additions and 153 deletions
@@ -40,12 +40,12 @@ export function AdminEnterpriseSignaturesPage() {
const [error, setError] = useState('');
const [expandedSignatureId, setExpandedSignatureId] = useState('');
const [signatureKeyword, setSignatureKeyword] = useState('');
const [signatureSort, setSignatureSort] = useState<'asc' | 'desc'>('asc');
const [appliedSignatureKeyword, setAppliedSignatureKeyword] = useState('');
const [signatureModal, setSignatureModal] = useState<ClientSmsSignature | 'new' | null>(null);
const [reportStatusTarget, setReportStatusTarget] = useState<ClientSmsSignature | null>(null);
const [signatures, setSignatures] = useState<ClientSmsSignature[]>([]);
const [total, setTotal] = useState(0);
const [pendingReportDetailTotal, setPendingReportDetailTotal] = useState(0);
const [tenants, setTenants] = useState<TenantOption[]>([]);
const [page, setPage] = useState(1);
const [importOpen, setImportOpen] = useState(false);
@@ -63,14 +63,14 @@ export function AdminEnterpriseSignaturesPage() {
drainageKeyword: appliedDrainageKeyword,
},
targetPage = page,
targetSort = signatureSort,
) {
const sequence = ++listRequestSequence.current;
try {
const signatureResult = await adminApi.listEnterpriseSignaturesPage({ ...filters, signatureSort: targetSort, page: targetPage, pageSize });
const signatureResult = await adminApi.listEnterpriseSignaturesPage({ ...filters, page: targetPage, pageSize });
if (sequence !== listRequestSequence.current) return;
setSignatures(signatureResult.items);
setTotal(signatureResult.total);
setPendingReportDetailTotal(signatureResult.pendingReportDetailTotal);
setError('');
} catch (failure) {
if (sequence !== listRequestSequence.current) return;
@@ -216,14 +216,8 @@ export function AdminEnterpriseSignaturesPage() {
onOpenDrainageReport={(signature, item) => void openDrainageReport(signature, item)}
setExpandedSignatureId={setExpandedSignatureId}
setPage={setPage}
setSignatureSort={(nextSort) => {
setSignatureSort(nextSort);
if (page === 1) void loadData(undefined, 1, nextSort);
else setPage(1);
}}
onEditSignature={(signature) => void editSignature(signature)}
onOpenSignatureReport={(signature) => void openSignatureReport(signature)}
signatureSort={signatureSort}
total={total}
totalPages={totalPages}
visibleSignatures={visibleSignatures}
@@ -322,6 +316,15 @@ export function AdminEnterpriseSignaturesPage() {
</div>
</div>
<div className="enterprise-signature-pending-summary" role="status">
<span></span>
<strong>{pendingReportDetailTotal}</strong>
<span></span>
<Button onClick={() => navigate('/admin/report-tasks?scope=pending')} size="sm" variant="ghost">
</Button>
</div>
{error ? <p className="form-error">{error}</p> : null}
{message ? <p className="form-success">{message}</p> : null}