跳转至

流程 中的日期字段自动过滤法定节假日


title: doc_0409e09ea154_实现流程中的日期字段自动过滤法定节假日 created: 2026-04-19 updated: 2026-04-19 type: reference tags: [best-practices, ppt] source: "Weaver Official"


Slide 1

实现流程中的日期字段自动过滤法定节假日 泛微网络 培训服务中心

Slide 2

需求背景及实现效果

Slide 3

企业的一些流程表单中,是不是总遇到这些场景? 员工填报销单,财务后期核对要额外筛法定节假日单据; 请假单选了法定节假日,流程到领导处才发现需退回重填; 项目排期表把休息日设为关键节点,导致整体计划逻辑混乱等等问题。 本期采用JS代码实现在流程中的日期字段上自动过滤法定节假日。

Slide 4

在流程表单的日期字段上选择日期,如果选择的日期为法定节假日,则弹出提示框,点击确认后需重新选择。 实现效果

Slide 5

JS代码块应用样例

Slide 6

配置实现步骤 实现方式: 后台打开html模板; 打开插入代码块; 插入修改好的代码块; 流程表单

Slide 7

代码示例——JS代码 // 1. 定位日期字段 const dateFieldId = WfForm.convertFieldNameToId("rq"); // 替换为你的日期字段名 let saveFlag = 0; let nonWorkdayFlag = 0; // 2. 实时监听日期变化 WfForm.bindFieldChangeEvent(dateFieldId, function (obj, id, value) { saveFlag = 0; if (value) checkWorkday(value);}); // 3. 保存前拦截校验 WfForm.registerCheckEvent(WfForm.OPER_SAVE, function (callback) { let dateVal = WfForm.getFieldValue(dateFieldId); if (dateVal) { saveFlag = 1; checkWorkday(dateVal).then(() => { if (nonWorkdayFlag === 1) { window.weaJs.alert("所选日期包含非工作日,请修改后再保存!"); return; } callback(); }); } else { callback(); } }); 1) { window.weaJs.alert("所选日期包含非工作日,请修改后再保存!"); return; } callback(); }); } else { callback(); } });## Slide 8

代码示例
// 4. 核心:工作日校验函数
function checkWorkday(dateString) {
const holidayApiUrl = https://timor.tech/api/holiday/year/${dateString};
return new Promise(resolve => {
fetch(holidayApiUrl)
.then(res => res.json())
.then(data => {
const holidayDates = new Set(
Object.values(data.holiday).map(item => item.date)
);
const isNonWorkday = holidayDates.has(dateString);
if (isNonWorkday) {
saveFlag === 0
? window.weaJs.alert("日期包含非工作日,请确认!")
(nonWorkdayFlag = 1); } else { nonWorkdayFlag = 0; } resolve(); }) .catch(err => { console.error("API调用失败:", err); resolve(); }); }); }

Slide 9

志达宇泛 见著于微 感谢您的信任与支持! 我们始终努力提供好用的移动办公平台


🖼️ 提取的插图 (共 10 张)

image11.jpeg

image5.jpeg

image6.gif

image9.jpeg