process.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { CptModelName, SubModelName, ActionType } from './base';
  2. // 环节类型
  3. export enum SectorType {
  4. APPROVAL = 'approval', // 审批
  5. CONDITION = 'condition', // 条件
  6. }
  7. export enum ProcessStatus {
  8. WAITING = 'waiting', // 待审批
  9. APPROVED = 'approved', // 审批通过
  10. ACTIVATING = 'activating', // 当前流程
  11. FAILED = 'failed', // 审批退回
  12. }
  13. // 审批方式
  14. export enum ApprovalWay {
  15. REPORT = 'report', // 上报审批
  16. ACCOUNT = 'account', // 指定用户
  17. JOINTLYSIGN = 'jointlySign', // 会签
  18. ORSIGN = 'orSign', // 或签
  19. ORDERAPPROVAL = 'orderApproval', // 依次审批
  20. PREACCOUNT = 'prevAccount', // 上一审批人设置
  21. }
  22. // 参与者模式
  23. export enum ParticipantMode {
  24. ACCOUNT = 'account', // 用户模式
  25. ROLE = 'role', // 角色模式(未来)
  26. }
  27. export enum AccountConfigure {
  28. SKIP = 'skip',
  29. RETURN = 'return',
  30. REVOKE = 'revoke',
  31. ASSISTAUDIT = 'assistAudit',
  32. ADDSIGN = 'addSign',
  33. }
  34. export interface IProcessAccount {
  35. // ID 账号ID name 名称institutionID 企事业ID
  36. ID: string;
  37. name: string; // 曾用名,不会变动
  38. institutionID?: string; // 单位ID(可能不会用到)
  39. institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查)
  40. status: ProcessStatus; // 审批状态
  41. configure: AccountConfigure[];
  42. remark?: string; // 审批意见
  43. }
  44. // 参与者信息
  45. export interface IParticipantInfo {
  46. approvalWay: ApprovalWay;
  47. participantMode: ParticipantMode;
  48. accounts: IProcessAccount[];
  49. }
  50. // 流程中的一个环节
  51. export interface IProcess {
  52. ID: string;
  53. name: string;
  54. sectorType: SectorType;
  55. seq?: number;
  56. time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间)
  57. participantInfo: IParticipantInfo;
  58. }
  59. export interface IApproval {
  60. ID: string;
  61. name: string;
  62. created: string;
  63. createdID: string;
  64. createdTime: number;
  65. process: IProcess[];
  66. }
  67. export enum ApprovalStatus {
  68. CREATED = 'created', // 创建
  69. PROCESSING = 'processing', // 正在审批
  70. APPROVED = 'approved', // 审批通过
  71. FAILED = 'failed', // 失败
  72. }
  73. // 复制到项目里的流程
  74. export interface IProjectApproval extends IApproval {
  75. financialProjectID: string; // 财审项目ID
  76. constructionID: string; // 建设项目ID
  77. projectIDs: string[]; // 包含在流程里的项目
  78. status: ApprovalStatus; // 状态
  79. approvalTime?: number; // 审批通过时间
  80. currentProcessID?: string; // 当前正处于哪个环节ID
  81. }
  82. // 流程过程中存储的数据
  83. export interface IProcessData {
  84. ID: string;
  85. module: CptModelName | SubModelName; // 编辑的模块
  86. action: ActionType; // 动作,增删改等
  87. oDoc: any; // 存放删除时或者修改时的数据
  88. createTime: number; // 创建时间
  89. }
  90. // 备份数据集合
  91. export interface IProcessDataDoc {
  92. projectID: string;
  93. processID: string;
  94. index: number;
  95. processData: IProcessData[];
  96. }