移动端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

430 lines
13 KiB

  1. <template>
  2. <div class="app-container" :style="{height:height+'px'}">
  3. <van-nav-bar
  4. title="单位用户注册"
  5. left-arrow
  6. fixed
  7. placeholder
  8. @click-left="onClickLeft"
  9. />
  10. <van-form @submit="getSubmit">
  11. <van-popup v-model="showPicker" position="bottom">
  12. <van-picker
  13. show-toolbar
  14. :columns="columns"
  15. @confirm="onConfirm"
  16. @cancel="showPicker = false"
  17. />
  18. </van-popup>
  19. <van-field v-model="form.phone" type="tel" label="手机号" placeholder="请输入手机号,作为登录账号!" required :rules="[{ required:true }]" />
  20. <van-field v-model="form.password" type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
  21. <van-field v-model="confirmPassWord" type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>
  22. <van-field readonly clickable name="picker" :value="value" label="经济类型" placeholder="点击选择经济类型" @click="showPicker = true" required :rules="[{ required:true }]"/>
  23. <van-field v-model="form.companyName" label="公司名称" placeholder="请输入公司名称" required :rules="[{ required:true }]"/>
  24. <van-field v-model="form.companyCode" label="社会信用代码" placeholder="请输入公司的社会信用代码" required :rules="[{ required:true }]"/>
  25. <van-field v-model="form.address" label="联系地址" placeholder="请输入联系地址" />
  26. <van-field v-model="form.realname" label="法人姓名" placeholder="请输入法人姓名" required :rules="[{ required:true }]"/>
  27. <van-field v-model="form.idCardNum" label="法人身份证号" placeholder="请输入法人身份证号" required :rules="[{ required:true }]"/>
  28. <van-field name="uploader" label="法人证件照" required>
  29. <template #input>
  30. <van-uploader :after-read="afterReadFRZJZ" :before-delete="deleteFileFRZJZ" v-model="fileListFRZJZ" multiple :max-count="1" />
  31. </template>
  32. </van-field>
  33. <van-field name="uploader" label="营业执照" required>
  34. <template #input>
  35. <van-uploader :after-read="afterReadYYZZ" :before-delete="deleteFileYYZZ" v-model="fileListYYZZ" multiple :max-count="1" />
  36. </template>
  37. </van-field>
  38. <van-divider>银行信息</van-divider>
  39. <van-field name="uploader" label="开户证明" required>
  40. <template #input>
  41. <van-uploader :after-read="afterReadKHZM" :before-delete="deleteFileKHZM" v-model="fileListKHZM" multiple :max-count="1" />
  42. </template>
  43. </van-field>
  44. <van-field v-model="form.bankCardName" label="开户姓名" placeholder="请输入姓名" required :rules="[{ required:true }]"/>
  45. <van-field v-model="form.bankCardNum" label="开户账号" placeholder="请输入开户账号" required :rules="[{ required:true }]"/>
  46. <van-field
  47. v-model="accountType"
  48. is-link
  49. readonly
  50. required
  51. :rules="[{ required:true }]"
  52. label="账户类型"
  53. placeholder="请选择账户类型"
  54. @click="showAccountType = true"
  55. />
  56. <van-popup v-model:show="showAccountType" position="bottom">
  57. <van-picker
  58. show-toolbar
  59. value-key="dictLabel"
  60. :columns="accountTypeOption"
  61. @confirm="onConfirmAccountType"
  62. @cancel="showAccountType = false"
  63. />
  64. </van-popup>
  65. <van-field
  66. v-model="bankType"
  67. is-link
  68. readonly
  69. required
  70. :rules="[{ required:true }]"
  71. label="所属银行"
  72. placeholder="请选择所属银行"
  73. @click="showBankType = true"
  74. />
  75. <van-popup v-model:show="showBankType" position="bottom">
  76. <van-picker
  77. show-toolbar
  78. value-key="dictLabel"
  79. :columns="bankTypeOption"
  80. @confirm="onConfirmBankType"
  81. @cancel="showArea = false"
  82. />
  83. </van-popup>
  84. <van-field
  85. v-model="sheng"
  86. is-link
  87. readonly
  88. label="开户省市"
  89. placeholder="请选择开户省市"
  90. @click="showSheng = true"
  91. />
  92. <van-popup v-model:show="showSheng" position="bottom">
  93. <van-picker
  94. show-toolbar
  95. value-key="label"
  96. :columns="shengOption"
  97. @confirm="onConfirmSheng"
  98. @cancel="showSheng = false"
  99. />
  100. </van-popup>
  101. <van-field v-model="form.bankDeposit" label="关键词" placeholder="请输入开户行地址关键词,如镇街名称"/>
  102. <van-field
  103. v-model="form.bankAddress"
  104. label="开户银行"
  105. placeholder="输入【开户省市、关键词】后:"
  106. required
  107. :rules="[{ required:true }]"
  108. readonly
  109. @click="showBankAddress = true"
  110. >
  111. <template #button>
  112. <van-button size="small" type="primary" native-type="button" @click="searchBankAddress">点击检索</van-button>
  113. </template>
  114. </van-field>
  115. <van-popup v-model:show="showBankAddress" position="bottom">
  116. <van-picker
  117. show-toolbar
  118. value-key="bankDeposit"
  119. :columns="bankAddressOption"
  120. @confirm="onConfirmBankAddress"
  121. @cancel="showBankAddress = false"
  122. />
  123. </van-popup>
  124. <van-field v-model="form.payeePaymentLines" label="联行号" placeholder="开户银行选定后,自动填充!" required :rules="[{ required:true }]"/>
  125. <van-field v-model="form.code" center clearable label="验证码" placeholder="图形验证码" required :rules="[{ required:true }]">
  126. <template #button>
  127. <img class="code-img" :src="codeUrl" @click="getCode" />
  128. </template>
  129. </van-field>
  130. <div class="submit">
  131. <!-- <p>我已阅读并同意<span>《农村产权交易信息服务平台会员注册协议》</span></p>-->
  132. <van-button round block type="info" color="#007E72" native-type="submit">立即注册</van-button>
  133. </div>
  134. </van-form>
  135. </div>
  136. </template>
  137. <script>
  138. import { getCodeImg } from "@/api/login";
  139. import {base64Upload, realtimeBackList, userRegister,depositList} from "@/api/register/index";
  140. import {options} from "@/api/user";
  141. export default {
  142. name: "companyRegister",
  143. data() {
  144. return {
  145. height:0,
  146. tel:'',
  147. value:'',
  148. confirmPassWord:'',
  149. showPicker: false,
  150. columns:[],
  151. fileListKHZM:[],
  152. fileListFRZJZ:[],
  153. fileListYYZZ:[],
  154. form: {
  155. phone: "", //账号
  156. code: "", //验证码
  157. password: "", //密码
  158. realname: "", //姓名
  159. idCardNum: "", //身份证号
  160. address: "", //地址
  161. uuid:'',//图形验证码ID
  162. memberType:2,
  163. economicType:1,
  164. companyName:'',
  165. companyLicense:'',
  166. companyCode:'',
  167. bankCardName:'',
  168. bankCardNum:'',
  169. bankAddress:'',
  170. },
  171. codeUrl:'',
  172. hcAreaInfoFieldName: {
  173. text: "label",
  174. value: "value",
  175. children: "children",
  176. },
  177. bankTypeOption:[],
  178. sheng:'',
  179. shi:'',
  180. bankType:'',
  181. accountType:'',
  182. bankDeposit:'',
  183. showBankType:false,
  184. showSheng :false,
  185. shengOption:options,
  186. showShi :false,
  187. shiOption:[],
  188. showBankAddress :false,
  189. accountTypeOption:[],
  190. showAccountType :false,
  191. bankAddressOption:[],
  192. };
  193. },
  194. created() {
  195. this.getCode();
  196. this.getDicts("bank_type_all").then(response => {
  197. this.bankTypeOption = response.data;
  198. });
  199. this.getDicts("bank_account_type").then(response => {
  200. this.accountTypeOption = response.data;
  201. });
  202. this.getDicts("economic_type").then(res => {
  203. res.data.map(item => {
  204. this.columns.push(item.dictLabel);
  205. });
  206. });
  207. this.height = document.body.clientHeight
  208. },
  209. methods: {
  210. getCode() {
  211. getCodeImg().then((res) => {
  212. this.form.uuid = res.uuid;
  213. this.codeUrl = "data:image/gif;base64," + res.img;
  214. });
  215. },
  216. onConfirm(value, index) {
  217. this.value = value;
  218. this.showPicker = false;
  219. this.form.supplyDemandType = index + 1 ;
  220. },
  221. getSubmit(){
  222. console.log(this.form)
  223. if (this.form.password!= this.confirmPassWord){
  224. this.$toast({
  225. icon: 'error', // 找到自己需要的图标
  226. message: '两次密码输入不一致',
  227. duration:"2000",
  228. onClose:function(){
  229. }
  230. })
  231. return;
  232. }
  233. if (this.form.accountOpenCert == ''){
  234. this.$toast({
  235. icon: 'error', // 找到自己需要的图标
  236. message: '请上传开户证明',
  237. duration:"2000",
  238. onClose:function(){
  239. }
  240. })
  241. return;
  242. }
  243. if (this.userForm.companyLicense == ''){
  244. this.$toast({
  245. icon: 'error', // 找到自己需要的图标
  246. message: '请上传营业执照',
  247. duration:"2000",
  248. onClose:function(){
  249. }
  250. })
  251. return;
  252. }
  253. this.form.accountType = '1';
  254. var that = this
  255. userRegister(this.form).then((res) => {
  256. this.$toast({
  257. icon: 'success', // 找到自己需要的图标
  258. message: '注册成功',
  259. duration:"2000",
  260. onClose:function(){
  261. that.$router.push({path: '/login'})
  262. }
  263. })
  264. });
  265. },
  266. afterReadFRZJZ(file) {
  267. // 此时可以自行将文件上传至服务器
  268. this.$toast.loading({
  269. message: "上传中...",
  270. forbidClick: true,
  271. duration: 0,
  272. });
  273. let params1 = {
  274. file:file.content
  275. }
  276. base64Upload(params1).then((r1) => {
  277. this.form.idCardPic = r1.fileName;
  278. })
  279. },
  280. deleteFileFRZJZ(elIndex){
  281. return (file, name) => {
  282. let fileIndex = name.index
  283. this.fileListFRZJZ[elIndex].splice(fileIndex, 1)
  284. this.form.idCardPic = '';
  285. }
  286. },
  287. afterReadKHZM(file) {
  288. this.$toast.loading({
  289. message: "上传中...",
  290. forbidClick: true,
  291. duration: 0,
  292. });
  293. // 此时可以自行将文件上传至服务器
  294. let params1 = {
  295. file:file.content
  296. }
  297. base64Upload(params1).then((r1) => {
  298. this.form.accountOpenCert = r1.fileName;
  299. })
  300. },
  301. deleteFileKHZM(elIndex){
  302. return (file, name) => {
  303. let fileIndex = name.index
  304. this.fileListKHZM[elIndex].splice(fileIndex, 1)
  305. this.form.accountOpenCert = '';
  306. }
  307. },
  308. afterReadYYZZ(file) {
  309. this.$toast.loading({
  310. message: "上传中...",
  311. forbidClick: true,
  312. duration: 0,
  313. });
  314. // 此时可以自行将文件上传至服务器
  315. let params1 = {
  316. file:file.content
  317. }
  318. base64Upload(params1).then((r1) => {
  319. this.form.companyLicense = r1.fileName;
  320. })
  321. },
  322. deleteFileYYZZ(elIndex){
  323. return (file, name) => {
  324. let fileIndex = name.index
  325. this.fileListYYZZ[elIndex].splice(fileIndex, 1)
  326. this.form.companyLicense = '';
  327. }
  328. },
  329. searchBankAddress(){
  330. let data = {
  331. sheng:this.form.sheng,
  332. shi:this.form.shi,
  333. bankType:this.form.bankType,
  334. bankDeposit:this.form.bankDeposit,
  335. }
  336. depositList(data).then(response => {
  337. if (response.rows.length<1){
  338. if (this.form.sheng==''||this.form.shi==''){
  339. this.$toast({
  340. icon: 'fail', // 找到自己需要的图标
  341. message: '请选择省市',
  342. duration:"1000",
  343. })
  344. return;
  345. }
  346. if (this.form.bankDeposit==''){
  347. this.$toast({
  348. icon: 'fail', // 找到自己需要的图标
  349. message: '请输入关键词',
  350. duration:"1000",
  351. })
  352. return;
  353. }
  354. realtimeBackList(data).then(response2 => {
  355. console.log(response2)
  356. this.bankAddressOption = response2.data;
  357. });
  358. }else{
  359. this.bankAddressOption = response.rows;
  360. }
  361. });
  362. },
  363. onConfirmBankType(value){
  364. this.showBankType = false;
  365. this.form.bankAddress = '';
  366. this.form.payeePaymentLines = '';
  367. this.bankType = value.dictLabel;
  368. this.form.bankType = value.dictValue;
  369. },
  370. onConfirmSheng(value){
  371. console.log(value)
  372. this.showSheng = false;
  373. this.form.sheng = value[0];
  374. this.form.shi = value[1];
  375. this.sheng = value.join('/');
  376. },
  377. onConfirmBankAddress(value){
  378. console.log(value)
  379. this.form.bankAddress = value.bankDeposit;
  380. this.form.payeePaymentLines = value.payeePaymentLines;
  381. this.showBankAddress = false;
  382. },
  383. onConfirmAccountType(value){
  384. console.log(value)
  385. this.form.accountType = value.dictValue;
  386. this.accountType = value.dictLabel;
  387. this.showAccountType = false;
  388. },
  389. },
  390. };
  391. </script>
  392. <style scoped lang="scss">
  393. .app-container {
  394. background-color: #FFF;
  395. .code-img {
  396. width: 220px;
  397. }
  398. }
  399. ::v-deep .van-divider{
  400. margin-bottom: 0;
  401. }
  402. .submit{
  403. width: 90%;
  404. margin: 2vh auto 0;
  405. padding-bottom: 5vh;
  406. p{
  407. text-align: center;
  408. margin-bottom: 0.2rem;
  409. span{
  410. color: #007E72;
  411. }
  412. }
  413. }
  414. </style>