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,1296 +1,1296 @@
1
- <!-- /**
2
- * 作用于认证管理
3
- * 采购商认证表单
4
- * @authors zzt
5
- * @date 2019-02-19
6
- * @version 1.0.0
7
- */ -->
8
- <template>
9
- <div>
10
- <template v-if="!hasSubmit">
11
- <div class="buyer-form-box">
12
- <div class="tc-50"></div>
13
- <div class="tc-50"></div>
14
- <!-- <Title2 title="基本信息"></Title2> -->
15
- <el-form ref="form" label-width="145px" :model="form" :rules="rules">
16
- <el-form-item label="营业执照图片 :" prop="license">
17
- <!-- <Uolpad @setMess="setMess" :imgUrl="imgUrl" :showImg="showImg"></Uolpad> -->
18
- </el-form-item>
19
-
20
- <el-form-item label="企业名称 :" prop="name">
21
- <el-input
22
- placeholder="请填写50个字以内的企业名称"
23
- @input="oninput('name',50)"
24
- v-model="form.name"
25
- :disabled="disabled || mainDisabled"
26
- ></el-input>
27
- </el-form-item>
28
-
29
- <el-form-item label="统一社会信用代码 :" prop="creditCode">
30
- <el-input
31
- placeholder="请填写18位或15位信用代码"
32
- @input="oninput('creditCode',18)"
33
- maxlength="18"
34
- v-model="form.creditCode"
35
- :disabled="disabled || mainDisabled"
36
- ></el-input>
37
- </el-form-item>
38
-
39
- <el-form-item label="企业类型 :" prop="companyType">
40
- <el-select
41
- v-model="form.companyType"
42
- :disabled="disabled || mainDisabled"
43
- placeholder="请选择企业类型"
44
- >
45
- <el-option
46
- v-for="(item,index) in companyOptions"
47
- :key="index"
48
- :label="item.label"
49
- :value="item.value"
50
- ></el-option>
51
- </el-select>
52
- </el-form-item>
53
-
54
- <el-form-item label="法定代表人 :" prop="legalRepresentative">
55
- <el-input
56
- placeholder="请填写15个字以内的法定代表人姓名"
57
- @input="oninput('legalRepresentative',15)"
58
- v-model="form.legalRepresentative"
59
- :disabled="disabled || mainDisabled"
60
- ></el-input>
61
- </el-form-item>
62
- <el-form-item label="企业经营类型 :" prop="serviceType">
63
- <el-select
64
- v-model="form.serviceType"
65
- multiple
66
- @change="changeTypeService(form.serviceType)"
67
- placeholder="请选企业经营类型"
68
- >
69
- <el-option
70
- v-for="(item,index) in serviceType"
71
- :key="index"
72
- :label="item.name"
73
- :value="item.code"
74
- ></el-option>
75
- </el-select>
76
- </el-form-item>
77
- <el-form-item label="成立时间 :" prop="establishmentDate">
78
- <el-date-picker
79
- @change="changeTime"
80
- v-model="form.establishmentDate"
81
- type="date"
82
- placeholder="请选择企业成立日期"
83
- ></el-date-picker>
84
- </el-form-item>
85
- <el-form-item label="营业执照有效期 :" prop="businessTerm">
86
- <el-date-picker
87
- @change="changeBusinessTerm"
88
- v-model="form.businessTerm"
89
- type="date"
90
- placeholder="请选择营业执照有效期"
91
- ></el-date-picker>
92
- <el-checkbox v-model="isLongDate" @change="changeChecked" style="margin-left: 15px">长期</el-checkbox>
93
- </el-form-item>
94
- <el-form-item label="注册资本 :" prop="registeredCapital">
95
- <el-input
96
- placeholder="请填写企业注册资本"
97
- oninput="if(value.length>40)value=value.slice(0,40)"
98
- class="inputWidth300"
99
- v-model="form.registeredCapital"
100
- ></el-input>
101
- </el-form-item>
102
-
103
- <el-form-item label="企业注册地址 :" prop="address">
104
- <div class="address-select">
105
- <div>
106
- <el-select
107
- :disabled="disabled || mainDisabled"
108
- v-model="form.provinceNo"
109
- placeholder="省份"
110
- @change="changeProvinceNo"
111
- >
112
- <el-option
113
- v-for="item in provinceNoOptions"
114
- :key="item.value"
115
- :label="item.label"
116
- :value="item.value"
117
- ></el-option>
118
- </el-select>
119
- </div>
120
- <div>
121
- <el-select
122
- :disabled="disabled || mainDisabled"
123
- v-model="form.cityNo"
124
- placeholder="地级市"
125
- @change="changeCityNo"
126
- >
127
- <el-option
128
- v-for="item in cityNoOptions"
129
- :key="item.value"
130
- :label="item.label"
131
- :value="item.value"
132
- ></el-option>
133
- </el-select>
134
- </div>
135
- <div>
136
- <el-select
137
- :disabled="disabled || mainDisabled"
138
- v-model="form.districtNo"
139
- placeholder="区/县"
140
- >
141
- <el-option
142
- v-for="item in districtNoOptions"
143
- :key="item.value"
144
- :label="item.label"
145
- :value="item.value"
146
- ></el-option>
147
- </el-select>
148
- </div>
149
- </div>
150
- <div class="tc-10"></div>
151
- <div class="tc-5"></div>
152
- <el-input
153
- placeholder="请填写企业所在地详细地址"
154
- @input="oninput('address',100)"
155
- v-model="form.address"
156
- :disabled="disabled || mainDisabled"
157
- ></el-input>
158
- </el-form-item>
159
- </el-form>
160
- <div class="set-admin">设置管理员</div>
161
- <el-form ref="adminForms" label-width="145px" :model="adminForm" :rules="adminFormRules">
162
- <el-form-item label="手机号码 :" prop="tel">
163
- <el-input
164
- autocomplete="off"
165
- :maxlength="11"
166
- v-model.trim="adminForm.tel"
167
- :disabled="!isSign"
168
- placeholder="请输入11位手机号"
169
- @input="verifyTel(adminForm.tel)"
170
- ></el-input>
171
- </el-form-item>
172
-
173
- <!-- <template v-if="telCanSign"> -->
174
- <el-form-item v-if="adminFormConfig.showCode" label="验证码 :" prop="code">
175
- <div class="sign-inner-code login-input">
176
- <div class="inner-code-text">
177
- <el-input
178
- autocomplete="off"
179
- v-model="adminForm.code"
180
- placeholder="请输入短信验证码"
181
- oninput="if(value.length>6)value=value.slice(0,6)"
182
- ></el-input>
183
- </div>
184
- <div class="inner-code-button inner-code-button-border" v-if="!this.loading">
185
- <el-button v-if="isClickButton" @click="getCode" :disabled="buttonDisabled">获取短信验证码</el-button>
186
- <el-button v-else :disabled="buttonDisabled">获取短信验证码</el-button>
187
- </div>
188
- <div class="inner-code-button" v-else>
189
- <el-button type="primary" :loading="loading" v-show="this.loading">{{time}}s</el-button>
190
- </div>
191
- </div>
192
- </el-form-item>
193
- <el-form-item v-if="adminFormConfig.showName" label="姓名 :" prop="realName">
194
- <el-input
195
- :disabled="!isSign && $store.state.user.personalAuth == 1"
196
- placeholder="请填写真实姓名"
197
- @input="oninputs('realName',15)"
198
- v-model="adminForm.realName"
199
- ></el-input>
200
- </el-form-item>
201
- <el-form-item v-if="adminFormConfig.showIdCard" label="身份证号码 :" prop="identityCard">
202
- <el-input
203
- :disabled="!isSign && $store.state.user.personalAuth == 1"
204
- @input="oninputs('identityCard',18)"
205
- placeholder="请填写18位身份证号码"
206
- maxlength="18"
207
- v-model="adminForm.identityCard"
208
- ></el-input>
209
- </el-form-item>
210
- <el-form-item v-if="adminFormConfig.showPassWord" label="登录密码 :" prop="password">
211
- <div class="sign-password">
212
- <el-input
213
- v-if="showEye"
214
- autocomplete="new-password"
215
- :type="typePassword"
216
- @focus="onfocus"
217
- onpaste="return false"
218
- oncontextmenu="return false"
219
- oncopy="return false"
220
- oncut="return false"
221
- v-model="adminForm.password"
222
- placeholder="请输入6-18位由数字加字母的密码"
223
- oninput="if(value.length>18)value=value.slice(0,18)"
224
- ></el-input>
225
-
226
- <el-input
227
- v-if="!showEye"
228
- autocomplete="off"
229
- type="text"
230
- onpaste="return false"
231
- oncontextmenu="return false"
232
- oncopy="return false"
233
- oncut="return false"
234
- v-model="adminForm.password"
235
- placeholder="请输入6-18位由数字加字母的密码"
236
- oninput="if(value.length>18)value=value.slice(0,18)"
237
- ></el-input>
238
- <!-- <el-input placeholder="请输入6-18位由数字加字母的密码" maxlength="18" v-model="adminForm.name"></el-input> -->
239
- <div class="bg-eye" @click="showEye = !showEye">
240
- <img v-if="showEye" src="@/assets/login/close-eye.png" alt />
241
- <img v-if="!showEye" src="@/assets/login/eye.png" alt />
242
- </div>
243
- </div>
244
- </el-form-item>
245
- <!-- </template> -->
246
- </el-form>
247
- <!-- <div class="tc-50"></div> -->
248
- <div class="protocolbox">
249
- <el-checkbox v-model="checked">
250
- <span>
251
- 您确认阅读并接受
252
- <!-- <a @click="readProtocol">《施工邦企业认证协议》</a> -->
253
- <a @click="readProtocol">《企管帮企业认证协议》</a>
254
- </span>
255
- </el-checkbox>
256
- </div>
257
- <div v-if="isSign" class="sign-form-button">
258
- <el-button :loading="btnLoading" type="primary" :disabled="disabled" @click="comsign">注册</el-button>
259
- </div>
260
- <div v-else class="buyer-form-button">
261
- <el-button :disabled="disabled" @click="reset">取消认证</el-button>
262
- <el-button
263
- type="primary"
264
- :loading="btnLoading"
265
- :disabled="disabled"
266
- @click="comsign"
267
- >{{submitType}}</el-button>
268
- </div>
269
- <div class="tc-100"></div>
270
- <el-dialog title="施工邦供应商认证协议" :visible.sync="dialogVisible" width="50%">
271
- <div style="text-index:2em; height:500px; overflow-y: scroll;">
272
- <br />本协议是您与施工邦网站(简称"本站",网址:http://www.shigongbang.com)所有者中钧科技有限公司(以下简称为"施工邦")之间就施工邦网站服务等相关事宜所订立的契约,请您仔细阅读本协议,您点击"同意"按钮后,本协议即构成对双方有约束力的法律文件。
273
- <br />
274
- <strong>第一条 本站服务条款的确认和接纳</strong>
275
- <br />1.1当您使用施工邦提供的会员服务时,您知晓并且同意此《施工邦供应商认证协议》。此协议所述服务仅在施工邦网站内有效。施工邦网站是指http://www.shigongbang.com及其所属网页。此协议在必要时将进行更新,每次改动都会在施工邦上即刻发布,并立即生效。
276
- <br />1.2如果您拒绝接受修订后的协议,您将无法继续使用施工邦提供的供应商会员服务;若您继续使用施工邦提供的供应商会员服务,则表明您接受新的协议。
277
- <br />
278
- <strong>第二条 服务权限</strong>
279
-
280
- <br />2.1施工邦有权判定您的行为是否符合《施工邦供应商认证协议》的要求,如果您违背了《施工邦供应商认证协议》的规定,施工邦有权决定取消您的会员资格与服务或者采取其他施工邦认为合适的执行措施。
281
- <br />
282
- <strong>第三条 用户认证</strong>
283
- <br />3.1您必须配合完成施工邦的认证服务,认证服务为文件审核。施工邦有权根据您及网站自身运营需要确定对您的资质进行审核。
284
- <br />3.2审核项目包括公司基本信息、贸易、供货、生产能力和质量管理、行业信息、产品设计开发能力、体系和产品认证、财务信用等内容。
285
- <br />3.3通过认证服务后您可获得网站产品的购买和发布的权限。
286
- <br />3.4通过施工邦认证服务且同时符合以下标准的会员,即为施工邦认证供应商:
287
- <br />3.4.1中国大陆及香港注册的实体企业;
288
- <br />3.4.2符合生产能力及贸易经验的要求(不同行业及类型有针对性要求);
289
- <br />3.4.3符合施工邦诚信经营要求。
290
- <br />
291
- <strong>第四条 质量要求</strong>
292
-
293
- <br />4.1双方本着真诚合作、共同发展的目的,为了保证供货商向施工邦提供高质量的产品和服务,满足施工邦的质量要求,避免因产品质量或服务问题造成损失,确保产品原材料及外协加工产品质量达到国家要求标准,保障施工邦平台运营的顺利进行,供应商需要承担的责任如下:
294
- <br />4.1.1供应商应对自己原材料进行严格的进货检验,并提供产品质量检验报告,以确保提供给施工邦稳定、合格的产品。
295
- <br />4.1.2供货商应按照双方共用确认的品质要求交货,若因供应方责任导致品质异常而使施工邦遭到会员索赔的,供应商应全额赔偿损失。
296
- <br />4.1.3供货方按照施工邦需求,提供给施工邦所要求的品牌、等级、规格的产品,供应商不得以其他品牌、等级、规格的产品冒充甲方所需要的材料,出现此类情况,施工邦有权解除合作协议。
297
- <br />4.1.4施工邦在商品检验中,发现不合格产品,需对供货商开具《供应商质量问题通报》,供货商需在两日内对《供应商质量问题通报》中质量问题的形成原因、纠正预防措施、措施实施时间等内容,以书面形式进行回复。对于施工邦退货批次,供货商还需向施工邦提供退货批次的处理方式和相关质量记录。
298
- <br />
299
- <strong>第五条 会员的权利和义务</strong>
300
-
301
- <br />5.1您在使用施工邦提供的相应服务时必须遵守中国有关法律法规的规定,不得利用施工邦进行任何非法活动;遵守所有与使用施工邦有关的协议、规定、程序和惯例。
302
- <br />5.2您保证提供的公司名称、联系方式、相关资质文件均是真实有效的。
303
- <br />5.3通过本账号在施工邦平台上实施的相关行为(如信息修改,下单,投标),均视为您公司的行为,并由您公司承担相关责任义务。
304
- <br />5.4您如因违反此协议规定的条款给施工邦造成损失,须承担相应的赔偿。
305
- <br />5.5如您初次加入会员,您应在会员服务开通前完成认证服务。
306
- <br />5.6认证服务是以您提供的材料为基础而进行的。您须保证提供的文件、材料、信息或样品的真实、完整、有效,不存在任何虚假或误导信息、行为。否则,施工邦有权立即中止认证服务直至终止所有会员服务,由此造成您其他相关服务中断的,施工邦不承担任何责任。
307
- <br />5.7您不得对认证协议进行任何内容上的篡改,若因您的原因给认证协议造成的任何影响,须免除施工邦的一切责任,并对施工邦造成的损失(包括但不限于律师费)承担赔偿责任。
308
- <br />
309
- <strong>第六条 施工邦的权利和义务</strong>
310
-
311
- <br />6.1对于因不可抗力因素造成的服务中断或其他缺陷(包括自然灾害、社会事件以及因网站所具有的特殊性质而产生的黑客攻击、电信部门技术调整导致的影响、政府管制而造成的暂时性关闭在内的任何影响网络正常运营的因素),施工邦不承担任何责任,但将尽力减少对您造成的损失和影响。
312
- <br />6.2如因施工邦原因,造成您服务的不正常中断,您有权向施工邦申请会员服务。但施工邦不承担由此致使您蒙受的其他方面的连带损失。
313
- <br />6.3施工邦有权决定删除您发布的任何违反中国法律、法规、《施工邦供应商认证协议》的内容,或其他施工邦认为不可接受的内容。情节严重者,施工邦有权取消其会员资格。
314
- <br />
315
- <strong>第七条 服务中止与终止</strong>
316
-
317
- <br />7.1施工邦有权在下列情况下,中止或终止您的部分或全部服务:
318
- <br />7.1.1您违反《施工邦供应商认证协议》及本协议的任何条款;
319
- <br />7.1.2您提出书面申请,要求中止或终止部分或全部服务;
320
- <br />7.1.3可能造成服务中止或终止的其他情形。
321
- <br />
322
- <strong>第八条 责任声明</strong>
323
-
324
- <br />8.1施工邦对其网站上提供的信息之有效性、真实性、准确性、稳定性、完整性和及时性等均不作承诺和保证。您理解并接受任何信息资料的传输取决于您自己并由您承担系统受损或资料丢失的所有风险和责任。
325
- <br />
326
- <strong>第九条 争议的解决</strong>
327
-
328
- <br />本协议的订立、执行和解释及争议的解决均应适用在中华人民共和国大陆地区适用之有效法律(但不包括其冲突法规则)。 如发生本协议与适用之法律相抵触时,则这些条款将完全按法律规定重新解释,而其它有效条款继续有效。 如缔约方就本协议内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向有管辖权的中华人民共和国大陆地区法院提起诉讼。
329
- <br />
330
- <strong>第十条 版权声明</strong>
331
-
332
- <br />10.1施工邦的所有内容版权属中钧科技有限公司所有。
333
- <br />10.2严禁以未经中钧科技有限公司书面许可的任何形式的部分或全部拷贝。
334
- </div>
335
- <!-- <span slot="footer" class="dialog-footer">
336
- <el-button @click="dialogVisible = false">取 消</el-button>
337
- <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
338
- </span>-->
339
- </el-dialog>
340
- </div>
341
- </template>
342
- <template v-else>
343
- <div class="buyer-form-box">
344
- <div class="tc-50"></div>
345
- <div class="tc-50"></div>
346
- <div class="confirm-text">
347
- <div>
348
- <img src="@/assets/login/login-pass.png" alt />
349
- </div>
350
- <div>认证提交成功!</div>
351
- <div>您的认证申请已提交成功,平台将在一个工作日内完成审核,请耐心等待!</div>
352
- <div>
353
- <el-button @click="$removeTag('/userenticationManagement')" type="primary">知道了</el-button>
354
- </div>
355
- </div>
356
- </div>
357
- </template>
358
- </div>
359
- </template>
360
-
361
- <script>
362
- import verify from "@/fnc/verify.js";
363
- import apiAuthentication from "@/api/apiAuthentication.js";
364
- import moment from "moment";
365
-
366
- import apiAddress from "@/api/apiAddress.js";
367
- import { isvalidIdCard, isvalidPhone } from "@/components/form/validate";
368
- import apiChangeTel from "@/api/apiChangeTel";
369
- import { getCode, sign } from "@/api/apiSign.js";
370
- import localStorage from "@/storage/localStorage";
371
- import { Num } from "@/components/form/num.js";
372
- import { validatePasswordStrength } from "@/utils/passwordStrength";
373
- import link from "@/public/link";
374
-
375
- export default {
376
- name: "BuyerForm",
377
- mixins: [],
378
- extends: {},
379
- props: {
380
- dataObject: {
381
- type: Object
382
- },
383
- isSign: {
384
- // 当前是否为注册模块
385
- default: false,
386
- type: Boolean
387
- }
388
- },
389
- data() {
390
- var checkBusinessTerm = (rule, value, callback) => {
391
- if (this.isLongDate) {
392
- callback();
393
- } else {
394
- if (!value) {
395
- callback(new Error("请选择有效期"));
396
- } else {
397
- const startTime = moment(this.form.establishmentDate).valueOf();
398
- const endTime = moment(new Date(moment(value).format())).valueOf();
399
- if (endTime <= startTime) {
400
- callback(new Error("有效期不能小于或等于成立时间"));
401
- } else {
402
- callback();
403
- }
404
- }
405
- }
406
- };
407
- var checkEstablishmentDate = (rule, value, callback) => {
408
- if (!value) {
409
- callback(new Error("请选择成立时间"));
410
- } else {
411
- const startTime = moment(value).valueOf();
412
- const endTime = moment(
413
- new Date(moment(this.form.businessTerm).format())
414
- ).valueOf();
415
- if (endTime <= startTime) {
416
- callback(new Error("成立时间不能大于或等于有效期"));
417
- } else {
418
- callback();
419
- }
420
- }
421
- };
422
- var validIdCard = (rule, value, callback) => {
423
- // 身份证
424
- if (!value) {
425
- callback(new Error("请输入身份证号码"));
426
- } else if (value.length < 18) {
427
- callback(new Error("身份证号码长度应为18个数字"));
428
- } else if (!isvalidIdCard(value)) {
429
- callback(new Error("请输入真实有效的身份证证件号"));
430
- } else {
431
- callback();
432
- }
433
- };
434
- var validPhone = (rule, value, callback) => {
435
- if (!value) {
436
- callback(new Error("请输入电话号码"));
437
- } else if (!isvalidPhone(value)) {
438
- callback(new Error("请输入正确的手机号"));
439
- } else {
440
- callback();
441
- }
442
- };
443
- var validCode = (rule, value, callback) => {
444
- // 验证码
445
- if (!value) {
446
- callback(new Error("请输入验证码"));
447
- } else if (!Num(value)) {
448
- callback(new Error("验证码输入有误"));
449
- } else if (!(value.length === 6)) {
450
- callback(new Error("验证码输入有误"));
451
- } else {
452
- callback();
453
- }
454
- };
455
- // 密码验证
456
- var validPassword = (rule, value, callback) => {
457
- const Pass = /^(?!\d+$)(?![a-zA-Z]+$)[\da-zA-Z]+$/;
458
- // /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/
459
- if (value === "") {
460
- callback(new Error("密码不能为空"));
461
- } else if (value.length < 6 || value.length > 18) {
462
- callback(new Error("密码须由6-18位字母和数字组成"));
463
- } else if (!Pass.test(value)) {
464
- callback(new Error("密码只能由数字与字母组成且必须包含数字和字母"));
465
- } else {
466
- callback();
467
- }
468
- };
469
- return {
470
- num: 0,
471
- dialogVisible: false,
472
- isLongDate: false,
473
- serviceType: [],
474
- submitType: "重新提交",
475
- checked: true,
476
- // submitType: '提交认证',
477
- // 地区选择使用
478
- provinceNoOptions: [], // 省
479
- cityNoOptions: [], // 市
480
- districtNoOptions: [], // 区
481
- companyOptions: [],
482
- mainDisabled: false,
483
- disabled: false,
484
- showImg: true,
485
- imgUrl: "",
486
- loading: false,
487
- isClickButton: true,
488
- btnDisabled: false,
489
- buttonDisabled: true,
490
- showEye: true,
491
- time: 60,
492
- typePassword: "text",
493
- rules: {
494
- license: { required: true, message: "请上传营业执照" },
495
- name: { required: true, trigger: "blur", validator: verify.validName }, // 企业名称
496
- creditCode: {
497
- required: true,
498
- trigger: "blur",
499
- validator: verify.validCredit
500
- }, // 统一社会信用代码
501
- companyType: {
502
- required: true,
503
- trigger: "change",
504
- // validator: verify.companyTypeFun,
505
- message: "请选择企业类型"
506
- }, // 企业类
507
- address: {
508
- required: true,
509
- trigger: "blur",
510
- validator: this.validAttr3
511
- }, // 企业地址
512
- legalRepresentative: {
513
- required: true,
514
- validator: verify.validAccountname,
515
- trigger: "blur"
516
- }, // 法定代表人
517
- serviceType: [
518
- { required: true, message: "请选择企业经营类型", trigger: "change" }
519
- ],
520
- establishmentDate: [
521
- {
522
- required: true,
523
- validator: checkEstablishmentDate,
524
- trigger: "change"
525
- }
526
- ],
527
- businessTerm: [
528
- { required: true, validator: checkBusinessTerm, trigger: "change" }
529
- ]
530
- // registeredCapital: [{ required: true, trigger: 'blur', validator: this.validRegisteredCapital }]
531
- },
532
- form: {
533
- license: "", // 营业执照
534
- name: "",
535
- creditCode: "",
536
- companyType: "",
537
- legalRepresentative: "",
538
- establishmentDate: null,
539
- businessTerm: "",
540
- registeredCapital: "",
541
- serviceType: [],
542
- address: "",
543
- // 省市区
544
- provinceNo: "",
545
- cityNo: "",
546
- districtNo: ""
547
- //
548
- // taxRate 税率
549
- },
550
- adminForm: {
551
- realName: "",
552
- identityCard: "",
553
- tel: "",
554
- code: "",
555
- password: ""
556
- },
557
- adminFormRules: {
558
- realName: {
559
- required: true,
560
- validator: verify.validAccountname,
561
- trigger: "blur"
562
- }, // 姓名
563
- identityCard: [
564
- { required: true, validator: validIdCard, trigger: "blur" }
565
- ], // 身份证
566
- tel: { required: true, validator: validPhone, trigger: "change" }, // 手机号码
567
- code: { required: false, validator: validCode, trigger: "blur" }, // 验证码
568
- password: [
569
- { required: true, validator: validPassword, trigger: "blur" }
570
- ]
571
- },
572
- identity: {},
573
- telCanSign: true,
574
- adminFormConfig: {
575
- showCode: true,
576
- showName: true,
577
- showIdCard: true,
578
- showPassWord: true
579
- },
580
- userNo: "",
581
- btnLoading: false,
582
- hasSubmit: false
583
- };
584
- },
585
- computed: {},
586
- components: {
587
- // Uolpad: () =>
588
- // import("@/views/AccountManagement/Authentication/components/Uolpad")
589
- },
590
- filter: {},
591
- watch: {},
592
- methods: {
593
- handleClose(done) {},
594
- // 手机号码验证 获取当前手机号码用户身份
595
- verifyTel(value) {
596
- // this.telCanSign = true;
597
- this.disabledBut();
598
- for (const item in this.adminFormConfig) {
599
- // 重置form配置
600
- this.$set(this.adminFormConfig, item, true);
601
- }
602
- for (const item in this.adminForm) {
603
- // 重置form表单
604
- if (item === "tel") continue;
605
- this.$set(this.adminForm, item, "");
606
- }
607
- this.$refs["adminForms"].validateField("tel", async errMsg => {
608
- try {
609
- if (!errMsg) {
610
- const res = await apiAuthentication.queryUserAuthByPhone(
611
- this.adminForm.tel
612
- );
613
- const data = res.data.data;
614
- if (res.data.code === 200) {
615
- const { type, no } = data;
616
- this.userNo = no;
617
- if (this.isSign) {
618
- if (Number(type) === 1) {
619
- this.telCanSign = true;
620
- } else {
621
- this.telCanSign = false;
622
- // this.$alert("该手机号码已注册,无法再次注册");
623
- }
624
- } else {
625
- for (const item in this.adminFormConfig) {
626
- // 重置form配置
627
- this.$set(this.adminFormConfig, item, false);
628
- }
629
- this.$set(this.adminFormConfig, "showName", true);
630
- this.$set(this.adminFormConfig, "showIdCard", true);
631
- if (this.$store.state.user.personalAuth == 1) {
632
- // 已经实名认证过
633
- this.telCanSign = true;
634
- // for (let item in this.adminFormConfig) {
635
- // // 重置form配置
636
- // this.$set(this.adminFormConfig, item, false);
637
- // }
638
- // this.$set(this.adminFormConfig, "showName", true);
639
- // this.$set(this.adminFormConfig, "showIdCard", true);
640
-
641
- this.$set(this.adminForm, "realName", data.realName);
642
- this.$set(this.adminForm, "identityCard", data.identityCard);
643
- } else {
644
- this.telCanSign = true;
645
- // this.$set(this.adminFormConfig, "showName", true);
646
- // this.$set(this.adminFormConfig, "showIdCard", true);
647
- }
648
- }
649
-
650
- // switch (Number(type)) {
651
- // case 0:
652
- // this.$alert("该手机号码已经进行过企业认证,无法再次认证");
653
- // break;
654
- // case 1:
655
- // this.telCanSign = true;
656
- // break;
657
- // case 2:
658
- // this.$alert("该手机号码已经进行过司机认证,无法再次认证");
659
- // break;
660
- // case 3: // 未实名认证
661
- // this.telCanSign = true;
662
- // this.$set(this.adminFormConfig, "showCode", false);
663
- // this.$set(this.adminFormConfig, "showPassWord", false);
664
- // break;
665
- // case 4:
666
- // this.telCanSign = true;
667
- // for (let item in this.adminFormConfig) {
668
- // // 重置form配置
669
- // this.$set(this.adminFormConfig, item, false);
670
- // }
671
- // this.$set(this.adminFormConfig, "showName", true);
672
- // this.$set(this.adminForm, "realName", data.realName);
673
-
674
- // break;
675
- // default:
676
- // break;
677
- // }
678
- }
679
- } else {
680
- }
681
- } catch (error) {}
682
- });
683
- // if (value.length > 11) value = value.slice(0, 11);
684
- // return value
685
- },
686
- onfocus() {
687
- this.typePassword = "password";
688
- },
689
- async getCode() {
690
- this.isClickButton = false;
691
- // this.sendSucc()
692
-
693
- const res = await getCode({ telPhone: this.adminForm.tel });
694
-
695
- if (res.data.success === "true" || res.data.success === true) {
696
- this.sendSucc();
697
- } else {
698
- this.agree = false;
699
- this.$message({
700
- message: res.data.msg,
701
- type: "warning",
702
- duration: 3000
703
- });
704
- }
705
- this.isClickButton = true;
706
- },
707
- sendSucc() {
708
- const that = this;
709
- that.loading = true;
710
- const time = new Date();
711
- localStorage.set("sendAdminPhone" + this.adminForm.tel, Number(time));
712
- localStorage.set("sendAdminPhone", Number(time));
713
- // this.isSend = true
714
- that.$_toast({ msg: "验证码已发送到您的手机,请查收!" });
715
-
716
- var timeOut = setInterval(() => {
717
- that.time = that.time - 1;
718
- if (that.time === 0) {
719
- clearInterval(timeOut);
720
- that.loading = false;
721
- that.time = 60;
722
- }
723
- }, 1000);
724
- },
725
- setPushTime() {
726
- const time = localStorage.read("sendAdminPhone");
727
-
728
- const timeInitialize = 60;
729
- const timeDifference = (Number(new Date()) - time) / 1000;
730
-
731
- const leadTime = timeInitialize - timeDifference.toFixed(0);
732
-
733
- if (leadTime > 0) {
734
- this.loading = true;
735
- const that = this;
736
- that.time = leadTime;
737
- var timeOut = setInterval(() => {
738
- that.time = that.time - 1;
739
- if (that.time === 0) {
740
- clearInterval(timeOut);
741
- that.loading = false;
742
- that.time = 60;
743
- }
744
- }, 1000);
745
- return;
746
- }
747
- localStorage.clear("sendAdminPhone");
748
- },
749
- disabledBut() {
750
- this.buttonDisabled = !isvalidPhone(this.adminForm.tel);
751
- },
752
- // 有效期选择处理
753
- changeBusinessTerm(val) {
754
- console.log(val);
755
- this.form.businessTerm = val;
756
- this.isLongDate = false;
757
- },
758
- changeChecked(val) {
759
- if (val) {
760
- this.isLongDate = val;
761
- this.form.businessTerm = "";
762
- }
763
- },
764
- reset() {
765
- this.$removeTag("/authenticationManagement");
766
- },
767
- changeTypeService(item) {},
768
- changeTime() {},
769
- validRegisteredCapital(rule, value, callback) {
770
- const num = Number(value);
771
- if (value === "") {
772
- callback(new Error("请填写注册资本"));
773
- } else if (value == 0 || value[0] == 0) {
774
- callback(new Error("请填写纯数字注册资本。"));
775
- } else if (isNaN(num)) {
776
- callback(new Error("请填写纯数字注册资本。"));
777
- } else {
778
- callback();
779
- }
780
- },
781
- async getServiceTypeList() {
782
- const list = await apiAuthentication.getServiceTypeList();
783
- this.serviceType = list.data.data;
784
- },
785
-
786
- readProtocol() {
787
- this.checked = true;
788
- this.dialogVisible = true;
789
- // this.$alert(
790
- // '<div><p class="protocolText">本协议是您与施工邦网站(简称"本站",网址:http://www.shigongbang.com)所有者中钧科技有限公司(以下简称为"施工邦")之间就施工邦网站服务等相关事宜所订立的契约,请您仔细阅读本协议,您点击"同意"按钮后,本协议即构成对双方有约束力的法律文件。</p><p class="protocolSmallTitle">第一条本站服务条款的确认和接纳</p><p class="protocolText">1.1当您使用施工邦提供的会员服务时,您知晓并且同意此《施工邦供应商认证协议》。此协议所述服务仅在施工邦网站内有效。施工邦网站是指http://www.shigongbang.com及其所属网页。此协议在必要时将进行更新,每次改动都会在施工邦上即刻发布,并立即生效。</p><p class="protocolText">1.2如果您拒绝接受修订后的协议,您将无法继续使用施工邦提供的供应商会员服务;若您继续使用施工邦提供的供应商会员服务,则表明您接受新的协议。</p><p class="protocolSmallTitle">第二条服务权限</p><p class="protocolText">2.1施工邦有权判定您的行为是否符合《施工邦供应商认证协议》的要求,如果您违背了《施工邦供应商认证协议》的规定,施工邦有权决定取消您的会员资格与服务或者采取其他施工邦认为合适的执行措施。</p><p class="protocolSmallTitle">第三条用户认证</p><p class="protocolText">3.1您必须配合完成施工邦的认证服务,认证服务为文件审核。施工邦有权根据您及网站自身运营需要确定对您的资质进行审核。3.2审核项目包括公司基本信息、贸易、供货、生产能力和质量管理、行业信息、产品设计开发能力、体系和产品认证、财务信用等内容。3.3通过认证服务后您可获得网站产品的购买和发布的权限。3.4通过施工邦认证服务且同时符合以下标准的会员,即为施工邦认证供应商:3.4.1中国大陆及香港注册的实体企业;3.4.2符合生产能力及贸易经验的要求(不同行业及类型有针对性要求);3.4.3符合施工邦诚信经营要求。</p><p class="protocolSmallTitle">第四条质量要求</p><p class="protocolText">4.1.1供应商应对自己原材料进行严格的进货检验,并提供产品质量检验报告,以确保提供给施工邦稳定、合格的产品。4.1.2供货商应按照双方共用确认的品质要求交货,若因供应方责任导致品质异常而使施工邦遭到客户索赔的,供应商应全额赔偿损失。4.1.3供货方按照施工邦需求,提供给施工邦所要求的品牌、等级、规格的产品,供应商不得以其他品牌、等级、规格的产品冒充甲方所需要的材料,出现此类情况,施工邦有权解除合作协议。4.1.4施工邦在商品检验中,发现不合格产品,需对供货商开具《供应商质量问题通报》,供货商需在两日内对《供应商质量问题通报》中质量问题的形成原因、纠正预防措施、措施实施时间等内容,以书面形式进行回复。对于施工邦退货批次,供货商还需向施工邦提供退货批次的处理方式和相关质量记录。</p><p class="protocolSmallTitle">第五条会员的权利和义务</p><p class="protocolText">5.1您在使用施工邦提供的相应服务时必须遵守中国有关法律法规的规定,不得利用施工邦进行任何非法活动;遵守所有与使用施工邦有关的协议、规定、程序和惯例。5.2您保证提供的公司名称、联系方式、相关资质文件均是真实有效的。5.3通过本账号在施工邦平台上实施的相关行为(如信息修改,下单,投标),均视为您公司的行为,并由您公司承担相关责任义务。5.4您如因违反此协议规定的条款给施工邦造成损失,须承担相应的赔偿。5.5如您初次加入会员,您应在会员服务开通前完成认证服务。5.6认证服务是以您提供的材料为基础而进行的。您须保证提供的文件、材料、信息或样品的真实、完整、有效,不存在任何虚假或误导信息、行为。否则,施工邦有权立即中止认证服务直至终止所有会员服务,由此造成您其他相关服务中断的,施工邦不承担任何责任。5.7您不得对认证协议进行任何内容上的篡改,若因您的原因给认证协议造成的任何影响,须免除施工邦的一切责任,并对施工邦造成的损失(包括但不限于律师费)承担赔偿责任。</p><p class="protocolSmallTitle">第六条施工邦的权利和义务</p><p class="protocolText">6.1对于因不可抗力因素造成的服务中断或其他缺陷(包括自然灾害、社会事件以及因网站所具有的特殊性质而产生的黑客攻击、电信部门技术调整导致的影响、政府管制而造成的暂时性关闭在内的任何影响网络正常运营的因素),施工邦不承担任何责任,但将尽力减少对您造成的损失和影响。6.2如因施工邦原因,造成您服务的不正常中断,您有权向施工邦申请会员服务。但施工邦不承担由此致使您蒙受的其他方面的连带损失。6.3施工邦有权决定删除您发布的任何违反中国法律、法规、《施工邦供应商认证协议》的内容,或其他施工邦认为不可接受的内容。情节严重者,施工邦有权取消其会员资格。</p><p class="protocolSmallTitle">第七条服务中止与终止</p><p class="protocolText">7.1施工邦有权在下列情况下,中止或终止您的部分或全部服务:7.1.1您违反《施工邦供应商认证协议》及本协议的任何条款;7.1.2您提出书面申请,要求中止或终止部分或全部服务;7.1.3可能造成服务中止或终止的其他情形。</p><p class="protocolSmallTitle">第八条责任声明</p><p class="protocolText">8.1施工邦对其网站上提供的信息之有效性、真实性、准确性、稳定性、完整性和及时性等均不作承诺和保证。您理解并接受任何信息资料的传输取决于您自己并由您承担系统受损或资料丢失的所有风险和责任。</p><p class="protocolSmallTitle">第九条争议的解决</p><p class="protocolText">本协议的订立、执行和解释及争议的解决均应适用在中华人民共和国大陆地区适用之有效法律(但不包括其冲突法规则)。如发生本协议与适用之法律相抵触时,则这些条款将完全按法律规定重新解释,而其它有效条款继续有效。如缔约方就本协议内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向有管辖权的中华人民共和国大陆地区法院提起诉讼。</p><p class="protocolSmallTitle">第十条版权声明</p><p class="protocolText">10.1施工邦的所有内容版权属中钧科技有限公司所有。10.2严禁以未经中钧科技有限公司书面许可的任何形式的部分或全部拷贝。</p></div>',
791
- // "施工邦供应商认证协议",
792
- // {
793
- // dangerouslyUseHTMLString: true,
794
- // customClass: "lookOver",
795
- // confirmButtonText: "同意协议"
796
- // }
797
- // ).then(() => {
798
- // this.checked = true;
799
- // });
800
- },
801
- changeProvinceNo() {
802
- this.setCityNoOptions();
803
- this.form.cityNo = "";
804
- this.form.districtNo = "";
805
- },
806
- changeCityNo() {
807
- this.setDistrictNoOptions();
808
- this.form.districtNo = "";
809
- },
810
- validAttr3(rule, value, callback) {
811
- // 详细注册地址
812
- if (value.length === 0) {
813
- callback(new Error("请填写100字以内的企业所在地详情地址"));
814
- } else if (value.length > 100) {
815
- callback(new Error("请填写100字以内的企业所在地详情地址"));
816
- } else if (this.form.provinceNo === "") {
817
- callback(new Error("请选择省"));
818
- } else if (this.form.cityNo === "") {
819
- callback(new Error("请选择地级市"));
820
- } else if (this.form.districtNo === "") {
821
- callback(new Error("请选择区/县"));
822
- } else {
823
- callback();
824
- }
825
- },
826
- oninput(name, slice) {
827
- if (this.form[name].length > slice) {
828
- this.form[name] = this.form[name].slice(0, slice);
829
- }
830
- },
831
- oninputs(name, slice) {
832
- if (this.adminForm[name].length > slice) {
833
- this.adminForm[name] = this.adminForm[name].slice(0, slice);
834
- }
835
- },
836
- setPhoto(data, imgurl) {
837
- this.form.authorization = imgurl;
838
- // imgurl 为照片路径
839
- },
840
- async submit() {
841
- await this.validateForm();
842
- if (this.checked) {
843
- this.$refs["form"].validate(valid => {
844
- // let num = Number(this.form.registeredCapital)
845
- // if (isNaN(num)) {
846
- // this.$_toast({ msg: '请填写纯数字注册资本。', type: 'error' })
847
- // return
848
- // }
849
-
850
- // if (this.form.registeredCapital.length > 0) {
851
- // if (this.form.registeredCapital === '') {
852
- // this.$_toast({ msg: '请填写注册资本', type: 'error' })
853
- // return
854
- // } else if (this.form.registeredCapital == 0 || this.form.registeredCapital[0] == 0) {
855
- // this.$_toast({ msg: '请填写纯数字注册资本。', type: 'error' })
856
- // return
857
- // }
858
- // }
859
- if (!valid) {
860
- return false;
861
- }
862
- // this.setBuyer();
863
- });
864
- } else {
865
- this.$message({
866
- message: "请确认已阅读《施工邦企业认证协议》",
867
- type: "warning"
868
- });
869
- }
870
- },
871
- validateForm() {
872
- // 验证表单结果
873
- return new Promise((resolve, reject) => {
874
- try {
875
- Promise.all(
876
- ["form", "adminForms"].map(item => {
877
- return this.$refs[item].validate();
878
- })
879
- )
880
- .then(res => {
881
- resolve(true);
882
- })
883
- .catch(e => {});
884
- } catch (error) {
885
- console.log("捕获异常");
886
- }
887
- });
888
- },
889
- async comsign() {
890
- const { score: passwordStrengthScore } = validatePasswordStrength(
891
- this.adminForm.password
892
- );
893
- const obj = {
894
- accountname: this.adminForm.tel,
895
- telPhone: this.adminForm.tel,
896
- username: this.adminForm.tel,
897
- userNo: this.userNo,
898
- passwordStrengthScore
899
- };
900
- await this.validateForm(); // 表单验证
901
- if (!this.checked) {
902
- this.$message({
903
- message: "请确认已阅读《施工邦企业认证协议》",
904
- type: "warning"
905
- });
906
- return false;
907
- }
908
- if (!this.telCanSign && this.isSign) {
909
- this.$message({
910
- message: "当前手机号码不可再次注册",
911
- type: "error"
912
- });
913
- return false;
914
- }
915
- const params = Object.assign(this.form, {
916
- userDTO: Object.assign(this.adminForm, obj)
917
- });
918
-
919
- if (this.isLongDate) {
920
- params.businessTerm =
921
- moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
922
- "至长期";
923
- } else {
924
- params.businessTerm =
925
- moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
926
- "至" +
927
- moment(this.form.businessTerm).format("YYYY年MM月DD日");
928
- }
929
- params.establishmentDate = moment(params.establishmentDate).valueOf();
930
- console.log(params);
931
- // return false
932
- this.btnLoading = true;
933
- const res = await apiAuthentication.companyAuthV1(params);
934
- if (res.data.code === 200) {
935
- this.btnLoading = false;
936
- if (this.isSign) {
937
- // this.$message({
938
- // message: res.data.data,
939
- // type: "success"
940
- // });
941
- link.blank_index(); // 注册完成之后跳转至大首页
942
- } else {
943
- this.hasSubmit = true;
944
- }
945
- } else {
946
- this.$message.error(res.data.msg);
947
- this.btnLoading = false;
948
- }
949
-
950
- },
951
- async setBuyer() {
952
- this.showImg = false;
953
- this.disabled = true;
954
- const params = {
955
- id: this.form.id,
956
- address: this.form.address,
957
-
958
- companyType: this.form.companyType,
959
- creditCode: this.form.creditCode,
960
-
961
- legalRepresentative: this.form.legalRepresentative,
962
- license: this.form.license,
963
- name: this.form.name,
964
- // registeredCapital: this.form.registeredCapital,
965
-
966
- provinceNo: this.form.provinceNo,
967
- cityNo: this.form.cityNo,
968
- districtNo: this.form.districtNo,
969
- establishmentDate: this.form.establishmentDate,
970
- registeredCapital: this.form.registeredCapital,
971
- serviceType: this.form.serviceType.join(",")
972
- };
973
-
974
- if (this.isLongDate) {
975
- params.businessTerm =
976
- moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
977
- "至长期";
978
- } else {
979
- params.businessTerm =
980
- moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
981
- "至" +
982
- moment(this.form.businessTerm).format("YYYY年MM月DD日");
983
- }
984
- params.establishmentDate = moment(params.establishmentDate).valueOf();
985
-
986
- // let res = await apiAuthentication.companyAuth(params);
987
- const res = await apiAuthentication.companyAuthV1(params);
988
- if (res.data.code === 200) {
989
- // this.$_toast({ msg: res.data.msg })
990
- // this.$router.push({ path: '/authenticationCompanySuccess' })
991
- this.$removeTag("/authenticationCompanySuccess");
992
- // this.$router.go(0)
993
- } else {
994
- this.$message({
995
- message: res.data.msg,
996
- type: "warning"
997
- });
998
- // this.$_toast({ type: 'error', msg: res.data.msg })
999
- this.disabled = false;
1000
- this.showImg = true;
1001
- }
1002
- },
1003
- setMess(data, imgurl) {
1004
- // businessTerm
1005
- this.form.license = imgurl;
1006
- this.form.name = data.name;
1007
- this.form.creditCode = data.reg_num;
1008
- let str1, str2;
1009
- if (data.establish_date) {
1010
- str1 = data.establish_date.replace("年", "-");
1011
- str1 = str1.replace("月", "-");
1012
- str1 = str1.replace("日", "");
1013
- }
1014
- // 企业类型
1015
- this.form.legalRepresentative = data.person;
1016
- this.form.establishmentDate = str1;
1017
- if (data.valid_period === "长期") {
1018
- this.isLongDate = true;
1019
- this.form.businessTerm = "";
1020
- } else {
1021
- console.log("营业照日期", str2);
1022
- str2 = data.valid_period.replace("年", "-");
1023
- str2 = str2.replace("月", "-");
1024
- str2 = str2.replace("日", "");
1025
- this.form.businessTerm = str2 || "";
1026
- this.isLongDate = true;
1027
- }
1028
- // this.$refs["form"].validate([])
1029
- this.$refs["form"].validateField([
1030
- "license",
1031
- "name",
1032
- "creditCode",
1033
- "legalRepresentative",
1034
- "establishmentDate"
1035
- ]);
1036
- // establish_date
1037
- // valid_period 有效期
1038
- // this.form.registeredCapital = data.capital
1039
-
1040
- // 有限责任公司(自然人投资或控股)
1041
- },
1042
-
1043
- getOption(data) {
1044
- // 数据格式化 增加 label 和 value字段
1045
- const arr = data;
1046
- for (let i = 0; i < arr.length; i++) {
1047
- arr[i].label = arr[i].name;
1048
- arr[i].value = arr[i].no;
1049
- }
1050
- return arr;
1051
- },
1052
- async getAddress(level, parentNo) {
1053
- // 1 650000
1054
- const res = await apiAddress.getAddress(level, { parentNo: parentNo });
1055
- return res.data.data;
1056
- },
1057
- async setProvinceNoOptions() {
1058
- // 获取省 select 列表
1059
- const list = await this.getAddress(1);
1060
- const provinceNoOptions = this.getOption(list);
1061
- this.provinceNoOptions = provinceNoOptions;
1062
- },
1063
- async setCityNoOptions() {
1064
- // 获取市 select 列表
1065
- const list = await this.getAddress(1, this.form.provinceNo);
1066
- const cityNoOptions = this.getOption(list);
1067
- this.cityNoOptions = cityNoOptions;
1068
- },
1069
- async setDistrictNoOptions() {
1070
- // 获取区 select 列表
1071
- const list = await this.getAddress(1, this.form.cityNo);
1072
- const districtNoOptions = this.getOption(list);
1073
- this.districtNoOptions = districtNoOptions;
1074
- },
1075
- setBusinessTerm(str) { // 设置营业执照有效期回显数据
1076
- if (str && str.length) {
1077
- const len = str.length;
1078
- const flagstr = str.substring(str.indexOf("至") + 1, len);
1079
- if (flagstr === "长期") {
1080
- this.isLongDate = true;
1081
- this.form.businessTerm = "";
1082
- } else {
1083
- this.isLongDate = false;
1084
- this.form.businessTerm = flagstr
1085
- .replace(/[年月]/g, "-")
1086
- .replace(/[日]/, "");
1087
- }
1088
- } else {
1089
- this.form.businessTerm = "";
1090
- }
1091
- },
1092
- async getMess() {
1093
- // 认证失败数据回显
1094
- const arr = ["provinceNo", "districtNo", "cityNo"];
1095
- for (const item in this.form) {
1096
- if (arr.indexOf(item) >= 0) {
1097
- continue;
1098
- }
1099
- this.form[item] = this.dataObject[item];
1100
- }
1101
- console.log(this.dataObject);
1102
- const time = Number(this.dataObject["establishmentDate"]);
1103
- if (this.form.establishmentDate == 0) {
1104
-
1105
- } else {
1106
- this.form.establishmentDate = new Date(time);
1107
- }
1108
- // this.form.businessTerm = "";
1109
- this.setBusinessTerm(this.dataObject.businessTerm);
1110
- this.form.id = this.dataObject.id;
1111
- this.imgUrl = this.dataObject.license;
1112
- // this.imgPhoto = this.dataObject.authorization
1113
- this.showImg = true;
1114
- // this.showPhoto = true
1115
- this.form.businessId = Number(this.form.businessId);
1116
- this.form.serviceType = this.dataObject.serviceType.split(",");
1117
- this.form.provinceNo = this.dataObject.provinceNo;
1118
- await this.setCityNoOptions();
1119
- this.form.cityNo = this.dataObject.cityNo;
1120
- await this.setDistrictNoOptions();
1121
- this.form.districtNo = this.dataObject.districtNo;
1122
- },
1123
- // 数据初始化
1124
- async init() {
1125
- this.userRole = this.$store.state.user.userRole;
1126
- const tel = this.$store.state.user.telPhone;
1127
- this.$set(this.adminForm, "tel", tel);
1128
- this.$nextTick(() => {
1129
- this.verifyTel(tel);
1130
- });
1131
- this.setCompanyList();
1132
- if (this.dataObject.id) {
1133
- this.getMess();
1134
-
1135
- this.submitType = "重新提交";
1136
- return;
1137
- }
1138
- this.submitType = "提交";
1139
- },
1140
- async setCompanyList() {
1141
- const res = await apiAuthentication.dict();
1142
- const list = res.data;
1143
- for (let i = 0; i < list.length; i++) {
1144
- list[i].value = list[i].label;
1145
- }
1146
- this.companyOptions = list;
1147
- },
1148
- async publicMethods() {
1149
- // 公共方法调用集合 页面数据初始化
1150
- await this.setProvinceNoOptions();
1151
- this.setCompanyList();
1152
- this.getServiceTypeList();
1153
- this.setPushTime();
1154
- }
1155
- },
1156
-
1157
- async created() {
1158
- this.publicMethods();
1159
- if (!this.isSign) {
1160
- this.init();
1161
- }
1162
- },
1163
- mounted() {}
1164
- };
1165
- </script>
1166
-
1167
- <style lang="scss" rel="stylesheet/scss" scoped>
1168
- // @media screen and (min-width:1218px){}
1169
- // @media screen and (max-width:1217px){}
1170
- // @media screen and (max-width:992px){}
1171
-
1172
- .buyer-form-box {
1173
- width: 540px;
1174
- margin: 0 auto;
1175
- // .buyer-form-button{
1176
- // width: 330px;
1177
- // margin: 0 auto;
1178
- // button{
1179
- // width: 120px;
1180
- // height: 40px;
1181
- // }
1182
- // }
1183
- .inputWidth300 {
1184
- width: 300px;
1185
- }
1186
- .inputWidth280 {
1187
- width: 280px;
1188
- }
1189
-
1190
- .buyer-form-button {
1191
- /*width: 330px;*/
1192
- margin: 0 auto;
1193
- text-align: center;
1194
- button {
1195
- width: 120px;
1196
- height: 40px;
1197
- }
1198
- }
1199
-
1200
- .sign-form-button {
1201
- margin: 0 auto;
1202
- padding-left: 145px;
1203
- button {
1204
- width: 400px;
1205
- }
1206
- }
1207
-
1208
- .invoice {
1209
- font-size: 12px;
1210
- color: #909399;
1211
- }
1212
-
1213
- .address-select {
1214
- width: 100%;
1215
- height: 45px;
1216
-
1217
- > div {
1218
- width: 120px;
1219
- float: left;
1220
- // margin-right:10px;
1221
- &:last-child {
1222
- margin-right: 0;
1223
- }
1224
- }
1225
- }
1226
-
1227
- .marginLift20 {
1228
- margin-left: 20px;
1229
- }
1230
- }
1231
-
1232
- .protocolbox {
1233
- text-align: center;
1234
- margin-bottom: 20px;
1235
-
1236
- span a {
1237
- color: #0286df;
1238
- }
1239
- }
1240
- .set-admin {
1241
- font-weight: 700;
1242
- }
1243
- .sign-inner-code {
1244
- width: 100%;
1245
- .inner-code-text {
1246
- width: 240px;
1247
- float: left;
1248
- }
1249
- .inner-code-button-border {
1250
- height: 40px;
1251
- > button {
1252
- border: 1px solid rgba(2, 134, 223, 1);
1253
- border-radius: 4px;
1254
- color: #0286df;
1255
- }
1256
- }
1257
- .inner-code-button {
1258
- width: 145px;
1259
- float: right;
1260
- button {
1261
- width: 100%;
1262
- height: 38px;
1263
- font-size: 14px;
1264
- }
1265
- }
1266
- }
1267
- .login-input {
1268
- .login-input-bg-font {
1269
- z-index: 5;
1270
- color: #333333;
1271
- position: absolute;
1272
- left: 16px;
1273
- top: 0;
1274
- font-size: 14px;
1275
- }
1276
- }
1277
- .sign-password {
1278
- display: flex;
1279
- .bg-eye {
1280
- padding: 0 10px;
1281
- border: 1px solid #0286df;
1282
- border-radius: 6px;
1283
- margin-left: 20px;
1284
- }
1285
- }
1286
- .confirm-text {
1287
- display: flex;
1288
- flex-direction: column;
1289
- align-items: center;
1290
- justify-content: center;
1291
- background: #ffffff;
1292
- > div {
1293
- padding: 10px 0;
1294
- }
1295
- }
1296
- </style>
1
+ <!-- /**
2
+ * 作用于认证管理
3
+ * 采购商认证表单
4
+ * @authors zzt
5
+ * @date 2019-02-19
6
+ * @version 1.0.0
7
+ */ -->
8
+ <template>
9
+ <div>
10
+ <template v-if="!hasSubmit">
11
+ <div class="buyer-form-box">
12
+ <div class="tc-50"></div>
13
+ <div class="tc-50"></div>
14
+ <!-- <Title2 title="基本信息"></Title2> -->
15
+ <el-form ref="form" label-width="145px" :model="form" :rules="rules">
16
+ <el-form-item label="营业执照图片 :" prop="license">
17
+ <!-- <Uolpad @setMess="setMess" :imgUrl="imgUrl" :showImg="showImg"></Uolpad> -->
18
+ </el-form-item>
19
+
20
+ <el-form-item label="企业名称 :" prop="name">
21
+ <el-input
22
+ placeholder="请填写50个字以内的企业名称"
23
+ @input="oninput('name',50)"
24
+ v-model="form.name"
25
+ :disabled="disabled || mainDisabled"
26
+ ></el-input>
27
+ </el-form-item>
28
+
29
+ <el-form-item label="统一社会信用代码 :" prop="creditCode">
30
+ <el-input
31
+ placeholder="请填写18位或15位信用代码"
32
+ @input="oninput('creditCode',18)"
33
+ maxlength="18"
34
+ v-model="form.creditCode"
35
+ :disabled="disabled || mainDisabled"
36
+ ></el-input>
37
+ </el-form-item>
38
+
39
+ <el-form-item label="企业类型 :" prop="companyType">
40
+ <el-select
41
+ v-model="form.companyType"
42
+ :disabled="disabled || mainDisabled"
43
+ placeholder="请选择企业类型"
44
+ >
45
+ <el-option
46
+ v-for="(item,index) in companyOptions"
47
+ :key="index"
48
+ :label="item.label"
49
+ :value="item.value"
50
+ ></el-option>
51
+ </el-select>
52
+ </el-form-item>
53
+
54
+ <el-form-item label="法定代表人 :" prop="legalRepresentative">
55
+ <el-input
56
+ placeholder="请填写15个字以内的法定代表人姓名"
57
+ @input="oninput('legalRepresentative',15)"
58
+ v-model="form.legalRepresentative"
59
+ :disabled="disabled || mainDisabled"
60
+ ></el-input>
61
+ </el-form-item>
62
+ <el-form-item label="企业经营类型 :" prop="serviceType">
63
+ <el-select
64
+ v-model="form.serviceType"
65
+ multiple
66
+ @change="changeTypeService(form.serviceType)"
67
+ placeholder="请选企业经营类型"
68
+ >
69
+ <el-option
70
+ v-for="(item,index) in serviceType"
71
+ :key="index"
72
+ :label="item.name"
73
+ :value="item.code"
74
+ ></el-option>
75
+ </el-select>
76
+ </el-form-item>
77
+ <el-form-item label="成立时间 :" prop="establishmentDate">
78
+ <el-date-picker
79
+ @change="changeTime"
80
+ v-model="form.establishmentDate"
81
+ type="date"
82
+ placeholder="请选择企业成立日期"
83
+ ></el-date-picker>
84
+ </el-form-item>
85
+ <el-form-item label="营业执照有效期 :" prop="businessTerm">
86
+ <el-date-picker
87
+ @change="changeBusinessTerm"
88
+ v-model="form.businessTerm"
89
+ type="date"
90
+ placeholder="请选择营业执照有效期"
91
+ ></el-date-picker>
92
+ <el-checkbox v-model="isLongDate" @change="changeChecked" style="margin-left: 15px">长期</el-checkbox>
93
+ </el-form-item>
94
+ <el-form-item label="注册资本 :" prop="registeredCapital">
95
+ <el-input
96
+ placeholder="请填写企业注册资本"
97
+ oninput="if(value.length>40)value=value.slice(0,40)"
98
+ class="inputWidth300"
99
+ v-model="form.registeredCapital"
100
+ ></el-input>
101
+ </el-form-item>
102
+
103
+ <el-form-item label="企业注册地址 :" prop="address">
104
+ <div class="address-select">
105
+ <div>
106
+ <el-select
107
+ :disabled="disabled || mainDisabled"
108
+ v-model="form.provinceNo"
109
+ placeholder="省份"
110
+ @change="changeProvinceNo"
111
+ >
112
+ <el-option
113
+ v-for="item in provinceNoOptions"
114
+ :key="item.value"
115
+ :label="item.label"
116
+ :value="item.value"
117
+ ></el-option>
118
+ </el-select>
119
+ </div>
120
+ <div>
121
+ <el-select
122
+ :disabled="disabled || mainDisabled"
123
+ v-model="form.cityNo"
124
+ placeholder="地级市"
125
+ @change="changeCityNo"
126
+ >
127
+ <el-option
128
+ v-for="item in cityNoOptions"
129
+ :key="item.value"
130
+ :label="item.label"
131
+ :value="item.value"
132
+ ></el-option>
133
+ </el-select>
134
+ </div>
135
+ <div>
136
+ <el-select
137
+ :disabled="disabled || mainDisabled"
138
+ v-model="form.districtNo"
139
+ placeholder="区/县"
140
+ >
141
+ <el-option
142
+ v-for="item in districtNoOptions"
143
+ :key="item.value"
144
+ :label="item.label"
145
+ :value="item.value"
146
+ ></el-option>
147
+ </el-select>
148
+ </div>
149
+ </div>
150
+ <div class="tc-10"></div>
151
+ <div class="tc-5"></div>
152
+ <el-input
153
+ placeholder="请填写企业所在地详细地址"
154
+ @input="oninput('address',100)"
155
+ v-model="form.address"
156
+ :disabled="disabled || mainDisabled"
157
+ ></el-input>
158
+ </el-form-item>
159
+ </el-form>
160
+ <div class="set-admin">设置管理员</div>
161
+ <el-form ref="adminForms" label-width="145px" :model="adminForm" :rules="adminFormRules">
162
+ <el-form-item label="手机号码 :" prop="tel">
163
+ <el-input
164
+ autocomplete="off"
165
+ :maxlength="11"
166
+ v-model.trim="adminForm.tel"
167
+ :disabled="!isSign"
168
+ placeholder="请输入11位手机号"
169
+ @input="verifyTel(adminForm.tel)"
170
+ ></el-input>
171
+ </el-form-item>
172
+
173
+ <!-- <template v-if="telCanSign"> -->
174
+ <el-form-item v-if="adminFormConfig.showCode" label="验证码 :" prop="code">
175
+ <div class="sign-inner-code login-input">
176
+ <div class="inner-code-text">
177
+ <el-input
178
+ autocomplete="off"
179
+ v-model="adminForm.code"
180
+ placeholder="请输入短信验证码"
181
+ oninput="if(value.length>6)value=value.slice(0,6)"
182
+ ></el-input>
183
+ </div>
184
+ <div class="inner-code-button inner-code-button-border" v-if="!this.loading">
185
+ <el-button v-if="isClickButton" @click="getCode" :disabled="buttonDisabled">获取短信验证码</el-button>
186
+ <el-button v-else :disabled="buttonDisabled">获取短信验证码</el-button>
187
+ </div>
188
+ <div class="inner-code-button" v-else>
189
+ <el-button type="primary" :loading="loading" v-show="this.loading">{{time}}s</el-button>
190
+ </div>
191
+ </div>
192
+ </el-form-item>
193
+ <el-form-item v-if="adminFormConfig.showName" label="姓名 :" prop="realName">
194
+ <el-input
195
+ :disabled="!isSign && $store.state.user.personalAuth == 1"
196
+ placeholder="请填写真实姓名"
197
+ @input="oninputs('realName',15)"
198
+ v-model="adminForm.realName"
199
+ ></el-input>
200
+ </el-form-item>
201
+ <el-form-item v-if="adminFormConfig.showIdCard" label="身份证号码 :" prop="identityCard">
202
+ <el-input
203
+ :disabled="!isSign && $store.state.user.personalAuth == 1"
204
+ @input="oninputs('identityCard',18)"
205
+ placeholder="请填写18位身份证号码"
206
+ maxlength="18"
207
+ v-model="adminForm.identityCard"
208
+ ></el-input>
209
+ </el-form-item>
210
+ <el-form-item v-if="adminFormConfig.showPassWord" label="登录密码 :" prop="password">
211
+ <div class="sign-password">
212
+ <el-input
213
+ v-if="showEye"
214
+ autocomplete="new-password"
215
+ :type="typePassword"
216
+ @focus="onfocus"
217
+ onpaste="return false"
218
+ oncontextmenu="return false"
219
+ oncopy="return false"
220
+ oncut="return false"
221
+ v-model="adminForm.password"
222
+ placeholder="请输入6-18位由数字加字母的密码"
223
+ oninput="if(value.length>18)value=value.slice(0,18)"
224
+ ></el-input>
225
+
226
+ <el-input
227
+ v-if="!showEye"
228
+ autocomplete="off"
229
+ type="text"
230
+ onpaste="return false"
231
+ oncontextmenu="return false"
232
+ oncopy="return false"
233
+ oncut="return false"
234
+ v-model="adminForm.password"
235
+ placeholder="请输入6-18位由数字加字母的密码"
236
+ oninput="if(value.length>18)value=value.slice(0,18)"
237
+ ></el-input>
238
+ <!-- <el-input placeholder="请输入6-18位由数字加字母的密码" maxlength="18" v-model="adminForm.name"></el-input> -->
239
+ <div class="bg-eye" @click="showEye = !showEye">
240
+ <img v-if="showEye" src="@/assets/login/close-eye.png" alt />
241
+ <img v-if="!showEye" src="@/assets/login/eye.png" alt />
242
+ </div>
243
+ </div>
244
+ </el-form-item>
245
+ <!-- </template> -->
246
+ </el-form>
247
+ <!-- <div class="tc-50"></div> -->
248
+ <div class="protocolbox">
249
+ <el-checkbox v-model="checked">
250
+ <span>
251
+ 您确认阅读并接受
252
+ <!-- <a @click="readProtocol">《施工邦企业认证协议》</a> -->
253
+ <a @click="readProtocol">《企管帮企业认证协议》</a>
254
+ </span>
255
+ </el-checkbox>
256
+ </div>
257
+ <div v-if="isSign" class="sign-form-button">
258
+ <el-button :loading="btnLoading" type="primary" :disabled="disabled" @click="comsign">注册</el-button>
259
+ </div>
260
+ <div v-else class="buyer-form-button">
261
+ <el-button :disabled="disabled" @click="reset">取消认证</el-button>
262
+ <el-button
263
+ type="primary"
264
+ :loading="btnLoading"
265
+ :disabled="disabled"
266
+ @click="comsign"
267
+ >{{submitType}}</el-button>
268
+ </div>
269
+ <div class="tc-100"></div>
270
+ <el-dialog title="施工邦供应商认证协议" :visible.sync="dialogVisible" width="50%">
271
+ <div style="text-index:2em; height:500px; overflow-y: scroll;">
272
+ <br />本协议是您与施工邦网站(简称"本站",网址:http://www.shigongbang.com)所有者中钧科技有限公司(以下简称为"施工邦")之间就施工邦网站服务等相关事宜所订立的契约,请您仔细阅读本协议,您点击"同意"按钮后,本协议即构成对双方有约束力的法律文件。
273
+ <br />
274
+ <strong>第一条 本站服务条款的确认和接纳</strong>
275
+ <br />1.1当您使用施工邦提供的会员服务时,您知晓并且同意此《施工邦供应商认证协议》。此协议所述服务仅在施工邦网站内有效。施工邦网站是指http://www.shigongbang.com及其所属网页。此协议在必要时将进行更新,每次改动都会在施工邦上即刻发布,并立即生效。
276
+ <br />1.2如果您拒绝接受修订后的协议,您将无法继续使用施工邦提供的供应商会员服务;若您继续使用施工邦提供的供应商会员服务,则表明您接受新的协议。
277
+ <br />
278
+ <strong>第二条 服务权限</strong>
279
+
280
+ <br />2.1施工邦有权判定您的行为是否符合《施工邦供应商认证协议》的要求,如果您违背了《施工邦供应商认证协议》的规定,施工邦有权决定取消您的会员资格与服务或者采取其他施工邦认为合适的执行措施。
281
+ <br />
282
+ <strong>第三条 用户认证</strong>
283
+ <br />3.1您必须配合完成施工邦的认证服务,认证服务为文件审核。施工邦有权根据您及网站自身运营需要确定对您的资质进行审核。
284
+ <br />3.2审核项目包括公司基本信息、贸易、供货、生产能力和质量管理、行业信息、产品设计开发能力、体系和产品认证、财务信用等内容。
285
+ <br />3.3通过认证服务后您可获得网站产品的购买和发布的权限。
286
+ <br />3.4通过施工邦认证服务且同时符合以下标准的会员,即为施工邦认证供应商:
287
+ <br />3.4.1中国大陆及香港注册的实体企业;
288
+ <br />3.4.2符合生产能力及贸易经验的要求(不同行业及类型有针对性要求);
289
+ <br />3.4.3符合施工邦诚信经营要求。
290
+ <br />
291
+ <strong>第四条 质量要求</strong>
292
+
293
+ <br />4.1双方本着真诚合作、共同发展的目的,为了保证供货商向施工邦提供高质量的产品和服务,满足施工邦的质量要求,避免因产品质量或服务问题造成损失,确保产品原材料及外协加工产品质量达到国家要求标准,保障施工邦平台运营的顺利进行,供应商需要承担的责任如下:
294
+ <br />4.1.1供应商应对自己原材料进行严格的进货检验,并提供产品质量检验报告,以确保提供给施工邦稳定、合格的产品。
295
+ <br />4.1.2供货商应按照双方共用确认的品质要求交货,若因供应方责任导致品质异常而使施工邦遭到会员索赔的,供应商应全额赔偿损失。
296
+ <br />4.1.3供货方按照施工邦需求,提供给施工邦所要求的品牌、等级、规格的产品,供应商不得以其他品牌、等级、规格的产品冒充甲方所需要的材料,出现此类情况,施工邦有权解除合作协议。
297
+ <br />4.1.4施工邦在商品检验中,发现不合格产品,需对供货商开具《供应商质量问题通报》,供货商需在两日内对《供应商质量问题通报》中质量问题的形成原因、纠正预防措施、措施实施时间等内容,以书面形式进行回复。对于施工邦退货批次,供货商还需向施工邦提供退货批次的处理方式和相关质量记录。
298
+ <br />
299
+ <strong>第五条 会员的权利和义务</strong>
300
+
301
+ <br />5.1您在使用施工邦提供的相应服务时必须遵守中国有关法律法规的规定,不得利用施工邦进行任何非法活动;遵守所有与使用施工邦有关的协议、规定、程序和惯例。
302
+ <br />5.2您保证提供的公司名称、联系方式、相关资质文件均是真实有效的。
303
+ <br />5.3通过本账号在施工邦平台上实施的相关行为(如信息修改,下单,投标),均视为您公司的行为,并由您公司承担相关责任义务。
304
+ <br />5.4您如因违反此协议规定的条款给施工邦造成损失,须承担相应的赔偿。
305
+ <br />5.5如您初次加入会员,您应在会员服务开通前完成认证服务。
306
+ <br />5.6认证服务是以您提供的材料为基础而进行的。您须保证提供的文件、材料、信息或样品的真实、完整、有效,不存在任何虚假或误导信息、行为。否则,施工邦有权立即中止认证服务直至终止所有会员服务,由此造成您其他相关服务中断的,施工邦不承担任何责任。
307
+ <br />5.7您不得对认证协议进行任何内容上的篡改,若因您的原因给认证协议造成的任何影响,须免除施工邦的一切责任,并对施工邦造成的损失(包括但不限于律师费)承担赔偿责任。
308
+ <br />
309
+ <strong>第六条 施工邦的权利和义务</strong>
310
+
311
+ <br />6.1对于因不可抗力因素造成的服务中断或其他缺陷(包括自然灾害、社会事件以及因网站所具有的特殊性质而产生的黑客攻击、电信部门技术调整导致的影响、政府管制而造成的暂时性关闭在内的任何影响网络正常运营的因素),施工邦不承担任何责任,但将尽力减少对您造成的损失和影响。
312
+ <br />6.2如因施工邦原因,造成您服务的不正常中断,您有权向施工邦申请会员服务。但施工邦不承担由此致使您蒙受的其他方面的连带损失。
313
+ <br />6.3施工邦有权决定删除您发布的任何违反中国法律、法规、《施工邦供应商认证协议》的内容,或其他施工邦认为不可接受的内容。情节严重者,施工邦有权取消其会员资格。
314
+ <br />
315
+ <strong>第七条 服务中止与终止</strong>
316
+
317
+ <br />7.1施工邦有权在下列情况下,中止或终止您的部分或全部服务:
318
+ <br />7.1.1您违反《施工邦供应商认证协议》及本协议的任何条款;
319
+ <br />7.1.2您提出书面申请,要求中止或终止部分或全部服务;
320
+ <br />7.1.3可能造成服务中止或终止的其他情形。
321
+ <br />
322
+ <strong>第八条 责任声明</strong>
323
+
324
+ <br />8.1施工邦对其网站上提供的信息之有效性、真实性、准确性、稳定性、完整性和及时性等均不作承诺和保证。您理解并接受任何信息资料的传输取决于您自己并由您承担系统受损或资料丢失的所有风险和责任。
325
+ <br />
326
+ <strong>第九条 争议的解决</strong>
327
+
328
+ <br />本协议的订立、执行和解释及争议的解决均应适用在中华人民共和国大陆地区适用之有效法律(但不包括其冲突法规则)。 如发生本协议与适用之法律相抵触时,则这些条款将完全按法律规定重新解释,而其它有效条款继续有效。 如缔约方就本协议内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向有管辖权的中华人民共和国大陆地区法院提起诉讼。
329
+ <br />
330
+ <strong>第十条 版权声明</strong>
331
+
332
+ <br />10.1施工邦的所有内容版权属中钧科技有限公司所有。
333
+ <br />10.2严禁以未经中钧科技有限公司书面许可的任何形式的部分或全部拷贝。
334
+ </div>
335
+ <!-- <span slot="footer" class="dialog-footer">
336
+ <el-button @click="dialogVisible = false">取 消</el-button>
337
+ <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
338
+ </span>-->
339
+ </el-dialog>
340
+ </div>
341
+ </template>
342
+ <template v-else>
343
+ <div class="buyer-form-box">
344
+ <div class="tc-50"></div>
345
+ <div class="tc-50"></div>
346
+ <div class="confirm-text">
347
+ <div>
348
+ <img src="@/assets/login/login-pass.png" alt />
349
+ </div>
350
+ <div>认证提交成功!</div>
351
+ <div>您的认证申请已提交成功,平台将在一个工作日内完成审核,请耐心等待!</div>
352
+ <div>
353
+ <el-button @click="$removeTag('/userenticationManagement')" type="primary">知道了</el-button>
354
+ </div>
355
+ </div>
356
+ </div>
357
+ </template>
358
+ </div>
359
+ </template>
360
+
361
+ <script>
362
+ import verify from "@/fnc/verify.js";
363
+ import apiAuthentication from "@/api/apiAuthentication.js";
364
+ import moment from "moment";
365
+
366
+ import apiAddress from "@/api/apiAddress.js";
367
+ import { isvalidIdCard, isvalidPhone } from "@/components/form/validate";
368
+ import apiChangeTel from "@/api/apiChangeTel";
369
+ import { getCode, sign } from "@/api/apiSign.js";
370
+ import localStorage from "@/storage/localStorage";
371
+ import { Num } from "@/components/form/num.js";
372
+ import { validatePasswordStrength } from "@/utils/passwordStrength";
373
+ import link from "@/public/link";
374
+
375
+ export default {
376
+ name: "BuyerForm",
377
+ mixins: [],
378
+ extends: {},
379
+ props: {
380
+ dataObject: {
381
+ type: Object
382
+ },
383
+ isSign: {
384
+ // 当前是否为注册模块
385
+ default: false,
386
+ type: Boolean
387
+ }
388
+ },
389
+ data() {
390
+ var checkBusinessTerm = (rule, value, callback) => {
391
+ if (this.isLongDate) {
392
+ callback();
393
+ } else {
394
+ if (!value) {
395
+ callback(new Error("请选择有效期"));
396
+ } else {
397
+ const startTime = moment(this.form.establishmentDate).valueOf();
398
+ const endTime = moment(new Date(moment(value).format())).valueOf();
399
+ if (endTime <= startTime) {
400
+ callback(new Error("有效期不能小于或等于成立时间"));
401
+ } else {
402
+ callback();
403
+ }
404
+ }
405
+ }
406
+ };
407
+ var checkEstablishmentDate = (rule, value, callback) => {
408
+ if (!value) {
409
+ callback(new Error("请选择成立时间"));
410
+ } else {
411
+ const startTime = moment(value).valueOf();
412
+ const endTime = moment(
413
+ new Date(moment(this.form.businessTerm).format())
414
+ ).valueOf();
415
+ if (endTime <= startTime) {
416
+ callback(new Error("成立时间不能大于或等于有效期"));
417
+ } else {
418
+ callback();
419
+ }
420
+ }
421
+ };
422
+ var validIdCard = (rule, value, callback) => {
423
+ // 身份证
424
+ if (!value) {
425
+ callback(new Error("请输入身份证号码"));
426
+ } else if (value.length < 18) {
427
+ callback(new Error("身份证号码长度应为18个数字"));
428
+ } else if (!isvalidIdCard(value)) {
429
+ callback(new Error("请输入真实有效的身份证证件号"));
430
+ } else {
431
+ callback();
432
+ }
433
+ };
434
+ var validPhone = (rule, value, callback) => {
435
+ if (!value) {
436
+ callback(new Error("请输入电话号码"));
437
+ } else if (!isvalidPhone(value)) {
438
+ callback(new Error("请输入正确的手机号"));
439
+ } else {
440
+ callback();
441
+ }
442
+ };
443
+ var validCode = (rule, value, callback) => {
444
+ // 验证码
445
+ if (!value) {
446
+ callback(new Error("请输入验证码"));
447
+ } else if (!Num(value)) {
448
+ callback(new Error("验证码输入有误"));
449
+ } else if (!(value.length === 6)) {
450
+ callback(new Error("验证码输入有误"));
451
+ } else {
452
+ callback();
453
+ }
454
+ };
455
+ // 密码验证
456
+ var validPassword = (rule, value, callback) => {
457
+ const Pass = /^(?!\d+$)(?![a-zA-Z]+$)[\da-zA-Z]+$/;
458
+ // /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/
459
+ if (value === "") {
460
+ callback(new Error("密码不能为空"));
461
+ } else if (value.length < 6 || value.length > 18) {
462
+ callback(new Error("密码须由6-18位字母和数字组成"));
463
+ } else if (!Pass.test(value)) {
464
+ callback(new Error("密码只能由数字与字母组成且必须包含数字和字母"));
465
+ } else {
466
+ callback();
467
+ }
468
+ };
469
+ return {
470
+ num: 0,
471
+ dialogVisible: false,
472
+ isLongDate: false,
473
+ serviceType: [],
474
+ submitType: "重新提交",
475
+ checked: true,
476
+ // submitType: '提交认证',
477
+ // 地区选择使用
478
+ provinceNoOptions: [], // 省
479
+ cityNoOptions: [], // 市
480
+ districtNoOptions: [], // 区
481
+ companyOptions: [],
482
+ mainDisabled: false,
483
+ disabled: false,
484
+ showImg: true,
485
+ imgUrl: "",
486
+ loading: false,
487
+ isClickButton: true,
488
+ btnDisabled: false,
489
+ buttonDisabled: true,
490
+ showEye: true,
491
+ time: 60,
492
+ typePassword: "text",
493
+ rules: {
494
+ license: { required: true, message: "请上传营业执照" },
495
+ name: { required: true, trigger: "blur", validator: verify.validName }, // 企业名称
496
+ creditCode: {
497
+ required: true,
498
+ trigger: "blur",
499
+ validator: verify.validCredit
500
+ }, // 统一社会信用代码
501
+ companyType: {
502
+ required: true,
503
+ trigger: "change",
504
+ // validator: verify.companyTypeFun,
505
+ message: "请选择企业类型"
506
+ }, // 企业类
507
+ address: {
508
+ required: true,
509
+ trigger: "blur",
510
+ validator: this.validAttr3
511
+ }, // 企业地址
512
+ legalRepresentative: {
513
+ required: true,
514
+ validator: verify.validAccountname,
515
+ trigger: "blur"
516
+ }, // 法定代表人
517
+ serviceType: [
518
+ { required: true, message: "请选择企业经营类型", trigger: "change" }
519
+ ],
520
+ establishmentDate: [
521
+ {
522
+ required: true,
523
+ validator: checkEstablishmentDate,
524
+ trigger: "change"
525
+ }
526
+ ],
527
+ businessTerm: [
528
+ { required: true, validator: checkBusinessTerm, trigger: "change" }
529
+ ]
530
+ // registeredCapital: [{ required: true, trigger: 'blur', validator: this.validRegisteredCapital }]
531
+ },
532
+ form: {
533
+ license: "", // 营业执照
534
+ name: "",
535
+ creditCode: "",
536
+ companyType: "",
537
+ legalRepresentative: "",
538
+ establishmentDate: null,
539
+ businessTerm: "",
540
+ registeredCapital: "",
541
+ serviceType: [],
542
+ address: "",
543
+ // 省市区
544
+ provinceNo: "",
545
+ cityNo: "",
546
+ districtNo: ""
547
+ //
548
+ // taxRate 税率
549
+ },
550
+ adminForm: {
551
+ realName: "",
552
+ identityCard: "",
553
+ tel: "",
554
+ code: "",
555
+ password: ""
556
+ },
557
+ adminFormRules: {
558
+ realName: {
559
+ required: true,
560
+ validator: verify.validAccountname,
561
+ trigger: "blur"
562
+ }, // 姓名
563
+ identityCard: [
564
+ { required: true, validator: validIdCard, trigger: "blur" }
565
+ ], // 身份证
566
+ tel: { required: true, validator: validPhone, trigger: "change" }, // 手机号码
567
+ code: { required: false, validator: validCode, trigger: "blur" }, // 验证码
568
+ password: [
569
+ { required: true, validator: validPassword, trigger: "blur" }
570
+ ]
571
+ },
572
+ identity: {},
573
+ telCanSign: true,
574
+ adminFormConfig: {
575
+ showCode: true,
576
+ showName: true,
577
+ showIdCard: true,
578
+ showPassWord: true
579
+ },
580
+ userNo: "",
581
+ btnLoading: false,
582
+ hasSubmit: false
583
+ };
584
+ },
585
+ computed: {},
586
+ components: {
587
+ // Uolpad: () =>
588
+ // import("@/views/AccountManagement/Authentication/components/Uolpad")
589
+ },
590
+ filter: {},
591
+ watch: {},
592
+ methods: {
593
+ handleClose(done) {},
594
+ // 手机号码验证 获取当前手机号码用户身份
595
+ verifyTel(value) {
596
+ // this.telCanSign = true;
597
+ this.disabledBut();
598
+ for (const item in this.adminFormConfig) {
599
+ // 重置form配置
600
+ this.$set(this.adminFormConfig, item, true);
601
+ }
602
+ for (const item in this.adminForm) {
603
+ // 重置form表单
604
+ if (item === "tel") continue;
605
+ this.$set(this.adminForm, item, "");
606
+ }
607
+ this.$refs["adminForms"].validateField("tel", async errMsg => {
608
+ try {
609
+ if (!errMsg) {
610
+ const res = await apiAuthentication.queryUserAuthByPhone(
611
+ this.adminForm.tel
612
+ );
613
+ const data = res.data.data;
614
+ if (res.data.code === 200) {
615
+ const { type, no } = data;
616
+ this.userNo = no;
617
+ if (this.isSign) {
618
+ if (Number(type) === 1) {
619
+ this.telCanSign = true;
620
+ } else {
621
+ this.telCanSign = false;
622
+ // this.$alert("该手机号码已注册,无法再次注册");
623
+ }
624
+ } else {
625
+ for (const item in this.adminFormConfig) {
626
+ // 重置form配置
627
+ this.$set(this.adminFormConfig, item, false);
628
+ }
629
+ this.$set(this.adminFormConfig, "showName", true);
630
+ this.$set(this.adminFormConfig, "showIdCard", true);
631
+ if (this.$store.state.user.personalAuth == 1) {
632
+ // 已经实名认证过
633
+ this.telCanSign = true;
634
+ // for (let item in this.adminFormConfig) {
635
+ // // 重置form配置
636
+ // this.$set(this.adminFormConfig, item, false);
637
+ // }
638
+ // this.$set(this.adminFormConfig, "showName", true);
639
+ // this.$set(this.adminFormConfig, "showIdCard", true);
640
+
641
+ this.$set(this.adminForm, "realName", data.realName);
642
+ this.$set(this.adminForm, "identityCard", data.identityCard);
643
+ } else {
644
+ this.telCanSign = true;
645
+ // this.$set(this.adminFormConfig, "showName", true);
646
+ // this.$set(this.adminFormConfig, "showIdCard", true);
647
+ }
648
+ }
649
+
650
+ // switch (Number(type)) {
651
+ // case 0:
652
+ // this.$alert("该手机号码已经进行过企业认证,无法再次认证");
653
+ // break;
654
+ // case 1:
655
+ // this.telCanSign = true;
656
+ // break;
657
+ // case 2:
658
+ // this.$alert("该手机号码已经进行过司机认证,无法再次认证");
659
+ // break;
660
+ // case 3: // 未实名认证
661
+ // this.telCanSign = true;
662
+ // this.$set(this.adminFormConfig, "showCode", false);
663
+ // this.$set(this.adminFormConfig, "showPassWord", false);
664
+ // break;
665
+ // case 4:
666
+ // this.telCanSign = true;
667
+ // for (let item in this.adminFormConfig) {
668
+ // // 重置form配置
669
+ // this.$set(this.adminFormConfig, item, false);
670
+ // }
671
+ // this.$set(this.adminFormConfig, "showName", true);
672
+ // this.$set(this.adminForm, "realName", data.realName);
673
+
674
+ // break;
675
+ // default:
676
+ // break;
677
+ // }
678
+ }
679
+ } else {
680
+ }
681
+ } catch (error) {}
682
+ });
683
+ // if (value.length > 11) value = value.slice(0, 11);
684
+ // return value
685
+ },
686
+ onfocus() {
687
+ this.typePassword = "password";
688
+ },
689
+ async getCode() {
690
+ this.isClickButton = false;
691
+ // this.sendSucc()
692
+
693
+ const res = await getCode({ telPhone: this.adminForm.tel });
694
+
695
+ if (res.data.success === "true" || res.data.success === true) {
696
+ this.sendSucc();
697
+ } else {
698
+ this.agree = false;
699
+ this.$message({
700
+ message: res.data.msg,
701
+ type: "warning",
702
+ duration: 3000
703
+ });
704
+ }
705
+ this.isClickButton = true;
706
+ },
707
+ sendSucc() {
708
+ const that = this;
709
+ that.loading = true;
710
+ const time = new Date();
711
+ localStorage.set("sendAdminPhone" + this.adminForm.tel, Number(time));
712
+ localStorage.set("sendAdminPhone", Number(time));
713
+ // this.isSend = true
714
+ that.$_toast({ msg: "验证码已发送到您的手机,请查收!" });
715
+
716
+ var timeOut = setInterval(() => {
717
+ that.time = that.time - 1;
718
+ if (that.time === 0) {
719
+ clearInterval(timeOut);
720
+ that.loading = false;
721
+ that.time = 60;
722
+ }
723
+ }, 1000);
724
+ },
725
+ setPushTime() {
726
+ const time = localStorage.read("sendAdminPhone");
727
+
728
+ const timeInitialize = 60;
729
+ const timeDifference = (Number(new Date()) - time) / 1000;
730
+
731
+ const leadTime = timeInitialize - timeDifference.toFixed(0);
732
+
733
+ if (leadTime > 0) {
734
+ this.loading = true;
735
+ const that = this;
736
+ that.time = leadTime;
737
+ var timeOut = setInterval(() => {
738
+ that.time = that.time - 1;
739
+ if (that.time === 0) {
740
+ clearInterval(timeOut);
741
+ that.loading = false;
742
+ that.time = 60;
743
+ }
744
+ }, 1000);
745
+ return;
746
+ }
747
+ localStorage.clear("sendAdminPhone");
748
+ },
749
+ disabledBut() {
750
+ this.buttonDisabled = !isvalidPhone(this.adminForm.tel);
751
+ },
752
+ // 有效期选择处理
753
+ changeBusinessTerm(val) {
754
+ console.log(val);
755
+ this.form.businessTerm = val;
756
+ this.isLongDate = false;
757
+ },
758
+ changeChecked(val) {
759
+ if (val) {
760
+ this.isLongDate = val;
761
+ this.form.businessTerm = "";
762
+ }
763
+ },
764
+ reset() {
765
+ this.$removeTag("/authenticationManagement");
766
+ },
767
+ changeTypeService(item) {},
768
+ changeTime() {},
769
+ validRegisteredCapital(rule, value, callback) {
770
+ const num = Number(value);
771
+ if (value === "") {
772
+ callback(new Error("请填写注册资本"));
773
+ } else if (value == 0 || value[0] == 0) {
774
+ callback(new Error("请填写纯数字注册资本。"));
775
+ } else if (isNaN(num)) {
776
+ callback(new Error("请填写纯数字注册资本。"));
777
+ } else {
778
+ callback();
779
+ }
780
+ },
781
+ async getServiceTypeList() {
782
+ const list = await apiAuthentication.getServiceTypeList();
783
+ this.serviceType = list.data.data;
784
+ },
785
+
786
+ readProtocol() {
787
+ this.checked = true;
788
+ this.dialogVisible = true;
789
+ // this.$alert(
790
+ // '<div><p class="protocolText">本协议是您与施工邦网站(简称"本站",网址:http://www.shigongbang.com)所有者中钧科技有限公司(以下简称为"施工邦")之间就施工邦网站服务等相关事宜所订立的契约,请您仔细阅读本协议,您点击"同意"按钮后,本协议即构成对双方有约束力的法律文件。</p><p class="protocolSmallTitle">第一条本站服务条款的确认和接纳</p><p class="protocolText">1.1当您使用施工邦提供的会员服务时,您知晓并且同意此《施工邦供应商认证协议》。此协议所述服务仅在施工邦网站内有效。施工邦网站是指http://www.shigongbang.com及其所属网页。此协议在必要时将进行更新,每次改动都会在施工邦上即刻发布,并立即生效。</p><p class="protocolText">1.2如果您拒绝接受修订后的协议,您将无法继续使用施工邦提供的供应商会员服务;若您继续使用施工邦提供的供应商会员服务,则表明您接受新的协议。</p><p class="protocolSmallTitle">第二条服务权限</p><p class="protocolText">2.1施工邦有权判定您的行为是否符合《施工邦供应商认证协议》的要求,如果您违背了《施工邦供应商认证协议》的规定,施工邦有权决定取消您的会员资格与服务或者采取其他施工邦认为合适的执行措施。</p><p class="protocolSmallTitle">第三条用户认证</p><p class="protocolText">3.1您必须配合完成施工邦的认证服务,认证服务为文件审核。施工邦有权根据您及网站自身运营需要确定对您的资质进行审核。3.2审核项目包括公司基本信息、贸易、供货、生产能力和质量管理、行业信息、产品设计开发能力、体系和产品认证、财务信用等内容。3.3通过认证服务后您可获得网站产品的购买和发布的权限。3.4通过施工邦认证服务且同时符合以下标准的会员,即为施工邦认证供应商:3.4.1中国大陆及香港注册的实体企业;3.4.2符合生产能力及贸易经验的要求(不同行业及类型有针对性要求);3.4.3符合施工邦诚信经营要求。</p><p class="protocolSmallTitle">第四条质量要求</p><p class="protocolText">4.1.1供应商应对自己原材料进行严格的进货检验,并提供产品质量检验报告,以确保提供给施工邦稳定、合格的产品。4.1.2供货商应按照双方共用确认的品质要求交货,若因供应方责任导致品质异常而使施工邦遭到客户索赔的,供应商应全额赔偿损失。4.1.3供货方按照施工邦需求,提供给施工邦所要求的品牌、等级、规格的产品,供应商不得以其他品牌、等级、规格的产品冒充甲方所需要的材料,出现此类情况,施工邦有权解除合作协议。4.1.4施工邦在商品检验中,发现不合格产品,需对供货商开具《供应商质量问题通报》,供货商需在两日内对《供应商质量问题通报》中质量问题的形成原因、纠正预防措施、措施实施时间等内容,以书面形式进行回复。对于施工邦退货批次,供货商还需向施工邦提供退货批次的处理方式和相关质量记录。</p><p class="protocolSmallTitle">第五条会员的权利和义务</p><p class="protocolText">5.1您在使用施工邦提供的相应服务时必须遵守中国有关法律法规的规定,不得利用施工邦进行任何非法活动;遵守所有与使用施工邦有关的协议、规定、程序和惯例。5.2您保证提供的公司名称、联系方式、相关资质文件均是真实有效的。5.3通过本账号在施工邦平台上实施的相关行为(如信息修改,下单,投标),均视为您公司的行为,并由您公司承担相关责任义务。5.4您如因违反此协议规定的条款给施工邦造成损失,须承担相应的赔偿。5.5如您初次加入会员,您应在会员服务开通前完成认证服务。5.6认证服务是以您提供的材料为基础而进行的。您须保证提供的文件、材料、信息或样品的真实、完整、有效,不存在任何虚假或误导信息、行为。否则,施工邦有权立即中止认证服务直至终止所有会员服务,由此造成您其他相关服务中断的,施工邦不承担任何责任。5.7您不得对认证协议进行任何内容上的篡改,若因您的原因给认证协议造成的任何影响,须免除施工邦的一切责任,并对施工邦造成的损失(包括但不限于律师费)承担赔偿责任。</p><p class="protocolSmallTitle">第六条施工邦的权利和义务</p><p class="protocolText">6.1对于因不可抗力因素造成的服务中断或其他缺陷(包括自然灾害、社会事件以及因网站所具有的特殊性质而产生的黑客攻击、电信部门技术调整导致的影响、政府管制而造成的暂时性关闭在内的任何影响网络正常运营的因素),施工邦不承担任何责任,但将尽力减少对您造成的损失和影响。6.2如因施工邦原因,造成您服务的不正常中断,您有权向施工邦申请会员服务。但施工邦不承担由此致使您蒙受的其他方面的连带损失。6.3施工邦有权决定删除您发布的任何违反中国法律、法规、《施工邦供应商认证协议》的内容,或其他施工邦认为不可接受的内容。情节严重者,施工邦有权取消其会员资格。</p><p class="protocolSmallTitle">第七条服务中止与终止</p><p class="protocolText">7.1施工邦有权在下列情况下,中止或终止您的部分或全部服务:7.1.1您违反《施工邦供应商认证协议》及本协议的任何条款;7.1.2您提出书面申请,要求中止或终止部分或全部服务;7.1.3可能造成服务中止或终止的其他情形。</p><p class="protocolSmallTitle">第八条责任声明</p><p class="protocolText">8.1施工邦对其网站上提供的信息之有效性、真实性、准确性、稳定性、完整性和及时性等均不作承诺和保证。您理解并接受任何信息资料的传输取决于您自己并由您承担系统受损或资料丢失的所有风险和责任。</p><p class="protocolSmallTitle">第九条争议的解决</p><p class="protocolText">本协议的订立、执行和解释及争议的解决均应适用在中华人民共和国大陆地区适用之有效法律(但不包括其冲突法规则)。如发生本协议与适用之法律相抵触时,则这些条款将完全按法律规定重新解释,而其它有效条款继续有效。如缔约方就本协议内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向有管辖权的中华人民共和国大陆地区法院提起诉讼。</p><p class="protocolSmallTitle">第十条版权声明</p><p class="protocolText">10.1施工邦的所有内容版权属中钧科技有限公司所有。10.2严禁以未经中钧科技有限公司书面许可的任何形式的部分或全部拷贝。</p></div>',
791
+ // "施工邦供应商认证协议",
792
+ // {
793
+ // dangerouslyUseHTMLString: true,
794
+ // customClass: "lookOver",
795
+ // confirmButtonText: "同意协议"
796
+ // }
797
+ // ).then(() => {
798
+ // this.checked = true;
799
+ // });
800
+ },
801
+ changeProvinceNo() {
802
+ this.setCityNoOptions();
803
+ this.form.cityNo = "";
804
+ this.form.districtNo = "";
805
+ },
806
+ changeCityNo() {
807
+ this.setDistrictNoOptions();
808
+ this.form.districtNo = "";
809
+ },
810
+ validAttr3(rule, value, callback) {
811
+ // 详细注册地址
812
+ if (value.length === 0) {
813
+ callback(new Error("请填写100字以内的企业所在地详情地址"));
814
+ } else if (value.length > 100) {
815
+ callback(new Error("请填写100字以内的企业所在地详情地址"));
816
+ } else if (this.form.provinceNo === "") {
817
+ callback(new Error("请选择省"));
818
+ } else if (this.form.cityNo === "") {
819
+ callback(new Error("请选择地级市"));
820
+ } else if (this.form.districtNo === "") {
821
+ callback(new Error("请选择区/县"));
822
+ } else {
823
+ callback();
824
+ }
825
+ },
826
+ oninput(name, slice) {
827
+ if (this.form[name].length > slice) {
828
+ this.form[name] = this.form[name].slice(0, slice);
829
+ }
830
+ },
831
+ oninputs(name, slice) {
832
+ if (this.adminForm[name].length > slice) {
833
+ this.adminForm[name] = this.adminForm[name].slice(0, slice);
834
+ }
835
+ },
836
+ setPhoto(data, imgurl) {
837
+ this.form.authorization = imgurl;
838
+ // imgurl 为照片路径
839
+ },
840
+ async submit() {
841
+ await this.validateForm();
842
+ if (this.checked) {
843
+ this.$refs["form"].validate(valid => {
844
+ // let num = Number(this.form.registeredCapital)
845
+ // if (isNaN(num)) {
846
+ // this.$_toast({ msg: '请填写纯数字注册资本。', type: 'error' })
847
+ // return
848
+ // }
849
+
850
+ // if (this.form.registeredCapital.length > 0) {
851
+ // if (this.form.registeredCapital === '') {
852
+ // this.$_toast({ msg: '请填写注册资本', type: 'error' })
853
+ // return
854
+ // } else if (this.form.registeredCapital == 0 || this.form.registeredCapital[0] == 0) {
855
+ // this.$_toast({ msg: '请填写纯数字注册资本。', type: 'error' })
856
+ // return
857
+ // }
858
+ // }
859
+ if (!valid) {
860
+ return false;
861
+ }
862
+ // this.setBuyer();
863
+ });
864
+ } else {
865
+ this.$message({
866
+ message: "请确认已阅读《施工邦企业认证协议》",
867
+ type: "warning"
868
+ });
869
+ }
870
+ },
871
+ validateForm() {
872
+ // 验证表单结果
873
+ return new Promise((resolve, reject) => {
874
+ try {
875
+ Promise.all(
876
+ ["form", "adminForms"].map(item => {
877
+ return this.$refs[item].validate();
878
+ })
879
+ )
880
+ .then(res => {
881
+ resolve(true);
882
+ })
883
+ .catch(e => {});
884
+ } catch (error) {
885
+ console.log("捕获异常");
886
+ }
887
+ });
888
+ },
889
+ async comsign() {
890
+ const { score: passwordStrengthScore } = validatePasswordStrength(
891
+ this.adminForm.password
892
+ );
893
+ const obj = {
894
+ accountname: this.adminForm.tel,
895
+ telPhone: this.adminForm.tel,
896
+ username: this.adminForm.tel,
897
+ userNo: this.userNo,
898
+ passwordStrengthScore
899
+ };
900
+ await this.validateForm(); // 表单验证
901
+ if (!this.checked) {
902
+ this.$message({
903
+ message: "请确认已阅读《施工邦企业认证协议》",
904
+ type: "warning"
905
+ });
906
+ return false;
907
+ }
908
+ if (!this.telCanSign && this.isSign) {
909
+ this.$message({
910
+ message: "当前手机号码不可再次注册",
911
+ type: "error"
912
+ });
913
+ return false;
914
+ }
915
+ const params = Object.assign(this.form, {
916
+ userDTO: Object.assign(this.adminForm, obj)
917
+ });
918
+
919
+ if (this.isLongDate) {
920
+ params.businessTerm =
921
+ moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
922
+ "至长期";
923
+ } else {
924
+ params.businessTerm =
925
+ moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
926
+ "至" +
927
+ moment(this.form.businessTerm).format("YYYY年MM月DD日");
928
+ }
929
+ params.establishmentDate = moment(params.establishmentDate).valueOf();
930
+ console.log(params);
931
+ // return false
932
+ this.btnLoading = true;
933
+ const res = await apiAuthentication.companyAuthV1(params);
934
+ if (res.data.code === 200) {
935
+ this.btnLoading = false;
936
+ if (this.isSign) {
937
+ // this.$message({
938
+ // message: res.data.data,
939
+ // type: "success"
940
+ // });
941
+ link.blank_index(); // 注册完成之后跳转至大首页
942
+ } else {
943
+ this.hasSubmit = true;
944
+ }
945
+ } else {
946
+ this.$message.error(res.data.msg);
947
+ this.btnLoading = false;
948
+ }
949
+
950
+ },
951
+ async setBuyer() {
952
+ this.showImg = false;
953
+ this.disabled = true;
954
+ const params = {
955
+ id: this.form.id,
956
+ address: this.form.address,
957
+
958
+ companyType: this.form.companyType,
959
+ creditCode: this.form.creditCode,
960
+
961
+ legalRepresentative: this.form.legalRepresentative,
962
+ license: this.form.license,
963
+ name: this.form.name,
964
+ // registeredCapital: this.form.registeredCapital,
965
+
966
+ provinceNo: this.form.provinceNo,
967
+ cityNo: this.form.cityNo,
968
+ districtNo: this.form.districtNo,
969
+ establishmentDate: this.form.establishmentDate,
970
+ registeredCapital: this.form.registeredCapital,
971
+ serviceType: this.form.serviceType.join(",")
972
+ };
973
+
974
+ if (this.isLongDate) {
975
+ params.businessTerm =
976
+ moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
977
+ "至长期";
978
+ } else {
979
+ params.businessTerm =
980
+ moment(this.form.establishmentDate).format("YYYY年MM月DD日") +
981
+ "至" +
982
+ moment(this.form.businessTerm).format("YYYY年MM月DD日");
983
+ }
984
+ params.establishmentDate = moment(params.establishmentDate).valueOf();
985
+
986
+ // let res = await apiAuthentication.companyAuth(params);
987
+ const res = await apiAuthentication.companyAuthV1(params);
988
+ if (res.data.code === 200) {
989
+ // this.$_toast({ msg: res.data.msg })
990
+ // this.$router.push({ path: '/authenticationCompanySuccess' })
991
+ this.$removeTag("/authenticationCompanySuccess");
992
+ // this.$router.go(0)
993
+ } else {
994
+ this.$message({
995
+ message: res.data.msg,
996
+ type: "warning"
997
+ });
998
+ // this.$_toast({ type: 'error', msg: res.data.msg })
999
+ this.disabled = false;
1000
+ this.showImg = true;
1001
+ }
1002
+ },
1003
+ setMess(data, imgurl) {
1004
+ // businessTerm
1005
+ this.form.license = imgurl;
1006
+ this.form.name = data.name;
1007
+ this.form.creditCode = data.reg_num;
1008
+ let str1, str2;
1009
+ if (data.establish_date) {
1010
+ str1 = data.establish_date.replace("年", "-");
1011
+ str1 = str1.replace("月", "-");
1012
+ str1 = str1.replace("日", "");
1013
+ }
1014
+ // 企业类型
1015
+ this.form.legalRepresentative = data.person;
1016
+ this.form.establishmentDate = str1;
1017
+ if (data.valid_period === "长期") {
1018
+ this.isLongDate = true;
1019
+ this.form.businessTerm = "";
1020
+ } else {
1021
+ console.log("营业照日期", str2);
1022
+ str2 = data.valid_period.replace("年", "-");
1023
+ str2 = str2.replace("月", "-");
1024
+ str2 = str2.replace("日", "");
1025
+ this.form.businessTerm = str2 || "";
1026
+ this.isLongDate = true;
1027
+ }
1028
+ // this.$refs["form"].validate([])
1029
+ this.$refs["form"].validateField([
1030
+ "license",
1031
+ "name",
1032
+ "creditCode",
1033
+ "legalRepresentative",
1034
+ "establishmentDate"
1035
+ ]);
1036
+ // establish_date
1037
+ // valid_period 有效期
1038
+ // this.form.registeredCapital = data.capital
1039
+
1040
+ // 有限责任公司(自然人投资或控股)
1041
+ },
1042
+
1043
+ getOption(data) {
1044
+ // 数据格式化 增加 label 和 value字段
1045
+ const arr = data;
1046
+ for (let i = 0; i < arr.length; i++) {
1047
+ arr[i].label = arr[i].name;
1048
+ arr[i].value = arr[i].no;
1049
+ }
1050
+ return arr;
1051
+ },
1052
+ async getAddress(level, parentNo) {
1053
+ // 1 650000
1054
+ const res = await apiAddress.getAddress(level, { parentNo: parentNo });
1055
+ return res.data.data;
1056
+ },
1057
+ async setProvinceNoOptions() {
1058
+ // 获取省 select 列表
1059
+ const list = await this.getAddress(1);
1060
+ const provinceNoOptions = this.getOption(list);
1061
+ this.provinceNoOptions = provinceNoOptions;
1062
+ },
1063
+ async setCityNoOptions() {
1064
+ // 获取市 select 列表
1065
+ const list = await this.getAddress(1, this.form.provinceNo);
1066
+ const cityNoOptions = this.getOption(list);
1067
+ this.cityNoOptions = cityNoOptions;
1068
+ },
1069
+ async setDistrictNoOptions() {
1070
+ // 获取区 select 列表
1071
+ const list = await this.getAddress(1, this.form.cityNo);
1072
+ const districtNoOptions = this.getOption(list);
1073
+ this.districtNoOptions = districtNoOptions;
1074
+ },
1075
+ setBusinessTerm(str) { // 设置营业执照有效期回显数据
1076
+ if (str && str.length) {
1077
+ const len = str.length;
1078
+ const flagstr = str.substring(str.indexOf("至") + 1, len);
1079
+ if (flagstr === "长期") {
1080
+ this.isLongDate = true;
1081
+ this.form.businessTerm = "";
1082
+ } else {
1083
+ this.isLongDate = false;
1084
+ this.form.businessTerm = flagstr
1085
+ .replace(/[年月]/g, "-")
1086
+ .replace(/[日]/, "");
1087
+ }
1088
+ } else {
1089
+ this.form.businessTerm = "";
1090
+ }
1091
+ },
1092
+ async getMess() {
1093
+ // 认证失败数据回显
1094
+ const arr = ["provinceNo", "districtNo", "cityNo"];
1095
+ for (const item in this.form) {
1096
+ if (arr.indexOf(item) >= 0) {
1097
+ continue;
1098
+ }
1099
+ this.form[item] = this.dataObject[item];
1100
+ }
1101
+ console.log(this.dataObject);
1102
+ const time = Number(this.dataObject["establishmentDate"]);
1103
+ if (this.form.establishmentDate == 0) {
1104
+
1105
+ } else {
1106
+ this.form.establishmentDate = new Date(time);
1107
+ }
1108
+ // this.form.businessTerm = "";
1109
+ this.setBusinessTerm(this.dataObject.businessTerm);
1110
+ this.form.id = this.dataObject.id;
1111
+ this.imgUrl = this.dataObject.license;
1112
+ // this.imgPhoto = this.dataObject.authorization
1113
+ this.showImg = true;
1114
+ // this.showPhoto = true
1115
+ this.form.businessId = Number(this.form.businessId);
1116
+ this.form.serviceType = this.dataObject.serviceType.split(",");
1117
+ this.form.provinceNo = this.dataObject.provinceNo;
1118
+ await this.setCityNoOptions();
1119
+ this.form.cityNo = this.dataObject.cityNo;
1120
+ await this.setDistrictNoOptions();
1121
+ this.form.districtNo = this.dataObject.districtNo;
1122
+ },
1123
+ // 数据初始化
1124
+ async init() {
1125
+ this.userRole = this.$store.state.user.userRole;
1126
+ const tel = this.$store.state.user.telPhone;
1127
+ this.$set(this.adminForm, "tel", tel);
1128
+ this.$nextTick(() => {
1129
+ this.verifyTel(tel);
1130
+ });
1131
+ this.setCompanyList();
1132
+ if (this.dataObject.id) {
1133
+ this.getMess();
1134
+
1135
+ this.submitType = "重新提交";
1136
+ return;
1137
+ }
1138
+ this.submitType = "提交";
1139
+ },
1140
+ async setCompanyList() {
1141
+ const res = await apiAuthentication.dict();
1142
+ const list = res.data;
1143
+ for (let i = 0; i < list.length; i++) {
1144
+ list[i].value = list[i].label;
1145
+ }
1146
+ this.companyOptions = list;
1147
+ },
1148
+ async publicMethods() {
1149
+ // 公共方法调用集合 页面数据初始化
1150
+ await this.setProvinceNoOptions();
1151
+ this.setCompanyList();
1152
+ this.getServiceTypeList();
1153
+ this.setPushTime();
1154
+ }
1155
+ },
1156
+
1157
+ async created() {
1158
+ this.publicMethods();
1159
+ if (!this.isSign) {
1160
+ this.init();
1161
+ }
1162
+ },
1163
+ mounted() {}
1164
+ };
1165
+ </script>
1166
+
1167
+ <style lang="scss" rel="stylesheet/scss" scoped>
1168
+ // @media screen and (min-width:1218px){}
1169
+ // @media screen and (max-width:1217px){}
1170
+ // @media screen and (max-width:992px){}
1171
+
1172
+ .buyer-form-box {
1173
+ width: 540px;
1174
+ margin: 0 auto;
1175
+ // .buyer-form-button{
1176
+ // width: 330px;
1177
+ // margin: 0 auto;
1178
+ // button{
1179
+ // width: 120px;
1180
+ // height: 40px;
1181
+ // }
1182
+ // }
1183
+ .inputWidth300 {
1184
+ width: 300px;
1185
+ }
1186
+ .inputWidth280 {
1187
+ width: 280px;
1188
+ }
1189
+
1190
+ .buyer-form-button {
1191
+ /*width: 330px;*/
1192
+ margin: 0 auto;
1193
+ text-align: center;
1194
+ button {
1195
+ width: 120px;
1196
+ height: 40px;
1197
+ }
1198
+ }
1199
+
1200
+ .sign-form-button {
1201
+ margin: 0 auto;
1202
+ padding-left: 145px;
1203
+ button {
1204
+ width: 400px;
1205
+ }
1206
+ }
1207
+
1208
+ .invoice {
1209
+ font-size: 12px;
1210
+ color: #909399;
1211
+ }
1212
+
1213
+ .address-select {
1214
+ width: 100%;
1215
+ height: 45px;
1216
+
1217
+ > div {
1218
+ width: 120px;
1219
+ float: left;
1220
+ // margin-right:10px;
1221
+ &:last-child {
1222
+ margin-right: 0;
1223
+ }
1224
+ }
1225
+ }
1226
+
1227
+ .marginLift20 {
1228
+ margin-left: 20px;
1229
+ }
1230
+ }
1231
+
1232
+ .protocolbox {
1233
+ text-align: center;
1234
+ margin-bottom: 20px;
1235
+
1236
+ span a {
1237
+ color: #0286df;
1238
+ }
1239
+ }
1240
+ .set-admin {
1241
+ font-weight: 700;
1242
+ }
1243
+ .sign-inner-code {
1244
+ width: 100%;
1245
+ .inner-code-text {
1246
+ width: 240px;
1247
+ float: left;
1248
+ }
1249
+ .inner-code-button-border {
1250
+ height: 40px;
1251
+ > button {
1252
+ border: 1px solid rgba(2, 134, 223, 1);
1253
+ border-radius: 4px;
1254
+ color: #0286df;
1255
+ }
1256
+ }
1257
+ .inner-code-button {
1258
+ width: 145px;
1259
+ float: right;
1260
+ button {
1261
+ width: 100%;
1262
+ height: 38px;
1263
+ font-size: 14px;
1264
+ }
1265
+ }
1266
+ }
1267
+ .login-input {
1268
+ .login-input-bg-font {
1269
+ z-index: 5;
1270
+ color: #333333;
1271
+ position: absolute;
1272
+ left: 16px;
1273
+ top: 0;
1274
+ font-size: 14px;
1275
+ }
1276
+ }
1277
+ .sign-password {
1278
+ display: flex;
1279
+ .bg-eye {
1280
+ padding: 0 10px;
1281
+ border: 1px solid #0286df;
1282
+ border-radius: 6px;
1283
+ margin-left: 20px;
1284
+ }
1285
+ }
1286
+ .confirm-text {
1287
+ display: flex;
1288
+ flex-direction: column;
1289
+ align-items: center;
1290
+ justify-content: center;
1291
+ background: #ffffff;
1292
+ > div {
1293
+ padding: 10px 0;
1294
+ }
1295
+ }
1296
+ </style>