泛微Ecology9.0流程Ecode实践:流程明细表重复检验,列内容重复禁止提交

一、相关资源:

泛微Ecology9.0流程二开演示:使用Ecode对流程浏览框进行赋值

泛微Ecology9.0流程二开亲测:隐藏新建流程页面中的Tab页签

泛微Ecology9.0流程Ecode实践:新建流程页面增加自定义页签简单实例

泛微Ecology9.0流程Ecode实践:新建流程页面隐藏操作按钮及右键菜单实例

二、效果展示:

Ecode代码发布后,演示验证[开始日期]、[结束日期]列是否重复,如下图:

三、实现方式:
新建项目(详细步骤可参考相关资源中之前发布的文章链接)

1.新建项目文件夹;

2.在项目文件夹下新建js代码文件register.js,并设置前置加载;

const enable = true;//总开关
let isRun = true; //控制执行次数

/** ----------Start(配置区) --------------**/
/**configOptions对象配置文件
 * 作用:绑定具体流程并配置不可重复字段ID
 * workflowid:要绑定的流程id,修改后面的id,
 * 键名:detail_1对应明细表1,支持多明细依此类推,
 * 键值:fieldid,不可重复字段数组。
**/
const configOptions = {
  workflowid :4,
	checkFields:{
    detail_1 :['field5843','field5845'],
  }
}
/** -----------End(配置区) --------------**/

const isTargetLocation = () => { //定位到要修改的位置
  //如果不是pc流程表单或移动端流程表单中,则不执行下面逻辑
  //if (!(ecodeSDK.hash('#/main/workflow/req') || ecodeSDK.checkLPath('/spa/workflow/static4mobileform/index.html#/req')))
  const {hash} = window.location;
  if(!hash.startsWith('#/main/workflow/req')) return ; //判断页面地址
  if(!ecCom.WeaTools.Base64) return ; //完整组件库加载完成
  //const {iscreate} =weaJs && weaJs.getFrameParams();
  //if(iscreate !== '1') return;
  const {workflowid} = WfForm && WfForm.getBaseInfo();
  if (workflowid != configOptions.workflowid)  return;
  return true;
}


const runScript = ()=>{ //代码块钩子,类似放在代码块中或者jquery.ready
  //可操作WfForm,以及部分表单dom hiden、ReactDOM.render
  if (!isRun) return;
  ecodeSDK.load({
    id:'${appId}',
    noCss: true,
    cb:()=>{
      //console.log('加载成功');
    }
  });
  //绑定提交事件,点击提交按钮时触发明细表重复校验判断
  WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, function(callback){
    var result=getReapetColumInfo();
    //console.log('检查结果:'+JSON.stringify(result));
		if (!Object.keys(result).length>0){
       callback();//继续提交需调用callback,不调用代表阻断  
    } 
    else{
      let info=JSON.stringify(result);
      console.log('WfForm.getFieldInfo(5845)'+WfForm.getFieldInfo('5845'));
      window.weaJs.alert(`指定列${info}内容不允许有重复值,请修改重复列中的内容后,再提交!`); //提示内容修改
    }
  });
  isRun = false; //确保只执行一次
}


function getReapetColumInfo(){//检查所有的重复列,将重复字段信息写入对象返回
  const result={};
  const entries = Object.entries(configOptions.checkFields);
  entries.forEach(([key, value]) => {
    value.forEach(item=>{
      if (checkCustomize(key,item)) result[key]=result[key]?[...result[key],item]:[item]
    });
  });
  return result;
}


function checkCustomize(detail_id,dtField) {//判断单列是否有重复:重复返回true,不重复返回false
  var dtFieldValueArray = new Array();
  var dtRowsIndexArray = WfForm.getDetailAllRowIndexStr(detail_id).split(","); //获取明细表1的所有行标
  dtRowsIndexArray.some(function (i) {
    var dtFieldValue = WfForm.getFieldValue(dtField + "_" + i);
    dtFieldValue && dtFieldValueArray.push(dtFieldValue);
  });
  var repeatValueArray=dtFieldValueArray.filter((element, index)=>dtFieldValueArray.lastIndexOf(element) != index  &&  index == dtFieldValueArray.indexOf(element));
  return repeatValueArray.length>0?true:false; //true表示有重复;
}


ecodeSDK.overwritePropsFnQueueMapSet('WeaReqTop',{ //重复流程组件
    fn:(newProps)=>{ //newProps代表组件参数
        if(!enable) return ;
        if (!isTargetLocation()) return;
        runScript();
        return newProps;
    },
    order:1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用
    desc:'明细表列内重复不允许提交!'
});
发布项目

1.选中新建的项目文件夹,右键点击【发布】,发布成功后文件夹显示为黄色。

2.<完>

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
泛微ecology9是一款基于云计算和大数据技术的协同办公和流程管理软件。其中流程详情表是该软件的一个重要功能模块,用于展示流程的详细信息。 流程详情表主要包括以下内容: 1. 流程基本信息:包括流程名称、流程编号、流程发起人、发起时间、当处理人等基本信息,方便用户快速了解流程的基本情况。 2. 流程步骤:展示流程的执行流程,包括各个步骤的名称、处理人、开始时间、结束时间等信息。用户可以清楚地了解到每个步骤的处理过程和时间。 3. 流程意见:该栏目展示了各个步骤处理人在处理过程中的意见和备注。可以方便用户查看每个步骤的处理情况以及处理人的意见,便于沟通和协作。 4. 流程附件:如果在流程执行的过程中有附件上传,则可以在流程详情表中查看和下载相关附件。这样可以方便用户查看流程相关的文档、图片、视频等文件。 5. 流程审批记录:在流程执行的过程中,每个步骤的处理结果和审批意见都会被记录下来,用户可以通过流程详情表查看到每个步骤的审批记录,方便核对和查询。 泛微ecology9流程详情表功能,可以帮助用户清楚地了解和跟踪流程的执行情况,方便团队之间的沟通和协作。同时,流程详情表也提供了审批记录和意见等信息,有助于提高流程的透明度和可追溯性,为企业提供了更好的决策依据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水哥工坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值