347 lines
11 KiB
TypeScript
347 lines
11 KiB
TypeScript
import {
|
||
AddOrRemoveType,
|
||
ApprovalOpinionDisplayType,
|
||
AuthType,
|
||
BpmnNodeKey,
|
||
ButtonType,
|
||
MultipleInstancesType,
|
||
DesignatedApprover,
|
||
ElectronicSignatureVerification,
|
||
FormType,
|
||
InstanceCompletionConditions,
|
||
NoHandler,
|
||
RecordType,
|
||
RejectType,
|
||
CallActivityType,
|
||
FinishType,
|
||
ExecutionType,
|
||
MemberType,
|
||
ApproveType,
|
||
ApproveCode,
|
||
TimeOutHandle,
|
||
TimeOutRule,
|
||
TimeOutType, SubProcessType,
|
||
} from '/@/enums/workflowEnum';
|
||
import { InfoType } from '/@/model/workflow/bpmnConfig';
|
||
import {
|
||
CallActivityConfig,
|
||
EndEventConfig,
|
||
GatewayConfig,
|
||
ProcessConfig,
|
||
ScriptTaskConfig,
|
||
SequenceFlowConfig,
|
||
StartEventConfig, SubProcessConfig,
|
||
UserTaskConfig,
|
||
} from '/@/model/workflow/workflowConfig';
|
||
import { useI18n } from '/@/hooks/web/useI18n';
|
||
const { t } = useI18n();
|
||
// 流程模板默认属性
|
||
export const processConfig: ProcessConfig = {
|
||
processId: '', //节点id
|
||
type: BpmnNodeKey.PROCESS, //节点类型
|
||
code: '', //模板编码
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
category: undefined, //分类
|
||
nameRule: '', //命名规则
|
||
nameRuleConfigs: [], // 命名规则列表
|
||
autoAgreeRule: [], //自动同意规则
|
||
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
||
noHandler: NoHandler.ADMIN, //无对应处理人
|
||
appShow: false, //移动端是否显示
|
||
defaultFormList: [], //默认表单
|
||
remark: '', //节点描述
|
||
content: '', //xml
|
||
authConfig: {
|
||
//权限设置
|
||
authType: AuthType.ALL,
|
||
authMemberConfigs: [],
|
||
},
|
||
menuConfig: {
|
||
//是否启用菜单
|
||
enabled: false,
|
||
code: '',
|
||
name: '',
|
||
system: undefined,
|
||
parentId: undefined,
|
||
icon: '',
|
||
order: undefined,
|
||
remark: '',
|
||
},
|
||
formInitConfig: {
|
||
//表单发起流程
|
||
enabled: false,
|
||
formType: FormType.CUSTOM,
|
||
formId: '',
|
||
formName: '',
|
||
},
|
||
timeoutRemidConfig: {
|
||
//超时提醒配置
|
||
enabled: false,
|
||
hour: undefined, //超时时间
|
||
interval: undefined, //消息间隔
|
||
pushHits: undefined, //推送次数
|
||
pushMemberConfigs: [], //推送人
|
||
},
|
||
relationProcessConfigs: [], //关联任务
|
||
processParamConfigs: [], //流程参数
|
||
globalStartEventConfigs: [],//全局 用户节点 结束事件
|
||
globalEndEventConfigs: [],//全局 用户节点 结束事件
|
||
globalPrequalifyBeforeEventConfigs: [],//预审前
|
||
globalPrequalifyAfterEventConfigs: [],//预审后
|
||
globalFinishEventConfigs: [],//终止事件
|
||
globalRejectEventConfigs: [],//全局退回事件
|
||
globalAgreeEventConfigs: [],//全局同意事件
|
||
globalSuspendedEventConfigs: [],//全局 挂起/暂停事件
|
||
globalRestoreEventConfigs: [],//全局 恢复事件
|
||
xmlContent: '',
|
||
};
|
||
// 默认属性
|
||
export const defaultProperties = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.EVENT, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
};
|
||
// 开始节点默认属性
|
||
const StartProperties: StartEventConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.START, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
formConfigs: [], //表单配置
|
||
subProcessInitiator: '', //子流程开始节点发起人
|
||
assignmentConfig: { formAssignmentConfigs: [], paramAssignmentConfigs: [] }, //参数操作
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 结束节点默认属性
|
||
const EndProperties: EndEventConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.END, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
noticePolicyConfigs: [], //通知策略
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 用户节点默认属性
|
||
const UserProperties: UserTaskConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.USER, //节点类型
|
||
currentProgress: undefined, //进度
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
formConfigs: [], //表单配置
|
||
noticePolicyConfigs: [], //通知策略
|
||
approverConfigs: [], //审批人
|
||
circulateConfigs: [], //传阅人
|
||
autoAgreeRule: [], //自动同意规则
|
||
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
||
provisionalApprover: false, //临时审批人
|
||
isChooseMulti: true, //是否多选
|
||
isChooseAll: false, //是否全选
|
||
isReadOnly: false, //是否只读
|
||
noHandler: NoHandler.ADMIN, //无对应处理人
|
||
countersignConfig: {
|
||
multipleInstancesType: MultipleInstancesType.NONE, //多实例类型
|
||
addOrRemove: AddOrRemoveType.ALLOW, //加签 或者 减签
|
||
finishType: InstanceCompletionConditions.ALL, //完成条件 多实例
|
||
percentage: 0,
|
||
countersignList: [],
|
||
}, //会签
|
||
buttonConfigs: [
|
||
{
|
||
buttonType: ButtonType.DEFAULT, //按钮类型
|
||
buttonName: t('同意'), //按钮名称
|
||
buttonCode: ApproveCode.AGREE, //按钮编码
|
||
approveType: ApproveType.AGREE, //
|
||
checked: true, //选中
|
||
},
|
||
{
|
||
buttonType: ButtonType.DEFAULT, //按钮类型
|
||
buttonName: t('拒绝'), //按钮名称
|
||
buttonCode: ApproveCode.DISAGREE, //按钮编码
|
||
approveType: ApproveType.DISAGREE, //
|
||
checked: true, //选中
|
||
},
|
||
{
|
||
buttonType: ButtonType.DEFAULT, //按钮类型
|
||
buttonName: t('驳回'), //按钮名称
|
||
buttonCode: ApproveCode.REJECT, //按钮编码
|
||
approveType: ApproveType.REJECT, //
|
||
checked: true, //选中
|
||
buttonOpera: RejectType.ALL,
|
||
},
|
||
{
|
||
buttonType: ButtonType.DEFAULT, //按钮类型
|
||
buttonName: t('结束'), //按钮名称
|
||
buttonCode: ApproveCode.FINISH, //按钮编码
|
||
approveType: ApproveType.FINISH, //
|
||
checked: true, //选中
|
||
},
|
||
], //按钮配置
|
||
opinionConfig: {
|
||
enabled: false, //是否关联表单
|
||
showType: ApprovalOpinionDisplayType.ALL, //审批意见展示类型 0 显示所有 1 显示最终结果
|
||
signature: ElectronicSignatureVerification.NO_PASSWORD_REQUIRED, //电子签章验证
|
||
component: [], //关联意见框组件
|
||
},
|
||
assignmentConfig: {
|
||
formAssignmentConfigs: [],
|
||
paramAssignmentConfigs: [],
|
||
}, //参数操作
|
||
timeOutHandle: {
|
||
isHandle: TimeOutHandle.NO,
|
||
rule: TimeOutRule.MAX,
|
||
type: TimeOutType.AGREE,
|
||
user: 1,
|
||
auto: 1,
|
||
}, //超时处理
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 脚本节点默认属性
|
||
const ScriptProperties: ScriptTaskConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.SCRIPT, //节点类型
|
||
// Recorded
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
recordInfo: RecordType.RECORD,
|
||
noticePolicyConfigs: [], //通知策略
|
||
script: {
|
||
enabled: false,
|
||
scriptFormat: 'JavaScript', //脚本格式
|
||
scriptContent: ' var a = 1', //脚本内容
|
||
},
|
||
api: {
|
||
enabled: false,
|
||
apiConfig: {
|
||
id: '',
|
||
name: '',
|
||
method: '',
|
||
requestParamsConfigs: [], //Query Params
|
||
requestHeaderConfigs: [], //Header
|
||
requestBodyConfigs: [], //Body
|
||
},
|
||
},
|
||
assignmentConfig: { formAssignmentConfigs: [], paramAssignmentConfigs: [] }, //参数操作
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 连接线
|
||
const SequenceFlowProperties: SequenceFlowConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.SEQUENCEFLOW, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
conditionConfigs: [], //流转条件
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 子流程
|
||
const SubProcessProperties: SubProcessConfig= {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.SUB_PROCESS, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
subProcessType: SubProcessType.MULTIPLE, // 调用类型
|
||
finishType: FinishType.ALL, //完成条件
|
||
percentOf: undefined, //百分比数值
|
||
executionType: ExecutionType.PARALLEL, //执行类型
|
||
originatorNode: '', //如果调用类型为单实例 子流程发起人
|
||
originatorType: MemberType.FORM_FIELD, //发起人类型
|
||
originatorConfig: '', //表单数据
|
||
approverConfigs: [], //审批人
|
||
inParams: [], //输入参数
|
||
outParams: [], //输出参数
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 外部流程
|
||
const CallActivityProperties: CallActivityConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.CALLACTIVITY, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
schemaId: '', //被调用元素(外部流程schemaId)
|
||
schemaName: '', //被调用元素(外部流程名称)
|
||
callActivityType: CallActivityType.SINGLE, // 调用类型
|
||
finishType: FinishType.ALL, //完成条件
|
||
percentOf: undefined, //百分比数值
|
||
executionType: ExecutionType.SEQUENCE, //执行类型
|
||
originatorNode: '', //如果调用类型为单实例 子流程发起人
|
||
originatorType: MemberType.FORM_FIELD, //发起人类型
|
||
originatorConfig: '', //表单数据
|
||
inParams: [], //输入参数
|
||
outParams: [], //输出参数
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 互斥网关
|
||
const ExclusiveGatewayProperties: GatewayConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.EXCLUSIVE, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 相容网关
|
||
const InclusiveGatewayProperties: GatewayConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.INCLUSIVE, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 并行网关
|
||
const ParallelGatewayProperties: GatewayConfig = {
|
||
id: '', //节点id
|
||
type: BpmnNodeKey.PARALLEL, //节点类型
|
||
name: '', //节点名称
|
||
parentId: '', //父节点(流程id)
|
||
remark: '', //节点描述
|
||
startEventConfigs: [],
|
||
endEventConfigs: [],
|
||
};
|
||
// 获取节点默认属性
|
||
export const propertiesByType: Map<InfoType, any> = new Map([
|
||
[BpmnNodeKey.START, StartProperties],
|
||
[BpmnNodeKey.END, EndProperties],
|
||
[BpmnNodeKey.USER, UserProperties],
|
||
[BpmnNodeKey.SCRIPT, ScriptProperties],
|
||
[BpmnNodeKey.EXCLUSIVE, ExclusiveGatewayProperties],
|
||
[BpmnNodeKey.INCLUSIVE, InclusiveGatewayProperties],
|
||
[BpmnNodeKey.PARALLEL, ParallelGatewayProperties],
|
||
[BpmnNodeKey.SUB_PROCESS, SubProcessProperties],
|
||
[BpmnNodeKey.CALLACTIVITY, CallActivityProperties],
|
||
[BpmnNodeKey.SEQUENCEFLOW, SequenceFlowProperties],
|
||
]);
|
||
// 根据节点类型获取节点名称
|
||
export const nodeNameByType: Map<InfoType, any> = new Map([
|
||
[BpmnNodeKey.START, t('开始')],
|
||
[BpmnNodeKey.END, t('结束')],
|
||
[BpmnNodeKey.USER, t('用户节点')],
|
||
[BpmnNodeKey.SCRIPT, t('脚本节点')],
|
||
[BpmnNodeKey.EXCLUSIVE, t('互斥网关')],
|
||
[BpmnNodeKey.INCLUSIVE, t('相容网关')],
|
||
[BpmnNodeKey.PARALLEL, t('并行网关')],
|
||
[BpmnNodeKey.SUB_PROCESS, t('子流程')],
|
||
[BpmnNodeKey.CALLACTIVITY, t('外部流程')],
|
||
[BpmnNodeKey.SEQUENCEFLOW, t('')],
|
||
[BpmnNodeKey.PROCESS, t('流程模板')],
|
||
]);
|