From 6919f997c6ffef2944149930d64591b0962f2291 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Mon, 17 Aug 2026 10:37:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=91=98=E5=B7=A5=E7=AB=AF=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E5=BA=94=E5=8F=91=E5=90=88=E8=AE=A1=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端返回字段是 totalPay,前端误用 grossPay(不存在的字段), 导致应发合计始终显示 0。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- backend/scripts/check-payslip-detail.ts | 36 ++++++++++++++++++++++ backend/scripts/check-payslip.ts | 24 +++++++++++++++ frontend/src/pages/portal/EmployeeHome.tsx | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 backend/scripts/check-payslip-detail.ts create mode 100644 backend/scripts/check-payslip.ts diff --git a/backend/scripts/check-payslip-detail.ts b/backend/scripts/check-payslip-detail.ts new file mode 100644 index 0000000..78a2ce1 --- /dev/null +++ b/backend/scripts/check-payslip-detail.ts @@ -0,0 +1,36 @@ +import prisma from '../src/lib/prisma' + +async function main() { + // 查看已发布的7条工资条明细 + const published = await prisma.$queryRaw` + SELECT p."employeeId", e.name, e.department, + p."baseSalary", p."overtimePay", p.allowance, p.deduction, p.bonus, + p."totalPay", p."socialEmp", p."housingEmp", p.tax, p."netPay", + p."publishStatus", p.status, p.month + FROM "Payslip" p + JOIN "Employee" e ON p."employeeId" = e.id + WHERE p.month='2026-08' AND p."publishStatus" = 'PUBLISHED' + ORDER BY e.name + ` + console.log('=== 已发布工资条(7条)===') + for (const p of published) { + console.log(`${p.name} | ${p.department} | base=${p.baseSalary} total=${p.totalPay} net=${p.netPay} social=${p.socialEmp} housing=${p.housingEmp} tax=${p.tax}`) + } + + // 查看未发布的23条 + const unpublished = await prisma.$queryRaw` + SELECT e.name, e.department, + p."totalPay", p."netPay", p."publishStatus" + FROM "Payslip" p + JOIN "Employee" e ON p."employeeId" = e.id + WHERE p.month='2026-08' AND p."publishStatus" IS NULL + ORDER BY e.name + ` + console.log('\n=== 未发布工资条(23条)===') + for (const p of unpublished) { + console.log(`${p.name} | ${p.department} | total=${p.totalPay} net=${p.netPay}`) + } + + await prisma.$disconnect() +} +main() diff --git a/backend/scripts/check-payslip.ts b/backend/scripts/check-payslip.ts new file mode 100644 index 0000000..ad1b295 --- /dev/null +++ b/backend/scripts/check-payslip.ts @@ -0,0 +1,24 @@ +import prisma from '../src/lib/prisma' + +async function main() { + const payslips = await prisma.$queryRaw` + SELECT month, status, "publishStatus", count(*)::int as cnt + FROM "Payslip" WHERE month='2026-08' + GROUP BY month, status, "publishStatus" + ` + console.log('Payslip 2026-08:', JSON.stringify(payslips, null, 2)) + + const batches = await prisma.$queryRaw` + SELECT id, name, month, status, "batchNo"::text as bn + FROM "PayrollBatch" WHERE month='2026-08' ORDER BY "batchNo" + ` + console.log('Batches 2026-08:', JSON.stringify(batches, null, 2)) + + const totalPayslips = await prisma.$queryRaw` + SELECT count(*)::int as cnt FROM "Payslip" WHERE month='2026-08' + ` + console.log('Total payslips 2026-08:', JSON.stringify(totalPayslips)) + + await prisma.$disconnect() +} +main() diff --git a/frontend/src/pages/portal/EmployeeHome.tsx b/frontend/src/pages/portal/EmployeeHome.tsx index 3a6b02a..6101ab0 100644 --- a/frontend/src/pages/portal/EmployeeHome.tsx +++ b/frontend/src/pages/portal/EmployeeHome.tsx @@ -124,7 +124,7 @@ export default function EmployeeHome() {
应发合计
-
¥{fmt(latestPayslip.grossPay)}
+
¥{fmt(latestPayslip.totalPay)}
实发合计