consts.ts 18 KB

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