adtec-core-package 2.4.3 → 2.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/.editorconfig +6 -6
  2. package/.prettierrc.json +7 -7
  3. package/.vscode/extensions.json +8 -8
  4. package/README.en.md +36 -36
  5. package/README.md +39 -39
  6. package/env.d.ts +1 -1
  7. package/eslint.config.js +56 -56
  8. package/index.html +13 -13
  9. package/package.json +71 -71
  10. package/src/App.vue +9 -9
  11. package/src/api/BasicApi.ts +26 -26
  12. package/src/api/DeptInfoApi.ts +19 -19
  13. package/src/api/DocumentApi.ts +27 -27
  14. package/src/api/EmployeeInfoApi.ts +17 -17
  15. package/src/api/SysDictCacheApi.ts +29 -29
  16. package/src/api/SysUserApi.ts +35 -35
  17. package/src/api/framework.ts +12 -12
  18. package/src/api/workflow/workflow.ts +31 -31
  19. package/src/api/workflow/workflowCommentApi.ts +23 -23
  20. package/src/api/workflow/workflowInstApi.ts +72 -72
  21. package/src/assets/base.css +86 -86
  22. package/src/assets/logo.svg +1 -1
  23. package/src/assets/main.css +35 -35
  24. package/src/assets/style/ant.scss +19 -19
  25. package/src/assets/style/index.less +180 -180
  26. package/src/assets/style/transition.scss +49 -49
  27. package/src/components/ElCardList.vue +64 -64
  28. package/src/components/ElFlex/ElFlex.vue +297 -297
  29. package/src/components/ElTotalTools.vue +70 -70
  30. package/src/components/OperationAuth/operationAuth.vue +43 -43
  31. package/src/components/RichTextEditor/RichTextEditor.vue +442 -442
  32. package/src/components/Scrollbars/ElScrollbars.vue +21 -21
  33. package/src/components/Search/ElIconSearch.vue +267 -267
  34. package/src/components/Search/ElSearch.vue +154 -154
  35. package/src/components/SelectInDicators/SelectInDicators.vue +225 -225
  36. package/src/components/SelectInDicators/api/DataIndicatorsApi.ts +28 -28
  37. package/src/components/SelectInDicators/interface/IComIndex.ts +26 -26
  38. package/src/components/SelectInDicators/interface/IComIndexAttri.ts +18 -18
  39. package/src/components/Table/ElTableColumnDynamic.vue +25 -25
  40. package/src/components/Table/ElTableColumnEdit.vue +265 -265
  41. package/src/components/Table/ElTableTool.ts +37 -37
  42. package/src/components/Title/ElTitle.vue +53 -53
  43. package/src/components/autoToolTip/ElAutoToolTip.vue +62 -62
  44. package/src/components/baseEcharts/index.vue +48 -48
  45. package/src/components/bpmntree/api/modules/role.ts +31 -31
  46. package/src/components/bpmntree/api/modules/user.ts +17 -17
  47. package/src/components/bpmntree/components/AdvancedFilter/Operator.vue +112 -112
  48. package/src/components/bpmntree/components/AdvancedFilter/Trigger.vue +23 -23
  49. package/src/components/bpmntree/components/AdvancedFilter/index.vue +230 -230
  50. package/src/components/bpmntree/components/AdvancedFilter/type.ts +20 -20
  51. package/src/components/bpmntree/components/FlowIcon/index.scss +7 -7
  52. package/src/components/bpmntree/components/FlowIcon/index.tsx +68 -68
  53. package/src/components/bpmntree/components/Render/render.vue +90 -90
  54. package/src/components/bpmntree/components/Render/type.ts +12 -12
  55. package/src/components/bpmntree/components/RoleSelector/RolePicker.vue +264 -264
  56. package/src/components/bpmntree/components/RoleSelector/RoleTag.vue +48 -48
  57. package/src/components/bpmntree/components/RoleSelector/index.vue +113 -113
  58. package/src/components/bpmntree/components/UserSelector/UserTag.vue +73 -73
  59. package/src/components/bpmntree/components/UserSelector/index.vue +140 -140
  60. package/src/components/bpmntree/hooks/useDraggableScroll.ts +44 -44
  61. package/src/components/bpmntree/typings/index.d.ts +1 -1
  62. package/src/components/bpmntree/views/flowDesign/index.vue +653 -653
  63. package/src/components/bpmntree/views/flowDesign/nodes/Add.vue +184 -184
  64. package/src/components/bpmntree/views/flowDesign/nodes/ApprovalNode.vue +127 -127
  65. package/src/components/bpmntree/views/flowDesign/nodes/CcNode.vue +93 -93
  66. package/src/components/bpmntree/views/flowDesign/nodes/ConcurrentNode.vue +61 -61
  67. package/src/components/bpmntree/views/flowDesign/nodes/ConditionNode.vue +60 -60
  68. package/src/components/bpmntree/views/flowDesign/nodes/EndNode.vue +80 -80
  69. package/src/components/bpmntree/views/flowDesign/nodes/ExclusiveNode.vue +20 -20
  70. package/src/components/bpmntree/views/flowDesign/nodes/GatewayNode.vue +173 -173
  71. package/src/components/bpmntree/views/flowDesign/nodes/InclusiveNode.vue +20 -20
  72. package/src/components/bpmntree/views/flowDesign/nodes/JumpNode.vue +49 -49
  73. package/src/components/bpmntree/views/flowDesign/nodes/Node.vue +346 -346
  74. package/src/components/bpmntree/views/flowDesign/nodes/NotifyNode.vue +115 -115
  75. package/src/components/bpmntree/views/flowDesign/nodes/ParallelNode.vue +20 -20
  76. package/src/components/bpmntree/views/flowDesign/nodes/PopoverView.vue +78 -78
  77. package/src/components/bpmntree/views/flowDesign/nodes/StartNode.vue +84 -84
  78. package/src/components/bpmntree/views/flowDesign/nodes/TimerNode.vue +50 -50
  79. package/src/components/bpmntree/views/flowDesign/nodes/TreeNode.vue +45 -45
  80. package/src/components/bpmntree/views/flowDesign/nodes/type.ts +204 -204
  81. package/src/components/bpmntree/views/flowDesign/panels/ApprovalPanel.vue +581 -581
  82. package/src/components/bpmntree/views/flowDesign/panels/AssigneePanel.vue +120 -120
  83. package/src/components/bpmntree/views/flowDesign/panels/CcPanel.vue +99 -99
  84. package/src/components/bpmntree/views/flowDesign/panels/ConditionPanel.vue +41 -41
  85. package/src/components/bpmntree/views/flowDesign/panels/EndPanel.vue +18 -18
  86. package/src/components/bpmntree/views/flowDesign/panels/ExecutionListeners.vue +110 -110
  87. package/src/components/bpmntree/views/flowDesign/panels/JumpPanel.vue +32 -32
  88. package/src/components/bpmntree/views/flowDesign/panels/NotifyPanel.vue +101 -101
  89. package/src/components/bpmntree/views/flowDesign/panels/ParaPanel.vue +248 -248
  90. package/src/components/bpmntree/views/flowDesign/panels/StartPanel.vue +160 -160
  91. package/src/components/bpmntree/views/flowDesign/panels/TaskListeners.vue +110 -110
  92. package/src/components/bpmntree/views/flowDesign/panels/TimerPanel.vue +51 -51
  93. package/src/components/bpmntree/views/flowDesign/panels/index.vue +85 -85
  94. package/src/components/bpmntree/views/view.index.vue +291 -291
  95. package/src/components/business/comp.selectUser.vue +60 -60
  96. package/src/components/business/comp.userForm.vue +311 -311
  97. package/src/components/business/userSelect.vue +413 -413
  98. package/src/components/icon/ElIconBtn.vue +243 -243
  99. package/src/components/icon/ElIcons.vue +38 -38
  100. package/src/components/kFrame/IframeOptions.ts +116 -116
  101. package/src/components/kFrame/KFrame.vue +161 -161
  102. package/src/components/tooltip/index.ts +11 -11
  103. package/src/components/tooltip/src/tooltip.ts +518 -518
  104. package/src/components/upload/ElUploads.vue +364 -364
  105. package/src/components/upload/FileView.vue +214 -214
  106. package/src/components/upload/FileViewComponents.vue +56 -56
  107. package/src/components/vxeGrid/index.vue +36 -36
  108. package/src/components/workflow/TaskOperation.vue +247 -247
  109. package/src/components/workflow/WorkflowTodoDialog.vue +91 -89
  110. package/src/components/workflow/components/AddOrMinusMultiDialog.vue +159 -159
  111. package/src/components/workflow/components/CheckDialog.vue +367 -367
  112. package/src/components/workflow/components/ProcessDetailComp.vue +157 -157
  113. package/src/components/workflow/components/ProcessDetailDialog.vue +129 -129
  114. package/src/components/workflow/components/ProcessInstance.vue +117 -117
  115. package/src/components/workflow/components/ProcessInstanceStep.vue +378 -371
  116. package/src/components/workflow/components/SelectAssigneeDialog.vue +109 -109
  117. package/src/components/workflow/components/SelectReturnActivityDialog.vue +104 -104
  118. package/src/config/ElementPlusConfig.ts +95 -95
  119. package/src/config/VxeTableConfig.ts +254 -254
  120. package/src/css/elementUI/affix.scss +7 -7
  121. package/src/css/elementUI/alert.scss +115 -115
  122. package/src/css/elementUI/anchor-link.scss +41 -41
  123. package/src/css/elementUI/anchor.scss +88 -88
  124. package/src/css/elementUI/aside.scss +8 -8
  125. package/src/css/elementUI/autocomplete.scss +89 -89
  126. package/src/css/elementUI/avatar.scss +55 -55
  127. package/src/css/elementUI/backtop.scss +29 -29
  128. package/src/css/elementUI/badge.scss +58 -58
  129. package/src/css/elementUI/base.scss +3 -3
  130. package/src/css/elementUI/breadcrumb.scss +62 -62
  131. package/src/css/elementUI/button-group.scss +80 -80
  132. package/src/css/elementUI/button.scss +304 -304
  133. package/src/css/elementUI/calendar.scss +80 -80
  134. package/src/css/elementUI/card.scss +45 -45
  135. package/src/css/elementUI/carousel-item.scss +58 -58
  136. package/src/css/elementUI/carousel.scss +188 -188
  137. package/src/css/elementUI/cascader-panel.scss +138 -138
  138. package/src/css/elementUI/cascader.scss +230 -230
  139. package/src/css/elementUI/check-tag.scss +60 -60
  140. package/src/css/elementUI/checkbox-button.scss +140 -140
  141. package/src/css/elementUI/checkbox-group.scss +7 -7
  142. package/src/css/elementUI/checkbox.scss +298 -298
  143. package/src/css/elementUI/col.scss +48 -48
  144. package/src/css/elementUI/collapse.scss +70 -70
  145. package/src/css/elementUI/color/index.scss +20 -20
  146. package/src/css/elementUI/color-picker.scss +392 -392
  147. package/src/css/elementUI/common/popup.scss +47 -47
  148. package/src/css/elementUI/common/transition.scss +122 -122
  149. package/src/css/elementUI/common/var.scss +1549 -1549
  150. package/src/css/elementUI/container.scss +14 -14
  151. package/src/css/elementUI/dark/css-vars.scss +39 -39
  152. package/src/css/elementUI/dark/var.scss +222 -222
  153. package/src/css/elementUI/date-picker/date-picker.scss +110 -110
  154. package/src/css/elementUI/date-picker/date-range-picker.scss +113 -113
  155. package/src/css/elementUI/date-picker/date-table.scss +158 -158
  156. package/src/css/elementUI/date-picker/month-table.scss +112 -112
  157. package/src/css/elementUI/date-picker/picker-panel.scss +131 -131
  158. package/src/css/elementUI/date-picker/picker.scss +219 -219
  159. package/src/css/elementUI/date-picker/time-picker.scss +90 -90
  160. package/src/css/elementUI/date-picker/time-range-picker.scss +33 -33
  161. package/src/css/elementUI/date-picker/time-spinner.scss +111 -111
  162. package/src/css/elementUI/date-picker/year-table.scss +108 -108
  163. package/src/css/elementUI/date-picker.scss +9 -9
  164. package/src/css/elementUI/descriptions-item.scss +73 -73
  165. package/src/css/elementUI/descriptions.scss +152 -152
  166. package/src/css/elementUI/dialog.scss +199 -199
  167. package/src/css/elementUI/display.scss +12 -12
  168. package/src/css/elementUI/divider.scss +48 -48
  169. package/src/css/elementUI/drawer.scss +164 -164
  170. package/src/css/elementUI/dropdown.scss +208 -208
  171. package/src/css/elementUI/empty.scss +49 -49
  172. package/src/css/elementUI/footer.scss +12 -12
  173. package/src/css/elementUI/form.scss +243 -243
  174. package/src/css/elementUI/header.scss +12 -12
  175. package/src/css/elementUI/icon.scss +45 -45
  176. package/src/css/elementUI/image-viewer.scss +139 -139
  177. package/src/css/elementUI/image.scss +49 -49
  178. package/src/css/elementUI/index.scss +110 -110
  179. package/src/css/elementUI/input-number.scss +178 -178
  180. package/src/css/elementUI/input.scss +478 -478
  181. package/src/css/elementUI/link.scss +90 -90
  182. package/src/css/elementUI/loading.scss +104 -104
  183. package/src/css/elementUI/main.scss +14 -14
  184. package/src/css/elementUI/mention.scss +88 -88
  185. package/src/css/elementUI/menu.scss +339 -339
  186. package/src/css/elementUI/message-box.scss +213 -213
  187. package/src/css/elementUI/message.scss +98 -98
  188. package/src/css/elementUI/mixins/_button.scss +165 -165
  189. package/src/css/elementUI/mixins/_col.scss +33 -33
  190. package/src/css/elementUI/mixins/_var.scss +67 -67
  191. package/src/css/elementUI/mixins/config.scss +5 -5
  192. package/src/css/elementUI/mixins/function.scss +88 -88
  193. package/src/css/elementUI/mixins/mixins.scss +237 -237
  194. package/src/css/elementUI/mixins/utils.scss +39 -39
  195. package/src/css/elementUI/notification.scss +104 -104
  196. package/src/css/elementUI/option-group.scss +33 -33
  197. package/src/css/elementUI/option.scss +71 -71
  198. package/src/css/elementUI/overlay.scss +17 -17
  199. package/src/css/elementUI/page-header.scss +60 -60
  200. package/src/css/elementUI/pagination.scss +238 -238
  201. package/src/css/elementUI/popconfirm.scss +16 -16
  202. package/src/css/elementUI/popover.scss +61 -61
  203. package/src/css/elementUI/popper.scss +106 -106
  204. package/src/css/elementUI/progress.scss +179 -179
  205. package/src/css/elementUI/radio-button.scss +169 -169
  206. package/src/css/elementUI/radio-group.scss +9 -9
  207. package/src/css/elementUI/radio.scss +215 -215
  208. package/src/css/elementUI/rate.scss +108 -108
  209. package/src/css/elementUI/reset.scss +98 -98
  210. package/src/css/elementUI/result.scss +57 -57
  211. package/src/css/elementUI/row.scss +35 -35
  212. package/src/css/elementUI/scrollbar.scss +97 -97
  213. package/src/css/elementUI/segmented.scss +183 -183
  214. package/src/css/elementUI/select-dropdown-v2.scss +1 -1
  215. package/src/css/elementUI/select-dropdown.scss +57 -57
  216. package/src/css/elementUI/select-v2.scss +4 -4
  217. package/src/css/elementUI/select.scss +253 -253
  218. package/src/css/elementUI/skeleton-item.scss +83 -83
  219. package/src/css/elementUI/skeleton.scss +44 -44
  220. package/src/css/elementUI/slider.scss +212 -212
  221. package/src/css/elementUI/space.scss +20 -20
  222. package/src/css/elementUI/spinner.scss +43 -43
  223. package/src/css/elementUI/statistic.scss +35 -35
  224. package/src/css/elementUI/step.scss +316 -316
  225. package/src/css/elementUI/steps.scss +21 -21
  226. package/src/css/elementUI/switch.scss +300 -300
  227. package/src/css/elementUI/table-column.scss +98 -98
  228. package/src/css/elementUI/table-v2.scss +236 -236
  229. package/src/css/elementUI/table.scss +697 -697
  230. package/src/css/elementUI/tabs.scss +659 -659
  231. package/src/css/elementUI/tag.scss +181 -181
  232. package/src/css/elementUI/text.scss +51 -51
  233. package/src/css/elementUI/time-picker.scss +5 -5
  234. package/src/css/elementUI/time-select.scss +37 -37
  235. package/src/css/elementUI/timeline-item.scss +84 -84
  236. package/src/css/elementUI/timeline.scss +46 -46
  237. package/src/css/elementUI/tooltip-v2.scss +95 -95
  238. package/src/css/elementUI/tour.scss +187 -187
  239. package/src/css/elementUI/transfer.scss +203 -203
  240. package/src/css/elementUI/tree-select.scss +41 -41
  241. package/src/css/elementUI/tree.scss +134 -134
  242. package/src/css/elementUI/upload.scss +654 -654
  243. package/src/css/elementUI/var.scss +87 -87
  244. package/src/css/elementUI/virtual-list.scss +40 -40
  245. package/src/css/vxeTableUI/all.scss +9 -9
  246. package/src/css/vxeTableUI/base.scss +16 -16
  247. package/src/css/vxeTableUI/components/colgroup.scss +0 -0
  248. package/src/css/vxeTableUI/components/column.scss +0 -0
  249. package/src/css/vxeTableUI/components/grid.scss +83 -83
  250. package/src/css/vxeTableUI/components/icon.scss +1017 -1017
  251. package/src/css/vxeTableUI/components/iconTable.scss +205 -205
  252. package/src/css/vxeTableUI/components/old-icon.scss +715 -715
  253. package/src/css/vxeTableUI/components/table-module/all.scss +6 -6
  254. package/src/css/vxeTableUI/components/table-module/custom.scss +490 -490
  255. package/src/css/vxeTableUI/components/table-module/edit.scss +0 -0
  256. package/src/css/vxeTableUI/components/table-module/export.scss +130 -130
  257. package/src/css/vxeTableUI/components/table-module/filter.scss +127 -127
  258. package/src/css/vxeTableUI/components/table-module/keyboard.scss +0 -0
  259. package/src/css/vxeTableUI/components/table-module/menu.scss +85 -85
  260. package/src/css/vxeTableUI/components/table-module/validator.scss +0 -0
  261. package/src/css/vxeTableUI/components/table.scss +2256 -2256
  262. package/src/css/vxeTableUI/components/toolbar.scss +99 -99
  263. package/src/css/vxeTableUI/components/ui.scss +0 -0
  264. package/src/css/vxeTableUI/components/v-x-e-table.scss +0 -0
  265. package/src/css/vxeTableUI/cssvar.scss +2 -2
  266. package/src/css/vxeTableUI/default.scss +2 -2
  267. package/src/css/vxeTableUI/helpers/baseMixin.scss +82 -82
  268. package/src/css/vxeTableUI/icon/iconfont.ttf +0 -0
  269. package/src/css/vxeTableUI/icon/iconfont.woff +0 -0
  270. package/src/css/vxeTableUI/icon/iconfont.woff2 +0 -0
  271. package/src/css/vxeTableUI/index.scss +4 -4
  272. package/src/css/vxeTableUI/modules.scss +5 -5
  273. package/src/css/vxeTableUI/theme/base.scss +88 -88
  274. package/src/css/vxeTableUI/theme/dark.scss +46 -46
  275. package/src/css/vxeTableUI/theme/light.scss +41 -41
  276. package/src/css/vxeTableUI/variable.scss +41 -41
  277. package/src/directives/vKeydown.ts +91 -91
  278. package/src/hooks/useDictHooks.ts +119 -119
  279. package/src/hooks/useEcharts.ts +58 -58
  280. package/src/hooks/useFileView.ts +11 -11
  281. package/src/hooks/useListenerHooks.ts +137 -137
  282. package/src/hooks/useMessageHooks.ts +132 -132
  283. package/src/hooks/useOpenNewMenu.ts +30 -30
  284. package/src/hooks/usePermissionHooks.ts +139 -139
  285. package/src/hooks/usePermissionToolHooks.ts +21 -21
  286. package/src/hooks/useResetRefHooks.ts +18 -18
  287. package/src/hooks/userWorkflowHooks.ts +112 -106
  288. package/src/hooks/workflowTodo.ts +85 -85
  289. package/src/interface/BaseEntity.ts +30 -30
  290. package/src/interface/IMdmDept.ts +84 -84
  291. package/src/interface/IMdmEmployee.ts +153 -153
  292. package/src/interface/IMdmEmployeeQuery.ts +21 -21
  293. package/src/interface/IMdmOrg.ts +29 -29
  294. package/src/interface/IMdmOrgQuery.ts +13 -13
  295. package/src/interface/IOrgDeptInfo.ts +12 -12
  296. package/src/interface/ISortList.ts +6 -6
  297. package/src/interface/ISysDictDataCacheVo.ts +46 -46
  298. package/src/interface/ISysDictType.ts +37 -37
  299. package/src/interface/ISysMenuDataVo.ts +22 -22
  300. package/src/interface/ISysMenuInfoVo.ts +83 -83
  301. package/src/interface/ISysMenuOperationVo.ts +21 -21
  302. package/src/interface/ISysUploadFiles.ts +16 -16
  303. package/src/interface/ISysUserInfo.ts +70 -70
  304. package/src/interface/IUserBaseInfo.ts +90 -90
  305. package/src/interface/IUserPermissionVo.ts +44 -44
  306. package/src/interface/IVxeTable.ts +1 -1
  307. package/src/interface/Message.ts +73 -73
  308. package/src/interface/PageData.ts +17 -17
  309. package/src/interface/ResponseData.ts +16 -16
  310. package/src/interface/dictMapType.ts +11 -11
  311. package/src/interface/enum/FlexEnum.ts +85 -85
  312. package/src/interface/enum/MessageEnum.ts +41 -41
  313. package/src/interface/workflow/IWfProcessDefVo.ts +14 -14
  314. package/src/interface/workflow/IWfReturnNodeVo.ts +16 -16
  315. package/src/interface/workflow/IWfTaskAskVo.ts +66 -66
  316. package/src/interface/workflow/IWfTaskQueryVo.ts +30 -30
  317. package/src/interface/workflow/IWfTaskUsersVo.ts +21 -21
  318. package/src/interface/workflow/IWfTaskVo.ts +192 -188
  319. package/src/interface/workflow/IWorkflowCommentVo.ts +24 -24
  320. package/src/interface/workflow/workflow.ts +22 -22
  321. package/src/main.ts +14 -14
  322. package/src/mixin/globalMixin.ts +48 -48
  323. package/src/packages/index.ts +18 -18
  324. package/src/packages/text.vue +13 -13
  325. package/src/plugins/echartsConfig.ts +74 -74
  326. package/src/plugins/plugins.ts +12 -12
  327. package/src/plugins/renderDialog.ts +74 -74
  328. package/src/router/index.ts +23 -23
  329. package/src/stores/dictStore.ts +51 -51
  330. package/src/stores/messageStore.ts +49 -49
  331. package/src/stores/permissionStore.ts +112 -112
  332. package/src/stores/storeConfig.ts +23 -23
  333. package/src/stores/userInfoStore.ts +31 -31
  334. package/src/utils/AxiosConfig.ts +226 -226
  335. package/src/utils/FrameworkUtils.ts +370 -370
  336. package/src/utils/commonUtils.ts +335 -335
  337. package/src/utils/encrypt.ts +18 -18
  338. package/src/utils/modules.ts +8 -8
  339. package/src/utils/request.ts +76 -76
  340. package/src/utils/tree.ts +50 -50
  341. package/tsconfig.app.json +12 -12
  342. package/tsconfig.json +11 -11
  343. package/tsconfig.node.json +18 -18
  344. package/vite.config.ts +38 -38
@@ -1,371 +1,378 @@
1
- <!--创建人 xux-->
2
- <!--说明: ProcessInstanceStep-->
3
- <!--创建时间: 2024/11/20 上午10:49-->
4
- <!--修改时间: 2024/11/20 上午10:49-->
5
- <script setup lang="ts">
6
- import workbenchInstApi from '../../../api/workflow/workflowInstApi'
7
- import workflowcommentApi from '../../../api/workflow/workflowCommentApi'
8
- import type { IWorkflowCommentVo } from '../../../interface/workflow/IWorkflowCommentVo'
9
- import { ElMessage, ElMessageBox } from 'element-plus'
10
- import { ref } from 'vue'
11
- import type { IWfProcessInstVo, IWfTaskVo } from '../../../interface/workflow/IWfTaskVo'
12
- import ElUploads from '../../../components/upload/ElUploads.vue'
13
- import type { ISysUploadFiles } from '../../../interface/ISysUploadFiles'
14
- import documentApi from '../../../api/DocumentApi'
15
- import frameworkUtils from '../../../utils/FrameworkUtils.ts'
16
- import workflowApi from 'adtec-core-package/src/api/workflow/workflow'
17
- import type { SysWorkflowVerType } from 'adtec-core-package/src/interface/workflow/workflow'
18
- import { userInfoStore } from 'adtec-core-package/src/stores/userInfoStore'
19
-
20
- const userInfo = userInfoStore()
21
- const props = withDefaults(
22
- defineProps<{
23
- procInstId?: string
24
- source?: string
25
- }>(),
26
- {
27
- procInstId: '',
28
- source: ''
29
- }
30
- )
31
- const emit = defineEmits(['viewDetail'])
32
- const loading = ref<boolean>(false)
33
- const wfProcessInstVo = ref<IWfProcessInstVo>()
34
- const ver = ref<SysWorkflowVerType>()
35
- const techComment = ref<IWorkflowCommentVo>()
36
-
37
- interface IWfTaskGroup {
38
- taskName: string
39
- taskDefKey: string
40
- parentExecutionId: string
41
- createTime: string
42
- finishTime: string
43
- tasks: IWfTaskVo[]
44
- }
45
-
46
- const taskGroup = ref<IWfTaskGroup[]>()
47
- const taskFiles = ref<ISysUploadFiles[]>([])
48
- const init = async (procDefId: string, procInstId: string) => {
49
- if (!procInstId) return
50
- try {
51
- loading.value = true
52
- // 获取流程实例信息
53
- ver.value = await workflowApi.getVerInfoByProcessDefId(procDefId)
54
- wfProcessInstVo.value = await workbenchInstApi.getProcessTaskList(procInstId)
55
- taskGroup.value = []
56
- if (wfProcessInstVo.value?.hisTasks?.length) {
57
- setTaskGroup(wfProcessInstVo.value.hisTasks || [])
58
- if (wfProcessInstVo.value.hisTasks.length > 0) {
59
- await documentApi
60
- .getUpLoadFilesByBussinessIds(
61
- wfProcessInstVo.value.hisTasks
62
- .filter((item) => item.comment !== '***' && item.taskDefKey !== 'tech_approval')
63
- .map((item) => item.taskId)
64
- )
65
- .then((res) => {
66
- taskFiles.value = res
67
- })
68
- .catch((err) => {
69
- frameworkUtils.messageError(err)
70
- })
71
- }
72
- }
73
- if (wfProcessInstVo.value?.activeTasks?.length) {
74
- setTaskGroup(wfProcessInstVo.value.activeTasks || [])
75
- }
76
- if (
77
- taskGroup.value.length &&
78
- ver.value.workflowCode === 'CompanyProjectApplyWorkflow' &&
79
- ver.value.version === 4
80
- ) {
81
- if (taskGroup.value.length) {
82
- // 判断taskGroup.value中的专家预审的位置index
83
- const expertPretrialIndex = taskGroup.value.findIndex(
84
- (item) => item.taskName === '专家预审'
85
- )
86
- if (expertPretrialIndex !== -1) {
87
- debugger
88
- //判断是否是最后一个节点
89
- if (expertPretrialIndex < taskGroup.value.length - 1 || wfProcessInstVo.value?.activeTasks?.length === 0) {
90
- //拿到专家预审节点
91
- const expertPretrialTask = taskGroup.value[expertPretrialIndex]
92
- //获取保存的评论
93
- techComment.value = await workflowcommentApi.getComment(
94
- expertPretrialTask.tasks[0].businessId,
95
- expertPretrialTask.tasks[0].taskId
96
- )
97
- // 拼接expertPretrialTask 的 tasks里面的所有 comment
98
- let allComment = expertPretrialTask.tasks
99
- .map((task) => task.comment)
100
- .filter((comment) => comment)
101
- .join('\n')
102
- if (!(userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
103
- userInfo.getUserInfo.roleCodes?.includes('TMRole'))) {
104
- allComment = undefined
105
- }
106
- //此时说明预审已经完成,在其后增加一个新数组
107
- taskGroup.value.splice(expertPretrialIndex + 1, 0, {
108
- taskName: '科技管理室汇总',
109
- finishTime: expertPretrialTask.finishTime,
110
- tasks: [
111
- {
112
- taskId: expertPretrialTask.tasks[0].taskId,
113
- taskName: '科技管理室汇总',
114
- taskDefKey: 'tech_approval',
115
- parentExecutionId: expertPretrialTask.parentExecutionId,
116
- businessId: expertPretrialTask.tasks[0].businessId,
117
- createTime: expertPretrialTask.createTime,
118
- finishTime: techComment.value?.techComment ? expertPretrialTask.finishTime : undefined,
119
- assigneeName: '科技管理员',
120
- comment: techComment.value?.techComment || allComment,
121
- commentList: [{ type: techComment.value?.techComment ? 1 : 0 }]
122
- }
123
- ]
124
- })
125
- }
126
- }
127
- }
128
- }
129
- } catch (err: any) {
130
- taskGroup.value = []
131
- frameworkUtils.messageError(err)
132
- } finally {
133
- loading.value = false
134
- }
135
- }
136
- const setTaskGroup = (tasks: IWfTaskVo[]) => {
137
- taskGroup.value = taskGroup.value || []
138
- for (const hisTask of tasks) {
139
- const exist = taskGroup.value.find(
140
- (x) =>
141
- x.taskDefKey === hisTask.taskDefKey && x.parentExecutionId === hisTask.parentExecutionId
142
- )
143
- if (exist) {
144
- if (hisTask.finishTime && hisTask.finishTime > exist.finishTime) {
145
- exist.finishTime = hisTask.finishTime
146
- }
147
- if (hisTask.createTime && hisTask.createTime < exist.createTime) {
148
- exist.createTime = hisTask.createTime
149
- }
150
- if (!hisTask.finishTime) {
151
- const eTask = exist.tasks.find((x) => !x.finishTime)
152
- if (eTask) {
153
- eTask.assigneeName += '/' + hisTask.assigneeName
154
- } else {
155
- exist.tasks.push(hisTask)
156
- }
157
- } else {
158
- exist.tasks.push(hisTask)
159
- }
160
- } else {
161
- taskGroup.value.push({
162
- taskName: hisTask.taskName || '',
163
- taskDefKey: hisTask.taskDefKey || '',
164
- parentExecutionId: hisTask.parentExecutionId || '',
165
- finishTime: hisTask.finishTime || '',
166
- createTime: hisTask.createTime || '',
167
- tasks: [hisTask]
168
- })
169
- }
170
- }
171
- if (taskGroup.value.length > 0) {
172
- taskGroup.value.sort((a, b) => {
173
- const n1 = (a.finishTime ? a.finishTime : '9999').localeCompare(
174
- b.finishTime ? b.finishTime : '9999'
175
- )
176
- if (n1 == 0) {
177
- return a.createTime.localeCompare(b.createTime)
178
- }
179
- return n1
180
- })
181
- }
182
- }
183
- const getStatus = (task: IWfTaskVo) => {
184
- if (!task.finishTime) {
185
- if (task.operations && task.operations === 'assignee') {
186
- return '待指定审批人'
187
- }
188
- return '待办'
189
- } else {
190
- if (task.taskLocalVars && task.taskLocalVars.firstTask) {
191
- return '提交'
192
- }
193
- if (task.commentList && task.commentList.length > 0) {
194
- return ['待办', '已办', '已办', '终止', '委派', '转办', '终止', '撤回'][
195
- Number(task.commentList[task.commentList.length - 1].type)
196
- ]
197
- }
198
- return ''
199
- }
200
- }
201
- const viewDetail = (taskInfo: IWfTaskVo) => {
202
- emit('viewDetail', taskInfo)
203
- }
204
- const saveComment = async (taskInfo: IWfTaskVo) => {
205
- const confirm = await ElMessageBox.confirm('您确定保存数据?', '提示', {
206
- confirmButtonText: '确定',
207
- cancelButtonText: '取消',
208
- type: 'warning'
209
- })
210
- if (!confirm) {
211
- return
212
- }
213
- try {
214
- loading.value = true
215
- techComment.value = await workflowcommentApi.addOrEditComment({
216
- ...techComment.value,
217
- ...taskInfo,
218
- ...{ techComment: taskInfo.comment }
219
- })
220
- ElMessage.success('保存成功')
221
- } catch (err) {
222
- frameworkUtils.messageError(err)
223
- } finally {
224
- loading.value = false
225
- }
226
- }
227
- defineExpose({
228
- init
229
- })
230
- </script>
231
-
232
- <template>
233
- <el-flex justify="space-around" align="center" v-loading="loading" width="100%">
234
- <el-steps direction="vertical" align-center :space="160" style="width: 81%">
235
- <el-step
236
- v-for="item in taskGroup"
237
- :key="item.parentExecutionId"
238
- :status="item.tasks.find((x) => !x.finishTime) ? 'finish' : 'success'"
239
- >
240
- <!-- <template #icon>-->
241
- <!-- <flow-icon :name="getIcon(item.tasks)" :size="20" />-->
242
- <!-- </template>-->
243
- <template #title>
244
- <span style="display: block">{{ item.taskName }}</span>
245
- </template>
246
- <template #description>
247
- <el-flex
248
- :vertical="false"
249
- style="max-width: 100%; min-width: 180px; min-height: 60px"
250
- justify="flex-start"
251
- >
252
- <!-- width="170px"-->
253
- <el-flex
254
- :vertical="true"
255
- v-for="task in item.tasks"
256
- :key="task.taskId"
257
- style="
258
- margin-bottom: 5px;
259
- padding: 5px;
260
- margin-right: 5px;
261
- border-radius: 8px;
262
- background: #f8f8f8;
263
- "
264
- :style="{ width: task.taskDefKey === 'tech_approval' ? '100%' : '31%' }"
265
- >
266
- <el-flex height="30px" align="center" justify="space-between">
267
- <el-auto-tool-tip :content="task.taskName">
268
- </el-auto-tool-tip>
269
- <div style="display: inline-flex; align-items: center; gap: 8px">
270
- <el-icon-btn
271
- v-if="
272
- task.taskDefKey === 'tech_approval' &&
273
- (userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
274
- userInfo.getUserInfo.roleCodes?.includes('TMRole'))
275
- "
276
- model-value="adtec-save"
277
- tip="保存"
278
- @click="saveComment(task)"
279
- />
280
- <el-tag :type="task.finishTime ? 'success' : 'primary'" size="small"
281
- >{{ getStatus(task) }}
282
- </el-tag>
283
- </div>
284
- </el-flex>
285
- <div
286
- style="
287
- display: flex;
288
- justify-items: center;
289
- align-items: center;
290
- justify-content: space-between;
291
- width: 100%;
292
- "
293
- >
294
- <el-input
295
- v-if="
296
- task.taskDefKey === 'tech_approval' &&
297
- (userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
298
- userInfo.getUserInfo.roleCodes?.includes('TMRole'))
299
- "
300
- v-model="task.comment"
301
- autosize
302
- clearable
303
- placeholder="请输入内容"
304
- type="textarea"
305
- ></el-input>
306
- <span v-else>{{ task.comment }}</span>
307
- <el-icon-btn
308
- tip="查看详情"
309
- v-if="
310
- task.taskName === '专家预审' &&
311
- task.comment &&
312
- task.comment !== '***'
313
- "
314
- model-value="adtec-details"
315
- @click.stop="viewDetail(task)"
316
- style="font-size: 14px"
317
- >
318
- </el-icon-btn>
319
- </div>
320
- <el-flex v-if="taskFiles.some((x) => x.businessId === task.taskId)" width="100%">
321
- <!-- <span style="font-size: 14px">附件:</span>-->
322
- <el-uploads
323
- :is-edlt="false"
324
- :vertical="true"
325
- :businessId="task.taskId"
326
- :upload-files-list="taskFiles.filter((x) => x.businessId === task.taskId)"
327
- ></el-uploads>
328
- </el-flex>
329
-
330
- <span style="display: block; color: #909399" v-if="task.comment">{{
331
- task.finishTime?.substring(0, 19)
332
- }}</span>
333
- </el-flex>
334
- </el-flex>
335
- </template>
336
- </el-step>
337
- </el-steps>
338
- </el-flex>
339
- </template>
340
-
341
- <style scoped lang="scss">
342
- .ellipsis {
343
- display: inline-block; /* 或 block */
344
- max-width: 100%; /* 设置宽度 */
345
- overflow: hidden; /* 隐藏超出的内容 */
346
- white-space: nowrap; /* 强制不换行 */
347
- text-overflow: ellipsis; /* 超出显示省略号 */
348
- min-height: 20px;
349
- font-size: 14px;
350
- }
351
-
352
- .ellipsis2 {
353
- /* 移除多行限制相关属性 */
354
- display: inline-block; /* 恢复为 inline-block 让高度自适应 */
355
- width: 100%;
356
- font-size: 14px;
357
- line-height: 20px; /* 保持行高便于可能的计算 */
358
- overflow: visible; /* 改为visible让内容完全显示 */
359
- text-overflow: clip; /* 不需要省略号 */
360
- min-height: 20px; /* 保持最小高度为单行高度 */
361
- }
362
-
363
- :deep .el-step__line {
364
- background-color: transparent;
365
- border: 1.5px solid;
366
- }
367
-
368
- :deep .el-step__description {
369
- padding: 0;
370
- }
371
- </style>
1
+ <!--创建人 xux-->
2
+ <!--说明: ProcessInstanceStep-->
3
+ <!--创建时间: 2024/11/20 上午10:49-->
4
+ <!--修改时间: 2024/11/20 上午10:49-->
5
+ <script setup lang="ts">
6
+ import workbenchInstApi from '../../../api/workflow/workflowInstApi'
7
+ import workflowcommentApi from '../../../api/workflow/workflowCommentApi'
8
+ import type { IWorkflowCommentVo } from '../../../interface/workflow/IWorkflowCommentVo'
9
+ import { ElMessage, ElMessageBox } from 'element-plus'
10
+ import { ref } from 'vue'
11
+ import type { IWfProcessInstVo, IWfTaskVo } from '../../../interface/workflow/IWfTaskVo'
12
+ import ElUploads from '../../../components/upload/ElUploads.vue'
13
+ import type { ISysUploadFiles } from '../../../interface/ISysUploadFiles'
14
+ import documentApi from '../../../api/DocumentApi'
15
+ import frameworkUtils from '../../../utils/FrameworkUtils.ts'
16
+ import workflowApi from 'adtec-core-package/src/api/workflow/workflow'
17
+ import type { SysWorkflowVerType } from 'adtec-core-package/src/interface/workflow/workflow'
18
+ import { userInfoStore } from 'adtec-core-package/src/stores/userInfoStore'
19
+
20
+ const userInfo = userInfoStore()
21
+ const props = withDefaults(
22
+ defineProps<{
23
+ procInstId?: string
24
+ source?: string
25
+ taskId?: string
26
+ }>(),
27
+ {
28
+ procInstId: '',
29
+ source: '',
30
+ taskId: '',
31
+ },
32
+ )
33
+ const emit = defineEmits(['viewDetail'])
34
+ const loading = ref<boolean>(false)
35
+ const wfProcessInstVo = ref<IWfProcessInstVo>()
36
+ const ver = ref<SysWorkflowVerType>()
37
+ const techComment = ref<IWorkflowCommentVo>()
38
+
39
+ interface IWfTaskGroup {
40
+ taskName: string
41
+ taskDefKey: string
42
+ parentExecutionId: string
43
+ createTime: string
44
+ finishTime: string
45
+ tasks: IWfTaskVo[]
46
+ }
47
+
48
+ const taskGroup = ref<IWfTaskGroup[]>()
49
+ const taskFiles = ref<ISysUploadFiles[]>([])
50
+ const init = async (procDefId: string, procInstId: string) => {
51
+ if (!procInstId) return
52
+ try {
53
+ loading.value = true
54
+ // 获取流程实例信息
55
+ ver.value = await workflowApi.getVerInfoByProcessDefId(procDefId)
56
+ wfProcessInstVo.value = await workbenchInstApi.getProcessTaskList(procInstId)
57
+ taskGroup.value = []
58
+ if (wfProcessInstVo.value?.hisTasks?.length) {
59
+ setTaskGroup(wfProcessInstVo.value.hisTasks || [])
60
+ if (wfProcessInstVo.value.hisTasks.length > 0) {
61
+ await documentApi
62
+ .getUpLoadFilesByBussinessIds(
63
+ wfProcessInstVo.value.hisTasks
64
+ .filter((item) => item.comment !== '***' && item.taskDefKey !== 'tech_approval')
65
+ .map((item) => item.taskId),
66
+ )
67
+ .then((res) => {
68
+ taskFiles.value = res
69
+ })
70
+ .catch((err) => {
71
+ frameworkUtils.messageError(err)
72
+ })
73
+ }
74
+ }
75
+ if (wfProcessInstVo.value?.activeTasks?.length) {
76
+ setTaskGroup(wfProcessInstVo.value.activeTasks || [])
77
+ }
78
+ if (
79
+ taskGroup.value.length &&
80
+ ver.value.workflowCode === 'CompanyProjectApplyWorkflow' &&
81
+ ver.value.version === 4
82
+ ) {
83
+ if (taskGroup.value.length) {
84
+ // 判断taskGroup.value中的专家预审的位置index
85
+ const expertPretrialIndex = taskGroup.value.findIndex(
86
+ (item) => item.taskName === '专家预审',
87
+ )
88
+ if (expertPretrialIndex !== -1) {
89
+ debugger
90
+ //判断是否是最后一个节点
91
+ if (
92
+ expertPretrialIndex < taskGroup.value.length - 1 ||
93
+ wfProcessInstVo.value?.activeTasks?.length === 0
94
+ ) {
95
+ //拿到专家预审节点
96
+ const expertPretrialTask = taskGroup.value[expertPretrialIndex]
97
+ //获取保存的评论
98
+ techComment.value = await workflowcommentApi.getComment(
99
+ expertPretrialTask.tasks[0].businessId,
100
+ expertPretrialTask.tasks[0].taskId,
101
+ )
102
+ // 拼接expertPretrialTask 的 tasks里面的所有 comment
103
+ let allComment = expertPretrialTask.tasks
104
+ .map((task) => task.comment)
105
+ .filter((comment) => comment)
106
+ .join('\n')
107
+ if (
108
+ !(
109
+ userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
110
+ userInfo.getUserInfo.roleCodes?.includes('TMRole')
111
+ )
112
+ ) {
113
+ allComment = undefined
114
+ }
115
+ //此时说明预审已经完成,在其后增加一个新数组
116
+ taskGroup.value.splice(expertPretrialIndex + 1, 0, {
117
+ taskName: '科技管理室汇总',
118
+ finishTime: expertPretrialTask.finishTime,
119
+ tasks: [
120
+ {
121
+ taskId: expertPretrialTask.tasks[0].taskId,
122
+ taskName: '科技管理室汇总',
123
+ taskDefKey: 'tech_approval',
124
+ parentExecutionId: expertPretrialTask.parentExecutionId,
125
+ businessId: expertPretrialTask.tasks[0].businessId,
126
+ createTime: expertPretrialTask.createTime,
127
+ finishTime: techComment.value?.techComment
128
+ ? expertPretrialTask.finishTime
129
+ : undefined,
130
+ assigneeName: '科技管理员',
131
+ comment: techComment.value?.techComment || allComment,
132
+ commentList: [{ type: techComment.value?.techComment ? 1 : 0 }],
133
+ },
134
+ ],
135
+ })
136
+ }
137
+ }
138
+ }
139
+ }
140
+ } catch (err: any) {
141
+ taskGroup.value = []
142
+ frameworkUtils.messageError(err)
143
+ } finally {
144
+ loading.value = false
145
+ }
146
+ }
147
+ const setTaskGroup = (tasks: IWfTaskVo[]) => {
148
+ taskGroup.value = taskGroup.value || []
149
+ for (const hisTask of tasks) {
150
+ const exist = taskGroup.value.find(
151
+ (x) =>
152
+ x.taskDefKey === hisTask.taskDefKey && x.parentExecutionId === hisTask.parentExecutionId,
153
+ )
154
+ if (exist) {
155
+ if (hisTask.finishTime && hisTask.finishTime > exist.finishTime) {
156
+ exist.finishTime = hisTask.finishTime
157
+ }
158
+ if (hisTask.createTime && hisTask.createTime < exist.createTime) {
159
+ exist.createTime = hisTask.createTime
160
+ }
161
+ if (!hisTask.finishTime) {
162
+ const eTask = exist.tasks.find((x) => !x.finishTime)
163
+ if (eTask) {
164
+ eTask.assigneeName += '/' + hisTask.assigneeName
165
+ } else {
166
+ exist.tasks.push(hisTask)
167
+ }
168
+ } else {
169
+ exist.tasks.push(hisTask)
170
+ }
171
+ } else {
172
+ taskGroup.value.push({
173
+ taskName: hisTask.taskName || '',
174
+ taskDefKey: hisTask.taskDefKey || '',
175
+ parentExecutionId: hisTask.parentExecutionId || '',
176
+ finishTime: hisTask.finishTime || '',
177
+ createTime: hisTask.createTime || '',
178
+ tasks: [hisTask],
179
+ })
180
+ }
181
+ }
182
+ if (taskGroup.value.length > 0) {
183
+ taskGroup.value.sort((a, b) => {
184
+ const n1 = (a.finishTime ? a.finishTime : '9999').localeCompare(
185
+ b.finishTime ? b.finishTime : '9999',
186
+ )
187
+ if (n1 == 0) {
188
+ return a.createTime.localeCompare(b.createTime)
189
+ }
190
+ return n1
191
+ })
192
+ }
193
+ }
194
+ const getStatus = (task: IWfTaskVo) => {
195
+ if (!task.finishTime) {
196
+ if (task.operations && task.operations === 'assignee') {
197
+ return '待指定审批人'
198
+ }
199
+ return '待办'
200
+ } else {
201
+ if (task.taskLocalVars && task.taskLocalVars.firstTask) {
202
+ return '提交'
203
+ }
204
+ if (task.commentList && task.commentList.length > 0) {
205
+ return ['待办', '已办', '已办', '终止', '委派', '转办', '终止', '撤回'][
206
+ Number(task.commentList[task.commentList.length - 1].type)
207
+ ]
208
+ }
209
+ return ''
210
+ }
211
+ }
212
+ const viewDetail = (taskInfo: IWfTaskVo) => {
213
+ emit('viewDetail', taskInfo)
214
+ }
215
+ const saveComment = async (taskInfo: IWfTaskVo) => {
216
+ const confirm = await ElMessageBox.confirm('您确定保存数据?', '提示', {
217
+ confirmButtonText: '确定',
218
+ cancelButtonText: '取消',
219
+ type: 'warning',
220
+ })
221
+ if (!confirm) {
222
+ return
223
+ }
224
+ try {
225
+ loading.value = true
226
+ techComment.value = await workflowcommentApi.addOrEditComment({
227
+ ...techComment.value,
228
+ ...taskInfo,
229
+ ...{ techComment: taskInfo.comment },
230
+ })
231
+ ElMessage.success('保存成功')
232
+ } catch (err) {
233
+ frameworkUtils.messageError(err)
234
+ } finally {
235
+ loading.value = false
236
+ }
237
+ }
238
+ defineExpose({
239
+ init,
240
+ })
241
+ </script>
242
+
243
+ <template>
244
+ <el-flex justify="space-around" align="center" v-loading="loading" width="100%">
245
+ <el-steps direction="vertical" align-center :space="160" style="width: 81%">
246
+ <el-step
247
+ v-for="item in taskGroup"
248
+ :key="item.parentExecutionId"
249
+ :status="item.tasks.find((x) => !x.finishTime) ? 'finish' : 'success'"
250
+ >
251
+ <!-- <template #icon>-->
252
+ <!-- <flow-icon :name="getIcon(item.tasks)" :size="20" />-->
253
+ <!-- </template>-->
254
+ <template #title>
255
+ <span style="display: block">{{ item.taskName }}</span>
256
+ </template>
257
+ <template #description>
258
+ <el-flex
259
+ :vertical="false"
260
+ style="max-width: 100%; min-width: 180px; min-height: 60px"
261
+ justify="flex-start"
262
+ >
263
+ <!-- width="170px"-->
264
+ <el-flex
265
+ :vertical="true"
266
+ v-for="task in item.tasks"
267
+ :key="task.taskId"
268
+ :style="{border:task.taskId===taskId?'1px solid var(--el-color-primary)':''}"
269
+ style="
270
+ margin-bottom: 5px;
271
+ padding: 5px;
272
+ margin-right: 5px;
273
+ border-radius: 8px;
274
+ background: #f8f8f8;
275
+ "
276
+ :style="{ width: task.taskDefKey === 'tech_approval' ? '100%' : '31%' }"
277
+ >
278
+ <el-flex height="30px" align="center" justify="space-between">
279
+ <el-auto-tool-tip :content="task.assigneeName"> </el-auto-tool-tip>
280
+ <div style="display: inline-flex; align-items: center; gap: 8px">
281
+ <el-icon-btn
282
+ v-if="
283
+ task.taskDefKey === 'tech_approval' &&
284
+ (userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
285
+ userInfo.getUserInfo.roleCodes?.includes('TMRole'))
286
+ "
287
+ model-value="adtec-save"
288
+ tip="保存"
289
+ @click="saveComment(task)"
290
+ />
291
+ <el-tag :type="task.finishTime ? 'success' : 'primary'" size="small"
292
+ >{{ getStatus(task) }}
293
+ </el-tag>
294
+ </div>
295
+ </el-flex>
296
+ <div
297
+ style="
298
+ display: flex;
299
+ justify-items: center;
300
+ align-items: center;
301
+ justify-content: space-between;
302
+ width: 100%;
303
+ "
304
+ >
305
+ <el-input
306
+ v-if="
307
+ task.taskDefKey === 'tech_approval' &&
308
+ (userInfo.getUserInfo.roleCodes?.includes('PMRole') ||
309
+ userInfo.getUserInfo.roleCodes?.includes('TMRole'))
310
+ "
311
+ v-model="task.comment"
312
+ autosize
313
+ clearable
314
+ placeholder="请输入内容"
315
+ type="textarea"
316
+ ></el-input>
317
+ <span v-else>{{ task.comment }}</span>
318
+ <el-icon-btn
319
+ tip="查看详情"
320
+ v-if="task.taskName === '专家预审' && task.comment && task.comment !== '***'"
321
+ model-value="adtec-details"
322
+ @click.stop="viewDetail(task)"
323
+ style="font-size: 14px"
324
+ >
325
+ </el-icon-btn>
326
+ </div>
327
+ <el-flex v-if="taskFiles.some((x) => x.businessId === task.taskId)" width="100%">
328
+ <!-- <span style="font-size: 14px">附件:</span>-->
329
+ <el-uploads
330
+ :is-edlt="false"
331
+ :vertical="true"
332
+ :businessId="task.taskId"
333
+ :upload-files-list="taskFiles.filter((x) => x.businessId === task.taskId)"
334
+ ></el-uploads>
335
+ </el-flex>
336
+
337
+ <span style="display: block; color: #909399" v-if="task.comment">{{
338
+ task.finishTime?.substring(0, 19)
339
+ }}</span>
340
+ </el-flex>
341
+ </el-flex>
342
+ </template>
343
+ </el-step>
344
+ </el-steps>
345
+ </el-flex>
346
+ </template>
347
+
348
+ <style scoped lang="scss">
349
+ .ellipsis {
350
+ display: inline-block; /* 或 block */
351
+ max-width: 100%; /* 设置宽度 */
352
+ overflow: hidden; /* 隐藏超出的内容 */
353
+ white-space: nowrap; /* 强制不换行 */
354
+ text-overflow: ellipsis; /* 超出显示省略号 */
355
+ min-height: 20px;
356
+ font-size: 14px;
357
+ }
358
+
359
+ .ellipsis2 {
360
+ /* 移除多行限制相关属性 */
361
+ display: inline-block; /* 恢复为 inline-block 让高度自适应 */
362
+ width: 100%;
363
+ font-size: 14px;
364
+ line-height: 20px; /* 保持行高便于可能的计算 */
365
+ overflow: visible; /* 改为visible让内容完全显示 */
366
+ text-overflow: clip; /* 不需要省略号 */
367
+ min-height: 20px; /* 保持最小高度为单行高度 */
368
+ }
369
+
370
+ :deep .el-step__line {
371
+ background-color: transparent;
372
+ border: 1.5px solid;
373
+ }
374
+
375
+ :deep .el-step__description {
376
+ padding: 0;
377
+ }
378
+ </style>