国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于若依的ruoyi-nbcio流程管理系統(tǒng)增加仿釘釘流程設(shè)計(六)

這篇具有很好參考價值的文章主要介紹了基于若依的ruoyi-nbcio流程管理系統(tǒng)增加仿釘釘流程設(shè)計(六)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

更多ruoyi-nbcio功能請看演示系統(tǒng)

gitee源代碼地址

前后端代碼:?https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后臺管理系統(tǒng)

? ? ? 這節(jié)主要講條件節(jié)點與并發(fā)節(jié)點的有效性檢查,主要是增加這兩個節(jié)點的子節(jié)點檢查,因為這兩個節(jié)點需要增加審批人的子節(jié)點才能有效,否則檢查通不過。

? ?1、首先增加一個子節(jié)點的有效性檢查函數(shù)

/**
   * 校驗子節(jié)點必填項完整性,目前主要是針對條件節(jié)點與并發(fā)節(jié)點
   * @param {Node} node - 節(jié)點數(shù)據(jù)
   */
  static checkChildNode ( node, parent ) {
    let valid = false
    if ( this.isConditionNode( node ) ) {
         if (!isEmpty(node.childNode)) {
           valid = true
         }
    }
    if ( this.isConcurrentNode( node ) ) {
        if (!isEmpty(node.childNode)) {
          valid = true
        }
    }
    return valid
  }

2、檢查所有節(jié)點的時候也增加并發(fā)節(jié)點檢查過程

/**
   * 判斷所有節(jié)點是否信息完整
   * @param {Node} processData - 整個流程圖數(shù)據(jù)
   * @returns {Boolean}
   */
  static checkAllNode ( processData ) {
    let valid = true
    const loop = ( node, callback, parent ) => {
     
      !this.checkNode( node, parent ) && callback()
      if ( node.childNode ) loop( node.childNode, callback, parent )
      if ( !isEmptyArray( node.conditionNodes ) ) {
        node.conditionNodes.forEach( n => loop( n, callback, node ) )
      }
      if ( !isEmptyArray( node.concurrentNodes ) ) {
        console.log("node.concurrentNodes ", node.concurrentNodes)
        node.concurrentNodes.forEach( n => loop( n, callback, node ) )
      }
    }
    loop( processData, () => valid = false )
    return valid
  }
}

3、單個檢查節(jié)點修改如下,特別是條件節(jié)點與并發(fā)節(jié)點的修改

/**
   * 校驗單個節(jié)點必填項完整性
   * @param {Node} node - 節(jié)點數(shù)據(jù)
   */
  static checkNode ( node, parent ) {
    // 抄送人應(yīng)該可以默認自選
    let valid = true
    const props = node.properties
    this.isStartNode( node )
      && !props.initiator
      && ( valid = false )

    this.isConditionNode( node )
      && !props.isDefault
      && !props.initiator
      && isEmptyArray( props.conditions )
      && !this.checkChildNode ( node, parent )
      && ( valid = false )

    const customSettings = ['myself', 'optional', 'director']
    this.isApproverNode( node )
      && !customSettings.includes( props.assigneeType )
      && isEmptyArray( props.approvers )
      && ( valid = false )


    return valid
  }

4、構(gòu)造節(jié)點增加條件與并發(fā)的出錯處理

/* 構(gòu)造節(jié)點
    modify by nbacheng 2023-11-02
*/
function NodeFactory(ctx, data, h) {
  if (!data) return
  console.log("NodeFactory data",data)
  const showErrorTip = ctx.verifyMode && NodeUtils.checkNode(data) === false
  const showChildErrorTip = ctx.verifyMode && (NodeUtils.isConditionNode(data) || NodeUtils.isConcurrentNode(data)) && NodeUtils.checkChildNode(data) === false
  let res = [], branchNode = "", selfNode = null ;
    if (showErrorTip) { //通用節(jié)點的錯誤檢查做特殊處理
    selfNode = (
      <div class="node-wrap">
        <div class={`node-wrap-box ${data.type} ${ showErrorTip ? 'error' : ''}` }>
          <el-tooltip content="未設(shè)置條件" placement="top" effect="dark">
            <div class="error-tip" onClick={this.eventLancher.bind(ctx, "edit", data)}>!!!</div>
          </el-tooltip>
          {nodes[data.type].call(ctx, ctx, data, h)}
          {addNodeButton.call(ctx, ctx, data, h)}
        </div>
      </div>
    );
    } else if (showChildErrorTip) { //對并發(fā)與條件節(jié)點的錯誤檢查做特殊處理
    selfNode = (
        <div class="node-wrap">
          <div class={`node-wrap-box ${data.type} ${ showChildErrorTip  ? 'error' : ''}` }>
            <el-tooltip content="未設(shè)置審批人員節(jié)點" placement="top" effect="dark">
              <div class="error-tip" onClick={this.eventLancher.bind(ctx, "edit", data)}>!!!</div>
            </el-tooltip>
            {nodes[data.type].call(ctx, ctx, data, h)}
            {addNodeButton.call(ctx, ctx, data, h)}
          </div>
        </div>
      );
    } else { //正常節(jié)點的顯示
      selfNode = (
          <div class="node-wrap">
            <div class={`node-wrap-box ${data.type} ${''}` }>
              {nodes[data.type].call(ctx, ctx, data, h)}
              {addNodeButton.call(ctx, ctx, data, h)}
            </div>
          </div>
        );
    }

5、效果圖如下:

基于若依的ruoyi-nbcio流程管理系統(tǒng)增加仿釘釘流程設(shè)計(六),flowable,ruoyi-nbcio,若依,ruoyi-nbcio,flowable,若依,仿釘釘文章來源地址http://www.zghlxwxcb.cn/news/detail-742980.html

到了這里,關(guān)于基于若依的ruoyi-nbcio流程管理系統(tǒng)增加仿釘釘流程設(shè)計(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包