login.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <el-dialog
  3. :title="title"
  4. :visible.sync="dialogVisible"
  5. width="550px"
  6. :before-close="handleClose"
  7. >
  8. <el-form
  9. ref="form"
  10. :model="form"
  11. label-width="120px"
  12. v-if="useType === 'login'"
  13. >
  14. <el-form-item label="邮箱">
  15. <el-input type="email" v-model="form.email"></el-input>
  16. </el-form-item>
  17. <el-form-item label="密码">
  18. <el-input type="password" v-model="form.password"></el-input>
  19. </el-form-item>
  20. </el-form>
  21. <el-form ref="form" :model="form" label-width="80px" v-else>
  22. <el-form-item label="登陆邮箱">
  23. <el-input type="email" v-model="form.email"></el-input>
  24. </el-form-item>
  25. <el-form-item label="输入密码">
  26. <el-input type="password" v-model="form.password"></el-input>
  27. </el-form-item>
  28. <el-form-item label="确认密码">
  29. <el-input type="password" v-model="form.password2"></el-input>
  30. </el-form-item>
  31. </el-form>
  32. <span slot="footer" class="dialog-footer">
  33. <el-button v-if="useType === 'register'" type="text" @click="toLogin"
  34. >取消</el-button
  35. >
  36. <el-button
  37. v-if="useType === 'register'"
  38. type="primary"
  39. @click="toRegisterFn"
  40. >注册</el-button
  41. >
  42. <el-button v-if="useType === 'login'" type="text" @click="toRegister"
  43. >注册</el-button
  44. >
  45. <el-button v-if="useType === 'login'" type="primary" @click="toLoginFn"
  46. >登陆</el-button
  47. >
  48. </span>
  49. </el-dialog>
  50. </template>
  51. <script>
  52. import { login, register } from "@/api";
  53. export default {
  54. name: "login",
  55. data() {
  56. return {
  57. useType: "login",
  58. title: "登陆",
  59. dialogVisible: false,
  60. form: {
  61. name: "",
  62. password: "",
  63. },
  64. };
  65. },
  66. methods: {
  67. show() {
  68. this.dialogVisible = true;
  69. },
  70. toRegister() {
  71. this.useType = "register";
  72. this.title = "注册";
  73. },
  74. handleClose() {
  75. this.dialogVisible = false;
  76. },
  77. toLogin() {
  78. this.useType = "login";
  79. this.title = "登陆";
  80. },
  81. async toLoginFn() {
  82. if (!this.form.email) {
  83. this.$message.error("请输入邮箱!");
  84. return;
  85. }
  86. if (!this.form.password) {
  87. this.$message.error("请输入密码!");
  88. return;
  89. }
  90. const res = await login({
  91. email: this.form.email,
  92. password: this.form.password,
  93. });
  94. if (res.code === 300) {
  95. this.$message.error(res.msg);
  96. return
  97. }
  98. console.log("loginOrRegister", res);
  99. // window.localStorage.setItem("userInfo", JSON.stringify(res.data));
  100. window.localStorage.setItem("token", res.data.token);
  101. window.location.reload();
  102. },
  103. async toRegisterFn() {
  104. if (!this.form.email) {
  105. this.$message.error("请输入登陆邮箱!");
  106. return;
  107. }
  108. if (!this.form.password) {
  109. this.$message.error("请输入用户密码!");
  110. return
  111. }
  112. if (this.form.password !== this.form.password2) {
  113. this.$message.error("2次输入密码不一致!");
  114. return
  115. }
  116. const res = await register({
  117. email: this.form.email,
  118. password: this.form.password,
  119. });
  120. if (res.code === 300) {
  121. this.$message.error(res.msg);
  122. return
  123. }
  124. if (res.data) {
  125. this.$alert("注册成功是否现在登陆!", "提示", {
  126. confirmButtonText: "确定",
  127. callback: (action) => {
  128. if (action === "confirm") {
  129. this.toLogin();
  130. }
  131. },
  132. });
  133. }
  134. },
  135. },
  136. };
  137. </script>