cloud-web-corejs 1.0.54-dev.81 → 1.0.54-dev.811

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 (817) hide show
  1. package/package.json +203 -183
  2. package/src/App.vue +73 -75
  3. package/src/api/user.js +85 -40
  4. package/src/components/Qrcode/fileParse.vue +0 -1
  5. package/src/components/Tinymce/index.vue +112 -71
  6. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  7. package/src/components/VabUpload/image-viewer.vue +442 -442
  8. package/src/components/VabUpload/index.js +69 -1
  9. package/src/components/VabUpload/index.vue +284 -231
  10. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  11. package/src/components/VabUpload/mixins.js +2111 -9
  12. package/src/components/VabUpload/previewGroup.js +128 -0
  13. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  14. package/src/components/VabUpload/propertiesDialog.vue +1 -1
  15. package/src/components/VabUpload/view.vue +186 -59
  16. package/src/components/advancedSearchDialog/mixins.js +28 -1
  17. package/src/components/base-textarea/index.vue +104 -0
  18. package/src/components/baseAlert/index.js +44 -1
  19. package/src/components/baseAlert/index.vue +24 -20
  20. package/src/components/baseAlert/mixins.js +61 -1
  21. package/src/components/baseArea/index.vue +1683 -0
  22. package/src/components/baseAttachment/index.vue +49 -40
  23. package/src/components/baseAttachment/install.js +21 -5
  24. package/src/components/baseAttachment/mixins.js +310 -1
  25. package/src/components/baseInputBatch/mixins.js +58 -1
  26. package/src/components/baseInputExport/index.vue +21 -14
  27. package/src/components/baseInputExport/mixins.js +415 -8
  28. package/src/components/baseInputNumber/index.vue +9 -9
  29. package/src/components/baseTabs/index.vue +16 -8
  30. package/src/components/baseTabs/mixins.js +181 -6
  31. package/src/components/bizTab/BizBillActions.vue +129 -0
  32. package/src/components/bizTab/BizTabListPage.vue +391 -0
  33. package/src/components/bizTab/README.md +378 -0
  34. package/src/components/bizTab/billTableUtil.js +48 -0
  35. package/src/components/bizTab/billValidators.js +136 -0
  36. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  37. package/src/components/bizTab/index.js +24 -0
  38. package/src/components/cnPrint/index.js +44 -1
  39. package/src/components/cnPrint/mixins.js +189 -1
  40. package/src/components/code-editor/async.js +29 -0
  41. package/src/components/code-editor/index.vue +190 -62
  42. package/src/components/confirmDialog/index.js +41 -1
  43. package/src/components/confirmDialog/index.vue +24 -17
  44. package/src/components/confirmDialog/mixins.js +31 -1
  45. package/src/components/errorMsg/index.js +47 -3
  46. package/src/components/errorMsg/index.vue +78 -70
  47. package/src/components/errorMsg/mixins.js +103 -5
  48. package/src/components/excelExport/button.vue +86 -24
  49. package/src/components/excelExport/exportFieldDialog.vue +386 -211
  50. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  51. package/src/components/excelExport/exportType.js +49 -0
  52. package/src/components/excelExport/index.js +65 -6
  53. package/src/components/excelExport/index.vue +109 -26
  54. package/src/components/excelExport/mixins.js +1153 -17
  55. package/src/components/excelImport/index.js +75 -13
  56. package/src/components/excelImport/mixins.js +841 -8
  57. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  58. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  59. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -208
  60. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  61. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -0
  62. package/src/components/fileLibrary/filterDialog.vue +454 -0
  63. package/src/components/fileLibrary/index.vue +1109 -687
  64. package/src/components/fileLibrary/mixins/categoryMoveDialogMixins.js +1 -1
  65. package/src/components/fileLibrary/mixins/fileCategoryDialogMixins.js +1 -1
  66. package/src/components/fileLibrary/mixins/fileHistoryDialogMixins.js +2 -2
  67. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +339 -211
  68. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +31 -27
  69. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +4 -4
  70. package/src/components/fileLibrary/mixins/indexMixins.js +230 -101
  71. package/src/components/fileLibrary/mixins/propertiesDialogMixins.js +62 -3
  72. package/src/components/fileLibrary/mixins/recycleBinDialogMixins.js +3 -3
  73. package/src/components/fileLibrary/propertiesDialog.vue +190 -145
  74. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  75. package/src/components/fileLibrary/shareDialog.vue +1 -1
  76. package/src/components/formDialog/README.md +371 -0
  77. package/src/components/formDialog/actionButtons.js +90 -0
  78. package/src/components/formDialog/index.js +48 -0
  79. package/src/components/formDialog/index.vue +802 -0
  80. package/src/components/formDrawer/drawer.vue +722 -0
  81. package/src/components/formDrawer/index.js +50 -0
  82. package/src/components/formOplog/mixins.js +85 -4
  83. package/src/components/hiprint/css/bootstrap.min.css +6 -0
  84. package/src/components/hiprint/fonts/glyphicons-halflings-regular.eot +0 -0
  85. package/src/components/hiprint/fonts/glyphicons-halflings-regular.svg +288 -0
  86. package/src/components/hiprint/fonts/glyphicons-halflings-regular.ttf +0 -0
  87. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff +0 -0
  88. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff2 +0 -0
  89. package/src/components/hiprint/hiprint.bundle.js +15 -3
  90. package/src/components/hiprint/view/design/index.vue +146 -48
  91. package/src/components/hiprint/view/design/mixins.js +611 -1
  92. package/src/components/hiprint/view/design/preview.vue +75 -52
  93. package/src/components/hiprint/view/json-view.vue +31 -31
  94. package/src/components/jdPrint/index.js +44 -1
  95. package/src/components/jdPrint/mixins.js +208 -1
  96. package/src/components/jsonImport/exportUtil.js +106 -0
  97. package/src/components/jsonImport/index.js +212 -17
  98. package/src/components/jsonImport/mixins.js +350 -16
  99. package/src/components/langImport/index.js +80 -1
  100. package/src/components/langImport/mixins.js +487 -1
  101. package/src/components/langTag/mixins/addButton.js +51 -5
  102. package/src/components/langTag/mixins/deleteButton.js +55 -5
  103. package/src/components/langTag/mixins/view.js +47 -5
  104. package/src/components/luckysheet/dialog.vue +159 -0
  105. package/src/components/luckysheet/export.js +595 -0
  106. package/src/components/luckysheet/fileUtils.js +147 -0
  107. package/src/components/luckysheet/index.js +72 -0
  108. package/src/components/luckysheet/templateJson.js +12078 -0
  109. package/src/components/luckysheet/view.vue +210 -0
  110. package/src/components/micro-view-host/contract.js +66 -0
  111. package/src/components/micro-view-host/index.vue +148 -0
  112. package/src/components/mobile/file/index.vue +10 -0
  113. package/src/components/mobile/wf/content.vue +1665 -1556
  114. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +51 -47
  115. package/src/components/obsUpload/index.js +34 -0
  116. package/src/components/obsUpload/index.vue +234 -0
  117. package/src/components/obsUpload/mixins.js +1542 -0
  118. package/src/components/onlineTalk/index.vue +1 -1
  119. package/src/components/onlineTalk/mixins.js +852 -1
  120. package/src/components/onlineTalk/talkUserDialog.vue +280 -0
  121. package/src/components/oplogTable/mixins.js +83 -4
  122. package/src/components/pddPrint/index.js +44 -1
  123. package/src/components/pddPrint/mixins.js +252 -1
  124. package/src/components/projectTag/mixins/addButton.js +52 -1
  125. package/src/components/projectTag/mixins/deleteButton.js +52 -1
  126. package/src/components/projectTag/mixins/view.js +43 -1
  127. package/src/components/scriptDescription/button.vue +12 -4
  128. package/src/components/scriptDescription/mixins.js +30 -1
  129. package/src/components/scriptTest/mixins.js +90 -1
  130. package/src/components/statusTag/mixins.js +66 -1
  131. package/src/components/table/CellSlot.vue +12 -9
  132. package/src/components/table/config.js +78 -3
  133. package/src/components/table/index.js +1268 -3
  134. package/src/components/table/plugins/cell-area/index.js +1055 -0
  135. package/src/components/table/plugins/cell-area/index.scss +77 -0
  136. package/src/components/table/plugins/cell-area/util.js +224 -0
  137. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.es6.min.js +11028 -0
  138. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.min.css +200 -0
  139. package/src/components/table/state.js +42 -0
  140. package/src/components/table/tableForm.vue +330 -281
  141. package/src/components/table/tableFormMixin.js +318 -6
  142. package/src/components/table/util/index.js +337 -0
  143. package/src/components/table/vxeFilter/index.js +163 -9
  144. package/src/components/table/vxeFilter/mixin.js +311 -1
  145. package/src/components/tempStorage/index.vue +76 -55
  146. package/src/components/tempStorage/tempStorageDialog.vue +179 -54
  147. package/src/components/vb-tabs/x-tabs.vue +167 -112
  148. package/src/components/vipPrint/index.js +44 -1
  149. package/src/components/vipPrint/mixins.js +268 -1
  150. package/src/components/wf/addOpinionButton.vue +57 -0
  151. package/src/components/wf/addTaskUserdialog.vue +1 -1
  152. package/src/components/wf/content.vue +1188 -702
  153. package/src/components/wf/content2.vue +4 -2
  154. package/src/components/wf/mixins/addOpinionButton.js +53 -0
  155. package/src/components/wf/mixins/setCandidateButton.js +161 -0
  156. package/src/components/wf/mixins/setCandidateDialog.js +217 -5
  157. package/src/components/wf/mixins/setCandidateDialog2.js +252 -0
  158. package/src/components/wf/mixins/wfFlowEleScriptDialog.js +131 -0
  159. package/src/components/wf/mixins/wfTaskUserRangeDialog.js +69 -0
  160. package/src/components/wf/setCandidateButton.vue +40 -0
  161. package/src/components/wf/setCandidateDialog.vue +10 -0
  162. package/src/components/wf/setCandidateDialog2.vue +105 -0
  163. package/src/components/wf/wf.js +2310 -30
  164. package/src/components/wf/wfActionDropdown.vue +85 -0
  165. package/src/components/wf/wfActionItems.js +136 -0
  166. package/src/components/wf/wfAutoConfirm.js +55 -0
  167. package/src/components/wf/wfButtonName.js +60 -0
  168. package/src/components/wf/wfFlowEleScriptDialog.vue +89 -0
  169. package/src/components/wf/wfStartDialog.vue +66 -42
  170. package/src/components/wf/wfTaskUserRangeDialog.vue +65 -0
  171. package/src/components/wf/wfUserRange.js +53 -0
  172. package/src/components/wf/wfUtil.js +373 -13
  173. package/src/components/xform/XFormTabContainer//346/226/260/345/242/236/351/241/265/347/255/276/346/250/241/345/274/217-/346/234/200/347/273/210/345/256/236/347/216/260.md +195 -0
  174. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +57 -0
  175. package/src/components/xform/docs/2026-07 /346/216/222/346/237/245/344/277/256/345/244/215/350/256/260/345/275/225.md" +73 -0
  176. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +528 -0
  177. package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +412 -0
  178. package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +287 -0
  179. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +400 -0
  180. package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +173 -0
  181. package/src/components/xform/docs/autocomplete /350/207/252/345/212/250/345/256/214/346/210/220/347/273/204/344/273/266/350/257/264/346/230/216.md" +126 -0
  182. package/src/components/xform/docs//345/220/216/345/217/260/345/255/227/346/256/265/357/274/210/345/212/250/346/200/201/347/224/237/346/210/220/357/274/211JSON /350/257/264/346/230/216.md" +1286 -0
  183. package/src/components/xform/docs//345/257/271/346/257/224/345/212/237/350/203/275/350/220/275/345/234/260/346/226/271/346/241/210.md +986 -0
  184. package/src/components/xform/docs//346/225/260/346/215/256/350/241/250/346/240/274/345/212/250/346/200/201/345/210/227 JSON /350/257/264/346/230/216.md" +657 -0
  185. package/src/components/xform/docs//346/240/221/350/241/250rowField/346/224/266/346/225/233-/350/220/275/345/234/260/346/226/207/346/241/243.md +1427 -0
  186. package/src/components/xform/form-designer/designer.js +2100 -29
  187. package/src/components/xform/form-designer/form-widget/components/gantt/index.vue +434 -0
  188. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +108 -1
  189. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +291 -8
  190. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -250
  191. package/src/components/xform/form-designer/form-widget/container-widget/detail-pane-widget.vue +3 -2
  192. package/src/components/xform/form-designer/form-widget/container-widget/detail-plain-widget.vue +76 -0
  193. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  194. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -196
  195. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog copy.vue +971 -0
  196. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog.vue +971 -0
  197. package/src/components/xform/form-designer/form-widget/dialog/exportDialog.vue +13 -0
  198. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -0
  199. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -204
  200. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
  201. package/src/components/xform/form-designer/form-widget/dialog/formulaDialog.vue +799 -0
  202. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +30 -8
  203. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -19
  204. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -409
  205. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -408
  206. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -119
  207. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  208. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  209. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  210. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +287 -184
  211. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  212. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +209 -90
  213. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +41 -35
  214. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +18 -7
  215. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +4 -1
  216. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +104 -0
  217. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -102
  218. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -100
  219. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +133 -0
  220. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +86 -0
  221. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +170 -0
  222. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1977 -16
  223. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +636 -108
  224. package/src/components/xform/form-designer/form-widget/field-widget/gantt-widget.vue +964 -0
  225. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +6 -2
  226. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +22 -11
  227. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +90 -0
  228. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +7 -2
  229. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  230. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -0
  231. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  232. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  233. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  234. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relative-default-mixin.js +107 -0
  235. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relativeDateUtil.js +321 -0
  236. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -0
  237. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  238. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +192 -0
  239. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +53 -0
  240. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +119 -81
  241. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +186 -0
  242. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +55 -28
  243. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +119 -0
  244. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +156 -54
  245. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +26 -6
  246. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +115 -0
  247. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +149 -0
  248. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +2 -2
  249. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +86 -0
  250. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +126 -0
  251. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -124
  252. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +53 -0
  253. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -0
  254. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +16 -1
  255. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +8 -3
  256. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +93 -49
  257. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  258. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +38 -38
  259. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +147 -0
  260. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +111 -34
  261. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -104
  262. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -103
  263. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +3 -171
  264. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +339 -251
  265. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +753 -0
  266. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +231 -0
  267. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  268. package/src/components/xform/form-designer/form-widget/indexMixin.js +184 -2
  269. package/src/components/xform/form-designer/index.vue +194 -191
  270. package/src/components/xform/form-designer/indexMixin.js +860 -24
  271. package/src/components/xform/form-designer/refMixinDesign.js +27 -28
  272. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  273. package/src/components/xform/form-designer/setting-panel/dataSource-setting.vue +397 -397
  274. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +602 -0
  275. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1794 -629
  276. package/src/components/xform/form-designer/setting-panel/index.vue +309 -305
  277. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -12
  278. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +519 -236
  279. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +5 -5
  280. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +4 -4
  281. package/src/components/xform/form-designer/setting-panel/property-editor/alignType-editor.vue +1 -1
  282. package/src/components/xform/form-designer/setting-panel/property-editor/autoValueEnabled-editor.vue +38 -0
  283. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  284. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +7 -1
  285. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +28 -0
  286. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +41 -0
  287. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -0
  288. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +729 -626
  289. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
  290. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -0
  291. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/onCheckboxChange-editor.vue +1 -1
  292. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -1059
  293. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +96 -74
  294. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  295. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-pane/detail-pane-editor.vue +3 -3
  296. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-plain/detail-plain-editor.vue +75 -0
  297. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/colHeight-editor.vue +1 -1
  298. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -81
  299. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-height-editor.vue +1 -1
  300. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +2 -2
  301. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +2 -2
  302. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +2 -2
  303. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue +4 -4
  304. package/src/components/xform/form-designer/setting-panel/property-editor/container-h5-card/h5-card-editor.vue +124 -124
  305. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +34 -46
  306. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/height-editor.vue +1 -1
  307. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/width-editor.vue +1 -1
  308. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue +119 -119
  309. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tabClass-editor.vue +45 -45
  310. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +342 -0
  311. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue +1 -1
  312. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue +1 -1
  313. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +32 -3
  314. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree-pane/tree-pane-editor.vue +1 -1
  315. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue +1 -1
  316. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonLabel-editor.vue +1 -1
  317. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/title-editor.vue +1 -1
  318. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue +1 -1
  319. package/src/components/xform/form-designer/setting-panel/property-editor/containerClass-editor.vue +1 -1
  320. package/src/components/xform/form-designer/setting-panel/property-editor/copyButton-editor.vue +36 -0
  321. package/src/components/xform/form-designer/setting-panel/property-editor/customClass-editor.vue +1 -1
  322. package/src/components/xform/form-designer/setting-panel/property-editor/defaultValue-editor.vue +1 -1
  323. package/src/components/xform/form-designer/setting-panel/property-editor/descriptionsItems-editor.vue +4 -4
  324. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +32 -0
  325. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -0
  326. package/src/components/xform/form-designer/setting-panel/property-editor/dsName-editor.vue +1 -1
  327. package/src/components/xform/form-designer/setting-panel/property-editor/echartHeight-editor.vue +1 -1
  328. package/src/components/xform/form-designer/setting-panel/property-editor/endPlaceholder-editor.vue +1 -1
  329. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/afterColumnsCreated-editor.vue +30 -0
  330. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +2 -2
  331. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +23 -8
  332. package/src/components/xform/form-designer/setting-panel/property-editor/field-accessUrl/accessUrl-editor.vue +2 -2
  333. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  334. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  335. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  336. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  337. package/src/components/xform/form-designer/setting-panel/property-editor/field-baseAttachment/baseAttachment-fileTypes-editor.vue +23 -0
  338. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/addTableData-event-editor.vue +84 -85
  339. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/button-type-editor.vue +1 -1
  340. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindActions.js +262 -0
  341. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +97 -73
  342. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/form-host-event-editor.vue +188 -0
  343. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  344. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -161
  345. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue +8 -3
  346. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  347. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  348. package/src/components/xform/form-designer/setting-panel/property-editor/field-common/keyName-editor.vue +74 -67
  349. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +179 -0
  350. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -26
  351. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-format-editor.vue +1 -1
  352. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-type-editor.vue +1 -1
  353. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-valueFormat-editor.vue +1 -1
  354. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +1 -1
  355. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -26
  356. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-format-editor.vue +1 -1
  357. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-type-editor.vue +1 -1
  358. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue +1 -1
  359. package/src/components/xform/form-designer/setting-panel/property-editor/field-divider/contentPosition-editor.vue +1 -1
  360. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-item-editor.vue +21 -0
  361. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -0
  362. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +11 -11
  363. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +10 -10
  364. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +12 -12
  365. package/src/components/xform/form-designer/setting-panel/property-editor/field-file-upload/file-upload-fileTypes-editor.vue +44 -44
  366. package/src/components/xform/form-designer/setting-panel/property-editor/field-gantt/gantt-editor.vue +36 -0
  367. package/src/components/xform/form-designer/setting-panel/property-editor/field-html-text/htmlContent-editor.vue +29 -29
  368. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +78 -24
  369. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -0
  370. package/src/components/xform/form-designer/setting-panel/property-editor/field-number/controlsPosition-editor.vue +1 -1
  371. package/src/components/xform/form-designer/setting-panel/property-editor/field-picture-upload/picture-upload-fileTypes-editor.vue +44 -44
  372. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +115 -86
  373. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -0
  374. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/highThreshold-editor.vue +1 -1
  375. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/lowThreshold-editor.vue +1 -1
  376. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +2 -2
  377. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-max-editor.vue +1 -1
  378. package/src/components/xform/form-designer/setting-panel/property-editor/field-script/script-editor.vue +4 -4
  379. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  380. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/fontSize-editor.vue +1 -1
  381. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/preWrap-editor.vue +23 -0
  382. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +2 -2
  383. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +67 -41
  384. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/activeText-editor.vue +1 -1
  385. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/inactiveText-editor.vue +1 -1
  386. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/switchWidth-editor.vue +1 -1
  387. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +56 -0
  388. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +125 -0
  389. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +3 -3
  390. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -26
  391. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-format-editor.vue +1 -1
  392. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-timeLimit-editor.vue +53 -0
  393. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -26
  394. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-format-editor.vue +1 -1
  395. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchField-editor.vue +2 -2
  396. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +15 -3
  397. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +33 -1
  398. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/vabUpload-fileTypes-editor.vue +23 -0
  399. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +66 -0
  400. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +48 -0
  401. package/src/components/xform/form-designer/setting-panel/property-editor/fileMaxSize-editor.vue +1 -1
  402. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesEditorMixin.js +116 -0
  403. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -0
  404. package/src/components/xform/form-designer/setting-panel/property-editor/fixedQuery-editor.vue +39 -0
  405. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -52
  406. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +137 -0
  407. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +972 -717
  408. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  409. package/src/components/xform/form-designer/setting-panel/property-editor/iconClass-editor.vue +1 -1
  410. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  411. package/src/components/xform/form-designer/setting-panel/property-editor/label-editor.vue +1 -1
  412. package/src/components/xform/form-designer/setting-panel/property-editor/labelAlign-editor.vue +1 -1
  413. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +21 -12
  414. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +17 -16
  415. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +26 -26
  416. package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
  417. package/src/components/xform/form-designer/setting-panel/property-editor/labelWidth-editor.vue +1 -1
  418. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +2 -2
  419. package/src/components/xform/form-designer/setting-panel/property-editor/max-editor.vue +1 -1
  420. package/src/components/xform/form-designer/setting-panel/property-editor/maxLength-editor.vue +1 -1
  421. package/src/components/xform/form-designer/setting-panel/property-editor/min-editor.vue +1 -1
  422. package/src/components/xform/form-designer/setting-panel/property-editor/minLength-editor.vue +1 -1
  423. package/src/components/xform/form-designer/setting-panel/property-editor/multiple-editor.vue +19 -14
  424. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +2 -2
  425. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -101
  426. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +31 -0
  427. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  428. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +2 -2
  429. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  430. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +349 -0
  431. package/src/components/xform/form-designer/setting-panel/property-editor/relative-default-block.vue +369 -0
  432. package/src/components/xform/form-designer/setting-panel/property-editor/required-editor.vue +10 -6
  433. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +4 -4
  434. package/src/components/xform/form-designer/setting-panel/property-editor/rows-editor.vue +1 -1
  435. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  436. package/src/components/xform/form-designer/setting-panel/property-editor/space-editor-editor.vue +1 -1
  437. package/src/components/xform/form-designer/setting-panel/property-editor/startPlaceholder-editor.vue +1 -1
  438. package/src/components/xform/form-designer/setting-panel/property-editor/step-editor.vue +1 -1
  439. package/src/components/xform/form-designer/setting-panel/property-editor/styleTableClass-editor.vue +1 -1
  440. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  441. package/src/components/xform/form-designer/setting-panel/property-editor/styleTitClass-editor.vue +1 -1
  442. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  443. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +42 -0
  444. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -62
  445. package/src/components/xform/form-designer/setting-panel/property-editor/type-editor.vue +1 -1
  446. package/src/components/xform/form-designer/setting-panel/property-editor/uploadTip-editor.vue +1 -1
  447. package/src/components/xform/form-designer/setting-panel/property-editor/uploadURL-editor.vue +1 -1
  448. package/src/components/xform/form-designer/setting-panel/property-editor/urlValueEnabled-editor.vue +91 -0
  449. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  450. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +3 -3
  451. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +3 -3
  452. package/src/components/xform/form-designer/setting-panel/property-editor/wfFlag-editor.vue +372 -50
  453. package/src/components/xform/form-designer/setting-panel/property-editor/widgetShowRuleFlag-editor.vue +263 -0
  454. package/src/components/xform/form-designer/setting-panel/property-editor/widgetWidth-editor.vue +1 -1
  455. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +378 -324
  456. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  457. package/src/components/xform/form-designer/toolbar-panel/index.vue +267 -103
  458. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -24
  459. package/src/components/xform/form-designer/widget-panel/index.vue +391 -321
  460. package/src/components/xform/form-designer/widget-panel/indexMixin.js +335 -2
  461. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4698 -3141
  462. package/src/components/xform/form-render/compareDelList.vue +83 -0
  463. package/src/components/xform/form-render/compareView.vue +76 -0
  464. package/src/components/xform/form-render/container-item/containerItemMixin.js +404 -11
  465. package/src/components/xform/form-render/container-item/data-table-item.vue +221 -203
  466. package/src/components/xform/form-render/container-item/data-table-mixin.js +5076 -981
  467. package/src/components/xform/form-render/container-item/detail-h5-item.vue +324 -172
  468. package/src/components/xform/form-render/container-item/detail-item.vue +446 -158
  469. package/src/components/xform/form-render/container-item/detail-pane-item.vue +17 -3
  470. package/src/components/xform/form-render/container-item/detail-plain-item.vue +92 -0
  471. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  472. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  473. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  474. package/src/components/xform/form-render/container-item/grid-col-item.vue +10 -3
  475. package/src/components/xform/form-render/container-item/grid-item.vue +1 -1
  476. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  477. package/src/components/xform/form-render/container-item/list-h5-item.vue +1642 -921
  478. package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
  479. package/src/components/xform/form-render/container-item/tab-item.vue +129 -88
  480. package/src/components/xform/form-render/container-item/table-cell-item.vue +38 -32
  481. package/src/components/xform/form-render/container-item/table-item.vue +7 -7
  482. package/src/components/xform/form-render/container-item/table2-cell-item.vue +53 -34
  483. package/src/components/xform/form-render/container-item/table2-item.vue +198 -99
  484. package/src/components/xform/form-render/container-item/tree-item.vue +32 -11
  485. package/src/components/xform/form-render/dynamicDialogRender.js +238 -3
  486. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  487. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  488. package/src/components/xform/form-render/index.vue +153 -89
  489. package/src/components/xform/form-render/indexMixin.js +5311 -37
  490. package/src/components/xform/form-render/refMixin.js +34 -3
  491. package/src/components/xform/icon-picker/icons.json +284 -0
  492. package/src/components/xform/icon-picker/index.vue +145 -0
  493. package/src/components/xform/lang/en-US.js +483 -438
  494. package/src/components/xform/lang/en-US_extension.js +4 -0
  495. package/src/components/xform/lang/zh-CN.js +658 -593
  496. package/src/components/xform/mixins/defaultHandle.js +707 -5
  497. package/src/components/xform/mixins/scriptHttp.js +179 -3
  498. package/src/components/xform/styles/h5.scss +1633 -0
  499. package/src/components/xform/utils/attachmentValueUtil.js +239 -0
  500. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  501. package/src/components/xform/utils/emitter.js +4 -4
  502. package/src/components/xform/utils/fixedQueryUtil.js +93 -0
  503. package/src/components/xform/utils/formHttp.js +162 -0
  504. package/src/components/xform/utils/format.js +205 -172
  505. package/src/components/xform/utils/formula-util.js +969 -0
  506. package/src/components/xform/utils/queryParamUtil.js +84 -0
  507. package/src/components/xform/utils/sfc-generator.js +2 -2
  508. package/src/components/xform/utils/smart-vue-i18n/index.js +2 -1
  509. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  510. package/src/components/xform/utils/tableColumnHelper.js +155 -0
  511. package/src/components/xform/utils/textMaskUtil.js +182 -0
  512. package/src/components/xform/utils/treeTableUtil.js +1292 -0
  513. package/src/components/xform/utils/util.js +1708 -1
  514. package/src/components/xform/utils/validators.js +185 -4
  515. package/src/components/xform/utils/vue2js-generator.js +2 -2
  516. package/src/components/xhsPrint/index.js +44 -1
  517. package/src/components/xhsPrint/mixins.js +269 -1
  518. package/src/directive/LimitNumber/index.js +144 -1
  519. package/src/directive/el-dialog-center/index.js +34 -1
  520. package/src/directive/el-drag-dialog/drag.js +86 -1
  521. package/src/directive/el-readonly/index.js +15 -1
  522. package/src/directive/permission/hasPermi.js +34 -1
  523. package/src/index.js +407 -84
  524. package/src/lang/index.js +56 -51
  525. package/src/lang/locale/en/login.js +27 -0
  526. package/src/lang/locale/zh/login.js +26 -0
  527. package/src/layout/components/AppMain.vue +147 -111
  528. package/src/layout/components/Sidebar/default.vue +1655 -1222
  529. package/src/layout/components/Sidebar/index.vue +6 -1
  530. package/src/layout/components/TagsView/index.vue +57 -15
  531. package/src/layout/components/createCompany/createCompanyDialog.vue +157 -0
  532. package/src/layout/components/extractedCode/createDialog.vue +92 -0
  533. package/src/layout/components/extractedCode/queryDialog.vue +103 -0
  534. package/src/layout/components/extractedCode/viewDialog.vue +207 -0
  535. package/src/layout/components/langTool.vue +128 -120
  536. package/src/layout/components/watermark/index.vue +83 -0
  537. package/src/layout/defaultLayout.vue +170 -150
  538. package/src/microRouter/index.js +447 -0
  539. package/src/mixins/selectDialog/index.js +266 -1
  540. package/src/mixins/tableTree/index.js +262 -4
  541. package/src/mixins/wf/index.js +40 -6
  542. package/src/permission.js +158 -16
  543. package/src/public-path.js +38 -0
  544. package/src/resources/js/base/common.js +109 -109
  545. package/src/router/index.js +4 -7
  546. package/src/router/modules/customer.js +70 -17
  547. package/src/router/modules/system.js +4 -0
  548. package/src/store/config/index.js +945 -600
  549. package/src/store/getters.js +4 -1
  550. package/src/store/modules/micro.js +57 -0
  551. package/src/store/modules/permission.js +517 -23
  552. package/src/store/modules/settings.js +26 -1
  553. package/src/store/modules/tagsView.js +208 -5
  554. package/src/store/modules/user.js +418 -28
  555. package/src/utils/aes.js +21 -1
  556. package/src/utils/auth.js +27 -1
  557. package/src/utils/componentDialog.js +339 -0
  558. package/src/utils/global.js +370 -8
  559. package/src/utils/index.js +579 -7
  560. package/src/utils/keepAlive.js +185 -1
  561. package/src/utils/lazyPlugin.js +66 -0
  562. package/src/utils/menuAdapter.js +277 -0
  563. package/src/utils/pddLog.js +92 -0
  564. package/src/utils/pdfUtil.js +429 -0
  565. package/src/utils/repeatOpen.js +48 -0
  566. package/src/utils/request.js +417 -28
  567. package/src/utils/resolveViewComponent.js +203 -0
  568. package/src/utils/scrollUtil.js +25 -0
  569. package/src/utils/vab.js +1279 -27
  570. package/src/utils/validate.js +104 -1
  571. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  572. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  573. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  574. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  575. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  576. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  577. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  578. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  579. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  580. package/src/views/bd/project/common/form_script/list.vue +16 -0
  581. package/src/views/bd/project/common/form_template/list.vue +15 -0
  582. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  583. package/src/views/bd/project/core/branchContext.js +100 -0
  584. package/src/views/bd/project/core/branchPage.js +78 -0
  585. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  586. package/src/views/bd/project/core/branchScope.js +44 -0
  587. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  588. package/src/views/bd/project/core/branchSelect.vue +85 -0
  589. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  590. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  591. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  592. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  593. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  594. package/src/views/bd/setting/bd_attach_setting/edit.vue +5 -5
  595. package/src/views/bd/setting/bd_attach_setting/list.vue +28 -55
  596. package/src/views/bd/setting/bd_attach_setting/mixins/dialog.js +84 -1
  597. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +116 -5
  598. package/src/views/bd/setting/bd_attach_setting/mixins/list.js +239 -1
  599. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -0
  600. package/src/views/bd/setting/bd_company_env/edit.vue +193 -0
  601. package/src/views/bd/setting/bd_company_env/list.vue +175 -0
  602. package/src/views/bd/setting/config_manage/list.vue +83 -0
  603. package/src/views/bd/setting/formVersion/button.vue +60 -0
  604. package/src/views/bd/setting/formVersion/compareBasicSection.vue +125 -0
  605. package/src/views/bd/setting/formVersion/compareCodeSection.vue +539 -0
  606. package/src/views/bd/setting/formVersion/compareContMixin.scss +65 -0
  607. package/src/views/bd/setting/formVersion/compareContent.vue +63 -0
  608. package/src/views/bd/setting/formVersion/compareDialog.vue +88 -0
  609. package/src/views/bd/setting/formVersion/compareMixin.js +93 -0
  610. package/src/views/bd/setting/formVersion/fieldCompare.vue +54 -0
  611. package/src/views/bd/setting/formVersion/formScriptCompareView.vue +94 -0
  612. package/src/views/bd/setting/formVersion/formTemplateCompareView.vue +74 -0
  613. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +501 -0
  614. package/src/views/bd/setting/formVersion/link.vue +63 -0
  615. package/src/views/bd/setting/formVersion/preformDialog.vue +87 -0
  616. package/src/views/bd/setting/formVersion/reverButton.vue +82 -0
  617. package/src/views/bd/setting/formVersion/tableDetailDiff.js +99 -0
  618. package/src/views/bd/setting/formVersion/tableModelCompareView.vue +514 -0
  619. package/src/views/bd/setting/formVersion/textDiff.js +102 -0
  620. package/src/views/bd/setting/form_import_log/edit.vue +130 -0
  621. package/src/views/bd/setting/form_import_log/list.vue +211 -0
  622. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  623. package/src/views/bd/setting/form_script/edit.vue +197 -74
  624. package/src/views/bd/setting/form_script/edit1.vue +411 -187
  625. package/src/views/bd/setting/form_script/form_list.vue +175 -85
  626. package/src/views/bd/setting/form_script/list.vue +96 -21
  627. package/src/views/bd/setting/form_script/list1.vue +207 -118
  628. package/src/views/bd/setting/form_script/mixins/dialog.js +130 -1
  629. package/src/views/bd/setting/form_script/mixins/edit.js +265 -7
  630. package/src/views/bd/setting/form_script/mixins/edit1.js +259 -9
  631. package/src/views/bd/setting/form_script/mixins/form_list.js +320 -4
  632. package/src/views/bd/setting/form_script/mixins/list.js +307 -4
  633. package/src/views/bd/setting/form_script/mixins/list1.js +512 -14
  634. package/src/views/bd/setting/form_script/mixins/list2.js +10 -1
  635. package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +194 -0
  636. package/src/views/bd/setting/form_script/mixins/preformDialog.js +34 -1
  637. package/src/views/bd/setting/form_script/otherAuthDialog.vue +83 -0
  638. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +3 -3
  639. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  640. package/src/views/bd/setting/form_template/edit.vue +356 -184
  641. package/src/views/bd/setting/form_template/formDesignerDialog.vue +172 -0
  642. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  643. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  644. package/src/views/bd/setting/form_template/list.vue +303 -214
  645. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +279 -1
  646. package/src/views/bd/setting/form_template/mixins/dialog.js +103 -1
  647. package/src/views/bd/setting/form_template/mixins/edit.js +280 -9
  648. package/src/views/bd/setting/form_template/mixins/editWfObjConfigDialog.js +92 -1
  649. package/src/views/bd/setting/form_template/mixins/ftHistoryDialog.js +91 -1
  650. package/src/views/bd/setting/form_template/mixins/itemEdit.js +104 -1
  651. package/src/views/bd/setting/form_template/mixins/itemList.js +234 -1
  652. package/src/views/bd/setting/form_template/mixins/list.js +721 -22
  653. package/src/views/bd/setting/form_template/mixins/list2.js +411 -0
  654. package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +193 -0
  655. package/src/views/bd/setting/form_template/mixins/preformDialog.js +28 -3
  656. package/src/views/bd/setting/form_template/mixins/wf_list.js +421 -3
  657. package/src/views/bd/setting/form_template/otherAuthDialog.vue +83 -0
  658. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  659. package/src/views/bd/setting/form_template/wf_list.vue +161 -127
  660. package/src/views/bd/setting/logic_param/edit.vue +146 -0
  661. package/src/views/bd/setting/logic_param/edit1.vue +106 -0
  662. package/src/views/bd/setting/logic_param/edit2.vue +139 -0
  663. package/src/views/bd/setting/logic_param/list.vue +74 -0
  664. package/src/views/bd/setting/logic_param/list1.vue +12 -0
  665. package/src/views/bd/setting/logic_param/list2.vue +12 -0
  666. package/src/views/bd/setting/logic_param/mixins/edit.js +93 -0
  667. package/src/views/bd/setting/logic_param/mixins/list.js +376 -0
  668. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  669. package/src/views/bd/setting/menu_kind/list.vue +172 -83
  670. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +300 -7
  671. package/src/views/bd/setting/menu_kind/mixins/dialog.js +139 -1
  672. package/src/views/bd/setting/menu_kind/mixins/list.js +201 -1
  673. package/src/views/bd/setting/push_data/edit.vue +139 -0
  674. package/src/views/bd/setting/push_data/list.vue +283 -0
  675. package/src/views/bd/setting/push_data_h/edit.vue +153 -0
  676. package/src/views/bd/setting/push_data_h/list.vue +293 -0
  677. package/src/views/bd/setting/request_async_setting/edit.vue +320 -0
  678. package/src/views/bd/setting/request_async_setting/list.vue +372 -0
  679. package/src/views/bd/setting/request_setting/edit.vue +300 -0
  680. package/src/views/bd/setting/request_setting/list.vue +301 -0
  681. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  682. package/src/views/bd/setting/table_model/edit.vue +958 -318
  683. package/src/views/bd/setting/table_model/list.vue +219 -128
  684. package/src/views/bd/setting/table_model/mixins/dialog.js +71 -1
  685. package/src/views/bd/setting/table_model/mixins/edit.js +1445 -3
  686. package/src/views/bd/setting/table_model/mixins/list.js +463 -2
  687. package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +201 -0
  688. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -5
  689. package/src/views/bd/setting/table_model/otherAuthDialog.vue +83 -0
  690. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  691. package/src/views/bd/setting/utils/index.js +75 -1
  692. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  693. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  694. package/src/views/demo/bizTab/bill/list.vue +288 -0
  695. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  696. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  697. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  698. package/src/views/demo/bizTab/simple/list.vue +217 -0
  699. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  700. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  701. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  702. package/src/views/demo/bizTab/wf/list.vue +242 -0
  703. package/src/views/support/export_template/list.vue +1 -1
  704. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  705. package/src/views/support/form-dialog-demo/index.vue +537 -0
  706. package/src/views/user/access_log/list.vue +418 -349
  707. package/src/views/user/access_log/list2.vue +1 -1
  708. package/src/views/user/api_request/list.vue +1 -1
  709. package/src/views/user/area/dialog.vue +223 -117
  710. package/src/views/user/area/list.vue +318 -0
  711. package/src/views/user/bill_setting/list.vue +1 -1
  712. package/src/views/user/bill_setting/userDialog.vue +1 -1
  713. package/src/views/user/code_rules/list.vue +1 -1
  714. package/src/views/user/commMenu/index.vue +2 -2
  715. package/src/views/user/common_attribute/list.vue +6 -3
  716. package/src/views/user/common_script/list.vue +1 -1
  717. package/src/views/user/company_info/dialog.vue +195 -163
  718. package/src/views/user/company_info/edit.vue +149 -88
  719. package/src/views/user/country/dialog.vue +1 -1
  720. package/src/views/user/country/list.vue +1 -1
  721. package/src/views/user/data_type_setting/dialog.vue +1 -1
  722. package/src/views/user/extend_datasource/dialog.vue +4 -1
  723. package/src/views/user/extend_datasource/edit.vue +2 -1
  724. package/src/views/user/extend_datasource/list.vue +4 -1
  725. package/src/views/user/fieldTranslation/editDialog.vue +8 -8
  726. package/src/views/user/fieldTranslation/list.vue +34 -34
  727. package/src/views/user/field_values_invisible/list.vue +1 -1
  728. package/src/views/user/file_type/list.vue +1 -1
  729. package/src/views/user/file_view_area/list.vue +1 -1
  730. package/src/views/user/file_view_ins/list.vue +22 -1
  731. package/src/views/user/form/form_template/dialog.vue +1 -1
  732. package/src/views/user/form/form_template/itemList.vue +1 -1
  733. package/src/views/user/form/form_template/list.vue +1 -1
  734. package/src/views/user/form/form_template_field/dialog.vue +1 -1
  735. package/src/views/user/form/form_type/dialog.vue +1 -1
  736. package/src/views/user/form/form_type/list.vue +1 -1
  737. package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
  738. package/src/views/user/form/report_requestaccess/list.vue +1 -1
  739. package/src/views/user/form/vform/designer.vue +821 -749
  740. package/src/views/user/form/vform/formFieldMapping.js +2 -3
  741. package/src/views/user/form/vform/out_render.vue +1 -1
  742. package/src/views/user/form/vform/render.vue +80 -52
  743. package/src/views/user/form/view/edit.vue +56 -37
  744. package/src/views/user/form/view/list.vue +475 -54
  745. package/src/views/user/groups/dialog.vue +1 -1
  746. package/src/views/user/groups/list.vue +1 -1
  747. package/src/views/user/home/default.vue +1117 -979
  748. package/src/views/user/home/default2.vue +1158 -0
  749. package/src/views/user/home/dev.vue +29 -0
  750. package/src/views/user/home/index.vue +20 -16
  751. package/src/views/user/home/wjl/content.vue +1569 -0
  752. package/src/views/user/lang_tag/dialog.vue +1 -1
  753. package/src/views/user/lang_tag/list.vue +1 -1
  754. package/src/views/user/language_setting/list.vue +1 -1
  755. package/src/views/user/login/default.vue +165 -44
  756. package/src/views/user/login/index.vue +4 -6
  757. package/src/views/user/login/indexMixin.js +582 -380
  758. package/src/views/user/menu/list.vue +51 -2
  759. package/src/views/user/menu/voc_list.vue +686 -0
  760. package/src/views/user/menuFallback/index.vue +123 -0
  761. package/src/views/user/mobile_menu/list.vue +1 -1
  762. package/src/views/user/notify_message/dialog.vue +65 -22
  763. package/src/views/user/notify_message/list.vue +1 -1
  764. package/src/views/user/notify_template/edit.vue +188 -187
  765. package/src/views/user/notify_template/edit2.vue +176 -0
  766. package/src/views/user/notify_template/list.vue +5 -2
  767. package/src/views/user/notify_template/list2.vue +190 -0
  768. package/src/views/user/oplog/list.vue +1 -1
  769. package/src/views/user/outLink/cc_form_view.vue +188 -0
  770. package/src/views/user/outLink/form_view.vue +202 -211
  771. package/src/views/user/outLink/index.vue +62 -18
  772. package/src/views/user/outLink/view.vue +5 -13
  773. package/src/views/user/position/dialog.vue +1 -1
  774. package/src/views/user/position/list.vue +5 -5
  775. package/src/views/user/project_tag/dialog.vue +10 -5
  776. package/src/views/user/project_tag/edit.vue +2 -2
  777. package/src/views/user/project_tag/list.vue +10 -5
  778. package/src/views/user/push_setting/list.vue +1 -1
  779. package/src/views/user/request_setting/edit.vue +258 -0
  780. package/src/views/user/request_setting/list.vue +248 -0
  781. package/src/views/user/role/authConfig.vue +89 -0
  782. package/src/views/user/role/dialog.vue +70 -48
  783. package/src/views/user/role/edit.vue +311 -108
  784. package/src/views/user/role/list.vue +260 -182
  785. package/src/views/user/role/voc_edit.vue +293 -0
  786. package/src/views/user/sale_org/dialog.vue +2 -2
  787. package/src/views/user/sale_org/list.vue +5 -2
  788. package/src/views/user/system_notice/infoDialog.vue +61 -1
  789. package/src/views/user/system_notice/list.vue +1 -1
  790. package/src/views/user/system_parameter/list.vue +1 -1
  791. package/src/views/user/user/dialog.vue +47 -24
  792. package/src/views/user/user/edit.vue +1485 -1021
  793. package/src/views/user/user/form_dialog.vue +158 -0
  794. package/src/views/user/user/form_info.vue +210 -0
  795. package/src/views/user/user/form_list.vue +1 -1
  796. package/src/views/user/user/info.vue +253 -140
  797. package/src/views/user/user/list.vue +652 -563
  798. package/src/views/user/user/modifyPasswordDialog.vue +64 -53
  799. package/src/views/user/user_log_classify/list.vue +1 -1
  800. package/src/views/user/wf/iframe/index.vue +6 -1
  801. package/src/views/user/wf/iframe/index2.vue +6 -1
  802. package/src/views/user/wf/wfReport/index.vue +648 -0
  803. package/src/views/user/wf/wf_auto_submit_data/list.vue +4 -2
  804. package/src/views/user/wf/wf_manage/list.vue +1116 -673
  805. package/src/views/user/wf/wf_manage/list2.vue +875 -0
  806. package/src/views/user/wf/wf_manage/wfContentDialog.vue +47 -22
  807. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  808. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +109 -0
  809. package/src/views/user/wf/wf_obj_config/itemEdit.vue +25 -1
  810. package/src/views/user/wf/wf_obj_config/list.vue +115 -10
  811. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  812. package/src/views/user/wf/wf_transfer_setting/edit.vue +282 -0
  813. package/src/views/user/wf/wf_transfer_setting/list.vue +319 -0
  814. package/src/views/user/workbench_menu/list.vue +555 -0
  815. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +0 -207
  816. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1347
  817. package/src/utils/wf.js +0 -21
@@ -1,1556 +1,1665 @@
1
- <template>
2
- <h5-card-pane label="流程信息">
3
- <template #default>
4
- <div class="flowPath-box">
5
- <div class="t"><span>任务情况</span></div>
6
- <div class="c">
7
- <div class="name">
8
- {{ (wfInfo.createDate ? wfInfo.createDate.substring(0, 10) : '') + wfInfo.name }}
9
- <el-tag :type="getWfStatusType()" size="mini">{{ getWfStatusLabel() }}</el-tag>
10
- </div>
11
- </div>
12
- <div class="m2">
13
- <div class="t"><span>流程图</span></div>
14
- <div class="c">
15
- <el-button icon="" class="btn" @click="showPreviewDialog=true" icon="el-icon-view">查看流程图</el-button>
16
- </div>
17
- </div>
18
- <div class="m2">
19
- <div class="t"><span>任务情况</span></div>
20
- <div class="c">
21
- <el-button icon="" class="btn" @click="showRenwuDialog=true" icon="iconfont icon-preview">查看任务情况
22
- </el-button>
23
- </div>
24
- </div>
25
-
26
- </div>
27
- <div class="flowPath-btns">
28
- <el-button type="success" plain class="btn" @click="openAgreeDialog" v-show="wfInfo.toSubmit"
29
- icon="iconfont icon-tongguo">{{ $t2('通过', 'components.wf.agree') }}
30
- </el-button>
31
- <el-button type="warning" plain class="btn" @click="openManualDialog" v-show="wfInfo.toInterrupt"
32
- icon="iconfont icon-caozuozhongduan">{{ $t2('中断', 'components.wf.manual') }}
33
- </el-button>
34
- <el-button type="danger" plain class="btn" @click="rejectWfTask" v-show="wfInfo.toReject"
35
- icon="iconfont icon-a-bohui1">{{ $t2('驳回', 'components.wf.reject') }}
36
- </el-button>
37
- <el-button type="primary" plain class="btn" @click="openChangeWfForm"
38
- v-show="(wfInfo.toTransfer===null || wfInfo.toTransfer===undefined) ? wfInfo.toSubmit: wfInfo.toTransfer"
39
- icon="iconfont icon-zhuanban">{{ $t2('转办', 'components.wf.transfer') }}
40
- </el-button>
41
- <el-button type="primary" plain class="btn" @click="openUrgingDialog" v-show="wfInfo.toInterrupt"
42
- icon="iconfont icon-cuiban">{{ $t2('催办', 'components.wf.urging') }}
43
- </el-button>
44
- <el-button type="primary" plain class="btn" @click="openAddIncreaseSign" v-show="wfInfo.toAddIncreaseSign"
45
- icon="el-icon-plus">{{ $t2('加签', 'components.wf.addIncreaseSign') }}
46
- </el-button>
47
- <el-button type="primary" plain class="btn" @click="openDeleteTaskUserDialog"
48
- v-show="wfInfo.toDeleteIncreaseSign"
49
- icon="el-icon-delete">{{ $t2('减签', 'components.wf.deleteIncreaseSign') }}
50
- </el-button>
51
- <el-button type="primary" plain class="btn" @click="openTalkDialog()"
52
- icon="el-icon-chat-dot-square" v-if="toTalk && wfInfo.toLinkup">
53
- {{ $t2('沟通', 'components.wf.talk') }}
54
- </el-button>
55
- <el-button type="primary" plain class="btn" @click="openSetCandidateDialog(null)"
56
- v-show="wfInfo.toSetCandidate"
57
- icon="el-icon-user">{{ $t2('修改候选人', 'components.wf.setCandidate') }}
58
- </el-button>
59
- <el-button type="danger" plain class="btn" @click="openRevokeDialog(null)"
60
- v-show="wfInfo.toRevoke"
61
- icon="el-icon-document-delete">{{ $t2('撤回', 'components.wf.revoke') }}
62
- </el-button>
63
- </div>
64
- <div class="pop-box" v-if="showPreviewDialog">
65
- <div>
66
- <div class="header-box">
67
- <i class="back el-icon-close" @click="showPreviewDialog=false"></i>流程图预览
68
- </div>
69
- <div class="flex" style="height:calc(100vh - 38px)">
70
- <el-form label-position="top" class="form-box">
71
- <div class="tit"><span>{{
72
- (wfInfo.createDate ? wfInfo.createDate.substring(0, 10) : '') + wfInfo.name
73
- }}</span></div>
74
- <iframe style="width: 100%;flex:1" :src="wfImage"></iframe>
75
- </el-form>
76
- </div>
77
- <div class="fixed-bottom-btns">
78
- <el-button type="primary" plain class="btn" @click="showPreviewDialog=false" icon="el-icon-close">取 消
79
- </el-button>
80
- <el-button type="primary" class="btn" icon="el-icon-check" @click="showPreviewDialog=false">确 定
81
- </el-button>
82
- </div>
83
- </div>
84
- </div>
85
-
86
- <div class="pop-box" v-if="showRenwuDialog">
87
- <div>
88
- <div class="header-box">
89
- <i class="back el-icon-close" @click="showRenwuDialog=false"></i>任务情况预览
90
- </div>
91
- <div class="flex" style="height:calc(100vh - 38px);overflow:auto">
92
- <div class="h5-process-info">
93
- <div class="item" v-for="wftaskLineData in wftaskData" :key="wftaskLineData.id">
94
- <div class="time">
95
- {{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(0, 10) : '' }}
96
- <br/>
97
- {{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(11) : '' }}
98
- </div>
99
- <div class="status"
100
- :class="taskStatuses[wftaskLineData.type]?taskStatuses[wftaskLineData.type].class:''">
101
- {{ taskStatuses[wftaskLineData.type] ? taskStatuses[wftaskLineData.type].value : null }}
102
- </div>
103
- <i class="circle"></i>
104
- <div class="info">
105
- <p>
106
- <span class="name">{{ wftaskLineData.taskName }}</span>
107
- <span>{{ $t2('执行人', 'components.wf.approverName') }}:{{ wftaskLineData.approverName }}</span>
108
- <span>
109
- {{ $t2('候选人', 'components.wf.candidateName') }}:
110
- <span class="">{{ wftaskLineData.candidateNames }}</span>
111
- </span>
112
- </p>
113
- <p class="t"><span class="t1">{{ $t2('备注/意见', 'components.wf.opinion') }}:</span><span>{{
114
- wftaskLineData.opinion
115
- }}</span></p>
116
- </div>
117
- </div>
118
- </div>
119
- </div>
120
- <div class="fixed-bottom-btns">
121
- <el-button type="primary" plain class="btn" @click="showRenwuDialog=false" icon="el-icon-close">取 消
122
- </el-button>
123
- <el-button type="primary" class="btn" icon="el-icon-check" @click="showRenwuDialog=false">确 定
124
- </el-button>
125
- </div>
126
- </div>
127
- </div>
128
-
129
- <div class="pop-tipsBox" style="display: block;" v-if="showWfManualDialog">
130
- <div>
131
- <i class="icon"></i>
132
- <div class="cont">
133
- <p class="name">
134
- {{ $t2('流程中断', 'components.wf.wfManual') }}<span>—</span><b
135
- class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
136
- wfInfo.taskName
137
- }}</b>
138
- </p>
139
- <p class="txt">{{ $t2('您确定要中断流程吗?', 'components.wf.manualTip') }}</p>
140
- </div>
141
- <div class="btns">
142
- <el-button type="primary" class="btn" plain icon="el-icon-close" @click="showWfManualDialog = false">{{
143
- $t2('取 消', 'system.button.cancel2')
144
- }}
145
- </el-button>
146
- <el-button type="primary" class="btn" icon="el-icon-check" @click="manualEndWf()">{{
147
- $t2('确 定', 'system.button.confirm2')
148
- }}
149
- </el-button>
150
- </div>
151
- </div>
152
- </div>
153
- <div class="pop-tipsBox" style="display: block;" v-if="rejectDialogVisible">
154
- <div>
155
- <i class="icon"></i>
156
- <div class="cont">
157
- <p class="name">{{ $t2('流程驳回', 'components.wf.wfReject') }}<span
158
- >—</span><b
159
- class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
160
- wfInfo.taskName
161
- }}</b></p>
162
- <el-form label-position="top" class="form-box">
163
- <el-form-item label="驳回节点" field="nodeId">
164
- <el-select v-model="rejectForm.nodeId"
165
- :placeholder="$t2('请选择驳回节点', 'components.wf.rejectNodePlaceholder')">
166
- <el-option v-for="(rejectNode,index) in rejectNodes" :label="rejectNode.nodeName"
167
- :value="rejectNode.nodeId" :key="index"></el-option>
168
- </el-select>
169
- </el-form-item>
170
- <el-form-item label="驳回意见" field="opinion">
171
- <el-input type="textarea" :rows="8"
172
- :placeholder="$t2('请输入内容', 'components.wf.rejectOpinionPlaceholder')"
173
- v-model="rejectForm.opinion" class="txt"></el-input>
174
- </el-form-item>
175
- </el-form>
176
- </div>
177
- <div class="btns">
178
- <el-button type="primary" class="btn" plain icon="el-icon-close" @click="rejectDialogVisible = false">{{
179
- $t2('取 消', 'system.button.cancel2')
180
- }}
181
- </el-button>
182
- <el-button type="primary" class="btn" icon="el-icon-check" @click="subRejectForm()">{{
183
- $t2('确 定', 'system.button.confirm2')
184
- }}
185
- </el-button>
186
- </div>
187
- </div>
188
- </div>
189
- <div class="pop-tipsBox" style="display: block;" v-if="agreeDialogVisible">
190
- <div>
191
- <i class="icon"></i>
192
- <div class="cont">
193
- <p class="name">{{ $t2('流程通过', 'components.wf.wfAgree') }}<span
194
- >—</span><b
195
- class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
196
- wfInfo.taskName
197
- }}</b></p>
198
- <el-form label-position="top" class="form-box">
199
- <el-form-item label="通过节点" field="nodeId">
200
- <el-select v-model="agreeForm.nodeId"
201
- :placeholder="$t2('请选择通过节点', 'components.wf.agreeNodePlaceholder')">
202
- <el-option v-for="(node,index) in agreeNodes" :label="node.nodeName"
203
- :value="node.nodeId" :key="index"></el-option>
204
- </el-select>
205
- </el-form-item>
206
- <el-form-item label="通过意见" field="opinion">
207
- <el-input type="textarea" :rows="8" :placeholder="$t2(`请填写您的意见~
208
- 注:
209
- 通过默认意见为“同意”
210
- `, 'components.wf.agreeOpinionPlaceholder')" v-model="agreeForm.opinion"></el-input>
211
- </el-form-item>
212
- </el-form>
213
- </div>
214
- <div class="btns">
215
- <el-button type="primary" class="btn" plain icon="el-icon-close" @click="agreeDialogVisible = false">{{
216
- $t2('取 消', 'system.button.cancel2')
217
- }}
218
- </el-button>
219
- <el-button type="primary" class="btn" icon="el-icon-check" @click="subAgreeForm()">{{
220
- $t2('确 定', 'system.button.confirm2')
221
- }}
222
- </el-button>
223
- </div>
224
- </div>
225
- </div>
226
- <div class="pop-tipsBox" style="display: block;" v-if="changeWfDialogVisible">
227
- <div>
228
- <i class="icon"></i>
229
- <div class="cont">
230
- <p class="name">{{ $t2('流程转办', 'components.wf.wfTransfer') }}<span>—</span><b
231
- class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
232
- wfInfo.taskName
233
- }}</b></p>
234
- <el-form label-position="top" class="form-box">
235
- <el-form-item label="转办人" field="nodeId">
236
- <el-input
237
- class="search-input"
238
- max="200"
239
- v-model="changeWfForm.userNickNames"
240
- @clear="
241
- changeWfForm.userIds = '';
242
- changeUserRows = [];
243
- $forceUpdate();
244
- "
245
- v-el-readonly
246
- clearable
247
- >
248
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showUserDialog = true"></i>
249
- </el-input>
250
- </el-form-item>
251
- <el-form-item label="转办意见" field="opinion">
252
- <el-input type="textarea" :rows="8"
253
- :placeholder="$t2('请输入内容', 'components.wf.transferOpinionPlaceholder')"
254
- v-model="changeWfForm.opinion"></el-input>
255
- </el-form-item>
256
- </el-form>
257
- </div>
258
- <div class="btns">
259
- <el-button type="primary" class="btn" plain @click="changeWfDialogVisible = false">{{
260
- $t2('取 消', 'system.button.cancel2')
261
- }}
262
- </el-button>
263
- <el-button type="primary" class="btn" @click="subChangeWfForm()">
264
- {{ $t2('确认转办', 'components.wf.confirmTransfer') }}
265
- </el-button>
266
- </div>
267
- </div>
268
- </div>
269
- <div class="pop-tipsBox" style="display: block;" v-if="showAddIncreaseSignDialog">
270
- <div>
271
- <i class="icon"></i>
272
- <div class="cont">
273
- <p class="name">
274
- {{ $t2('流程加签', 'components.wf.wfAddIncreaseSign') }}<span>—</span><b
275
- class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
276
- wfInfo.taskName
277
- }}</b>
278
- </p>
279
- <el-form label-position="top" class="form-box">
280
- <el-form-item label="候选人">
281
- <el-input
282
- class="search-input"
283
- max="200"
284
- v-model="addIncreaseSignForm.userNickNames"
285
- @clear="
286
- addIncreaseSignUsers = [];
287
- $forceUpdate();
288
- "
289
- :placeholder="$t2('候选人', 'components.wf.addIncreaseSignUser')"
290
- v-el-readonly
291
- clearable
292
- >
293
- <i slot="suffix" class="el-input__icon el-icon-search"
294
- @click="showAddTaskUserDialog = true"></i>
295
- </el-input>
296
- </el-form-item>
297
- <el-form-item label="加签意见" field="opinion">
298
- <el-input type="textarea" :rows="8"
299
- :placeholder="$t2('请输入内容', 'components.wf.addIncreaseSignOpinionPlaceholder')"
300
- v-model="addIncreaseSignForm.opinion"></el-input>
301
- </el-form-item>
302
- </el-form>
303
- </div>
304
- <div class="btns">
305
- <el-button type="primary" class="btn" plain @click="showAddIncreaseSignDialog = false">{{
306
- $t2('取 消', 'system.button.cancel2')
307
- }}
308
- </el-button>
309
- <el-button type="primary" class="btn" @click="submitAddTaskUserForm(0)">
310
- {{ $t2('确认加签', 'components.wf.confirmAddIncreaseSign') }}
311
- </el-button>
312
- </div>
313
- </div>
314
- </div>
315
-
316
- <user-dialog v-if="showUserDialog" :visiable.sync="showUserDialog" @close="showUserDialog = false"
317
- @confirm="userConfirm" multi="true" :param.sync="wfUserParamForTransfer"
318
- :rows="changeUserRows"></user-dialog>
319
- <urgingDialog v-if="urgingDialogVisible" :visiable.sync="urgingDialogVisible" :wfInfo="wfInfo"
320
- :current_prefix="current_prefix"
321
- @confirm="reloadContent" multi="true"></urgingDialog>
322
- <deleteTaskUserDialog v-if="showDeleteTaskUserDialog" :visiable.sync="showDeleteTaskUserDialog" :wfInfo="wfInfo"
323
- :current_prefix="current_prefix"
324
- @confirm="reloadContent" multi="true"></deleteTaskUserDialog>
325
-
326
- <addTaskUserdialog v-if="showAddTaskUserDialog" :visiable.sync="showAddTaskUserDialog" :wfInfo="wfInfo"
327
- :current_prefix="current_prefix" :rows.sync="addIncreaseSignUsers"
328
- @confirm="confirmAddTaskUser" multi="true"
329
- :param.sync="wfUserParamForAddSign"></addTaskUserdialog>
330
- <user-dialog v-if="showTalkUserDialog" :visiable.sync="showTalkUserDialog" @close="showTalkUserDialog = false"
331
- @confirm="confirmTalkUserDialog" multi="false" :param.sync="wfUserParamForTalk"></user-dialog>
332
- <setCandidateDialog v-if="showSetCandidateDialog" :visiable.sync="showSetCandidateDialog"
333
- @close="closeSetCandidateDialog"
334
- :wfInfo="wfInfo"
335
- :current_prefix="current_prefix"></setCandidateDialog>
336
- </template>
337
- </h5-card-pane>
338
- </template>
339
- <script>
340
- import Vue from "vue";
341
-
342
- import settingConfig from "@/settings";
343
- import commonMixin from "../../../mixins/mobile/common/index";
344
- import {getToken} from "../../../utils/auth";
345
-
346
- let configUtil = {
347
- baseUrl: process.env.VUE_APP_BASE_API,
348
- getToken,
349
- settingConfig,
350
- Vue,
351
- requireView: (url) => {
352
- return require("../../../views" + url).default;
353
- },
354
- };
355
-
356
- function appendPrevChildDom(parentDom, newDom) {
357
- if (parentDom.hasChildNodes()) {
358
- let currentDom = parentDom.children[0];
359
- parentDom.insertBefore(newDom, currentDom);
360
- } else {
361
- parentDom.append(newDom);
362
- }
363
- }
364
-
365
- function getTarget(t) {
366
- return t.parentVue;
367
- }
368
-
369
- export default {
370
- mixins: [commonMixin],
371
- props: {
372
- _wfInfo: Object,
373
- _taskParam: Object,
374
- wfOption: Object,
375
- defaultShowWfContent: Boolean,
376
- },
377
- components: {
378
- UserDialog: () => import('../../../views/mobile/user/user/dialog.vue'),
379
- urgingDialog: () => import('./urgingDialog'),
380
- deleteTaskUserDialog: () => import('./deleteTaskUserDialog'),
381
- addTaskUserdialog: () => import('./addTaskUserdialog'),
382
- setCandidateDialog: () => import('./setCandidateDialog')
383
- },
384
- computed: {
385
- current_prefix() {
386
- return this.serviceId ? "/" + this.serviceId : "";
387
- },
388
- viewTarget() {
389
- return getTarget(this);
390
- },
391
- isHideWf() {
392
- let that = this.viewTarget;
393
- let _hideWf = that._hideWf || that.$attrs._hideWf;
394
- return _hideWf === true || _hideWf === 'true';
395
- }
396
- },
397
- data() {
398
- let showWfFold =
399
- settingConfig.showWfFold != null && settingConfig.showWfFold != undefined
400
- ? settingConfig.showWfFold
401
- : false;
402
- let showWfContent =
403
- showWfFold &&
404
- settingConfig.defaultShowWfContent != null &&
405
- settingConfig.defaultShowWfContent != undefined
406
- ? settingConfig.defaultShowWfContent
407
- : true;
408
- if (
409
- this.defaultShowWfContent != null &&
410
- this.defaultShowWfContent != undefined
411
- ) {
412
- showWfContent = this.defaultShowWfContent;
413
- }
414
-
415
- return {
416
- showRenwuDialog: false,
417
- showDomContent: false,
418
- showPreviewDialog: false,
419
- objId: null,
420
- wfCode: null,
421
- serviceId: null,
422
- parentVue: null,
423
- wfConfig: null,
424
-
425
- fileInfos: [],
426
- showUserDialog: false,
427
- showContent: true,
428
- objTypeCode: "",
429
- // objId: '',
430
- wfInfo: {},
431
- // currentTask: {},
432
- taskParam: {},
433
- wfImage: "",
434
- wfStartBtn: false,
435
- wfManualendBtn: false,
436
- wfSubmitBtn: false,
437
- wfRejectBtn: false,
438
- changeHandlerBtn: false,
439
- wftaskData: [],
440
- allWfTaskOpinions: [],
441
- vxeOption: {},
442
- rejectNodes: [],
443
- rejectDialogVisible: false,
444
- rejectForm: {
445
- rejectSubmitModel: null,
446
- nodeId: null,
447
- opinion: null,
448
- },
449
- formLabelWidth: "120px",
450
- agreeDialogVisible: false,
451
- agreeForm: {
452
- opinion: this.$t2('同意', 'components.wf.defaultAgreeOption'),
453
- nodeId: null,
454
- },
455
- changeWfDialogVisible: false,
456
- changeWfForm: {},
457
- changeUserRows: [],
458
- taskStatuses: {
459
- start: {
460
- class: "blue",
461
- value: this.$t2('开始', 'components.wf.startStatus'),
462
- },
463
- approve: {
464
- class: "orgn",
465
- value: this.$t2('待审批', 'components.wf.approveStatus'),
466
- },
467
- submit: {
468
- class: "green",
469
- value: this.$t2('同意', 'components.wf.submitStatus'),
470
- },
471
- reject: {
472
- class: "red",
473
- value: this.$t2('驳回', 'components.wf.rejectStatus'),
474
- },
475
- transfer: {
476
- class: "green",
477
- value: this.$t2('转办', 'components.wf.transferStatus'),
478
- },
479
- addIncreaseSign: {
480
- class: "green",
481
- value: this.$t2('加签', 'components.wf.addIncreaseSignStatus'),
482
- },
483
- revoke: {
484
- class: "red",
485
- value: this.$t2('撤回', 'components.wf.revokeStatus'),
486
- },
487
- end: {
488
- class: "gray",
489
- value: this.$t2('结束', 'components.wf.endStatus'),
490
- },
491
- },
492
- opinion: "",
493
- showWfFold: showWfFold,
494
- showWfContent: showWfContent,
495
-
496
- urgingForm: {},
497
- urgingDialogVisible: false,
498
- urgingUserIds: [],
499
- urgingUsers: [],
500
- agreeNodes: [],
501
- showWfManualDialog: false,
502
-
503
- showDeleteTaskUserDialog: false,
504
- showAddTaskUserDialog: false,
505
- wfUserParam: {},
506
- wfUserParamForTransfer: {},//转办
507
- wfUserParamForAddSign: {},//加签
508
- wfUserParamForTalk: {},//沟通
509
- tabIndex: "1",
510
- linkupOption: {},
511
- talkForm: {
512
- receiverName: null,
513
- content: null,
514
- attachmentDTOs: [],
515
- replyId: null
516
- },
517
- showTalkUserDialog: false,
518
- showTalkDialog: false,
519
- showFlowImg: true,
520
- operateType: null,
521
- addIncreaseSignUsers: [],
522
- addIncreaseSignForm: {
523
- userNickNames: null,
524
- opinion: null
525
- },
526
- showAddIncreaseSignDialog: false,
527
- showOpeaImg: true,
528
- showSetCandidateDialog: false,
529
- toTalk: false,
530
- showAllWfOpinon: false,
531
-
532
- revokeDialogVisible: false,
533
- revokeForm: {opinion: null},
534
- wfStatusMap: {
535
- 1: {label: "审核中", type: "warning"},
536
- 3: {label: "已驳回", type: "danger"},
537
- 2: {label: "已完成", type: "success"}
538
- }
539
- };
540
- },
541
- provide() {
542
- return {
543
- getParentVue: () => {
544
- return this.parentVue;
545
- }
546
- };
547
- },
548
- created() {
549
- // this.wfInfo = this._wfInfo;
550
- this.showFlowImg = settingConfig.expandWfImage === false ? false : true;
551
- this.showAllWfOpinon = settingConfig.showAllWfOpinon === true;
552
- },
553
- mounted() {
554
- this.init();
555
- },
556
- methods: {
557
- getWfStatusLabel() {
558
- return this.wfStatusMap[this.wfInfo.stat]?.label;
559
- },
560
- getWfStatusType() {
561
- return this.wfStatusMap[this.wfInfo.stat]?.type;
562
- },
563
- init() {
564
- let opt = this.wfOption;
565
- this.objId = opt.objId;
566
- this.wfCode = opt.wfCode;
567
- this.serviceId = opt.serviceId;
568
- this.parentVue = opt.parentVue;
569
- this.wfConfig = this.wfOption;
570
-
571
- let wfConfig = this.wfOption;
572
- let that = getTarget(this);
573
- let hasWf = false;
574
- let wfInfo, currentTask, taskParam;
575
- let option = {
576
- objId: this.objId,
577
- wfCode: this.wfCode
578
- }
579
- let current_prefix = this.current_prefix;
580
-
581
- let initButton = () => {
582
- /*return
583
- this.$nextTick(() => {
584
- that.$refs.wfButtonGroup.init({
585
- taskParam,
586
- wfInfo,
587
- hasWf,
588
- current_prefix,
589
- wfConfig
590
- });
591
- });*/
592
- }
593
-
594
- this.initWfInfo(option, {
595
- success: res => {
596
- if (res.objx && res.objx.procInstId) {
597
- hasWf = true;
598
- wfInfo = res.objx;
599
- this.wfInfo = wfInfo;
600
- // this.showDomContent = true;
601
-
602
- if (wfInfo.taskId) {
603
- this.getTaskParams(wfInfo.taskId, {
604
- success: res2 => {
605
- taskParam = res2.objx || {};
606
- taskParam.objId = option.objId;
607
- this.taskParam = taskParam;
608
-
609
- initButton();
610
- }
611
- });
612
- } else {
613
- initButton();
614
- }
615
- this.initOperateType();
616
- this.initForAll();
617
- } else {
618
- initButton();
619
- }
620
- }
621
- });
622
- },
623
- initWfInfo(option, httpConfig) {
624
-
625
- let that = getTarget(this);
626
- let id = option.objId;
627
- let code = option.wfCode;
628
- return that.$http({
629
- url: this.current_prefix + '/wf/getWfInfo',
630
- method: `post`,
631
- data: {
632
- objTypeCode: code,
633
- objId: id
634
- },
635
- isLoading: true,
636
- modalStrictly: true,
637
- ...httpConfig
638
- });
639
- },
640
- getTaskParams(taskId, httpConfig) {
641
- let that = getTarget(this);
642
- return that.$http({
643
- url: this.current_prefix + '/wf/getTaskVariables',
644
- method: `post`,
645
- data: {
646
- stringOne: taskId
647
- },
648
- isLoading: true,
649
- modalStrictly: true,
650
- ...httpConfig
651
- });
652
- },
653
-
654
-
655
- initOperateType() {
656
- if (this.operateType) {
657
- let wfInfo = this.wfInfo;
658
- if (wfInfo.toSubmit) {
659
- this.openAgreeDialog('submit');
660
- } else if (wfInfo.toReject) {
661
- this.rejectWfTask('reject');
662
- } else if (wfInfo.toAddIncreaseSign) {
663
- this.openAddIncreaseSign('addIncreaseSign')
664
- } else if (wfInfo.toRevoke) {
665
- this.openRevokeDialog('revoke')
666
- } else if (wfInfo.toLinkup) {
667
- this.openTalkDialog(null, null, 'talk');
668
- } else {
669
- this.operateType = null;
670
- }
671
- }
672
- },
673
- initForAll() {
674
- let that = getTarget(this);
675
- this.initWf(() => {
676
- if (this.wfInfo.procInstId) {
677
- this.initCurrentTask(this.wfInfo.procInstId, () => {
678
- this.initWftask(this.wfInfo.procInstId);
679
- this.getAllWfTaskOpinions();
680
- });
681
- this.initWfUserParam();
682
- this.initTabIndex();
683
- }
684
- });
685
- },
686
- initTabIndex() {
687
- let that = getTarget(this);
688
- that.$http({
689
- url: USER_PREFIX + "/wf_diy_attribute/getValue",
690
- method: `post`,
691
- data: {attributeKey: "param7"},
692
- isLoading: true,
693
- success: (res) => {
694
- let val = res !== null ? res.objx === true : false;
695
- this.toTalk = val;
696
- let flag = false;
697
- if (val) {
698
- let flag1 = that.$attrs._isNotifyMessage == true || that.$attrs._isNotifyMessage == "true";
699
- if (flag1) {
700
- this.tabIndex = "2";
701
- }
702
- if (settingConfig.autoOpenWfLinkup) {
703
- flag = true;
704
- let flag2 = that.$attrs._wfNotifyType == "wfLinkup";
705
- let flag3 = flag1 && flag2;
706
- if (flag3) {
707
- this.$nextTick(() => {
708
- let wfTabPane = this.$refs.wfTabPane;
709
- if (!wfTabPane.showContent) {
710
- wfTabPane.handleFold();
711
- }
712
- });
713
- }
714
- }
715
- }
716
- this.initLinkup(flag);
717
- }
718
- });
719
-
720
- },
721
- initWf(done) {
722
- var data = this.wfInfo;
723
- if (data && data.procInstId) {
724
- /** 流程状态:0未启动,1审核中,2已完成,3驳回,4中断 */
725
- var statuses = {
726
- 1: '<span class="tag">' + this.$t2('审核中', 'components.wf.wfStatus1') + '</span>',
727
- 3: '<span class="tag red">' + this.$t2('已驳回', 'components.wf.wfStatus2') + '</span>',
728
- 2: '<span class="tag green">' + this.$t2('已完成', 'components.wf.wfStatus3') + '</span>',
729
- };
730
- var statusStr = "";
731
- if (data.stat != null) {
732
- statusStr = statuses[data.stat] || "";
733
- }
734
- data.statusStr = statusStr;
735
- this.wfInfo = data;
736
-
737
- this.wfStartBtn = false;
738
- if (data.status != 2 && data.starterId) {
739
- this.wfManualendBtn = true;
740
- }
741
- this.wfSubmitBtn = false;
742
- this.wfRejectBtn = false;
743
-
744
- var url =
745
- this.current_prefix +
746
- "/wf/flowImage?procInstId=" +
747
- data.procInstId +
748
- "&_r=" +
749
- Math.random() +
750
- "&access_token=" +
751
- configUtil.getToken();
752
- this.wfImage = configUtil.baseUrl + url;
753
- done();
754
- }
755
- },
756
- initCurrentTask(procInstId, done) {
757
- if (this.wfInfo.taskId) {
758
- this.wfSubmitBtn = true;
759
- this.wfRejectBtn = true;
760
- this.changeHandlerBtn = true;
761
- }
762
- done();
763
- },
764
- initWftask(procInstId) {
765
- let that = getTarget(this);
766
- that.$http({
767
- url: this.current_prefix + "/wf/getWfTaskOpinionMerge",
768
- data: {
769
- stringOne: procInstId,
770
- },
771
- method: "post",
772
- isLoading: true,
773
- modalStrictly: true,
774
- success: (resultmsg) => {
775
- var datas = resultmsg.objx || [];
776
- this.wftaskData = datas;
777
- },
778
- });
779
- },
780
- getAllWfTaskOpinions() {
781
- if (!this.showAllWfOpinon) {
782
- return;
783
- }
784
- let that = getTarget(this);
785
- let wfInfo = this.wfInfo;
786
- that.$http({
787
- url: this.current_prefix + "/wf/getAllWfTaskOpinions",
788
- data: {
789
- objId: wfInfo.objId,
790
- objTypeCode: wfInfo.objTypeCode
791
- },
792
- method: "post",
793
- isLoading: true,
794
- modalStrictly: true,
795
- success: (resultmsg) => {
796
- var datas = resultmsg.objx || [];
797
- this.allWfTaskOpinions = datas;
798
- },
799
- });
800
- },
801
- openManualDialog(operateType) {
802
- this.operateType = operateType;
803
- this.showWfManualDialog = true;
804
- },
805
- manualEndWf() {
806
- this.showWfManualDialog = false;
807
- let that = getTarget(this);
808
- var procInstId = this.wfInfo.procInstId;
809
- var taskId = this.wfInfo.taskId ? this.wfInfo.taskId : "";
810
- var data = JSON.stringify({
811
- uuid: this.wfInfo.uuid,
812
- });
813
- that.$http({
814
- url: this.current_prefix + "/wf/interrupt",
815
- data: data,
816
- method: "post",
817
- headers: {
818
- "Content-Type": "application/json;charset=utf-8",
819
- },
820
- isLoading: true,
821
- success: (resultMsg) => {
822
- that.$message({
823
- message: resultMsg.content,
824
- type: "success",
825
- duration: 500,
826
- onClose: (t) => {
827
- this.reloadContent();
828
- this.closeWinOnCheck(3);
829
- },
830
- });
831
- },
832
- });
833
- },
834
- async rejectWfTask(operateType) {
835
- let that = getTarget(this);
836
- var procInstId = this.wfInfo.procInstId;
837
- var taskId = this.wfInfo.taskId;
838
- var destinations = [];
839
-
840
- await that.$http({
841
- url: this.current_prefix + "/wf/getPreIncomeNodes",
842
- data: {
843
- stringOne: taskId,
844
- },
845
- method: "post",
846
- //contentType: 'application/json;charset=utf-8',
847
- isLoading: true,
848
- success: (resultMsg) => {
849
- destinations = (resultMsg.objx || []).reverse();
850
- },
851
- });
852
-
853
- if (destinations == null) {
854
- return false;
855
- }
856
- if (destinations.length == 0) {
857
- that.$message({
858
- message: this.$t2('无法驳回,没有目标节点', 'components.wf.rejectWarnMsg1'),
859
- type: "error",
860
- duration: 2 * 1000,
861
- });
862
- return false;
863
- }
864
- this.operateType = operateType;
865
-
866
- this.rejectForm.rejectSubmitModel = this.wfInfo.toRejectNode == false ? 2 : null
867
- this.rejectForm.nodeId = destinations[0].nodeId;
868
- this.rejectForm.opinion = "";
869
- this.rejectNodes = destinations;
870
- this.rejectDialogVisible = true;
871
- },
872
- subRejectForm() {
873
- let that = getTarget(this);
874
- var procInstId = this.wfInfo.procInstId;
875
- var taskId = this.wfInfo.taskId;
876
-
877
- if (!this.rejectForm.nodeId) {
878
- that.$message({
879
- message: this.$t2('请选择驳回节点', 'components.wf.rejectWarnMsg2'),
880
- type: "error",
881
- duration: 2 * 1000,
882
- });
883
- return false;
884
- }
885
-
886
- if (!this.rejectForm.opinion) {
887
- that.$message({
888
- message: this.$t2('请输入驳回意见', 'components.wf.rejectWarnMsg3'),
889
- type: "error",
890
- duration: 2 * 1000,
891
- });
892
- return false;
893
- }
894
-
895
- var data = JSON.stringify({
896
- taskId: taskId,
897
- uuid: this.wfInfo.uuid,
898
- nodeId: this.rejectForm.nodeId,
899
- suggestion: this.rejectForm.opinion,
900
- rejectSubmitModel: this.rejectForm.rejectSubmitModel
901
- });
902
- this.rejectDialogVisible = false;
903
- that.$http({
904
- url: this.current_prefix + "/wf/reject",
905
- data: data,
906
- method: "post",
907
- headers: {
908
- "Content-Type": "application/json;charset=utf-8",
909
- },
910
- isLoading: true,
911
- success: (resultMsg) => {
912
- that.$message({
913
- message: resultMsg.content,
914
- type: "success",
915
- duration: 500,
916
- onClose: (t) => {
917
- this.reloadContent();
918
- this.closeWinOnCheck(2);
919
- },
920
- });
921
- },
922
- });
923
- },
924
- openAgreeDialog(operateType) {
925
- this.operateType = operateType;
926
- let that = getTarget(this);
927
- this.agreeForm = {
928
- opinion: this.$t2('同意', 'components.wf.defaultAgreeOption'),
929
- nodeId: null,
930
- };
931
- this.agreeNodes = [];
932
- that.$http({
933
- url: this.current_prefix + "/wf/getNextOutgoingNodes",
934
- data: {
935
- stringOne: this.wfInfo.taskId,
936
- },
937
- method: "post",
938
- isLoading: true,
939
- success: (res) => {
940
- let nodes = res.objx || [];
941
- /*if (tq == true) {
942
- nodes.reverse();
943
- }*/
944
- if (nodes.length) {
945
- this.agreeForm.nodeId = nodes[0].nodeId;
946
- }
947
- this.agreeNodes = nodes;
948
- this.agreeDialogVisible = true;
949
- },
950
- });
951
- },
952
- subAgreeForm() {
953
- let wfConfig = this.wfConfig;
954
- let done = () => {
955
- this.subAgreeHandle();
956
- }
957
- if (wfConfig.onBeforeAgree) {
958
- wfConfig.onBeforeAgree(done)
959
- } else {
960
- done();
961
- }
962
- },
963
- subAgreeHandle() {
964
- let that = getTarget(this);
965
- let nodeId = null;
966
- if (this.agreeNodes.length) {
967
- if (!this.agreeForm.nodeId) {
968
- that.$message({
969
- message: this.$t2('请选择节点', 'components.wf.agreeWarnMsg1'),
970
- type: "error",
971
- duration: 2 * 1000,
972
- });
973
- return;
974
- }
975
- nodeId = this.agreeForm.nodeId;
976
- }
977
-
978
- var procInstId = this.wfInfo.procInstId;
979
- var taskId = this.wfInfo.taskId;
980
- var memo = this.agreeForm.opinion || this.$t2('同意', 'components.wf.defaultAgreeOption');
981
- var data = JSON.stringify({
982
- taskId: taskId,
983
- uuid: this.wfInfo.uuid,
984
- suggestion: memo,
985
- nodeId: nodeId,
986
- });
987
- this.agreeDialogVisible = false;
988
- that.$http({
989
- url: this.current_prefix + "/wf/submit",
990
- data: data,
991
- method: "post",
992
- headers: {
993
- "Content-Type": "application/json;charset=utf-8",
994
- },
995
- isLoading: true,
996
- success: (resultMsg) => {
997
- if (resultMsg.objx && resultMsg.objx.code == "999999") {
998
- this.errorSubmit({
999
- taskId: taskId,
1000
- uuid: this.wfInfo.uuid,
1001
- suggestion: memo,
1002
- errorMsg: resultMsg.objx.errorMsg
1003
- });
1004
- } else {
1005
- that.$message({
1006
- message: resultMsg.content,
1007
- type: "success",
1008
- duration: 500,
1009
- onClose: (t) => {
1010
- this.reloadContent();
1011
- this.closeWinOnCheck(1);
1012
- },
1013
- });
1014
- }
1015
- },
1016
- });
1017
- },
1018
- errorSubmit(data) {
1019
- let that = getTarget(this);
1020
- that.$http({
1021
- url: this.current_prefix + "/wf/errorSubmit",
1022
- data: data,
1023
- method: "post",
1024
- isLoading: true,
1025
- success: (resultMsg) => {
1026
- that.$message({
1027
- message: resultMsg.content,
1028
- type: "success",
1029
- duration: 500,
1030
- onClose: (t) => {
1031
- this.reloadContent();
1032
- this.closeWinOnCheck(1);
1033
- },
1034
- });
1035
- },
1036
- });
1037
- },
1038
- openChangeWfForm(operateType) {
1039
- this.operateType = operateType;
1040
- this.changeWfDialogVisible = true;
1041
- this.changeUserRows = [];
1042
- this.changeWfForm = {
1043
- userIds: [],
1044
- userNickNames: null,
1045
- opinion: null,
1046
- };
1047
- },
1048
- subChangeWfForm() {
1049
- let that = getTarget(this);
1050
- var procInstId = this.wfInfo.procInstId;
1051
- var taskId = this.wfInfo.taskId;
1052
-
1053
- var userIds = this.changeWfForm.userIds || [];
1054
- var opinion = this.changeWfForm.opinion || null;
1055
-
1056
- if (!userIds.length) {
1057
- that.$message({
1058
- message: this.$t2('请选择转办人', 'components.wf.transferWarnMsg1'),
1059
- type: "error",
1060
- duration: 2000,
1061
- onClose: (t) => {
1062
- },
1063
- });
1064
- return false;
1065
- }
1066
-
1067
- var data = JSON.stringify({
1068
- taskId: taskId,
1069
- uuid: this.wfInfo.uuid,
1070
- transferTo: userIds,
1071
- suggestion: opinion,
1072
- });
1073
- this.changeWfDialogVisible = false;
1074
- that.$http({
1075
- url: this.current_prefix + "/wf/transfer",
1076
- data: data,
1077
- method: "post",
1078
- headers: {
1079
- "Content-Type": "application/json;charset=utf-8",
1080
- },
1081
- isLoading: true,
1082
- success: (resultMsg) => {
1083
- that.$message({
1084
- message: resultMsg.content,
1085
- type: "success",
1086
- duration: 500,
1087
- onClose: (t) => {
1088
- this.reloadContent();
1089
- this.closeWinOnCheck(4);
1090
- },
1091
- });
1092
- },
1093
- });
1094
- },
1095
- userConfirm(rows) {
1096
- if (rows.length > 0) {
1097
- let changeUserRows = this.changeUserRows;
1098
- let ids = changeUserRows.map((changeUserRow) => changeUserRow.id);
1099
- let addRows = rows.filter((row) => !ids.includes(row.id));
1100
- changeUserRows.push(...addRows);
1101
-
1102
- let row = rows[0];
1103
- this.changeWfForm.userIds = changeUserRows.map(
1104
- (changeUserRow) => changeUserRow.id
1105
- );
1106
- this.changeWfForm.userNickNames = changeUserRows
1107
- .map((changeUserRow) => changeUserRow.nickName)
1108
- .join(",");
1109
- }
1110
- },
1111
- reloadContent() {
1112
- let that = getTarget(this);
1113
- that.$baseReload();
1114
- },
1115
- closeWinOnCheck(flag) {
1116
- //_closeWindowOnCheck=true, 1提交,2驳回,3中断,4转办时,5沟通 关闭窗口
1117
- let that = getTarget(this);
1118
- let _closeWindowOnCheck = that.$attrs._closeWindowOnCheck || that._closeWindowOnCheck;
1119
- if (_closeWindowOnCheck === true || _closeWindowOnCheck === "true") {
1120
- window.close && window.close();
1121
- }
1122
- let _handleCallback = that.$attrs._handleCallback || that._handleCallback;
1123
- _handleCallback && _handleCallback(flag);
1124
- },
1125
- manualCallback() {
1126
- this.$emit("manualCallback");
1127
- },
1128
- openUrgingDialog(operateType) {
1129
- this.operateType = operateType;
1130
- this.urgingDialogVisible = true;
1131
- },
1132
- openDeleteTaskUserDialog(operateType) {
1133
- this.operateType = operateType;
1134
- this.showDeleteTaskUserDialog = true;
1135
- },
1136
- openAddTaskUserDialog(operateType) {
1137
- this.operateType = operateType;
1138
- this.showAddTaskUserDialog = true;
1139
- },
1140
- openAddIncreaseSign(operateType) {
1141
- this.operateType = operateType;
1142
- this.addIncreaseSignUsers = [];
1143
- this.addIncreaseSignForm = {userNickNames: null};
1144
- this.showAddIncreaseSignDialog = true;
1145
- },
1146
- initWfUserParam(callback) {
1147
- this.initTransferUserParam();//转办
1148
- this.initAddSignUserParam();//加签
1149
- this.initTalkUserParam();//沟通
1150
- },
1151
- //
1152
- initTransferUserParam(callback) {
1153
- //初始化转办用户参数
1154
- let that = getTarget(this);
1155
- return that.$http({
1156
- url: USER_PREFIX + "/wf_diy_attribute/getValue",
1157
- method: `post`,
1158
- data: {attributeKey: "param1"},
1159
- isLoading: true,
1160
- modalStrictly: true,
1161
- success: (res) => {
1162
- this.wfUserParamForTransfer = res.objx || {};
1163
- callback && callback();
1164
- },
1165
- });
1166
- },
1167
- initAddSignUserParam(callback) {
1168
- //初始化加签用户参数
1169
- let that = getTarget(this);
1170
- return that.$http({
1171
- url: USER_PREFIX + "/wf_diy_attribute/getValue",
1172
- method: `post`,
1173
- data: {attributeKey: "param2"},
1174
- isLoading: true,
1175
- modalStrictly: true,
1176
- success: (res) => {
1177
- this.wfUserParamForAddSign = res.objx || {};
1178
- callback && callback();
1179
- },
1180
- });
1181
- },
1182
- initTalkUserParam(callback) {
1183
- //初始化沟通用户参数
1184
- let that = getTarget(this);
1185
- return that.$http({
1186
- url: USER_PREFIX + "/wf_diy_attribute/getValue",
1187
- method: `post`,
1188
- data: {attributeKey: "param3"},
1189
- isLoading: true,
1190
- modalStrictly: true,
1191
- success: (res) => {
1192
- this.wfUserParamForTalk = res.objx || {};
1193
- callback && callback();
1194
- },
1195
- });
1196
- },
1197
- //
1198
- resetLinkup() {
1199
- this.formData = {};
1200
- this.$refs["table-linkup"].commitProxy("reload");
1201
- },
1202
- searchLinkup() {
1203
- this.$refs["table-linkup"].commitProxy("reload");
1204
- },
1205
- initLinkup(flag) {
1206
- return
1207
- let h = this.$createElement;
1208
- let statusMap = {
1209
- 0: this.$t2('未完成', 'components.wf.talkStatus0'),
1210
- 1: this.$t2('已完成', 'components.wf.talkStatus1'),
1211
- 2: this.$t2('已取消', 'components.wf.talkStatus2')
1212
- };
1213
- let tableOption = {
1214
- vue: this,
1215
- tableRef: "table-linkup",
1216
- tableName: "wf_table-linkup",
1217
- path: this.current_prefix + "/wf_linkup/listPage",
1218
- param: () => {
1219
- return {
1220
- uuid: this.wfInfo.uuid,
1221
- };
1222
- },
1223
- config: {
1224
- height: 350
1225
- },
1226
- columns: [
1227
- {type: "checkbox", width: 48, resizable: false, fixed: "left"},
1228
- {
1229
- title: this.$t2('任务名称', 'components.wf.taskName'),
1230
- field: "taskName",
1231
- width: 150,
1232
- fixed: "left",
1233
- },
1234
- {
1235
- title: this.$t2('发送人', 'components.wf.senderName'),
1236
- field: "senderName",
1237
- width: 150,
1238
- slots: {
1239
- default: "sender",
1240
- },
1241
- },
1242
- {
1243
- title: this.$t2('接收人', 'components.wf.receiverName'),
1244
- field: "receiverName",
1245
- width: 150,
1246
- slots: {
1247
- default: "receiver",
1248
- },
1249
- },
1250
- {
1251
- title: this.$t2('沟通内容', 'components.wf.talkContent'),
1252
- field: "content",
1253
- width: 250,
1254
- showOverflow: false,
1255
- slots: {
1256
- default: ({row, rowIndex}) => {
1257
- return row.replyId ? ("[" + this.$t2('回复', 'components.wf.reply') + "]" + row.content) : row.content;
1258
- },
1259
- },
1260
- },
1261
- {
1262
- width: 150,
1263
- title: this.$t2('沟通资料', 'components.wf.talkAttachment'),
1264
- field: "attachmentImage",
1265
- sortable: false,
1266
- slots: {
1267
- default: ({row, rowIndex}) => {
1268
- let option = {
1269
- title: this.$t2('沟通资料', 'components.wf.talkAttachment'),
1270
- edit: false,
1271
- rows: (done) => {
1272
- done(row.attachmentDTOs);
1273
- },
1274
- };
1275
- return [
1276
- h("base-attachment", {
1277
- props: {
1278
- option: option,
1279
- },
1280
- }),
1281
- ];
1282
- },
1283
- },
1284
- },
1285
-
1286
- {
1287
- title: this.$t2('状态', 'components.wf.status'),
1288
- field: "status",
1289
- width: 150,
1290
- slots: {
1291
- default: ({row, rowIndex}) => {
1292
- return statusMap[row.status] || "";
1293
- },
1294
- },
1295
- },
1296
- {
1297
- title: this.$t2('创建时间', 'system.label.createDate'),
1298
- field: "createDate",
1299
- width: 150,
1300
- },
1301
- {
1302
- width: 80,
1303
- fixed: "right",
1304
- title: "",
1305
- sortable: false,
1306
- slots: {
1307
- default: "operate"
1308
- }
1309
- },
1310
- ],
1311
- callback: (rows) => {
1312
- if (rows.length && flag) {
1313
- let row = rows[0];
1314
- if (row.replyToSender) {
1315
- this.$nextTick(() => {
1316
- this.tabIndex = "2";
1317
- this.openTalkDialog(row.sender, row.senderName, 'talk', 1, row.id)
1318
- });
1319
- }
1320
- }
1321
- }
1322
- };
1323
- this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
1324
- this.linkupOption = opts;
1325
- });
1326
- },
1327
- cancelTalk(row) {
1328
- let that = getTarget(this);
1329
- that.$baseConfirm(this.$t2('您确定要取消沟通记录吗?', 'components.wf.cancelTalkTip')).then(() => {
1330
- that.$http({
1331
- url: this.current_prefix + "/wf_linkup/cancel",
1332
- data: {id: row.id},
1333
- method: "post",
1334
- loadingTarget: document.body,
1335
- isLoading: true,
1336
- success: (resultMsg) => {
1337
- that.$message({
1338
- message: resultMsg.content,
1339
- type: "success",
1340
- duration: 500,
1341
- onClose: (t) => {
1342
- this.reloadContent();
1343
- },
1344
- });
1345
- },
1346
- });
1347
- });
1348
- },
1349
- openTalkDialog(receiver, receiverName, operateType, flag, replyId) {
1350
- this.operateType = operateType;
1351
- /*this.talkForm.receiver = receiver || null;
1352
- this.talkForm.receiverName = receiverName || null;
1353
- this.talkForm.replyId = replyId || null;
1354
- this.talkForm.content = null;
1355
- this.talkForm.attachmentDTOs = [];*/
1356
- this.initTalkForm(receiver, receiverName, replyId)
1357
- this.showTalkDialog = true;
1358
- if (flag == 1) {
1359
- let opeaBtnDom = this.$refs.opeaBtn;
1360
- opeaBtnDom && opeaBtnDom.scrollIntoView();
1361
- }
1362
- },
1363
- initTalkForm(receiver, receiverName, replyId) {
1364
- this.talkForm.receiver = receiver || null;
1365
- this.talkForm.receiverName = receiverName || null;
1366
- this.talkForm.replyId = replyId || null;
1367
- this.talkForm.content = null;
1368
- this.talkForm.attachmentDTOs = [];
1369
- },
1370
- submitTalkForm() {
1371
- let that = getTarget(this);
1372
- var procInstId = this.wfInfo.procInstId;
1373
- var taskId = this.wfInfo.taskId;
1374
-
1375
- if (!this.talkForm.receiver) {
1376
- that.$message({
1377
- message: this.$t2('请选择接收人', 'components.wf.talkWarnMsg1'),
1378
- type: "error",
1379
- duration: 2 * 1000,
1380
- });
1381
- return false;
1382
- }
1383
- if (!this.talkForm.content) {
1384
- that.$message({
1385
- message: this.$t2('请输入沟通内容', 'components.wf.talkWarnMsg2'),
1386
- type: "error",
1387
- duration: 2 * 1000,
1388
- });
1389
- return false;
1390
- }
1391
-
1392
- var data = {
1393
- taskId: taskId,
1394
- uuid: this.wfInfo.uuid,
1395
- receiver: this.talkForm.receiver,
1396
- receiverName: this.talkForm.receiverName,
1397
- replyId: this.talkForm.replyId,
1398
- content: this.talkForm.content,
1399
- attachmentDTOs: this.talkForm.attachmentDTOs,
1400
- notifyType: "wfLinkup",
1401
- };
1402
- this.showTalkDialog = false;
1403
- that.$http({
1404
- url: this.current_prefix + "/wf_linkup/save",
1405
- data: data,
1406
- method: "post",
1407
- isLoading: true,
1408
- success: (resultMsg) => {
1409
- that.$message({
1410
- message: resultMsg.content,
1411
- type: "success",
1412
- duration: 500,
1413
- onClose: (t) => {
1414
- this.reloadContent();
1415
- this.closeWinOnCheck(5);
1416
- },
1417
- });
1418
- },
1419
- });
1420
- },
1421
- openTalkUserDialog() {
1422
- this.showTalkUserDialog = true;
1423
- },
1424
- confirmTalkUserDialog(rows) {
1425
- if (rows.length > 0) {
1426
- let row = rows[0];
1427
- if (this.talkForm.receiver != row.id) {
1428
- this.talkForm.replyId = null;
1429
- }
1430
- this.talkForm.receiver = row.id;
1431
- this.talkForm.receiverName = row.nickName;
1432
- }
1433
- },
1434
- confirmUrging() {
1435
- this.reloadContent();
1436
- },
1437
- confirmDeleteTaskUser() {
1438
- this.reloadContent();
1439
- },
1440
- confirmAddTaskUser(rows) {
1441
- this.addIncreaseSignUsers = rows;
1442
- this.addIncreaseSignForm.userNickNames = rows.map(row => row.nickName).join(',');
1443
- // this.reloadContent();
1444
- },
1445
- submitAddTaskUserForm(flag) {
1446
- let that = getTarget(this);
1447
- let userIds = this.addIncreaseSignUsers.map((checkRow) => checkRow.id);
1448
- if (userIds.length == 0) {
1449
- that.$message({
1450
- message: this.$t2('请选择候选人', 'components.wf.addIncreaseSignWarnMsg1'),
1451
- type: "error",
1452
- duration: 2000,
1453
- onClose: (t) => {
1454
- },
1455
- });
1456
- return false;
1457
- }
1458
- let toDo = () => {
1459
- var data = JSON.stringify({
1460
- uuid: this.wfInfo.uuid,
1461
- taskId: this.wfInfo.taskId,
1462
- userIds: userIds,
1463
- suggestion: this.addIncreaseSignForm.opinion
1464
-
1465
- });
1466
- this.agreeDialogVisible = false;
1467
- that.$http({
1468
- url: this.current_prefix + "/wf/addIncreaseSign",
1469
- data: data,
1470
- method: "post",
1471
- loadingTarget: document.body,
1472
- headers: {
1473
- "Content-Type": "application/json;charset=utf-8",
1474
- },
1475
- isLoading: true,
1476
- success: (resultMsg) => {
1477
- that.$message({
1478
- message: resultMsg.content,
1479
- type: "success",
1480
- duration: 500,
1481
- onClose: (t) => {
1482
- this.reloadContent();
1483
- },
1484
- });
1485
- },
1486
- });
1487
- }
1488
- if (flag === 0) {
1489
- toDo();
1490
- } else {
1491
- that.$baseConfirm(this.$t2('您确定要加签吗?', 'components.wf.addIncreaseSignConfirmTip')).then(() => {
1492
- toDo();
1493
- });
1494
- }
1495
- },
1496
- openSetCandidateDialog(operateType) {
1497
- this.operateType = operateType;
1498
- this.showSetCandidateDialog = true;
1499
- },
1500
- closeSetCandidateDialog() {
1501
- this.showSetCandidateDialog = false;
1502
- this.reloadContent();
1503
- },
1504
- openRevokeDialog(operateType) {
1505
- this.operateType = operateType;
1506
- this.revokeForm = {opinion: null}
1507
- this.revokeDialogVisible = true;
1508
- },
1509
- subRevokeForm(flag) {
1510
- //撤回
1511
- let that = getTarget(this);
1512
- let toDo = () => {
1513
- var data = JSON.stringify({
1514
- uuid: this.wfInfo.uuid,
1515
- taskId: this.wfInfo.taskId,
1516
- suggestion: this.revokeForm.opinion,
1517
- });
1518
- this.revokeDialogVisible = false;
1519
- that.$http({
1520
- url: this.current_prefix + "/wf/revoke",
1521
- data: data,
1522
- method: "post",
1523
- loadingTarget: document.body,
1524
- headers: {
1525
- "Content-Type": "application/json;charset=utf-8",
1526
- },
1527
- isLoading: true,
1528
- success: (resultMsg) => {
1529
- that.$message({
1530
- message: resultMsg.content,
1531
- type: "success",
1532
- duration: 500,
1533
- onClose: (t) => {
1534
- this.reloadContent();
1535
- },
1536
- });
1537
- },
1538
- });
1539
- }
1540
- if (flag === 0) {
1541
- toDo();
1542
- } else {
1543
- that.$baseConfirm(this.$t2('您确定要撤回吗?', 'components.wf.revokeConfirmTip')).then(() => {
1544
- toDo();
1545
- });
1546
- }
1547
- }
1548
- }
1549
- }
1550
- </script>
1551
-
1552
- <style scoped>
1553
- ::v-deep .form-box.el-form .el-form-item .el-form-item__label {
1554
- width: 70px
1555
- }
1556
- </style>
1
+ <template>
2
+ <div>
3
+ <h5-card-pane label="流程信息">
4
+ <template #default>
5
+ <div class="flowPath-box">
6
+ <!-- 这一行的值是 wfInfo.name(流程主题),标签原先误写成「任务情况」——
7
+ 与下面第三行「查看任务情况」重名。PC content.vue 同一个值的标签就是
8
+ 「流程主题」(components.wf.theme)。 -->
9
+ <div class="t"><span>{{ $t2('流程主题', 'components.wf.theme') }}</span></div>
10
+ <div class="c">
11
+ <div class="name">
12
+ {{ (wfInfo.createDate ? wfInfo.createDate.substring(0, 10) : '') + wfInfo.name }}
13
+ <el-tag :type="getWfStatusType()" size="mini">{{ getWfStatusLabel() }}</el-tag>
14
+ </div>
15
+ </div>
16
+ <div class="m2">
17
+ <div class="t"><span>{{ $t2('流程图', 'components.wf.wfImage') }}</span></div>
18
+ <div class="c">
19
+ <el-button icon="" class="btn" @click="showPreviewDialog=true" icon="el-icon-view">查看流程图</el-button>
20
+ </div>
21
+ </div>
22
+ <div class="m2">
23
+ <div class="t"><span>{{ $t2('任务情况', 'components.wf.taskInfo') }}</span></div>
24
+ <div class="c">
25
+ <el-button icon="" class="btn" @click="showRenwuDialog=true" icon="iconfont icon-preview">查看任务情况
26
+ </el-button>
27
+ </div>
28
+ </div>
29
+
30
+ </div>
31
+ <!-- hideActions:宿主已经把审批动作提到别处(如 xform H5 的底部动作栏)时,
32
+ 这一排整条藏掉,避免一个动作出现两份。与 PC content.vue 的
33
+ headerActionsMounted 同意图,这里做成 prop 是为了没有时序问题。 -->
34
+ <div class="flowPath-btns" v-show="!hideActions">
35
+ <el-button type="success" plain class="btn" @click="openAgreeDialog" v-show="wfInfo.toSubmit"
36
+ icon="iconfont icon-tongguo">{{ $t2('通过', 'components.wf.agree') }}
37
+ </el-button>
38
+ <el-button type="warning" plain class="btn" @click="openManualDialog" v-show="wfInfo.toInterrupt"
39
+ icon="iconfont icon-caozuozhongduan">{{ $t2('中断', 'components.wf.manual') }}
40
+ </el-button>
41
+ <el-button type="danger" plain class="btn" @click="rejectWfTask" v-show="wfInfo.toReject"
42
+ icon="iconfont icon-a-bohui1">{{ $t2('驳回', 'components.wf.reject') }}
43
+ </el-button>
44
+ <el-button type="primary" plain class="btn" @click="openChangeWfForm"
45
+ v-show="(wfInfo.toTransfer===null || wfInfo.toTransfer===undefined) ? wfInfo.toSubmit: wfInfo.toTransfer"
46
+ icon="iconfont icon-zhuanban">{{ $t2('转办', 'components.wf.transfer') }}
47
+ </el-button>
48
+ <el-button type="primary" plain class="btn" @click="openUrgingDialog" v-show="wfInfo.toInterrupt"
49
+ icon="iconfont icon-cuiban">{{ $t2('催办', 'components.wf.urging') }}
50
+ </el-button>
51
+ <el-button type="primary" plain class="btn" @click="openAddIncreaseSign" v-show="wfInfo.toAddIncreaseSign"
52
+ icon="el-icon-plus">{{ $t2('加签', 'components.wf.addIncreaseSign') }}
53
+ </el-button>
54
+ <el-button type="primary" plain class="btn" @click="openDeleteTaskUserDialog"
55
+ v-show="wfInfo.toDeleteIncreaseSign"
56
+ icon="el-icon-delete">{{ $t2('减签', 'components.wf.deleteIncreaseSign') }}
57
+ </el-button>
58
+ <el-button type="primary" plain class="btn" @click="openTalkDialog()"
59
+ icon="el-icon-chat-dot-square" v-if="toTalk && wfInfo.toLinkup">
60
+ {{ $t2('沟通', 'components.wf.talk') }}
61
+ </el-button>
62
+ <el-button type="primary" plain class="btn" @click="openSetCandidateDialog(null)"
63
+ v-show="wfInfo.toSetCandidate"
64
+ icon="el-icon-user">{{ $t2('修改候选人', 'components.wf.setCandidate') }}
65
+ </el-button>
66
+ <el-button type="danger" plain class="btn" @click="openRevokeDialog(null)"
67
+ v-show="wfInfo.toRevoke"
68
+ icon="el-icon-document-delete">{{ $t2('撤回', 'components.wf.revoke') }}
69
+ </el-button>
70
+ </div>
71
+ </template>
72
+ </h5-card-pane>
73
+
74
+ <!-- 流程相关的弹框必须放在卡片外面。h5CardPane 折叠时会给 .cont 加
75
+ display:none,放在插槽里的弹框会被一起隐藏 —— 表现为「流程信息收起后,
76
+ 通过/驳回/转办这些弹框点了没反应」(祖先 display:none 无法被后代覆盖)。 -->
77
+ <div class="pop-box" v-if="showPreviewDialog">
78
+ <div>
79
+ <div class="header-box">
80
+ <i class="back el-icon-close" @click="showPreviewDialog=false"></i>流程图预览
81
+ </div>
82
+ <div class="flex" style="height:calc(100vh - 38px)">
83
+ <el-form label-position="top" class="form-box">
84
+ <div class="tit"><span>{{
85
+ (wfInfo.createDate ? wfInfo.createDate.substring(0, 10) : '') + wfInfo.name
86
+ }}</span></div>
87
+ <iframe style="width: 100%;flex:1" :src="wfImage"></iframe>
88
+ </el-form>
89
+ </div>
90
+ <!-- 只读预览,没有「确定」要提交的东西:原先取消/确定两个按钮点了都是关掉,
91
+ 合成一个「关 闭」。.btn 上的 flex:1 会让它自动铺满一行(见 styles/h5.scss)。 -->
92
+ <div class="fixed-bottom-btns">
93
+ <el-button type="primary" plain class="btn" @click="showPreviewDialog=false" icon="el-icon-close">{{
94
+ $t2('关 闭', 'system.button.close2')
95
+ }}
96
+ </el-button>
97
+ </div>
98
+ </div>
99
+ </div>
100
+
101
+ <div class="pop-box" v-if="showRenwuDialog">
102
+ <div>
103
+ <div class="header-box">
104
+ <i class="back el-icon-close" @click="showRenwuDialog=false"></i>任务情况预览
105
+ </div>
106
+ <div class="flex" style="height:calc(100vh - 38px);overflow:auto">
107
+ <div class="h5-process-info">
108
+ <div class="item" v-for="wftaskLineData in wftaskData" :key="wftaskLineData.id">
109
+ <div class="time">
110
+ {{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(0, 10) : '' }}
111
+ <br/>
112
+ {{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(11) : '' }}
113
+ </div>
114
+ <div class="status"
115
+ :class="taskStatuses[wftaskLineData.type]?taskStatuses[wftaskLineData.type].class:''">
116
+ {{ taskStatuses[wftaskLineData.type] ? taskStatuses[wftaskLineData.type].value : null }}
117
+ </div>
118
+ <i class="circle"></i>
119
+ <div class="info">
120
+ <p>
121
+ <span class="name">{{ wftaskLineData.taskName }}</span>
122
+ <span>{{ $t2('执行人', 'components.wf.approverName') }}:{{ wftaskLineData.approverName }}</span>
123
+ <span>
124
+ {{ $t2('候选人', 'components.wf.candidateName') }}:
125
+ <span class="">{{ wftaskLineData.candidateNames }}</span>
126
+ </span>
127
+ </p>
128
+ <p class="t"><span class="t1">{{ $t2('备注/意见', 'components.wf.opinion') }}:</span><span>{{
129
+ wftaskLineData.opinion
130
+ }}</span></p>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ <!-- 同上:只读预览,合成一个「关 闭」 -->
136
+ <div class="fixed-bottom-btns">
137
+ <el-button type="primary" plain class="btn" @click="showRenwuDialog=false" icon="el-icon-close">{{
138
+ $t2('关 闭', 'system.button.close2')
139
+ }}
140
+ </el-button>
141
+ </div>
142
+ </div>
143
+ </div>
144
+
145
+ <div class="pop-tipsBox" style="display: block;" v-if="showWfManualDialog">
146
+ <div>
147
+ <i class="icon"></i>
148
+ <div class="cont">
149
+ <p class="name">
150
+ {{ $t2('流程中断', 'components.wf.wfManual') }}<span>—</span><b
151
+ class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
152
+ wfInfo.taskName
153
+ }}</b>
154
+ </p>
155
+ <p class="txt">{{ $t2('您确定要中断流程吗?', 'components.wf.manualTip') }}</p>
156
+ </div>
157
+ <div class="btns">
158
+ <el-button type="primary" class="btn" plain icon="el-icon-close" @click="showWfManualDialog = false">{{
159
+ $t2('取 消', 'system.button.cancel2')
160
+ }}
161
+ </el-button>
162
+ <el-button type="primary" class="btn" icon="el-icon-check" @click="manualEndWf()">{{
163
+ $t2('确 定', 'system.button.confirm2')
164
+ }}
165
+ </el-button>
166
+ </div>
167
+ </div>
168
+ </div>
169
+ <div class="pop-tipsBox" style="display: block;" v-if="rejectDialogVisible">
170
+ <div>
171
+ <i class="icon"></i>
172
+ <div class="cont">
173
+ <p class="name">{{ $t2('流程驳回', 'components.wf.wfReject') }}<span
174
+ >—</span><b
175
+ class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
176
+ wfInfo.taskName
177
+ }}</b></p>
178
+ <el-form label-position="top" class="form-box">
179
+ <el-form-item label="驳回节点" field="nodeId">
180
+ <el-select v-model="rejectForm.nodeId"
181
+ :placeholder="$t2('请选择驳回节点', 'components.wf.rejectNodePlaceholder')">
182
+ <el-option v-for="(rejectNode,index) in rejectNodes" :label="rejectNode.nodeName"
183
+ :value="rejectNode.nodeId" :key="index"></el-option>
184
+ </el-select>
185
+ </el-form-item>
186
+ <el-form-item label="驳回意见" field="opinion">
187
+ <el-input type="textarea" :rows="8"
188
+ :placeholder="$t2('请输入内容', 'components.wf.rejectOpinionPlaceholder')"
189
+ v-model="rejectForm.opinion" class="txt"></el-input>
190
+ </el-form-item>
191
+ </el-form>
192
+ </div>
193
+ <div class="btns">
194
+ <el-button type="primary" class="btn" plain icon="el-icon-close" @click="rejectDialogVisible = false">{{
195
+ $t2('取 消', 'system.button.cancel2')
196
+ }}
197
+ </el-button>
198
+ <el-button type="primary" class="btn" icon="el-icon-check" @click="subRejectForm()">{{
199
+ $t2('确 定', 'system.button.confirm2')
200
+ }}
201
+ </el-button>
202
+ </div>
203
+ </div>
204
+ </div>
205
+ <div class="pop-tipsBox" style="display: block;" v-if="agreeDialogVisible">
206
+ <div>
207
+ <i class="icon"></i>
208
+ <div class="cont">
209
+ <p class="name">{{ $t2('流程通过', 'components.wf.wfAgree') }}<span
210
+ >—</span><b
211
+ class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
212
+ wfInfo.taskName
213
+ }}</b></p>
214
+ <el-form label-position="top" class="form-box">
215
+ <!-- 只有分支网关这类多出口节点,getNextOutgoingNodes 才会返回候选节点;
216
+ 单出口节点返回空数组,这一项必须整条不渲染,否则会露出一个没有任何
217
+ 选项的空下拉(提交时 nodeId 本就传 null,不需要选)。
218
+ 与 PC content.vue 的 <tr v-if="agreeNodes.length > 0"> 同口径。 -->
219
+ <el-form-item v-if="agreeNodes.length > 0"
220
+ :label="$t2('通过节点', 'components.wf.agreeNode')" field="nodeId">
221
+ <el-select v-model="agreeForm.nodeId"
222
+ :placeholder="$t2('请选择通过节点', 'components.wf.agreeNodePlaceholder')">
223
+ <el-option v-for="(node,index) in agreeNodes" :label="node.nodeName"
224
+ :value="node.nodeId" :key="index"></el-option>
225
+ </el-select>
226
+ </el-form-item>
227
+ <el-form-item :label="$t2('通过意见', 'components.wf.agreeOpinion')" field="opinion">
228
+ <el-input type="textarea" :rows="8" :placeholder="$t2(`请填写您的意见~
229
+ 注:
230
+ 通过默认意见为“同意”
231
+ `, 'components.wf.agreeOpinionPlaceholder')" v-model="agreeForm.opinion"></el-input>
232
+ </el-form-item>
233
+ </el-form>
234
+ </div>
235
+ <div class="btns">
236
+ <el-button type="primary" class="btn" plain icon="el-icon-close" @click="agreeDialogVisible = false">{{
237
+ $t2('取 消', 'system.button.cancel2')
238
+ }}
239
+ </el-button>
240
+ <el-button type="primary" class="btn" icon="el-icon-check" @click="subAgreeForm()">{{
241
+ $t2('确 定', 'system.button.confirm2')
242
+ }}
243
+ </el-button>
244
+ </div>
245
+ </div>
246
+ </div>
247
+ <div class="pop-tipsBox" style="display: block;" v-if="changeWfDialogVisible">
248
+ <div>
249
+ <i class="icon"></i>
250
+ <div class="cont">
251
+ <p class="name">{{ $t2('流程转办', 'components.wf.wfTransfer') }}<span>—</span><b
252
+ class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
253
+ wfInfo.taskName
254
+ }}</b></p>
255
+ <el-form label-position="top" class="form-box">
256
+ <el-form-item label="转办人" field="nodeId">
257
+ <el-input
258
+ class="search-input"
259
+ max="200"
260
+ v-model="changeWfForm.userNickNames"
261
+ @clear="
262
+ changeWfForm.userIds = '';
263
+ changeUserRows = [];
264
+ $forceUpdate();
265
+ "
266
+ v-el-readonly
267
+ clearable
268
+ >
269
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showUserDialog = true"></i>
270
+ </el-input>
271
+ </el-form-item>
272
+ <el-form-item label="转办意见" field="opinion">
273
+ <el-input type="textarea" :rows="8"
274
+ :placeholder="$t2('请输入内容', 'components.wf.transferOpinionPlaceholder')"
275
+ v-model="changeWfForm.opinion"></el-input>
276
+ </el-form-item>
277
+ </el-form>
278
+ </div>
279
+ <div class="btns">
280
+ <el-button type="primary" class="btn" plain @click="changeWfDialogVisible = false">{{
281
+ $t2('取 消', 'system.button.cancel2')
282
+ }}
283
+ </el-button>
284
+ <el-button type="primary" class="btn" @click="subChangeWfForm()">
285
+ {{ $t2('确认转办', 'components.wf.confirmTransfer') }}
286
+ </el-button>
287
+ </div>
288
+ </div>
289
+ </div>
290
+ <div class="pop-tipsBox" style="display: block;" v-if="showAddIncreaseSignDialog">
291
+ <div>
292
+ <i class="icon"></i>
293
+ <div class="cont">
294
+ <p class="name">
295
+ {{ $t2('流程加签', 'components.wf.wfAddIncreaseSign') }}<span>—</span><b
296
+ class="f-red">{{ $t2('节点', 'components.wf.node') }}:{{
297
+ wfInfo.taskName
298
+ }}</b>
299
+ </p>
300
+ <el-form label-position="top" class="form-box">
301
+ <el-form-item label="候选人">
302
+ <el-input
303
+ class="search-input"
304
+ max="200"
305
+ v-model="addIncreaseSignForm.userNickNames"
306
+ @clear="
307
+ addIncreaseSignUsers = [];
308
+ $forceUpdate();
309
+ "
310
+ :placeholder="$t2('候选人', 'components.wf.addIncreaseSignUser')"
311
+ v-el-readonly
312
+ clearable
313
+ >
314
+ <i slot="suffix" class="el-input__icon el-icon-search"
315
+ @click="showAddTaskUserDialog = true"></i>
316
+ </el-input>
317
+ </el-form-item>
318
+ <el-form-item label="加签意见" field="opinion">
319
+ <el-input type="textarea" :rows="8"
320
+ :placeholder="$t2('请输入内容', 'components.wf.addIncreaseSignOpinionPlaceholder')"
321
+ v-model="addIncreaseSignForm.opinion"></el-input>
322
+ </el-form-item>
323
+ </el-form>
324
+ </div>
325
+ <div class="btns">
326
+ <el-button type="primary" class="btn" plain @click="showAddIncreaseSignDialog = false">{{
327
+ $t2('取 消', 'system.button.cancel2')
328
+ }}
329
+ </el-button>
330
+ <el-button type="primary" class="btn" @click="submitAddTaskUserForm(0)">
331
+ {{ $t2('确认加签', 'components.wf.confirmAddIncreaseSign') }}
332
+ </el-button>
333
+ </div>
334
+ </div>
335
+ </div>
336
+
337
+ <user-dialog v-if="showUserDialog" :visiable.sync="showUserDialog" @close="showUserDialog = false"
338
+ @confirm="userConfirm" multi="true" :param.sync="wfUserParamForTransfer"
339
+ :rows="changeUserRows"></user-dialog>
340
+ <urgingDialog v-if="urgingDialogVisible" :visiable.sync="urgingDialogVisible" :wfInfo="wfInfo"
341
+ :current_prefix="current_prefix"
342
+ @confirm="reloadContent" multi="true"></urgingDialog>
343
+ <deleteTaskUserDialog v-if="showDeleteTaskUserDialog" :visiable.sync="showDeleteTaskUserDialog" :wfInfo="wfInfo"
344
+ :current_prefix="current_prefix"
345
+ @confirm="reloadContent" multi="true"></deleteTaskUserDialog>
346
+
347
+ <addTaskUserdialog v-if="showAddTaskUserDialog" :visiable.sync="showAddTaskUserDialog" :wfInfo="wfInfo"
348
+ :current_prefix="current_prefix" :rows.sync="addIncreaseSignUsers"
349
+ @confirm="confirmAddTaskUser" multi="true"
350
+ :param.sync="wfUserParamForAddSign"></addTaskUserdialog>
351
+ <user-dialog v-if="showTalkUserDialog" :visiable.sync="showTalkUserDialog" @close="showTalkUserDialog = false"
352
+ @confirm="confirmTalkUserDialog" multi="false" :param.sync="wfUserParamForTalk"></user-dialog>
353
+ <setCandidateDialog v-if="showSetCandidateDialog" :visiable.sync="showSetCandidateDialog"
354
+ @close="closeSetCandidateDialog"
355
+ :wfInfo="wfInfo"
356
+ :current_prefix="current_prefix"></setCandidateDialog>
357
+ </div>
358
+ </template>
359
+ <script>
360
+ import Vue from "vue";
361
+
362
+ import settingConfig from "@/settings";
363
+ import commonMixin from "../../../mixins/mobile/common/index";
364
+ import {getToken} from "../../../utils/auth";
365
+
366
+ let configUtil = {
367
+ baseUrl: process.env.VUE_APP_BASE_API,
368
+ getToken,
369
+ settingConfig,
370
+ Vue,
371
+ requireView: (url) => {
372
+ return require("../../../views" + url).default;
373
+ },
374
+ };
375
+
376
+ function appendPrevChildDom(parentDom, newDom) {
377
+ if (parentDom.hasChildNodes()) {
378
+ let currentDom = parentDom.children[0];
379
+ parentDom.insertBefore(newDom, currentDom);
380
+ } else {
381
+ parentDom.append(newDom);
382
+ }
383
+ }
384
+
385
+ function getTarget(t) {
386
+ return t.parentVue;
387
+ }
388
+
389
+ export default {
390
+ mixins: [commonMixin],
391
+ props: {
392
+ _wfInfo: Object,
393
+ _taskParam: Object,
394
+ wfOption: Object,
395
+ defaultShowWfContent: Boolean,
396
+ // 见模板里 .flowPath-btns 的注释:宿主接管审批动作时藏掉面板内那一排
397
+ hideActions: Boolean,
398
+ },
399
+ components: {
400
+ /* 本组件根节点就是 <h5-card-pane>,但此前没在这里注册——手写移动页是靠
401
+ mixins/mobile/common 在**宿主**上局部注册才碰巧能渲染。Vue 2 解析组件只查
402
+ 自身 components 与全局注册、不查父组件的局部注册,所以被别处(如 xform 的
403
+ detail-h5-item)引用时会渲染不出来。补上自己的依赖声明。 */
404
+ h5CardPane: () => import('../h5Card/h5CardPane.vue'),
405
+ UserDialog: () => import('../../../views/mobile/user/user/dialog.vue'),
406
+ urgingDialog: () => import('./urgingDialog'),
407
+ deleteTaskUserDialog: () => import('./deleteTaskUserDialog'),
408
+ addTaskUserdialog: () => import('./addTaskUserdialog'),
409
+ setCandidateDialog: () => import('./setCandidateDialog')
410
+ },
411
+ computed: {
412
+ current_prefix() {
413
+ return this.serviceId ? "/" + this.serviceId : "";
414
+ },
415
+ viewTarget() {
416
+ return getTarget(this);
417
+ },
418
+ isHideWf() {
419
+ let that = this.viewTarget;
420
+ let _hideWf = that._hideWf || that.$attrs._hideWf;
421
+ return _hideWf === true || _hideWf === 'true';
422
+ }
423
+ },
424
+ data() {
425
+ let showWfFold =
426
+ settingConfig.showWfFold != null && settingConfig.showWfFold != undefined
427
+ ? settingConfig.showWfFold
428
+ : false;
429
+ let showWfContent =
430
+ showWfFold &&
431
+ settingConfig.defaultShowWfContent != null &&
432
+ settingConfig.defaultShowWfContent != undefined
433
+ ? settingConfig.defaultShowWfContent
434
+ : true;
435
+ if (
436
+ this.defaultShowWfContent != null &&
437
+ this.defaultShowWfContent != undefined
438
+ ) {
439
+ showWfContent = this.defaultShowWfContent;
440
+ }
441
+
442
+ return {
443
+ showRenwuDialog: false,
444
+ showDomContent: false,
445
+ showPreviewDialog: false,
446
+ objId: null,
447
+ wfCode: null,
448
+ serviceId: null,
449
+ parentVue: null,
450
+ wfConfig: null,
451
+
452
+ fileInfos: [],
453
+ showUserDialog: false,
454
+ showContent: true,
455
+ objTypeCode: "",
456
+ // objId: '',
457
+ wfInfo: {},
458
+ // currentTask: {},
459
+ taskParam: {},
460
+ wfImage: "",
461
+ wfStartBtn: false,
462
+ wfManualendBtn: false,
463
+ wfSubmitBtn: false,
464
+ wfRejectBtn: false,
465
+ changeHandlerBtn: false,
466
+ wftaskData: [],
467
+ allWfTaskOpinions: [],
468
+ vxeOption: {},
469
+ rejectNodes: [],
470
+ rejectDialogVisible: false,
471
+ rejectForm: {
472
+ rejectSubmitModel: null,
473
+ nodeId: null,
474
+ opinion: null,
475
+ },
476
+ formLabelWidth: "120px",
477
+ agreeDialogVisible: false,
478
+ agreeForm: {
479
+ opinion: this.$t2('同意', 'components.wf.defaultAgreeOption'),
480
+ nodeId: null,
481
+ },
482
+ changeWfDialogVisible: false,
483
+ changeWfForm: {},
484
+ changeUserRows: [],
485
+ taskStatuses: {
486
+ start: {
487
+ class: "blue",
488
+ value: this.$t2('开始', 'components.wf.startStatus'),
489
+ },
490
+ approve: {
491
+ class: "orgn",
492
+ value: this.$t2('待审批', 'components.wf.approveStatus'),
493
+ },
494
+ submit: {
495
+ class: "green",
496
+ value: this.$t2('同意', 'components.wf.submitStatus'),
497
+ },
498
+ reject: {
499
+ class: "red",
500
+ value: this.$t2('驳回', 'components.wf.rejectStatus'),
501
+ },
502
+ transfer: {
503
+ class: "green",
504
+ value: this.$t2('转办', 'components.wf.transferStatus'),
505
+ },
506
+ addIncreaseSign: {
507
+ class: "green",
508
+ value: this.$t2('加签', 'components.wf.addIncreaseSignStatus'),
509
+ },
510
+ revoke: {
511
+ class: "red",
512
+ value: this.$t2('撤回', 'components.wf.revokeStatus'),
513
+ },
514
+ end: {
515
+ class: "gray",
516
+ value: this.$t2('结束', 'components.wf.endStatus'),
517
+ },
518
+ },
519
+ opinion: "",
520
+ showWfFold: showWfFold,
521
+ showWfContent: showWfContent,
522
+
523
+ urgingForm: {},
524
+ urgingDialogVisible: false,
525
+ urgingUserIds: [],
526
+ urgingUsers: [],
527
+ agreeNodes: [],
528
+ showWfManualDialog: false,
529
+
530
+ showDeleteTaskUserDialog: false,
531
+ showAddTaskUserDialog: false,
532
+ wfUserParam: {},
533
+ wfUserParamForTransfer: {},//转办
534
+ wfUserParamForAddSign: {},//加签
535
+ wfUserParamForTalk: {},//沟通
536
+ tabIndex: "1",
537
+ linkupOption: {},
538
+ talkForm: {
539
+ receiverName: null,
540
+ content: null,
541
+ attachmentDTOs: [],
542
+ replyId: null
543
+ },
544
+ showTalkUserDialog: false,
545
+ showTalkDialog: false,
546
+ showFlowImg: true,
547
+ operateType: null,
548
+ addIncreaseSignUsers: [],
549
+ addIncreaseSignForm: {
550
+ userNickNames: null,
551
+ opinion: null
552
+ },
553
+ showAddIncreaseSignDialog: false,
554
+ showOpeaImg: true,
555
+ showSetCandidateDialog: false,
556
+ toTalk: false,
557
+ showAllWfOpinon: false,
558
+
559
+ revokeDialogVisible: false,
560
+ revokeForm: {opinion: null},
561
+ wfStatusMap: {
562
+ 1: {label: "审核中", type: "warning"},
563
+ 3: {label: "已驳回", type: "danger"},
564
+ 2: {label: "已完成", type: "success"}
565
+ }
566
+ };
567
+ },
568
+ provide() {
569
+ return {
570
+ getParentVue: () => {
571
+ return this.parentVue;
572
+ }
573
+ };
574
+ },
575
+ created() {
576
+ // this.wfInfo = this._wfInfo;
577
+ this.showFlowImg = settingConfig.expandWfImage === false ? false : true;
578
+ this.showAllWfOpinon = settingConfig.showAllWfOpinon === true;
579
+ },
580
+ mounted() {
581
+ this.init();
582
+ },
583
+ methods: {
584
+ getWfStatusLabel() {
585
+ return this.wfStatusMap[this.wfInfo.stat]?.label;
586
+ },
587
+ getWfStatusType() {
588
+ return this.wfStatusMap[this.wfInfo.stat]?.type;
589
+ },
590
+ init() {
591
+ let opt = this.wfOption;
592
+ this.objId = opt.objId;
593
+ this.wfCode = opt.wfCode;
594
+ this.serviceId = opt.serviceId;
595
+ this.parentVue = opt.parentVue;
596
+ this.wfConfig = this.wfOption;
597
+
598
+ let wfConfig = this.wfOption;
599
+ let that = getTarget(this);
600
+ let hasWf = false;
601
+ let wfInfo, currentTask, taskParam;
602
+ let option = {
603
+ objId: this.objId,
604
+ wfCode: this.wfCode
605
+ }
606
+ let current_prefix = this.current_prefix;
607
+
608
+ let initButton = () => {
609
+ /*return
610
+ this.$nextTick(() => {
611
+ that.$refs.wfButtonGroup.init({
612
+ taskParam,
613
+ wfInfo,
614
+ hasWf,
615
+ current_prefix,
616
+ wfConfig
617
+ });
618
+ });*/
619
+ }
620
+
621
+ this.initWfInfo(option, {
622
+ success: res => {
623
+ if (res.objx && res.objx.procInstId) {
624
+ hasWf = true;
625
+ wfInfo = res.objx;
626
+ this.wfInfo = wfInfo;
627
+ // this.showDomContent = true;
628
+
629
+ if (wfInfo.taskId) {
630
+ this.getTaskParams(wfInfo.taskId, {
631
+ success: res2 => {
632
+ taskParam = res2.objx || {};
633
+ taskParam.objId = option.objId;
634
+ this.taskParam = taskParam;
635
+
636
+ initButton();
637
+ }
638
+ });
639
+ } else {
640
+ initButton();
641
+ }
642
+ this.initOperateType();
643
+ this.initForAll();
644
+ } else {
645
+ initButton();
646
+ }
647
+ }
648
+ });
649
+ },
650
+ initWfInfo(option, httpConfig) {
651
+
652
+ let that = getTarget(this);
653
+ let id = option.objId;
654
+ let code = option.wfCode;
655
+ return that.$http({
656
+ url: this.current_prefix + '/wf/getWfInfo',
657
+ method: `post`,
658
+ data: {
659
+ objTypeCode: code,
660
+ objId: id
661
+ },
662
+ isLoading: true,
663
+ modalStrictly: true,
664
+ ...httpConfig
665
+ });
666
+ },
667
+ getTaskParams(taskId, httpConfig) {
668
+ let that = getTarget(this);
669
+ return that.$http({
670
+ url: this.current_prefix + '/wf/getTaskVariables',
671
+ method: `post`,
672
+ data: {
673
+ stringOne: taskId
674
+ },
675
+ isLoading: true,
676
+ modalStrictly: true,
677
+ ...httpConfig
678
+ });
679
+ },
680
+
681
+
682
+ initOperateType() {
683
+ if (this.operateType) {
684
+ let wfInfo = this.wfInfo;
685
+ if (wfInfo.toSubmit) {
686
+ this.openAgreeDialog('submit');
687
+ } else if (wfInfo.toReject) {
688
+ this.rejectWfTask('reject');
689
+ } else if (wfInfo.toAddIncreaseSign) {
690
+ this.openAddIncreaseSign('addIncreaseSign')
691
+ } else if (wfInfo.toRevoke) {
692
+ this.openRevokeDialog('revoke')
693
+ } else if (wfInfo.toLinkup) {
694
+ this.openTalkDialog(null, null, 'talk');
695
+ } else {
696
+ this.operateType = null;
697
+ }
698
+ }
699
+ },
700
+ initForAll() {
701
+ let that = getTarget(this);
702
+ this.initWf(() => {
703
+ if (this.wfInfo.procInstId) {
704
+ this.initCurrentTask(this.wfInfo.procInstId, () => {
705
+ this.initWftask(this.wfInfo.procInstId);
706
+ this.getAllWfTaskOpinions();
707
+ });
708
+ this.initWfUserParam();
709
+ this.initTabIndex();
710
+ }
711
+ });
712
+ },
713
+ initTabIndex() {
714
+ let that = getTarget(this);
715
+ that.$http({
716
+ url: USER_PREFIX + "/wf_diy_attribute/getValue",
717
+ method: `post`,
718
+ data: {attributeKey: "param7"},
719
+ isLoading: true,
720
+ success: (res) => {
721
+ let val = res !== null ? res.objx === true : false;
722
+ this.toTalk = val;
723
+ let flag = false;
724
+ if (val) {
725
+ let flag1 = that.$attrs._isNotifyMessage == true || that.$attrs._isNotifyMessage == "true";
726
+ if (flag1) {
727
+ this.tabIndex = "2";
728
+ }
729
+ if (settingConfig.autoOpenWfLinkup) {
730
+ flag = true;
731
+ let flag2 = that.$attrs._wfNotifyType == "wfLinkup";
732
+ let flag3 = flag1 && flag2;
733
+ if (flag3) {
734
+ this.$nextTick(() => {
735
+ let wfTabPane = this.$refs.wfTabPane;
736
+ if (!wfTabPane.showContent) {
737
+ wfTabPane.handleFold();
738
+ }
739
+ });
740
+ }
741
+ }
742
+ }
743
+ this.initLinkup(flag);
744
+ }
745
+ });
746
+
747
+ },
748
+ initWf(done) {
749
+ var data = this.wfInfo;
750
+ if (data && data.procInstId) {
751
+ /** 流程状态:0未启动,1审核中,2已完成,3驳回,4中断 */
752
+ var statuses = {
753
+ 1: '<span class="tag">' + this.$t2('审核中', 'components.wf.wfStatus1') + '</span>',
754
+ 3: '<span class="tag red">' + this.$t2('已驳回', 'components.wf.wfStatus2') + '</span>',
755
+ 2: '<span class="tag green">' + this.$t2('已完成', 'components.wf.wfStatus3') + '</span>',
756
+ };
757
+ var statusStr = "";
758
+ if (data.stat != null) {
759
+ statusStr = statuses[data.stat] || "";
760
+ }
761
+ data.statusStr = statusStr;
762
+ this.wfInfo = data;
763
+
764
+ this.wfStartBtn = false;
765
+ if (data.status != 2 && data.starterId) {
766
+ this.wfManualendBtn = true;
767
+ }
768
+ this.wfSubmitBtn = false;
769
+ this.wfRejectBtn = false;
770
+
771
+ var url =
772
+ this.current_prefix +
773
+ "/wf/flowImage?procInstId=" +
774
+ data.procInstId +
775
+ "&_r=" +
776
+ Math.random() +
777
+ "&access_token=" +
778
+ configUtil.getToken();
779
+ this.wfImage = configUtil.baseUrl + url;
780
+ done();
781
+ }
782
+ },
783
+ initCurrentTask(procInstId, done) {
784
+ if (this.wfInfo.taskId) {
785
+ this.wfSubmitBtn = true;
786
+ this.wfRejectBtn = true;
787
+ this.changeHandlerBtn = true;
788
+ }
789
+ done();
790
+ },
791
+ initWftask(procInstId) {
792
+ let that = getTarget(this);
793
+ that.$http({
794
+ url: this.current_prefix + "/wf/getWfTaskOpinionMerge",
795
+ data: {
796
+ stringOne: procInstId,
797
+ },
798
+ method: "post",
799
+ isLoading: true,
800
+ modalStrictly: true,
801
+ success: (resultmsg) => {
802
+ var datas = resultmsg.objx || [];
803
+ this.wftaskData = datas;
804
+ },
805
+ });
806
+ },
807
+ getAllWfTaskOpinions() {
808
+ if (!this.showAllWfOpinon) {
809
+ return;
810
+ }
811
+ let that = getTarget(this);
812
+ let wfInfo = this.wfInfo;
813
+ that.$http({
814
+ url: this.current_prefix + "/wf/getAllWfTaskOpinions",
815
+ data: {
816
+ objId: wfInfo.objId,
817
+ objTypeCode: wfInfo.objTypeCode
818
+ },
819
+ method: "post",
820
+ isLoading: true,
821
+ modalStrictly: true,
822
+ success: (resultmsg) => {
823
+ var datas = resultmsg.objx || [];
824
+ this.allWfTaskOpinions = datas;
825
+ },
826
+ });
827
+ },
828
+ openManualDialog(operateType) {
829
+ this.operateType = operateType;
830
+ this.showWfManualDialog = true;
831
+ },
832
+ manualEndWf() {
833
+ this.showWfManualDialog = false;
834
+ let that = getTarget(this);
835
+ var procInstId = this.wfInfo.procInstId;
836
+ var taskId = this.wfInfo.taskId ? this.wfInfo.taskId : "";
837
+ var data = JSON.stringify({
838
+ uuid: this.wfInfo.uuid,
839
+ });
840
+ that.$http({
841
+ url: this.current_prefix + "/wf/interrupt",
842
+ data: data,
843
+ method: "post",
844
+ headers: {
845
+ "Content-Type": "application/json;charset=utf-8",
846
+ },
847
+ isLoading: true,
848
+ success: (resultMsg) => {
849
+ that.$message({
850
+ message: resultMsg.content,
851
+ type: "success",
852
+ duration: 500,
853
+ onClose: (t) => {
854
+ this.reloadContent();
855
+ this.closeWinOnCheck(3);
856
+ },
857
+ });
858
+ },
859
+ });
860
+ },
861
+ async rejectWfTask(operateType) {
862
+ // 与 PC wf.js 的 rejectWfTask 同结构:驳回也要先过一遍「驳回提醒」
863
+ this.handleReminderContent("rejectReminder", async () => {
864
+ let that = getTarget(this);
865
+ var procInstId = this.wfInfo.procInstId;
866
+ var taskId = this.wfInfo.taskId;
867
+ var destinations = [];
868
+
869
+ await that.$http({
870
+ url: this.current_prefix + "/wf/getPreIncomeNodes",
871
+ data: {
872
+ stringOne: taskId,
873
+ },
874
+ method: "post",
875
+ //contentType: 'application/json;charset=utf-8',
876
+ isLoading: true,
877
+ success: (resultMsg) => {
878
+ destinations = (resultMsg.objx || []).reverse();
879
+ },
880
+ });
881
+
882
+ if (destinations == null) {
883
+ return false;
884
+ }
885
+ if (destinations.length == 0) {
886
+ that.$message({
887
+ message: this.$t2('无法驳回,没有目标节点', 'components.wf.rejectWarnMsg1'),
888
+ type: "error",
889
+ duration: 2 * 1000,
890
+ });
891
+ return false;
892
+ }
893
+ this.operateType = operateType;
894
+
895
+ /* 驳回后提交模式,取自流程对象配置(wf_obj_config「驳回后提交模式」三选一):
896
+ toNextNode === 1 → 顺延下一步提交 → 1
897
+ toRejectNode false → 直接提交到驳回节点 → 2
898
+ toRejectNode true → 由提交人确定节点提交 → null(提交时自己选)
899
+ 三个分支不能省成两个:选了「顺延下一步」时后台把 toRejectNode 置为 null,
900
+ 而 null == false 在 JS 里是 false,会落到 null 分支上,配置被静默丢掉。
901
+ 与 PC wf.js 的 rejectWfTask 同口径。 */
902
+ let rejectSubmitModel = null;
903
+ if (this.wfInfo.toNextNode === 1) {
904
+ rejectSubmitModel = this.wfInfo.toNextNode
905
+ } else {
906
+ rejectSubmitModel = this.wfInfo.toRejectNode == false ? 2 : null
907
+ }
908
+ this.rejectForm.rejectSubmitModel = rejectSubmitModel;
909
+ this.rejectForm.nodeId = destinations[0].nodeId;
910
+ this.rejectForm.opinion = "";
911
+ this.rejectNodes = destinations;
912
+ this.rejectDialogVisible = true;
913
+ })
914
+ },
915
+ subRejectForm() {
916
+ let that = getTarget(this);
917
+ var procInstId = this.wfInfo.procInstId;
918
+ var taskId = this.wfInfo.taskId;
919
+
920
+ if (!this.rejectForm.nodeId) {
921
+ that.$message({
922
+ message: this.$t2('请选择驳回节点', 'components.wf.rejectWarnMsg2'),
923
+ type: "error",
924
+ duration: 2 * 1000,
925
+ });
926
+ return false;
927
+ }
928
+
929
+ if (!this.rejectForm.opinion) {
930
+ that.$message({
931
+ message: this.$t2('请输入驳回意见', 'components.wf.rejectWarnMsg3'),
932
+ type: "error",
933
+ duration: 2 * 1000,
934
+ });
935
+ return false;
936
+ }
937
+
938
+ var data = JSON.stringify({
939
+ taskId: taskId,
940
+ uuid: this.wfInfo.uuid,
941
+ nodeId: this.rejectForm.nodeId,
942
+ suggestion: this.rejectForm.opinion,
943
+ rejectSubmitModel: this.rejectForm.rejectSubmitModel
944
+ });
945
+ this.rejectDialogVisible = false;
946
+ that.$http({
947
+ url: this.current_prefix + "/wf/reject",
948
+ data: data,
949
+ method: "post",
950
+ headers: {
951
+ "Content-Type": "application/json;charset=utf-8",
952
+ },
953
+ isLoading: true,
954
+ success: (resultMsg) => {
955
+ that.$message({
956
+ message: resultMsg.content,
957
+ type: "success",
958
+ duration: 500,
959
+ onClose: (t) => {
960
+ this.reloadContent();
961
+ this.closeWinOnCheck(2);
962
+ },
963
+ });
964
+ },
965
+ });
966
+ },
967
+ /**
968
+ * 提交/驳回前的「提醒内容」:后台按 scriptType 跑脚本,返回文案就先弹确认框,
969
+ * 用户点确定才继续;没有文案(或接口 404,即后端未部署该能力)直接放行。
970
+ * 与 PC wf.js 的同名方法保持一致。
971
+ *
972
+ * 提醒只是主流程前面的一道增强,不能让它把主流程带崩或卡死,所以:
973
+ * - 放行只允许一次(go 自带闸门),成功/异常各分支共用一个出口;
974
+ * - 确认框点取消 = 放弃本次操作,什么都不做,但 MessageBox 的 reject 必须吃掉,
975
+ * 否则是一条 unhandled rejection;
976
+ * - error 分支绝不能抛异常。request.js 是先调 config.error(e) 再 removeModel(config)
977
+ * (见 utils/request.js 的响应错误拦截),这里一抛,isLoading 的全屏遮罩就永远
978
+ * 关不掉、整页被锁死。而网络失败/超时时 e.response 本就是 undefined,
979
+ * 老写法 e.response.status 必崩 —— 故 status 取值全程判空。
980
+ */
981
+ handleReminderContent(scriptType, callback) {
982
+ let that = getTarget(this);
983
+ let called = false;
984
+ const go = () => {
985
+ if (called) return
986
+ called = true;
987
+ callback && callback();
988
+ };
989
+ that.$http({
990
+ url: this.current_prefix + "/wf/getReminderContent",
991
+ data: {
992
+ scriptType,
993
+ taskId: this.wfInfo.taskId,
994
+ uuid: this.wfInfo.uuid,
995
+ },
996
+ method: "post",
997
+ isLoading: true,
998
+ errorMsg: false,
999
+ success: (res) => {
1000
+ if (res && res.objx) {
1001
+ that.$baseConfirm(res.objx).then(go).catch(() => {});
1002
+ } else {
1003
+ go();
1004
+ }
1005
+ },
1006
+ error: (e) => {
1007
+ let status = e && e.response ? e.response.status : null;
1008
+ if (status === 404) {
1009
+ // 后端没部署这个接口,等同于「没有提醒」,静默放行
1010
+ go();
1011
+ return
1012
+ }
1013
+ /* 其余错误只提示不放行:提醒内容可能是必须让人看到的业务警告,
1014
+ 接口挂了就悄悄跳过等于把它吞掉。用户重试即可。 */
1015
+ that.$errorMsg({
1016
+ content: (e && e.message) || this.$t2('获取提醒内容失败', 'components.wf.reminderError'),
1017
+ type: 'error',
1018
+ }).catch(() => {});
1019
+ },
1020
+ });
1021
+ },
1022
+ openAgreeDialog(operateType) {
1023
+ const done = () => {
1024
+ this.handleReminderContent("submitReminder", () => {
1025
+ this.operateType = operateType;
1026
+ let that = getTarget(this);
1027
+ this.agreeForm = {
1028
+ opinion: this.$t2('同意', 'components.wf.defaultAgreeOption'),
1029
+ nodeId: null,
1030
+ };
1031
+ this.agreeNodes = [];
1032
+ that.$http({
1033
+ url: this.current_prefix + "/wf/getNextOutgoingNodes",
1034
+ data: {
1035
+ stringOne: this.wfInfo.taskId,
1036
+ },
1037
+ method: "post",
1038
+ isLoading: true,
1039
+ success: (res) => {
1040
+ let nodes = res.objx || [];
1041
+ /*if (tq == true) {
1042
+ nodes.reverse();
1043
+ }*/
1044
+ if (nodes.length) {
1045
+ this.agreeForm.nodeId = nodes[0].nodeId;
1046
+ }
1047
+ this.agreeNodes = nodes;
1048
+ this.agreeDialogVisible = true;
1049
+ },
1050
+ });
1051
+ })
1052
+ }
1053
+ // wfConfig 在 init() 里才赋值(初值 null),这里兜一层空对象
1054
+ let wfConfig = this.wfConfig || {};
1055
+ if (wfConfig.onClickAgree) {
1056
+ wfConfig.onClickAgree(done)
1057
+ } else {
1058
+ done();
1059
+ }
1060
+ },
1061
+ subAgreeForm() {
1062
+ let wfConfig = this.wfConfig;
1063
+ let done = () => {
1064
+ this.subAgreeHandle();
1065
+ }
1066
+ if (wfConfig.onBeforeAgree) {
1067
+ wfConfig.onBeforeAgree(done)
1068
+ } else {
1069
+ done();
1070
+ }
1071
+ },
1072
+ subAgreeHandle() {
1073
+ let that = getTarget(this);
1074
+ let nodeId = null;
1075
+ if (this.agreeNodes.length) {
1076
+ if (!this.agreeForm.nodeId) {
1077
+ that.$message({
1078
+ message: this.$t2('请选择节点', 'components.wf.agreeWarnMsg1'),
1079
+ type: "error",
1080
+ duration: 2 * 1000,
1081
+ });
1082
+ return;
1083
+ }
1084
+ nodeId = this.agreeForm.nodeId;
1085
+ }
1086
+
1087
+ var procInstId = this.wfInfo.procInstId;
1088
+ var taskId = this.wfInfo.taskId;
1089
+ var memo = this.agreeForm.opinion || this.$t2('同意', 'components.wf.defaultAgreeOption');
1090
+ var data = JSON.stringify({
1091
+ taskId: taskId,
1092
+ uuid: this.wfInfo.uuid,
1093
+ suggestion: memo,
1094
+ nodeId: nodeId,
1095
+ });
1096
+ this.agreeDialogVisible = false;
1097
+ that.$http({
1098
+ url: this.current_prefix + "/wf/submit",
1099
+ data: data,
1100
+ method: "post",
1101
+ headers: {
1102
+ "Content-Type": "application/json;charset=utf-8",
1103
+ },
1104
+ isLoading: true,
1105
+ success: (resultMsg) => {
1106
+ if (resultMsg.objx && resultMsg.objx.code == "999999") {
1107
+ this.errorSubmit({
1108
+ taskId: taskId,
1109
+ uuid: this.wfInfo.uuid,
1110
+ suggestion: memo,
1111
+ errorMsg: resultMsg.objx.errorMsg
1112
+ });
1113
+ } else {
1114
+ that.$message({
1115
+ message: resultMsg.content,
1116
+ type: "success",
1117
+ duration: 500,
1118
+ onClose: (t) => {
1119
+ this.reloadContent();
1120
+ this.closeWinOnCheck(1);
1121
+ },
1122
+ });
1123
+ }
1124
+ },
1125
+ });
1126
+ },
1127
+ errorSubmit(data) {
1128
+ let that = getTarget(this);
1129
+ that.$http({
1130
+ url: this.current_prefix + "/wf/errorSubmit",
1131
+ data: data,
1132
+ method: "post",
1133
+ isLoading: true,
1134
+ success: (resultMsg) => {
1135
+ that.$message({
1136
+ message: resultMsg.content,
1137
+ type: "success",
1138
+ duration: 500,
1139
+ onClose: (t) => {
1140
+ this.reloadContent();
1141
+ this.closeWinOnCheck(1);
1142
+ },
1143
+ });
1144
+ },
1145
+ });
1146
+ },
1147
+ openChangeWfForm(operateType) {
1148
+ this.operateType = operateType;
1149
+ this.changeWfDialogVisible = true;
1150
+ this.changeUserRows = [];
1151
+ this.changeWfForm = {
1152
+ userIds: [],
1153
+ userNickNames: null,
1154
+ opinion: null,
1155
+ };
1156
+ },
1157
+ subChangeWfForm() {
1158
+ let that = getTarget(this);
1159
+ var procInstId = this.wfInfo.procInstId;
1160
+ var taskId = this.wfInfo.taskId;
1161
+
1162
+ var userIds = this.changeWfForm.userIds || [];
1163
+ var opinion = this.changeWfForm.opinion || null;
1164
+
1165
+ if (!userIds.length) {
1166
+ that.$message({
1167
+ message: this.$t2('请选择转办人', 'components.wf.transferWarnMsg1'),
1168
+ type: "error",
1169
+ duration: 2000,
1170
+ onClose: (t) => {
1171
+ },
1172
+ });
1173
+ return false;
1174
+ }
1175
+
1176
+ var data = JSON.stringify({
1177
+ taskId: taskId,
1178
+ uuid: this.wfInfo.uuid,
1179
+ transferTo: userIds,
1180
+ suggestion: opinion,
1181
+ });
1182
+ this.changeWfDialogVisible = false;
1183
+ that.$http({
1184
+ url: this.current_prefix + "/wf/transfer",
1185
+ data: data,
1186
+ method: "post",
1187
+ headers: {
1188
+ "Content-Type": "application/json;charset=utf-8",
1189
+ },
1190
+ isLoading: true,
1191
+ success: (resultMsg) => {
1192
+ that.$message({
1193
+ message: resultMsg.content,
1194
+ type: "success",
1195
+ duration: 500,
1196
+ onClose: (t) => {
1197
+ this.reloadContent();
1198
+ this.closeWinOnCheck(4);
1199
+ },
1200
+ });
1201
+ },
1202
+ });
1203
+ },
1204
+ userConfirm(rows) {
1205
+ if (rows.length > 0) {
1206
+ let changeUserRows = this.changeUserRows;
1207
+ let ids = changeUserRows.map((changeUserRow) => changeUserRow.id);
1208
+ let addRows = rows.filter((row) => !ids.includes(row.id));
1209
+ changeUserRows.push(...addRows);
1210
+
1211
+ let row = rows[0];
1212
+ this.changeWfForm.userIds = changeUserRows.map(
1213
+ (changeUserRow) => changeUserRow.id
1214
+ );
1215
+ this.changeWfForm.userNickNames = changeUserRows
1216
+ .map((changeUserRow) => changeUserRow.nickName)
1217
+ .join(",");
1218
+ }
1219
+ },
1220
+ reloadContent() {
1221
+ let that = getTarget(this);
1222
+ that.$baseReload();
1223
+ },
1224
+ closeWinOnCheck(flag) {
1225
+ //_closeWindowOnCheck=true, 1提交,2驳回,3中断,4转办时,5沟通 关闭窗口
1226
+ let that = getTarget(this);
1227
+ let _closeWindowOnCheck = that.$attrs._closeWindowOnCheck || that._closeWindowOnCheck;
1228
+ if (_closeWindowOnCheck === true || _closeWindowOnCheck === "true") {
1229
+ window.close && window.close();
1230
+ }
1231
+ let _handleCallback = that.$attrs._handleCallback || that._handleCallback;
1232
+ _handleCallback && _handleCallback(flag);
1233
+ },
1234
+ manualCallback() {
1235
+ this.$emit("manualCallback");
1236
+ },
1237
+ openUrgingDialog(operateType) {
1238
+ this.operateType = operateType;
1239
+ this.urgingDialogVisible = true;
1240
+ },
1241
+ openDeleteTaskUserDialog(operateType) {
1242
+ this.operateType = operateType;
1243
+ this.showDeleteTaskUserDialog = true;
1244
+ },
1245
+ openAddTaskUserDialog(operateType) {
1246
+ this.operateType = operateType;
1247
+ this.showAddTaskUserDialog = true;
1248
+ },
1249
+ openAddIncreaseSign(operateType) {
1250
+ this.operateType = operateType;
1251
+ this.addIncreaseSignUsers = [];
1252
+ this.addIncreaseSignForm = {userNickNames: null};
1253
+ this.showAddIncreaseSignDialog = true;
1254
+ },
1255
+ initWfUserParam(callback) {
1256
+ this.initTransferUserParam();//转办
1257
+ this.initAddSignUserParam();//加签
1258
+ this.initTalkUserParam();//沟通
1259
+ },
1260
+ //
1261
+ initTransferUserParam(callback) {
1262
+ //初始化转办用户参数
1263
+ let that = getTarget(this);
1264
+ return that.$http({
1265
+ url: USER_PREFIX + "/wf_diy_attribute/getValue",
1266
+ method: `post`,
1267
+ data: {attributeKey: "param1"},
1268
+ isLoading: true,
1269
+ modalStrictly: true,
1270
+ success: (res) => {
1271
+ this.wfUserParamForTransfer = res.objx || {};
1272
+ callback && callback();
1273
+ },
1274
+ });
1275
+ },
1276
+ initAddSignUserParam(callback) {
1277
+ //初始化加签用户参数
1278
+ let that = getTarget(this);
1279
+ return that.$http({
1280
+ url: USER_PREFIX + "/wf_diy_attribute/getValue",
1281
+ method: `post`,
1282
+ data: {attributeKey: "param2"},
1283
+ isLoading: true,
1284
+ modalStrictly: true,
1285
+ success: (res) => {
1286
+ this.wfUserParamForAddSign = res.objx || {};
1287
+ callback && callback();
1288
+ },
1289
+ });
1290
+ },
1291
+ initTalkUserParam(callback) {
1292
+ //初始化沟通用户参数
1293
+ let that = getTarget(this);
1294
+ return that.$http({
1295
+ url: USER_PREFIX + "/wf_diy_attribute/getValue",
1296
+ method: `post`,
1297
+ data: {attributeKey: "param3"},
1298
+ isLoading: true,
1299
+ modalStrictly: true,
1300
+ success: (res) => {
1301
+ this.wfUserParamForTalk = res.objx || {};
1302
+ callback && callback();
1303
+ },
1304
+ });
1305
+ },
1306
+ //
1307
+ resetLinkup() {
1308
+ this.formData = {};
1309
+ this.$refs["table-linkup"].commitProxy("reload");
1310
+ },
1311
+ searchLinkup() {
1312
+ this.$refs["table-linkup"].commitProxy("reload");
1313
+ },
1314
+ initLinkup(flag) {
1315
+ return
1316
+ let h = this.$createElement;
1317
+ let statusMap = {
1318
+ 0: this.$t2('未完成', 'components.wf.talkStatus0'),
1319
+ 1: this.$t2('已完成', 'components.wf.talkStatus1'),
1320
+ 2: this.$t2('已取消', 'components.wf.talkStatus2')
1321
+ };
1322
+ let tableOption = {
1323
+ vue: this,
1324
+ tableRef: "table-linkup",
1325
+ tableName: "wf_table-linkup",
1326
+ path: this.current_prefix + "/wf_linkup/listPage",
1327
+ param: () => {
1328
+ return {
1329
+ uuid: this.wfInfo.uuid,
1330
+ };
1331
+ },
1332
+ config: {
1333
+ height: 350
1334
+ },
1335
+ columns: [
1336
+ {type: "checkbox", width: 48, resizable: false, fixed: "left"},
1337
+ {
1338
+ title: this.$t2('任务名称', 'components.wf.taskName'),
1339
+ field: "taskName",
1340
+ width: 150,
1341
+ fixed: "left",
1342
+ },
1343
+ {
1344
+ title: this.$t2('发送人', 'components.wf.senderName'),
1345
+ field: "senderName",
1346
+ width: 150,
1347
+ slots: {
1348
+ default: "sender",
1349
+ },
1350
+ },
1351
+ {
1352
+ title: this.$t2('接收人', 'components.wf.receiverName'),
1353
+ field: "receiverName",
1354
+ width: 150,
1355
+ slots: {
1356
+ default: "receiver",
1357
+ },
1358
+ },
1359
+ {
1360
+ title: this.$t2('沟通内容', 'components.wf.talkContent'),
1361
+ field: "content",
1362
+ width: 250,
1363
+ showOverflow: false,
1364
+ slots: {
1365
+ default: ({row, rowIndex}) => {
1366
+ return row.replyId ? ("[" + this.$t2('回复', 'components.wf.reply') + "]" + row.content) : row.content;
1367
+ },
1368
+ },
1369
+ },
1370
+ {
1371
+ width: 150,
1372
+ title: this.$t2('沟通资料', 'components.wf.talkAttachment'),
1373
+ field: "attachmentImage",
1374
+ sortable: false,
1375
+ slots: {
1376
+ default: ({row, rowIndex}) => {
1377
+ let option = {
1378
+ title: this.$t2('沟通资料', 'components.wf.talkAttachment'),
1379
+ edit: false,
1380
+ rows: (done) => {
1381
+ done(row.attachmentDTOs);
1382
+ },
1383
+ };
1384
+ return [
1385
+ h("base-attachment", {
1386
+ props: {
1387
+ option: option,
1388
+ },
1389
+ }),
1390
+ ];
1391
+ },
1392
+ },
1393
+ },
1394
+
1395
+ {
1396
+ title: this.$t2('状态', 'components.wf.status'),
1397
+ field: "status",
1398
+ width: 150,
1399
+ slots: {
1400
+ default: ({row, rowIndex}) => {
1401
+ return statusMap[row.status] || "";
1402
+ },
1403
+ },
1404
+ },
1405
+ {
1406
+ title: this.$t2('创建时间', 'system.label.createDate'),
1407
+ field: "createDate",
1408
+ width: 150,
1409
+ },
1410
+ {
1411
+ width: 80,
1412
+ fixed: "right",
1413
+ title: "",
1414
+ sortable: false,
1415
+ slots: {
1416
+ default: "operate"
1417
+ }
1418
+ },
1419
+ ],
1420
+ callback: (rows) => {
1421
+ if (rows.length && flag) {
1422
+ let row = rows[0];
1423
+ if (row.replyToSender) {
1424
+ this.$nextTick(() => {
1425
+ this.tabIndex = "2";
1426
+ this.openTalkDialog(row.sender, row.senderName, 'talk', 1, row.id)
1427
+ });
1428
+ }
1429
+ }
1430
+ }
1431
+ };
1432
+ this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
1433
+ this.linkupOption = opts;
1434
+ });
1435
+ },
1436
+ cancelTalk(row) {
1437
+ let that = getTarget(this);
1438
+ that.$baseConfirm(this.$t2('您确定要取消沟通记录吗?', 'components.wf.cancelTalkTip')).then(() => {
1439
+ that.$http({
1440
+ url: this.current_prefix + "/wf_linkup/cancel",
1441
+ data: {id: row.id},
1442
+ method: "post",
1443
+ loadingTarget: document.body,
1444
+ isLoading: true,
1445
+ success: (resultMsg) => {
1446
+ that.$message({
1447
+ message: resultMsg.content,
1448
+ type: "success",
1449
+ duration: 500,
1450
+ onClose: (t) => {
1451
+ this.reloadContent();
1452
+ },
1453
+ });
1454
+ },
1455
+ });
1456
+ });
1457
+ },
1458
+ openTalkDialog(receiver, receiverName, operateType, flag, replyId) {
1459
+ this.operateType = operateType;
1460
+ /*this.talkForm.receiver = receiver || null;
1461
+ this.talkForm.receiverName = receiverName || null;
1462
+ this.talkForm.replyId = replyId || null;
1463
+ this.talkForm.content = null;
1464
+ this.talkForm.attachmentDTOs = [];*/
1465
+ this.initTalkForm(receiver, receiverName, replyId)
1466
+ this.showTalkDialog = true;
1467
+ if (flag == 1) {
1468
+ let opeaBtnDom = this.$refs.opeaBtn;
1469
+ opeaBtnDom && opeaBtnDom.scrollIntoView();
1470
+ }
1471
+ },
1472
+ initTalkForm(receiver, receiverName, replyId) {
1473
+ this.talkForm.receiver = receiver || null;
1474
+ this.talkForm.receiverName = receiverName || null;
1475
+ this.talkForm.replyId = replyId || null;
1476
+ this.talkForm.content = null;
1477
+ this.talkForm.attachmentDTOs = [];
1478
+ },
1479
+ submitTalkForm() {
1480
+ let that = getTarget(this);
1481
+ var procInstId = this.wfInfo.procInstId;
1482
+ var taskId = this.wfInfo.taskId;
1483
+
1484
+ if (!this.talkForm.receiver) {
1485
+ that.$message({
1486
+ message: this.$t2('请选择接收人', 'components.wf.talkWarnMsg1'),
1487
+ type: "error",
1488
+ duration: 2 * 1000,
1489
+ });
1490
+ return false;
1491
+ }
1492
+ if (!this.talkForm.content) {
1493
+ that.$message({
1494
+ message: this.$t2('请输入沟通内容', 'components.wf.talkWarnMsg2'),
1495
+ type: "error",
1496
+ duration: 2 * 1000,
1497
+ });
1498
+ return false;
1499
+ }
1500
+
1501
+ var data = {
1502
+ taskId: taskId,
1503
+ uuid: this.wfInfo.uuid,
1504
+ receiver: this.talkForm.receiver,
1505
+ receiverName: this.talkForm.receiverName,
1506
+ replyId: this.talkForm.replyId,
1507
+ content: this.talkForm.content,
1508
+ attachmentDTOs: this.talkForm.attachmentDTOs,
1509
+ notifyType: "wfLinkup",
1510
+ };
1511
+ this.showTalkDialog = false;
1512
+ that.$http({
1513
+ url: this.current_prefix + "/wf_linkup/save",
1514
+ data: data,
1515
+ method: "post",
1516
+ isLoading: true,
1517
+ success: (resultMsg) => {
1518
+ that.$message({
1519
+ message: resultMsg.content,
1520
+ type: "success",
1521
+ duration: 500,
1522
+ onClose: (t) => {
1523
+ this.reloadContent();
1524
+ this.closeWinOnCheck(5);
1525
+ },
1526
+ });
1527
+ },
1528
+ });
1529
+ },
1530
+ openTalkUserDialog() {
1531
+ this.showTalkUserDialog = true;
1532
+ },
1533
+ confirmTalkUserDialog(rows) {
1534
+ if (rows.length > 0) {
1535
+ let row = rows[0];
1536
+ if (this.talkForm.receiver != row.id) {
1537
+ this.talkForm.replyId = null;
1538
+ }
1539
+ this.talkForm.receiver = row.id;
1540
+ this.talkForm.receiverName = row.nickName;
1541
+ }
1542
+ },
1543
+ confirmUrging() {
1544
+ this.reloadContent();
1545
+ },
1546
+ confirmDeleteTaskUser() {
1547
+ this.reloadContent();
1548
+ },
1549
+ confirmAddTaskUser(rows) {
1550
+ this.addIncreaseSignUsers = rows;
1551
+ this.addIncreaseSignForm.userNickNames = rows.map(row => row.nickName).join(',');
1552
+ // this.reloadContent();
1553
+ },
1554
+ submitAddTaskUserForm(flag) {
1555
+ let that = getTarget(this);
1556
+ let userIds = this.addIncreaseSignUsers.map((checkRow) => checkRow.id);
1557
+ if (userIds.length == 0) {
1558
+ that.$message({
1559
+ message: this.$t2('请选择候选人', 'components.wf.addIncreaseSignWarnMsg1'),
1560
+ type: "error",
1561
+ duration: 2000,
1562
+ onClose: (t) => {
1563
+ },
1564
+ });
1565
+ return false;
1566
+ }
1567
+ let toDo = () => {
1568
+ var data = JSON.stringify({
1569
+ uuid: this.wfInfo.uuid,
1570
+ taskId: this.wfInfo.taskId,
1571
+ userIds: userIds,
1572
+ suggestion: this.addIncreaseSignForm.opinion
1573
+
1574
+ });
1575
+ this.agreeDialogVisible = false;
1576
+ that.$http({
1577
+ url: this.current_prefix + "/wf/addIncreaseSign",
1578
+ data: data,
1579
+ method: "post",
1580
+ loadingTarget: document.body,
1581
+ headers: {
1582
+ "Content-Type": "application/json;charset=utf-8",
1583
+ },
1584
+ isLoading: true,
1585
+ success: (resultMsg) => {
1586
+ that.$message({
1587
+ message: resultMsg.content,
1588
+ type: "success",
1589
+ duration: 500,
1590
+ onClose: (t) => {
1591
+ this.reloadContent();
1592
+ },
1593
+ });
1594
+ },
1595
+ });
1596
+ }
1597
+ if (flag === 0) {
1598
+ toDo();
1599
+ } else {
1600
+ that.$baseConfirm(this.$t2('您确定要加签吗?', 'components.wf.addIncreaseSignConfirmTip')).then(() => {
1601
+ toDo();
1602
+ });
1603
+ }
1604
+ },
1605
+ openSetCandidateDialog(operateType) {
1606
+ this.operateType = operateType;
1607
+ this.showSetCandidateDialog = true;
1608
+ },
1609
+ closeSetCandidateDialog() {
1610
+ this.showSetCandidateDialog = false;
1611
+ this.reloadContent();
1612
+ },
1613
+ openRevokeDialog(operateType) {
1614
+ this.operateType = operateType;
1615
+ this.revokeForm = {opinion: null}
1616
+ this.revokeDialogVisible = true;
1617
+ },
1618
+ subRevokeForm(flag) {
1619
+ //撤回
1620
+ let that = getTarget(this);
1621
+ let toDo = () => {
1622
+ var data = JSON.stringify({
1623
+ uuid: this.wfInfo.uuid,
1624
+ taskId: this.wfInfo.taskId,
1625
+ suggestion: this.revokeForm.opinion,
1626
+ });
1627
+ this.revokeDialogVisible = false;
1628
+ that.$http({
1629
+ url: this.current_prefix + "/wf/revoke",
1630
+ data: data,
1631
+ method: "post",
1632
+ loadingTarget: document.body,
1633
+ headers: {
1634
+ "Content-Type": "application/json;charset=utf-8",
1635
+ },
1636
+ isLoading: true,
1637
+ success: (resultMsg) => {
1638
+ that.$message({
1639
+ message: resultMsg.content,
1640
+ type: "success",
1641
+ duration: 500,
1642
+ onClose: (t) => {
1643
+ this.reloadContent();
1644
+ },
1645
+ });
1646
+ },
1647
+ });
1648
+ }
1649
+ if (flag === 0) {
1650
+ toDo();
1651
+ } else {
1652
+ that.$baseConfirm(this.$t2('您确定要撤回吗?', 'components.wf.revokeConfirmTip')).then(() => {
1653
+ toDo();
1654
+ });
1655
+ }
1656
+ }
1657
+ }
1658
+ }
1659
+ </script>
1660
+
1661
+ <style scoped>
1662
+ ::v-deep .form-box.el-form .el-form-item .el-form-item__label {
1663
+ width: 70px
1664
+ }
1665
+ </style>