yuan
13 小时以前 37a6a97fbd051bd3c998fb491d0b93f1f2a714f0
feat: 添加请假、缺勤、迟到、早退次数及手动扣工资功能,优化工资计算
已修改1个文件
76 ■■■■■ 文件已修改
src/views/personnelManagement/monthlyStatistics/components/formDia.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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="扣工资"
                           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);
  };
  // 扣工资(手填):重新计算实发工资
  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 ?? "",
      })),