import { CptModelName, SubModelName, ActionType } from './base'; // 环节类型 export enum SectorType { APPROVAL = 'approval', // 审批 CONDITION = 'condition', // 条件 } export enum ProcessStatus { WAITING = 'waiting', // 待审批 APPROVED = 'approved', // 审批通过 ACTIVATING = 'activating', // 当前流程 FAILED = 'failed', // 审批退回 } // 审批方式 export enum ApprovalWay { REPORT = 'report', // 上报审批 ACCOUNT = 'account', // 指定用户 JOINTLYSIGN = 'jointlySign', // 会签 ORSIGN = 'orSign', // 或签 ORDERAPPROVAL = 'orderApproval', // 依次审批 PREACCOUNT = 'prevAccount', // 上一审批人设置 } // 参与者模式 export enum ParticipantMode { ACCOUNT = 'account', // 用户模式 ROLE = 'role', // 角色模式(未来) } export enum AccountConfigure { SKIP = 'skip', RETURN = 'return', REVOKE = 'revoke', ASSISTAUDIT = 'assistAudit', ADDSIGN = 'addSign', } export interface IProcessAccount { // ID 账号ID name 名称institutionID 企事业ID ID: string; name: string; // 曾用名,不会变动 institutionID?: string; // 单位ID(可能不会用到) institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查) status: ProcessStatus; // 审批状态 configure: AccountConfigure[]; remark?: string; // 审批意见 } // 参与者信息 export interface IParticipantInfo { approvalWay: ApprovalWay; participantMode: ParticipantMode; accounts: IProcessAccount[]; } // 流程中的一个环节 export interface IProcess { ID: string; name: string; sectorType: SectorType; seq?: number; time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间) participantInfo: IParticipantInfo; } export interface IApproval { ID: string; name: string; created: string; createdID: string; createdTime: number; process: IProcess[]; } export enum ApprovalStatus { CREATED = 'created', // 创建 PROCESSING = 'processing', // 正在审批 APPROVED = 'approved', // 审批通过 FAILED = 'failed', // 失败 } // 复制到项目里的流程 export interface IProjectApproval extends IApproval { financialProjectID: string; // 财审项目ID constructionID: string; // 建设项目ID projectIDs: string[]; // 包含在流程里的项目 status: ApprovalStatus; // 状态 approvalTime?: number; // 审批通过时间 currentProcessID?: string; // 当前正处于哪个环节ID } // 流程过程中存储的数据 export interface IProcessData { ID: string; module: CptModelName | SubModelName; // 编辑的模块 action: ActionType; // 动作,增删改等 oDoc: any; // 存放删除时或者修改时的数据 createTime: number; // 创建时间 } // 备份数据集合 export interface IProcessDataDoc { projectID: string; processID: string; index: number; processData: IProcessData[]; }