process.ts 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. import { ReportTree } from './report';
  2. import { CptModelName, SubModelName, ActionType } from './base';
  3. import { BusinessTypeKey } from './subjectUnit';
  4. import { member, IExecutorApprovaledPermission } from './subjectExecutor';
  5. // 环节类型
  6. export enum SectorType {
  7. APPROVAL = 'approval', // 审批
  8. CONDITION = 'condition', // 条件
  9. }
  10. export enum ProcessStatus {
  11. WAITING = 'waiting', // 待审批
  12. APPROVED = 'approved', // 审批通过
  13. ACTIVATING = 'activating', // 当前流程
  14. FAILED = 'failed', // 审批退回
  15. }
  16. // 审批方式
  17. export enum ApprovalWay {
  18. REPORT = 'report', // 上报审批
  19. ACCOUNT = 'account', // 指定用户
  20. JOINTLYSIGN = 'jointlySign', // 会签
  21. ORSIGN = 'orSign', // 或签
  22. ORDERAPPROVAL = 'orderApproval', // 依次审批
  23. PREACCOUNT = 'prevAccount', // 上一审批人设置
  24. }
  25. // 角色权限
  26. export enum RolePermission {
  27. MY_REPORT = 'report', // 我的项目-项目上报
  28. MY_FREE_REPORT = 'freeReport', // 我的项目-指定审批人
  29. MY_ADD_PROJECT = 'addProject', // 我的项目-新建项目
  30. MY_EDIT_PROJECT = 'editProject', // 我的项目-编辑项目
  31. MY_EXPORT_PROJECT = 'exportProject', // 我的项目-导出项目
  32. MY_DEL_PROJECT = 'delProject', // 我的项目-删除项目
  33. MY_VIEW_PROJECT = 'viewProject', // 我的项目-查看项目
  34. MY_VIEW_APPROVAL = 'viewApproval', // 我的项目-审批进度
  35. MY_SAVE_INDEX = 'viewZbkProject', // 我的项目-指标入库
  36. JOIN_VIEW_PARTICIPATING_PROJECT = 'viewParticipatingProject', // 我参与的项目-查看项目
  37. JOIN_SAVE_INDEX = 'saveIndex', // 我参与的项目-指标入库
  38. JOIN_EXPORT_PARTICIPATING_PROJECT = 'exportParticipatingProject', // 我参与的项目-导出项目
  39. ALL_SET_PROJECT = 'setProjects', // 全部项目-项目设置
  40. ALL_VIEW_ALL_PROJECTS = 'viewAllProjects', // 全部项目-查看项目
  41. ALL_SAVE_INDEX = 'saveIndexAll', // 全部项目-指标入库
  42. ALL_EXPORT_PROJECTS = 'exportProjects', // 全部项目-导出项目
  43. ZBK_ENABLE = 'zbkEnable', // 指标库启用
  44. ZBK_EDIT = 'zbkEdit', // 指标库-编辑
  45. CJK_ENABLE = 'cjkEnable', // 材价库-启用
  46. CJK_EDIT = 'cjkEdit', // 材价库-编辑
  47. // TODO 指标库 区间对数
  48. }
  49. // 系统角色
  50. export enum RoleType {
  51. SYSTEM = 'system',
  52. SYSTEM_NORMAL = 'systemNormal',
  53. NORMAL = 'normal',
  54. }
  55. // 角色
  56. export interface IRole {
  57. ID: string;
  58. name: string;
  59. roleType: RoleType;
  60. frontPermission: RolePermission[];
  61. }
  62. // 参与者模式
  63. export enum ParticipantMode {
  64. ACCOUNT = 'account', // 用户模式
  65. ROLE = 'role', // 角色模式(未来)
  66. }
  67. export enum AccountConfigure {
  68. SKIP = 'skip', // 允许跳过
  69. RETURN = 'return', // 允许退回
  70. REVOKE = 'revoke', // 允许撤回
  71. ASSISTAUDIT = 'assistAudit', // 协审
  72. ADDSIGN = 'addSign', // 加签
  73. NEXTSECTOR = 'nextSector', // 是否可添加环节
  74. }
  75. export interface ICoreView {
  76. ID: string; // 用户ID
  77. projectIDs: string[]; // 充许协审的单位工程ID,为空数组时表示可以协审当前环节的所有项目
  78. }
  79. export interface IProcessAccount {
  80. // ID 账号ID name 名称institutionID 企事业ID
  81. ID: string;
  82. name: string; // 曾用名,不会变动
  83. institutionID?: string; // 单位ID(可能不会用到)
  84. institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查)
  85. status: ProcessStatus; // 审批状态
  86. alreadyAddProcess?: boolean; // 是否已经添加了新环节(暂时用的,用于标记是否添加了环节,以后可能删除)
  87. configure: AccountConfigure[]; // 权限配置
  88. remark: string; // 审批意见(肯定有,会有默认值)
  89. coreViews: ICoreView[]; // 协审人信息
  90. projectIDs: string[]; // 允许审批的单位工程ID,为空数组时表示可以审批当前环节的所有项目
  91. }
  92. // 参与者信息
  93. export interface IParticipantInfo {
  94. approvalWay: ApprovalWay;
  95. participantMode: ParticipantMode;
  96. accounts: IProcessAccount[];
  97. }
  98. // 流程中的一个环节
  99. export interface IProcess {
  100. ID: string;
  101. name: string;
  102. sectorType: SectorType;
  103. seq?: number;
  104. createdByProcess?: string; // 上环节ID, 表示哪个环节创建的(上环节添加的)
  105. time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间)
  106. participantInfo: IParticipantInfo;
  107. afterAuditMoney?: number; // 审后的金额
  108. }
  109. // 3合1执行者
  110. export interface IExecutor {
  111. ID: string;
  112. permission: string[];
  113. configure: string[];
  114. }
  115. // 3合1参与者信息
  116. export interface IProcedureParticipantInfo {
  117. approvalWay: string;
  118. executor: IExecutor;
  119. }
  120. // 3合1分支判断信息
  121. export interface IConditionItem {
  122. field: string;
  123. type: string;
  124. symbol: string;
  125. value: string;
  126. }
  127. // 3合1分支条件信息
  128. export interface IConditionInfoItem {
  129. ID: string;
  130. conditions: IConditionItem[];
  131. // eslint-disable-next-line prettier/prettier, no-use-before-define
  132. process: IProcedureProcess[];
  133. }
  134. // 3合1步骤中的一个环节
  135. export interface IProcedureProcess {
  136. ID: string;
  137. name: string;
  138. sectorType: string;
  139. participantInfo: IProcedureParticipantInfo;
  140. conditionInfo?: IConditionInfoItem[];
  141. }
  142. export interface IProcedureItem {
  143. ID: string;
  144. approvalStatus: string;
  145. content: string;
  146. approvalTime: string;
  147. executorID?: string;
  148. members?: member[];
  149. matter?: any;
  150. approvaledPermission?:IExecutorApprovaledPermission[]
  151. }
  152. export interface IApproval {
  153. ID: string;
  154. name: string;
  155. createdID: string;
  156. createdTime: number;
  157. process: IProcess[];
  158. subjectID?: string;
  159. businessType?: BusinessTypeKey;
  160. }
  161. export enum ApprovalStatus {
  162. CREATED = 'created', // 创建完成
  163. PROCESSING = 'processing', // 正在审批
  164. APPROVED = 'approved', // 审批通过
  165. }
  166. export interface IProcessAuditMoney {
  167. processID: string;
  168. data: any[];
  169. }
  170. // 复制到项目里的流程
  171. export interface IProjectApproval extends IApproval {
  172. financialProjectID: string; // 财审项目ID
  173. constructionID: string; // 建设项目ID
  174. projectIDs: string[]; // 包含在流程里的项目(单位工程)
  175. status: ApprovalStatus; // 状态
  176. approvalTime?: number; // 审批通过时间
  177. currentProcessID?: string; // 当前正处于哪个环节ID
  178. businessID?: string; // 业务ID
  179. }
  180. // 流程过程中存储的数据
  181. export interface IProcessData {
  182. ID: string;
  183. module: CptModelName | SubModelName; // 编辑的模块
  184. action: ActionType; // 动作,增删改等
  185. oDoc: any; // 存放删除时或者修改时的数据
  186. createTime: number; // 创建时间
  187. }
  188. // 备份数据集合
  189. export interface IProcessDataDoc {
  190. projectID: string;
  191. processID: string;
  192. index: number;
  193. processData: IProcessData[];
  194. }
  195. // 环节状态(精简)
  196. export enum SimpleProcessStatus {
  197. APPROVED = 'approved', // 审批通过
  198. FAILED = 'failed', // 失败
  199. REPORTED = 'reported', // 上报
  200. }
  201. // 审批待办类型
  202. export enum ApprovalType {
  203. APPROVER = 'approver', // 审批
  204. COREVIEW = 'coreview', // 协审
  205. REPORT = 'report', // 上报
  206. }
  207. // 流程环节待办列表项
  208. export interface IApprovalTodoData {
  209. approvalID: string; // 流程 id
  210. processID: string; // 环节 id
  211. financialProjectID: string; // 项目 ID
  212. constructionID: string; // 建设项目 ID
  213. projectName?: string; // 项目名称
  214. reporterID?: string; // 发起人ID
  215. reporterName?: string; // 发起人名称
  216. lastID?: string; // 上环节ID(暂定为上环节用户ID,之后可能为上环节ID)
  217. lastName?: string; // 上环节名称(暂定为上环节用户名称,之后可能为上环节名称)
  218. reportTime?: number; // 上报时间
  219. lastStatus?: SimpleProcessStatus; // 上一环节的状态
  220. approveTime?: number; // 当前环节审批时间
  221. approveType?: SimpleProcessStatus; // 审批办结状态
  222. moveUserID?: string; // 环节流转(用户ID)
  223. moveUserName?: string; // 环节流转(用户名)
  224. approvalStatus?: ApprovalStatus; // 审批流程的状态
  225. type: ApprovalType; // 审批待办类型
  226. }
  227. export interface IApprovalTodoData2 {
  228. approvalID: string; // 流程 id
  229. processID: string; // 环节 id
  230. financialProjectID: string; // 项目 ID
  231. constructionID: string; // 建设项目 ID
  232. projectName?: string; // 项目名称
  233. // reporterID: string; // 发起人ID (删)
  234. // reporterName: string; // 发起人名称(删)
  235. lastID?: string; // 为上环节用户ID
  236. lastName?: string; // 上环节用户名称
  237. // reportTime: number; // 上报时间(删)
  238. lastStatus?: SimpleProcessStatus; // 上环节办结状态
  239. // approveTime: number; // 审批办结时间(删)
  240. approveType?: SimpleProcessStatus; // 审批办结状态
  241. // approvalStatus: ApprovalStatus; // 审批流程的状态(删)
  242. moveUserID?: string; // 环节流转(用户ID)
  243. moveUserName?: string; // 环节流转(用户名)
  244. type: ApprovalType; // 审批待办类型
  245. }
  246. export enum TodoType {
  247. APPROVAL = 'approval',
  248. }
  249. export enum TodoStatus {
  250. REMAIN = 'remain',
  251. COMPLETED = 'completed',
  252. }
  253. export interface ITodo {
  254. ID: string; // 待办 ID
  255. userID: string; // 用户 ID
  256. createdTime: number; // 创建时间(相当于环节流转时间)
  257. completedTime: number; // 完成时间(相当于审批办结时间)
  258. todoType: TodoType;
  259. data: any;
  260. status: TodoStatus;
  261. }
  262. export interface IApprovalTodo extends ITodo {
  263. data: IApprovalTodoData;
  264. }
  265. export enum ChangeRecord {
  266. CURRENT = 'current', // 当前清单
  267. ALLBILLS = 'all-bills', // 全部清单
  268. ALLGLJS = 'all-gljs', // 全部材价
  269. }