Kaynağa Gözat

feat: [BPM 工作流] Simple 模型新增跳过表达式

jason 6 ay önce
ebeveyn
işleme
15aef8d4b7

+ 4 - 0
src/api/bpm/task/index.ts

@@ -5,6 +5,10 @@ import request from '@/config/axios'
  */
 export enum TaskStatusEnum {
   /**
+   * 跳过
+   */
+  SKIP = -2,
+  /**
    * 未开始
    */
   NOT_START = -1,

+ 2 - 0
src/components/SimpleProcessDesignerV2/src/consts.ts

@@ -131,6 +131,8 @@ export interface SimpleFlowNode {
   signEnable?: boolean
   // 审批意见
   reasonRequire?: boolean
+  // 跳过表达式
+  skipExpression?: string
   // 触发器设置
   triggerSetting?: TriggerSetting
   // 子流程

+ 1 - 0
src/components/SimpleProcessDesignerV2/src/node.ts

@@ -177,6 +177,7 @@ export type UserTaskFormType = {
   }
   signEnable: boolean
   reasonRequire: boolean
+  skipExpression?: string
 }
 
 export type CopyTaskFormType = {

+ 10 - 0
src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue

@@ -411,6 +411,12 @@
                 />
               </el-form-item>
             </div>
+            <div>
+              <el-divider content-position="left">跳过表达式</el-divider>
+              <el-form-item prop="skipExpression">
+                <el-input v-model="configForm.skipExpression" type="textarea"  />
+              </el-form-item>
+            </div>
           </el-form>
         </div>
       </el-tab-pane>
@@ -770,6 +776,8 @@ const saveConfig = async () => {
   currentNode.value.signEnable = configForm.value.signEnable
   // 审批意见
   currentNode.value.reasonRequire = configForm.value.reasonRequire
+  // 跳过表达式
+  currentNode.value.skipExpression = configForm.value.skipExpression
 
   currentNode.value.showText = showText
   settingVisible.value = false
@@ -851,6 +859,8 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
   configForm.value.signEnable = node?.signEnable ?? false
   // 7. 审批意见
   configForm.value.reasonRequire = node?.reasonRequire ?? false
+  // 8. 跳过表达式
+  configForm.value.skipExpression = node?.skipExpression ?? ''
 }
 
 defineExpose({ openDrawer, showUserTaskNodeConfig }) // 暴露方法给父组件

+ 7 - 2
src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue

@@ -28,7 +28,8 @@
       <div class="flex flex-col items-start gap2" :id="`activity-task-${activity.id}-${index}`">
         <!-- 第一行:节点名称、时间 -->
         <div class="flex w-full">
-          <div class="font-bold"> {{ activity.name }}</div>
+          <div class="font-bold"> {{ activity.name }} <span v-if="activity.status === TaskStatusEnum.SKIP">【跳过】</span>
+          </div>
           <!-- 信息:时间 -->
           <div
             v-if="activity.status !== TaskStatusEnum.NOT_START"
@@ -179,7 +180,7 @@ import * as ProcessInstanceApi from '@/api/bpm/processInstance'
 import { TaskStatusEnum } from '@/api/bpm/task'
 import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts'
 import { isEmpty } from '@/utils/is'
-import { Check, Close, Loading, Clock, Minus, Delete } from '@element-plus/icons-vue'
+import { Check, Close, Loading, Clock, Minus, Delete, ArrowDown } from '@element-plus/icons-vue'
 import starterSvg from '@/assets/svgs/bpm/starter.svg'
 import auditorSvg from '@/assets/svgs/bpm/auditor.svg'
 import copySvg from '@/assets/svgs/bpm/copy.svg'
@@ -203,6 +204,8 @@ const { push } = useRouter() // 路由
 
 // 审批节点
 const statusIconMap2 = {
+  // 跳过
+  '-2': { color: '#cccccc', icon: 'ep:arrow-down' },
   // 未开始
   '-1': { color: '#909398', icon: 'ep-clock' },
   // 待审批
@@ -224,6 +227,8 @@ const statusIconMap2 = {
 }
 
 const statusIconMap = {
+  // 跳过
+  '-2': { color: '#909398', icon: ArrowDown},
   // 审批未开始
   '-1': { color: '#909398', icon: Clock },
   '0': { color: '#00b32a', icon: Clock },