qgb-process 0.2.3 → 0.2.7

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 (502) hide show
  1. package/.env +2 -2
  2. package/.env.development +70 -70
  3. package/.env.pre +60 -60
  4. package/.env.production +48 -48
  5. package/.env.test +48 -48
  6. package/.eslintignore +4 -4
  7. package/.eslintrc.js +302 -302
  8. package/README.md +66 -66
  9. package/babel.config.js +5 -5
  10. package/commitlint.config.js +30 -30
  11. package/config/dev.env.js +7 -7
  12. package/config/index.js +82 -82
  13. package/config/prod.env.js +4 -4
  14. package/debug.log +4 -4
  15. package/index.js +6 -6
  16. package/jsconfig.json +9 -9
  17. package/lib/qgb-process.common.js +7666 -5069
  18. package/lib/qgb-process.umd.js +7666 -5069
  19. package/lib/qgb-process.umd.min.js +108 -108
  20. package/package.json +148 -148
  21. package/packages/index.js +26 -26
  22. package/public/index.html +47 -47
  23. package/public/js/qykf.js +21 -21
  24. package/src/App.vue +37 -37
  25. package/src/api/ApiExAndapp.js +24 -24
  26. package/src/api/EnterpriseAssociation.js +8 -8
  27. package/src/api/Notice.js +31 -31
  28. package/src/api/apiAcceptance/apiAcceptance.js +37 -37
  29. package/src/api/apiAddress.js +9 -9
  30. package/src/api/apiApprovalConfig.js +13 -13
  31. package/src/api/apiApprove.js +18 -18
  32. package/src/api/apiArrears/apiArrears.js +41 -41
  33. package/src/api/apiArrears/apiProjectArrears.js +16 -16
  34. package/src/api/apiArrears/index.js +15 -15
  35. package/src/api/apiAssets.js +19 -19
  36. package/src/api/apiAssociate.js +42 -42
  37. package/src/api/apiAudit/apiAudit.js +32 -32
  38. package/src/api/apiAuth.js +25 -25
  39. package/src/api/apiAuthentication.js +35 -35
  40. package/src/api/apiBankAccount/index.js +12 -12
  41. package/src/api/apiBudget/apiBudget.js +30 -30
  42. package/src/api/apiBudget/apiBudgets.js +105 -105
  43. package/src/api/apiCarRecord.js +48 -48
  44. package/src/api/apiCart.js +202 -202
  45. package/src/api/apiChangeTel.js +13 -13
  46. package/src/api/apiCheckingIn.js +95 -95
  47. package/src/api/apiCollection/index.js +13 -13
  48. package/src/api/apiContract/apiContract.js +21 -21
  49. package/src/api/apiContract/index.js +3 -3
  50. package/src/api/apiContract/quill-config.js +122 -122
  51. package/src/api/apiContractManage/apiContractManage.js +57 -57
  52. package/src/api/apiContractManage/index.js +2 -2
  53. package/src/api/apiContractManage/quill-config.js +121 -121
  54. package/src/api/apiCoping.js +22 -22
  55. package/src/api/apiCost/index.js +31 -31
  56. package/src/api/apiCreditManagement.js +16 -16
  57. package/src/api/apiCustomer/apiCustomer.js +12 -12
  58. package/src/api/apiDivisional.js +9 -9
  59. package/src/api/apiDivisionalManagementList.js +17 -17
  60. package/src/api/apiEmployeeRegularization.js +73 -73
  61. package/src/api/apiEquipmentRental.js +50 -50
  62. package/src/api/apiFormBuilder/menu.js +65 -65
  63. package/src/api/apiFormBuilder/reissueRule.js +15 -15
  64. package/src/api/apiFund/index.js +16 -16
  65. package/src/api/apiHelp.js +43 -43
  66. package/src/api/apiHome.js +24 -24
  67. package/src/api/apiIminfo.js +39 -39
  68. package/src/api/apiInventory.js +52 -52
  69. package/src/api/apiInventorySetting.js +9 -9
  70. package/src/api/apiInvoice.js +29 -29
  71. package/src/api/apiJobManage.js +15 -15
  72. package/src/api/apiLease/apiLease.js +12 -12
  73. package/src/api/apiLogisticsTransportation/apiLogisticsTransportation.js +34 -34
  74. package/src/api/apiLostPassword.js +9 -9
  75. package/src/api/apiMachine/api.js +3 -3
  76. package/src/api/apiMachine/apiCategory.js +18 -18
  77. package/src/api/apiMachine/apiHire.js +19 -19
  78. package/src/api/apiMachine/apiLease.js +27 -27
  79. package/src/api/apiMachine/apiLocation.js +4 -4
  80. package/src/api/apiMachine/apiRentInfo.js +107 -107
  81. package/src/api/apiMachine/apiRentPublish.js +14 -14
  82. package/src/api/apiMachine/apiStore.js +15 -15
  83. package/src/api/apiMachine/index.js +3 -3
  84. package/src/api/apiManagementStore/api.js +3 -3
  85. package/src/api/apiManagementStore/apiManagementStore.js +25 -25
  86. package/src/api/apiMaterCheckAndAccept/apiMaterCheckAndAccept.js +47 -47
  87. package/src/api/apiMaterCheckAndAccept/apiMechanicalSourcing.js +16 -16
  88. package/src/api/apiMaterCheckAndAccept/index.js +3 -3
  89. package/src/api/apiMaterials/aaaaaaaaaaaaaa.js +9 -9
  90. package/src/api/apiMaterials/api.js +3 -3
  91. package/src/api/apiMaterials/apiAddress.js +116 -116
  92. package/src/api/apiMaterials/apiBalanceData.js +188 -188
  93. package/src/api/apiMaterials/apiCommercialConcrete.js +36 -36
  94. package/src/api/apiMaterials/apiCommodity.js +70 -70
  95. package/src/api/apiMaterials/apiDownload.js +26 -26
  96. package/src/api/apiMaterials/apiHome.js +44 -44
  97. package/src/api/apiMaterials/apiItemBrand.js +9 -9
  98. package/src/api/apiMaterials/apiLogistics.js +72 -72
  99. package/src/api/apiMaterials/apiLogisticsReceipt.js +94 -94
  100. package/src/api/apiMaterials/apiMaterials.js +8 -8
  101. package/src/api/apiMaterials/apiMySalesOrder.js +21 -21
  102. package/src/api/apiMaterials/apiOfflineOrder.js +18 -18
  103. package/src/api/apiMaterials/apiOrder.js +183 -183
  104. package/src/api/apiMaterials/apiReceipt.js +45 -45
  105. package/src/api/apiMaterials/quill-config.js +122 -122
  106. package/src/api/apiMemberSelection.js +39 -39
  107. package/src/api/apiMessage.js +10 -10
  108. package/src/api/apiMock/mockOrder.js +98 -98
  109. package/src/api/apiMonthPlan/apiMonthPlan.js +47 -47
  110. package/src/api/apiMyBidding.js +8 -8
  111. package/src/api/apiMyMember/apiComInfo.js +17 -17
  112. package/src/api/apiMyMember/apiInviteJoin.js +24 -24
  113. package/src/api/apiMyMember/apiMember.js +24 -24
  114. package/src/api/apiMyMember/apiMemberApply.js +36 -36
  115. package/src/api/apiMyMember/apiMemberChance.js +40 -40
  116. package/src/api/apiOffer.js +40 -40
  117. package/src/api/apiOffice.js +19 -19
  118. package/src/api/apiPact.js +26 -26
  119. package/src/api/apiPassword.js +7 -7
  120. package/src/api/apiPay/apiPay.js +25 -25
  121. package/src/api/apiPaying.js +21 -21
  122. package/src/api/apiPayment/apiPayment.js +13 -13
  123. package/src/api/apiPayment/apiProjectPayment.js +13 -13
  124. package/src/api/apiPrint.js +23 -0
  125. package/src/api/apiProcess.js +65 -65
  126. package/src/api/apiProject/apiBaseList.js +29 -29
  127. package/src/api/apiProject/apiGoodsOffer.js +11 -11
  128. package/src/api/apiProject/apiInventory.js +116 -116
  129. package/src/api/apiProject/apiOfferOrder.js +12 -12
  130. package/src/api/apiProject/apiOfferQuery.js +18 -18
  131. package/src/api/apiProject/apiPlan.js +21 -21
  132. package/src/api/apiProject/apiProject.js +158 -158
  133. package/src/api/apiProjectProcurement/apiProjectProcurement.js +88 -88
  134. package/src/api/apiPurchase/apiPurchase.js +67 -67
  135. package/src/api/apiPurchaseApply.js +15 -15
  136. package/src/api/apiPurchasePay.js +16 -16
  137. package/src/api/apiRankManagement.js +24 -24
  138. package/src/api/apiRecruit.js +37 -37
  139. package/src/api/apiReimbursement/apiReimbursement.js +15 -15
  140. package/src/api/apiRisk/index.js +11 -11
  141. package/src/api/apiRoleManagement.js +15 -15
  142. package/src/api/apiRules/apiRules.js +11 -11
  143. package/src/api/apiSchedule/apiSchedule.js +17 -17
  144. package/src/api/apiSealRecord.js +52 -52
  145. package/src/api/apiSign.js +8 -8
  146. package/src/api/apiSolution/apiSolution.js +9 -9
  147. package/src/api/apiSubcontract.js +35 -35
  148. package/src/api/apiSystem/index.js +40 -40
  149. package/src/api/apiTask.js +76 -76
  150. package/src/api/apiTeam/api.js +3 -3
  151. package/src/api/apiTeam/apiUtils.js +11 -11
  152. package/src/api/apiTender.js +127 -127
  153. package/src/api/apiUser.js +24 -24
  154. package/src/api/apiUserEnterprise/api.js +3 -3
  155. package/src/api/apiUserEnterprise/apiUserEn.js +15 -15
  156. package/src/api/apiVolunteerTeam.js +11 -11
  157. package/src/api/apiWorkarea.js +33 -33
  158. package/src/api/apiXzqh.js +8 -8
  159. package/src/api/common/api.js +3 -3
  160. package/src/api/common/apiUtils.js +9 -9
  161. package/src/api/customer.js +21 -21
  162. package/src/api/evection.js +19 -19
  163. package/src/api/guide.js +9 -9
  164. package/src/api/sociaManageApi.js +30 -30
  165. package/src/assets/Area.json +1773 -1773
  166. package/src/assets/css/quill.bubble.css +952 -952
  167. package/src/assets/css/quill.core.css +397 -397
  168. package/src/assets/css/quill.snow.css +945 -945
  169. package/src/assets/data.js +284 -284
  170. package/src/assets/fonts/Read Me.txt +7 -7
  171. package/src/assets/fonts/demo-files/demo.css +155 -155
  172. package/src/assets/fonts/demo-files/demo.js +30 -30
  173. package/src/assets/fonts/demo.html +951 -951
  174. package/src/assets/fonts/fonts/icomoon.svg +130 -130
  175. package/src/assets/fonts/style.css +563 -563
  176. package/src/assets/icons/checkbox.svg +12 -12
  177. package/src/assets/icons/columns-3.svg +12 -12
  178. package/src/assets/icons/columns.svg +12 -12
  179. package/src/assets/icons/custom-table.svg +12 -12
  180. package/src/assets/icons/date.svg +19 -19
  181. package/src/assets/icons/daterange.svg +12 -12
  182. package/src/assets/icons/fuzhi.svg +11 -11
  183. package/src/assets/icons/fuzhi_03.svg +5 -5
  184. package/src/assets/icons/gaojizujian.svg +12 -12
  185. package/src/assets/icons/groupSummary.svg +12 -12
  186. package/src/assets/icons/groupTitle.svg +12 -12
  187. package/src/assets/icons/image-uploader.svg +12 -12
  188. package/src/assets/icons/input-number.svg +12 -12
  189. package/src/assets/icons/input.svg +12 -12
  190. package/src/assets/icons/quill-editor.svg +12 -12
  191. package/src/assets/icons/radio.svg +12 -12
  192. package/src/assets/icons/select.svg +12 -12
  193. package/src/assets/icons/switch.svg +12 -12
  194. package/src/assets/icons/textarea.svg +12 -12
  195. package/src/assets/icons/upload-file.svg +12 -12
  196. package/src/assets/marketplace.js +289 -289
  197. package/src/components/ComAduitNew.vue +477 -477
  198. package/src/components/CommonAduit.vue +512 -512
  199. package/src/components/CommonAduitNew.vue +906 -906
  200. package/src/components/CommonAduitNews.vue +753 -753
  201. package/src/components/CommonUEditer.vue +63 -63
  202. package/src/components/PersonCenter/Mess.vue +59 -59
  203. package/src/components/PersonCenter/Title.vue +80 -80
  204. package/src/components/SvgIcon.vue +57 -57
  205. package/src/components/XmCommonAduit.vue +761 -761
  206. package/src/components/feiyCommon.vue +713 -713
  207. package/src/components/form/card.js +5 -5
  208. package/src/components/form/chinese.js +6 -6
  209. package/src/components/form/chinessstring.js +5 -5
  210. package/src/components/form/hunhe.js +8 -8
  211. package/src/components/form/hunhecq.js +8 -8
  212. package/src/components/form/hunheh.js +8 -8
  213. package/src/components/form/num.js +12 -12
  214. package/src/components/form/numstring.js +5 -5
  215. package/src/components/form/user.js +7 -7
  216. package/src/components/form/validate.js +42 -42
  217. package/src/components/form/validcredit.js +5 -5
  218. package/src/components/fundCommonAduit.vue +661 -661
  219. package/src/components/public/BaseCustomTable.vue +71 -71
  220. package/src/components/public/BaseDialog.vue +144 -144
  221. package/src/components/public/BaseEmptyData.vue +73 -73
  222. package/src/components/public/BaseFormTitle.vue +39 -39
  223. package/src/components/public/BasePagination.vue +55 -55
  224. package/src/components/public/BaseRouter.vue +14 -14
  225. package/src/components/public/BaseUpload.vue +185 -185
  226. package/src/components/public/Bottom.vue +62 -62
  227. package/src/components/public/Footer.vue +412 -412
  228. package/src/components/public/Header.vue +30 -30
  229. package/src/components/public/LeftMenu.vue +170 -170
  230. package/src/components/public/MemberSelection coby.vue +444 -444
  231. package/src/components/public/MemberSelection.vue +487 -487
  232. package/src/components/public/NewLeftMenu.vue +418 -418
  233. package/src/components/public/PicturesPreview.vue +62 -62
  234. package/src/components/public/Popout.vue +147 -147
  235. package/src/components/public/TagLine.vue +353 -353
  236. package/src/components/public/components/BaseImageUploadDrag.vue +320 -320
  237. package/src/components/public/components/HeadBar.vue +315 -315
  238. package/src/components/public/components/MenuList.vue +110 -110
  239. package/src/components/public/components/NewHeadBar.vue +936 -936
  240. package/src/components/public/components/QuickGoods.vue +273 -273
  241. package/src/components/public/components/Search.vue +164 -164
  242. package/src/components/public/components/Userinfo.vue +383 -383
  243. package/src/components/utils/pdf.js +254 -254
  244. package/src/components/xmfyCommonAduit.vue +752 -752
  245. package/src/filters/index.js +619 -619
  246. package/src/fnc/arr.js +102 -102
  247. package/src/fnc/quill-config.js +121 -121
  248. package/src/fnc/unit.js +102 -102
  249. package/src/fnc/verify.js +187 -187
  250. package/src/fnc/verifyStatus.js +24 -24
  251. package/src/formBuilder/apiBusiness.js +67 -67
  252. package/src/formBuilder/business.js +1039 -1039
  253. package/src/formBuilder/component/components/data.js +719 -719
  254. package/src/formBuilder/component/components/purchaseIndex.vue +1109 -1109
  255. package/src/formBuilder/component/purchase.vue +35 -35
  256. package/src/formBuilder/components/app-main/components/components/GroupSummary.vue +33 -33
  257. package/src/formBuilder/components/app-main/components/components/GroupTitle.vue +33 -33
  258. package/src/formBuilder/components/app-main/components/components/bank.vue +226 -226
  259. package/src/formBuilder/components/app-main/components/components/bankFormHeard.vue +298 -298
  260. package/src/formBuilder/components/app-main/components/components/builder.vue +718 -718
  261. package/src/formBuilder/components/app-main/components/components/columns.vue +393 -393
  262. package/src/formBuilder/components/app-main/components/components/customTable.vue +1758 -1758
  263. package/src/formBuilder/components/app-main/components/components/formDep.vue +105 -105
  264. package/src/formBuilder/components/app-main/components/components/handleCode.vue +39 -39
  265. package/src/formBuilder/components/app-main/components/components/itemOption.vue +116 -116
  266. package/src/formBuilder/components/app-main/components/components/linkForm.vue +116 -116
  267. package/src/formBuilder/components/app-main/components/components/listDesign.vue +772 -772
  268. package/src/formBuilder/components/app-main/components/components/optionSolt.js +78 -78
  269. package/src/formBuilder/components/app-main/components/components/person.vue +104 -104
  270. package/src/formBuilder/components/app-main/components/components/postman.vue +40 -40
  271. package/src/formBuilder/components/app-main/components/components/previewDialog.vue +391 -391
  272. package/src/formBuilder/components/app-main/components/components/tableIndex.vue +51 -51
  273. package/src/formBuilder/components/app-main/components/components/tableList.vue +561 -561
  274. package/src/formBuilder/components/app-main/components/components/twoColumns.vue +52 -52
  275. package/src/formBuilder/components/app-main/components/main-center.vue +187 -187
  276. package/src/formBuilder/components/app-main/components/main-header.vue +351 -351
  277. package/src/formBuilder/components/app-main/components/main-left.vue +179 -179
  278. package/src/formBuilder/components/app-main/components/main-right/components/components/calculateDialog.vue +914 -914
  279. package/src/formBuilder/components/app-main/components/main-right/components/components/curTextArea.vue +338 -338
  280. package/src/formBuilder/components/app-main/components/main-right/components/components/form-item-rules.vue +190 -190
  281. package/src/formBuilder/components/app-main/components/main-right/components/components/linkageDialog.vue +25 -25
  282. package/src/formBuilder/components/app-main/components/main-right/components/components/searchMixin.js +26 -26
  283. package/src/formBuilder/components/app-main/components/main-right/components/form-config.vue +284 -284
  284. package/src/formBuilder/components/app-main/components/main-right/components/form-item-attrs.vue +407 -407
  285. package/src/formBuilder/components/app-main/components/main-right/components/form-item-config.vue +478 -478
  286. package/src/formBuilder/components/app-main/components/main-right/index.vue +203 -203
  287. package/src/formBuilder/components/app-main/index.vue +329 -329
  288. package/src/formBuilder/comps.js +283 -283
  289. package/src/formBuilder/config/button.js +63 -63
  290. package/src/formBuilder/config/cascader-panel.js +224 -224
  291. package/src/formBuilder/config/cascader.js +306 -306
  292. package/src/formBuilder/config/checkbox.js +67 -67
  293. package/src/formBuilder/config/color.js +42 -42
  294. package/src/formBuilder/config/columns.js +30 -30
  295. package/src/formBuilder/config/custom-table.js +49 -49
  296. package/src/formBuilder/config/date.js +107 -107
  297. package/src/formBuilder/config/daterange.js +47 -47
  298. package/src/formBuilder/config/datetime.js +78 -78
  299. package/src/formBuilder/config/datetimerange.js +111 -111
  300. package/src/formBuilder/config/formDep.js +37 -37
  301. package/src/formBuilder/config/groupSummary.js +23 -23
  302. package/src/formBuilder/config/groupTitle.js +23 -23
  303. package/src/formBuilder/config/handleCode.js +23 -23
  304. package/src/formBuilder/config/image-uploader.js +113 -113
  305. package/src/formBuilder/config/input.js +162 -162
  306. package/src/formBuilder/config/json-editor.js +31 -31
  307. package/src/formBuilder/config/linkForm.js +69 -69
  308. package/src/formBuilder/config/number.js +49 -49
  309. package/src/formBuilder/config/password.js +82 -82
  310. package/src/formBuilder/config/person.js +37 -37
  311. package/src/formBuilder/config/postman.js +23 -23
  312. package/src/formBuilder/config/purchase.js +19 -19
  313. package/src/formBuilder/config/quill-editor.js +66 -66
  314. package/src/formBuilder/config/radio-button.js +44 -44
  315. package/src/formBuilder/config/radio.js +69 -69
  316. package/src/formBuilder/config/rate.js +93 -93
  317. package/src/formBuilder/config/select.js +105 -105
  318. package/src/formBuilder/config/slider.js +92 -92
  319. package/src/formBuilder/config/switch.js +35 -35
  320. package/src/formBuilder/config/tag.js +79 -79
  321. package/src/formBuilder/config/text.js +18 -18
  322. package/src/formBuilder/config/textarea.js +129 -129
  323. package/src/formBuilder/config/time.js +60 -60
  324. package/src/formBuilder/config/timerange.js +94 -94
  325. package/src/formBuilder/config/tree-select.js +100 -100
  326. package/src/formBuilder/config/upload-file.js +100 -100
  327. package/src/formBuilder/config/yesno.js +39 -39
  328. package/src/formBuilder/config.js +16 -16
  329. package/src/formBuilder/extend/index.js +20 -20
  330. package/src/formBuilder/index.js +39 -39
  331. package/src/formBuilder/menuConfig.js +36 -36
  332. package/src/formBuilder/mixins/index.js +215 -215
  333. package/src/formBuilder/tool.js +101 -101
  334. package/src/function/base.js +13 -13
  335. package/src/function/findCompanyTree.js +94 -94
  336. package/src/function/formulaAnalysis.js +44 -44
  337. package/src/function/verify.js +23 -23
  338. package/src/http/index.js +219 -219
  339. package/src/http/type.js +82 -82
  340. package/src/library/AddType/Index.js +17 -17
  341. package/src/library/AddType/Index.vue +201 -201
  342. package/src/library/AreaChange/regionCascader/regionCascader.vue +155 -155
  343. package/src/library/BigImg/BigImage1/Index.js +17 -17
  344. package/src/library/BigImg/BigImage1/Index.vue +125 -125
  345. package/src/library/Button/Button1/Index.js +17 -17
  346. package/src/library/Button/Button1/Index.vue +60 -60
  347. package/src/library/Button/Button2/Index.js +17 -17
  348. package/src/library/Button/Button2/Index.vue +52 -52
  349. package/src/library/Button/Button3/Index.js +17 -17
  350. package/src/library/Button/Button3/Index.vue +56 -56
  351. package/src/library/Button/Button4/Index.js +17 -17
  352. package/src/library/Button/Button4/Index.vue +56 -56
  353. package/src/library/Button/Button5/Index.js +17 -17
  354. package/src/library/Button/Button5/Index.vue +55 -55
  355. package/src/library/Button/Button6/Index.js +17 -17
  356. package/src/library/Button/Button6/Index.vue +74 -74
  357. package/src/library/Button/Button7/Index.js +17 -17
  358. package/src/library/Button/Button7/Index.vue +56 -56
  359. package/src/library/ConfirmPlaugin/ConfirmPlaugin1/Index.js +17 -17
  360. package/src/library/ConfirmPlaugin/ConfirmPlaugin1/Index.vue +147 -147
  361. package/src/library/ConfirmPlaugin/ConfirmPlaugin2/Index.js +17 -17
  362. package/src/library/ConfirmPlaugin/ConfirmPlaugin2/Index.vue +137 -137
  363. package/src/library/ConfirmPlaugin/ConfirmPlaugin3/Index.vue +142 -142
  364. package/src/library/ConfirmPlaugin/ConfirmPlaugin4/Index.vue +141 -141
  365. package/src/library/ConfirmPlaugin/ConfirmPlaugin5/Index.vue +121 -121
  366. package/src/library/ConfirmPlaugin/ConfirmPlaugin6/Index.vue +142 -142
  367. package/src/library/Input/Input1/Index.js +17 -17
  368. package/src/library/Input/Input1/Index.vue +66 -66
  369. package/src/library/NoMessage/NoMessage0/Index.js +17 -17
  370. package/src/library/NoMessage/NoMessage0/Index.vue +60 -60
  371. package/src/library/NoMessage/NoMessage1/Index.js +17 -17
  372. package/src/library/NoMessage/NoMessage1/Index.vue +66 -66
  373. package/src/library/NoMessage/NoMessage2/Index.js +17 -17
  374. package/src/library/NoMessage/NoMessage2/Index.vue +66 -66
  375. package/src/library/Tab/Tab1/TabBox1/Index.vue +36 -36
  376. package/src/library/Tab/Tab1/TabInner1/Index.vue +70 -70
  377. package/src/library/Tab/Tab2/TabBox2/Index.vue +36 -36
  378. package/src/library/Tab/Tab2/TabInner2/Index.vue +66 -66
  379. package/src/library/Table/Table1/Td1/Index.js +17 -17
  380. package/src/library/Table/Table1/Td1/Index.vue +110 -110
  381. package/src/library/Table/Table1/Tr1/Index.js +17 -17
  382. package/src/library/Table/Table1/Tr1/Index.vue +53 -53
  383. package/src/library/Table/Table2/Td2/Index.js +17 -17
  384. package/src/library/Table/Table2/Td2/Index.vue +90 -90
  385. package/src/library/Table/Table2/Tr2/Index.js +17 -17
  386. package/src/library/Table/Table2/Tr2/Index.vue +66 -66
  387. package/src/library/Table/Table3/Td3/Index.js +17 -17
  388. package/src/library/Table/Table3/Td3/Index.vue +109 -109
  389. package/src/library/Table/Table3/Tr3/Index.js +17 -17
  390. package/src/library/Table/Table3/Tr3/Index.vue +128 -128
  391. package/src/library/Table/Table4/Td4/Index.js +17 -17
  392. package/src/library/Table/Table4/Td4/Index.vue +114 -114
  393. package/src/library/Table/Table4/Tr4/Index.js +17 -17
  394. package/src/library/Table/Table4/Tr4/Index.vue +53 -53
  395. package/src/library/Title/Title1/Index.js +17 -17
  396. package/src/library/Title/Title1/Index.vue +80 -80
  397. package/src/library/toast/Index.js +17 -17
  398. package/src/library/toast/Index.vue +86 -86
  399. package/src/main.js +161 -161
  400. package/src/mixins/Export2Excel.js +207 -207
  401. package/src/mixins/chartOption.js +110 -110
  402. package/src/mixins/companyMixins.js +84 -84
  403. package/src/mixins/quillOptions.js +15 -15
  404. package/src/mixins/validate/deviceManage.js +211 -211
  405. package/src/mixins/validate/systemConfig.js +117 -117
  406. package/src/mixins/validate/validate.js +25 -25
  407. package/src/public/apiUser/apiUser.js +10 -10
  408. package/src/public/areaFunction.js +26 -26
  409. package/src/public/link.js +91 -91
  410. package/src/public/stageData.js +495 -495
  411. package/src/public/topmenu.js +68 -68
  412. package/src/router/index.js +225 -225
  413. package/src/router/setting/BaseRoutes.js +1639 -1639
  414. package/src/router/setting/MenuDevMock.js +1570 -1570
  415. package/src/router/setting/modules/login.js +45 -45
  416. package/src/router/setting/noAuthRouter.js +109 -109
  417. package/src/router/setting/routes.js +55 -55
  418. package/src/static/css/flex.css +75 -75
  419. package/src/static/css/switch.scss +31 -31
  420. package/src/storage/cookies.js +37 -37
  421. package/src/storage/localStorage.js +36 -36
  422. package/src/storage/sessionStorage.js +25 -25
  423. package/src/store/formBuilder/formAttrDefault.js +28 -28
  424. package/src/store/formBuilder/index.js +40 -40
  425. package/src/store/index.js +553 -553
  426. package/src/styles/color.scss +24 -24
  427. package/src/styles/offer.scss +39 -39
  428. package/src/styles/s-reset.scss +52 -52
  429. package/src/styles/static-style.scss +797 -797
  430. package/src/styles/talent.scss +26 -26
  431. package/src/styles/variable.scss +69 -69
  432. package/src/styles/workflow/workflow.css +1308 -1308
  433. package/src/utils/TableFormTypeList.js +26 -26
  434. package/src/utils/allRouter.js +5579 -5579
  435. package/src/utils/auditUtil.js +535 -535
  436. package/src/utils/commonComponents.js +34 -34
  437. package/src/utils/commonFunc.js +213 -213
  438. package/src/utils/deepCopyArray.js +9 -9
  439. package/src/utils/dict.js +49 -49
  440. package/src/utils/directive.js +26 -26
  441. package/src/utils/emoji.js +16 -16
  442. package/src/utils/flator.js +18 -18
  443. package/src/utils/imMeeting.js +1180 -1180
  444. package/src/utils/index.js +105 -105
  445. package/src/utils/initRouter.js +94 -94
  446. package/src/utils/map.js +23 -23
  447. package/src/utils/passwordStrength.js +177 -177
  448. package/src/utils/style.js +30 -30
  449. package/src/utils/validate.js +30 -30
  450. package/src/views/404.vue +53 -53
  451. package/src/views/Login/Login.vue +50 -50
  452. package/src/views/Login/Passfind.vue +347 -347
  453. package/src/views/Login/Passfindnext.vue +146 -146
  454. package/src/views/Login/Sign.vue +55 -55
  455. package/src/views/Login/SignSuccessfully.vue +132 -132
  456. package/src/views/Login/appDownload.vue +224 -224
  457. package/src/views/Login/clientDownload.vue +201 -201
  458. package/src/views/Login/components/Background.vue +153 -153
  459. package/src/views/Login/components/FormLogin.vue +1001 -1001
  460. package/src/views/Login/components/FormPassFind.vue +395 -395
  461. package/src/views/Login/components/FormSign.vue +493 -493
  462. package/src/views/Login/components/Title.vue +301 -301
  463. package/src/views/Login/components/agreeMent.vue +111 -111
  464. package/src/views/Login/components/companysign.vue +1296 -1296
  465. package/src/views/Login/components/guideLogin.vue +984 -984
  466. package/src/views/formBuilder/components/addNode.vue +119 -119
  467. package/src/views/formBuilder/components/approverSelector.vue +493 -493
  468. package/src/views/formBuilder/components/baseRoute.vue +315 -315
  469. package/src/views/formBuilder/components/builderHeader.vue +106 -106
  470. package/src/views/formBuilder/components/conditionConfig.js +588 -588
  471. package/src/views/formBuilder/components/conditionNode.vue +191 -191
  472. package/src/views/formBuilder/components/dataDefault.js +147 -147
  473. package/src/views/formBuilder/components/depFormNode.vue +583 -583
  474. package/src/views/formBuilder/components/linkForm.vue +566 -566
  475. package/src/views/formBuilder/components/linkFormList.vue +821 -821
  476. package/src/views/formBuilder/components/menuConfig.vue +1752 -1752
  477. package/src/views/formBuilder/components/newNodeForm.vue +426 -426
  478. package/src/views/formBuilder/components/newsection.vue +424 -424
  479. package/src/views/formBuilder/components/nodeConditionConfig cody.vue +376 -376
  480. package/src/views/formBuilder/components/nodeConditionConfig.vue +603 -603
  481. package/src/views/formBuilder/components/nodeForm.vue +355 -355
  482. package/src/views/formBuilder/components/nodeMenu.vue +147 -147
  483. package/src/views/formBuilder/components/personNode.vue +566 -566
  484. package/src/views/formBuilder/components/planNode.vue +269 -269
  485. package/src/views/formBuilder/designListPage.vue +457 -457
  486. package/src/views/formBuilder/formDataDetail.vue +565 -565
  487. package/src/views/formBuilder/formGeneration.vue +904 -904
  488. package/src/views/formBuilder/index.vue +242 -242
  489. package/src/views/formBuilder/process-1.vue +976 -976
  490. package/src/views/formBuilder/process-2.vue +1323 -1323
  491. package/src/views/formBuilder/process.vue +662 -431
  492. package/src/views/formBuilder/processList.vue +877 -877
  493. package/src/views/formBuilder/service/ProcessBuilder.js +136 -136
  494. package/src/views/formBuilder/service/RsxzFieldCollection.js +199 -0
  495. package/src/views/formBuilder/workflow/addNode.vue +95 -95
  496. package/src/views/formBuilder/workflow/initData.js +205 -205
  497. package/src/views/formBuilder/workflow/nodeWrap.vue +731 -731
  498. package/src/views/guide.vue +227 -227
  499. package/src/views/guideIndex.vue +284 -284
  500. package/tests/unit/.eslintrc.js +5 -5
  501. package/tests/unit/example.spec.js +13 -13
  502. package/vue.config.js +287 -287
@@ -1,906 +1,906 @@
1
- <template>
2
- <div class="exam-add-edit">
3
- <div class="exam-detail">
4
- <div class="detail-left">
5
- <!-- 审批流程 -->
6
- <div class="exmAndapproInfo">
7
- <p class="title">审批流程</p>
8
- <div class="box">
9
- <div class="dw">
10
- <ul>
11
- <li
12
- v-for="(item,index) in processList"
13
- :key="index+'process'"
14
- :class="!item.isComplete ? 'no-approva' : ''"
15
- >
16
- <div
17
- v-if="index != 0"
18
- class="line"
19
- ></div>
20
- <div class="node">
21
- <div class="node-info">
22
- <div>
23
- <!-- <p v-if="item.nodeType == 'START'">发起流程</p>
24
- <p v-else-if="item.nodeType == 'END'">完成</p>
25
- <p v-else>审批</p> -->
26
- <p>{{item.nodeName}}</p>
27
- </div>
28
- <div>
29
- <p v-if="item.nodeType == 'START' || (item.nodeType == 'END' && item.nodeName == '开始')">{{optData[0] && optData[0].approverName ? optData[0].approverName : '发起人'}}</p>
30
- <p v-else-if="item.nodeType == 'USER_EVENT'">
31
- <!-- {{(item.approvers.map(item=>(item.userName))).join(',')}} -->
32
- {{getUserName(item)}}
33
- </p>
34
- <p v-else></p>
35
- </div>
36
- <!-- <p>2020-03-01 12:00</p> -->
37
- </div>
38
- </div>
39
- </li>
40
- </ul>
41
- </div>
42
- </div>
43
- </div>
44
- <div class="exmAndapproInfo">
45
- <p class="title">审批日志</p>
46
- <div class="audit-log">
47
- <el-table
48
- :data="optData"
49
- border
50
- :header-cell-style="$TableCell.setHeaderCellStyle"
51
- :cell-style="$TableCell.setCellStyle"
52
- tooltip-effect="dark"
53
- style="width: 100%;"
54
- >
55
- <el-table-column
56
- show-overflow-tooltip
57
- :resizable="false"
58
- prop="approverName"
59
- label="操作人员"
60
- align="left"
61
- ></el-table-column>
62
- <el-table-column
63
- show-overflow-tooltip
64
- :resizable="false"
65
- prop="result"
66
- label="操作结果"
67
- align="left"
68
- >
69
- <template slot-scope="scope">
70
- <span
71
- class="unpass"
72
- v-if="scope.row.status == 0"
73
- >审批不通过</span>
74
- <span
75
- class="pass"
76
- v-if="(scope.row.status == 1 || scope.row.status == 3)"
77
- >审批通过</span>
78
- <span v-if="scope.row.status == -1">发起流程</span>
79
- <span v-if="scope.row.status == 2">流程转交</span>
80
- </template>
81
- </el-table-column>
82
- <el-table-column
83
- show-overflow-tooltip
84
- :resizable="false"
85
- prop="audit_time"
86
- label="操作时间"
87
- align="left"
88
- >
89
- <template slot-scope="scope">
90
- <span>{{scope.row.create_time}}</span>
91
- </template>
92
- </el-table-column>
93
- <el-table-column
94
- show-overflow-tooltip
95
- :resizable="false"
96
- prop="useTime"
97
- label="共计用时"
98
- align="left"
99
- >
100
- <template slot-scope="scope">
101
- <span>{{scope.row.take_time}}</span>
102
- </template>
103
- </el-table-column>
104
- <el-table-column
105
- show-overflow-tooltip
106
- :resizable="false"
107
- prop="reason"
108
- label="操作备注"
109
- align="left"
110
- >
111
- <template slot-scope="scope">
112
- <span>{{scope.row.reason | formatReason}}</span>
113
- </template>
114
- </el-table-column>
115
- </el-table>
116
- </div>
117
- </div>
118
- <div
119
- class="exmAndapproInfo"
120
- v-if="false"
121
- >
122
- <p class="title">询问详情</p>
123
- <div class="inquiry">
124
- <div>
125
- <span>部门负责人:张三</span>
126
- <!-- <span>2020-03-07 13:00</span> -->
127
- </div>
128
- <div>
129
- <span>同意</span>
130
- </div>
131
- </div>
132
- </div>
133
- </div>
134
- </div>
135
- <div
136
- class="exmAndapproInfo"
137
- style="padding: 20px 0"
138
- v-if="complete && $route.query.approve"
139
- >
140
- <el-form
141
- ref="form"
142
- :rules="rules"
143
- :model="form"
144
- label-width="80px"
145
- >
146
- <el-form-item
147
- label="审批操作"
148
- prop="result"
149
- :rules="[{ required: true, message: '请选择审批操作', trigger: 'blur' }]"
150
- >
151
- <el-radio-group
152
- v-model="form.result"
153
- @change="changeHarld"
154
- >
155
- <el-radio :label="1">通过</el-radio>
156
- <el-radio :label="2">不通过</el-radio>
157
- </el-radio-group>
158
- </el-form-item>
159
- <el-form-item
160
- style="width: 50%"
161
- label="审批意见"
162
- prop="reason"
163
- :rules="form.result == '2' ? [{ required: true, message: '请输入审批意见', trigger: 'blur' }] : []"
164
- >
165
- <el-input
166
- type="textarea"
167
- :rows="4"
168
- maxlength="300"
169
- show-word-limit
170
- v-model="form.reason"
171
- placeholder="请填写300字以内的审批意见"
172
- ></el-input>
173
- </el-form-item>
174
- </el-form>
175
- <div class="save">
176
- <el-button @click="showSection = true; optType=1">转交</el-button>
177
- <el-button
178
- type="primary"
179
- :disabled="loading"
180
- @click="marking"
181
- >批阅</el-button>
182
- <!-- <el-button type="primary" @click="showSection = true; optType=2">询问</el-button> -->
183
- </div>
184
- </div>
185
- <!-- 督办 -->
186
- <div
187
- class="exmAndapproInfo"
188
- v-if="false"
189
- >
190
- <div class="supervise">
191
- <span>督办说明:</span>
192
- <el-input
193
- type="textarea"
194
- :rows="4"
195
- maxlength="300"
196
- show-word-limit
197
- v-model="supervise"
198
- placeholder="请输入督办说明,最多可输入300字"
199
- ></el-input>
200
- </div>
201
- <div class="supervise-btn">
202
- <el-button
203
- type="primary"
204
- @click="toUrge"
205
- >督办</el-button>
206
- </div>
207
- </div>
208
- <!-- 撤销 -->
209
- <div
210
- class="supervise-btn"
211
- v-if="!$route.query.approve && false"
212
- >
213
- <el-button @click="revoke">撤销</el-button>
214
- </div>
215
- <MemberSelection
216
- ref="selection"
217
- v-if="showSection"
218
- title="选择转交人"
219
- isRadio
220
- :directClose="false"
221
- @close="showSection = false; deliverForm.deliverRemark = ''"
222
- :formData="selectData"
223
- @save="checkMenber"
224
- >
225
- <div class="remark">
226
- <el-form
227
- :model="deliverForm"
228
- ref="deliver"
229
- inline
230
- >
231
- <el-form-item
232
- label="转交理由:"
233
- prop="deliverRemark"
234
- :rules="[{ required: true, message: '请输入转交理由', trigger: 'change' }]"
235
- >
236
- <el-input
237
- style="width:440px"
238
- type="textarea"
239
- :autosize="{ minRows: 2, maxRows: 4}"
240
- v-model="deliverForm.deliverRemark"
241
- placeholder="请输入转交理由"
242
- ></el-input>
243
- </el-form-item>
244
- </el-form>
245
- </div>
246
- </MemberSelection>
247
- </div>
248
- </template>
249
-
250
- <script>
251
- import apiApprove from "@/api/ApiExAndapp";
252
- import { approvalAudit } from "@/api/apiAudit/apiAudit";
253
- import apiBudget from "@/api/apiBudget/apiBudget.js"; // 预算
254
- import { leaseRentInfoApprove } from "@/api/apiMachine/apiLease"; // 机械
255
- import apiEquipmentRental from "@/api/apiEquipmentRental"; // 设备
256
- import apiEmployeeRegularization from "@/api/apiEmployeeRegularization"; // 员工
257
- import { sealApprove } from "@/api/apiSealRecord"; // 印章
258
- import { carApplyApprove } from "@/api/apiCarRecord"; // 车辆
259
- import apiCheckingIn from "@/api/apiCheckingIn";
260
- import {
261
- queryProcessList,
262
- approverMakerAsPass,
263
- approverMakerAsRefuse,
264
- queryOptLog,
265
- deliverProcess,
266
- approvalOption,
267
- updateProcessToNew,
268
- getProcessDetail
269
- } from "@/api/apiProcess";
270
- import cookie from "@/storage/cookies";
271
- import MemberSelection from "./public/MemberSelection";
272
- import * as ProcessBuilder from "@/views/formBuilder/service/ProcessBuilder.js";
273
- export default {
274
- name: "AuditDetail",
275
- components: {
276
- MemberSelection
277
- },
278
- data() {
279
- return {
280
- total: null,
281
- activeName: "first",
282
- form: {
283
- no: "",
284
- result: 1,
285
- reason: ""
286
- },
287
- rules: {
288
- resource: [
289
- { required: true, message: "请选择审批操作", trigger: "change" }
290
- ]
291
- },
292
- dataInfo: { no: "" },
293
- dataContent: {},
294
- flowData: [],
295
- logData: [],
296
- log: {
297
- id: this.$route.params.id,
298
- limit: 20,
299
- page: 1
300
- },
301
- logoData: [],
302
- auditType: 0,
303
- processList: [],
304
- supervise: "",
305
- showSection: false,
306
- selectData: {
307
- roleList: [],
308
- userList: []
309
- },
310
- optType: "1",
311
- id: "",
312
- applyId: "",
313
- optData: [],
314
- complete: true,
315
- deliverForm: {
316
- deliverRemark: ""
317
- },
318
- deliver: {},
319
- loading: false,
320
- root: null
321
- };
322
- },
323
- props: {
324
- auditData: {
325
- type: Object
326
- }
327
- },
328
- computed: {
329
- user() {
330
- return this.$store.state.user;
331
- }
332
- },
333
- filters: {
334
- leaseDataFn(val) {
335
- console.log(val);
336
- return val;
337
- },
338
- telEllipsis(val) {
339
- return val;
340
- },
341
- formatReason(val) {
342
- if (!val) return "";
343
- const isHas = val.indexOf("|");
344
- if (isHas > -1) {
345
- const str = val.substring(isHas + 1)
346
- ? " 转交原因:" + val.substring(isHas + 1)
347
- : "";
348
- return "转交给" + val.substring(0, isHas) + str;
349
- } else {
350
- return val;
351
- }
352
- }
353
- },
354
- watch: {
355
- auditData(val) {
356
- this.initData(val);
357
- }
358
- },
359
- mounted() {
360
- this.applyId = this.$route.query.applyId || "";
361
- this.id = this.$route.query.auditId
362
- ? this.$route.query.auditId
363
- : this.$route.query.id;
364
- // this.initData(this.auditData)
365
- this.getProcessList();
366
- this.getApprovalOpt();
367
- },
368
- methods: {
369
- initData(val) {
370
- if (val.auditRecord) {
371
- this.dataInfo = val.auditDetail;
372
- this.flowData = val.auditRecord;
373
-
374
- /* 流程目前进行到哪一步日志显示到那一条 */
375
- let ind = 0;
376
- val.auditRecord.forEach((v, i) => {
377
- if (ind < 1 && !v.audit_time) {
378
- ind = i;
379
- }
380
- });
381
- if (ind) {
382
- this.logData = val.auditRecord.slice(0, ind);
383
- } else {
384
- this.logData = val.auditRecord;
385
- }
386
- this.form.no = val.auditDetail.no;
387
- this.form.billNo = val.auditDetail.bill_no;
388
-
389
- this.auditType = val.auditDetail.type;
390
- }
391
- },
392
- // 分页
393
- operationPageChange(page) {
394
- this.log.page = page;
395
- this.handleClick();
396
- },
397
- async handleClick() {
398
- if (this.activeName == "second") {
399
- const res = await apiApprove.postExAndapplog(this.log);
400
- if (res.data.code == 200) {
401
- this.logoData = res.data.data.records;
402
- this.total = Number(res.data.data.total);
403
- }
404
- console.log(res);
405
- }
406
- },
407
- save() {
408
- this.$refs["form"].validate(async valid => {
409
- if (valid) {
410
- if (this.auditType === 2) {
411
- var { data } = await apiEmployeeRegularization.employeeApprove(
412
- this.form
413
- );
414
- } else if (this.auditType === 5) {
415
- var { data } = await apiBudget.budgetApprove(this.form);
416
- } else if (this.auditType === 6) {
417
- var { data } = await leaseRentInfoApprove(this.form);
418
- } else if (this.auditType === 7) {
419
- var { data } = await apiEquipmentRental.rentInfoApprove(this.form);
420
- } else if (this.auditType === "subcontract") {
421
- alert(1);
422
- } else {
423
- // var {data} = await approvalAudit(this.form)
424
- var token = cookie.cookieRead("token");
425
- const params = {
426
- resourceToken: token,
427
- userNo: this.$store.state.user.no,
428
- reason: this.form.reason,
429
- result: this.form.result,
430
- applyNo: this.form.billNo
431
- };
432
- var { data } = await apiCheckingIn.approvalAudit(params);
433
- }
434
- if (data.code === 200 || data.code === 0) {
435
- const msg = data.msg || "操作成功";
436
- this.$message({
437
- showClose: true,
438
- message: msg,
439
- type: "success"
440
- });
441
- this.$removeTag("/");
442
- } else if (data.state == "ok") {
443
- const msg = data.data || "操作成功";
444
- this.$message({
445
- showClose: true,
446
- message: msg,
447
- type: "success"
448
- });
449
- this.$removeTag("/");
450
- } else {
451
- const msg = data.msg || "操作失败";
452
- this.$message.error(data.msg);
453
- }
454
- }
455
- });
456
- },
457
- changeHarld() {
458
- this.$refs.form.clearValidate();
459
- },
460
- time(val) {
461
- if (!val) {
462
- return "";
463
- }
464
- var date = new Date(val);
465
- var year = date.getFullYear();
466
- var month = date.getMonth() + 1; // js从0开始取
467
- var date1 = date.getDate();
468
- var hour = date.getHours();
469
- var minutes = date.getMinutes();
470
- var second = date.getSeconds();
471
-
472
- if ((month + "").length === 1) {
473
- month = "0" + month;
474
- }
475
- if ((date1 + "").length === 1) {
476
- date1 = "0" + date1;
477
- }
478
- if ((hour + "").length === 1) {
479
- hour = "0" + hour;
480
- }
481
- if ((minutes + "").length === 1) {
482
- minutes = "0" + minutes;
483
- }
484
- if ((second + "").length === 1) {
485
- second = "0" + second;
486
- }
487
- return year + "-" + month + "-" + date1 + " " + hour + ":" + minutes;
488
- // return year + '年' + month + '月' + date1 + '日' + hour + '时' + minutes + '分' + second + '秒'
489
- },
490
- async getProcessList() {
491
- const res = await queryProcessList({ id: this.id });
492
- let flg = true;
493
- res.data.data.processList.forEach(item => {
494
- item.isComplete = flg;
495
- if (item.nodeId == res.data.data.nextNode) {
496
- flg = false;
497
- }
498
- });
499
- this.processList = res.data.data.processList;
500
- this.deliver = res.data.data.deliver ? res.data.data.deliver : {};
501
- if (res.data.data && res.data.data.processId) {
502
- this.checkProcessList(res.data.data.processId);
503
- }
504
- },
505
- // 审批转交
506
- checkMenber(data) {
507
- if (data.userList.length < 1) {
508
- this.$message.error("请选择角色或成员");
509
- return;
510
- }
511
- this.selectData.userList = data.userList;
512
- if (this.optType == 1) {
513
- this.$refs.deliver.validate(async valid => {
514
- if (valid) {
515
- const parse = {
516
- deliverTo: this.selectData.userList[0].memberNo,
517
- companyNo: this.user.cno,
518
- source: this.user.no,
519
- deliverName: this.selectData.userList[0].name,
520
- id: this.id,
521
- reason: this.deliverForm.deliverRemark
522
- };
523
- const res = await deliverProcess(parse);
524
- if (res.data.state == "ok") {
525
- // this.$refs.selection.handleClose()
526
- this.showSection = false;
527
- this.$message.success(res.data.msg ? res.data.msg : "操作成功");
528
- this.$router.go(-1);
529
- } else {
530
- this.$message.error(
531
- res.data.msg ? res.data.msg : "转交失败,请重试"
532
- );
533
- }
534
- }
535
- });
536
- } else {
537
- }
538
- },
539
- // 督办
540
- toUrge() {},
541
- // 撤销
542
- revoke() {
543
- this.$confirm(`撤销审批需审批人统计,确定要撤销吗?`, "撤销审批", {
544
- confirmButtonText: "确定",
545
- cancelButtonText: "取消",
546
- type: "warning"
547
- })
548
- .then(function() {
549
- // 撤销接口
550
- })
551
- .catch(() => {});
552
- },
553
- // 批阅
554
- async marking() {
555
- this.$refs["form"].validate(async valid => {
556
- if (valid) {
557
- this.loading = true;
558
- let res;
559
- // 走app接口的审批
560
- const appType = [
561
- "/leaveDetail",
562
- "/evectionDetail",
563
- "/reissueCardDetail"
564
- ];
565
- if (this.form.result == 1) {
566
- if (appType.indexOf(this.$route.path) > -1) {
567
- res = await approvalOption({
568
- id: this.id,
569
- reason: this.form.reason,
570
- userId: this.$store.state.user.no,
571
- companyId: this.$store.state.user.cno
572
- });
573
- } else {
574
- res = await approverMakerAsPass({
575
- id: this.id,
576
- reason: this.form.reason,
577
- userId: this.$store.state.user.no,
578
- companyId: this.$store.state.user.cno
579
- });
580
- }
581
- } else if (this.form.result == 2) {
582
- res = await approverMakerAsRefuse({
583
- id: this.id,
584
- reason: this.form.reason,
585
- userId: this.$store.state.user.no,
586
- companyId: this.$store.state.user.cno
587
- });
588
- }
589
- if (res.data.state == "ok") {
590
- this.$message.success(res.data.msg);
591
- // this.getApprovalOpt()
592
- // this.getProcessList()
593
- this.$removeTag("/");
594
- this.complete = false;
595
- } else {
596
- this.loading = true;
597
- this.$message.error(res.data.msg);
598
- }
599
- }
600
- });
601
- },
602
- // 获取审批日志
603
- async getApprovalOpt() {
604
- const res = await queryOptLog({ id: this.id });
605
- if (res.data.state == "ok") {
606
- this.optData = res.data.data;
607
- }
608
- },
609
- async checkProcessList(id) {
610
- if (!id) return;
611
- const res = await getProcessDetail({ id: id });
612
- if (res.data.data && res.data.data._id && !res.data.data.gateWays) {
613
- const processList = JSON.parse(res.data.data.content);
614
- const isflg = this.dataTonewList(processList.nodeList);
615
- const nodeList = ProcessBuilder.treeToListLocal(this.root.lists);
616
- const gateWayList = [];
617
- nodeList.forEach((node, index) => {
618
- if (node.lists.length > 0 && node.item.type == "addCondition") {
619
- for (let j = 0; j < node.lists.length; j++) {
620
- const each = node.lists[j];
621
- const gateWayItem = {
622
- id: each.item.id,
623
- type: "condition",
624
- name: "条件分支" + each.item.id,
625
- left: each.item.left,
626
- top: each.item.top,
627
- from: each.item.from,
628
- gateWayKey: node.item.id,
629
- to: each.item.to,
630
- conditions: each.item.conditions,
631
- ifNo: 10,
632
- desc: each.item.desc,
633
- isCondition: each.item.isCondition
634
- };
635
- gateWayList.push(gateWayItem);
636
- }
637
- }
638
- });
639
- const params = {
640
- name: processList.name,
641
- desc: "",
642
- creator: processList.creator,
643
- processId: res.data.data._id,
644
- startId: "1",
645
- endId: "5",
646
- companyId: processList.companyId,
647
- type: processList.type,
648
- switchOn: processList.isFlg ? "1" : "0",
649
- gateWayList: gateWayList,
650
- nodeList: nodeList,
651
- lineList: [],
652
- version: res.data.data.rootNode.version
653
- };
654
- const data1 = { id: this.id + "", content: JSON.stringify(params) };
655
- console.log(data1);
656
- const resulte = await updateProcessToNew(data1);
657
- }
658
- },
659
- dataTonewList(processList) {
660
- this.root = new ProcessBuilder.Node(
661
- ProcessBuilder.createItem(
662
- "0",
663
- "根节点",
664
- "root",
665
- "320px",
666
- "20px",
667
- "1",
668
- "2"
669
- )
670
- );
671
- let parent = this.root;
672
- let currentId = 1;
673
- let isflg = true;
674
- while (parent.item.type != "end" && isflg) {
675
- const currentNode = this.getCurrentNode(processList, currentId);
676
- if (!currentNode) {
677
- isflg = false;
678
- break;
679
- }
680
- const node = new ProcessBuilder.Node(
681
- ProcessBuilder.createItem(
682
- currentNode.id,
683
- currentNode.name,
684
- currentNode.type,
685
- currentNode.left,
686
- currentNode.top,
687
- currentNode.from,
688
- currentNode.to
689
- )
690
- );
691
- if (currentNode.type == "userTask") {
692
- node.item = Object.assign(node.item, {
693
- approverType: currentNode.approverType,
694
- approvers: currentNode.approvers,
695
- notifiers: currentNode.notifiers
696
- });
697
- }
698
- if (currentNode.type == "condition") {
699
- currentId = currentNode.to;
700
- parent.item.to = currentNode.to;
701
- } else {
702
- parent.add(node);
703
- currentId = currentNode.to;
704
- parent = node;
705
- }
706
- }
707
- return isflg;
708
- },
709
- getCurrentNode(list, id) {
710
- const node = list.filter(item => item.id == id);
711
- return node.length > 0 ? node[0] : null;
712
- },
713
- // 获取节点用户名称
714
- getUserName(obj) {
715
- const approvers = obj.approvers;
716
- const deliver = this.deliver[obj.nodeId];
717
- const user = approvers.map(item => item.userName).join(",");
718
- const str =
719
- deliver && deliver[0]
720
- ? `${user}(已转交给${deliver[0].deliverName})`
721
- : user;
722
- return str;
723
- }
724
- }
725
- };
726
- </script>
727
- <style lang="scss">
728
- .exam-add-edit .el-tabs__header {
729
- margin: 0;
730
- }
731
- </style>
732
- <style scoped lang="scss" rel="stylesheet/scss">
733
- .box {
734
- margin: 20px 0 0 20px;
735
- .dw {
736
- ul {
737
- padding: 0 60px;
738
- display: flex;
739
- li {
740
- flex: 1;
741
- display: flex;
742
- height: 100px;
743
- min-width: 160px;
744
- &:first-child {
745
- flex: none;
746
- width: 10px;
747
- min-width: 10px;
748
- }
749
- .node {
750
- width: 10px;
751
- height: 10px;
752
- border-radius: 50%;
753
- position: relative;
754
- background-color: #0286df;
755
- .node-info {
756
- position: absolute;
757
- top: 14px;
758
- left: -70px;
759
- width: 150px;
760
- p {
761
- margin: 4px 0;
762
- text-align: center;
763
- color: #666;
764
- white-space: nowrap;
765
- text-overflow: ellipsis;
766
- &:nth-of-type(1) {
767
- color: #333;
768
- }
769
- }
770
- }
771
- }
772
- .line {
773
- flex: 1;
774
- height: 4px;
775
- margin: 3px 0;
776
- background-color: #0286df;
777
- }
778
- }
779
- .no-approva {
780
- .node {
781
- background-color: #ccc;
782
- }
783
- .line {
784
- background-color: #ccc;
785
- }
786
- }
787
- }
788
- }
789
- }
790
- .save {
791
- text-align: center;
792
- }
793
- .exam-detail {
794
- display: flex;
795
- // border: 1px solid #e4e7ed;
796
- border-top: 0;
797
-
798
- .exmAndapproInfo {
799
- .audit-log {
800
- padding: 15px 20px 0 0;
801
- }
802
- .title {
803
- margin: 0;
804
- /*padding: 20px 0 20px 20px;*/
805
- /*border-bottom: 1px solid #E4E7ED;*/
806
- font-size: 16px;
807
- color: #333333;
808
- color: #0286df;
809
- font-size: 18px;
810
- border-bottom: 1px dashed #e4e7ed;
811
- padding: 0 0 12px 10px;
812
- position: relative;
813
- &::before {
814
- position: absolute;
815
- left: 0;
816
- top: 2px;
817
- content: "";
818
- width: 3px;
819
- height: 20px;
820
- background-color: #409ee9;
821
- }
822
- }
823
- .inquiry {
824
- margin: 10px 0 10px 10px;
825
- span {
826
- font-size: 14px;
827
- color: #666666;
828
- }
829
- div {
830
- margin-top: 8px;
831
- }
832
- }
833
- margin: 0;
834
- font-size: 14px;
835
- color: #666666;
836
- padding: 20px 0 0 0;
837
- span {
838
- color: #333333;
839
- }
840
- .linbP {
841
- font-size: 14px;
842
- color: #666666;
843
- span {
844
- margin-left: 10px;
845
- color: #333333;
846
- }
847
- }
848
- .unpass {
849
- color: #ff6600;
850
- }
851
- .pass {
852
- color: #78c06e;
853
- }
854
- }
855
- .detail-left {
856
- flex: 1;
857
- .exmAndapproInfo {
858
- &:last-child {
859
- border-bottom: 0;
860
- }
861
- }
862
- }
863
- }
864
- .supervise {
865
- display: flex;
866
- width: 50%;
867
- margin-top: 26px;
868
- & > span {
869
- font-size: 14px;
870
- color: #666;
871
- display: block;
872
- width: 80px;
873
- margin-right: 10px;
874
- }
875
- /deep/ .el-input__count {
876
- bottom: 5px !important;
877
- }
878
- }
879
- .supervise-btn {
880
- text-align: center;
881
- margin-top: 20px;
882
- }
883
- .headTitle {
884
- color: #000000;
885
- padding-bottom: 20px;
886
- /*padding: 20px 20px 0 20px;*/
887
- div {
888
- /*border-bottom: 1px solid #0286df;*/
889
- /*padding-bottom: 30px;*/
890
- span {
891
- font-size: 16px;
892
- }
893
- }
894
- }
895
- .pad_10 {
896
- padding: 0 10px;
897
- }
898
- .remark {
899
- display: flex;
900
- margin-top: 20px;
901
- & > span {
902
- padding-top: 6px;
903
- width: 80px;
904
- }
905
- }
906
- </style>
1
+ <template>
2
+ <div class="exam-add-edit">
3
+ <div class="exam-detail">
4
+ <div class="detail-left">
5
+ <!-- 审批流程 -->
6
+ <div class="exmAndapproInfo">
7
+ <p class="title">审批流程</p>
8
+ <div class="box">
9
+ <div class="dw">
10
+ <ul>
11
+ <li
12
+ v-for="(item,index) in processList"
13
+ :key="index+'process'"
14
+ :class="!item.isComplete ? 'no-approva' : ''"
15
+ >
16
+ <div
17
+ v-if="index != 0"
18
+ class="line"
19
+ ></div>
20
+ <div class="node">
21
+ <div class="node-info">
22
+ <div>
23
+ <!-- <p v-if="item.nodeType == 'START'">发起流程</p>
24
+ <p v-else-if="item.nodeType == 'END'">完成</p>
25
+ <p v-else>审批</p> -->
26
+ <p>{{item.nodeName}}</p>
27
+ </div>
28
+ <div>
29
+ <p v-if="item.nodeType == 'START' || (item.nodeType == 'END' && item.nodeName == '开始')">{{optData[0] && optData[0].approverName ? optData[0].approverName : '发起人'}}</p>
30
+ <p v-else-if="item.nodeType == 'USER_EVENT'">
31
+ <!-- {{(item.approvers.map(item=>(item.userName))).join(',')}} -->
32
+ {{getUserName(item)}}
33
+ </p>
34
+ <p v-else></p>
35
+ </div>
36
+ <!-- <p>2020-03-01 12:00</p> -->
37
+ </div>
38
+ </div>
39
+ </li>
40
+ </ul>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ <div class="exmAndapproInfo">
45
+ <p class="title">审批日志</p>
46
+ <div class="audit-log">
47
+ <el-table
48
+ :data="optData"
49
+ border
50
+ :header-cell-style="$TableCell.setHeaderCellStyle"
51
+ :cell-style="$TableCell.setCellStyle"
52
+ tooltip-effect="dark"
53
+ style="width: 100%;"
54
+ >
55
+ <el-table-column
56
+ show-overflow-tooltip
57
+ :resizable="false"
58
+ prop="approverName"
59
+ label="操作人员"
60
+ align="left"
61
+ ></el-table-column>
62
+ <el-table-column
63
+ show-overflow-tooltip
64
+ :resizable="false"
65
+ prop="result"
66
+ label="操作结果"
67
+ align="left"
68
+ >
69
+ <template slot-scope="scope">
70
+ <span
71
+ class="unpass"
72
+ v-if="scope.row.status == 0"
73
+ >审批不通过</span>
74
+ <span
75
+ class="pass"
76
+ v-if="(scope.row.status == 1 || scope.row.status == 3)"
77
+ >审批通过</span>
78
+ <span v-if="scope.row.status == -1">发起流程</span>
79
+ <span v-if="scope.row.status == 2">流程转交</span>
80
+ </template>
81
+ </el-table-column>
82
+ <el-table-column
83
+ show-overflow-tooltip
84
+ :resizable="false"
85
+ prop="audit_time"
86
+ label="操作时间"
87
+ align="left"
88
+ >
89
+ <template slot-scope="scope">
90
+ <span>{{scope.row.create_time}}</span>
91
+ </template>
92
+ </el-table-column>
93
+ <el-table-column
94
+ show-overflow-tooltip
95
+ :resizable="false"
96
+ prop="useTime"
97
+ label="共计用时"
98
+ align="left"
99
+ >
100
+ <template slot-scope="scope">
101
+ <span>{{scope.row.take_time}}</span>
102
+ </template>
103
+ </el-table-column>
104
+ <el-table-column
105
+ show-overflow-tooltip
106
+ :resizable="false"
107
+ prop="reason"
108
+ label="操作备注"
109
+ align="left"
110
+ >
111
+ <template slot-scope="scope">
112
+ <span>{{scope.row.reason | formatReason}}</span>
113
+ </template>
114
+ </el-table-column>
115
+ </el-table>
116
+ </div>
117
+ </div>
118
+ <div
119
+ class="exmAndapproInfo"
120
+ v-if="false"
121
+ >
122
+ <p class="title">询问详情</p>
123
+ <div class="inquiry">
124
+ <div>
125
+ <span>部门负责人:张三</span>
126
+ <!-- <span>2020-03-07 13:00</span> -->
127
+ </div>
128
+ <div>
129
+ <span>同意</span>
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ <div
136
+ class="exmAndapproInfo"
137
+ style="padding: 20px 0"
138
+ v-if="complete && $route.query.approve"
139
+ >
140
+ <el-form
141
+ ref="form"
142
+ :rules="rules"
143
+ :model="form"
144
+ label-width="80px"
145
+ >
146
+ <el-form-item
147
+ label="审批操作"
148
+ prop="result"
149
+ :rules="[{ required: true, message: '请选择审批操作', trigger: 'blur' }]"
150
+ >
151
+ <el-radio-group
152
+ v-model="form.result"
153
+ @change="changeHarld"
154
+ >
155
+ <el-radio :label="1">通过</el-radio>
156
+ <el-radio :label="2">不通过</el-radio>
157
+ </el-radio-group>
158
+ </el-form-item>
159
+ <el-form-item
160
+ style="width: 50%"
161
+ label="审批意见"
162
+ prop="reason"
163
+ :rules="form.result == '2' ? [{ required: true, message: '请输入审批意见', trigger: 'blur' }] : []"
164
+ >
165
+ <el-input
166
+ type="textarea"
167
+ :rows="4"
168
+ maxlength="300"
169
+ show-word-limit
170
+ v-model="form.reason"
171
+ placeholder="请填写300字以内的审批意见"
172
+ ></el-input>
173
+ </el-form-item>
174
+ </el-form>
175
+ <div class="save">
176
+ <el-button @click="showSection = true; optType=1">转交</el-button>
177
+ <el-button
178
+ type="primary"
179
+ :disabled="loading"
180
+ @click="marking"
181
+ >批阅</el-button>
182
+ <!-- <el-button type="primary" @click="showSection = true; optType=2">询问</el-button> -->
183
+ </div>
184
+ </div>
185
+ <!-- 督办 -->
186
+ <div
187
+ class="exmAndapproInfo"
188
+ v-if="false"
189
+ >
190
+ <div class="supervise">
191
+ <span>督办说明:</span>
192
+ <el-input
193
+ type="textarea"
194
+ :rows="4"
195
+ maxlength="300"
196
+ show-word-limit
197
+ v-model="supervise"
198
+ placeholder="请输入督办说明,最多可输入300字"
199
+ ></el-input>
200
+ </div>
201
+ <div class="supervise-btn">
202
+ <el-button
203
+ type="primary"
204
+ @click="toUrge"
205
+ >督办</el-button>
206
+ </div>
207
+ </div>
208
+ <!-- 撤销 -->
209
+ <div
210
+ class="supervise-btn"
211
+ v-if="!$route.query.approve && false"
212
+ >
213
+ <el-button @click="revoke">撤销</el-button>
214
+ </div>
215
+ <MemberSelection
216
+ ref="selection"
217
+ v-if="showSection"
218
+ title="选择转交人"
219
+ isRadio
220
+ :directClose="false"
221
+ @close="showSection = false; deliverForm.deliverRemark = ''"
222
+ :formData="selectData"
223
+ @save="checkMenber"
224
+ >
225
+ <div class="remark">
226
+ <el-form
227
+ :model="deliverForm"
228
+ ref="deliver"
229
+ inline
230
+ >
231
+ <el-form-item
232
+ label="转交理由:"
233
+ prop="deliverRemark"
234
+ :rules="[{ required: true, message: '请输入转交理由', trigger: 'change' }]"
235
+ >
236
+ <el-input
237
+ style="width:440px"
238
+ type="textarea"
239
+ :autosize="{ minRows: 2, maxRows: 4}"
240
+ v-model="deliverForm.deliverRemark"
241
+ placeholder="请输入转交理由"
242
+ ></el-input>
243
+ </el-form-item>
244
+ </el-form>
245
+ </div>
246
+ </MemberSelection>
247
+ </div>
248
+ </template>
249
+
250
+ <script>
251
+ import apiApprove from "@/api/ApiExAndapp";
252
+ import { approvalAudit } from "@/api/apiAudit/apiAudit";
253
+ import apiBudget from "@/api/apiBudget/apiBudget.js"; // 预算
254
+ import { leaseRentInfoApprove } from "@/api/apiMachine/apiLease"; // 机械
255
+ import apiEquipmentRental from "@/api/apiEquipmentRental"; // 设备
256
+ import apiEmployeeRegularization from "@/api/apiEmployeeRegularization"; // 员工
257
+ import { sealApprove } from "@/api/apiSealRecord"; // 印章
258
+ import { carApplyApprove } from "@/api/apiCarRecord"; // 车辆
259
+ import apiCheckingIn from "@/api/apiCheckingIn";
260
+ import {
261
+ queryProcessList,
262
+ approverMakerAsPass,
263
+ approverMakerAsRefuse,
264
+ queryOptLog,
265
+ deliverProcess,
266
+ approvalOption,
267
+ updateProcessToNew,
268
+ getProcessDetail
269
+ } from "@/api/apiProcess";
270
+ import cookie from "@/storage/cookies";
271
+ import MemberSelection from "./public/MemberSelection";
272
+ import * as ProcessBuilder from "@/views/formBuilder/service/ProcessBuilder.js";
273
+ export default {
274
+ name: "AuditDetail",
275
+ components: {
276
+ MemberSelection
277
+ },
278
+ data() {
279
+ return {
280
+ total: null,
281
+ activeName: "first",
282
+ form: {
283
+ no: "",
284
+ result: 1,
285
+ reason: ""
286
+ },
287
+ rules: {
288
+ resource: [
289
+ { required: true, message: "请选择审批操作", trigger: "change" }
290
+ ]
291
+ },
292
+ dataInfo: { no: "" },
293
+ dataContent: {},
294
+ flowData: [],
295
+ logData: [],
296
+ log: {
297
+ id: this.$route.params.id,
298
+ limit: 20,
299
+ page: 1
300
+ },
301
+ logoData: [],
302
+ auditType: 0,
303
+ processList: [],
304
+ supervise: "",
305
+ showSection: false,
306
+ selectData: {
307
+ roleList: [],
308
+ userList: []
309
+ },
310
+ optType: "1",
311
+ id: "",
312
+ applyId: "",
313
+ optData: [],
314
+ complete: true,
315
+ deliverForm: {
316
+ deliverRemark: ""
317
+ },
318
+ deliver: {},
319
+ loading: false,
320
+ root: null
321
+ };
322
+ },
323
+ props: {
324
+ auditData: {
325
+ type: Object
326
+ }
327
+ },
328
+ computed: {
329
+ user() {
330
+ return this.$store.state.user;
331
+ }
332
+ },
333
+ filters: {
334
+ leaseDataFn(val) {
335
+ console.log(val);
336
+ return val;
337
+ },
338
+ telEllipsis(val) {
339
+ return val;
340
+ },
341
+ formatReason(val) {
342
+ if (!val) return "";
343
+ const isHas = val.indexOf("|");
344
+ if (isHas > -1) {
345
+ const str = val.substring(isHas + 1)
346
+ ? " 转交原因:" + val.substring(isHas + 1)
347
+ : "";
348
+ return "转交给" + val.substring(0, isHas) + str;
349
+ } else {
350
+ return val;
351
+ }
352
+ }
353
+ },
354
+ watch: {
355
+ auditData(val) {
356
+ this.initData(val);
357
+ }
358
+ },
359
+ mounted() {
360
+ this.applyId = this.$route.query.applyId || "";
361
+ this.id = this.$route.query.auditId
362
+ ? this.$route.query.auditId
363
+ : this.$route.query.id;
364
+ // this.initData(this.auditData)
365
+ this.getProcessList();
366
+ this.getApprovalOpt();
367
+ },
368
+ methods: {
369
+ initData(val) {
370
+ if (val.auditRecord) {
371
+ this.dataInfo = val.auditDetail;
372
+ this.flowData = val.auditRecord;
373
+
374
+ /* 流程目前进行到哪一步日志显示到那一条 */
375
+ let ind = 0;
376
+ val.auditRecord.forEach((v, i) => {
377
+ if (ind < 1 && !v.audit_time) {
378
+ ind = i;
379
+ }
380
+ });
381
+ if (ind) {
382
+ this.logData = val.auditRecord.slice(0, ind);
383
+ } else {
384
+ this.logData = val.auditRecord;
385
+ }
386
+ this.form.no = val.auditDetail.no;
387
+ this.form.billNo = val.auditDetail.bill_no;
388
+
389
+ this.auditType = val.auditDetail.type;
390
+ }
391
+ },
392
+ // 分页
393
+ operationPageChange(page) {
394
+ this.log.page = page;
395
+ this.handleClick();
396
+ },
397
+ async handleClick() {
398
+ if (this.activeName == "second") {
399
+ const res = await apiApprove.postExAndapplog(this.log);
400
+ if (res.data.code == 200) {
401
+ this.logoData = res.data.data.records;
402
+ this.total = Number(res.data.data.total);
403
+ }
404
+ console.log(res);
405
+ }
406
+ },
407
+ save() {
408
+ this.$refs["form"].validate(async valid => {
409
+ if (valid) {
410
+ if (this.auditType === 2) {
411
+ var { data } = await apiEmployeeRegularization.employeeApprove(
412
+ this.form
413
+ );
414
+ } else if (this.auditType === 5) {
415
+ var { data } = await apiBudget.budgetApprove(this.form);
416
+ } else if (this.auditType === 6) {
417
+ var { data } = await leaseRentInfoApprove(this.form);
418
+ } else if (this.auditType === 7) {
419
+ var { data } = await apiEquipmentRental.rentInfoApprove(this.form);
420
+ } else if (this.auditType === "subcontract") {
421
+ alert(1);
422
+ } else {
423
+ // var {data} = await approvalAudit(this.form)
424
+ var token = cookie.cookieRead("token");
425
+ const params = {
426
+ resourceToken: token,
427
+ userNo: this.$store.state.user.no,
428
+ reason: this.form.reason,
429
+ result: this.form.result,
430
+ applyNo: this.form.billNo
431
+ };
432
+ var { data } = await apiCheckingIn.approvalAudit(params);
433
+ }
434
+ if (data.code === 200 || data.code === 0) {
435
+ const msg = data.msg || "操作成功";
436
+ this.$message({
437
+ showClose: true,
438
+ message: msg,
439
+ type: "success"
440
+ });
441
+ this.$removeTag("/");
442
+ } else if (data.state == "ok") {
443
+ const msg = data.data || "操作成功";
444
+ this.$message({
445
+ showClose: true,
446
+ message: msg,
447
+ type: "success"
448
+ });
449
+ this.$removeTag("/");
450
+ } else {
451
+ const msg = data.msg || "操作失败";
452
+ this.$message.error(data.msg);
453
+ }
454
+ }
455
+ });
456
+ },
457
+ changeHarld() {
458
+ this.$refs.form.clearValidate();
459
+ },
460
+ time(val) {
461
+ if (!val) {
462
+ return "";
463
+ }
464
+ var date = new Date(val);
465
+ var year = date.getFullYear();
466
+ var month = date.getMonth() + 1; // js从0开始取
467
+ var date1 = date.getDate();
468
+ var hour = date.getHours();
469
+ var minutes = date.getMinutes();
470
+ var second = date.getSeconds();
471
+
472
+ if ((month + "").length === 1) {
473
+ month = "0" + month;
474
+ }
475
+ if ((date1 + "").length === 1) {
476
+ date1 = "0" + date1;
477
+ }
478
+ if ((hour + "").length === 1) {
479
+ hour = "0" + hour;
480
+ }
481
+ if ((minutes + "").length === 1) {
482
+ minutes = "0" + minutes;
483
+ }
484
+ if ((second + "").length === 1) {
485
+ second = "0" + second;
486
+ }
487
+ return year + "-" + month + "-" + date1 + " " + hour + ":" + minutes;
488
+ // return year + '年' + month + '月' + date1 + '日' + hour + '时' + minutes + '分' + second + '秒'
489
+ },
490
+ async getProcessList() {
491
+ const res = await queryProcessList({ id: this.id });
492
+ let flg = true;
493
+ res.data.data.processList.forEach(item => {
494
+ item.isComplete = flg;
495
+ if (item.nodeId == res.data.data.nextNode) {
496
+ flg = false;
497
+ }
498
+ });
499
+ this.processList = res.data.data.processList;
500
+ this.deliver = res.data.data.deliver ? res.data.data.deliver : {};
501
+ if (res.data.data && res.data.data.processId) {
502
+ this.checkProcessList(res.data.data.processId);
503
+ }
504
+ },
505
+ // 审批转交
506
+ checkMenber(data) {
507
+ if (data.userList.length < 1) {
508
+ this.$message.error("请选择角色或成员");
509
+ return;
510
+ }
511
+ this.selectData.userList = data.userList;
512
+ if (this.optType == 1) {
513
+ this.$refs.deliver.validate(async valid => {
514
+ if (valid) {
515
+ const parse = {
516
+ deliverTo: this.selectData.userList[0].memberNo,
517
+ companyNo: this.user.cno,
518
+ source: this.user.no,
519
+ deliverName: this.selectData.userList[0].name,
520
+ id: this.id,
521
+ reason: this.deliverForm.deliverRemark
522
+ };
523
+ const res = await deliverProcess(parse);
524
+ if (res.data.state == "ok") {
525
+ // this.$refs.selection.handleClose()
526
+ this.showSection = false;
527
+ this.$message.success(res.data.msg ? res.data.msg : "操作成功");
528
+ this.$router.go(-1);
529
+ } else {
530
+ this.$message.error(
531
+ res.data.msg ? res.data.msg : "转交失败,请重试"
532
+ );
533
+ }
534
+ }
535
+ });
536
+ } else {
537
+ }
538
+ },
539
+ // 督办
540
+ toUrge() {},
541
+ // 撤销
542
+ revoke() {
543
+ this.$confirm(`撤销审批需审批人统计,确定要撤销吗?`, "撤销审批", {
544
+ confirmButtonText: "确定",
545
+ cancelButtonText: "取消",
546
+ type: "warning"
547
+ })
548
+ .then(function() {
549
+ // 撤销接口
550
+ })
551
+ .catch(() => {});
552
+ },
553
+ // 批阅
554
+ async marking() {
555
+ this.$refs["form"].validate(async valid => {
556
+ if (valid) {
557
+ this.loading = true;
558
+ let res;
559
+ // 走app接口的审批
560
+ const appType = [
561
+ "/leaveDetail",
562
+ "/evectionDetail",
563
+ "/reissueCardDetail"
564
+ ];
565
+ if (this.form.result == 1) {
566
+ if (appType.indexOf(this.$route.path) > -1) {
567
+ res = await approvalOption({
568
+ id: this.id,
569
+ reason: this.form.reason,
570
+ userId: this.$store.state.user.no,
571
+ companyId: this.$store.state.user.cno
572
+ });
573
+ } else {
574
+ res = await approverMakerAsPass({
575
+ id: this.id,
576
+ reason: this.form.reason,
577
+ userId: this.$store.state.user.no,
578
+ companyId: this.$store.state.user.cno
579
+ });
580
+ }
581
+ } else if (this.form.result == 2) {
582
+ res = await approverMakerAsRefuse({
583
+ id: this.id,
584
+ reason: this.form.reason,
585
+ userId: this.$store.state.user.no,
586
+ companyId: this.$store.state.user.cno
587
+ });
588
+ }
589
+ if (res.data.state == "ok") {
590
+ this.$message.success(res.data.msg);
591
+ // this.getApprovalOpt()
592
+ // this.getProcessList()
593
+ this.$removeTag("/");
594
+ this.complete = false;
595
+ } else {
596
+ this.loading = true;
597
+ this.$message.error(res.data.msg);
598
+ }
599
+ }
600
+ });
601
+ },
602
+ // 获取审批日志
603
+ async getApprovalOpt() {
604
+ const res = await queryOptLog({ id: this.id });
605
+ if (res.data.state == "ok") {
606
+ this.optData = res.data.data;
607
+ }
608
+ },
609
+ async checkProcessList(id) {
610
+ if (!id) return;
611
+ const res = await getProcessDetail({ id: id });
612
+ if (res.data.data && res.data.data._id && !res.data.data.gateWays) {
613
+ const processList = JSON.parse(res.data.data.content);
614
+ const isflg = this.dataTonewList(processList.nodeList);
615
+ const nodeList = ProcessBuilder.treeToListLocal(this.root.lists);
616
+ const gateWayList = [];
617
+ nodeList.forEach((node, index) => {
618
+ if (node.lists.length > 0 && node.item.type == "addCondition") {
619
+ for (let j = 0; j < node.lists.length; j++) {
620
+ const each = node.lists[j];
621
+ const gateWayItem = {
622
+ id: each.item.id,
623
+ type: "condition",
624
+ name: "条件分支" + each.item.id,
625
+ left: each.item.left,
626
+ top: each.item.top,
627
+ from: each.item.from,
628
+ gateWayKey: node.item.id,
629
+ to: each.item.to,
630
+ conditions: each.item.conditions,
631
+ ifNo: 10,
632
+ desc: each.item.desc,
633
+ isCondition: each.item.isCondition
634
+ };
635
+ gateWayList.push(gateWayItem);
636
+ }
637
+ }
638
+ });
639
+ const params = {
640
+ name: processList.name,
641
+ desc: "",
642
+ creator: processList.creator,
643
+ processId: res.data.data._id,
644
+ startId: "1",
645
+ endId: "5",
646
+ companyId: processList.companyId,
647
+ type: processList.type,
648
+ switchOn: processList.isFlg ? "1" : "0",
649
+ gateWayList: gateWayList,
650
+ nodeList: nodeList,
651
+ lineList: [],
652
+ version: res.data.data.rootNode.version
653
+ };
654
+ const data1 = { id: this.id + "", content: JSON.stringify(params) };
655
+ console.log(data1);
656
+ const resulte = await updateProcessToNew(data1);
657
+ }
658
+ },
659
+ dataTonewList(processList) {
660
+ this.root = new ProcessBuilder.Node(
661
+ ProcessBuilder.createItem(
662
+ "0",
663
+ "根节点",
664
+ "root",
665
+ "320px",
666
+ "20px",
667
+ "1",
668
+ "2"
669
+ )
670
+ );
671
+ let parent = this.root;
672
+ let currentId = 1;
673
+ let isflg = true;
674
+ while (parent.item.type != "end" && isflg) {
675
+ const currentNode = this.getCurrentNode(processList, currentId);
676
+ if (!currentNode) {
677
+ isflg = false;
678
+ break;
679
+ }
680
+ const node = new ProcessBuilder.Node(
681
+ ProcessBuilder.createItem(
682
+ currentNode.id,
683
+ currentNode.name,
684
+ currentNode.type,
685
+ currentNode.left,
686
+ currentNode.top,
687
+ currentNode.from,
688
+ currentNode.to
689
+ )
690
+ );
691
+ if (currentNode.type == "userTask") {
692
+ node.item = Object.assign(node.item, {
693
+ approverType: currentNode.approverType,
694
+ approvers: currentNode.approvers,
695
+ notifiers: currentNode.notifiers
696
+ });
697
+ }
698
+ if (currentNode.type == "condition") {
699
+ currentId = currentNode.to;
700
+ parent.item.to = currentNode.to;
701
+ } else {
702
+ parent.add(node);
703
+ currentId = currentNode.to;
704
+ parent = node;
705
+ }
706
+ }
707
+ return isflg;
708
+ },
709
+ getCurrentNode(list, id) {
710
+ const node = list.filter(item => item.id == id);
711
+ return node.length > 0 ? node[0] : null;
712
+ },
713
+ // 获取节点用户名称
714
+ getUserName(obj) {
715
+ const approvers = obj.approvers;
716
+ const deliver = this.deliver[obj.nodeId];
717
+ const user = approvers.map(item => item.userName).join(",");
718
+ const str =
719
+ deliver && deliver[0]
720
+ ? `${user}(已转交给${deliver[0].deliverName})`
721
+ : user;
722
+ return str;
723
+ }
724
+ }
725
+ };
726
+ </script>
727
+ <style lang="scss">
728
+ .exam-add-edit .el-tabs__header {
729
+ margin: 0;
730
+ }
731
+ </style>
732
+ <style scoped lang="scss" rel="stylesheet/scss">
733
+ .box {
734
+ margin: 20px 0 0 20px;
735
+ .dw {
736
+ ul {
737
+ padding: 0 60px;
738
+ display: flex;
739
+ li {
740
+ flex: 1;
741
+ display: flex;
742
+ height: 100px;
743
+ min-width: 160px;
744
+ &:first-child {
745
+ flex: none;
746
+ width: 10px;
747
+ min-width: 10px;
748
+ }
749
+ .node {
750
+ width: 10px;
751
+ height: 10px;
752
+ border-radius: 50%;
753
+ position: relative;
754
+ background-color: #0286df;
755
+ .node-info {
756
+ position: absolute;
757
+ top: 14px;
758
+ left: -70px;
759
+ width: 150px;
760
+ p {
761
+ margin: 4px 0;
762
+ text-align: center;
763
+ color: #666;
764
+ white-space: nowrap;
765
+ text-overflow: ellipsis;
766
+ &:nth-of-type(1) {
767
+ color: #333;
768
+ }
769
+ }
770
+ }
771
+ }
772
+ .line {
773
+ flex: 1;
774
+ height: 4px;
775
+ margin: 3px 0;
776
+ background-color: #0286df;
777
+ }
778
+ }
779
+ .no-approva {
780
+ .node {
781
+ background-color: #ccc;
782
+ }
783
+ .line {
784
+ background-color: #ccc;
785
+ }
786
+ }
787
+ }
788
+ }
789
+ }
790
+ .save {
791
+ text-align: center;
792
+ }
793
+ .exam-detail {
794
+ display: flex;
795
+ // border: 1px solid #e4e7ed;
796
+ border-top: 0;
797
+
798
+ .exmAndapproInfo {
799
+ .audit-log {
800
+ padding: 15px 20px 0 0;
801
+ }
802
+ .title {
803
+ margin: 0;
804
+ /*padding: 20px 0 20px 20px;*/
805
+ /*border-bottom: 1px solid #E4E7ED;*/
806
+ font-size: 16px;
807
+ color: #333333;
808
+ color: #0286df;
809
+ font-size: 18px;
810
+ border-bottom: 1px dashed #e4e7ed;
811
+ padding: 0 0 12px 10px;
812
+ position: relative;
813
+ &::before {
814
+ position: absolute;
815
+ left: 0;
816
+ top: 2px;
817
+ content: "";
818
+ width: 3px;
819
+ height: 20px;
820
+ background-color: #409ee9;
821
+ }
822
+ }
823
+ .inquiry {
824
+ margin: 10px 0 10px 10px;
825
+ span {
826
+ font-size: 14px;
827
+ color: #666666;
828
+ }
829
+ div {
830
+ margin-top: 8px;
831
+ }
832
+ }
833
+ margin: 0;
834
+ font-size: 14px;
835
+ color: #666666;
836
+ padding: 20px 0 0 0;
837
+ span {
838
+ color: #333333;
839
+ }
840
+ .linbP {
841
+ font-size: 14px;
842
+ color: #666666;
843
+ span {
844
+ margin-left: 10px;
845
+ color: #333333;
846
+ }
847
+ }
848
+ .unpass {
849
+ color: #ff6600;
850
+ }
851
+ .pass {
852
+ color: #78c06e;
853
+ }
854
+ }
855
+ .detail-left {
856
+ flex: 1;
857
+ .exmAndapproInfo {
858
+ &:last-child {
859
+ border-bottom: 0;
860
+ }
861
+ }
862
+ }
863
+ }
864
+ .supervise {
865
+ display: flex;
866
+ width: 50%;
867
+ margin-top: 26px;
868
+ & > span {
869
+ font-size: 14px;
870
+ color: #666;
871
+ display: block;
872
+ width: 80px;
873
+ margin-right: 10px;
874
+ }
875
+ /deep/ .el-input__count {
876
+ bottom: 5px !important;
877
+ }
878
+ }
879
+ .supervise-btn {
880
+ text-align: center;
881
+ margin-top: 20px;
882
+ }
883
+ .headTitle {
884
+ color: #000000;
885
+ padding-bottom: 20px;
886
+ /*padding: 20px 20px 0 20px;*/
887
+ div {
888
+ /*border-bottom: 1px solid #0286df;*/
889
+ /*padding-bottom: 30px;*/
890
+ span {
891
+ font-size: 16px;
892
+ }
893
+ }
894
+ }
895
+ .pad_10 {
896
+ padding: 0 10px;
897
+ }
898
+ .remark {
899
+ display: flex;
900
+ margin-top: 20px;
901
+ & > span {
902
+ padding-top: 6px;
903
+ width: 80px;
904
+ }
905
+ }
906
+ </style>