feat: optimize signature workflows and high-frequency queries

This commit is contained in:
hectorzhao
2026-09-02 15:45:48 +08:00
parent 9b8196ecab
commit ad89e8fed7
48 changed files with 1334 additions and 352 deletions
+17 -9
View File
@@ -140,11 +140,12 @@ function TaskDetailModal({ task, onClose }: { task: ReportTask; onClose: () => v
export function AdminReportTasksPage() {
const [searchParams] = useSearchParams();
const initialStatus = searchParams.get('scope') === 'pending' ? 'pending' : 'all';
const [tasks, setTasks] = useState<ReportTask[]>([]);
const [keyword, setKeyword] = useState('');
const [dateRange, setDateRange] = useState<DateRangeValue>({});
const [reportType, setReportType] = useState('all');
const [status, setStatus] = useState(searchParams.get('scope') === 'pending' ? 'pending' : 'all');
const [status, setStatus] = useState(initialStatus);
const [carrier, setCarrier] = useState('all');
const [selected, setSelected] = useState<Set<string>>(new Set());
const [material, setMaterial] = useState<SingleReportMaterialDetail | null>(null);
@@ -156,18 +157,19 @@ export function AdminReportTasksPage() {
const [busy, setBusy] = useState(false);
const [page, setPage] = useState(1);
const [total, setTotal] = useState(0);
const [appliedFilters, setAppliedFilters] = useState({ keyword: '', dateRange: {} as DateRangeValue, reportType: 'all', status: initialStatus, carrier: 'all' });
const pageSize = 10;
function loadData(targetPage = page) {
function loadData(targetPage = page, filters = appliedFilters) {
adminApi
.listReportDetailsPage({
signatureId: searchParams.get('signatureId') || undefined,
reportType: reportType === 'all' ? undefined : (reportType as 'signature' | 'drainage'),
status: status === 'all' ? undefined : status,
carrier: carrier === 'all' ? undefined : carrier,
keyword: keyword || undefined,
createdAtFrom: dateRange.start || undefined,
createdAtTo: dateRange.end || undefined,
reportType: filters.reportType === 'all' ? undefined : (filters.reportType as 'signature' | 'drainage'),
status: filters.status === 'all' ? undefined : filters.status,
carrier: filters.carrier === 'all' ? undefined : filters.carrier,
keyword: filters.keyword || undefined,
createdAtFrom: filters.dateRange.start || undefined,
createdAtTo: filters.dateRange.end || undefined,
page: targetPage,
pageSize,
})
@@ -398,8 +400,10 @@ export function AdminReportTasksPage() {
<Button
icon={<Search size={16} />}
onClick={() => {
const filters = { keyword: keyword.trim(), dateRange, reportType, status, carrier };
setAppliedFilters(filters);
if (page !== 1) setPage(1);
else loadData(1);
else loadData(1, filters);
}}
>
@@ -411,6 +415,10 @@ export function AdminReportTasksPage() {
setReportType('all');
setCarrier('all');
setStatus('all');
const filters = { keyword: '', dateRange: {} as DateRangeValue, reportType: 'all', status: 'all', carrier: 'all' };
setAppliedFilters(filters);
if (page !== 1) setPage(1);
else loadData(1, filters);
}}
variant="ghost"
>