<template>
  <div class="login-container" ref="login" @keyup.enter.native="handleLogin">
    <dv-border-box-2   style="width: 100%;height: 100%;">
    <dv-border-box-8 style="width: 100%;height: 100%;">
      <div style="display: flex;justify-content: center;align-items: center;height: 100%;width: 100%;">
        <div class="login-weaper animated bounceInDown">
            <div class="login-left">
              <div class="login-time">
                {{time}}
              </div>
              <dv-decoration-9 class="img" style="width:200px;height:200px;">
                <img style="width: 100px;height: 100px;" src="/img/logo.png" alt="">
              </dv-decoration-9>
              <p class="title animate_title">{{ $t('login.info') }}</p>
            </div>
            <div class="login-border">
              <dv-border-box-10 style="height: 100%;width: 100%;" :color="['#1f3661', '#487bb1']" backgroundColor="rgba(22, 37, 67, 0.6)">
                  <div class="login-main">
                    <h4 class="login-title">
                      {{ $t('login.title') }}{{website.title}}
                      <top-lang></top-lang>
                    </h4>
                    <userLogin v-if="activeName==='user'"></userLogin>
                    <div style="height: 50px"></div>
                  </div>
              </dv-border-box-10>
            </div>
        </div>
      </div>
    </dv-border-box-8>
    </dv-border-box-2>
  </div>
</template>
<script>
  import userLogin from "./userlogin";
  import codeLogin from "./codelogin";
  import thirdLogin from "./thirdlogin";
  import {
    mapGetters
  } from "vuex";
  import {
    dateFormat
  } from "@/util/date";
  import {
    validatenull
  } from "@/util/validate";
  import topLang from "@/page/index/top/top-lang";
  import topColor from "@/page/index/top/top-color";
  import {
    getQueryString,
    getTopUrl
  } from "@/util/util";

  export default {
    name: "login",
    components: {
      userLogin,
      codeLogin,
      thirdLogin,
      topLang,
      topColor
    },
    data() {
      return {
        time: "",
        activeName: "user",
        socialForm: {
          tenantId: "000000",
          source: "",
          code: "",
          state: "",
        }
      };
    },
    watch: {
      $route() {
        this.handleLogin();
      }
    },
    created() {
      this.handleLogin();
      this.getTime();
    },
    mounted() {},
    computed: {
      ...mapGetters(["website", "tagWel"])
    },
    props: [],
    methods: {
      getTime() {
        setInterval(() => {
          this.time = dateFormat(new Date());
        }, 1000);
      },
      handleLogin() {
        const topUrl = getTopUrl();
        const redirectUrl = "/oauth/redirect/";
        this.socialForm.source = getQueryString("source");
        this.socialForm.code = getQueryString("code");
        this.socialForm.state = getQueryString("state");
        if (validatenull(this.socialForm.source) && topUrl.includes(redirectUrl)) {
          let source = topUrl.split("?")[0];
          source = source.split(redirectUrl)[1];
          this.socialForm.source = source;
        }
        if (!validatenull(this.socialForm.source) && !validatenull(this.socialForm.code) && !validatenull(this
            .socialForm.state)) {
          const loading = this.$loading({
            lock: true,
            text: '第三方系统登录中,请稍后。。。',
            spinner: "el-icon-loading"
          });
          this.$store.dispatch("LoginBySocial", this.socialForm).then(() => {
            window.location.href = topUrl.split(redirectUrl)[0];
            this.$router.push({
              path: this.tagWel.value
            });
            loading.close();
          }).catch(() => {
            loading.close();
          });
        }
      }
    }
  };
</script>

<style lang="scss">
  @import "@/styles/login.scss";

  .green {
    color: rgba(0, 186, 189, 1)
  }

  .animate_title{
    animation: suofang 5s linear infinite reverse;
  }
  @keyframes suofang {
    from {
      transform: rotateY(0deg)
    }

    to {
      transform: rotateY(360deg)
    }
  }
</style>
