本文摘要
文章围绕泛微 Ecology EC9 流程退回后禁止再次提交的需求,对比了辅助字段与前端代码两种思路。作者通过阅读源码发现 rightMenu.lastnodeid 可标识上次退回的节点,据此在页面加载时置灰按钮并注册提交校验事件进行拦截。方案适合追求不加字段、便于复用的开发场景,同时提醒技术选型无绝对对错。
我的想法
对于功能的实现我希望更加简单,更加优雅,不希望有各种杂乱的操作,所有我决定找一个变量可以直接判断流程是否为被退回的状态,不去增加字段以及配置内容,以便以后快速的复用。
今天因为讨论这个问题,群里人们还吵了起来,一方主张基础功能配置 增加辅助字段的方式实现,一方主张不加字段“正八经开发有自己做事的标准”;
我认为 没有绝对的对错,只有最适合自己的方案!每人有不同的追求,讨论技术没什么错与对,每人都有自己的想法,可以说出自己的观点,但没必要反驳别人的观点!
方案1 辅助字段
添加一个辅助字段,在退回时对它进行赋值,提交时判断这个字段是否有值,在此不做过多介绍,标准功能即可完全实现
方案2 代码块
核心:wfform.getGlobalStore().rightMenu.lastnodeid
我看了源码/workflow/reqform/rightMenu,此处的lastnodeid是指:上一次退回操作的节点id,所以,只要存在这个lastnodeid,即可判断是退回的流程
jQuery(document).ready(function () { const globalStore = wfform.getGlobalStore(); if (globalStore && globalStore.rightMenu && globalStore.rightMenu.lastnodeid) { WfForm.controlBtnDisabled(true); alert("注意:退回流程禁止再次提交!"); }
// 拦截提交,增加一层按钮置灰保险 WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, function (callback) { if (globalStore.rightMenu.lastnodeid) { WfForm.controlBtnDisabled(true); alert("注意:当前节点不允许再次提交!"); return; } callback(); });});另一个方案:wfform.getGlobalStore().promptInfos 判断其包含退回也可以,但是没有rightMenu.lastnodeid方案优雅~