|
|
@@ -119,33 +119,27 @@ onMounted(async () => {
|
|
|
})
|
|
|
|
|
|
/* ───── Fetch & Compute Stats ───── */
|
|
|
+function pagedRows(res: any): any[] {
|
|
|
+ const d = res?.data
|
|
|
+ if (!d) return []
|
|
|
+ return d.rows ?? d.items ?? d.list ?? (Array.isArray(d) ? d : [])
|
|
|
+}
|
|
|
+
|
|
|
async function fetchHomeData() {
|
|
|
try {
|
|
|
- const [advanceRes, reimburseRes] = await Promise.all([
|
|
|
- advanceApi.my({ page: 1, pageSize: 200 }).catch(() => null),
|
|
|
- reimburseApi.my({ page: 1, pageSize: 200 }).catch(() => null),
|
|
|
+ const [advStatsRes, reimStatsRes] = await Promise.all([
|
|
|
+ advanceApi.myStats().catch(() => null),
|
|
|
+ reimburseApi.myStats().catch(() => null),
|
|
|
])
|
|
|
|
|
|
- const advanceItems: any[] = (advanceRes as any)?.data?.items || []
|
|
|
- const reimburseItems: any[] = (reimburseRes as any)?.data?.items || []
|
|
|
- const advanceTotal = (advanceRes as any)?.data?.total || 0
|
|
|
- const reimburseTotal = (reimburseRes as any)?.data?.total || 0
|
|
|
-
|
|
|
- const allItems = [...advanceItems, ...reimburseItems]
|
|
|
- const totalCount = advanceTotal + reimburseTotal
|
|
|
- const approvedCount = allItems.filter((i: any) => i.status === 'approved').length
|
|
|
- const pendingCount = allItems.filter((i: any) => i.status === 'pending').length
|
|
|
- const totalAmount = allItems.reduce(
|
|
|
- (sum: number, i: any) => sum + (Number(i.amount) || 0),
|
|
|
- 0,
|
|
|
- )
|
|
|
-
|
|
|
- const now = new Date()
|
|
|
- const submittedThisMonth = allItems.filter((i: any) => {
|
|
|
- if (!i.createdAt) return false
|
|
|
- const d = new Date(i.createdAt)
|
|
|
- return d.getFullYear() === now.getFullYear() && d.getMonth() === now.getMonth()
|
|
|
- }).length
|
|
|
+ const a = (advStatsRes as any)?.data ?? {}
|
|
|
+ const r = (reimStatsRes as any)?.data ?? {}
|
|
|
+ const submittedThisMonth = Number(r.monthApplyCount ?? 0) + Number(a.monthApplyCount ?? 0)
|
|
|
+ const pendingCount = Number(r.pendingCount ?? 0) + Number(a.pendingCount ?? 0)
|
|
|
+ const approvedCount =
|
|
|
+ Number(r.approvedCount ?? 0) + Number(a.approvedPassCount ?? 0) + Number(a.issuedCount ?? 0)
|
|
|
+ const totalCount = Number(r.totalCount ?? 0) + Number(a.totalCount ?? 0)
|
|
|
+ const totalAmount = 0
|
|
|
|
|
|
stats.value = { submittedThisMonth, pendingCount, approvedCount, totalAmount, totalCount }
|
|
|
|
|
|
@@ -155,8 +149,8 @@ async function fetchHomeData() {
|
|
|
reimburseApi.pendingApproval({ page: 1, pageSize: 5 }).catch(() => null),
|
|
|
])
|
|
|
|
|
|
- const pendingAdvanceItems: any[] = (pendingAdvanceRes as any)?.data?.items || []
|
|
|
- const pendingReimburseItems: any[] = (pendingReimburseRes as any)?.data?.items || []
|
|
|
+ const pendingAdvanceItems: any[] = pagedRows(pendingAdvanceRes)
|
|
|
+ const pendingReimburseItems: any[] = pagedRows(pendingReimburseRes)
|
|
|
const pendingAdvanceTotal = (pendingAdvanceRes as any)?.data?.total || 0
|
|
|
const pendingReimburseTotal = (pendingReimburseRes as any)?.data?.total || 0
|
|
|
|