From 37a6a97fbd051bd3c998fb491d0b93f1f2a714f0 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期一, 19 十月 2026 17:12:24 +0800
Subject: [PATCH] feat: 添加请假、缺勤、迟到、早退次数及手动扣工资功能,优化工资计算
---
src/views/personnelManagement/monthlyStatistics/components/formDia.vue | 76 +++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 1 deletions(-)
diff --git a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
index 46515ed..67abcc0 100644
--- a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
+++ b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
@@ -249,6 +249,56 @@
@input="row.deductSalary = parseNum(row.deductSalary)" />
</template>
</el-table-column>
+ <el-table-column label="璇峰亣娆℃暟"
+ minWidth="90">
+ <template #default="{ row }">
+ <el-input v-model.number="row.leaveCount"
+ type="number"
+ placeholder="鑷姩缁熻"
+ size="small"
+ @input="row.leaveCount = parseNum(row.leaveCount)" />
+ </template>
+ </el-table-column>
+ <el-table-column label="缂哄嫟娆℃暟"
+ minWidth="90">
+ <template #default="{ row }">
+ <el-input v-model.number="row.absenceCount"
+ type="number"
+ placeholder="鑷姩缁熻"
+ size="small"
+ @input="row.absenceCount = parseNum(row.absenceCount)" />
+ </template>
+ </el-table-column>
+ <el-table-column label="杩熷埌娆℃暟"
+ minWidth="90">
+ <template #default="{ row }">
+ <el-input v-model.number="row.lateCount"
+ type="number"
+ placeholder="鑷姩缁熻"
+ size="small"
+ @input="row.lateCount = parseNum(row.lateCount)" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鏃╅��娆℃暟"
+ minWidth="90">
+ <template #default="{ row }">
+ <el-input v-model.number="row.earlyCount"
+ type="number"
+ placeholder="鑷姩缁熻"
+ size="small"
+ @input="row.earlyCount = parseNum(row.earlyCount)" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鎵e伐璧�"
+ minWidth="110">
+ <template #default="{ row }">
+ <el-input v-model.number="row.manualDeduct"
+ type="number"
+ placeholder="0"
+ size="small"
+ @input="handleManualDeductInput(row)" />
+ </template>
+ </el-table-column>
<el-table-column label="瀹炲彂宸ヨ祫"
minWidth="110">
<template #default="{ row }">
@@ -264,7 +314,7 @@
minWidth="120">
<template #default="{ row }">
<el-input v-model="row.remark"
- placeholder="璇疯緭鍏�"
+ placeholder="璇疯緭鍏ワ紝璇峰亣鍘熷洜鑷姩甯﹀叆"
size="small" />
</template>
</el-table-column>
@@ -428,6 +478,11 @@
salaryTax: 0,
grossSalary: 0,
deductSalary: 0,
+ leaveCount: 0,
+ absenceCount: 0,
+ lateCount: 0,
+ earlyCount: 0,
+ manualDeduct: 0,
netSalary: 0,
remark: "",
});
@@ -453,6 +508,11 @@
salaryTax: parseNum(source?.salaryTax ?? fallback.salaryTax),
grossSalary: parseNum(source?.grossSalary ?? fallback.grossSalary),
deductSalary: parseNum(source?.deductSalary ?? fallback.deductSalary),
+ leaveCount: parseNum(source?.leaveCount ?? fallback.leaveCount),
+ absenceCount: parseNum(source?.absenceCount ?? fallback.absenceCount),
+ lateCount: parseNum(source?.lateCount ?? fallback.lateCount),
+ earlyCount: parseNum(source?.earlyCount ?? fallback.earlyCount),
+ manualDeduct: parseNum(source?.manualDeduct ?? fallback.manualDeduct),
netSalary: parseNum(source?.netSalary ?? fallback.netSalary),
remark: source?.remark ?? fallback.remark ?? "",
});
@@ -493,6 +553,9 @@
otherIncome: parseNum(row.otherIncome),
otherDeduct: parseNum(row.otherDeduct),
socialSupplementAmount: parseNullableNum(row.socialSupplementAmount),
+ manualDeduct: parseNum(row.manualDeduct),
+ lateCount: parseNum(row.lateCount),
+ earlyCount: parseNum(row.earlyCount),
remark: row.remark ?? "",
};
recalcTimers.set(
@@ -509,6 +572,12 @@
const handleSalaryInput = row => {
row.basicSalary = parseNum(row.basicSalary);
row.otherIncome = parseNum(row.otherIncome);
+ requestEmployeeRecalculate(row);
+ };
+
+ // 鎵e伐璧勶紙鎵嬪~锛夛細閲嶆柊璁$畻瀹炲彂宸ヨ祫
+ const handleManualDeductInput = row => {
+ row.manualDeduct = parseNum(row.manualDeduct);
requestEmployeeRecalculate(row);
};
@@ -835,6 +904,11 @@
salaryTax: parseNum(e.salaryTax),
grossSalary: parseNum(e.grossSalary),
deductSalary: parseNum(e.deductSalary),
+ leaveCount: parseNum(e.leaveCount),
+ absenceCount: parseNum(e.absenceCount),
+ lateCount: parseNum(e.lateCount),
+ earlyCount: parseNum(e.earlyCount),
+ manualDeduct: parseNum(e.manualDeduct),
netSalary: parseNum(e.netSalary),
remark: e.remark ?? "",
})),
--
Gitblit v1.9.3