personal.vue 6.08 KB
<template>
  <div>
    <div class="mt30 mb60">
      <div class="box">
        <!--    国内-机构注册-->
        <el-card>
          <el-steps :active="activeStep" finish-status="success" align-center>
            <el-step :title="language==0?'创建账号':'create an account'"/>
            <el-step :title="language==0?'注册完成':'stered successfully'" />
          </el-steps>
        </el-card>

        <div class="mt20"></div>
        <div v-if="activeStep==0">
          <el-card style="min-height: 50vh">
            <div class="pt30">
              <el-form class="d-form" size="large" :label-width="language==0?120:180"
                       style="max-width: 500px;margin: auto">
                <el-form-item :label="language==0?'WDSF卡号':'WDSF'" required>
                  <el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode">
                    <template #append>
                      <el-button type="primary" plain style="width: 110px" @click="checkCard">
                        <el-icon v-if="checkStatus" size="16" color="#67C23A"><CircleCheckFilled /></el-icon>
                        <span v-else>{{ language==0?'校验卡号':'Check Code' }}</span>
                      </el-button>
                    </template>
                  </el-input>

                </el-form-item>
                <el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required>
                  <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/>
                </el-form-item>
                <el-form-item :label="language==0?'验证码':'Code'" required>
                  <el-input v-model="form.code">
                    <template #append>
                      <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
                        <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
                          {{ totalSeconds }} {{ language==0?'秒':'s' }}
                        </count-down>
                        <span v-else>{{ language==0?'发送验证码':'Send code' }}</span>
                      </el-button>
                    </template>
                  </el-input>
                </el-form-item>
                <div class="h30"></div>
                <div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Password' }} <span
                    v-if="language==0">(登录时需要验证,保护账户信息)</span></div>
                <div class="h20"></div>
                <el-form-item :label="language==0?'密码':'Password'" required>
                  <el-input type="password" show-password v-model="form.password"
                            :placeholder="language==0?'6-16位密码。区分大小写':''"/>
                </el-form-item>
                <el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
                  <el-input type="password" show-password v-model="form.confirmPassword" @blur="vconfirmPassword"
                            :placeholder="language==0?'再次输入密码':'Confirm Password'"/>
                </el-form-item>
              </el-form>
            </div>
            <div class="text-center">
              <!--      <el-button class="primary-kx" round @click="goBack">取消</el-button>-->
              <el-button type="primary" class="btn-lineG w200px" round @click="next">
                {{ language==0?'立即注册':'Register Now' }}
              </el-button>
            </div>
          </el-card>
        </div>
        <div v-if="activeStep==1">
          <Step3 :accont="form.account"/>
        </div>

        <Vcode :show="isShow" @success="codeSuccess()"></Vcode>
      </div>
    </div>
  </div>
</template>

<script setup>
import {ref,toRefs,reactive} from "vue"
import {onMounted} from "@vue/runtime-core";
import Step3 from "./team/step3"
import Vcode from "vue3-puzzle-vcode"
import { ElMessage } from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import cache from '@/plugins/cache'
import {checkWdsf, getCaptchaSms, registerSingle} from "@/apiPc/match";
import {setToken} from "@/utils/auth";
const language = ref(cache.local.get('language') || 0)

const data = reactive({
  isShow:false,
  isCodeTrue:0,
  counting:false,
  checkStatus:false,
  form:{},
  activeStep: 0,
  failVcode:'验证失败,请重试',
  successVcode:'验证通过!',
  sliderText: '拖动滑块完成拼图',
})
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus} = toRefs(data)
onMounted(()=>{
  if(language.value==1){
    failVcode.value = 'Error!'
    successVcode.value = 'Success!'
    sliderText.value = 'Drag the slider to complete the puzzle'
  }
})
function sendsmsMsg() {
  if(!form.value.account){
    if(language.value==0){
      ElMessage.error('请填写手机/邮箱')
    } else {
      ElMessage.error('Please fill in your phone/email address')
    }
    return
  }

  if(counting.value){
    return
  } else {
    isShow.value = true
  }
}
function checkCard() {
  if(!form.value.card){
    if(language.value==0){
      ElMessage.error('请填写WDSF卡号')
    } else {
      ElMessage.error('Please fill in your WDSF code')
    }
    return
  }
  isShow.value = true
}
function verifyCode() {
  if(!form.value.account){
    return
  }
  if(form.value.account.indexOf('@')>-1){
    //邮箱
  }
}
function codeSuccess(msg) {
  console.log('验证通过' + msg);
  isShow.value = false
  isCodeTrue.value += 1
  if(isCodeTrue.value==1){
    checkWdsf({card:form.value.card}).then(res=>{
      checkStatus.value = res.data
    })
  }
  if(isCodeTrue.value==2){
    counting.value = true
    getCaptchaSms({account:form.value.account}).then(res=>{

    })
  }

}
function resetCode(n) {
  isCodeTrue.value = n
}
function next() {
  registerSingle(form.value).then(res=>{
    setToken(res.data.token)
    activeStep.value = 1
  })
}
</script>

<style scoped lang="scss">
.leftboderTT {
  color: var(--el-color-primary);
  font-size: 16px;
  font-weight: 600;

span {
  color: #929AA0;
  font-size: 14px;
}
}
.h20{height: 20px}
.h30{height: 30px}
</style>