fengbh 9fc1e8633d 动态月份导航:查上月/查下月基于当前显示月翻页,新增年月选择器
- currentMonthOffset 追踪当前显示月份的偏移量
- navigateMonth(delta) 支持逐月翻看历史,可反复点击跨年
- 查当月重置偏移为 0
- 新增年月选择器(年份 + 月份下拉 + 查询按钮),放在按钮末尾
- queryByYearMonth 根据选中年月计算考勤周期并查询

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 11:20:18 +08:00
2025-07-19 16:01:14 +08:00
2026-01-28 15:13:46 +08:00
2025-07-19 06:41:44 +00:00

FM-OHS

复旦微加班时间统计 —— 一个运行在金蝶 EAS HR 考勤页面上的 Tampermonkey 用户脚本,自动计算并显示加班工时。

功能

  • 加班自动计算:工作日按 17:20 后计算,非工作日(周末/节假日)按全天计算
  • 内置节假日数据库:根据工作日数据自动识别调休日、法定节假日
  • 多维度查询:支持当月、上月、当周等一键查询
  • 结果直显:加班时数直接写入考勤表格,非工作日绿色高亮

快速上手

1. 安装脚本管理器

任选其一:

2. 安装脚本

前往 Greasy Fork - 复旦微加班时间统计 点击安装。

3. 使用

打开金蝶 EAS HR 考勤页面,菜单栏会自动出现 6 个按钮:

按钮 功能
统计加班时间 直接计算当前表格中的加班工时
查当月 查询当月考勤周期21 日至次月 20 日)
查上月 查询上月考勤周期
查上上月 查询两个月前的考勤周期
查上上上月 查询三个月前的考勤周期
查当周 查询当周(周一至周日)

每年更新

节假日数据每年需要更新一次。API 每天限 5 次调用,因此设计为一年调用一次后持久化。

前置条件

  • Python 3.x
  • requests 库:pip install requests

更新步骤

# 1. 抓取新年节假日数据(修改 update.py 中的 year 参数为目标年份)
python update.py

# 2. 合并到数据库并自动构建 main.js
python comp_json.py

# 3. 将生成的 main.js 内容更新到 Greasy Fork 或手动安装到 Tampermonkey

comp_json.py 会自动将新数据合并到 data.json,然后调用 build.py 生成包含完整数据的 main.js

开发

项目结构

FM-OHS/
├── main.template.js   # 脚本代码模板(~300 行,可读可维护)
├── main.js            # 构建产物,由 build.py 生成(提交到 Greasy Fork
├── data.json          # 节假日数据(唯一数据源)
├── build.py           # 构建脚本:将 data.json 注入模板 → main.js
├── update.py          # 从 API 抓取年度节假日数据
├── comp_json.py       # 合并新数据到 data.json 并自动构建
└── holidays_2026.json # 2026 年原始 API 响应数据

修改代码

  1. 编辑 main.template.js(不需要碰 main.js
  2. 运行 python build.py 生成 main.js
  3. 在浏览器中加载 main.js 验证

数据格式

data.json 中的每条记录:

{
  "year": 2026,
  "date": 20260101,
  "week": 4,
  "workday": 1,
  "holiday": 88
}

关键字段:workday1 = 工作日2 = 非工作日),dateYYYYMMDD 格式)。

License

MIT

Description
统计复旦微加班工时
Readme MIT 513 KiB
Languages
JavaScript 99.5%
Python 0.5%