import { ReportTree } from './report'; 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', // 加签 NEXTSECTOR = 'nextSector', // 是否可添加环节 } export interface ICoreView { ID: string; // 用户ID projectIDs: string[]; // 充许协审的单位工程ID,为空数组时表示可以协审当前环节的所有项目 } export interface IProcessAccount { // ID 账号ID name 名称institutionID 企事业ID ID: string; name: string; // 曾用名,不会变动 institutionID?: string; // 单位ID(可能不会用到) institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查) status: ProcessStatus; // 审批状态 alreadyAddProcess?: boolean; // 是否已经添加了新环节(暂时用的,用于标记是否添加了环节,以后可能删除) configure: AccountConfigure[]; // 权限配置 remark: string; // 审批意见(肯定有,会有默认值) coreViews: ICoreView[]; // 协审人信息 projectIDs: string[]; // 允许审批的单位工程ID,为空数组时表示可以审批当前环节的所有项目 } // 参与者信息 export interface IParticipantInfo { approvalWay: ApprovalWay; participantMode: ParticipantMode; accounts: IProcessAccount[]; } // 流程中的一个环节 export interface IProcess { ID: string; name: string; sectorType: SectorType; seq?: number; createdByProcess?: string; // 上环节ID, 表示哪个环节创建的(上环节添加的) time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间) participantInfo: IParticipantInfo; } export interface IApproval { ID: string; name: string; createdID: string; createdTime: number; process: IProcess[]; } export enum ApprovalStatus { CREATED = 'created', // 创建完成 PROCESSING = 'processing', // 正在审批 APPROVED = 'approved', // 审批通过 } // 复制到项目里的流程 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[]; } // 环节状态(精简) export enum SimpleProcessStatus { APPROVED = 'approved', // 审批通过 FAILED = 'failed', // 失败 REPORTED = 'reported', // 上报 } // 审批待办类型 export enum ApprovalType { APPROVER = 'approver', // 审批 COREVIEW = 'coreview', // 协审 REPORT = 'report', // 上报 } // 流程环节待办列表项 export interface IApprovalTodoData { approvalID: string; // 流程 id processID: string; // 环节 id financialProjectID: string; // 项目 ID constructionID: string; // 建设项目 ID projectName?: string; // 项目名称 reporterID: string; // 发起人ID reporterName?: string; // 发起人名称 lastID?: string; // 上环节ID(暂定为上环节用户ID,之后可能为上环节ID) lastName?: string; // 上环节名称(暂定为上环节用户名称,之后可能为上环节名称) reportTime?: number; // 上报时间 lastStatus?: SimpleProcessStatus; // 上一环节的状态 approveTime?: number; // 当前环节审批时间 approvalStatus?: ApprovalStatus; // 审批流程的状态 type: ApprovalType; // 审批待办类型 } export enum TodoType { APPROVAL = 'approval', } export enum TodoStatus { REMAIN = 'remain', COMPLETED = 'completed', } export interface ITodo { ID: string; // 待办 ID userID: string; createdTime: number; // 创建时间 completedTime: number; // 完成时间 todoType: TodoType; data: any; status: TodoStatus; } export interface IApprovalTodo extends ITodo { data: IApprovalTodoData; }