consts.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. // @ts-ignore
  2. import { DictDataVO } from '@/api/system/dict/types'
  3. import { TaskStatusEnum } from '@/api/bpm/task'
  4. /**
  5. * 节点类型
  6. */
  7. export enum NodeType {
  8. /**
  9. * 结束节点
  10. */
  11. END_EVENT_NODE = 1,
  12. /**
  13. * 发起人节点
  14. */
  15. START_USER_NODE = 10,
  16. /**
  17. * 审批人节点
  18. */
  19. USER_TASK_NODE = 11,
  20. /**
  21. * 抄送人节点
  22. */
  23. COPY_TASK_NODE = 12,
  24. /**
  25. * 办理人节点
  26. */
  27. TRANSACTOR_NODE = 13,
  28. /**
  29. * 延迟器节点
  30. */
  31. DELAY_TIMER_NODE = 14,
  32. /**
  33. * 触发器节点
  34. */
  35. TRIGGER_NODE = 15,
  36. /**
  37. * 子流程节点
  38. */
  39. CHILD_PROCESS_NODE = 20,
  40. /**
  41. * 条件节点
  42. */
  43. CONDITION_NODE = 50,
  44. /**
  45. * 条件分支节点 (对应排他网关)
  46. */
  47. CONDITION_BRANCH_NODE = 51,
  48. /**
  49. * 并行分支节点 (对应并行网关)
  50. */
  51. PARALLEL_BRANCH_NODE = 52,
  52. /**
  53. * 包容分支节点 (对应包容网关)
  54. */
  55. INCLUSIVE_BRANCH_NODE = 53,
  56. /**
  57. * 路由分支节点
  58. */
  59. ROUTER_BRANCH_NODE = 54
  60. }
  61. export enum NodeId {
  62. /**
  63. * 发起人节点 Id
  64. */
  65. START_USER_NODE_ID = 'StartUserNode',
  66. /**
  67. * 发起人节点 Id
  68. */
  69. END_EVENT_NODE_ID = 'EndEvent'
  70. }
  71. /**
  72. * 节点结构定义
  73. */
  74. export interface SimpleFlowNode {
  75. id: string
  76. type: NodeType
  77. name: string
  78. showText?: string
  79. // 孩子节点
  80. childNode?: SimpleFlowNode
  81. // 条件节点
  82. conditionNodes?: SimpleFlowNode[]
  83. // 审批类型
  84. approveType?: ApproveType
  85. // 候选人策略
  86. candidateStrategy?: number
  87. // 候选人参数
  88. candidateParam?: string
  89. // 多人审批方式
  90. approveMethod?: ApproveMethodType
  91. //通过比例
  92. approveRatio?: number
  93. // 审批按钮设置
  94. buttonsSetting?: any[]
  95. // 表单权限
  96. fieldsPermission?: Array<Record<string, any>>
  97. // 审批任务超时处理
  98. timeoutHandler?: TimeoutHandler
  99. // 审批任务拒绝处理
  100. rejectHandler?: RejectHandler
  101. // 审批人为空的处理
  102. assignEmptyHandler?: AssignEmptyHandler
  103. // 审批节点的审批人与发起人相同时,对应的处理类型
  104. assignStartUserHandlerType?: number
  105. // 创建任务监听器
  106. taskCreateListener?: ListenerHandler
  107. // 创建任务监听器
  108. taskAssignListener?: ListenerHandler
  109. // 创建任务监听器
  110. taskCompleteListener?: ListenerHandler
  111. // 条件设置
  112. conditionSetting?: ConditionSetting
  113. // 活动的状态,用于前端节点状态展示
  114. activityStatus?: TaskStatusEnum
  115. // 延迟设置
  116. delaySetting?: DelaySetting
  117. // 路由分支
  118. routerGroups?: RouterSetting[]
  119. defaultFlowId?: string
  120. // 签名
  121. signEnable?: boolean
  122. // 审批意见
  123. reasonRequire?: boolean
  124. // 触发器设置
  125. triggerSetting?: TriggerSetting
  126. // 子流程
  127. childProcessSetting?: ChildProcessSetting
  128. }
  129. // 候选人策略枚举 ( 用于审批节点。抄送节点 )
  130. export enum CandidateStrategy {
  131. /**
  132. * 指定角色
  133. */
  134. ROLE = 10,
  135. /**
  136. * 部门成员
  137. */
  138. DEPT_MEMBER = 20,
  139. /**
  140. * 部门的负责人
  141. */
  142. DEPT_LEADER = 21,
  143. /**
  144. * 连续多级部门的负责人
  145. */
  146. MULTI_LEVEL_DEPT_LEADER = 23,
  147. /**
  148. * 指定岗位
  149. */
  150. POST = 22,
  151. /**
  152. * 指定用户
  153. */
  154. USER = 30,
  155. /**
  156. * 发起人自选
  157. */
  158. START_USER_SELECT = 35,
  159. /**
  160. * 发起人自己
  161. */
  162. START_USER = 36,
  163. /**
  164. * 发起人部门负责人
  165. */
  166. START_USER_DEPT_LEADER = 37,
  167. /**
  168. * 发起人连续多级部门的负责人
  169. */
  170. START_USER_MULTI_LEVEL_DEPT_LEADER = 38,
  171. /**
  172. * 指定用户组
  173. */
  174. USER_GROUP = 40,
  175. /**
  176. * 表单内用户字段
  177. */
  178. FORM_USER = 50,
  179. /**
  180. * 表单内部门负责人
  181. */
  182. FORM_DEPT_LEADER = 51,
  183. /**
  184. * 流程表达式
  185. */
  186. EXPRESSION = 60
  187. }
  188. // 多人审批方式类型枚举 ( 用于审批节点 )
  189. export enum ApproveMethodType {
  190. /**
  191. * 随机挑选一人审批
  192. */
  193. RANDOM_SELECT_ONE_APPROVE = 1,
  194. /**
  195. * 多人会签(按通过比例)
  196. */
  197. APPROVE_BY_RATIO = 2,
  198. /**
  199. * 多人或签(通过只需一人,拒绝只需一人)
  200. */
  201. ANY_APPROVE = 3,
  202. /**
  203. * 多人依次审批
  204. */
  205. SEQUENTIAL_APPROVE = 4
  206. }
  207. /**
  208. * 审批拒绝结构定义
  209. */
  210. export type RejectHandler = {
  211. // 审批拒绝类型
  212. type: RejectHandlerType
  213. // 退回节点 Id
  214. returnNodeId?: string
  215. }
  216. /**
  217. * 审批超时结构定义
  218. */
  219. export type TimeoutHandler = {
  220. // 是否开启超时处理
  221. enable: boolean
  222. // 超时执行的动作
  223. type?: number
  224. // 超时时间设置
  225. timeDuration?: string
  226. // 执行动作是自动提醒, 最大提醒次数
  227. maxRemindCount?: number
  228. }
  229. /**
  230. * 审批人为空的结构定义
  231. */
  232. export type AssignEmptyHandler = {
  233. // 审批人为空的处理类型
  234. type: AssignEmptyHandlerType
  235. // 指定用户的编号数组
  236. userIds?: number[]
  237. }
  238. /**
  239. * 监听器的结构定义
  240. */
  241. export type ListenerHandler = {
  242. enable: boolean
  243. path?: string
  244. header?: HttpRequestParam[]
  245. body?: HttpRequestParam[]
  246. }
  247. export type HttpRequestParam = {
  248. key: string
  249. type: number
  250. value: string
  251. }
  252. export enum BpmHttpRequestParamTypeEnum {
  253. /**
  254. * 固定值
  255. */
  256. FIXED_VALUE = 1,
  257. /**
  258. * 表单
  259. */
  260. FROM_FORM = 2
  261. }
  262. export const BPM_HTTP_REQUEST_PARAM_TYPES = [
  263. {
  264. value: 1,
  265. label: '固定值'
  266. },
  267. {
  268. value: 2,
  269. label: '表单'
  270. }
  271. ]
  272. // 审批拒绝类型枚举
  273. export enum RejectHandlerType {
  274. /**
  275. * 结束流程
  276. */
  277. FINISH_PROCESS = 1,
  278. /**
  279. * 驳回到指定节点
  280. */
  281. RETURN_USER_TASK = 2
  282. }
  283. // 用户任务超时处理类型枚举
  284. export enum TimeoutHandlerType {
  285. /**
  286. * 自动提醒
  287. */
  288. REMINDER = 1,
  289. /**
  290. * 自动同意
  291. */
  292. APPROVE = 2,
  293. /**
  294. * 自动拒绝
  295. */
  296. REJECT = 3
  297. }
  298. // 用户任务的审批人为空时,处理类型枚举
  299. export enum AssignEmptyHandlerType {
  300. /**
  301. * 自动通过
  302. */
  303. APPROVE = 1,
  304. /**
  305. * 自动拒绝
  306. */
  307. REJECT = 2,
  308. /**
  309. * 指定人员审批
  310. */
  311. ASSIGN_USER,
  312. /**
  313. * 转交给流程管理员
  314. */
  315. ASSIGN_ADMIN = 4
  316. }
  317. // 用户任务的审批人与发起人相同时,处理类型枚举
  318. export enum AssignStartUserHandlerType {
  319. /**
  320. * 由发起人对自己审批
  321. */
  322. START_USER_AUDIT = 1,
  323. /**
  324. * 自动跳过【参考飞书】:1)如果当前节点还有其他审批人,则交由其他审批人进行审批;2)如果当前节点没有其他审批人,则该节点自动通过
  325. */
  326. SKIP = 2,
  327. /**
  328. * 转交给部门负责人审批
  329. */
  330. ASSIGN_DEPT_LEADER = 3
  331. }
  332. // 用户任务的审批类型。 【参考飞书】
  333. export enum ApproveType {
  334. /**
  335. * 人工审批
  336. */
  337. USER = 1,
  338. /**
  339. * 自动通过
  340. */
  341. AUTO_APPROVE = 2,
  342. /**
  343. * 自动拒绝
  344. */
  345. AUTO_REJECT = 3
  346. }
  347. // 时间单位枚举
  348. export enum TimeUnitType {
  349. /**
  350. * 分钟
  351. */
  352. MINUTE = 1,
  353. /**
  354. * 小时
  355. */
  356. HOUR = 2,
  357. /**
  358. * 天
  359. */
  360. DAY = 3
  361. }
  362. /**
  363. * 条件节点设置结构定义,用于条件节点
  364. */
  365. export type ConditionSetting = {
  366. // 条件类型
  367. conditionType?: ConditionType
  368. // 条件表达式
  369. conditionExpression?: string
  370. // 条件组
  371. conditionGroups?: ConditionGroup
  372. // 是否默认的条件
  373. defaultFlow?: boolean
  374. }
  375. // 条件配置类型 ( 用于条件节点配置 )
  376. export enum ConditionType {
  377. /**
  378. * 条件表达式
  379. */
  380. EXPRESSION = 1,
  381. /**
  382. * 条件规则
  383. */
  384. RULE = 2
  385. }
  386. /**
  387. * 表单权限的枚举
  388. */
  389. export enum FieldPermissionType {
  390. /**
  391. * 只读
  392. */
  393. READ = '1',
  394. /**
  395. * 编辑
  396. */
  397. WRITE = '2',
  398. /**
  399. * 隐藏
  400. */
  401. NONE = '3'
  402. }
  403. /**
  404. * 操作按钮权限结构定义
  405. */
  406. export type ButtonSetting = {
  407. id: OperationButtonType
  408. displayName: string
  409. enable: boolean
  410. }
  411. // 操作按钮类型枚举 (用于审批节点)
  412. export enum OperationButtonType {
  413. /**
  414. * 通过
  415. */
  416. APPROVE = 1,
  417. /**
  418. * 拒绝
  419. */
  420. REJECT = 2,
  421. /**
  422. * 转办
  423. */
  424. TRANSFER = 3,
  425. /**
  426. * 委派
  427. */
  428. DELEGATE = 4,
  429. /**
  430. * 加签
  431. */
  432. ADD_SIGN = 5,
  433. /**
  434. * 退回
  435. */
  436. RETURN = 6,
  437. /**
  438. * 抄送
  439. */
  440. COPY = 7
  441. }
  442. /**
  443. * 条件规则结构定义
  444. */
  445. export type ConditionRule = {
  446. opCode: string
  447. leftSide: string
  448. rightSide: string
  449. }
  450. /**
  451. * 条件组结构定义
  452. */
  453. export type ConditionGroup = {
  454. // 条件组的逻辑关系是否为且
  455. and: boolean
  456. // 条件数组
  457. conditions: Condition[]
  458. }
  459. /**
  460. * 条件组默认值
  461. */
  462. export const DEFAULT_CONDITION_GROUP_VALUE = {
  463. and: true,
  464. conditions: [
  465. {
  466. and: true,
  467. rules: [
  468. {
  469. opCode: '==',
  470. leftSide: '',
  471. rightSide: ''
  472. }
  473. ]
  474. }
  475. ]
  476. }
  477. /**
  478. * 条件结构定义
  479. */
  480. export type Condition = {
  481. // 条件规则的逻辑关系是否为且
  482. and: boolean
  483. rules: ConditionRule[]
  484. }
  485. export const NODE_DEFAULT_TEXT = new Map<number, string>()
  486. NODE_DEFAULT_TEXT.set(NodeType.USER_TASK_NODE, '请配置审批人')
  487. NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人')
  488. NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件')
  489. NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人')
  490. NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器')
  491. NODE_DEFAULT_TEXT.set(NodeType.ROUTER_BRANCH_NODE, '请设置路由节点')
  492. NODE_DEFAULT_TEXT.set(NodeType.TRIGGER_NODE, '请设置触发器')
  493. NODE_DEFAULT_TEXT.set(NodeType.TRANSACTOR_NODE, '请设置办理人')
  494. NODE_DEFAULT_TEXT.set(NodeType.CHILD_PROCESS_NODE, '请设置子流程')
  495. export const NODE_DEFAULT_NAME = new Map<number, string>()
  496. NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人')
  497. NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人')
  498. NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
  499. NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人')
  500. NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器')
  501. NODE_DEFAULT_NAME.set(NodeType.ROUTER_BRANCH_NODE, '路由分支')
  502. NODE_DEFAULT_NAME.set(NodeType.TRIGGER_NODE, '触发器')
  503. NODE_DEFAULT_NAME.set(NodeType.TRANSACTOR_NODE, '办理人')
  504. NODE_DEFAULT_NAME.set(NodeType.CHILD_PROCESS_NODE, '子流程')
  505. // 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序
  506. export const CANDIDATE_STRATEGY: DictDataVO[] = [
  507. { label: '指定成员', value: CandidateStrategy.USER },
  508. { label: '指定角色', value: CandidateStrategy.ROLE },
  509. { label: '指定岗位', value: CandidateStrategy.POST },
  510. { label: '部门成员', value: CandidateStrategy.DEPT_MEMBER },
  511. { label: '部门负责人', value: CandidateStrategy.DEPT_LEADER },
  512. { label: '连续多级部门负责人', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER },
  513. { label: '指定岗位', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER },
  514. { label: '发起人自选', value: CandidateStrategy.START_USER_SELECT },
  515. { label: '发起人本人', value: CandidateStrategy.START_USER },
  516. { label: '发起人部门负责人', value: CandidateStrategy.START_USER_DEPT_LEADER },
  517. { label: '发起人连续部门负责人', value: CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER },
  518. { label: '用户组', value: CandidateStrategy.USER_GROUP },
  519. { label: '表单内用户字段', value: CandidateStrategy.FORM_USER },
  520. { label: '表单内部门负责人', value: CandidateStrategy.FORM_DEPT_LEADER },
  521. { label: '流程表达式', value: CandidateStrategy.EXPRESSION }
  522. ]
  523. // 审批节点 的审批类型
  524. export const APPROVE_TYPE: DictDataVO[] = [
  525. { label: '人工审批', value: ApproveType.USER },
  526. { label: '自动通过', value: ApproveType.AUTO_APPROVE },
  527. { label: '自动拒绝', value: ApproveType.AUTO_REJECT }
  528. ]
  529. export const APPROVE_METHODS: DictDataVO[] = [
  530. { label: '按顺序依次审批', value: ApproveMethodType.SEQUENTIAL_APPROVE },
  531. { label: '会签(可同时审批,至少 % 人必须审批通过)', value: ApproveMethodType.APPROVE_BY_RATIO },
  532. { label: '或签(可同时审批,有一人通过即可)', value: ApproveMethodType.ANY_APPROVE },
  533. { label: '随机挑选一人审批', value: ApproveMethodType.RANDOM_SELECT_ONE_APPROVE }
  534. ]
  535. export const CONDITION_CONFIG_TYPES: DictDataVO[] = [
  536. { label: '条件规则', value: ConditionType.RULE },
  537. { label: '条件表达式', value: ConditionType.EXPRESSION }
  538. ]
  539. // 时间单位类型
  540. export const TIME_UNIT_TYPES: DictDataVO[] = [
  541. { label: '分钟', value: TimeUnitType.MINUTE },
  542. { label: '小时', value: TimeUnitType.HOUR },
  543. { label: '天', value: TimeUnitType.DAY }
  544. ]
  545. // 超时处理执行动作类型
  546. export const TIMEOUT_HANDLER_TYPES: DictDataVO[] = [
  547. { label: '自动提醒', value: 1 },
  548. { label: '自动同意', value: 2 },
  549. { label: '自动拒绝', value: 3 }
  550. ]
  551. export const REJECT_HANDLER_TYPES: DictDataVO[] = [
  552. { label: '终止流程', value: RejectHandlerType.FINISH_PROCESS },
  553. { label: '驳回到指定节点', value: RejectHandlerType.RETURN_USER_TASK }
  554. // { label: '结束任务', value: RejectHandlerType.FINISH_TASK }
  555. ]
  556. export const ASSIGN_EMPTY_HANDLER_TYPES: DictDataVO[] = [
  557. { label: '自动通过', value: 1 },
  558. { label: '自动拒绝', value: 2 },
  559. { label: '指定成员审批', value: 3 },
  560. { label: '转交给流程管理员', value: 4 }
  561. ]
  562. export const ASSIGN_START_USER_HANDLER_TYPES: DictDataVO[] = [
  563. { label: '由发起人对自己审批', value: 1 },
  564. { label: '自动跳过', value: 2 },
  565. { label: '转交给部门负责人审批', value: 3 }
  566. ]
  567. // 比较运算符
  568. export const COMPARISON_OPERATORS: DictDataVO = [
  569. {
  570. value: '==',
  571. label: '等于'
  572. },
  573. {
  574. value: '!=',
  575. label: '不等于'
  576. },
  577. {
  578. value: '>',
  579. label: '大于'
  580. },
  581. {
  582. value: '>=',
  583. label: '大于等于'
  584. },
  585. {
  586. value: '<',
  587. label: '小于'
  588. },
  589. {
  590. value: '<=',
  591. label: '小于等于'
  592. }
  593. ]
  594. // 审批操作按钮名称
  595. export const OPERATION_BUTTON_NAME = new Map<number, string>()
  596. OPERATION_BUTTON_NAME.set(OperationButtonType.APPROVE, '通过')
  597. OPERATION_BUTTON_NAME.set(OperationButtonType.REJECT, '拒绝')
  598. OPERATION_BUTTON_NAME.set(OperationButtonType.TRANSFER, '转办')
  599. OPERATION_BUTTON_NAME.set(OperationButtonType.DELEGATE, '委派')
  600. OPERATION_BUTTON_NAME.set(OperationButtonType.ADD_SIGN, '加签')
  601. OPERATION_BUTTON_NAME.set(OperationButtonType.RETURN, '退回')
  602. OPERATION_BUTTON_NAME.set(OperationButtonType.COPY, '抄送')
  603. // 默认的按钮权限设置
  604. export const DEFAULT_BUTTON_SETTING: ButtonSetting[] = [
  605. { id: OperationButtonType.APPROVE, displayName: '通过', enable: true },
  606. { id: OperationButtonType.REJECT, displayName: '拒绝', enable: true },
  607. { id: OperationButtonType.TRANSFER, displayName: '转办', enable: true },
  608. { id: OperationButtonType.DELEGATE, displayName: '委派', enable: true },
  609. { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: true },
  610. { id: OperationButtonType.RETURN, displayName: '退回', enable: true }
  611. ]
  612. // 办理人默认的按钮权限设置
  613. export const TRANSACTOR_DEFAULT_BUTTON_SETTING: ButtonSetting[] = [
  614. { id: OperationButtonType.APPROVE, displayName: '办理', enable: true },
  615. { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false },
  616. { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false },
  617. { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false },
  618. { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false },
  619. { id: OperationButtonType.RETURN, displayName: '退回', enable: false }
  620. ]
  621. // 发起人的按钮权限。暂时定死,不可以编辑
  622. export const START_USER_BUTTON_SETTING: ButtonSetting[] = [
  623. { id: OperationButtonType.APPROVE, displayName: '提交', enable: true },
  624. { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false },
  625. { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false },
  626. { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false },
  627. { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false },
  628. { id: OperationButtonType.RETURN, displayName: '退回', enable: false }
  629. ]
  630. export const MULTI_LEVEL_DEPT: DictDataVO = [
  631. { label: '第 1 级部门', value: 1 },
  632. { label: '第 2 级部门', value: 2 },
  633. { label: '第 3 级部门', value: 3 },
  634. { label: '第 4 级部门', value: 4 },
  635. { label: '第 5 级部门', value: 5 },
  636. { label: '第 6 级部门', value: 6 },
  637. { label: '第 7 级部门', value: 7 },
  638. { label: '第 8 级部门', value: 8 },
  639. { label: '第 9 级部门', value: 9 },
  640. { label: '第 10 级部门', value: 10 },
  641. { label: '第 11 级部门', value: 11 },
  642. { label: '第 12 级部门', value: 12 },
  643. { label: '第 13 级部门', value: 13 },
  644. { label: '第 14 级部门', value: 14 },
  645. { label: '第 15 级部门', value: 15 }
  646. ]
  647. /**
  648. * 流程实例的变量枚举
  649. */
  650. export enum ProcessVariableEnum {
  651. /**
  652. * 发起用户 ID
  653. */
  654. START_USER_ID = 'PROCESS_START_USER_ID',
  655. /**
  656. * 发起时间
  657. */
  658. START_TIME = 'PROCESS_START_TIME',
  659. /**
  660. * 流程定义名称
  661. */
  662. PROCESS_DEFINITION_NAME = 'PROCESS_DEFINITION_NAME'
  663. }
  664. /**
  665. * 延迟设置
  666. */
  667. export type DelaySetting = {
  668. // 延迟类型
  669. delayType: number
  670. // 延迟时间表达式
  671. delayTime: string
  672. }
  673. /**
  674. * 延迟类型
  675. */
  676. export enum DelayTypeEnum {
  677. /**
  678. * 固定时长
  679. */
  680. FIXED_TIME_DURATION = 1,
  681. /**
  682. * 固定日期时间
  683. */
  684. FIXED_DATE_TIME = 2
  685. }
  686. export const DELAY_TYPE = [
  687. { label: '固定时长', value: DelayTypeEnum.FIXED_TIME_DURATION },
  688. { label: '固定日期', value: DelayTypeEnum.FIXED_DATE_TIME }
  689. ]
  690. /**
  691. * 路由分支结构定义
  692. */
  693. export type RouterSetting = {
  694. nodeId: string
  695. conditionType: ConditionType
  696. conditionExpression: string
  697. conditionGroups: ConditionGroup
  698. }
  699. // ==================== 触发器相关定义 ====================
  700. /**
  701. * 触发器节点结构定义
  702. */
  703. export type TriggerSetting = {
  704. type: TriggerTypeEnum
  705. httpRequestSetting?: HttpRequestTriggerSetting
  706. formSettings?: FormTriggerSetting[]
  707. }
  708. /**
  709. * 触发器类型枚举
  710. */
  711. export enum TriggerTypeEnum {
  712. /**
  713. * 发送 HTTP 请求触发器
  714. */
  715. HTTP_REQUEST = 1,
  716. // TODO @jason:要不把 FORM_UPDATE、FORM_DELETE 调整从 10、11 这样?
  717. /**
  718. * 表单数据更新触发器
  719. */
  720. FORM_UPDATE = 2,
  721. /**
  722. * 表单数据删除触发器
  723. */
  724. FORM_DELETE = 3,
  725. // TODO @jason:1)HTTP_CALLBACK 这个枚举值?然后,相关注释,朝着“HTTP 回调”走;2)枚举值改成 2?
  726. /**
  727. * 发起异步 HTTP 请求
  728. */
  729. ASYNC_HTTP_REQUEST = 4
  730. }
  731. /**
  732. * HTTP 请求触发器结构定义
  733. */
  734. export type HttpRequestTriggerSetting = {
  735. // 请求 URL
  736. url: string
  737. // 请求头参数设置
  738. header?: HttpRequestParam[]
  739. // 请求体参数设置
  740. body?: HttpRequestParam[]
  741. // 请求响应设置
  742. response?: Record<string, string>[]
  743. }
  744. /**
  745. * 流程表单触发器配置结构定义
  746. */
  747. export type FormTriggerSetting = {
  748. // 条件类型
  749. conditionType?: ConditionType
  750. // 条件表达式
  751. conditionExpression?: string
  752. // 条件组
  753. conditionGroups?: ConditionGroup
  754. // 更新表单字段配置
  755. updateFormFields?: Record<string, any>
  756. // 删除表单字段配置
  757. deleteFields?: string[]
  758. }
  759. export const TRIGGER_TYPES: DictDataVO[] = [
  760. { label: 'HTTP 请求', value: TriggerTypeEnum.HTTP_REQUEST },
  761. { label: '异步 HTTP 请求', value: TriggerTypeEnum.ASYNC_HTTP_REQUEST },
  762. { label: '修改表单数据', value: TriggerTypeEnum.FORM_UPDATE },
  763. { label: '删除表单数据', value: TriggerTypeEnum.FORM_DELETE }
  764. ]
  765. /**
  766. * 子流程节点结构定义
  767. */
  768. export type ChildProcessSetting = {
  769. calledProcessDefinitionKey: string
  770. calledProcessDefinitionName: string
  771. async: boolean,
  772. inVariables?: IOParameter[],
  773. outVariables?: IOParameter[],
  774. skipStartUserNode: boolean,
  775. startUserSetting: StartUserSetting,
  776. timeoutSetting: TimeoutSetting,
  777. }
  778. export type IOParameter = {
  779. source: string
  780. sourceExpression: string
  781. target: string
  782. targetExpression: string
  783. }
  784. export type StartUserSetting = {
  785. type: number
  786. formField?: string
  787. emptyType?: number
  788. }
  789. export type TimeoutSetting = {
  790. enable: boolean,
  791. type?: DelayTypeEnum,
  792. timeExpression?: string,
  793. }