基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(七)

news2024/11/27 5:40:10

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

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

演示地址:RuoYi-Nbcio后台管理系统

这一节主要讲增加延时节点的一些功能

1、首先配置文件增加延时配置

delay: {
    type: "delay",
    content: "等待0分钟",
    properties: {
      title: '延时处理',
      type: "FIXED", //延时类型 FIXED:到达当前节点后延时固定时长 、AUTO:延时到 dateTime设置的时间
      time: 0, //延时时间
      unit: "M", //时间单位 D天 H小时 M分钟
      dateTime: "" //如果当天没有超过设置的此时间点,就延时到这个指定的时间,到了就直接跳过不延时
    }
  },

2、增加延时的相关样式

&.delay::before {
    content: '';
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 4px;
    border-style: solid;
    border-width: 8px 6px 4px;
    border-color: $line-color transparent transparent;
    background: $bg-color;
  }

&.delay{
    &:hover{
      box-shadow: 0 0 0 2px #ff9431, 0 0 5px 4px rgba(0, 0, 0, 0.2);
    }
    .header{
      background-color rgb(242, 86, 67)
    }
  }

3、增加延时属性的页面

    <!-- 延时处理 -->
    <section  v-if="value && isDelayNode()" style="padding-left: 1rem;">
      <div>
        <div style="margin-bottom: 20px">
          <p class="item-desc">延时方式</p>
          <el-radio-group v-model="value.properties.type" size="small">
            <el-radio-button label="FIXED">固定时长</el-radio-button>
            <el-radio-button label="AUTO">自动计算</el-radio-button>
          </el-radio-group>
        </div>
        <div v-if="value.properties.type === 'FIXED'">
          <el-input style="width: 180px;" placeholder="时间单位" size="small" type="number" v-model="value.properties.time">
            <el-select style="width: 75px;" v-model="value.properties.unit" slot="append" placeholder="请选择">
              <el-option label="天" value="D"></el-option>
              <el-option label="小时" value="H"></el-option>
              <el-option label="分钟" value="M"></el-option>
            </el-select>
          </el-input>
          <span class="item-desc"> 后进入下一步</span>
        </div>
        <div class="item-desc" v-else>
          <el-time-picker value-format="HH:mm:ss" style="width: 150px;" size="small" v-model="value.properties.dateTime" placeholder="任意时间点"></el-time-picker>
          <span class="item-desc"> 后进入下一步</span>
        </div>
      </div>
    </section>

4、延时页面确认的逻辑

/**
     *  延时节点确认保存
     */
    delayNodeComfirm() {
      console.log("delayNodeComfirm this.value",this.value)
      let content = ''
      if(this.value.properties.type === "FIXED") {
          content = "等待" + this.value.properties.time + "分钟"
      } else if (this.value.properties.type === "AUTO") {
          content = "到当天" +  this.value.properties.dateTime
      } else {

      }
      const formOperates = this.startForm.formOperates.map(t=>({formId: t.formId, formOperate: t.formOperate}))
      Object.assign(this.properties, this.value.properties, {formOperates})
      this.$emit("confirm", this.properties, content || '请设置延时时间');
      this.visible = false;
    },

5、对延时节点错误的检查页面

 } else if (showErrorDelayTip) { //对延时节点的错误检查做特殊处理
    selfNode = (
        <div class="node-wrap">
          <div class={`node-wrap-box ${data.type} ${ showErrorDelayTip  ? 'error' : ''}` }>
            <el-tooltip content="未设置延时时间" 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>
      );
    }

6、校验延时子节点必填项完整性

  /**
   * 校验延时子节点必填项完整性
   * @param {Node} node - 节点数据
   */
  static checkDelayNode ( node, parent ) {
    let valid = true
    if (node.properties.type === "AUTO") {
      if ((node.properties.dateTime || "") === ""){
        valid = false
      }
    } else {
      if (node.properties.type === "FIXED" && node.properties.time <= 0) {
        valid = false
      }
    }
    return valid
  }

7、效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++代码】编辑距离,最长递增子序列,最长连续递增序列,最长重复子数组,最长公共子序列,不相交的线,动态规划--代码随想录

题目&#xff1a;最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,…

设数据为01101001,试采用4个校验位求其偶校验方式的海明码。

遇到一个题目&#xff0c;但是教材书上写的比较迷糊&#xff0c;看不懂&#xff0c;后来在网上搜了一下方法&#xff0c;发现还是比较简单的&#xff0c;现在分享一下我的解法 首先&#xff0c;套用公式&#xff1a;2k - 1 > n k 因为求得数字是8位数&#xff0c;n8&#x…

代码冲突解决

远程仓库修改 本地代码修改 接下来我们push一下 如果使用IDE 冲突内容如下&#xff1a; 我们可以使用自带的工具进行修改 我们选择接受自己改动的即可 如果使用git工具怎么去处理呢 远程分支是这样 本地是这样的 add和commit之后&#xff0c;再pull&#xff0c;最后pus…

el-form-item添加校验规则后取消前面的星号

0 效果 联系电话添加了rules校验&#xff0c;但前面的星号不需要 1 样式

AdvFaces: Adversarial Face Synthesis

AdvFaces: Adversarial Face Synthesis AdvFaces:对抗性人脸合成 摘要 我们提出了AdvFaces&#xff0c;一种自动对抗人脸合成方法&#xff0c;通过生成对抗网络学习在显著面部区域产生最小的扰动。一旦AdvFaces经过训练&#xff0c;它就可以自动产生难以察觉的扰动&#xff0…

基于Python+OpenCV+PyQt5鱼群密度和速度检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于PythonOpenCVPyQt5的鱼群密度和速度检测系统是一种利用计算机视觉技术和图像处理算法来实现对鱼群密度和速度的…

高阶数据结构学习——LRU Cache

文章目录 1、了解LRU Cache&#xff08;Least Recently Used缩写&#xff09;2、代码实现 1、了解LRU Cache&#xff08;Least Recently Used缩写&#xff09; Cache是缓存&#xff0c;在磁盘和内存之间&#xff0c;内存和寄存器之间都存在&#xff0c;CPU和内存之间存在三级缓…

Windows经常提示更新怎么办?一招暂停66年,绝对靠谱!

windows10/11的更新频率非常高&#xff0c;也经常会修复旧bug的同时带来一些新的bug。所以有些人不喜欢系统的自动更新&#xff0c;总想把它禁用掉。禁用系统更新的软件有很多&#xff0c;不过这些方法大多是强行禁止&#xff0c;有时候会引来一些其它的问题。 所以为了阻止Win…

“1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践

一分钟精华速览 “只知道系统有问题&#xff0c;但是找不到问题到底出在哪里”&#xff0c;这几乎是大家都面临过、或正在面临的问题。用户在投诉&#xff0c;但是我的指标都是正常的&#xff0c;到底是哪一环出问题了&#xff1f; 本文详细介绍了中国联通在智能运维领域的应用…

软考1-介绍

软考介绍&#xff1a; https://www.zhihu.com/question/530084452/answer/3230275708 软考作用&#xff1a; https://www.zhihu.com/question/29904891/answer/3181804961

(02)Mycat的安装与启动

1、 下载Mycat安装包 2、 解压缩文件拷贝到linux下 /usr/local/ 3、三个重要文件 1、schema.xml 定义逻辑库&#xff0c;表、分片节点等内容 2、rule.xml 定义分片规则 3、server.xml 定义用户以及系统相关变量&#xff0c;如端口等. 4、启动前先修改schema.xml <?x…

List 接口常用实现类底层分析

一、集合 1.1 简介 集合主要分为两组&#xff08;单列集合、双列集合&#xff09;&#xff0c;Collection 接口有两个重要的子接口 List 和Set&#xff0c;它们的实现子类都是单列集合。Map 接口的实现子类是双列集合&#xff0c;存放的是 K-V 1.2 关系图 二、Collection 接口…

听说你的爬虫被封了?

目录 前言 一、为什么会被封IP&#xff1f; 二、代理IP是什么&#xff1f; 三、代理IP的分类 1. 公共代理IP 2. 私人代理IP 四、使用代理IP的方法 1. 使用第三方库 2. 手动设置代理IP 五、常见问题及解决方法 1. 代理IP不稳定 2. 代理IP被封 六、代码实例 总结 前…

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中&#xff0c;城市内涝问题频繁出现&#xff0c;影响城市管理水平的提升&#xff0c;也会进一步减缓城市基础设施建设。尤其近几年来&#xff0c;城市内涝灾害频繁出现&#xff0c;在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…

文本批量处理,一键转换HTML文件编码,释放您的繁琐工作!

亲爱的用户&#xff0c;您是否曾经为需要手动转换HTML文件编码而耗费大量时间和精力而感到困扰&#xff1f;现在&#xff0c;我们为您提供了一款强大的文本批量处理工具&#xff01;让您一键将HTML文件编码进行转换&#xff0c;轻松释放您的繁琐工作&#xff01; 首先&#xf…

RabbitMQ部署指南:使用docker部署

RabbitMQ部署指南 1.单机部署&#xff08;为例&#xff09; 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3-management方式二&#xff1a;从本地加载 在课前资料已经提供了镜像包&#xff1a; 上传到虚拟机中…

JS-数组定义

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>JS-对象</title> </head><body>&l…

Centos部署清华ChatGLM3-6B详细教程

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2023-10-03 引言 上周末&#xff0c;智谱AI在2023中国计算机大会&#xff08;CNCC&#xff09;上推出了全自研的第三代基座大模型ChatGLM3&#xff0c;在…

芯片封装技术

一、概述 封装的作用 1.3 封装类型 1.3.1 打线封装&#xff08;Wire Bonding&#xff09; 打线封装是传统的封装方式&#xff0c;具体过程是将晶圆切割为晶粒&#xff08;Die&#xff09;后&#xff0c;使晶粒贴合到相应的基板架的小岛&#xff08;LeadframePad&#xff09…

leetcode:389. 找不同

一、题目 函数原型&#xff1a;char findTheDifference(char * s, char * t) 二、思路 作者原先的思路是先将两个字符串从小到大排序&#xff0c;然后两个字符串依次比较。若出现字符串t中的元素和字符串s不相等&#xff0c;则说明该元素就是被添加的字母。 但是&#xff0c;该…