feat: wire admin workflows to real APIs

This commit is contained in:
hectorzhao
2026-07-02 13:50:09 +08:00
parent f8c9b78c21
commit ab421cf8a7
42 changed files with 2596 additions and 250 deletions
@@ -380,7 +380,7 @@ export function AdminEnterpriseSignaturesPage() {
const [activeTab, setActiveTab] = useState<SignatureKind>('sms');
const [smsSignatures, setSmsSignatures] = useState(initialSmsSignatures);
const [mmsSignatures, setMmsSignatures] = useState(initialMmsSignatures);
const [expandedSignatureId, setExpandedSignatureId] = useState('sig-1');
const [expandedSignatureId, setExpandedSignatureId] = useState('');
const [enterpriseKeyword, setEnterpriseKeyword] = useState('');
const [signatureKeyword, setSignatureKeyword] = useState('');
const [page, setPage] = useState(1);
@@ -491,7 +491,7 @@ export function AdminEnterpriseSignaturesPage() {
<div className="signature-actions">
<Button icon={<FileText size={16} />} onClick={() => setSignatureReport(signature)} size="sm" variant="ghost"></Button>
<Button icon={<Edit3 size={16} />} onClick={() => setSignatureModal({ kind: 'sms', item: signature })} size="sm" variant="ghost"></Button>
<Button icon={<Trash2 size={16} />} onClick={() => setDeleteTarget({ kind: 'signature', signatureKind: 'sms', id: signature.id, name: signature.name })} size="sm" variant="ghost"></Button>
<Button icon={<Trash2 size={16} />} onClick={() => setDeleteTarget({ kind: 'signature', signatureKind: 'sms', id: signature.id, name: signature.name })} size="sm" variant="danger"></Button>
</div>
</div>
@@ -518,9 +518,9 @@ export function AdminEnterpriseSignaturesPage() {
<StatusTag status={item.telecom} />
<span className="muted">{item.submittedAt}</span>
<span className="drainage-row-actions">
<button onClick={() => setDrainageReport(item)} type="button"></button>
<button onClick={() => setDrainageModal({ signatureId: signature.id, item })} type="button"></button>
<button onClick={() => setDeleteTarget({ kind: 'drainage', signatureId: signature.id, id: item.id, name: item.siteName })} type="button"></button>
<Button onClick={() => setDrainageReport(item)} size="sm" variant="ghost"></Button>
<Button onClick={() => setDrainageModal({ signatureId: signature.id, item })} size="sm" variant="ghost"></Button>
<Button onClick={() => setDeleteTarget({ kind: 'drainage', signatureId: signature.id, id: item.id, name: item.siteName })} size="sm" variant="danger"></Button>
</span>
</div>
))}