<!--
 * @Descripttion: 
 * @version: 
 * @Author: 王三华
 * @Date: 2023-05-18 14:42:53
-->
<template>
  <view class="main">
    <view class="contents">
      <u-form ref="uForm" :model="loginObj" class="paddings" label-width="90px">
        <u-form-item :label="'新密码'" prop="newPassword" style="display: flex">
          <u-input
            v-model="loginObj.newPassword"
            class="border-color"
            :password="true"
            :placeholder="'请输入新密码'"
            placeholder-class="place-class"
          />
        </u-form-item>
        <u-form-item
          :label="'请确认密码'"
          prop="payPassword"
          style="display: flex"
        >
          <u-input
            v-model="loginObj.payPassword"
            class="border-color"
            :password="true"
            :placeholder="'请确认密码'"
            placeholder-class="place-class"
          />
        </u-form-item>
        <u-form-item :label="'验证码'" prop="code">
          <view class="code-box">
            <u-input
              v-model="loginObj.code"
              class="border-color"
              style="width: auto;"
              :placeholder="'请输入验证码'"
              placeholder-class="place-class"
            />
            <button :disabled="disabled" class="yzm" @click.stop="getCode()">
              {{ getCodeText }}
            </button>
          </view>
        </u-form-item>
        
      </u-form>
    </view>
    <u-button class="btn" shape="circle" type="success" @click="submit">{{
      '确定'
    }}</u-button>
    <view style="height: 20rpx"></view>
  </view>
</template>

<script>
import * as api from '@/config/login.js'
import { setToken } from '@/config/auth.js'
import address from '@/components/address.vue'
import store from '@/store'
import { getData } from '../../config/login'
export default {
  data() {
    return {
      getCodeText: '获取验证码',
      disabled: false,
      time: 60,
      yzmCheck: false,
      userInfo: '',
      loginObj: {
        emailed: '',
        code: '',
        email: '',
      },
      rules: {
        newPassword: [
          {
            // 必填项
            required: true,
            // 提示内容（会出现在u-form-item内的底部）
            message: '请输入密码',
            trigger: ['blur'],
          },
        ],
        code: [
          {
            // 必填项
            required: true,
            // 提示内容（会出现在u-form-item内的底部）
            message: '请输入短信验证码',
            trigger: ['blur'],
          },
        ],
        payPassword: [
          {
            // 必填项
            required: true,
            // 提示内容（会出现在u-form-item内的底部）
            message: '请输入密码',
            trigger: ['blur'],
          },
        ],
      },
    }
  },
  onLoad(option) {
    // this.getMemberInfo()
  },
  onReady() {
    this.$refs.uForm.setRules(this.rules)
  },
  methods: {
    submit() {
      this.$refs.uForm.validate().then(res => {
        api.forgetPayPassword(this.loginObj).then(res => {
          if (res.code == '200') {
            uni.showToast({
              title: res.msg,
              icon: 'none',
              success() {
                setTimeout(() => {
                  uni.navigateBack()
                }, 2000)
              },
            })
          } else {
            uni.showToast({
              icon: 'none',
              title: res.msg,
            })
            clearInterval(this.time)
            this.setTimer(0)
          }
        })
      })
    },
    getCode() {
      // this.disabled = true
      // this.getCodeText = "发送中..." //发送验证码
      // this.getCodeisWaiting = true;
      // this.getCodeBtnColor = "rgba(255,255,255,0.5)" //追加样式，修改颜色
      this.getYzm()
    },
    getYzm() {
      api.selfVerification().then(res => {
        if (res.code == '200') {
          setTimeout(() => {
            uni.showToast({
              title: '验证码已发送',
              icon: 'none',
            }) //弹出提示框
            this.setTimer(60) //调用定时器方法
          }, 1000)
        }
      })
    },
    setTimer(num) {
      this.disabled = true
      let holdTime = num //定义变量并赋值
      this.getCodeText = '重新获取' + '(60)'
      //setInterval（）是一个实现定时调用的函数，可按照指定的周期（以毫秒计）来调用函数或计算表达式。
      //setInterval方法会不停地调用函数，直到 clearInterval被调用或窗口被关闭。
      this.time = setInterval(() => {
        console.log(
          '%c [ holdTime ]-183',
          'font-size:13px; background:#5f6e08; color:#a3b24c;',
          holdTime
        )
        if (holdTime <= 0) {
          this.disabled = false
          this.getCodeisWaiting = false
          this.getCodeBtnColor = '#ffffff'
          this.getCodeText = '获取验证码'
          clearInterval(this.time) //清除该函数
          return //返回前面
        } else {
          this.getCodeText = '重新获取' + '(' + holdTime + ')'
          holdTime--
        }
      }, 1000)
    },
  },
}
</script>

<style lang="scss" scoped>
:v-deep uni-button:after {
  border: none;
}
:v-deep .u-form-item__body__right__message {
  margin-left: 170rpx !important;
}
.code-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.yzm {
  // width: 161rpx;
  height: 74rpx;
  line-height: 74rpx;
  text-align: center;
  color: #fff;
  background: #2fbc42;
  border-radius: 40rpx;
  margin-left: 30rpx;
  font-size: 24rpx;
}
:v-deep .u-form-item:nth-child(2) {
  width: 670rpx;
}
.contents {
  background-color: #fff;
}
page {
  background-color: #f2f2f2;
}
:v-deep .width-s {
  width: 200rpx !important;
}
.paddings {
  padding: 30rpx 0rpx;
  margin: 0 40rpx;
}
.border-color {
  border-radius: 50rpx;
  padding-left: 50rpx !important;
  font-size: 28rpx;
  width: 400rpx;
  height: 60rpx;
  background: #f5f6f8;
  border: none;
}
.btn {
  background-color: #005BAC;
  border: none;
  height: 92rpx;
  line-height: 92rpx;
  font-size: 30rpx;
  margin: 40rpx auto;
  width: 690rpx;
}
</style>
