commit 06a108862126ce51e3adc0d430c0f52306b223ac Author: OpenClaw Agent Date: Wed Sep 2 06:37:18 2026 +0800 snapshot: index.html @ 20260902_063718 由 index.html.bak.20260902_063718 重建的历史快照。 时间取自备份文件名(备份生成时刻,Asia/Shanghai)。 此提交只含 index.html,当时其余文件的状态没有对应备份,无法还原。 diff --git a/index.html b/index.html new file mode 100644 index 0000000..3f96dc9 --- /dev/null +++ b/index.html @@ -0,0 +1,864 @@ + + + + + + 工时薪酬助手 + + + + + + +
+ + +
+ +
+
+ + {{ currentYear }}年{{ currentMonth + 1 }}月 + +
+ + {{ tab === 'calendar' ? '打卡' : '汇总' }} +
+ +
+ ⚙️ 设置 +
+ + +
+
+

出勤

+

{{ monthStats.workDays }}/{{ settings.fullDays }}

+
+
+

总工时

+

{{ fmt(monthStats.totalHours) }}h

+
+
+

工时收入

+

{{ money(monthStats.basePay) }}

+
+
+
+ + +
+ + +
+
+ 日一二三四五六 +
+ +
+
+ +
+
+ {{ day }} + + + + +
+ + + 休 + 假 + — +
+
+ +
+ 1–{{ settings.cutoff }}日 → {{ settings.payDayA }}号发 + {{ settings.cutoff + 1 }}日– → 次月{{ settings.payDayB }}号发 +
+ +

奖励与处罚统一在次月{{ settings.payDayB }}号结算

+
+ + +
+ + +
+
+ 💳 本月到账 + 时薪 {{ settings.rate }} 元/h +
+
+
+
+

{{ currentMonth + 1 }}月{{ settings.payDayB }}日

+

{{ prevLabel.month + 1 }}月下半月 {{ fmt(prevStats.h2) }}h + 奖惩 {{ signed(prevStats.adjustNet) }}

+
+ {{ money(payoutThisB) }} +
+
+
+

{{ currentMonth + 1 }}月{{ settings.payDayA }}日

+

本月上半月 {{ fmt(monthStats.h1) }}h · 纯工时

+
+ {{ money(payoutThisA) }} +
+
+ 本月现金流合计 + {{ money(payoutThisB + payoutThisA) }} +
+
+
+ + +
+

⏱ 本月工时

+
+
+

上半月 1–{{ settings.cutoff }}日

+

{{ fmt(monthStats.h1) }}h

+

{{ money(monthStats.h1 * settings.rate) }}

+
+
+

下半月 {{ settings.cutoff + 1 }}日–月底

+

{{ fmt(monthStats.h2) }}h

+

{{ money(monthStats.h2 * settings.rate) }}

+
+
+
+
出勤天数{{ monthStats.workDays }} 天(白 {{ monthStats.dayShifts }} / 夜 {{ monthStats.nightShifts }})
+
休息 / 请假{{ monthStats.restDays }} / {{ monthStats.leaveDays }} 天
+
工时收入合计{{ money(monthStats.basePay) }}
+
+
+ + +
+
+

🎯 本月奖惩

+ 次月{{ settings.payDayB }}号结算 +
+

以下金额不计入当月工资

+
+
+ 满勤奖{{ monthStats.workDays >= settings.fullDays ? '(' + fmt(monthStats.totalHours) + 'h×' + settings.fullBonusPerHour + ')' : '(未达' + settings.fullDays + '天)' }} + {{ monthStats.fullBonus > 0 ? '+' + money(monthStats.fullBonus) : '¥0' }} +
+
+ 查获奖励({{ monthStats.foundCount }}件) + {{ monthStats.foundBonus > 0 ? '+' + money(monthStats.foundBonus) : '¥0' }} +
+
+ 漏查处罚({{ monthStats.missedCount }}件) + {{ monthStats.missedPenalty > 0 ? '-' + money(monthStats.missedPenalty) : '¥0' }} +
+
+ 其他扣款 + {{ monthStats.otherPenalties > 0 ? '-' + money(monthStats.otherPenalties) : '¥0' }} +
+
+ 奖惩净额 + {{ signed(monthStats.adjustNet) }} +
+
+
+

处罚明细

+
+ {{ d.day }}日 {{ d.reason }} + -{{ money(d.amount) }} +
+
+
+ + +
+
+

{{ nextLabel.month + 1 }}月{{ settings.payDayB }}日预估

+ {{ money(payoutNextB) }} +
+
+
本月下半月工时 {{ fmt(monthStats.h2) }}h{{ money(monthStats.h2 * settings.rate) }}
+
本月奖惩结算{{ signed(monthStats.adjustNet) }}
+
+

⚠️ 处罚已超过下半月工时收入,实发按 ¥0 计,差额可能顺延

+
+ + +
+

💡 诊断

+
+

本月还没有打卡记录。

+ +
+
+ + +
+ + +
+ +
+

💰 薪酬规则

+
+ + + +
+

满勤奖按「当月总工时 × 单价」计算,属于奖励,不并入当月工资。

+
+ +
+

🎯 奖惩标准

+
+ + +
+
+ +
+

📅 发放周期

+
+ + + +
+

+ 1–{{ settings.cutoff }}日工时 → 当月{{ settings.payDayA }}号发;{{ settings.cutoff + 1 }}日–月底工时 + 当月奖惩 → 次月{{ settings.payDayB }}号一起发。 +

+
+ +
+

🕐 班次默认工时

+
+ + +
+

夜班跨天,工时全部归入开始打卡的那一天。

+
+ +
+

🗄 数据

+
+
+ 已存打卡记录 + {{ recordCount }} 天 +
+ + + + + + +
+
+ +

+ 数据仅保存在本机浏览器(localStorage)。
清除浏览器数据会丢失,建议定期导出备份。 +

+
+ +
+ + + + + + +
+
+ +
+
+

{{ currentMonth + 1 }}月{{ selectedDay }}日 打卡

+

+ 工时计入 + + {{ selectedDay <= settings.cutoff ? `${currentMonth + 1}月${settings.payDayA}号` : `${nextLabel.month + 1}月${settings.payDayB}号` }} + + · 奖惩次月{{ settings.payDayB }}号结算 +

+
+ +
+ +
+ +
+ +
+
+ + +
+ +
+
+ 结算工时 + {{ draftRecord.hours }} h +
+
+ +
+
+ +
+

以下奖惩不计入当月工资,次月{{ settings.payDayB }}号结算

+
+
+

查获 +{{ settings.foundBonus }}/件

+
+ + {{ draftRecord.contraband_found }} + +
+
+
+

漏查 −{{ settings.missedPenalty }}/件

+
+ + {{ draftRecord.contraband_missed }} + +
+
+
+
+ + +
+
+
+ +
+ + +
+
+
+
+ + + +
+ {{ toast }} +
+
+ +
+ + + +