初始版本提交

This commit is contained in:
yaoyn
2024-02-05 09:15:37 +08:00
parent b52d4414be
commit 445292105f
1848 changed files with 236859 additions and 75 deletions

View File

@ -0,0 +1,59 @@
import { ApiConfig } from '/@/components/ApiConfig/src/interface';
import { ParamType } from '/@/enums/workflowEnum';
export interface ParamAssignmentConfig {
type: ParamType; //赋值类别
value: string; // 如果是 type === 值 就存储值
varValue: string; // 如果type === 变量 存储所选变量
apiConfig: ApiConfig; // 如果type === api 存储api配置
formConfig: FormAssignmentSourceConfig; // 如果type === 表单配置 存储api配置
target: string; // 目标变量 存储 流程变量名 processConfig 的 id
}
export interface scriptNodeConfig {
//脚本参数配置
scriptConfig: {
enabled: boolean; //是否开始
scriptFormat: number; //脚本格式
scriptContent: string; //脚本内容
};
}
// 流程参数配置
export interface ProcessParamConfig {
paramName: string; //流程参数
paramType: ParamType; //参数类型
paramValue: string; //如果是流程类型==值
paramApi: ApiConfig; //如果是流程类型==api
paramVariable: {}; //如果是流程类型==变量
// ParamConfigs: Array<ProcessParamConfigItem>;
}
// 参数操作 表单赋值 来源 配置
export interface FormAssignmentSourceConfig {
key: string; //唯一树id
formId: string; // 表单id
formField: string; //表单字段
}
// 参数操作 表单赋值 配置
export interface FormAssignmentConfig {
source: string; // 来源 变量
target: FormAssignmentSourceConfig; // 目标 表单字段
}
/**
* 参数操作 参数赋值 配置
*/
export interface AssignmentConfig {
formAssignmentConfigs: FormAssignmentConfig[]; //表单赋值
paramAssignmentConfigs: ParamAssignmentConfig[]; //参数赋值
}
/**
* 超时处理 配置
*/
export interface TimeOutConfig {
isHandle: number; //超时处理
rule: number; //超时机制
type: number; //处理方式
user: number; //指定人员
auto: number; //无处理人
}

View File

@ -0,0 +1,234 @@
import { MemberConfig } from './memberSetting';
import { FormConfigItem, FormSettingItem } from './formSetting';
import {
EndEventConfig,
GatewayConfig,
ProcessConfig,
ScriptTaskConfig,
StartEventConfig,
UserTaskConfig,
OpinionConfig,
SequenceFlowConfig,
CallActivityConfig,
} from './workflowConfig';
import { ApproveType, BpmnNodeKey, FormType } from '/@/enums/workflowEnum';
import { ButtonConfigItem } from '/@/model/workflow/workflowConfig';
interface basicInfoItem {
id: string;
name: string;
type: BpmnNodeKey;
remark: string;
}
export type InfoId = string;
export type InfoItem = basicInfoItem &
StartEventConfig &
UserTaskConfig &
ScriptTaskConfig &
GatewayConfig &
SequenceFlowConfig &
CallActivityConfig &
EndEventConfig;
export type InfoType = BpmnNodeKey;
export interface ProcessJson {
resourceId: string; //流程id 唯一id
processConfig: ProcessConfig; //流程属性配置
childNodeConfig: basicInfoItem[]; //子节点配置
}
export interface BpmnState {
modelId: string;
info: Map<InfoId, InfoItem>;
infoId: InfoId;
processInfo: ProcessConfig;
defaultFormList: Array<FormSettingItem>;
}
export interface FormInfoItem {
formData: Record<string, any> | undefined;
formConfig: FormConfigItem;
formJson: string;
formType: FormType;
}
export interface FlowInfo {
isCountersign: boolean;
isAddOrSubSign: boolean;
schemaInfo: {
category: string;
xmlContent: string;
name: string;
id: string;
code: string;
remark: string;
};
formInfos: Array<FormInfoItem>;
taskRecords: Array<TaskRecord>;
otherProcessApproveRecord: Array<TaskRecordList>;
taskApproveOpinions: Array<TaskApproveOpinion>;
relationTasks: Array<any>;
buttonConfigs?: Array<ButtonConfigItem>;
opinionConfig?: OpinionConfig;
formAssignmentData: null | undefined | Recordable; //参数赋值
}
export interface BpmnFlowFormItem {
id: string;
name: string;
code: string;
categoryName: string;
remark: string;
}
export interface TaskRecord {
comment: string;
nodeName: string;
nodeType: string;
startTime: string;
}
export interface TaskRecordList {
records: Array<TaskRecord>;
schemaName: string;
}
export interface TaskApproveOpinion {
approveComment: string;
id: string;
approveStampUrl: string;
approveTime: string;
approveUserName: string;
approveType: ApproveType;
approveResult: string;
}
export interface BpmnFlowForm {
// schemaId: string;
item: BpmnFlowFormItem;
xml: string;
formInfos: Array<FormInfoItem>;
relationTasks: Array<{ schemaId: string; schemaName: string }>;
taskRecords: Array<TaskRecordList>;
taskApproveOpinions: Array<TaskApproveOpinion>;
predecessorTasks: Array<SchemaTaskItem>;
opinions: Array<TaskApproveOpinion>;
opinionsComponents: Array<string>;
hasStamp: Boolean;
hasStampPassword: Boolean;
submitLoading: Boolean;
formAssignmentData: null | Recordable; //参数赋值
}
// 工作流表单校验
export type ValidateForms = Array<ValidateFlowForm>;
export interface ValidateFlowForm {
validate: boolean;
msgs: Array<ValidateFlowFormErrorMsg>;
result?: any;
formKey?: string;
isOldSystem?: boolean;
}
export interface ValidateFlowFormErrorMsg {
errors: Array<string>;
name: Array<string>;
}
// 前置任务 列表
export interface RelationTaskPage {
pageSize: number;
total: number;
list: Array<PredecessorTaskItem>;
}
export interface PredecessorTaskItem {
createTime: string;
currentSchedule: null;
originator: string;
schemaName: string;
taskId: string;
taskName: string;
processId: string;
}
export interface TaskItem {
taskId: string;
taskName: string;
processId: string;
}
// 任务数据
export interface SchemaTaskItem {
schemaId: string;
schemaName: string;
taskId: string;
taskName: string;
processId: string;
}
// 提交流程后返回数据格式
export type SubmittingProcessData = Array<{
provisionalApprover?: boolean;
isAppoint: boolean;
isMultiInstance: boolean;
taskId: string;
taskName: string;
selectIds: Array<string>;
}>;
// 下一节点审批人
export interface ApproveTask {
taskId: string;
taskName: string;
provisionalApprover?: boolean;
selectIds: Array<string>;
}
export interface BatchApproverUser {
taskId: string;
approvedUsers: Array<string>;
}
export interface BatchApproverInfo {
needStamp: boolean;
needPassword?: boolean;
}
export type BatchApproverUsersParams = Array<BatchApproverUser>;
// 审批数据
export interface PostApprovalData {
approvedType: number;
approvedContent: string;
formData: Recordable;
rejectNodeActivityId: string;
taskId: string;
circulateConfigs: Array<MemberConfig>;
stampId: string;
stampPassword: string;
approvedResult: string;
fileFolderIds: Array<string>;
isOldSystem: Object;
}
// 批量审批
export interface PostBatchApprovalData {
approvedType: number;
approvedContent: string;
taskIds: Array<string>;
stampId: string;
stampPassword?: string;
}
// 批量审批
export interface GetBatchApprovalInfo {
taskIds: string;
}
//驳回节点信息
export interface rejectNodeItem {
activityId: string;
activityName: string;
}
// 工作里调用系统表单
export interface WorkFlowFormParams {
formConfigChildren: Array<FormConfigItem>; // 工作流节点表单权限配置
formConfigKey: String; //唯一节点表单key
opinions?: Array<TaskApproveOpinion> | undefined; //意见簿意见
opinionsComponents?: Array<string> | undefined; //意见簿组件
isViewProcess: boolean;
uploadIds: Array<string>;
formModels: Recordable;
}
// 系统表单参数
export interface SystemComponentConfig {
functionalModule: string; //功能模块
functionName: string; //功能名称
functionFormName: string; //Form页面名称
}

View File

@ -0,0 +1,58 @@
import { FormType } from '/@/enums/workflowEnum';
export interface TableItem {
required: boolean;
view: boolean;
edit: boolean;
disabled: boolean;
isSaveTable?: boolean;
tableName: string;
fieldName: string;
fieldId: string;
key: string;
isSubTable: boolean;
showChildren: boolean;
type: string;
children: Array<TableItem>;
}
export interface FormSettingItem {
key: string; //formId_key
formType: FormType; //表单类型
formId: string; //表单ID 系统表单为文件夹名
formName: string; //表单名称
name?: string; //表单原始名称
enabledMark?: number; //禁用:0 禁用 1 启用
}
export interface FormConfigItem {
key: string; //formId_key
name?: string; //表单原始名称
formType: FormType; //表单类型
formId: string; //表单ID 系统表单为文件夹名
formName: string; //表单名称
showChildren: boolean;
requiredAll: boolean;
viewAll: boolean;
editAll: boolean;
children: Array<TableItem>;
}
// 表单设置
export interface FormSetting {
formConfigs: Array<FormSettingItem>;
}
// 功能表单
export interface formInitConfig {
enabled: boolean;
formType: FormType; //表单类型
formId: string; //表单ID 系统表单为文件夹名
formName: string; //表单名称
}
// 更新表单 表单数据
export interface UpdateFormConfigItem {
formKey: string;
formName: string;
formId: string;
formType: FormType;
nodeName: string;
status: boolean;
remark: string;
}

View File

@ -0,0 +1,86 @@
import {
AddOrRemoveType,
MultipleInstancesType,
InstanceCompletionConditions,
LevelEnum,
MemberType,
} from '/@/enums/workflowEnum';
import { ApiConfig } from './ParamSetting';
/**
* 人员(权限)[岗位 角色  用户]
*/
export type MemberListConfig = {
id: string;
name: string;
type: string;
};
// 节点
export type NodesConfig = {
id: string;
name: string;
checked?: boolean;
};
//表单配置
export type FormFiledConfig = {
key: string;
title: string;
children: Array<FormFiledConfig>;
disabled: boolean;
label?: string;
buttons?: Array<FormFiledConfig>;
};
//表单配置
export type FormFiled = {
key: string;
title: string;
children: Array<FormFiledConfig>;
disabled: boolean;
formId: string;
formField: string;
label?: string;
};
/**
* 上级领导配置
*/
interface LeaderConfig {
nodeId: string;
level: LevelEnum;
}
export interface MemberConfig {
memberType: MemberType;
id: string; //存储所选值Id
name: string; //存储所选值name
leaderConfig?: LeaderConfig; //上级领导配置
formFieldConfig?: {
//表单字段
nodeId: string;
formId: string;
formField: string;
formKey: string;
};
apiConfig?: ApiConfig;
}
export interface CountersignMemberConfig {
memberType: MemberType;
id: string; //存储所选值Id
name: string; //存储所选值name
leaderConfig?: LeaderConfig; //上级领导配置
formFieldConfig?: {
//表单字段
nodeId: string;
formId: string;
formField: string;
formKey: string;
};
checked: boolean; //会签节点是否
}
export interface CountersignConfig {
multipleInstancesType: MultipleInstancesType; //多实例类型
addOrRemove: AddOrRemoveType; //加签 或者 减签
finishType: InstanceCompletionConditions; //完成条件 多实例
percentage: number;
countersignList: Array<CountersignMemberConfig>; //会签人员
}

View File

@ -0,0 +1,286 @@
//流程配置json
import { InfoId } from './bpmnConfig';
import { FormConfigItem, formInitConfig, FormSettingItem } from './formSetting';
import { CountersignConfig, MemberConfig } from './memberSetting';
import { AssignmentConfig, TimeOutConfig } from './ParamSetting';
import { ApiConfig } from '/@/components/ApiConfig/src/interface';
import {
ApprovalOpinionDisplayType,
AuthType,
AutoAgreeRule,
ButtonType,
DesignatedApprover,
ElectronicSignatureVerification,
NoHandler,
NoticePolicyType,
OperationType,
ProcessStatus,
RecordType,
TaskPermissions,
RejectType,
CallActivityType,
FinishType,
ExecutionType,
MemberType,
ApproveType,
NodeEventExType,
} from '/@/enums/workflowEnum';
import { BpmnNodeKey } from '/@/enums/workflowEnum';
export interface ProcessJsonModel {
processConfig: ProcessConfig; //流程属性配置
//子节点配置
childNodeConfig: ChildNodeConfig;
}
export type ChildNodeItem =
| StartEventConfig
| UserTaskConfig
| ScriptTaskConfig
| GatewayConfig
| EndEventConfig;
export type ChildNodeConfig = Array<ChildNodeItem>;
// 专项菜单
export interface MenuConfig {
enabled: boolean;
code: string;
name: string;
system: undefined | string;
parentId: undefined | string;
icon: string;
order: undefined | number;
remark: string;
}
// 权限设置
interface AuthConfig {
authType: AuthType; //权限设置 0 所有 1 指定
authMemberConfigs?: MemberConfig[]; //必须authType === 1 权限指定的人员
}
//超时提醒
interface TimeoutConfig {
enabled: boolean; //是否提醒
hour: undefined | number; //超时时间
interval: undefined | number; //消息间隔
pushHits: undefined | number; //推送次数
pushMemberConfigs: MemberConfig[]; //推送人
}
//关联任务
export interface RelationProcessConfig {
id: string; //模板id
name: string; //模板名称
code: string; //模板编码
definitionKey?: string; //定义可以
processStatus?: ProcessStatus; //流程状态
processAuth?: TaskPermissions; //任务权限
}
// 命名规则
export interface NameRuleItem {
key: string;
title: string;
}
export type NameRule = Array<NameRuleItem>;
export type ProcessConfigParameter = Array<ProcessParameter>;
export interface ProcessConfig {
processId: string; //节点id
type: BpmnNodeKey; //节点类型
name: string; //节点名称
parentId: string; //父节点流程id
remark: string; //节点描述
code: string; //模板编码
category: undefined | string; //分类
nameRule?: string; //命名规则
nameRuleConfigs?: NameRule; // 命名规则列表
autoAgreeRule?: Array<AutoAgreeRule>; //自动同意规则
isPrevChooseNext: DesignatedApprover; //是否上一节点审批人指定下一节点审批人
noHandler: NoHandler; //无对应处理人
defaultFormList: Array<FormSettingItem>; //默认表单
appShow: boolean; //移动端是否显示
content?: string; //bpmn 设计 xml
authConfig: AuthConfig; //权限设置
menuConfig: MenuConfig; //是否启用菜单
formInitConfig: formInitConfig; //表单发起流程
timeoutRemidConfig: TimeoutConfig; //超时提醒配置
relationProcessConfigs: Array<RelationProcessConfig>; //关联任务
processParamConfigs: ProcessConfigParameter; //流程参数
xmlContent: String; //xml
}
// 参数操作
export interface ProcessParameter {
id: string;
name: string;
type: OperationType;
value: string;
apiConfig: ApiConfig;
}
// 输入参数
/**
* 开始节点配置
*/
export interface StartEventConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
assignmentConfig: AssignmentConfig; //参数操作
formConfigs: Array<FormConfigItem>; // 表单配置
subProcessInitiator: string; //子流程开始节点发起人
}
/**
* 用户节点配置
*/
//按钮配置
export interface ButtonConfigItem {
approveType: ApproveType; //审批类型
buttonType: ButtonType; //按钮类型
buttonName: string; //按钮名称
buttonCode: string; //按钮编码
checked: boolean; //选中
scriptContent?: string; //脚本内容
scriptLanguage?: number; //脚本格式
apiConfig?: ApiConfig; //api配置
buttonOpera?: RejectType; //驳回类型
}
// 意见簿
export interface OpinionConfig {
enabled: boolean; //是否关联表单
showType: ApprovalOpinionDisplayType; //审批意见展示类型 0 显示所有 1 显示最终结果
signature: ElectronicSignatureVerification; //电子签章验证
component: Array<string>; //关联意见框组件
}
/**
* 用户任务配置
*/
export interface UserTaskConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
currentProgress: undefined | number; //进度
autoAgreeRule: Array<AutoAgreeRule>; //自动同意规则
isPrevChooseNext: DesignatedApprover; //是否上一节点审批人指定下一节点审批人
noHandler: NoHandler; //无对应处理人
provisionalApprover: Boolean; //临时审批人
noticePolicyConfigs: NoticePolicyType[]; //通知策略
approverConfigs: MemberConfig[]; //审批人
// authMember: MemberConfig; //审批人
circulateConfigs: MemberConfig[]; //传阅人
countersignConfig: CountersignConfig; //会签
buttonConfigs: Array<ButtonConfigItem>;
opinionConfig: OpinionConfig;
formConfigs: Array<FormConfigItem>; // 表单配置
assignmentConfig: AssignmentConfig; //参数操作
timeOutHandle: TimeOutConfig; //超时处理
}
/**
* 脚本节点配置
*/
export interface ScriptTaskConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
noticePolicyConfigs: NoticePolicyType[]; //通知策略
recordInfo: RecordType; //记录信息
script: {
enabled: boolean;
scriptFormat: string; //脚本格式
scriptContent: string; //脚本内容
};
api: {
enabled: boolean;
apiConfig: ApiConfig;
};
assignmentConfig: AssignmentConfig; //参数操作
}
/**
* 网关配置
*/
export interface GatewayConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
}
/**
* 结束配置
*/
export interface EndEventConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
noticePolicyConfigs: NoticePolicyType[]; //通知策略
}
/**
* 子流程配置
*/
export interface SubProcessConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
//子流程发起人  (选择的是主流程的某个节点  所以存储的也是子流程节点的id
mainProcessNodeId: string;
}
/**
* 流程线配置
*/
export interface SequenceFlowConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
conditionConfigs: ConditionConfig[]; //变量来源
}
/**
* 流转条件配置
*/
export interface ConditionConfig {
nodeId: string;
formId: string;
formField: string;
}
export interface CallActivityParams {
source: string;
target: string;
}
/**
* 外部流程
*/
export interface CallActivityConfig extends BasicNodeConfig {
parentId: string; //父节点流程id
schemaId: string; //被调用元素外部流程schemaId
schemaName: string; //被调用元素外部流程schemaName
callActivityType: CallActivityType.SINGLE; // 调用类型
finishType: FinishType.ALL; //完成条件
percentOf: undefined | Number; //百分比数值
executionType: ExecutionType; //执行类型
originatorType: MemberType; //发起人类型
originatorNode: string; //如果调用类型为单实例 子流程发起人
originatorConfig: string; //发起人表单数据配置
inParams: CallActivityParams[]; //输入参数
outParams: CallActivityParams[]; //输出参数
}
export type ValidateProcessConfigs = Array<{
nodeName: string; //节点名称
nodeType: BpmnNodeKey; //节点类型
msg: string;
validate: boolean;
}>;
export interface BasicNodeConfig {
id: string; //节点id
type: BpmnNodeKey; //节点类型
name: string; //节点名称
remark: string; //节点描述
startEventConfigs: NodeEventConfig[];
endEventConfigs: NodeEventConfig[];
}
export interface NodeEventConfig {
type: NodeEventExType; //节点类型:
apiConfig?: ApiConfig; //APi配置
liteflowId?: string; //流程引擎
}
export interface RootElement {
id: InfoId;
name: string;
$type: BpmnNodeKey;
incoming?: Array<RootElement>;
outgoing?: Array<RootElement>;
flowElements?: Array<RootElement>;
}
export type RootElements = Array<RootElement>;