Skip to content
Snippets Groups Projects
MainPage.vue 5.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • fz2907's avatar
    fz2907 committed
    <template>
      <div class="content">
        <div class="leftPart">
          <div class="overlay">
            <h1>Switch Room</h1>
            <h3>Reasons for Choosing US</h3>
            <p>
              Wanna to pay for hotel for traveling? Switch Room provide the local
              rooms for you. No need to pay rental. You can switch your living home
              with other people who want to travel to your place.
            </p>
    
    fz2907's avatar
    fz2907 committed
            <br />
            <router-link to="/login">
              <button>READ MORE</button>
            </router-link>
          </div>
        </div>
        <div id="card">
          <div id="card-content">
            <div id="card-title">
              <h2>LOGIN</h2>
              <div class="underline-title"></div>
            </div>
            <form method="post" class="form">
    
    Bart Chou's avatar
    Bart Chou committed
              <label for="user-name" style="padding-top: 13px">
    
    fz2907's avatar
    fz2907 committed
                &nbsp;Username
              </label>
              <input
    
    zhengbo's avatar
    zhengbo committed
                id="user-name"
                v-model="username"
                class="form-content"
                type="text"
                name="username"
                autocomplete="on"
                required
    
    fz2907's avatar
    fz2907 committed
              />
              <div class="form-border"></div>
              <label for="user-password" style="padding-top: 22px"
    
    zhengbo's avatar
    zhengbo committed
                >&nbsp;Password
    
    fz2907's avatar
    fz2907 committed
              </label>
              <input
    
    zhengbo's avatar
    zhengbo committed
                id="user-password"
                v-model="password"
                class="form-content"
                type="password"
                name="password"
                required
    
    fz2907's avatar
    fz2907 committed
              />
              <div class="form-border"></div>
              <a href="#">
                <legend id="forgot-pass">Forgot password?</legend>
              </a>
    
    Bart Chou's avatar
    Bart Chou committed
              <button type="button" class="btn btn-primary" @click="handleLogin()">
                LOGIN
              </button>
    
    fz2907's avatar
    fz2907 committed
              <router-link to="/register">
                <div id="signup">Don't have account yet?</div>
              </router-link>
            </form>
          </div>
        </div>
      </div>
    </template>
    
    
    Bart Chou's avatar
    Bart Chou committed
    <script lang="ts">
    import { defineComponent } from "vue";
    import { mapActions, mapGetters } from "vuex";
    
    zhengbo's avatar
    zhengbo committed
    import { checkLoginSession } from "../services/UserService";
    
    Bart Chou's avatar
    Bart Chou committed
    
    
    Bart Chou's avatar
    Bart Chou committed
    export default defineComponent({
      data() {
        return {
          username: "",
          password: "",
        };
      },
      computed: {
        ...mapGetters("auth", {
          getLoginStatus: "getLoginStatus",
        }),
      },
      methods: {
        ...mapActions("auth", {
          actionLoginApi: "loginApi",
        }),
        async handleCreated() {
    
    zhengbo's avatar
    zhengbo committed
          await checkLoginSession().then((result) => {
    
    zhengbo's avatar
    zhengbo committed
              this.$router.push({ name: "LoginMainPage" });
    
    zhengbo's avatar
    zhengbo committed
              this.$router.push({ name: "home" });
    
    zhengbo's avatar
    zhengbo committed
          });
    
    Bart Chou's avatar
    Bart Chou committed
        },
        async handleLogin() {
          const payload = {
            username: this.username,
            password: this.password,
          };
          await this.actionLoginApi(payload);
    
    zhengbo's avatar
    zhengbo committed
          if (this.getLoginStatus) {
            this.$router.push({ name: "LoginMainPage" });
    
    Bart Chou's avatar
    Bart Chou committed
          }
    
    Bart Chou's avatar
    Bart Chou committed
        },
      },
    
    zhengbo's avatar
    zhengbo committed
      created: function () {
        this.handleCreated();
      },
    
    Bart Chou's avatar
    Bart Chou committed
    });
    
    Bart Chou's avatar
    Bart Chou committed
    </script>
    
    fz2907's avatar
    fz2907 committed
    
    <style scoped>
    .content {
      display: flex;
    }
    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    body {
      height: 900px;
    }
    .leftPart {
      background: url("@/assets/mainPage/headerPhoto.jpeg");
      text-align: center;
      width: 70%;
      height: auto;
      background-size: cover;
      background-attachment: fixed;
      position: relative;
      overflow: hidden;
      border-radius: 0 0 85% 85% / 30%;
    }
    .leftPart .overlay {
      width: 100%;
      height: 100%;
      padding: 50px;
      color: #fff;
      text-shadow: 1px 1px 1px #333;
      background-image: linear-gradient(135deg, #b3d1ff 10%, #fd5e086b 100%);
    }
    
    h1 {
      font-family: "Dancing Script", cursive;
      font-size: 80px;
      margin-bottom: 30px;
    }
    
    h3,
    p {
      font-family: "Open Sans", sans-serif;
      margin-bottom: 30px;
    }
    
    button {
      border: none;
      outline: none;
      padding: 10px 20px;
      border-radius: 50px;
      color: #333;
      background: #fff;
      margin-bottom: 50px;
      box-shadow: 0 3px 20px 0 #0000003b;
    }
    button:hover {
      cursor: pointer;
    }
    a {
      text-decoration: none;
    }
    label {
      font-family: "Raleway", sans-serif;
      font-size: 11pt;
    }
    #forgot-pass {
      color: #2dbd6e;
      font-family: "Raleway", sans-serif;
      font-size: 10pt;
      margin-top: 3px;
      text-align: right;
    }
    #card {
      background: #fbfbfb;
      border-radius: 8px;
      box-shadow: 1px 2px 8px rgba(0, 0, 0, 0.65);
      height: 410px;
      width: 30%;
    }
    #card-content {
      padding: 12px 44px;
    }
    #card-title {
      font-family: "Raleway Thin", sans-serif;
      letter-spacing: 4px;
      padding-bottom: 23px;
      padding-top: 13px;
      text-align: center;
    }
    #signup {
      color: #2dbd6e;
      font-family: "Raleway", sans-serif;
      font-size: 10pt;
      margin-top: 16px;
      text-align: center;
    }
    #submit-btn {
      background: -webkit-linear-gradient(right, #a6f77b, #2dbd6e);
      border: none;
      border-radius: 21px;
      box-shadow: 0px 1px 8px #24c64f;
      cursor: pointer;
      color: white;
      font-family: "Raleway SemiBold", sans-serif;
      height: 42.3px;
      margin: 0 auto;
      margin-top: 50px;
      transition: 0.25s;
      width: 153px;
    }
    #submit-btn:hover {
      box-shadow: 0px 1px 18px #24c64f;
    }
    .form {
      align-items: left;
      display: flex;
      flex-direction: column;
    }
    .form-border {
      background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
      height: 1px;
      width: 100%;
    }
    .form-content {
      background: #fbfbfb;
      border: none;
      outline: none;
      padding-top: 14px;
    }
    .underline-title {
      background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
      height: 2px;
      margin: 0rem auto 0 auto;
      width: 89px;
    }
    </style>