addNode.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div class="add-node-btn-box">
  3. <div class="add-node-btn">
  4. <el-popover placement="right-start" :width="270" trigger="click" :hide-after="0" :show-after="0">
  5. <template #reference>
  6. <el-button v-if="!disabled" type="primary" icon="plus" circle></el-button>
  7. </template>
  8. <div class="add-node-popover-body">
  9. <ul>
  10. <li>
  11. <el-icon style="color: var(--el-color-warning)" @click="addType(1)"><user-filled /></el-icon>
  12. <p>审批节点</p>
  13. </li>
  14. <li>
  15. <el-icon style="color: var(--el-color-primary)" @click="addType(2)"><promotion /></el-icon>
  16. <p>抄送节点</p>
  17. </li>
  18. <li>
  19. <el-icon style="color: var(--el-color-success)" @click="addType(4)"><share /></el-icon>
  20. <p>条件分支</p>
  21. </li>
  22. <li>
  23. <el-icon style="color: var(--el-color-danger)" @click="addType(6)"><Clock /></el-icon>
  24. <p>延迟等待</p>
  25. </li>
  26. <li>
  27. <el-icon style="color: #2bb58b" @click="addType(7)"><SetUp /></el-icon>
  28. <p>触发器</p>
  29. </li>
  30. <li>
  31. <el-icon style="color: #646cff" @click="addType(8)"><share /></el-icon>
  32. <p>子流程</p>
  33. </li>
  34. </ul>
  35. </div>
  36. </el-popover>
  37. </div>
  38. </div>
  39. </template>
  40. <script>
  41. export default {
  42. props: {
  43. modelValue: { type: Object, default: () => {} },
  44. disabled: {
  45. type: Boolean,
  46. default: false
  47. }
  48. },
  49. data() {
  50. return {}
  51. },
  52. mounted() {},
  53. methods: {
  54. addType(type) {
  55. let node = {}
  56. if (type === 1) {
  57. node = {
  58. nodeName: '审核人',
  59. type: 1, //节点类型
  60. setType: 1, //审核人类型
  61. nodeAssigneeList: [], //审核人成员 & 角色
  62. examineLevel: 1, //指定主管层级
  63. directorLevel: 1, //自定义连续主管审批层级
  64. selectMode: 1, //发起人自选类型
  65. termAuto: false, //审批期限超时自动审批
  66. remind: false, // 审批提醒
  67. term: 0, //审批期限
  68. termMode: 1, //审批期限超时后执行类型
  69. examineMode: 1, //多人审批时审批方式
  70. approveSelf: 0, //审批人与提交人为同一人时
  71. directorMode: 0, //连续主管审批方式
  72. childNode: this.modelValue,
  73. typeOfApprover: '1', // 审批类型 1:人工审批 2:自动通过 3:自动拒绝
  74. actionUrl: [] // 子表单, 到时候缓存后台需要的 'id:name'格式
  75. }
  76. } else if (type === 2) {
  77. node = {
  78. nodeName: '抄送人',
  79. type: 2,
  80. allowSelection: true,
  81. nodeAssigneeList: [],
  82. childNode: this.modelValue
  83. }
  84. } else if (type === 4) {
  85. node = {
  86. nodeName: '条件路由',
  87. type: 4,
  88. conditionNodes: [
  89. {
  90. nodeName: '条件1',
  91. type: 3,
  92. priorityLevel: 1,
  93. conditionMode: 1,
  94. conditionList: []
  95. },
  96. {
  97. nodeName: '条件2',
  98. type: 3,
  99. priorityLevel: 2,
  100. conditionMode: 1,
  101. conditionList: []
  102. }
  103. ],
  104. childNode: this.modelValue
  105. }
  106. } else if (type === 6) {
  107. node = {
  108. nodeName: '延时处理',
  109. type: 6,
  110. delayType: '1', // 延时类型
  111. // 一小时后触发 {"time": "1:h"} 单位【 d 天 h 时 m 分 】 发起后一小时三十分后触发 {"time": "01:30:00"}
  112. extendConfig: {
  113. time: '1:m'
  114. },
  115. childNode: this.modelValue
  116. }
  117. } else if (type === 7) {
  118. node = {
  119. nodeName: '触发器',
  120. type: 7,
  121. delayType: '1', // 延时类型
  122. triggerType: '1', // 触发器类型: 立即执行('1') 延时执行('2')
  123. // 一小时后触发 {"time": "1:h"} 单位【 d 天 h 时 m 分 】 发起后一小时三十分后触发 {"time": "01:30:00"}
  124. extendConfig: {
  125. time: '', // 立即执行 time不用设置
  126. args: '',
  127. trigger: ''
  128. },
  129. childNode: this.modelValue
  130. }
  131. } else if (type === 8) {
  132. node = {
  133. nodeName: '子流程',
  134. type: 8,
  135. delayType: '1', // 延时类型
  136. triggerType: '1', // 触发器类型: 立即执行('1') 延时执行('2')
  137. // 一小时后触发 {"time": "1:h"} 单位【 d 天 h 时 m 分 】 发起后一小时三十分后触发 {"time": "01:30:00"}
  138. extendConfig: {
  139. time: '', // 立即执行 time不用设置
  140. args: '',
  141. trigger: ''
  142. },
  143. childNode: this.modelValue
  144. }
  145. }
  146. node.nodeKey = 'flk' + Date.now()
  147. this.$emit('update:modelValue', node)
  148. }
  149. }
  150. }
  151. </script>
  152. <style></style>