<template>
  <div class="app-container">
    <div class="title">
      <img style="display: inline-block;margin-right: 10px;" src="../../static/images/onlineHome/OHlogo1.png" alt="">
      <img style="display: inline-block;" src="../../static/images/onlineHome/OHlogoWord.png" alt="">
    </div>
    <van-tabs v-model="active" :swipeable="true" style="margin-top:0.5rem;padding:0 10px;">
      <van-tab title="登录" name="1">
        <van-form style="margin:50px 0;" v-if="!showMessage">
          <van-field
            v-model="formData.username"
            placeholder="请输入手机号/账号"
            :rules="[{ required: true, message:''  }]"
          />
          <van-field
            v-model="formData.password"
            type="password"
            style="margin-top: 20px"
            placeholder="请输入密码"
            :rules="[{ required: true, message:''  }]"
          />
          <van-field
            v-model="formData.code"
            center
            clearable
            label="验证码"
            :rules="[{ required: true, }]"
            placeholder="图形验证码"
          >
            <template #button>
              <img style="width: 100px" :src="codeUrl" @click="getCode" />
            </template>
          </van-field>
          <van-checkbox style="float: left;margin-top:10px;margin-left:20px;" v-model="formData.rememberMe" shape="square">{{showMessage ? "记住手机号" : "记住密码"}}</van-checkbox>
          <p style="float: right;margin-top:10px;margin-right:20px;color:#1D6FE9 ">忘记密码</p>
          <div class="clear"></div>
          <div style="margin: 50px 16px 16px;">
            <van-button block type="info" native-type="submit" @click="handleLogin">登录</van-button>
            <p style="text-align: center;margin-top: 20px;color:#878787 " @click="showMessagePop">短信验证码登录</p>
          </div>
        </van-form>
        <van-form style="margin:50px 0;" v-if="showMessage">
          <van-field
            v-model="formData.mobile"
            name="请输入手机号"
            placeholder="请输入手机号"
            :rules="[{ required: true, message: '' }]"
          />
          <van-field
            v-model="formData.code"
            center
            clearable
            label="验证码"
            placeholder="图形验证码"
          >
            <template #button>
              <img style="width: 100px" :src="codeUrl" @click="getCode" />
            </template>
          </van-field>
          <div style="margin: 50px 16px 16px;">
            <van-button block type="info" native-type="submit" @click="getSmsCode">获取验证码</van-button>
            <p style="text-align: center;margin-top: 20px;color:#878787 " @click="showMessagePop">密码登录</p>
          </div>
        </van-form>
      </van-tab>
      <van-tab title="注册" name="2">
        <van-form style="margin:50px 0;">
          <van-field
            v-model="formData.memberName"
            name="请输入姓名"
            placeholder="请输入姓名"
            :rules="[{ required: true, message: '请填写姓名' }]"
          />
          <van-field
            v-model="formData.idcard"
            name="请输入身份证号"
            style="margin-top: 20px"
            placeholder="请输入身份证号"
            :rules="[{ required: true, message: '请输入身份证号' }]"
          />
          <van-field
            v-model="formData.mobile"
            name="请输入手机号"
            style="margin-top: 20px"
            placeholder="请输入手机号"
            :rules="[{ required: true, message: '请填写手机号' }]"
          />
           <van-field
            v-model="formData.code"
            center
            clearable
            label="验证码"
            placeholder="图形验证码"
          >
            <template #button>
              <img style="width: 100px" :src="codeUrl" @click="getCode" />
            </template>
          </van-field>
          <van-field
            v-model="formData.smsCode"
            style="margin-top: 20px"
            placeholder="请输入验证码"
            :rules="[{ required: true, message: '请填写验证码' }]"
          >
            <template #button>
              <!-- <van-button size="mini" type="info" @click="getRegisterSmsCode" >获取验证码</van-button> -->
              <div  class="registerSmsBtn" @click="getRegisterSmsCode">{{
                computeTime > 0 ? `(${computeTime}s)已发送` : "获取短信码"
              }}</div>


            </template>
          </van-field>
          <div style="margin: 50px 16px 16px;">
            <van-button block type="info" native-type="submit" @click="registerSubmit">注册</van-button>
          </div>
        </van-form>
      </van-tab>
    </van-tabs>
    <van-popup v-model="showKeyboard" :style="{ height: '100%',width:'100%' }" >
      <van-nav-bar
        left-arrow
        fixed
        placeholder
        @click-left="showPopup"
      />
      <div style="padding: 20px">
        <h1>输入短信验证码</h1>
        <h3 style="color: #878787">验证码已发送至{{(formData.mobile+"").substr(0,3) + "****" + (formData.mobile+"").substr(7)}}，请在下方输入框内输入4位数字验证码</h3>
      </div>
      <van-password-input
        :value="smsCodeValue"
        :length="4"
        :focused="showKeyboard"
        @focus="showKeyboard = true"
      />
      <van-number-keyboard
        v-model="smsCodeValue"
        :show="showKeyboard"
        theme="custom"
        close-button-text="完成"
      />
    </van-popup>
  </div>
</template>
<style scoped>
  .app-container{
    background: #fff;
    height: 100vh;
  }
  .title{
    padding-top: 20%;
    width: 88%;
    margin: 0 auto;
  }
  .van-tab--active{
    font-size: .6rem;
    font-weight: bold;
  }
  .van-tabs__line{
    background:#1D6FE9;
    width: 0.15rem;
    height: 0.15rem;
    border-radius: 0.07rem;
    bottom: 0.3rem;
  }
  .van-tabs__nav{
    padding:0
  }
  .van-tab{
    display: inline-block;
    flex: inherit;
    margin-left: 30px;
    line-height: .8rem;
  }
  .van-tab__text--ellipsis {
    overflow: auto;
  }
  .van-password-input{
    width: 50%;
    margin: 0 auto;
  }
  [class*=van-hairline]::after{
    border:none;
  }
  .van-password-input__security li{
    margin: 0 10px;
    border-bottom: 3px solid black;
  }
  .registerSmsBtn{
    color: rgb(29, 111, 233);
    font-size: 0.34rem;

  }
</style>
<script>
import { getCodeImg, getSmsCode ,getRegisterSmsCode,registerCheck,registerOn} from "../api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from "../utils/jsencrypt";
//引用wx sdk
import wx from "weixin-js-sdk";
export default {
  name: "login",
  data() {
    return {
      showMessage:false,
      smsCodeValue:"",
      showKeyboard:false,
      formData: {
        username: "", //账号
        password: "", //密码
        code: null, //图片验证码
        uuid: null, //识别uuid
        mobile: null, //手机号
        smsCode: null, //短信验证码
        memberName:null, //身份信息
        idcard:null, //身份号码
        rememberMe:false
      },
      loading: false,
      codeUrl: "", //验证码
      isSmsLogin: false, //是否手机验证码
      computeTime: 0,
      active:1
    };
  },
  created() {
    this.getCode();
    this.getCookie();
    this.reset();
  },
  methods: {
    reset(){

    },
    showPopup(){
      this.showKeyboard = !this.showKeyboard
    },
    showMessagePop(){
      this.showMessage = !this.showMessage
    },
    getCode() {
      getCodeImg().then((res) => {
        this.formData.uuid = res.uuid;
        this.codeUrl = "data:image/gif;base64," + res.img;
      });
    },
    getCookie() {
      const username = Cookies.get("username");
      const password = Cookies.get("password");
      const rememberMe = Cookies.get("rememberMe");
      this.formData = {
        username: username === undefined ? this.formData.username : username,
        password:
          password === undefined ? this.formData.password : decrypt(password),
        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
      };
    },
    getSmsCode() {
      if (this.formData.code == "") {
        this.$dialog.alert({
          message: '图片验证码不能为空',
        });
        return false;
      }
      if (!this.computeTime) {
        let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
        if (!myreg.test(this.formData.mobile)) {
          this.$dialog.alert({
            message: '手机号格式不正确',
          });
          return false;
        }
       /* getSmsCode(this.formData.mobile).then((res) => {
          if (res.code === 200) {
             this.$dialog.alert({
              message: '验证码已发送',
            });
            this.showKeyboard = !this.showKeyboard;
            this.loginForm.uuid = res.uuid;
            this.computeTime = 60;
            this.timer = setInterval(() => {
              this.computeTime--;
              if (this.computeTime <= 0) {
                clearInterval(this.timer);
              }
            }, 1000);
          }
        });*/
      }
    },
    handleLogin(values) {
      if (this.isSmsLogin) {
        //短信登录
        let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
        if (!myreg.test(this.formData.mobile)) {
          this.$dialog.alert({
              message: '手机号格式不正确',
            });
          return false;
        } else if (this.formData.smsCode == "") {
          this.$dialog.alert({
              message: '短信验证码不能为空',
            });
          return false;
        }
        this.loading = true;
        this.$store
          .dispatch("SmsLogin", this.formData)
          .then(() => {
            this.$router.push({ path: "/onlineHomeIndex" }).catch(() => {});
          })
          .catch((error) => {
            this.loading = false;
          });
      } else {
        if (this.formData.rememberMe) {
          Cookies.set("username", this.formData.username, { expires: 30 });
          Cookies.set("password", encrypt(this.formData.password), { expires: 30 });
          Cookies.set("rememberMe", this.formData.rememberMe, { expires: 30 });
        } else {
          Cookies.remove("username");
          Cookies.remove("password");
          Cookies.remove("rememberMe");
        }
        //账号密码登录
        if (this.formData.username == "") {
          this.$dialog.alert({
              message: '账号不能为空',
          });
          return false;
        } else if (this.formData.password == "") {
          this.$dialog.alert({
              message: '密码不能为空',
          });
          return false;
        } else if (!this.formData.code) {
          this.$dialog.alert({
              message: '图片验证码不能为空',
          });
          return false;
        }
        this.$store
          .dispatch("Login", this.formData)
          .then((resp) => {
            console.log(resp);
            this.$router.push({ path: "/onlineHome/workbench" }).catch(() => {});
          })
          .catch((error) => {
            console.log(error)
            this.loading = false;
            this.getCode();
          });
      }
    },
    getRegisterSmsCode(){
       if (!this.computeTime) {
      let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
      if (!myreg.test(this.formData.mobile)) {
        this.$dialog.alert({
            message: '手机号格式不正确',
          });
        return false;
      }else if (this.formData.code == "") {
        this.$dialog.alert({
            message: '图片验证码不能为空',
        });
        return false;
      }
      if (this.active==2) {
        let formObj = {
          code :this.formData.code,
          mobile:this.formData.mobile,
          uuid:this.formData.uuid
        }
        getRegisterSmsCode(formObj).then((res) => {
          console.log(res)
          console.log(res.code == 200)
          if(res.code == 200) {
            this.$dialog.alert({
                message: '验证码已发送',
            });
            this.formData.uuid = res.uuid;
            this.computeTime = 60;
            this.timer = setInterval(() => {
              this.computeTime--;
              if (this.computeTime <= 0) {
                clearInterval(this.timer);
              }
            }, 1000);
          }
        }).catch((res)=>{
          if(res=='Error: 验证码已失效'){
            this.getCode()
          }
        });
      }
      }
    },
    registerSubmit(){

      //注册
      if (this.formData.memberName == "") {
        this.$dialog.alert({
            message: '姓名不能为空',
        });
        return false;
      } else if (this.formData.idcard == "") {
        this.$dialog.alert({
            message: '身份证号不能为空',
        });
        return false;
      } else if (this.formData.mobile == "") {
        this.$dialog.alert({
            message: '手机号码不能为空',
        });
        return false;
      }else if (this.formData.smsCode == "") {
        this.$dialog.alert({
            message: '短信验证码不能为空',
        });
        return false;
      }
      //registerCheck,registerOn
      console.log(this.formData)
      registerCheck(this.formData).then((res)=>{
        if(res.code == 200){
          registerOn(this.formData).then((res)=>{
            if(res.code == 200){
              //
              this.$dialog.alert({
                  message: '您的初始密码：'+res.password,
              }).then(() => {
                  this.$router.push({ path: "/onlineHome/workbench" }).catch(() => {});
              });
            }
          })
        }
      })

    }
  },
};
</script>
