王毅成
骑士
骑士
  • UID103
  • 粉丝2
  • 关注0
  • 发帖数30
  • 社区居民
阅读:6775回复:0

平台流程提交自带选人框,提交后没有相应提示解决办法

楼主#
更多 发布于:2016-12-08 17:07
1、先描述下问题的场景。
在使用平台构件WPSUI.startProcessByAssignerSelector提交流程的时候,会弹出一个选择下一步执行人的弹出框,如下图:

图片:2.jpg


客户在实际操作的时候,选择执行人过后点击“提交并启动流程”按钮,由于网络原因,流程提交有延迟,同时这个自带的弹出框在提交流程的时候没有相应的提示语,所以用户会多次点击“提交并启动流程”按钮,这就会导致审核时候有多条流程任务需要审核。
2、说一下解决思路。
最开始的想法是自己重新实现WPSUI.startProcessByAssignerSelector构件的功能,在提交的时候用MSG.loading来提示用户“正在提交中,请稍候。。。”,所有流程操作都可以参考流程API,这样做肯定是能够实现的。但是觉得麻烦,所以决定在原来的弹出框界面进行改造,首先需要获取“提交并启动流程”按钮,然后为其添加点击事件,最后添加MSG.loading来提示用户请稍候,在流程提交完成过后使用MSG.endLoading关闭提示。
3、解决办法

图片:1.jpg



如图红色圈出的6个节点就是在原来提交流程基础上加的。
startProcessByAssignerSelector后面的自定义:

setTimeout(function() {
 $("#flow-start-btn").children().children().children().eq(0).find("button").click(function(){
   var pserson = $("#startProcessByAssignerSelectorWin").find("textarea").val();//需要判断是否选择执行人
 if(pserson){
 MSG.loading("正在提交中。。。");
 }
   });
}, 500);
原理很简单,在提交流程的时候通过jquery定位“提交并启动流程”按钮,为其添加单击事件。
第二次提交流程的时候,只是提交按钮不一样,叫做“再次提交流程”,判断是否选择下一步执行人有点不同。

图片:4.jpg



submitProcess后面自定义:

setTimeout(function() {
 $("#flow-start-btn").children().children().children().eq(0).find("button").click(function(){
   var pserson = $("#ReStartProcessByAssignerSelectorWin").find("textarea").val();//需要判断是否选择执行人
 if(pserson){
 MSG.loading("正在提交中。。。");
 }
   });
}, 500);


最后效果就是这样:

图片:3.jpg


这样用户就不会误认为是点击没有效果而反复点击提交
[王毅成于2016-12-09 09:00编辑了帖子]
游客

返回顶部