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

pull/804/head
jason 2025-07-29 09:25:25 +08:00
parent acdd72359c
commit 15aef8d4b7
5 changed files with 24 additions and 2 deletions

View File

@ -4,6 +4,10 @@ import request from '@/config/axios'
* *
*/ */
export enum TaskStatusEnum { export enum TaskStatusEnum {
/**
*
*/
SKIP = -2,
/** /**
* *
*/ */

View File

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

View File

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

View File

@ -411,6 +411,12 @@
/> />
</el-form-item> </el-form-item>
</div> </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> </el-form>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -770,6 +776,8 @@ const saveConfig = async () => {
currentNode.value.signEnable = configForm.value.signEnable currentNode.value.signEnable = configForm.value.signEnable
// //
currentNode.value.reasonRequire = configForm.value.reasonRequire currentNode.value.reasonRequire = configForm.value.reasonRequire
//
currentNode.value.skipExpression = configForm.value.skipExpression
currentNode.value.showText = showText currentNode.value.showText = showText
settingVisible.value = false settingVisible.value = false
@ -851,6 +859,8 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
configForm.value.signEnable = node?.signEnable ?? false configForm.value.signEnable = node?.signEnable ?? false
// 7. // 7.
configForm.value.reasonRequire = node?.reasonRequire ?? false configForm.value.reasonRequire = node?.reasonRequire ?? false
// 8.
configForm.value.skipExpression = node?.skipExpression ?? ''
} }
defineExpose({ openDrawer, showUserTaskNodeConfig }) // defineExpose({ openDrawer, showUserTaskNodeConfig }) //

View File

@ -28,7 +28,8 @@
<div class="flex flex-col items-start gap2" :id="`activity-task-${activity.id}-${index}`"> <div class="flex flex-col items-start gap2" :id="`activity-task-${activity.id}-${index}`">
<!-- 第一行节点名称时间 --> <!-- 第一行节点名称时间 -->
<div class="flex w-full"> <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 <div
v-if="activity.status !== TaskStatusEnum.NOT_START" 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 { TaskStatusEnum } from '@/api/bpm/task'
import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts' import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts'
import { isEmpty } from '@/utils/is' 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 starterSvg from '@/assets/svgs/bpm/starter.svg'
import auditorSvg from '@/assets/svgs/bpm/auditor.svg' import auditorSvg from '@/assets/svgs/bpm/auditor.svg'
import copySvg from '@/assets/svgs/bpm/copy.svg' import copySvg from '@/assets/svgs/bpm/copy.svg'
@ -203,6 +204,8 @@ const { push } = useRouter() // 路由
// //
const statusIconMap2 = { const statusIconMap2 = {
//
'-2': { color: '#cccccc', icon: 'ep:arrow-down' },
// //
'-1': { color: '#909398', icon: 'ep-clock' }, '-1': { color: '#909398', icon: 'ep-clock' },
// //
@ -224,6 +227,8 @@ const statusIconMap2 = {
} }
const statusIconMap = { const statusIconMap = {
//
'-2': { color: '#909398', icon: ArrowDown},
// //
'-1': { color: '#909398', icon: Clock }, '-1': { color: '#909398', icon: Clock },
'0': { color: '#00b32a', icon: Clock }, '0': { color: '#00b32a', icon: Clock },