// @ts-ignore
|
import { DictDataVO } from '@/api/system/dict/types'
|
import { TaskStatusEnum } from '@/api/bpm/task'
|
/**
|
* 节点类型
|
*/
|
export enum NodeType {
|
/**
|
* 结束节点
|
*/
|
END_EVENT_NODE = 1,
|
/**
|
* 发起人节点
|
*/
|
START_USER_NODE = 10,
|
/**
|
* 审批人节点
|
*/
|
USER_TASK_NODE = 11,
|
|
/**
|
* 抄送人节点
|
*/
|
COPY_TASK_NODE = 12,
|
|
/**
|
* 条件节点
|
*/
|
CONDITION_NODE = 50,
|
/**
|
* 条件分支节点 (对应排他网关)
|
*/
|
CONDITION_BRANCH_NODE = 51,
|
/**
|
* 并行分支节点 (对应并行网关)
|
*/
|
PARALLEL_BRANCH_NODE = 52,
|
|
/**
|
* 包容分支节点 (对应包容网关)
|
*/
|
INCLUSIVE_BRANCH_NODE = 53
|
}
|
|
export enum NodeId {
|
/**
|
* 发起人节点 Id
|
*/
|
START_USER_NODE_ID = 'StartUserNode',
|
|
/**
|
* 发起人节点 Id
|
*/
|
END_EVENT_NODE_ID = 'EndEvent'
|
}
|
|
/**
|
* 节点结构定义
|
*/
|
export interface SimpleFlowNode {
|
id: string
|
type: NodeType
|
name: string
|
showText?: string
|
// 孩子节点
|
childNode?: SimpleFlowNode
|
// 条件节点
|
conditionNodes?: SimpleFlowNode[]
|
// 审批类型
|
approveType?: ApproveType
|
// 候选人策略
|
candidateStrategy?: number
|
// 候选人参数
|
candidateParam?: string
|
// 多人审批方式
|
approveMethod?: ApproveMethodType
|
//通过比例
|
approveRatio?: number
|
// 审批按钮设置
|
buttonsSetting?: any[]
|
// 表单权限
|
fieldsPermission?: Array<Record<string, any>>
|
// 审批任务超时处理
|
timeoutHandler?: TimeoutHandler
|
// 审批任务拒绝处理
|
rejectHandler?: RejectHandler
|
// 审批人为空的处理
|
assignEmptyHandler?: AssignEmptyHandler
|
// 审批节点的审批人与发起人相同时,对应的处理类型
|
assignStartUserHandlerType?: number
|
// 条件类型
|
conditionType?: ConditionType
|
// 条件表达式
|
conditionExpression?: string
|
// 条件组
|
conditionGroups?: ConditionGroup
|
// 是否默认的条件
|
defaultFlow?: boolean
|
// 活动的状态,用于前端节点状态展示
|
activityStatus?: TaskStatusEnum
|
}
|
// 候选人策略枚举 ( 用于审批节点。抄送节点 )
|
export enum CandidateStrategy {
|
/**
|
* 指定角色
|
*/
|
ROLE = 10,
|
/**
|
* 部门成员
|
*/
|
DEPT_MEMBER = 20,
|
/**
|
* 部门的负责人
|
*/
|
DEPT_LEADER = 21,
|
/**
|
* 连续多级部门的负责人
|
*/
|
MULTI_LEVEL_DEPT_LEADER = 23,
|
/**
|
* 指定岗位
|
*/
|
POST = 22,
|
/**
|
* 指定用户
|
*/
|
USER = 30,
|
/**
|
* 发起人自选
|
*/
|
START_USER_SELECT = 35,
|
/**
|
* 发起人自己
|
*/
|
START_USER = 36,
|
/**
|
* 发起人部门负责人
|
*/
|
START_USER_DEPT_LEADER = 37,
|
/**
|
* 发起人连续多级部门的负责人
|
*/
|
START_USER_MULTI_LEVEL_DEPT_LEADER = 38,
|
/**
|
* 指定用户组
|
*/
|
USER_GROUP = 40,
|
/**
|
* 表单内用户字段
|
*/
|
FORM_USER = 50,
|
/**
|
* 表单内部门负责人
|
*/
|
FORM_DEPT_LEADER = 51,
|
/**
|
* 流程表达式
|
*/
|
EXPRESSION = 60
|
}
|
|
// 多人审批方式类型枚举 ( 用于审批节点 )
|
export enum ApproveMethodType {
|
/**
|
* 随机挑选一人审批
|
*/
|
RANDOM_SELECT_ONE_APPROVE = 1,
|
|
/**
|
* 多人会签(按通过比例)
|
*/
|
APPROVE_BY_RATIO = 2,
|
|
/**
|
* 多人或签(通过只需一人,拒绝只需一人)
|
*/
|
ANY_APPROVE = 3,
|
/**
|
* 多人依次审批
|
*/
|
SEQUENTIAL_APPROVE = 4
|
}
|
|
/**
|
* 审批拒绝结构定义
|
*/
|
export type RejectHandler = {
|
// 审批拒绝类型
|
type: RejectHandlerType
|
// 退回节点 Id
|
returnNodeId?: string
|
}
|
|
/**
|
* 审批超时结构定义
|
*/
|
export type TimeoutHandler = {
|
// 是否开启超时处理
|
enable: boolean
|
// 超时执行的动作
|
type?: number
|
// 超时时间设置
|
timeDuration?: string
|
// 执行动作是自动提醒, 最大提醒次数
|
maxRemindCount?: number
|
}
|
|
/**
|
* 审批人为空的结构定义
|
*/
|
export type AssignEmptyHandler = {
|
// 审批人为空的处理类型
|
type: AssignEmptyHandlerType
|
// 指定用户的编号数组
|
userIds?: number[]
|
}
|
|
// 审批拒绝类型枚举
|
export enum RejectHandlerType {
|
/**
|
* 结束流程
|
*/
|
FINISH_PROCESS = 1,
|
/**
|
* 驳回到指定节点
|
*/
|
RETURN_USER_TASK = 2
|
}
|
// 用户任务超时处理类型枚举
|
export enum TimeoutHandlerType {
|
/**
|
* 自动提醒
|
*/
|
REMINDER = 1,
|
/**
|
* 自动同意
|
*/
|
APPROVE = 2,
|
/**
|
* 自动拒绝
|
*/
|
REJECT = 3
|
}
|
// 用户任务的审批人为空时,处理类型枚举
|
export enum AssignEmptyHandlerType {
|
/**
|
* 自动通过
|
*/
|
APPROVE = 1,
|
/**
|
* 自动拒绝
|
*/
|
REJECT = 2,
|
/**
|
* 指定人员审批
|
*/
|
ASSIGN_USER,
|
/**
|
* 转交给流程管理员
|
*/
|
ASSIGN_ADMIN = 4
|
}
|
// 用户任务的审批人与发起人相同时,处理类型枚举
|
export enum AssignStartUserHandlerType {
|
/**
|
* 由发起人对自己审批
|
*/
|
START_USER_AUDIT = 1,
|
/**
|
* 自动跳过【参考飞书】:1)如果当前节点还有其他审批人,则交由其他审批人进行审批;2)如果当前节点没有其他审批人,则该节点自动通过
|
*/
|
SKIP = 2,
|
/**
|
* 转交给部门负责人审批
|
*/
|
ASSIGN_DEPT_LEADER = 3
|
}
|
|
// 用户任务的审批类型。 【参考飞书】
|
export enum ApproveType {
|
/**
|
* 人工审批
|
*/
|
USER = 1,
|
/**
|
* 自动通过
|
*/
|
AUTO_APPROVE = 2,
|
/**
|
* 自动拒绝
|
*/
|
AUTO_REJECT = 3
|
}
|
|
// 时间单位枚举
|
export enum TimeUnitType {
|
/**
|
* 分钟
|
*/
|
MINUTE = 1,
|
/**
|
* 小时
|
*/
|
HOUR = 2,
|
/**
|
* 天
|
*/
|
DAY = 3
|
}
|
|
// 条件配置类型 ( 用于条件节点配置 )
|
export enum ConditionType {
|
/**
|
* 条件表达式
|
*/
|
EXPRESSION = 1,
|
|
/**
|
* 条件规则
|
*/
|
RULE = 2
|
}
|
/**
|
* 表单权限的枚举
|
*/
|
export enum FieldPermissionType {
|
/**
|
* 只读
|
*/
|
READ = '1',
|
/**
|
* 编辑
|
*/
|
WRITE = '2',
|
/**
|
* 隐藏
|
*/
|
NONE = '3'
|
}
|
/**
|
* 操作按钮权限结构定义
|
*/
|
export type ButtonSetting = {
|
id: OperationButtonType
|
displayName: string
|
enable: boolean
|
}
|
|
// 操作按钮类型枚举 (用于审批节点)
|
export enum OperationButtonType {
|
/**
|
* 通过
|
*/
|
APPROVE = 1,
|
/**
|
* 拒绝
|
*/
|
REJECT = 2,
|
/**
|
* 转办
|
*/
|
TRANSFER = 3,
|
/**
|
* 委派
|
*/
|
DELEGATE = 4,
|
/**
|
* 加签
|
*/
|
ADD_SIGN = 5,
|
/**
|
* 退回
|
*/
|
RETURN = 6,
|
/**
|
* 抄送
|
*/
|
COPY = 7
|
}
|
|
/**
|
* 条件规则结构定义
|
*/
|
export type ConditionRule = {
|
type: number
|
opName: string
|
opCode: string
|
leftSide: string
|
rightSide: string
|
}
|
|
/**
|
* 条件组结构定义
|
*/
|
export type ConditionGroup = {
|
// 条件组的逻辑关系是否为且
|
and: boolean
|
// 条件数组
|
conditions: Condition[]
|
}
|
|
/**
|
* 条件结构定义
|
*/
|
export type Condition = {
|
// 条件规则的逻辑关系是否为且
|
and: boolean
|
rules: ConditionRule[]
|
}
|
|
export const NODE_DEFAULT_TEXT = new Map<number, string>()
|
NODE_DEFAULT_TEXT.set(NodeType.USER_TASK_NODE, '请配置审批人')
|
NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人')
|
NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件')
|
NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人')
|
|
export const NODE_DEFAULT_NAME = new Map<number, string>()
|
NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人')
|
NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人')
|
NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
|
NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人')
|
|
// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序
|
export const CANDIDATE_STRATEGY: DictDataVO[] = [
|
{ label: '指定成员', value: CandidateStrategy.USER },
|
{ label: '指定角色', value: CandidateStrategy.ROLE },
|
{ label: '部门成员', value: CandidateStrategy.DEPT_MEMBER },
|
{ label: '部门负责人', value: CandidateStrategy.DEPT_LEADER },
|
{ label: '连续多级部门负责人', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER },
|
{ label: '发起人自选', value: CandidateStrategy.START_USER_SELECT },
|
{ label: '发起人本人', value: CandidateStrategy.START_USER },
|
{ label: '发起人部门负责人', value: CandidateStrategy.START_USER_DEPT_LEADER },
|
{ label: '发起人连续部门负责人', value: CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER },
|
{ label: '用户组', value: CandidateStrategy.USER_GROUP },
|
{ label: '表单内用户字段', value: CandidateStrategy.FORM_USER },
|
{ label: '表单内部门负责人', value: CandidateStrategy.FORM_DEPT_LEADER },
|
{ label: '流程表达式', value: CandidateStrategy.EXPRESSION }
|
]
|
// 审批节点 的审批类型
|
export const APPROVE_TYPE: DictDataVO[] = [
|
{ label: '人工审批', value: ApproveType.USER },
|
{ label: '自动通过', value: ApproveType.AUTO_APPROVE },
|
{ label: '自动拒绝', value: ApproveType.AUTO_REJECT }
|
]
|
|
export const APPROVE_METHODS: DictDataVO[] = [
|
{ label: '按顺序依次审批', value: ApproveMethodType.SEQUENTIAL_APPROVE },
|
{ label: '会签(可同时审批,至少 % 人必须审批通过)', value: ApproveMethodType.APPROVE_BY_RATIO },
|
{ label: '或签(可同时审批,有一人通过即可)', value: ApproveMethodType.ANY_APPROVE },
|
{ label: '随机挑选一人审批', value: ApproveMethodType.RANDOM_SELECT_ONE_APPROVE }
|
]
|
|
export const CONDITION_CONFIG_TYPES: DictDataVO[] = [
|
{ label: '条件表达式', value: ConditionType.EXPRESSION },
|
{ label: '条件规则', value: ConditionType.RULE }
|
]
|
|
// 时间单位类型
|
export const TIME_UNIT_TYPES: DictDataVO[] = [
|
{ label: '分钟', value: TimeUnitType.MINUTE },
|
{ label: '小时', value: TimeUnitType.HOUR },
|
{ label: '天', value: TimeUnitType.DAY }
|
]
|
// 超时处理执行动作类型
|
export const TIMEOUT_HANDLER_TYPES: DictDataVO[] = [
|
{ label: '自动提醒', value: 1 },
|
{ label: '自动同意', value: 2 },
|
{ label: '自动拒绝', value: 3 }
|
]
|
export const REJECT_HANDLER_TYPES: DictDataVO[] = [
|
{ label: '终止流程', value: RejectHandlerType.FINISH_PROCESS },
|
{ label: '驳回到指定节点', value: RejectHandlerType.RETURN_USER_TASK }
|
// { label: '结束任务', value: RejectHandlerType.FINISH_TASK }
|
]
|
export const ASSIGN_EMPTY_HANDLER_TYPES: DictDataVO[] = [
|
{ label: '自动通过', value: 1 },
|
{ label: '自动拒绝', value: 2 },
|
{ label: '指定成员审批', value: 3 },
|
{ label: '转交给流程管理员', value: 4 }
|
]
|
export const ASSIGN_START_USER_HANDLER_TYPES: DictDataVO[] = [
|
{ label: '由发起人对自己审批', value: 1 },
|
{ label: '自动跳过', value: 2 },
|
{ label: '转交给部门负责人审批', value: 3 }
|
]
|
|
// 比较运算符
|
export const COMPARISON_OPERATORS: DictDataVO = [
|
{
|
value: '==',
|
label: '等于'
|
},
|
{
|
value: '!=',
|
label: '不等于'
|
},
|
{
|
value: '>',
|
label: '大于'
|
},
|
{
|
value: '>=',
|
label: '大于等于'
|
},
|
{
|
value: '<',
|
label: '小于'
|
},
|
{
|
value: '<=',
|
label: '小于等于'
|
}
|
]
|
// 审批操作按钮名称
|
export const OPERATION_BUTTON_NAME = new Map<number, string>()
|
OPERATION_BUTTON_NAME.set(OperationButtonType.APPROVE, '通过')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.REJECT, '拒绝')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.TRANSFER, '转办')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.DELEGATE, '委派')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.ADD_SIGN, '加签')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.RETURN, '退回')
|
OPERATION_BUTTON_NAME.set(OperationButtonType.COPY, '抄送')
|
|
// 默认的按钮权限设置
|
export const DEFAULT_BUTTON_SETTING: ButtonSetting[] = [
|
{ id: OperationButtonType.APPROVE, displayName: '通过', enable: true },
|
{ id: OperationButtonType.REJECT, displayName: '拒绝', enable: true },
|
{ id: OperationButtonType.TRANSFER, displayName: '转办', enable: true },
|
{ id: OperationButtonType.DELEGATE, displayName: '委派', enable: true },
|
{ id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: true },
|
{ id: OperationButtonType.RETURN, displayName: '退回', enable: true }
|
]
|
|
// 发起人的按钮权限。暂时定死,不可以编辑
|
export const START_USER_BUTTON_SETTING: ButtonSetting[] = [
|
{ id: OperationButtonType.APPROVE, displayName: '提交', enable: true },
|
{ id: OperationButtonType.REJECT, displayName: '拒绝', enable: false },
|
{ id: OperationButtonType.TRANSFER, displayName: '转办', enable: false },
|
{ id: OperationButtonType.DELEGATE, displayName: '委派', enable: false },
|
{ id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false },
|
{ id: OperationButtonType.RETURN, displayName: '退回', enable: false }
|
]
|
|
export const MULTI_LEVEL_DEPT: DictDataVO = [
|
{ label: '第 1 级部门', value: 1 },
|
{ label: '第 2 级部门', value: 2 },
|
{ label: '第 3 级部门', value: 3 },
|
{ label: '第 4 级部门', value: 4 },
|
{ label: '第 5 级部门', value: 5 },
|
{ label: '第 6 级部门', value: 6 },
|
{ label: '第 7 级部门', value: 7 },
|
{ label: '第 8 级部门', value: 8 },
|
{ label: '第 9 级部门', value: 9 },
|
{ label: '第 10 级部门', value: 10 },
|
{ label: '第 11 级部门', value: 11 },
|
{ label: '第 12 级部门', value: 12 },
|
{ label: '第 13 级部门', value: 13 },
|
{ label: '第 14 级部门', value: 14 },
|
{ label: '第 15 级部门', value: 15 }
|
]
|
|
/**
|
* 流程实例的变量枚举
|
*/
|
export enum ProcessVariableEnum {
|
/**
|
* 发起用户 ID
|
*/
|
START_USER_ID = 'PROCESS_START_USER_ID'
|
}
|