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,431 +1,662 @@
1
- <template>
2
- <div>
3
- <!-- 顶部导航栏 -->
4
- <div class="fd-nav sidePadding">
5
- <div class="fd-nav-left">
6
- <div class="fd-nav-title">{{queryInfo.name}}流程</div>
7
- </div>
8
- <div class="fd-nav-center"></div>
9
- <div class="fd-nav-right">
10
- <!-- <button type="button" class="ant-btn button-preview"><span>预 览</span></button> -->
11
- <div class="switch fixWidth">
12
- <span>重复审批人自动通过:</span>
13
- <el-switch v-model="workFlowDef.automaticPass"> </el-switch>
14
- <el-tooltip class="item" effect="dark" placement="bottom">
15
- <div slot="content">开通后,当同一审批人重复出现在多节点时,<br/>若首个节点审批通过,则后续节点中该审批<br/>人自动通过无需多次操作审批</div>
16
- <el-button icon="el-icon-question" circle class="tooltipContent"/>
17
- </el-tooltip>
18
- </div>
19
- <div class="switch">
20
- <span>是否开启审批:</span>
21
- <el-switch v-model="workFlowDef.switchOn"> </el-switch>
22
- </div>
23
- <el-button @click="cancel" round size="medium">取消</el-button>
24
- <el-button @click="saveSet" round type="primary" size="medium" >保存</el-button>
25
- <el-button v-if="isOldData" @click="showOldModal" round type="warning" size="medium" >老数据参考</el-button>
26
- </div>
27
- </div>
28
-
29
- <!-- 主体区域 -->
30
- <div class="fd-nav-content">
31
- <section class="dingflow-design">
32
- <div class="zoom">
33
- <div :class="'zoom-out'+ (nowVal==50?' disabled':'')" @click="zoomSize(1)"></div>
34
- <span>{{nowVal}}%</span>
35
- <div :class="'zoom-in'+ (nowVal==300?' disabled':'')" @click="zoomSize(2)"></div>
36
- </div>
37
- <div class="box-scale" id="box-scale" :style="'transform: scale('+nowVal/100+'); transform-origin: 50% 0px 0px;'">
38
- <nodeWrap
39
- :nodeConfig.sync="nodeConfig"
40
- :flowPermission.sync="flowPermission"
41
- :isTried.sync="isTried"
42
- :directorMaxLevel="directorMaxLevel"
43
- :tableId="processConfig.processId"
44
- :queryInfo="queryInfo"
45
- />
46
- <div class="end-node">
47
- <div class="end-node-circle"></div>
48
- <div class="end-node-text">流程结束</div>
49
- </div>
50
- </div>
51
- </section>
52
- </div>
53
-
54
-
55
- <!-- 提交前判断 -->
56
- <el-dialog title="提示" :visible.sync="tipVisible" class="modalTips" width="445px">
57
- <div class="ant-confirm-body">
58
- <i class="anticon anticon-close-circle" style="color: #f00;"></i>
59
- <span class="ant-confirm-title">当前无法发布</span>
60
- <div class="ant-confirm-content">
61
- <div>
62
- <p class="error-modal-desc">以下内容不完善,需进行修改</p>
63
- <div class="error-modal-list">
64
- <div class="error-modal-item" v-for="(item,index) in tipList" :key="index">
65
- <div class="error-modal-item-label">流程设计</div>
66
- <div class="error-modal-item-content">{{item.name}} 未选择{{item.type}}</div>
67
- </div>
68
- </div>
69
- </div>
70
- </div>
71
- </div>
72
- <span slot="footer" class="dialog-footer">
73
- <el-button @click="tipVisible = false">我知道了</el-button>
74
- <el-button type="primary" @click="tipVisible = false">前往修改</el-button>
75
- </span>
76
- </el-dialog>
77
-
78
- <!-- 老数据展示弹出 -->
79
- <el-dialog :title="`${queryInfo.name}老数据参考`" :visible.sync="oldModal" width="70%" :before-close="showOldModal">
80
- <OldProcess :tools="false" :path="path" :userInfo="userInfo" :queryInfo="queryInfo"/>
81
- <span slot="footer" class="dialog-footer">
82
- <el-button @click="oldModal = false">取 消</el-button>
83
- <el-button type="primary" @click="oldModal = false">确 定</el-button>
84
- </span>
85
- </el-dialog>
86
-
87
-
88
- </div>
89
- </template>
90
- <script>
91
- import initData from "./workflow/initData"
92
- import * as api from "@/api/apiProcess";
93
- import OldProcess from "./process-2"
94
- import nodeWrap from './workflow/nodeWrap'
95
-
96
-
97
- export default {
98
- name: 'Process',
99
- components: {
100
- OldProcess,
101
- nodeWrap
102
- },
103
- props: {
104
- // 路由地址
105
- path: {
106
- type: String,
107
- default: () => {
108
- return "/index"
109
- }
110
- },
111
- // 类型数据
112
- queryInfo:{
113
- type:Object,
114
- default:()=>{
115
- return {
116
- name:"公告管理",
117
- type:"notice"
118
- }
119
- }
120
- },
121
- // 用户信息
122
- userInfo: {
123
- type: Object,
124
- default:()=>{
125
- return {
126
- "companyNo":"202008267425615", // 公司no
127
- "no":"2121212121", // 用户no
128
- }
129
- }
130
- },
131
- // formBuilder
132
- formBuilder:{
133
- type:Object,
134
- default:()=>{
135
- return {
136
- formDesId:""
137
- }
138
- }
139
- }
140
- },
141
- data() {
142
- return {
143
- isTried: false,
144
- tipList: [],
145
- tipVisible: false,
146
- nowVal: 100,
147
- processConfig: {},
148
- nodeConfig: {},
149
- workFlowDef: {},
150
- flowPermission: [],
151
- directorMaxLevel: 0,
152
- dialogVisible: true,
153
- tableId: "",
154
- isFlg: true, // 是否开启审批
155
- isOldData: false, // 是否为老数据
156
- oldModal: false, // 老数据展示弹窗
157
- type: null, // 项目类型,注意:暂时仅做提交后路由判断
158
- processId: null // 流程ID
159
- };
160
- },
161
- mounted() {},
162
- created() {
163
- // 获取审批流程数据
164
- this.getProcessSet()
165
- // 存储用户信息
166
- localStorage.setItem("userInfo",JSON.stringify(this.userInfo))
167
- localStorage.setItem("queryInfo",JSON.stringify(this.queryInfo))
168
- // 设置类型
169
- this.type = this.path == "/index" ? "customForm_" + this.formBuilder.formDesId : this.queryInfo.type;
170
- },
171
- methods: {
172
- // 初始化数据
173
- initData(data) {
174
- this.processConfig = data;
175
- this.processConfig.processId = this.processId
176
- this.nodeConfig = this.processConfig.nodeConfig; // 主体的流程
177
- this.flowPermission = this.processConfig.flowPermission; // 发起人
178
- this.directorMaxLevel = this.processConfig.directorMaxLevel; // 审批主管最大层级
179
- // 审批名称
180
- this.workFlowDef = {
181
- "switchOn": !!parseInt(this.processConfig.switchOn),
182
- "automaticPass": !!parseInt(this.processConfig.automaticPass)
183
- }
184
- },
185
- // 获取审批流程数据
186
- async getProcessSet() {
187
- const param = { companyId: this.userInfo.companyNo, type: this.queryInfo.type };
188
- const result = await api.queryProcessByType(param);
189
- const { state, data } = result.data
190
- if (state == "ok" && data) {
191
- this.processId = data._id
192
- const { content, rootNode } = data
193
- // 判断流程是否为老数据
194
- if (rootNode.isNewVersion) {
195
- this.initData(JSON.parse(content))
196
- } else {
197
- // 处理老数据
198
- this.isOldData = true // 展示老数据参考按钮
199
- this.initData(this.handleOldProcess(content))
200
- }
201
- } else {
202
- this.initData(JSON.parse(JSON.stringify(initData.data)))
203
- }
204
- },
205
- // 处理兼容老数据
206
- // 备注: 处理兼容的老数据仅仅限于不存在条件分支
207
- handleOldProcess(content) {
208
- const { nodeList, companyId, creator, describe, processName, switchOn, type, version } = JSON.parse(content);
209
- const node = nodeList.filter(value => !["start", "end"].includes(value.item.type));
210
- // 拼接基础数据
211
- const param = {
212
- "companyId": companyId,
213
- "creator": creator,
214
- "describe": describe,
215
- "nodeConfig": {
216
- "pkId": "sid-start-node",
217
- "nodeName": "发起人",
218
- "type": 0,
219
- "priority": "",
220
- "setType": "",
221
- "directorLevel": "",
222
- "examineMode": "",
223
- "authType": "",
224
- "ccSelfSelectFlag": "",
225
- "conditionList": [],
226
- "nodeUserList": [],
227
- "childNode": null,
228
- "conditionNodes": []
229
- },
230
- "processId": this.processId,
231
- "processName": processName,
232
- "switchOn": switchOn,
233
- "automaticPass": 0,
234
- "type": type,
235
- "version": version
236
- };
237
-
238
- // 判断是否存在条件分支
239
- const isHasCondition = node.filter(value => value.item.type == "addCondition")
240
- if (!isHasCondition.length) {
241
-
242
- // 递归处理数据
243
- const map = {};
244
- const val = [];
245
-
246
- node.map((value, index) => {
247
- node[index].item = this.createTypeData(value.item)
248
- delete node[index].lists;
249
- delete node[index].level;
250
- });
251
-
252
- node.forEach(value => {
253
- map[value.item.id] = value.item;
254
- });
255
-
256
- node.forEach(value => {
257
- const parent = map[parseInt(value.item.from)];
258
- if (parent) {
259
- (parent.children || (parent.children = [])).push(value.item);
260
- } else {
261
- val.push(value.item);
262
- }
263
- });
264
-
265
- this.flatChildNode(val[0]);
266
- param.nodeConfig.childNode = val[0] // 赋予数据
267
-
268
- }
269
-
270
- return param
271
- },
272
- // 老数据处理无用字段
273
- flatChildNode(item) {
274
- item.childNode = item.children && item.children[0] ? item.children[0] : null;
275
- if (item.children && item.children[0]) {
276
- item.children[0].children ? this.flatChildNode(item.children[0]) : null;
277
- delete item.id;
278
- delete item.from;
279
- delete item.children;
280
- delete item.childNode.id;
281
- delete item.childNode.from;
282
- }
283
- },
284
- // 生成对应数据
285
- createTypeData(item) {
286
- let childNode = {};
287
- if (item.type == "userTask") {
288
- childNode = {
289
- "nodeName": "审批人", // 节点名称
290
- "type": 1, // 0 发起人 1审批 2抄送 3条件 4路由
291
- "priority": 1, // 条件优先级
292
- "setType": (item.directorType && item.directorType.type) || 1, // 审批人设置 1指定成员 2主管
293
- "directorLevel": item.approverType == "3" ? item.approvers[0].directorId : "", // 审批终点 最高层主管数
294
- "examineMode": item.approverType, // 多人审批时采用的审批方式 3依次审批 1会签 2或签
295
- "authType": (item.directorType && item.directorType.type) || "1", // 审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员
296
- "ccSelfSelectFlag": 1,
297
- "conditionList": [], // 当审批单同时满足以下条件时进入此流程
298
- "nodeUserList": item.approvers || [], // 操作人
299
- "childNode": null,
300
- "conditionNodes": [], // 条件节点
301
- "error": false, // 错误判断
302
- // 拼接节点顺序 ====
303
- "id": item.id,
304
- "from": item.from
305
- };
306
- } else if (item.type == "ccTask") {
307
- childNode = {
308
- "ccSelfSelectFlag": 1,
309
- "error": false,
310
- "type": 2,
311
- "nodeName": "抄送人",
312
- "nodeUserList": item.notifiers,
313
- // 拼接节点顺序 ====
314
- "id": item.id,
315
- "from": item.from
316
- };
317
- }
318
- return childNode;
319
- },
320
- // 老数据展示
321
- // 未复杂流程不能还原的数据数据参考
322
- showOldModal() {
323
- this.oldModal = !this.oldModal
324
- },
325
- toReturn() {},
326
- reErr(data) {
327
- if (data.childNode) {
328
- if (data.childNode.type == 1) { // 审批人
329
- if (data.childNode.error) {
330
- this.tipList.push({ name: data.childNode.nodeName, type: "审批人" })
331
- }
332
- this.reErr(data.childNode)
333
- } else if (data.childNode.type == 2) {
334
- if (data.childNode.error) {
335
- this.tipList.push({ name: data.childNode.nodeName, type: "抄送人" })
336
- }
337
- this.reErr(data.childNode)
338
- } else if (data.childNode.type == 3) {
339
- this.reErr(data.childNode.childNode)
340
- } else if (data.childNode.type == 4) {
341
- this.reErr(data.childNode)
342
- for (var i = 0; i < data.childNode.conditionNodes.length; i++) {
343
- if (data.childNode.conditionNodes[i].error || !data.childNode.conditionNodes[i].conditionList.length) {
344
- this.tipList.push({ name: data.childNode.conditionNodes[i].nodeName, type: "条件" })
345
- }
346
- this.reErr(data.childNode.conditionNodes[i])
347
- }
348
- }
349
- } else {
350
- data.childNode = null
351
- }
352
- },
353
- // 保存审批设置
354
- async saveSet() {
355
- this.isTried = true;
356
- this.tipList = [];
357
- this.reErr(this.nodeConfig);
358
- if (this.tipList.length != 0) {
359
- this.tipVisible = true;
360
- return;
361
- }
362
- this.processConfig.flowPermission = this.flowPermission
363
-
364
- // 根据审批状态重组数据
365
- this.processConfig = {
366
- ...this.processConfig,
367
- "switchOn": this.workFlowDef.switchOn ? 1 : 0, // 审批状态
368
- "automaticPass": this.workFlowDef.automaticPass ? 1 : 0, // 重复审批人问题
369
- "creator": this.userInfo.no, // 用户no this.$store.state.user.no
370
- "companyId": this.userInfo.companyNo, // 公司id this.$store.state.user.companyNo
371
- "type": this.type, // 流程类型 this.$route.query.type 或者表单类型
372
- "processName": this.queryInfo.name, // 流程名称 ""this.$route.query.name
373
- "describe": this.queryInfo.name, // 流程描述 this.$route.query.name
374
- "menuId": this.formBuilder.menuId,
375
- "menuName": this.formBuilder.name || ""
376
- }
377
-
378
-
379
- // 保存数据
380
- let res
381
- // 判断是否存在流程ID
382
- if (this.processConfig.processId) {
383
- res = await api.newUpdateProcess(this.processConfig);
384
- } else {
385
- res = await api.newSaveProcess(this.processConfig);
386
- }
387
-
388
- if (res.data.state == "ok") {
389
- this.$message.success({ message: this.processConfig.processId ? "编辑成功" : "保存成功", duration: 1500 });
390
- if (this.type.indexOf("customForm_") == -1) {
391
- this.$removeTag1(this.$route);
392
- this.$router.go(-1);
393
- }
394
- } else {
395
- this.isTried = false;
396
- this.$message.error({ message: res.data.msg ? res.data.msg : "保存失败", duration: 1500 });
397
- }
398
- },
399
- // 取消审批设置
400
- cancel() {
401
- this.$confirm("有修改的内容未保存,确认离开吗?", "提示", {
402
- confirmButtonText: "确定",
403
- cancelButtonText: "取消",
404
- type: "warning"
405
- })
406
- .then(() => {
407
- this.$removeTag1(this.$route);
408
- this.$router.go(-1);
409
- })
410
- .catch(() => {});
411
- },
412
- // 流程图缩放
413
- zoomSize(type) {
414
- if (type == 1) {
415
- if (this.nowVal == 50) {
416
- return;
417
- }
418
- this.nowVal -= 10;
419
- } else {
420
- if (this.nowVal == 300) {
421
- return;
422
- }
423
- this.nowVal += 10;
424
- }
425
- }
426
- }
427
- };
428
- </script>
429
- <style lang="scss" scoped>
430
- @import "../../styles/workflow/workflow.css";
431
- </style>
1
+ <template>
2
+ <div>
3
+ <!-- 顶部导航栏 -->
4
+ <div class="fd-nav sidePadding">
5
+ <div class="fd-nav-left">
6
+ <div class="fd-nav-title">{{queryInfo.name}}流程</div>
7
+ </div>
8
+ <div class="fd-nav-center"></div>
9
+ <div class="fd-nav-right">
10
+ <!-- <button type="button" class="ant-btn button-preview"><span>预 览</span></button> -->
11
+ <div class="switch fixWidth">
12
+ <span>重复审批人自动通过:</span>
13
+ <el-switch v-model="workFlowDef.automaticPass"> </el-switch>
14
+ <el-tooltip class="item" effect="dark" placement="bottom">
15
+ <div slot="content">开通后,当同一审批人重复出现在多节点时,<br/>若首个节点审批通过,则后续节点中该审批<br/>人自动通过无需多次操作审批</div>
16
+ <el-button icon="el-icon-question" circle class="tooltipContent"/>
17
+ </el-tooltip>
18
+ </div>
19
+ <div class="switch">
20
+ <span>是否开启审批:</span>
21
+ <el-switch v-model="workFlowDef.switchOn"> </el-switch>
22
+ </div>
23
+ <el-button @click="cancel" round size="medium">取消</el-button>
24
+ <el-button @click="saveSet" round type="primary" size="medium" >保存</el-button>
25
+ <el-button v-if="isOldData" @click="showOldModal" round type="warning" size="medium" >老数据参考</el-button>
26
+ </div>
27
+ </div>
28
+ <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
29
+ <el-tab-pane label="流程设计" name="process">
30
+ <!-- 主体区域 -->
31
+ <div class="fd-nav-content">
32
+ <section class="dingflow-design">
33
+ <div class="zoom">
34
+ <div :class="'zoom-out'+ (nowVal==50?' disabled':'')" @click="zoomSize(1)"></div>
35
+ <span>{{nowVal}}%</span>
36
+ <div :class="'zoom-in'+ (nowVal==300?' disabled':'')" @click="zoomSize(2)"></div>
37
+ </div>
38
+ <div class="box-scale" id="box-scale" :style="'transform: scale('+nowVal/100+'); transform-origin: 50% 0px 0px;'">
39
+ <nodeWrap
40
+ :nodeConfig.sync="nodeConfig"
41
+ :flowPermission.sync="flowPermission"
42
+ :isTried.sync="isTried"
43
+ :directorMaxLevel="directorMaxLevel"
44
+ :tableId="processConfig.processId"
45
+ :queryInfo="queryInfo"
46
+ />
47
+ <div class="end-node">
48
+ <div class="end-node-circle"></div>
49
+ <div class="end-node-text">流程结束</div>
50
+ </div>
51
+ </div>
52
+ </section>
53
+ </div>
54
+ </el-tab-pane>
55
+ <el-tab-pane label="打印设置" name="Print" class="tableClass">
56
+ <div class="divCalss">
57
+ <span style="font-size:14px;margin-bottom: 20px;display: block;">
58
+ 打印内容设置:
59
+ <el-table
60
+ :data="JsonListAll"
61
+ border
62
+ :header-cell-style="$TableCell.setHeaderCellStyle"
63
+ :cell-style="$TableCell.setCellStyle"
64
+ style="width: 100%"
65
+ >
66
+ <el-table-column
67
+ prop="name"
68
+ label="字段名称"
69
+ width="300">
70
+ </el-table-column>
71
+ <el-table-column
72
+ width="120">
73
+ <template slot="header">
74
+ <!-- <el-checkbox :checked="checked" @change="handlecheckbox('1')">打印</el-checkbox> -->
75
+ <el-button type="text" @click="handlecheckbox('1')">打印</el-button>
76
+ </template>
77
+ <template slot-scope="scope">
78
+ <el-checkbox v-model="JsonListAll[scope.$index].isPrint" @change="(value)=>handlebutton(scope,value,'1')"></el-checkbox>
79
+ </template>
80
+ </el-table-column>
81
+ <el-table-column
82
+ width="120">
83
+ <template slot="header">
84
+ <!-- <el-checkbox :checked="checkedfalse" @change="handlecheckbox('2')">不打印</el-checkbox> -->
85
+ <el-button type="text" @click="handlecheckbox('2')">不打印</el-button>
86
+ </template>
87
+ <template slot-scope="scope">
88
+ <el-checkbox v-model="JsonListAll[scope.$index].notPrint" @change="(value)=>handlebutton(scope,value,'2')"></el-checkbox>
89
+ </template>
90
+ </el-table-column>
91
+ </el-table>
92
+ </span>
93
+ <div style="display:flex;margin-top:10px;">
94
+ <div style="flex:1">
95
+ <el-checkbox v-model="isPrintChildTable" >打印子表</el-checkbox>
96
+ <el-tooltip v-if="approveRemake.length > 0" class="item" effect="dark" placement="bottom">
97
+ <div slot="content">{{approveRemake}}</div>
98
+ <el-button icon="el-icon-question" circle class="approveRemake"/>
99
+ </el-tooltip>
100
+ </div>
101
+ <el-checkbox v-model="isPrintLog" >打印审批日志</el-checkbox>
102
+ </div>
103
+ </div>
104
+ </el-tab-pane>
105
+ </el-tabs>
106
+
107
+
108
+ <!-- 提交前判断 -->
109
+ <el-dialog title="提示" :visible.sync="tipVisible" class="modalTips" width="445px">
110
+ <div class="ant-confirm-body">
111
+ <i class="anticon anticon-close-circle" style="color: #f00;"></i>
112
+ <span class="ant-confirm-title">当前无法发布</span>
113
+ <div class="ant-confirm-content">
114
+ <div>
115
+ <p class="error-modal-desc">以下内容不完善,需进行修改</p>
116
+ <div class="error-modal-list">
117
+ <div class="error-modal-item" v-for="(item,index) in tipList" :key="index">
118
+ <div class="error-modal-item-label">流程设计</div>
119
+ <div class="error-modal-item-content">{{item.name}} 未选择{{item.type}}</div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ <span slot="footer" class="dialog-footer">
126
+ <el-button @click="tipVisible = false">我知道了</el-button>
127
+ <el-button type="primary" @click="tipVisible = false">前往修改</el-button>
128
+ </span>
129
+ </el-dialog>
130
+
131
+ <!-- 老数据展示弹出 -->
132
+ <el-dialog :title="`${queryInfo.name}老数据参考`" :visible.sync="oldModal" width="70%" :before-close="showOldModal">
133
+ <OldProcess :tools="false" :path="path" :userInfo="userInfo" :queryInfo="queryInfo"/>
134
+ <span slot="footer" class="dialog-footer">
135
+ <el-button @click="oldModal = false">取 消</el-button>
136
+ <el-button type="primary" @click="oldModal = false">确 定</el-button>
137
+ </span>
138
+ </el-dialog>
139
+
140
+
141
+ </div>
142
+ </template>
143
+ <script>
144
+ import initData from "./workflow/initData"
145
+ import * as api from "@/api/apiProcess";
146
+ import * as apiPrint from "@/api/apiPrint";
147
+ import OldProcess from "./process-2"
148
+ import nodeWrap from "./workflow/nodeWrap"
149
+ import RsxzFieldCollection from "./service/RsxzFieldCollection"
150
+ import { formatDate } from "@/filters"
151
+
152
+
153
+ export default {
154
+ computed: {
155
+ JsonList() {
156
+ let list = {};
157
+ RsxzFieldCollection.forEach(item => {
158
+ if (item.approvalType == this.$route.query.type) {
159
+ list = item.data
160
+ console.log(RsxzFieldCollection)
161
+ }
162
+ })
163
+ return list
164
+ },
165
+ ChildList() {
166
+ let list = {};
167
+ RsxzFieldCollection.forEach(item => {
168
+ if (item.approvalType == this.$route.query.type) {
169
+ console.log(item)
170
+ list = item.childTable
171
+ }
172
+ })
173
+ return list
174
+ },
175
+ user() {
176
+ return this.$store.state.user;
177
+ }
178
+ },
179
+ name: "Process",
180
+ components: {
181
+ OldProcess,
182
+ nodeWrap
183
+ },
184
+ props: {
185
+ // 路由地址
186
+ path: {
187
+ type: String,
188
+ default: () => {
189
+ return "/index"
190
+ }
191
+ },
192
+ // 类型数据
193
+ queryInfo: {
194
+ type: Object,
195
+ default: () => {
196
+ return {
197
+ name: "公告管理",
198
+ type: "notice"
199
+ }
200
+ }
201
+ },
202
+ // 用户信息
203
+ userInfo: {
204
+ type: Object,
205
+ default: () => {
206
+ return {
207
+ "companyNo": "202008267425615", // 公司no
208
+ "no": "2121212121" // 用户no
209
+ }
210
+ }
211
+ },
212
+ // formBuilder
213
+ formBuilder: {
214
+ type: Object,
215
+ default: () => {
216
+ return {
217
+ formDesId: ""
218
+ }
219
+ }
220
+ }
221
+ },
222
+ data() {
223
+ return {
224
+ notPrint: [],
225
+ JsonListAll: this.JsonList,
226
+ printId: "",
227
+ isPrintChildTable: true,
228
+ isPrintLog: true,
229
+ checked: true,
230
+ checkedfalse: false,
231
+ checkList: ["打印子表", "打印审批日志"],
232
+ activeName: "process",
233
+ isTried: false,
234
+ tipList: [],
235
+ tipVisible: false,
236
+ nowVal: 100,
237
+ processConfig: {},
238
+ nodeConfig: {},
239
+ workFlowDef: {},
240
+ flowPermission: [],
241
+ directorMaxLevel: 0,
242
+ dialogVisible: true,
243
+ tableId: "",
244
+ isFlg: true, // 是否开启审批
245
+ isOldData: false, // 是否为老数据
246
+ oldModal: false, // 老数据展示弹窗
247
+ type: null, // 项目类型,注意:暂时仅做提交后路由判断
248
+ processId: null, // 流程ID
249
+ approveRemake: "" // 问号说明
250
+ };
251
+ },
252
+ mounted() {},
253
+ created() {
254
+ // 获取审批流程数据
255
+ this.getProcessSet()
256
+ // 存储用户信息
257
+ localStorage.setItem("userInfo", JSON.stringify(this.userInfo))
258
+ localStorage.setItem("queryInfo", JSON.stringify(this.queryInfo))
259
+ // 设置类型
260
+ this.type = this.path == "/index" ? "customForm_" + this.formBuilder.formDesId : this.queryInfo.type;
261
+ this.getapproveRemake()
262
+
263
+ },
264
+ methods: {
265
+ handlecheckbox(num) {
266
+ if (num == "1") {
267
+ this.JsonListAll.forEach(item => {
268
+ item.isPrint = true;
269
+ item.notPrint = false;
270
+ })
271
+ } else {
272
+ this.JsonListAll.forEach(item => {
273
+ item.isPrint = false;
274
+ item.notPrint = true;
275
+ })
276
+ }
277
+ },
278
+ handlebutton(scope, value, num) {
279
+ if (num == "1") {
280
+ this.$set(this.JsonListAll[scope.$index], "notPrint", false)
281
+ this.$set(this.JsonListAll[scope.$index], "isPrint", true)
282
+ } else {
283
+ this.$set(this.JsonListAll[scope.$index], "isPrint", false)
284
+ this.$set(this.JsonListAll[scope.$index], "notPrint", true)
285
+ }
286
+ },
287
+ handleClick(tab, event) {
288
+ console.log(tab, event)
289
+ if (this.activeName == "Print") {
290
+ this.printId = "";
291
+ this.detailPrint()
292
+ }
293
+ },
294
+ // 初始化数据
295
+ initData(data) {
296
+ this.processConfig = data;
297
+ this.processConfig.processId = this.processId
298
+ this.nodeConfig = this.processConfig.nodeConfig; // 主体的流程
299
+ this.flowPermission = this.processConfig.flowPermission; // 发起人
300
+ this.directorMaxLevel = this.processConfig.directorMaxLevel; // 审批主管最大层级
301
+ // 审批名称
302
+ this.workFlowDef = {
303
+ "switchOn": !!parseInt(this.processConfig.switchOn),
304
+ "automaticPass": !!parseInt(this.processConfig.automaticPass)
305
+ }
306
+ },
307
+ // 获取审批流程数据
308
+ async getProcessSet() {
309
+ const param = { companyId: this.userInfo.companyNo, type: this.queryInfo.type };
310
+ const result = await api.queryProcessByType(param);
311
+ const { state, data } = result.data
312
+ if (state == "ok" && data) {
313
+ this.processId = data._id
314
+ const { content, rootNode } = data
315
+ // 判断流程是否为老数据
316
+ if (rootNode.isNewVersion) {
317
+ this.initData(JSON.parse(content))
318
+ } else {
319
+ // 处理老数据
320
+ this.isOldData = true // 展示老数据参考按钮
321
+ this.initData(this.handleOldProcess(content))
322
+ }
323
+ } else {
324
+ this.initData(JSON.parse(JSON.stringify(initData.data)))
325
+ }
326
+ },
327
+ // 处理兼容老数据
328
+ // 备注: 处理兼容的老数据仅仅限于不存在条件分支
329
+ handleOldProcess(content) {
330
+ const { nodeList, companyId, creator, describe, processName, switchOn, type, version } = JSON.parse(content);
331
+ const node = nodeList.filter(value => !["start", "end"].includes(value.item.type));
332
+ // 拼接基础数据
333
+ const param = {
334
+ "companyId": companyId,
335
+ "creator": creator,
336
+ "describe": describe,
337
+ "nodeConfig": {
338
+ "pkId": "sid-start-node",
339
+ "nodeName": "发起人",
340
+ "type": 0,
341
+ "priority": "",
342
+ "setType": "",
343
+ "directorLevel": "",
344
+ "examineMode": "",
345
+ "authType": "",
346
+ "ccSelfSelectFlag": "",
347
+ "conditionList": [],
348
+ "nodeUserList": [],
349
+ "childNode": null,
350
+ "conditionNodes": []
351
+ },
352
+ "processId": this.processId,
353
+ "processName": processName,
354
+ "switchOn": switchOn,
355
+ "automaticPass": 0,
356
+ "type": type,
357
+ "version": version
358
+ };
359
+
360
+ // 判断是否存在条件分支
361
+ const isHasCondition = node.filter(value => value.item.type == "addCondition")
362
+ if (!isHasCondition.length) {
363
+
364
+ // 递归处理数据
365
+ const map = {};
366
+ const val = [];
367
+
368
+ node.map((value, index) => {
369
+ node[index].item = this.createTypeData(value.item)
370
+ delete node[index].lists;
371
+ delete node[index].level;
372
+ });
373
+
374
+ node.forEach(value => {
375
+ map[value.item.id] = value.item;
376
+ });
377
+
378
+ node.forEach(value => {
379
+ const parent = map[parseInt(value.item.from)];
380
+ if (parent) {
381
+ (parent.children || (parent.children = [])).push(value.item);
382
+ } else {
383
+ val.push(value.item);
384
+ }
385
+ });
386
+
387
+ this.flatChildNode(val[0]);
388
+ param.nodeConfig.childNode = val[0] // 赋予数据
389
+
390
+ }
391
+
392
+ return param
393
+ },
394
+ // 老数据处理无用字段
395
+ flatChildNode(item) {
396
+ item.childNode = item.children && item.children[0] ? item.children[0] : null;
397
+ if (item.children && item.children[0]) {
398
+ item.children[0].children ? this.flatChildNode(item.children[0]) : null;
399
+ delete item.id;
400
+ delete item.from;
401
+ delete item.children;
402
+ delete item.childNode.id;
403
+ delete item.childNode.from;
404
+ }
405
+ },
406
+ // 生成对应数据
407
+ createTypeData(item) {
408
+ let childNode = {};
409
+ if (item.type == "userTask") {
410
+ childNode = {
411
+ "nodeName": "审批人", // 节点名称
412
+ "type": 1, // 0 发起人 1审批 2抄送 3条件 4路由
413
+ "priority": 1, // 条件优先级
414
+ "setType": (item.directorType && item.directorType.type) || 1, // 审批人设置 1指定成员 2主管
415
+ "directorLevel": item.approverType == "3" ? item.approvers[0].directorId : "", // 审批终点 最高层主管数
416
+ "examineMode": item.approverType, // 多人审批时采用的审批方式 3依次审批 1会签 2或签
417
+ "authType": (item.directorType && item.directorType.type) || "1", // 审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员
418
+ "ccSelfSelectFlag": 1,
419
+ "conditionList": [], // 当审批单同时满足以下条件时进入此流程
420
+ "nodeUserList": item.approvers || [], // 操作人
421
+ "childNode": null,
422
+ "conditionNodes": [], // 条件节点
423
+ "error": false, // 错误判断
424
+ // 拼接节点顺序 ====
425
+ "id": item.id,
426
+ "from": item.from
427
+ };
428
+ } else if (item.type == "ccTask") {
429
+ childNode = {
430
+ "ccSelfSelectFlag": 1,
431
+ "error": false,
432
+ "type": 2,
433
+ "nodeName": "抄送人",
434
+ "nodeUserList": item.notifiers,
435
+ // 拼接节点顺序 ====
436
+ "id": item.id,
437
+ "from": item.from
438
+ };
439
+ }
440
+ return childNode;
441
+ },
442
+ // 老数据展示
443
+ // 未复杂流程不能还原的数据数据参考
444
+ showOldModal() {
445
+ this.oldModal = !this.oldModal
446
+ },
447
+ toReturn() {},
448
+ reErr(data) {
449
+ if (data.childNode) {
450
+ if (data.childNode.type == 1) { // 审批人
451
+ if (data.childNode.error) {
452
+ this.tipList.push({ name: data.childNode.nodeName, type: "审批人" })
453
+ }
454
+ this.reErr(data.childNode)
455
+ } else if (data.childNode.type == 2) {
456
+ if (data.childNode.error) {
457
+ this.tipList.push({ name: data.childNode.nodeName, type: "抄送人" })
458
+ }
459
+ this.reErr(data.childNode)
460
+ } else if (data.childNode.type == 3) {
461
+ this.reErr(data.childNode.childNode)
462
+ } else if (data.childNode.type == 4) {
463
+ this.reErr(data.childNode)
464
+ for (var i = 0; i < data.childNode.conditionNodes.length; i++) {
465
+ if (data.childNode.conditionNodes[i].error || !data.childNode.conditionNodes[i].conditionList.length) {
466
+ this.tipList.push({ name: data.childNode.conditionNodes[i].nodeName, type: "条件" })
467
+ }
468
+ this.reErr(data.childNode.conditionNodes[i])
469
+ }
470
+ }
471
+ } else {
472
+ data.childNode = null
473
+ }
474
+ },
475
+ // 保存审批设置
476
+ async saveSet() {
477
+ console.log(this.activeName)
478
+ if (this.activeName == "process") {
479
+ this.isTried = true;
480
+ this.tipList = [];
481
+ this.reErr(this.nodeConfig);
482
+ if (this.tipList.length != 0) {
483
+ this.tipVisible = true;
484
+ return;
485
+ }
486
+ this.processConfig.flowPermission = this.flowPermission
487
+
488
+ // 根据审批状态重组数据
489
+ this.processConfig = {
490
+ ...this.processConfig,
491
+ "switchOn": this.workFlowDef.switchOn ? 1 : 0, // 审批状态
492
+ "automaticPass": this.workFlowDef.automaticPass ? 1 : 0, // 重复审批人问题
493
+ "creator": this.userInfo.no, // 用户no this.$store.state.user.no
494
+ "companyId": this.userInfo.companyNo, // 公司id this.$store.state.user.companyNo
495
+ "type": this.type, // 流程类型 this.$route.query.type 或者表单类型
496
+ "processName": this.queryInfo.name, // 流程名称 ""this.$route.query.name
497
+ "describe": this.queryInfo.name, // 流程描述 this.$route.query.name
498
+ "menuId": this.formBuilder.menuId,
499
+ "menuName": this.formBuilder.name || ""
500
+ }
501
+
502
+
503
+ // 保存数据
504
+ let res
505
+ // 判断是否存在流程ID
506
+ if (this.processConfig.processId) {
507
+ res = await api.newUpdateProcess(this.processConfig);
508
+ } else {
509
+ res = await api.newSaveProcess(this.processConfig);
510
+ }
511
+
512
+ if (res.data.state == "ok") {
513
+ this.$message.success({ message: this.processConfig.processId ? "编辑成功" : "保存成功", duration: 1500 });
514
+ if (this.type.indexOf("customForm_") == -1) {
515
+ this.$removeTag1(this.$route);
516
+ this.$router.go(-1);
517
+ }
518
+ } else {
519
+ this.isTried = false;
520
+ this.$message.error({ message: res.data.msg ? res.data.msg : "保存失败", duration: 1500 });
521
+ }
522
+ } else {
523
+ if (this.printId == "") {
524
+ const obj = {
525
+ companyNo: this.user.companyNo,
526
+ createUserNo: this.user.no,
527
+ userNo: this.user.no,
528
+ isPrintChildTable: this.isPrintChildTable, // 是否打印子表
529
+ isPrintLog: this.isPrintLog, // 是否打印审批日志
530
+ printChildTableDetail: this.isPrintChildTable ? this.ChildList : [], // 子表详情
531
+ // 打印设置
532
+ printContents: this.JsonList,
533
+ printId: this.printId, // 主键,修改时需要
534
+ type: this.$route.query.type // 类型
535
+ }
536
+ const res = await apiPrint.savePrint(obj);
537
+ console.log(res)
538
+ if (res.data.code == 200) {
539
+ this.$message.success(res.data.msg)
540
+ this.activeName = "process"
541
+ }
542
+ } else {
543
+ const obj = {
544
+ companyNo: this.user.companyNo,
545
+ createUserNo: this.user.no,
546
+ userNo: this.user.no,
547
+ isPrintChildTable: this.isPrintChildTable, // 是否打印子表
548
+ isPrintLog: this.isPrintLog, // 是否打印审批日志
549
+ printChildTableDetail: this.isPrintChildTable ? this.ChildList : [], // 子表详情
550
+ // 打印设置
551
+ printContents: this.JsonListAll,
552
+ printId: this.printId, // 主键,修改时需要
553
+ type: this.$route.query.type // 类型
554
+ }
555
+ const res = await apiPrint.updatePrint(obj);
556
+ if (res.data.code == 200) {
557
+ this.$message.success(res.data.msg)
558
+ this.activeName = "process"
559
+ }
560
+ }
561
+ }
562
+ },
563
+ async detailPrint() {
564
+ const obj = {
565
+ companyNo: this.user.companyNo,
566
+ type: this.$route.query.type
567
+ }
568
+ const res = await apiPrint.detailPrint(obj)
569
+ if (res.data.data) {
570
+ console.log(111)
571
+ this.printId = res.data.data.printId
572
+ this.isPrintChildTable = res.data.data.isPrintChildTable;
573
+ this.isPrintLog = res.data.data.isPrintLog;
574
+ // this.JsonListAll = res.data.data.printContents;
575
+ const printList = res.data.data.printContents
576
+ this.notPrint = printList.filter((item, index) => {
577
+ return !item.isPrint
578
+ })
579
+ this.JsonList.forEach((item, index) => {
580
+ this.notPrint.forEach(val => {
581
+ if (item.key == val.key) {
582
+ this.JsonList[index] = val
583
+ }
584
+ })
585
+ })
586
+ this.JsonListAll = this.JsonList
587
+ } else {
588
+ console.log(222)
589
+ this.JsonListAll = this.JsonList
590
+ console.log(this.JsonListAll)
591
+ }
592
+ },
593
+ // 取消审批设置
594
+ cancel() {
595
+ this.$confirm("有修改的内容未保存,确认离开吗?", "提示", {
596
+ confirmButtonText: "确定",
597
+ cancelButtonText: "取消",
598
+ type: "warning"
599
+ })
600
+ .then(() => {
601
+ this.$removeTag1(this.$route);
602
+ this.$router.go(-1);
603
+ })
604
+ .catch(() => {});
605
+ },
606
+ // 流程图缩放
607
+ zoomSize(type) {
608
+ if (type == 1) {
609
+ if (this.nowVal == 50) {
610
+ return;
611
+ }
612
+ this.nowVal -= 10;
613
+ } else {
614
+ if (this.nowVal == 300) {
615
+ return;
616
+ }
617
+ this.nowVal += 10;
618
+ }
619
+ },
620
+ //
621
+ async getapproveRemake() {
622
+ // let params = {type:this.type}
623
+ if (!this.type) return
624
+ // console.log('params', params)
625
+ try {
626
+ const { data } = await apiPrint.getapproveRemake(this.type)
627
+ this.approveRemake = data.result
628
+ } catch (error) {
629
+
630
+ }
631
+ }
632
+ }
633
+ };
634
+ </script>
635
+ <style lang="scss" scoped>
636
+ @import "../../styles/workflow/workflow.css";
637
+ .tableClass{
638
+ // margin: auto;
639
+ // width: 37.1%;
640
+ // padding: 20px;
641
+ float: left;
642
+ position: relative;left: 50%;
643
+ padding:0;
644
+ .divCalss{
645
+ float: left;
646
+ position: relative;left:-50%;
647
+ }
648
+ }
649
+ .el-table /deep/.printClass .cell .el-checkbox__inner{
650
+ }
651
+ .el-table /deep/ .printClass .cell::before{
652
+ content: '打印';
653
+ position: absolute;
654
+ right:15px;
655
+ }
656
+ .approveRemake{
657
+ border: none;
658
+ padding: 5px;
659
+ font-size: 16px;
660
+ vertical-align: middle;
661
+ }
662
+ </style>