跳转至

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


title: 实现流程中的日期字段自动过滤法定节假日 created: 2026-04-19 updated: 2026-04-19 type: reference tags: [imported, pptx] source: "Weaver Doc Import"


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