铝交易,微信公众号
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

416 lines
10 KiB

7 months ago
8 months ago
7 months ago
7 months ago
7 months ago
7 months ago
  1. <template>
  2. <view class="registerShop">
  3. <navbar :title="titleList[titleIndex]" leftClick @leftClick="$utils.navigateBack" />
  4. <view class="frame">
  5. <!--基本信息-->
  6. <view class="basicInfo">
  7. <!--用户名-->
  8. <view class="item">
  9. <view>{{ $t('components.username')}}</view>
  10. <view>
  11. <input v-model="form.userName" :placeholder="$t('components.enterUserName')" clearable></input>
  12. </view>
  13. </view>
  14. <!--密码-->
  15. <view class="item">
  16. <view>{{ $t('components.password')}}</view>
  17. <view>
  18. <input v-model="form.password" password clearable
  19. :placeholder="$t('components.enterYourPassword')" clearable></input>
  20. </view>
  21. </view>
  22. <!--公司名称-->
  23. <view class="item">
  24. <view>{{ $t('other.companyName')}}</view>
  25. <view>
  26. <input v-model="form.companyName" type="number" :placeholder="$t('other.enterCompanyName')"
  27. clearable></input>
  28. </view>
  29. </view>
  30. <!--税收编码-->
  31. <view class="item">
  32. <view>{{ $t('other.taxCode')}}</view>
  33. <view>
  34. <input v-model="form.taxCode" :placeholder="$t('other.enterTaxCode')" clearable></input>
  35. </view>
  36. </view>
  37. <!--公司地址-->
  38. <view class="item">
  39. <view>{{ $t('other.companyAddress')}}</view>
  40. <view>
  41. <input v-model="form.address" :placeholder="$t('other.enterCompanyAddress')" clearable></input>
  42. </view>
  43. </view>
  44. <!--联系电话-->
  45. <view class="item">
  46. <view>{{ $t('components.lxPhone')}}</view>
  47. <view>
  48. <input v-model="form.phone" :placeholder="$t('components.plePhoneNumber')" clearable></input>
  49. </view>
  50. </view>
  51. <!---->
  52. <view class="item">
  53. <view>{{ $t('other.companyAccount')}}</view>
  54. <view>
  55. <input v-model="form.bankAccount" :placeholder="$t('other.enterCompanyAccount')"
  56. clearable></input>
  57. </view>
  58. </view>
  59. <view class="item">
  60. <view>{{ $t('components.bankName')}}</view>
  61. <view>
  62. <input v-model="form.bankNama" :placeholder="$t('components.enterBankName')" clearable></input>
  63. </view>
  64. </view>
  65. </view>
  66. <!--证件信息-->
  67. <view class="certificateInfo">
  68. <!--营业执照-->
  69. <view class="certificateInfoItem">
  70. <view class="title">
  71. <span
  72. style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
  73. <span>{{ $t('components.businessLicense')}}</span>
  74. </view>
  75. <view class="upload">
  76. <uv-upload :fileList="yyzzfileList" :maxCount="4" multiple width="150rpx" height="150rpx"
  77. @delete="(file) => deleteImage(0, file)" @afterRead="(file) => afterRead(0, file)"
  78. :previewFullImage="true"></uv-upload>
  79. </view>
  80. </view>
  81. <!--基本户信息-->
  82. <view class="certificateInfoItem">
  83. <view class="title">
  84. <span
  85. style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
  86. <span>{{ $t('components.basicAccountInfo')}}</span>
  87. </view>
  88. <view class="upload">
  89. <uv-upload :fileList="jbhxxfileList" :maxCount="4" multiple width="150rpx" height="150rpx"
  90. @delete="(file) => deleteImage(1, file)" @afterRead="(file) => afterRead(1, file)"
  91. :previewFullImage="true"></uv-upload>
  92. </view>
  93. </view>
  94. <!--收款银行-->
  95. <view class="certificateInfoItem">
  96. <view class="title">
  97. <span
  98. style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
  99. <span>{{ $t('components.receivingBank')}}</span>
  100. </view>
  101. <view class="upload">
  102. <uv-upload :fileList="skyhfileList" :maxCount="4" multiple width="150rpx" height="150rpx"
  103. @delete="(file) => deleteImage(2, file)" @afterRead="(file) => afterRead(2, file)"
  104. :previewFullImage="true"></uv-upload>
  105. </view>
  106. </view>
  107. </view>
  108. </view>
  109. <view class="bottom">
  110. <view class="btns">
  111. <!--申请审核-->
  112. <span @click="applyReview" class="sqsh">
  113. {{ $t('components.submitReview') }}
  114. </span>
  115. <!--联系我们-->
  116. <span @click="contactUs" class="lxwm">
  117. {{ $t('components.contactUs') }}
  118. </span>
  119. </view>
  120. <view class="others">
  121. <!--注册须知-->
  122. <span @click="applyReview" class="zcxz">
  123. {{ $t('components.registrationNotice') }}
  124. </span>
  125. <!--框架合同预览-->
  126. <span @click="contactUs" class="kjhtyl">
  127. {{ $t('other.frameworkContractPreview') }}
  128. </span>
  129. </view>
  130. </view>
  131. <!-- 联系客服弹框 -->
  132. <customerServicePopup ref="customerServicePopup" />
  133. </view>
  134. </template>
  135. <script>
  136. import customerServicePopup from "@/components/config/customerServicePopup.vue";
  137. export default {
  138. components: {
  139. customerServicePopup
  140. },
  141. onLoad(option) {
  142. this.titleIndex = option.identity
  143. this.form.role = option.identity
  144. },
  145. data() {
  146. return {
  147. titleIndex: 0,
  148. titleList: [
  149. // 采购商注册 供应商注册 国内清关申请
  150. this.$t('other.buyerRegistration'),
  151. this.$t('other.supplierRegistration'),
  152. this.$t('other.domesticCustomsClearanceApplication')
  153. ],
  154. form: {
  155. "address": "",
  156. "auditStatus": 0,
  157. "bankAccount": "",
  158. "bankInfo": "",
  159. "bankNama": "",
  160. "basicAccount": "",
  161. "businessLicense": "",
  162. "companyName": "",
  163. "password": "",
  164. "phone": "",
  165. "role": 0,
  166. "taxCode": "",
  167. "userName": ""
  168. },
  169. yyzzfileList: [],//营业执照
  170. jbhxxfileList: [],//基本户信息
  171. skyhfileList: [],//收款银行
  172. }
  173. },
  174. methods: {
  175. // 申请审核
  176. applyReview() {
  177. let data = JSON.parse(JSON.stringify(this.form))
  178. data.businessLicense = this.yyzzfileList.map((item) => item.url).join(",")
  179. data.basicAccount = this.jbhxxfileList.map((item) => item.url).join(",")
  180. data.bankInfo = this.skyhfileList.map((item) => item.url).join(",")
  181. if(this.$utils.verificationAll(data, {
  182. "userName": this.$t('components.enterUserName'),
  183. "password": this.$t('components.enterYourPassword'),
  184. "companyName": this.$t('other.enterCompanyName'),
  185. "taxCode": this.$t('other.enterTaxCode'),
  186. "address": this.$t('other.enterCompanyAddress'),
  187. "phone": this.$t('components.plePhoneNumber'),
  188. "bankAccount": this.$t('other.enterCompanyAccount'),
  189. "bankNama": this.$t('components.enterBankName'),
  190. "businessLicense": '请上传营业执照',
  191. "basicAccount": '请上传基本户信息照片',
  192. "bankInfo": '请上传收款银行照片',
  193. })){
  194. return
  195. }
  196. this.$api(this.titleIndex == 2 ?
  197. 'addCustoms'
  198. : 'roleOption', this.form, res => {
  199. if (res.code == 200) {
  200. uni.removeStorageSync('token')
  201. this.$store.state.userInfo = {}
  202. // uni.redirectTo({
  203. // url: '/pages/index/index'
  204. // })
  205. uni.showToast({
  206. title: '提交成功!耐心等待审核',
  207. icon: 'none'
  208. })
  209. }
  210. })
  211. },
  212. // 联系我们
  213. contactUs() {
  214. console.log("打开客服弹框")
  215. this.$refs.customerServicePopup.open();
  216. },
  217. // 上传图片
  218. afterRead(type, e) {
  219. let self = this
  220. e.file.forEach(file => {
  221. self.$Oss.ossUpload(file.url).then(url => {
  222. if (type == 0) {
  223. self.yyzzfileList.push({
  224. url
  225. })
  226. } else if (type == 1) {
  227. self.jbhxxfileList.push({
  228. url
  229. })
  230. } else if (type == 2) {
  231. self.skyhfileList.push({
  232. url
  233. })
  234. }
  235. })
  236. })
  237. },
  238. // 删除图片
  239. deleteImage(type, e) {
  240. console.log(e, type, "===========")
  241. if (type == 0) {
  242. this.yyzzfileList.splice(e.index, 1)
  243. } else if (type == 1) {
  244. this.jbhxxfileList.splice(e.index, 1)
  245. } else if (type == 2) {
  246. this.skyhfileList.splice(e.index, 1)
  247. }
  248. },
  249. }
  250. }
  251. </script>
  252. <style scoped lang="scss">
  253. .registerShop {
  254. .frame {
  255. min-height: 100vh;
  256. overflow: auto;
  257. .basicInfo {
  258. display: flex;
  259. flex-direction: column;
  260. gap: 5rpx;
  261. background-color: #FFF;
  262. margin-top: 20rpx;
  263. padding: 20rpx;
  264. .item {
  265. display: flex;
  266. align-items: center;
  267. background-color: #FFF;
  268. height: 80rpx;
  269. // margin: 10rpx 0 0 0;
  270. padding: 10rpx 0 0 20rpx;
  271. >view:nth-of-type(1) {
  272. width: 30%;
  273. // font-weight: 700;
  274. }
  275. >view:nth-of-type(2) {
  276. width: 70%;
  277. border-radius: 10rpx;
  278. overflow: hidden;
  279. input {
  280. background-color: #f5f5f5;
  281. font-size: 28rpx;
  282. padding: 16rpx 8rpx 16rpx 15rpx;
  283. }
  284. }
  285. }
  286. }
  287. .certificateInfo {
  288. display: flex;
  289. flex-direction: column;
  290. gap: 20rpx;
  291. background-color: #FFF;
  292. margin-top: 20rpx;
  293. padding: 20rpx;
  294. .certificateInfoItem {
  295. .title {
  296. display: flex;
  297. // padding-top: 40rpx;
  298. font-size: 30rpx;
  299. font-weight: 700;
  300. padding: 0 0 0 20rpx;
  301. >span:nth-of-type(1) {
  302. margin: 4rpx 0 0 8rpx;
  303. background-color: #FFF;
  304. }
  305. >span:nth-of-type(2) {
  306. margin: 0 0 0 8rpx;
  307. background-color: #FFF;
  308. }
  309. }
  310. .upload {
  311. margin: 5rpx 0 0 40rpx;
  312. }
  313. }
  314. }
  315. }
  316. .bottom {
  317. position: fixed;
  318. bottom: 10rpx;
  319. left: 0;
  320. right: 0;
  321. background-color: #FFF;
  322. .btns {
  323. display: flex;
  324. justify-content: center;
  325. align-items: center;
  326. gap: 40rpx;
  327. .sqsh {
  328. display: flex;
  329. align-items: center;
  330. justify-content: center;
  331. width: 40%;
  332. height: 70rpx;
  333. border-radius: 40rpx;
  334. color: white;
  335. font-size: 28rpx;
  336. margin: 20rpx 10rpx 0 0;
  337. background: #293143;
  338. //margin-top: 20rpx;
  339. border-radius: 40rpx;
  340. }
  341. .lxwm {
  342. display: flex;
  343. align-items: center;
  344. justify-content: center;
  345. width: 40%;
  346. height: 70rpx;
  347. border-radius: 40rpx;
  348. color: #000000;
  349. font-size: 28rpx;
  350. margin: 20rpx 10rpx 0 0;
  351. background: #f2f2f2;
  352. //margin-top: 20rpx;
  353. border-radius: 40rpx;
  354. }
  355. }
  356. .others {
  357. display: flex;
  358. justify-content: center;
  359. align-items: center;
  360. gap: 200rpx;
  361. color: #707070;
  362. font-size: 24rpx;
  363. .zcxz {
  364. text-decoration: underline;
  365. }
  366. .kjhtyl {
  367. text-decoration: underline;
  368. }
  369. }
  370. }
  371. }
  372. </style>