Register.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <div class="hello">
  3. <Header></Header>
  4. <el-container>
  5. <el-card class="center-card">
  6. <el-form
  7. status-icon
  8. label-width="0px"
  9. class="demo-ruleForm"
  10. @keyup.enter.native="onSubmit"
  11. >
  12. <h2>{{ $t('register') }}</h2>
  13. <el-form-item label>
  14. <el-input
  15. type="text"
  16. auto-complete="off"
  17. :placeholder="$t('username_description')"
  18. v-model="username"
  19. ></el-input>
  20. </el-form-item>
  21. <el-form-item label>
  22. <el-input
  23. type="password"
  24. auto-complete="off"
  25. v-model="password"
  26. :placeholder="$t('password')"
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label>
  30. <el-input
  31. type="password"
  32. auto-complete="off"
  33. v-model="confirm_password"
  34. :placeholder="$t('password_again')"
  35. ></el-input>
  36. </el-form-item>
  37. <el-form-item label>
  38. <el-input
  39. type="text"
  40. auto-complete="off"
  41. v-model="v_code"
  42. :placeholder="$t('verification_code')"
  43. ></el-input>
  44. <img
  45. v-bind:src="v_code_img"
  46. class="v_code_img"
  47. v-on:click="change_v_code_img"
  48. />
  49. </el-form-item>
  50. <el-form-item label>
  51. <el-button type="primary" style="width:100%;" @click="onSubmit">{{
  52. $t('register')
  53. }}</el-button>
  54. </el-form-item>
  55. <el-form-item label>
  56. <router-link to="/user/login">{{ $t('login') }}</router-link>
  57. &nbsp;&nbsp;&nbsp;
  58. </el-form-item>
  59. </el-form>
  60. </el-card>
  61. </el-container>
  62. <Footer></Footer>
  63. </div>
  64. </template>
  65. <script>
  66. export default {
  67. name: 'Register',
  68. components: {},
  69. data() {
  70. return {
  71. username: '',
  72. password: '',
  73. confirm_password: '',
  74. v_code: '',
  75. v_code_img: DocConfig.server + '/api/common/verify'
  76. }
  77. },
  78. methods: {
  79. onSubmit() {
  80. // this.$message.success(this.username);
  81. var that = this
  82. var url = DocConfig.server + '/api/user/register'
  83. var params = new URLSearchParams()
  84. params.append('username', this.username)
  85. params.append('password', this.password)
  86. params.append('confirm_password', this.confirm_password)
  87. params.append('v_code', this.v_code)
  88. that.axios.post(url, params).then(function(response) {
  89. if (response.data.error_code === 0) {
  90. // that.$message.success("注册成功");
  91. localStorage.setItem('userinfo', JSON.stringify(response.data.data))
  92. that.$router.push({ path: '/item/index' })
  93. } else {
  94. that.change_v_code_img()
  95. that.$alert(response.data.error_message)
  96. }
  97. })
  98. },
  99. change_v_code_img() {
  100. var rand = '&rand=' + Math.random()
  101. this.v_code_img += rand
  102. }
  103. },
  104. mounted() {},
  105. beforeDestroy() {}
  106. }
  107. </script>
  108. <!-- Add "scoped" attribute to limit CSS to this component only -->
  109. <style scoped>
  110. .center-card a {
  111. font-size: 12px;
  112. }
  113. .center-card {
  114. text-align: center;
  115. }
  116. .v_code_img {
  117. margin-top: 20px;
  118. }
  119. </style>