process.ts 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. import { ReportTree } from './report';
  2. import { CptModelName, SubModelName, ActionType } from './base';
  3. // 环节类型
  4. export enum SectorType {
  5. APPROVAL = 'approval', // 审批
  6. CONDITION = 'condition', // 条件
  7. }
  8. export enum ProcessStatus {
  9. WAITING = 'waiting', // 待审批
  10. APPROVED = 'approved', // 审批通过
  11. ACTIVATING = 'activating', // 当前流程
  12. FAILED = 'failed', // 审批退回
  13. }
  14. // 审批方式
  15. export enum ApprovalWay {
  16. REPORT = 'report', // 上报审批
  17. ACCOUNT = 'account', // 指定用户
  18. JOINTLYSIGN = 'jointlySign', // 会签
  19. ORSIGN = 'orSign', // 或签
  20. ORDERAPPROVAL = 'orderApproval', // 依次审批
  21. PREACCOUNT = 'prevAccount', // 上一审批人设置
  22. }
  23. // 角色权限
  24. export enum RolePermission {
  25. REPORT = 'report', // 上报权限
  26. VIEW_ALL_PROJECTS = 'viewAllProjects', // 查看所有项目
  27. }
  28. // 系统角色
  29. export enum RoleType {
  30. SYSTEM = 'system',
  31. SYSTEM_NORMAL = 'systemNormal',
  32. NORMAL = 'normal',
  33. }
  34. // 角色
  35. export interface IRole {
  36. ID: string;
  37. name: string;
  38. roleType: RoleType;
  39. frontPermission: RolePermission[];
  40. }
  41. // 参与者模式
  42. export enum ParticipantMode {
  43. ACCOUNT = 'account', // 用户模式
  44. ROLE = 'role', // 角色模式(未来)
  45. }
  46. export enum AccountConfigure {
  47. SKIP = 'skip', // 允许跳过
  48. RETURN = 'return', // 允许退回
  49. REVOKE = 'revoke', // 允许撤回
  50. ASSISTAUDIT = 'assistAudit', // 协审
  51. ADDSIGN = 'addSign', // 加签
  52. NEXTSECTOR = 'nextSector', // 是否可添加环节
  53. }
  54. export interface ICoreView {
  55. ID: string; // 用户ID
  56. projectIDs: string[]; // 充许协审的单位工程ID,为空数组时表示可以协审当前环节的所有项目
  57. }
  58. export interface IProcessAccount {
  59. // ID 账号ID name 名称institutionID 企事业ID
  60. ID: string;
  61. name: string; // 曾用名,不会变动
  62. institutionID?: string; // 单位ID(可能不会用到)
  63. institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查)
  64. status: ProcessStatus; // 审批状态
  65. alreadyAddProcess?: boolean; // 是否已经添加了新环节(暂时用的,用于标记是否添加了环节,以后可能删除)
  66. configure: AccountConfigure[]; // 权限配置
  67. remark: string; // 审批意见(肯定有,会有默认值)
  68. coreViews: ICoreView[]; // 协审人信息
  69. projectIDs: string[]; // 允许审批的单位工程ID,为空数组时表示可以审批当前环节的所有项目
  70. }
  71. // 参与者信息
  72. export interface IParticipantInfo {
  73. approvalWay: ApprovalWay;
  74. participantMode: ParticipantMode;
  75. accounts: IProcessAccount[];
  76. }
  77. // 流程中的一个环节
  78. export interface IProcess {
  79. ID: string;
  80. name: string;
  81. sectorType: SectorType;
  82. seq?: number;
  83. createdByProcess?: string; // 上环节ID, 表示哪个环节创建的(上环节添加的)
  84. time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间)
  85. participantInfo: IParticipantInfo;
  86. }
  87. export interface IApproval {
  88. ID: string;
  89. name: string;
  90. createdID: string;
  91. createdTime: number;
  92. process: IProcess[];
  93. }
  94. export enum ApprovalStatus {
  95. CREATED = 'created', // 创建完成
  96. PROCESSING = 'processing', // 正在审批
  97. APPROVED = 'approved', // 审批通过
  98. }
  99. // 复制到项目里的流程
  100. export interface IProjectApproval extends IApproval {
  101. financialProjectID: string; // 财审项目ID
  102. constructionID: string; // 建设项目ID
  103. projectIDs: string[]; // 包含在流程里的项目(单位工程)
  104. status: ApprovalStatus; // 状态
  105. approvalTime?: number; // 审批通过时间
  106. currentProcessID?: string; // 当前正处于哪个环节ID
  107. }
  108. // 流程过程中存储的数据
  109. export interface IProcessData {
  110. ID: string;
  111. module: CptModelName | SubModelName; // 编辑的模块
  112. action: ActionType; // 动作,增删改等
  113. oDoc: any; // 存放删除时或者修改时的数据
  114. createTime: number; // 创建时间
  115. }
  116. // 备份数据集合
  117. export interface IProcessDataDoc {
  118. projectID: string;
  119. processID: string;
  120. index: number;
  121. processData: IProcessData[];
  122. }
  123. // 环节状态(精简)
  124. export enum SimpleProcessStatus {
  125. APPROVED = 'approved', // 审批通过
  126. FAILED = 'failed', // 失败
  127. REPORTED = 'reported', // 上报
  128. }
  129. // 审批待办类型
  130. export enum ApprovalType {
  131. APPROVER = 'approver', // 审批
  132. COREVIEW = 'coreview', // 协审
  133. REPORT = 'report', // 上报
  134. }
  135. // 流程环节待办列表项
  136. export interface IApprovalTodoData {
  137. approvalID: string; // 流程 id
  138. processID: string; // 环节 id
  139. financialProjectID: string; // 项目 ID
  140. constructionID: string; // 建设项目 ID
  141. projectName?: string; // 项目名称
  142. reporterID: string; // 发起人ID
  143. reporterName?: string; // 发起人名称
  144. lastID?: string; // 上环节ID(暂定为上环节用户ID,之后可能为上环节ID)
  145. lastName?: string; // 上环节名称(暂定为上环节用户名称,之后可能为上环节名称)
  146. reportTime?: number; // 上报时间
  147. lastStatus?: SimpleProcessStatus; // 上一环节的状态
  148. approveTime?: number; // 当前环节审批时间
  149. approvalStatus?: ApprovalStatus; // 审批流程的状态
  150. type: ApprovalType; // 审批待办类型
  151. }
  152. export interface IApprovalTodoData2 {
  153. approvalID: string; // 流程 id
  154. processID: string; // 环节 id
  155. financialProjectID: string; // 项目 ID
  156. constructionID: string; // 建设项目 ID
  157. projectName?: string; // 项目名称
  158. reporterID: string; // 发起人ID (删)
  159. reporterName: string; // 发起人名称(删)
  160. lastID: string; // 为上环节用户ID
  161. lastName?: string; // 上环节用户名称
  162. reportTime: number; // 上报时间(删)
  163. lastStatus: SimpleProcessStatus; // 上环节办结状态
  164. approveTime: number; // 审批办结时间(删)
  165. approveType: SimpleProcessStatus; // 审批办结状态
  166. approvalStatus: ApprovalStatus; // 审批流程的状态(删)
  167. moveUserID: string; // 环节流转(用户ID)
  168. type: ApprovalType; // 审批待办类型
  169. }
  170. export enum TodoType {
  171. APPROVAL = 'approval',
  172. }
  173. export enum TodoStatus {
  174. REMAIN = 'remain',
  175. COMPLETED = 'completed',
  176. }
  177. export interface ITodo {
  178. ID: string; // 待办 ID
  179. userID: string; // 用户 ID
  180. createdTime: number; // 创建时间(相当于环节流转时间)
  181. completedTime: number; // 完成时间(相当于审批办结时间)
  182. todoType: TodoType;
  183. data: any;
  184. status: TodoStatus;
  185. }
  186. export interface IApprovalTodo extends ITodo {
  187. data: IApprovalTodoData;
  188. }