From b439d99d55f594cd56cf06463a9f328812e25df4 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 20 十月 2026 00:25:39 +0800
Subject: [PATCH] feat: 添加加班时长和加班工资功能,支持手动输入并重新计算应发工资
---
src/views/personnelManagement/monthlyStatistics/components/formDia.vue | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
index 7248566..eccbd9d 100644
--- a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
+++ b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
@@ -163,6 +163,25 @@
@input="row.hourlySalary = parseNum(row.hourlySalary)" />
</template>
</el-table-column>
+ <el-table-column label="鍔犵彮鏃堕暱"
+ minWidth="110">
+ <template #default="{ row }">
+ <el-input :model-value="formatHours(row.overtimeHours)"
+ placeholder="0.00"
+ size="small"
+ disabled />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍔犵彮宸ヨ祫"
+ minWidth="110">
+ <template #default="{ row }">
+ <el-input v-model.number="row.overtimePay"
+ type="number"
+ placeholder="0"
+ size="small"
+ @input="handleOvertimePayInput(row)" />
+ </template>
+ </el-table-column>
<el-table-column label="鍏朵粬鏀跺叆"
minWidth="110">
<template #default="{ row }">
@@ -455,6 +474,11 @@
return isNaN(n) ? 0 : n;
}
+ // 鍔犵彮鏃堕暱鎸夊皬鏃跺睍绀猴紝鍥哄畾涓や綅灏忔暟
+ function formatHours(v) {
+ return parseNum(v).toFixed(2);
+ }
+
function parseNullableNum(v) {
if (v === "" || v == null) return null;
const n = Number(v);
@@ -470,6 +494,8 @@
basicSalary: 0,
pieceSalary: 0,
hourlySalary: 0,
+ overtimeHours: 0,
+ overtimePay: 0,
otherIncome: 0,
socialPersonal: 0,
fundPersonal: 0,
@@ -499,6 +525,8 @@
basicSalary: parseNum(source?.basicSalary ?? fallback.basicSalary),
pieceSalary: parseNum(source?.pieceSalary ?? fallback.pieceSalary),
hourlySalary: parseNum(source?.hourlySalary ?? fallback.hourlySalary),
+ overtimeHours: parseNum(source?.overtimeHours ?? fallback.overtimeHours),
+ overtimePay: parseNum(source?.overtimePay ?? fallback.overtimePay),
otherIncome: parseNum(source?.otherIncome ?? fallback.otherIncome),
socialPersonal: parseNum(source?.socialPersonal ?? fallback.socialPersonal),
fundPersonal: parseNum(source?.fundPersonal ?? fallback.fundPersonal),
@@ -550,6 +578,7 @@
basicSalary: parseNum(row.basicSalary),
pieceSalary: parseNum(row.pieceSalary),
hourlySalary: parseNum(row.hourlySalary),
+ overtimePay: parseNum(row.overtimePay),
otherIncome: parseNum(row.otherIncome),
otherDeduct: parseNum(row.otherDeduct),
socialSupplementAmount: parseNullableNum(row.socialSupplementAmount),
@@ -572,6 +601,12 @@
const handleSalaryInput = row => {
row.basicSalary = parseNum(row.basicSalary);
row.otherIncome = parseNum(row.otherIncome);
+ requestEmployeeRecalculate(row);
+ };
+
+ // 鍔犵彮宸ヨ祫锛堟墜濉級锛氶噸鏂拌绠楀簲鍙戝伐璧勩�佷釜绋庡拰瀹炲彂宸ヨ祫
+ const handleOvertimePayInput = row => {
+ row.overtimePay = parseNum(row.overtimePay);
requestEmployeeRecalculate(row);
};
@@ -896,6 +931,8 @@
basicSalary: parseNum(e.basicSalary),
pieceSalary: parseNum(e.pieceSalary),
hourlySalary: parseNum(e.hourlySalary),
+ overtimeHours: parseNum(e.overtimeHours),
+ overtimePay: parseNum(e.overtimePay),
otherIncome: parseNum(e.otherIncome),
socialPersonal: parseNum(e.socialPersonal),
fundPersonal: parseNum(e.fundPersonal),
--
Gitblit v1.9.3