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,732 +1,732 @@
1
- <template>
2
- <div>
3
- <!-- 非路由展示 -->
4
- <div class="node-wrap" v-if="nodeConfig.type!=4">
5
- <div class="node-wrap-box" :class="(nodeConfig.type==0?'start-node ':'')+(isTried&&nodeConfig.error?'active error':'')">
6
- <div>
7
- <div class="title" :style="'background: rgb('+ ['87, 106, 149','255, 148, 62','50, 150, 250'][nodeConfig.type] +');'">
8
- <span class="iconfont" v-show="nodeConfig.type==1"></span>
9
- <span class="iconfont" v-show="nodeConfig.type==2"></span>
10
- <span v-if="nodeConfig.type==0">{{nodeConfig.nodeName}}</span>
11
- <input type="text" class="ant-input editable-title-input" v-if="nodeConfig.type!=0&&isInput"
12
- @blur="blurEvent()" @focus="$event.currentTarget.select()" v-focus
13
- v-model="nodeConfig.nodeName" :placeholder="placeholderList[nodeConfig.type]">
14
- <span class="editable-title" @click="clickEvent()" v-if="nodeConfig.type!=0&&!isInput">{{nodeConfig.nodeName}}</span>
15
- <i class="anticon anticon-close close" v-if="nodeConfig.type!=0" @click="delNode()"></i>
16
- </div>
17
- <div class="content" @click="setPerson">
18
- <!-- 发起人 -->
19
- <div class="text" v-if="nodeConfig.type==0">{{arrToStr(flowPermission)?arrToStr(flowPermission):'请求发起人'}}</div>
20
- <!-- 审批人 -->
21
- <div class="text" v-if="nodeConfig.type==1">
22
- <span class="placeholder" v-if="!setApproverStr(nodeConfig)">请选择{{placeholderList[nodeConfig.type]}}</span>
23
- {{setApproverStr(nodeConfig)}}
24
- </div>
25
- <!-- 抄送人 -->
26
- <div class="text" v-if="nodeConfig.type==2">
27
- <span class="placeholder" v-if="!copyerStr(nodeConfig)">请选择{{placeholderList[nodeConfig.type]}}</span>
28
- {{copyerStr(nodeConfig)}}
29
- </div>
30
- <i class="anticon anticon-right arrow"></i>
31
- </div>
32
- <div class="error_tip" v-if="isTried&&nodeConfig.error">
33
- <i class="anticon anticon-exclamation-circle" style="color: rgb(242, 86, 67);"></i>
34
- </div>
35
- </div>
36
- </div>
37
- <addNode :childNodeP.sync="nodeConfig.childNode"></addNode>
38
- </div>
39
-
40
- <!-- 路由 -->
41
- <div class="branch-wrap" v-if="nodeConfig.type==4">
42
- <div class="branch-box-wrap">
43
- <div class="branch-box">
44
- <button class="add-branch" @click="addTerm">添加条件</button>
45
- <div class="col-box" v-for="(item,index) in nodeConfig.conditionNodes" :key="index">
46
- <div class="condition-node">
47
- <div class="condition-node-box">
48
- <div class="auto-judge" :class="isTried&&item.error?'error active':''">
49
- <div class="sort-left" v-if="index!=0" @click="arrTransfer(index,-1)">&lt;</div>
50
- <div class="title-wrapper">
51
- <input type="text" class="ant-input editable-title-input" v-if="isInputList[index]" @blur="blurEvent(index)" @focus="$event.currentTarget.select()" v-focus v-model="item.nodeName">
52
- <span class="editable-title" @click="clickEvent(index)" v-if="!isInputList[index]">{{item.nodeName}}</span>
53
- <span class="priority-title" @click="setPerson(item.priority,item)">优先级{{item.priority}}</span>
54
- <i class="anticon anticon-close close" @click="delTerm(index)"></i>
55
- </div>
56
- <div class="sort-right" v-if="index!=nodeConfig.conditionNodes.length-1" @click="arrTransfer(index)">&gt;</div>
57
- <div class="content" @click="setPerson(item.priority,item)">{{conditionStr(item,index)}}</div>
58
- <div class="error_tip" v-if="isTried&&item.error">
59
- <i class="anticon anticon-exclamation-circle" style="color: rgb(242, 86, 67);"></i>
60
- </div>
61
- </div>
62
- <addNode :childNodeP.sync="item.childNode"></addNode>
63
- </div>
64
- </div>
65
- <nodeWrap v-if="item.childNode && item.childNode" :nodeConfig.sync="item.childNode" :tableId="tableId"
66
- :isTried.sync="isTried" :directorMaxLevel="directorMaxLevel"></nodeWrap>
67
- <div class="top-left-cover-line" v-if="index==0"></div>
68
- <div class="bottom-left-cover-line" v-if="index==0"></div>
69
- <div class="top-right-cover-line" v-if="index==nodeConfig.conditionNodes.length-1"></div>
70
- <div class="bottom-right-cover-line" v-if="index==nodeConfig.conditionNodes.length-1"></div>
71
- </div>
72
- </div>
73
- <addNode :childNodeP.sync="nodeConfig.childNode"></addNode>
74
- </div>
75
- </div>
76
-
77
- <nodeWrap v-if="nodeConfig.childNode && nodeConfig.childNode" :nodeConfig.sync="nodeConfig.childNode" :tableId="tableId"
78
- :isTried.sync="isTried" :directorMaxLevel="directorMaxLevel" :queryInfo="queryInfo"></nodeWrap>
79
-
80
- <!-- 审批人 / 抄送人 -->
81
- <ApproverSelector ref="approverSelector" :queryInfo="queryInfo"/>
82
-
83
- <!-- 条件设置弹出窗口 -->
84
- <NodeConditionConfig ref="conditionForm" :formData="connection" :title="title" :queryInfo="queryInfo"/>
85
-
86
- <!-- TODO: 发起人 -->
87
-
88
-
89
- </div>
90
- </template>
91
- <script>
92
- import ApproverSelector from '../components/approverSelector.vue'
93
- import NodeConditionConfig from "../components/nodeConditionConfig";
94
- import addNode from './addNode'
95
-
96
-
97
- export default {
98
- props: ["nodeConfig", "flowPermission", "directorMaxLevel", "isTried", "tableId","queryInfo"],
99
- components:{
100
- ApproverSelector,
101
- NodeConditionConfig,
102
- addNode
103
- },
104
- name:"nodeWrap",
105
- data() {
106
- return {
107
- placeholderList: ["发起人", "审批人", "抄送人"],
108
- isInputList: [],
109
- isInput: false,
110
-
111
- // todo:发起人
112
- // flowPermission1: this.flowPermission,
113
-
114
- // 审批人
115
- approverConfig: {},
116
-
117
- // 抄送人
118
- copyerConfig: {},
119
- ccSelfSelectFlag: [], // 允许发起人自选抄送人
120
-
121
- // 条件节点设置
122
- conditionConfig: {},
123
- conditionsConfig: {
124
- conditionNodes: [],
125
- },
126
- bPriorityLevel: "",
127
- conditions: [],
128
- conditionList: [],
129
-
130
- // 条件流程传递
131
- connection:{},
132
- title:""
133
- }
134
- },
135
- mounted() {
136
- if (this.nodeConfig.type == 1) {
137
- this.nodeConfig.error = !this.setApproverStr(this.nodeConfig)
138
- } else if (this.nodeConfig.type == 2) {
139
- this.nodeConfig.error = !this.copyerStr(this.nodeConfig)
140
- } else if (this.nodeConfig.type == 4) {
141
- for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
142
- this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
143
- }
144
- }
145
- },
146
- created(){},
147
- methods: {
148
- // 展示修改节点的输入框
149
- clickEvent(index) {
150
- if (index || index === 0) {
151
- this.$set(this.isInputList, index, true)
152
- } else {
153
- this.isInput = true;
154
- }
155
- },
156
- // 修改节点名称
157
- blurEvent(index) {
158
- if (index || index === 0) {
159
- this.$set(this.isInputList, index, false)
160
- this.nodeConfig.conditionNodes[index].nodeName = this.nodeConfig.conditionNodes[index].nodeName ? this.nodeConfig.conditionNodes[index].nodeName : "条件"
161
- } else {
162
- this.isInput = false;
163
- this.nodeConfig.nodeName = this.nodeConfig.nodeName ? this.nodeConfig.nodeName : this.placeholderList[this.nodeConfig.type]
164
- }
165
- },
166
- // 配置条件节点
167
- // @TYPE: 类型 [0 发起人 1审批 2抄送 3条件 4路由]
168
- setPerson(priorityLevel,item) {
169
- var { type } = this.nodeConfig;
170
- if (type == 0) {
171
- // this.flowPermission1 = this.flowPermission;
172
- } else if (type == 1) {
173
- // 展示审批弹窗
174
- this.$refs.approverSelector.init(this.nodeConfig)
175
- // 设置弹出类型
176
- this.approverConfig = JSON.parse(JSON.stringify(this.nodeConfig))
177
- this.approverConfig.setType = this.approverConfig.setType ? this.approverConfig.setType : 1
178
- } else if (type == 2) {
179
- this.$refs.approverSelector.init(this.nodeConfig)
180
- this.copyerConfig = JSON.parse(JSON.stringify(this.nodeConfig))
181
- this.ccSelfSelectFlag = this.copyerConfig.ccSelfSelectFlag == 0 ? [] : [this.copyerConfig.ccSelfSelectFlag] // todo: 允许发起人自选抄送人判断
182
- } else {
183
- // 条件配置
184
- this.bPriorityLevel = priorityLevel;
185
- this.conditionsConfig = JSON.parse(JSON.stringify(this.nodeConfig))
186
- this.conditionConfig = this.conditionsConfig.conditionNodes.filter(item=>item.priority == priorityLevel)[0]
187
- this.$refs.conditionForm.nodeConditionHandler() // 条件页面
188
- this.fillConditionForm(this.conditionConfig) // 填充条件弹出表单参数
189
- }
190
- },
191
-
192
- /********** 1. 审批人修改 **********/
193
-
194
- // 修改审批人的类型
195
- changeType(val) {
196
- this.approverConfig.nodeUserList = [];
197
- this.approverConfig.examineMode = "3";
198
- this.approverConfig.authType = "1";
199
- if (val == 2) {
200
- this.approverConfig.directorLevel = 0;
201
- }
202
- this.approverConfig.setType = val
203
- },
204
- // 审批人为空时
205
- noHanderActionChange(val){
206
- this.approverConfig.authType = val;
207
- },
208
- // 审批的主管级别
209
- directorLevelChange(val){
210
- this.approverConfig.directorLevel = val
211
- },
212
- // 多人审批时采用的审批方式
213
- examineModeChange(val){
214
- this.approverConfig.examineMode = val;
215
- },
216
- // 确定审批数据
217
- // @setType: 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管
218
- // @selectRange 选择范围 1.全公司 2指定成员 3指定角色
219
- submitApprover(data){
220
- const {approverType,approvers,directorType,notifiers} = data
221
- this.approverConfig.nodeUserList = [];
222
- if (this.approverConfig.setType == 1) {
223
- this.approverConfig.nodeUserList = approvers
224
- }
225
- this.saveApprover() // 修改数据
226
- this.$refs.approverSelector.showApproverSelector() // 关闭审批配置窗口
227
- },
228
- // 保存审批
229
- saveApprover() {
230
- this.approverConfig.error = !this.setApproverStr(this.approverConfig)
231
- this.$emit("update:nodeConfig", this.approverConfig);
232
- },
233
- // 设置审批节点字符
234
- setApproverStr(nodeConfig) {
235
- if (nodeConfig.setType == 1) {
236
- if (nodeConfig.nodeUserList.length == 1) {
237
- return nodeConfig.nodeUserList[0].userName
238
- } else if (nodeConfig.nodeUserList.length > 1) {
239
- if (nodeConfig.examineMode == "1") {
240
- return nodeConfig.nodeUserList.length + "人会签"
241
- } else if (nodeConfig.examineMode == "2") {
242
- return nodeConfig.nodeUserList.length + "人或签"
243
- } else if (nodeConfig.examineMode == "3") {
244
- return nodeConfig.nodeUserList.length + "人依次审批"
245
- }
246
- }
247
- } else if (nodeConfig.setType == 2) {
248
- let level = nodeConfig.directorLevel == 0 ? '直接主管' : '第' + (parseInt(nodeConfig.directorLevel)+1) + '级主管'
249
- if (nodeConfig.examineMode == "1") {
250
- return level + "会签"
251
- } else if (nodeConfig.examineMode == "2") {
252
- return level + "人或签"
253
- } else if (nodeConfig.examineMode == "3") {
254
- return level + "人依次审批"
255
- }
256
- }
257
- },
258
- // 数组转字符串
259
- arrToStr(arr) {
260
- if (arr) {
261
- return arr.map(item => { return item.userName }).toString()
262
- }
263
- },
264
-
265
- /********** 2. 抄送人修改 **********/
266
-
267
- // 确定提交抄送人数据
268
- submitCopyer(item) {
269
- const {approverType,approvers,notifiers,passCopy,directorType} = item
270
- this.copyerConfig.nodeUserList = notifiers // 更新数据
271
- this.saveCopyer() // 更新数据
272
- this.$refs.approverSelector.showApproverSelector() // 关闭抄送人窗口
273
- },
274
- // 更新抄送人数据
275
- saveCopyer() {
276
- this.copyerConfig.ccSelfSelectFlag = this.ccSelfSelectFlag.length == 0 ? 0 : 1; // todo: 允许发起人自选抄送人
277
- this.copyerConfig.error = !this.copyerStr(this.copyerConfig);
278
- this.$emit("update:nodeConfig", this.copyerConfig);
279
- },
280
- // 抄送人展示字段
281
- copyerStr(nodeConfig) {
282
- if (nodeConfig.nodeUserList.length != 0) {
283
- return this.arrToStr(nodeConfig.nodeUserList)
284
- } else {
285
- // todo: 允许发起人自选抄送人判断
286
- // if (nodeConfig.ccSelfSelectFlag == 1) {
287
- // return "选择抄送人"
288
- // }
289
- }
290
- },
291
-
292
- /********** todo: 3. 发起人修改 **********/
293
-
294
- // 修改发起人方法
295
- // surePromoter() {
296
- // this.flowPermission1 = [];
297
- // this.checkedDepartmentList.map(item => {
298
- // this.flowPermission1.push({
299
- // type: 3,
300
- // targetId: item.id,
301
- // name: item.departmentName
302
- // })
303
- // });
304
- // this.checkedEmployessList.map(item => {
305
- // this.flowPermission1.push({
306
- // type: 1,
307
- // targetId: item.id,
308
- // name: item.employeeName
309
- // })
310
- // });
311
- // this.promoterVisible = false;
312
- // },
313
- // savePromoter() {
314
- // this.$emit("update:flowPermission", this.flowPermission1);
315
- // this.promoterDrawer = false;
316
- // },
317
-
318
-
319
- // 删除节点
320
- delNode() {
321
- this.$emit("update:nodeConfig", this.nodeConfig.childNode);
322
- },
323
- // 添加条件
324
- addTerm() {
325
- let len = this.nodeConfig.conditionNodes.length + 1
326
- this.nodeConfig.conditionNodes.push({
327
- "nodeName": "条件" + len,
328
- "type": 3,
329
- "priority": len,
330
- "conditionList": [],
331
- "nodeUserList": [],
332
- "childNode": null
333
- });
334
- for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
335
- this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
336
- }
337
- this.$emit("update:nodeConfig", this.nodeConfig);
338
- },
339
- // 删除条件
340
- delTerm(index) {
341
- this.nodeConfig.conditionNodes.splice(index, 1)
342
- for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
343
- this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
344
- }
345
- this.$emit("update:nodeConfig", this.nodeConfig);
346
- if (this.nodeConfig.conditionNodes.length == 1) {
347
- if (this.nodeConfig.childNode) {
348
- if (this.nodeConfig.conditionNodes[0].childNode) {
349
- this.reData(this.nodeConfig.conditionNodes[0].childNode, this.nodeConfig.childNode)
350
- } else {
351
- this.nodeConfig.conditionNodes[0].childNode = this.nodeConfig.childNode
352
- }
353
- }
354
- this.$emit("update:nodeConfig", this.nodeConfig.conditionNodes[0].childNode);
355
- }
356
- },
357
- reData(data, addData) {
358
- if (!data.childNode) {
359
- data.childNode = addData
360
- } else {
361
- this.reData(data.childNode, addData)
362
- }
363
- },
364
- // 填充条件表单
365
- fillConditionForm(value){
366
- const json = {};
367
- value.conditionList.forEach((item, index) => {
368
- if (item.isArray && item.variable != "userId") {
369
- item.value = item.value.split(",");
370
- }
371
- // 判断修改类型,适应表单复现
372
- // todo: 暂时判断输入框与发起人类型
373
- if(!['input','sponsor'].includes(item.ele)){
374
- // 判断是否数组
375
- item.value = !Array.isArray(item.value) ? item.value.split(',') : item.value
376
- }
377
-
378
- json[item.variable] = item;
379
- });
380
- this.connection = json;
381
- this.title = value.nodeName;
382
- },
383
- // 保存条件
384
- saveCondition() {
385
- var a = this.conditionsConfig.conditionNodes.splice(this.bPriorityLevel - 1, 1)//截取旧下标
386
- this.conditionsConfig.conditionNodes.splice(this.conditionConfig.priority - 1, 0, a[0])//填充新下标
387
- this.conditionsConfig.conditionNodes.map((item, index) => item.priority = index + 1);
388
- for (var i = 0; i < this.conditionsConfig.conditionNodes.length; i++) {
389
- this.conditionsConfig.conditionNodes[i].error = this.conditionStr(this.conditionsConfig.conditionNodes[i], i) == "请设置条件" && i != this.conditionsConfig.conditionNodes.length - 1
390
- }
391
- this.$emit("update:nodeConfig", this.conditionsConfig);
392
- },
393
- // 保存条件数据到对应节点
394
- submitCondition(item){
395
- const {form,desc,SxyData} = item
396
- this.conditionConfig.nodeUserList = [];
397
- this.conditionConfig.conditionList = [];
398
-
399
- this.conditionConfig.desc = desc // 文字描述
400
- // 判断是否选择人员
401
- if(form.userId){
402
- this.conditionConfig.nodeUserList = form.userId.sponsors
403
- }
404
-
405
- // 将所选条件加入其中
406
- for (const key in form) {
407
- // 修改数据格式,修改数组数据为字符串
408
- let resetItemType
409
- if(Array.isArray(form[key].value)){
410
- resetItemType = {"value": form[key].value.join(",")}
411
- }
412
- this.conditionConfig.conditionList.push({
413
- ...form[key],
414
- "variable": key,
415
- ...resetItemType,
416
- })
417
- }
418
- // 修改数据
419
- this.saveCondition()
420
- // 关闭条件选择弹出
421
- this.$refs.conditionForm.nodeConditionHandler()
422
- },
423
- // 展示条件文字
424
- conditionStr(item, index) {
425
- var { conditionList, nodeUserList } = item;
426
- if (conditionList.length == 0) {
427
- // 设置了条件判断: (index == this.nodeConfig.conditionNodes.length - 1) && this.nodeConfig.conditionNodes[0].conditionList.length != 0
428
- return '请设置条件'
429
- } else if(item.desc){
430
- return item.desc.join(";")
431
- }
432
- },
433
- // 修改左右关系,可依照此修改优先级
434
- arrTransfer(index, type = 1) {//向左-1,向右1
435
- this.nodeConfig.conditionNodes[index] = this.nodeConfig.conditionNodes.splice(index + type, 1, this.nodeConfig.conditionNodes[index])[0];
436
- this.nodeConfig.conditionNodes.map((item, index) => {
437
- item.priority = index + 1
438
- })
439
- for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
440
- this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
441
- }
442
- this.$emit("update:nodeConfig", this.nodeConfig);
443
- }
444
- }
445
- }
446
- </script>
447
- <style lang="scss" scoped>
448
- .error_tip {
449
- position: absolute;
450
- top: 0px;
451
- right: 0px;
452
- transform: translate(150%, 0px);
453
- font-size: 24px;
454
- }
455
- .add-node-popover-body {
456
- display: flex;
457
- }
458
- .promoter_content {
459
- padding: 0 20px;
460
- }
461
- .condition_content .el-button,
462
- .copyer_content .el-button,
463
- .approver_self_select .el-button,
464
- .promoter_content .el-button,
465
- .approver_content .el-button {
466
- margin-bottom: 20px;
467
- }
468
- .promoter_content p {
469
- padding: 18px 0;
470
- font-size: 14px;
471
- line-height: 20px;
472
- color: #000000;
473
- }
474
- .promoter_person .el-dialog__body {
475
- padding: 10px 20px 14px 20px;
476
- }
477
- .person_body {
478
- border: 1px solid #f5f5f5;
479
- height: 500px;
480
- }
481
- .person_tree {
482
- padding: 10px 12px 0 8px;
483
- width: 280px;
484
- height: 100%;
485
- border-right: 1px solid #f5f5f5;
486
- }
487
- .person_tree input {
488
- padding-left: 22px;
489
- width: 210px;
490
- height: 30px;
491
- font-size: 12px;
492
- border-radius: 2px;
493
- border: 1px solid #d5dadf;
494
- background: url(~@/assets/workflow/list_search.png) no-repeat 10px center;
495
- background-size: 14px 14px;
496
- margin-bottom: 14px;
497
- }
498
- .tree_nav span {
499
- display: inline-block;
500
- padding-right: 10px;
501
- margin-right: 5px;
502
- max-width: 6em;
503
- color: #38adff;
504
- font-size: 12px;
505
- cursor: pointer;
506
- background: url(~@/assets/workflow/jiaojiao.png) no-repeat right center;
507
- }
508
- .tree_nav span:last-of-type {
509
- background: none;
510
- }
511
- .person_tree ul,
512
- .has_selected ul {
513
- height: 420px;
514
- overflow-y: auto;
515
- }
516
- .person_tree li {
517
- padding: 5px 0;
518
- }
519
- .person_tree li i {
520
- float: right;
521
- padding-left: 24px;
522
- padding-right: 10px;
523
- color: #3195f8;
524
- font-size: 12px;
525
- cursor: pointer;
526
- /* background: url(~@/assets/workflow/next_level_active.png) no-repeat 10px center; */
527
- border-left: 1px solid rgb(238, 238, 238);
528
- }
529
- .person_tree li a.active + i {
530
- color: rgb(197, 197, 197);
531
- /* background-image: url(~@/assets/workflow/next_level.png); */
532
- pointer-events: none;
533
- }
534
- .person_tree img {
535
- width: 14px;
536
- vertical-align: middle;
537
- margin-right: 5px;
538
- }
539
- .has_selected {
540
- width: 276px;
541
- height: 100%;
542
- font-size: 12px;
543
- }
544
- .has_selected ul {
545
- height: 460px;
546
- }
547
- .has_selected p {
548
- padding-left: 19px;
549
- padding-right: 20px;
550
- line-height: 37px;
551
- border-bottom: 1px solid #f2f2f2;
552
- }
553
- .has_selected p a {
554
- float: right;
555
- }
556
- .has_selected ul li {
557
- margin: 11px 26px 13px 19px;
558
- line-height: 17px;
559
- }
560
- .has_selected li span {
561
- vertical-align: middle;
562
- }
563
- .has_selected li img:first-of-type {
564
- width: 14px;
565
- vertical-align: middle;
566
- margin-right: 5px;
567
- }
568
- .has_selected li img:last-of-type {
569
- float: right;
570
- margin-top: 2px;
571
- width: 14px;
572
- }
573
- el-radio-group {
574
- padding: 20px 0;
575
- }
576
- .approver_content {
577
- padding-bottom: 10px;
578
- border-bottom: 1px solid #f2f2f2;
579
- }
580
- .approver_content .el-radio,
581
- .approver_some .el-radio,
582
- .approver_self_select .el-radio {
583
- width: 27%;
584
- margin-bottom: 20px;
585
- }
586
- .copyer_content .el-checkbox {
587
- margin-bottom: 20px;
588
- }
589
- .el-checkbox__label {
590
- font-size: 12px;
591
- }
592
- .condition_content,
593
- .copyer_content,
594
- .approver_self_select,
595
- .approver_manager,
596
- .approver_content,
597
- .approver_some {
598
- padding: 20px 20px 0;
599
- }
600
- .approver_manager p:first-of-type,
601
- .approver_some p {
602
- line-height: 19px;
603
- font-size: 14px;
604
- margin-bottom: 14px;
605
- }
606
-
607
- .approver_manager p {
608
- line-height: 32px;
609
- }
610
- .approver_manager select {
611
- width: 420px;
612
- height: 32px;
613
- background: rgba(255, 255, 255, 1);
614
- border-radius: 4px;
615
- border: 1px solid rgba(217, 217, 217, 1);
616
- }
617
- .approver_manager p.tip {
618
- margin: 10px 0 22px 0;
619
- font-size: 12px;
620
- line-height: 16px;
621
- color: #f8642d;
622
- }
623
- .approver_self {
624
- padding: 28px 20px;
625
- }
626
- .selected_list {
627
- margin-bottom: 20px;
628
- line-height: 30px;
629
- }
630
- .selected_list span {
631
- margin-right: 10px;
632
- padding: 3px 6px 3px 9px;
633
- line-height: 12px;
634
- white-space: nowrap;
635
- border-radius: 2px;
636
- border: 1px solid rgba(220, 220, 220, 1);
637
- }
638
- .selected_list img {
639
- margin-left: 5px;
640
- width: 7px;
641
- height: 7px;
642
- cursor: pointer;
643
- }
644
- .approver_self_select h3 {
645
- margin: 5px 0 20px;
646
- font-size: 14px;
647
- font-weight: bold;
648
- line-height: 19px;
649
- }
650
- .condition_copyer .el-drawer__body .priority_level {
651
- position: absolute;
652
- top: 11px;
653
- right: 30px;
654
- width: 100px;
655
- height: 32px;
656
- background: rgba(255, 255, 255, 1);
657
- border-radius: 4px;
658
- border: 1px solid rgba(217, 217, 217, 1);
659
- }
660
- .condition_content p.tip {
661
- margin: 20px 0;
662
- width: 510px;
663
- text-indent: 17px;
664
- line-height: 45px;
665
- background: rgba(241, 249, 255, 1);
666
- border: 1px solid rgba(64, 163, 247, 1);
667
- color: #46a6fe;
668
- font-size: 14px;
669
- }
670
- .condition_content ul {
671
- max-height: 500px;
672
- overflow-y: scroll;
673
- margin-bottom: 20px;
674
- }
675
- .condition_content li > span {
676
- float: left;
677
- margin-right: 8px;
678
- width: 70px;
679
- line-height: 32px;
680
- text-align: right;
681
- }
682
- .condition_content li > div {
683
- display: inline-block;
684
- width: 370px;
685
- }
686
- .condition_content li:not(:last-child) > div > p {
687
- margin-bottom: 20px;
688
- }
689
- .condition_content li > div > p:not(:last-child) {
690
- margin-bottom: 10px;
691
- }
692
- .condition_content li > a {
693
- float: right;
694
- margin-right: 10px;
695
- margin-top: 7px;
696
- }
697
- .condition_content li select,
698
- .condition_content li input {
699
- width: 100%;
700
- height: 32px;
701
- background: rgba(255, 255, 255, 1);
702
- border-radius: 4px;
703
- border: 1px solid rgba(217, 217, 217, 1);
704
- }
705
- .condition_content li select + input {
706
- width: 260px;
707
- }
708
- .condition_content li select {
709
- margin-right: 10px;
710
- width: 100px;
711
- }
712
- .condition_content li p.selected_list {
713
- padding-left: 10px;
714
- border-radius: 4px;
715
- min-height: 32px;
716
- border: 1px solid rgba(217, 217, 217, 1);
717
- }
718
- .condition_content li p.check_box {
719
- line-height: 32px;
720
- }
721
- .condition_list .el-dialog__body {
722
- padding: 16px 26px;
723
- }
724
- .condition_list p {
725
- color: #666666;
726
- margin-bottom: 10px;
727
- }
728
- .condition_list p.check_box {
729
- margin-bottom: 0;
730
- line-height: 36px;
731
- }
1
+ <template>
2
+ <div>
3
+ <!-- 非路由展示 -->
4
+ <div class="node-wrap" v-if="nodeConfig.type!=4">
5
+ <div class="node-wrap-box" :class="(nodeConfig.type==0?'start-node ':'')+(isTried&&nodeConfig.error?'active error':'')">
6
+ <div>
7
+ <div class="title" :style="'background: rgb('+ ['87, 106, 149','255, 148, 62','50, 150, 250'][nodeConfig.type] +');'">
8
+ <span class="iconfont" v-show="nodeConfig.type==1"></span>
9
+ <span class="iconfont" v-show="nodeConfig.type==2"></span>
10
+ <span v-if="nodeConfig.type==0">{{nodeConfig.nodeName}}</span>
11
+ <input type="text" class="ant-input editable-title-input" v-if="nodeConfig.type!=0&&isInput"
12
+ @blur="blurEvent()" @focus="$event.currentTarget.select()" v-focus
13
+ v-model="nodeConfig.nodeName" :placeholder="placeholderList[nodeConfig.type]">
14
+ <span class="editable-title" @click="clickEvent()" v-if="nodeConfig.type!=0&&!isInput">{{nodeConfig.nodeName}}</span>
15
+ <i class="anticon anticon-close close" v-if="nodeConfig.type!=0" @click="delNode()"></i>
16
+ </div>
17
+ <div class="content" @click="setPerson">
18
+ <!-- 发起人 -->
19
+ <div class="text" v-if="nodeConfig.type==0">{{arrToStr(flowPermission)?arrToStr(flowPermission):'请求发起人'}}</div>
20
+ <!-- 审批人 -->
21
+ <div class="text" v-if="nodeConfig.type==1">
22
+ <span class="placeholder" v-if="!setApproverStr(nodeConfig)">请选择{{placeholderList[nodeConfig.type]}}</span>
23
+ {{setApproverStr(nodeConfig)}}
24
+ </div>
25
+ <!-- 抄送人 -->
26
+ <div class="text" v-if="nodeConfig.type==2">
27
+ <span class="placeholder" v-if="!copyerStr(nodeConfig)">请选择{{placeholderList[nodeConfig.type]}}</span>
28
+ {{copyerStr(nodeConfig)}}
29
+ </div>
30
+ <i class="anticon anticon-right arrow"></i>
31
+ </div>
32
+ <div class="error_tip" v-if="isTried&&nodeConfig.error">
33
+ <i class="anticon anticon-exclamation-circle" style="color: rgb(242, 86, 67);"></i>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ <addNode :childNodeP.sync="nodeConfig.childNode"></addNode>
38
+ </div>
39
+
40
+ <!-- 路由 -->
41
+ <div class="branch-wrap" v-if="nodeConfig.type==4">
42
+ <div class="branch-box-wrap">
43
+ <div class="branch-box">
44
+ <button class="add-branch" @click="addTerm">添加条件</button>
45
+ <div class="col-box" v-for="(item,index) in nodeConfig.conditionNodes" :key="index">
46
+ <div class="condition-node">
47
+ <div class="condition-node-box">
48
+ <div class="auto-judge" :class="isTried&&item.error?'error active':''">
49
+ <div class="sort-left" v-if="index!=0" @click="arrTransfer(index,-1)">&lt;</div>
50
+ <div class="title-wrapper">
51
+ <input type="text" class="ant-input editable-title-input" v-if="isInputList[index]" @blur="blurEvent(index)" @focus="$event.currentTarget.select()" v-focus v-model="item.nodeName">
52
+ <span class="editable-title" @click="clickEvent(index)" v-if="!isInputList[index]">{{item.nodeName}}</span>
53
+ <span class="priority-title" @click="setPerson(item.priority,item)">优先级{{item.priority}}</span>
54
+ <i class="anticon anticon-close close" @click="delTerm(index)"></i>
55
+ </div>
56
+ <div class="sort-right" v-if="index!=nodeConfig.conditionNodes.length-1" @click="arrTransfer(index)">&gt;</div>
57
+ <div class="content" @click="setPerson(item.priority,item)">{{conditionStr(item,index)}}</div>
58
+ <div class="error_tip" v-if="isTried&&item.error">
59
+ <i class="anticon anticon-exclamation-circle" style="color: rgb(242, 86, 67);"></i>
60
+ </div>
61
+ </div>
62
+ <addNode :childNodeP.sync="item.childNode"></addNode>
63
+ </div>
64
+ </div>
65
+ <nodeWrap v-if="item.childNode && item.childNode" :nodeConfig.sync="item.childNode" :tableId="tableId"
66
+ :isTried.sync="isTried" :directorMaxLevel="directorMaxLevel"></nodeWrap>
67
+ <div class="top-left-cover-line" v-if="index==0"></div>
68
+ <div class="bottom-left-cover-line" v-if="index==0"></div>
69
+ <div class="top-right-cover-line" v-if="index==nodeConfig.conditionNodes.length-1"></div>
70
+ <div class="bottom-right-cover-line" v-if="index==nodeConfig.conditionNodes.length-1"></div>
71
+ </div>
72
+ </div>
73
+ <addNode :childNodeP.sync="nodeConfig.childNode"></addNode>
74
+ </div>
75
+ </div>
76
+
77
+ <nodeWrap v-if="nodeConfig.childNode && nodeConfig.childNode" :nodeConfig.sync="nodeConfig.childNode" :tableId="tableId"
78
+ :isTried.sync="isTried" :directorMaxLevel="directorMaxLevel" :queryInfo="queryInfo"></nodeWrap>
79
+
80
+ <!-- 审批人 / 抄送人 -->
81
+ <ApproverSelector ref="approverSelector" :queryInfo="queryInfo"/>
82
+
83
+ <!-- 条件设置弹出窗口 -->
84
+ <NodeConditionConfig ref="conditionForm" :formData="connection" :title="title" :queryInfo="queryInfo"/>
85
+
86
+ <!-- TODO: 发起人 -->
87
+
88
+
89
+ </div>
90
+ </template>
91
+ <script>
92
+ import ApproverSelector from '../components/approverSelector.vue'
93
+ import NodeConditionConfig from "../components/nodeConditionConfig";
94
+ import addNode from './addNode'
95
+
96
+
97
+ export default {
98
+ props: ["nodeConfig", "flowPermission", "directorMaxLevel", "isTried", "tableId","queryInfo"],
99
+ components:{
100
+ ApproverSelector,
101
+ NodeConditionConfig,
102
+ addNode
103
+ },
104
+ name:"nodeWrap",
105
+ data() {
106
+ return {
107
+ placeholderList: ["发起人", "审批人", "抄送人"],
108
+ isInputList: [],
109
+ isInput: false,
110
+
111
+ // todo:发起人
112
+ // flowPermission1: this.flowPermission,
113
+
114
+ // 审批人
115
+ approverConfig: {},
116
+
117
+ // 抄送人
118
+ copyerConfig: {},
119
+ ccSelfSelectFlag: [], // 允许发起人自选抄送人
120
+
121
+ // 条件节点设置
122
+ conditionConfig: {},
123
+ conditionsConfig: {
124
+ conditionNodes: [],
125
+ },
126
+ bPriorityLevel: "",
127
+ conditions: [],
128
+ conditionList: [],
129
+
130
+ // 条件流程传递
131
+ connection:{},
132
+ title:""
133
+ }
134
+ },
135
+ mounted() {
136
+ if (this.nodeConfig.type == 1) {
137
+ this.nodeConfig.error = !this.setApproverStr(this.nodeConfig)
138
+ } else if (this.nodeConfig.type == 2) {
139
+ this.nodeConfig.error = !this.copyerStr(this.nodeConfig)
140
+ } else if (this.nodeConfig.type == 4) {
141
+ for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
142
+ this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
143
+ }
144
+ }
145
+ },
146
+ created(){},
147
+ methods: {
148
+ // 展示修改节点的输入框
149
+ clickEvent(index) {
150
+ if (index || index === 0) {
151
+ this.$set(this.isInputList, index, true)
152
+ } else {
153
+ this.isInput = true;
154
+ }
155
+ },
156
+ // 修改节点名称
157
+ blurEvent(index) {
158
+ if (index || index === 0) {
159
+ this.$set(this.isInputList, index, false)
160
+ this.nodeConfig.conditionNodes[index].nodeName = this.nodeConfig.conditionNodes[index].nodeName ? this.nodeConfig.conditionNodes[index].nodeName : "条件"
161
+ } else {
162
+ this.isInput = false;
163
+ this.nodeConfig.nodeName = this.nodeConfig.nodeName ? this.nodeConfig.nodeName : this.placeholderList[this.nodeConfig.type]
164
+ }
165
+ },
166
+ // 配置条件节点
167
+ // @TYPE: 类型 [0 发起人 1审批 2抄送 3条件 4路由]
168
+ setPerson(priorityLevel,item) {
169
+ var { type } = this.nodeConfig;
170
+ if (type == 0) {
171
+ // this.flowPermission1 = this.flowPermission;
172
+ } else if (type == 1) {
173
+ // 展示审批弹窗
174
+ this.$refs.approverSelector.init(this.nodeConfig)
175
+ // 设置弹出类型
176
+ this.approverConfig = JSON.parse(JSON.stringify(this.nodeConfig))
177
+ this.approverConfig.setType = this.approverConfig.setType ? this.approverConfig.setType : 1
178
+ } else if (type == 2) {
179
+ this.$refs.approverSelector.init(this.nodeConfig)
180
+ this.copyerConfig = JSON.parse(JSON.stringify(this.nodeConfig))
181
+ this.ccSelfSelectFlag = this.copyerConfig.ccSelfSelectFlag == 0 ? [] : [this.copyerConfig.ccSelfSelectFlag] // todo: 允许发起人自选抄送人判断
182
+ } else {
183
+ // 条件配置
184
+ this.bPriorityLevel = priorityLevel;
185
+ this.conditionsConfig = JSON.parse(JSON.stringify(this.nodeConfig))
186
+ this.conditionConfig = this.conditionsConfig.conditionNodes.filter(item=>item.priority == priorityLevel)[0]
187
+ this.$refs.conditionForm.nodeConditionHandler() // 条件页面
188
+ this.fillConditionForm(this.conditionConfig) // 填充条件弹出表单参数
189
+ }
190
+ },
191
+
192
+ /********** 1. 审批人修改 **********/
193
+
194
+ // 修改审批人的类型
195
+ changeType(val) {
196
+ this.approverConfig.nodeUserList = [];
197
+ this.approverConfig.examineMode = "3";
198
+ this.approverConfig.authType = "1";
199
+ if (val == 2) {
200
+ this.approverConfig.directorLevel = 0;
201
+ }
202
+ this.approverConfig.setType = val
203
+ },
204
+ // 审批人为空时
205
+ noHanderActionChange(val){
206
+ this.approverConfig.authType = val;
207
+ },
208
+ // 审批的主管级别
209
+ directorLevelChange(val){
210
+ this.approverConfig.directorLevel = val
211
+ },
212
+ // 多人审批时采用的审批方式
213
+ examineModeChange(val){
214
+ this.approverConfig.examineMode = val;
215
+ },
216
+ // 确定审批数据
217
+ // @setType: 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管
218
+ // @selectRange 选择范围 1.全公司 2指定成员 3指定角色
219
+ submitApprover(data){
220
+ const {approverType,approvers,directorType,notifiers} = data
221
+ this.approverConfig.nodeUserList = [];
222
+ if (this.approverConfig.setType == 1) {
223
+ this.approverConfig.nodeUserList = approvers
224
+ }
225
+ this.saveApprover() // 修改数据
226
+ this.$refs.approverSelector.showApproverSelector() // 关闭审批配置窗口
227
+ },
228
+ // 保存审批
229
+ saveApprover() {
230
+ this.approverConfig.error = !this.setApproverStr(this.approverConfig)
231
+ this.$emit("update:nodeConfig", this.approverConfig);
232
+ },
233
+ // 设置审批节点字符
234
+ setApproverStr(nodeConfig) {
235
+ if (nodeConfig.setType == 1) {
236
+ if (nodeConfig.nodeUserList.length == 1) {
237
+ return nodeConfig.nodeUserList[0].userName
238
+ } else if (nodeConfig.nodeUserList.length > 1) {
239
+ if (nodeConfig.examineMode == "1") {
240
+ return nodeConfig.nodeUserList.length + "人会签"
241
+ } else if (nodeConfig.examineMode == "2") {
242
+ return nodeConfig.nodeUserList.length + "人或签"
243
+ } else if (nodeConfig.examineMode == "3") {
244
+ return nodeConfig.nodeUserList.length + "人依次审批"
245
+ }
246
+ }
247
+ } else if (nodeConfig.setType == 2) {
248
+ let level = nodeConfig.directorLevel == 0 ? '直接主管' : '第' + (parseInt(nodeConfig.directorLevel)+1) + '级主管'
249
+ if (nodeConfig.examineMode == "1") {
250
+ return level + "会签"
251
+ } else if (nodeConfig.examineMode == "2") {
252
+ return level + "人或签"
253
+ } else if (nodeConfig.examineMode == "3") {
254
+ return level + "人依次审批"
255
+ }
256
+ }
257
+ },
258
+ // 数组转字符串
259
+ arrToStr(arr) {
260
+ if (arr) {
261
+ return arr.map(item => { return item.userName }).toString()
262
+ }
263
+ },
264
+
265
+ /********** 2. 抄送人修改 **********/
266
+
267
+ // 确定提交抄送人数据
268
+ submitCopyer(item) {
269
+ const {approverType,approvers,notifiers,passCopy,directorType} = item
270
+ this.copyerConfig.nodeUserList = notifiers // 更新数据
271
+ this.saveCopyer() // 更新数据
272
+ this.$refs.approverSelector.showApproverSelector() // 关闭抄送人窗口
273
+ },
274
+ // 更新抄送人数据
275
+ saveCopyer() {
276
+ this.copyerConfig.ccSelfSelectFlag = this.ccSelfSelectFlag.length == 0 ? 0 : 1; // todo: 允许发起人自选抄送人
277
+ this.copyerConfig.error = !this.copyerStr(this.copyerConfig);
278
+ this.$emit("update:nodeConfig", this.copyerConfig);
279
+ },
280
+ // 抄送人展示字段
281
+ copyerStr(nodeConfig) {
282
+ if (nodeConfig.nodeUserList.length != 0) {
283
+ return this.arrToStr(nodeConfig.nodeUserList)
284
+ } else {
285
+ // todo: 允许发起人自选抄送人判断
286
+ // if (nodeConfig.ccSelfSelectFlag == 1) {
287
+ // return "选择抄送人"
288
+ // }
289
+ }
290
+ },
291
+
292
+ /********** todo: 3. 发起人修改 **********/
293
+
294
+ // 修改发起人方法
295
+ // surePromoter() {
296
+ // this.flowPermission1 = [];
297
+ // this.checkedDepartmentList.map(item => {
298
+ // this.flowPermission1.push({
299
+ // type: 3,
300
+ // targetId: item.id,
301
+ // name: item.departmentName
302
+ // })
303
+ // });
304
+ // this.checkedEmployessList.map(item => {
305
+ // this.flowPermission1.push({
306
+ // type: 1,
307
+ // targetId: item.id,
308
+ // name: item.employeeName
309
+ // })
310
+ // });
311
+ // this.promoterVisible = false;
312
+ // },
313
+ // savePromoter() {
314
+ // this.$emit("update:flowPermission", this.flowPermission1);
315
+ // this.promoterDrawer = false;
316
+ // },
317
+
318
+
319
+ // 删除节点
320
+ delNode() {
321
+ this.$emit("update:nodeConfig", this.nodeConfig.childNode);
322
+ },
323
+ // 添加条件
324
+ addTerm() {
325
+ let len = this.nodeConfig.conditionNodes.length + 1
326
+ this.nodeConfig.conditionNodes.push({
327
+ "nodeName": "条件" + len,
328
+ "type": 3,
329
+ "priority": len,
330
+ "conditionList": [],
331
+ "nodeUserList": [],
332
+ "childNode": null
333
+ });
334
+ for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
335
+ this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
336
+ }
337
+ this.$emit("update:nodeConfig", this.nodeConfig);
338
+ },
339
+ // 删除条件
340
+ delTerm(index) {
341
+ this.nodeConfig.conditionNodes.splice(index, 1)
342
+ for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
343
+ this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
344
+ }
345
+ this.$emit("update:nodeConfig", this.nodeConfig);
346
+ if (this.nodeConfig.conditionNodes.length == 1) {
347
+ if (this.nodeConfig.childNode) {
348
+ if (this.nodeConfig.conditionNodes[0].childNode) {
349
+ this.reData(this.nodeConfig.conditionNodes[0].childNode, this.nodeConfig.childNode)
350
+ } else {
351
+ this.nodeConfig.conditionNodes[0].childNode = this.nodeConfig.childNode
352
+ }
353
+ }
354
+ this.$emit("update:nodeConfig", this.nodeConfig.conditionNodes[0].childNode);
355
+ }
356
+ },
357
+ reData(data, addData) {
358
+ if (!data.childNode) {
359
+ data.childNode = addData
360
+ } else {
361
+ this.reData(data.childNode, addData)
362
+ }
363
+ },
364
+ // 填充条件表单
365
+ fillConditionForm(value){
366
+ const json = {};
367
+ value.conditionList.forEach((item, index) => {
368
+ if (item.isArray && item.variable != "userId") {
369
+ item.value = item.value.split(",");
370
+ }
371
+ // 判断修改类型,适应表单复现
372
+ // todo: 暂时判断输入框与发起人类型
373
+ if(!['input','sponsor'].includes(item.ele)){
374
+ // 判断是否数组
375
+ item.value = !Array.isArray(item.value) ? item.value.split(',') : item.value
376
+ }
377
+
378
+ json[item.variable] = item;
379
+ });
380
+ this.connection = json;
381
+ this.title = value.nodeName;
382
+ },
383
+ // 保存条件
384
+ saveCondition() {
385
+ var a = this.conditionsConfig.conditionNodes.splice(this.bPriorityLevel - 1, 1)//截取旧下标
386
+ this.conditionsConfig.conditionNodes.splice(this.conditionConfig.priority - 1, 0, a[0])//填充新下标
387
+ this.conditionsConfig.conditionNodes.map((item, index) => item.priority = index + 1);
388
+ for (var i = 0; i < this.conditionsConfig.conditionNodes.length; i++) {
389
+ this.conditionsConfig.conditionNodes[i].error = this.conditionStr(this.conditionsConfig.conditionNodes[i], i) == "请设置条件" && i != this.conditionsConfig.conditionNodes.length - 1
390
+ }
391
+ this.$emit("update:nodeConfig", this.conditionsConfig);
392
+ },
393
+ // 保存条件数据到对应节点
394
+ submitCondition(item){
395
+ const {form,desc,SxyData} = item
396
+ this.conditionConfig.nodeUserList = [];
397
+ this.conditionConfig.conditionList = [];
398
+
399
+ this.conditionConfig.desc = desc // 文字描述
400
+ // 判断是否选择人员
401
+ if(form.userId){
402
+ this.conditionConfig.nodeUserList = form.userId.sponsors
403
+ }
404
+
405
+ // 将所选条件加入其中
406
+ for (const key in form) {
407
+ // 修改数据格式,修改数组数据为字符串
408
+ let resetItemType
409
+ if(Array.isArray(form[key].value)){
410
+ resetItemType = {"value": form[key].value.join(",")}
411
+ }
412
+ this.conditionConfig.conditionList.push({
413
+ ...form[key],
414
+ "variable": key,
415
+ ...resetItemType,
416
+ })
417
+ }
418
+ // 修改数据
419
+ this.saveCondition()
420
+ // 关闭条件选择弹出
421
+ this.$refs.conditionForm.nodeConditionHandler()
422
+ },
423
+ // 展示条件文字
424
+ conditionStr(item, index) {
425
+ var { conditionList, nodeUserList } = item;
426
+ if (conditionList.length == 0) {
427
+ // 设置了条件判断: (index == this.nodeConfig.conditionNodes.length - 1) && this.nodeConfig.conditionNodes[0].conditionList.length != 0
428
+ return '请设置条件'
429
+ } else if(item.desc){
430
+ return item.desc.join(";")
431
+ }
432
+ },
433
+ // 修改左右关系,可依照此修改优先级
434
+ arrTransfer(index, type = 1) {//向左-1,向右1
435
+ this.nodeConfig.conditionNodes[index] = this.nodeConfig.conditionNodes.splice(index + type, 1, this.nodeConfig.conditionNodes[index])[0];
436
+ this.nodeConfig.conditionNodes.map((item, index) => {
437
+ item.priority = index + 1
438
+ })
439
+ for (var i = 0; i < this.nodeConfig.conditionNodes.length; i++) {
440
+ this.nodeConfig.conditionNodes[i].error = this.conditionStr(this.nodeConfig.conditionNodes[i], i) == "请设置条件" && i != this.nodeConfig.conditionNodes.length - 1
441
+ }
442
+ this.$emit("update:nodeConfig", this.nodeConfig);
443
+ }
444
+ }
445
+ }
446
+ </script>
447
+ <style lang="scss" scoped>
448
+ .error_tip {
449
+ position: absolute;
450
+ top: 0px;
451
+ right: 0px;
452
+ transform: translate(150%, 0px);
453
+ font-size: 24px;
454
+ }
455
+ .add-node-popover-body {
456
+ display: flex;
457
+ }
458
+ .promoter_content {
459
+ padding: 0 20px;
460
+ }
461
+ .condition_content .el-button,
462
+ .copyer_content .el-button,
463
+ .approver_self_select .el-button,
464
+ .promoter_content .el-button,
465
+ .approver_content .el-button {
466
+ margin-bottom: 20px;
467
+ }
468
+ .promoter_content p {
469
+ padding: 18px 0;
470
+ font-size: 14px;
471
+ line-height: 20px;
472
+ color: #000000;
473
+ }
474
+ .promoter_person .el-dialog__body {
475
+ padding: 10px 20px 14px 20px;
476
+ }
477
+ .person_body {
478
+ border: 1px solid #f5f5f5;
479
+ height: 500px;
480
+ }
481
+ .person_tree {
482
+ padding: 10px 12px 0 8px;
483
+ width: 280px;
484
+ height: 100%;
485
+ border-right: 1px solid #f5f5f5;
486
+ }
487
+ .person_tree input {
488
+ padding-left: 22px;
489
+ width: 210px;
490
+ height: 30px;
491
+ font-size: 12px;
492
+ border-radius: 2px;
493
+ border: 1px solid #d5dadf;
494
+ background: url(~@/assets/workflow/list_search.png) no-repeat 10px center;
495
+ background-size: 14px 14px;
496
+ margin-bottom: 14px;
497
+ }
498
+ .tree_nav span {
499
+ display: inline-block;
500
+ padding-right: 10px;
501
+ margin-right: 5px;
502
+ max-width: 6em;
503
+ color: #38adff;
504
+ font-size: 12px;
505
+ cursor: pointer;
506
+ background: url(~@/assets/workflow/jiaojiao.png) no-repeat right center;
507
+ }
508
+ .tree_nav span:last-of-type {
509
+ background: none;
510
+ }
511
+ .person_tree ul,
512
+ .has_selected ul {
513
+ height: 420px;
514
+ overflow-y: auto;
515
+ }
516
+ .person_tree li {
517
+ padding: 5px 0;
518
+ }
519
+ .person_tree li i {
520
+ float: right;
521
+ padding-left: 24px;
522
+ padding-right: 10px;
523
+ color: #3195f8;
524
+ font-size: 12px;
525
+ cursor: pointer;
526
+ /* background: url(~@/assets/workflow/next_level_active.png) no-repeat 10px center; */
527
+ border-left: 1px solid rgb(238, 238, 238);
528
+ }
529
+ .person_tree li a.active + i {
530
+ color: rgb(197, 197, 197);
531
+ /* background-image: url(~@/assets/workflow/next_level.png); */
532
+ pointer-events: none;
533
+ }
534
+ .person_tree img {
535
+ width: 14px;
536
+ vertical-align: middle;
537
+ margin-right: 5px;
538
+ }
539
+ .has_selected {
540
+ width: 276px;
541
+ height: 100%;
542
+ font-size: 12px;
543
+ }
544
+ .has_selected ul {
545
+ height: 460px;
546
+ }
547
+ .has_selected p {
548
+ padding-left: 19px;
549
+ padding-right: 20px;
550
+ line-height: 37px;
551
+ border-bottom: 1px solid #f2f2f2;
552
+ }
553
+ .has_selected p a {
554
+ float: right;
555
+ }
556
+ .has_selected ul li {
557
+ margin: 11px 26px 13px 19px;
558
+ line-height: 17px;
559
+ }
560
+ .has_selected li span {
561
+ vertical-align: middle;
562
+ }
563
+ .has_selected li img:first-of-type {
564
+ width: 14px;
565
+ vertical-align: middle;
566
+ margin-right: 5px;
567
+ }
568
+ .has_selected li img:last-of-type {
569
+ float: right;
570
+ margin-top: 2px;
571
+ width: 14px;
572
+ }
573
+ el-radio-group {
574
+ padding: 20px 0;
575
+ }
576
+ .approver_content {
577
+ padding-bottom: 10px;
578
+ border-bottom: 1px solid #f2f2f2;
579
+ }
580
+ .approver_content .el-radio,
581
+ .approver_some .el-radio,
582
+ .approver_self_select .el-radio {
583
+ width: 27%;
584
+ margin-bottom: 20px;
585
+ }
586
+ .copyer_content .el-checkbox {
587
+ margin-bottom: 20px;
588
+ }
589
+ .el-checkbox__label {
590
+ font-size: 12px;
591
+ }
592
+ .condition_content,
593
+ .copyer_content,
594
+ .approver_self_select,
595
+ .approver_manager,
596
+ .approver_content,
597
+ .approver_some {
598
+ padding: 20px 20px 0;
599
+ }
600
+ .approver_manager p:first-of-type,
601
+ .approver_some p {
602
+ line-height: 19px;
603
+ font-size: 14px;
604
+ margin-bottom: 14px;
605
+ }
606
+
607
+ .approver_manager p {
608
+ line-height: 32px;
609
+ }
610
+ .approver_manager select {
611
+ width: 420px;
612
+ height: 32px;
613
+ background: rgba(255, 255, 255, 1);
614
+ border-radius: 4px;
615
+ border: 1px solid rgba(217, 217, 217, 1);
616
+ }
617
+ .approver_manager p.tip {
618
+ margin: 10px 0 22px 0;
619
+ font-size: 12px;
620
+ line-height: 16px;
621
+ color: #f8642d;
622
+ }
623
+ .approver_self {
624
+ padding: 28px 20px;
625
+ }
626
+ .selected_list {
627
+ margin-bottom: 20px;
628
+ line-height: 30px;
629
+ }
630
+ .selected_list span {
631
+ margin-right: 10px;
632
+ padding: 3px 6px 3px 9px;
633
+ line-height: 12px;
634
+ white-space: nowrap;
635
+ border-radius: 2px;
636
+ border: 1px solid rgba(220, 220, 220, 1);
637
+ }
638
+ .selected_list img {
639
+ margin-left: 5px;
640
+ width: 7px;
641
+ height: 7px;
642
+ cursor: pointer;
643
+ }
644
+ .approver_self_select h3 {
645
+ margin: 5px 0 20px;
646
+ font-size: 14px;
647
+ font-weight: bold;
648
+ line-height: 19px;
649
+ }
650
+ .condition_copyer .el-drawer__body .priority_level {
651
+ position: absolute;
652
+ top: 11px;
653
+ right: 30px;
654
+ width: 100px;
655
+ height: 32px;
656
+ background: rgba(255, 255, 255, 1);
657
+ border-radius: 4px;
658
+ border: 1px solid rgba(217, 217, 217, 1);
659
+ }
660
+ .condition_content p.tip {
661
+ margin: 20px 0;
662
+ width: 510px;
663
+ text-indent: 17px;
664
+ line-height: 45px;
665
+ background: rgba(241, 249, 255, 1);
666
+ border: 1px solid rgba(64, 163, 247, 1);
667
+ color: #46a6fe;
668
+ font-size: 14px;
669
+ }
670
+ .condition_content ul {
671
+ max-height: 500px;
672
+ overflow-y: scroll;
673
+ margin-bottom: 20px;
674
+ }
675
+ .condition_content li > span {
676
+ float: left;
677
+ margin-right: 8px;
678
+ width: 70px;
679
+ line-height: 32px;
680
+ text-align: right;
681
+ }
682
+ .condition_content li > div {
683
+ display: inline-block;
684
+ width: 370px;
685
+ }
686
+ .condition_content li:not(:last-child) > div > p {
687
+ margin-bottom: 20px;
688
+ }
689
+ .condition_content li > div > p:not(:last-child) {
690
+ margin-bottom: 10px;
691
+ }
692
+ .condition_content li > a {
693
+ float: right;
694
+ margin-right: 10px;
695
+ margin-top: 7px;
696
+ }
697
+ .condition_content li select,
698
+ .condition_content li input {
699
+ width: 100%;
700
+ height: 32px;
701
+ background: rgba(255, 255, 255, 1);
702
+ border-radius: 4px;
703
+ border: 1px solid rgba(217, 217, 217, 1);
704
+ }
705
+ .condition_content li select + input {
706
+ width: 260px;
707
+ }
708
+ .condition_content li select {
709
+ margin-right: 10px;
710
+ width: 100px;
711
+ }
712
+ .condition_content li p.selected_list {
713
+ padding-left: 10px;
714
+ border-radius: 4px;
715
+ min-height: 32px;
716
+ border: 1px solid rgba(217, 217, 217, 1);
717
+ }
718
+ .condition_content li p.check_box {
719
+ line-height: 32px;
720
+ }
721
+ .condition_list .el-dialog__body {
722
+ padding: 16px 26px;
723
+ }
724
+ .condition_list p {
725
+ color: #666666;
726
+ margin-bottom: 10px;
727
+ }
728
+ .condition_list p.check_box {
729
+ margin-bottom: 0;
730
+ line-height: 36px;
731
+ }
732
732
  </style>