| | |
| | | <template> |
| | | <div class="register"> |
| | | <div class="top" @click="$router.go(-1)"><img :src="require(`../../assets/theme/${theme}/image/Union.png`)" alt=""> |
| | | <div class="top" @click="$router.go(-1)"> |
| | | <img |
| | | :src="require(`../../assets/theme/${theme}/image/Union.png`)" |
| | | alt="" |
| | | /> |
| | | </div> |
| | | <Step :step="1"></Step> |
| | | <div class="title textColor">{{ $t('注册') }}</div> |
| | | <!-- <Step :step="1"></Step> --> |
| | | <div class="title textColor">{{ $t("注册") }}</div> |
| | | <div class="flex re-tab"> |
| | | <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ $t('账号') }}</div>--> |
| | | <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('邮箱') }}</div> |
| | | <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('手机号') }}</div> |
| | | <!-- <div |
| | | class="textColor1" |
| | | :class="activeIndex == 1 ? 'active' : ''" |
| | | @click="changeIndex(1)" |
| | | > |
| | | {{ $t("邮箱") }} |
| | | </div> --> |
| | | <!-- <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('手机号') }}</div> --> |
| | | </div> |
| | | <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model.trim="username" |
| | | :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" /> |
| | | <ExInput |
| | | :label="getRegType(activeIndex, true)" |
| | | :placeholderText="getRegType(activeIndex, false)" |
| | | v-model.trim="username" |
| | | :area="isArea" |
| | | :dialCode="dialCode" |
| | | @selectArea="onSelectArea" |
| | | :icon="icon" |
| | | /> |
| | | |
| | | <ExInput :label="$t('设置密码')" :placeholderText="$t('密码(6-12个字符)')" v-model="password" typeText="password" /> |
| | | <ExInput :label="$t('确认密码')" :placeholderText="$t('请确认密码')" v-model="repassword" typeText="password" /> |
| | | <ExInput :label="$t('邀请码(选填)')" :placeholderText="$t('请输入邀请码')" v-model="invitCode" :clearBtn="false" /> |
| | | <ExInput |
| | | :label="$t('设置密码')" |
| | | :placeholderText="$t('密码(6-12个字符)')" |
| | | v-model="password" |
| | | typeText="password" |
| | | /> |
| | | <ExInput |
| | | :label="$t('确认密码')" |
| | | :placeholderText="$t('请确认密码')" |
| | | v-model="repassword" |
| | | typeText="password" |
| | | /> |
| | | <ExInput |
| | | :label="$t('资金密码')" |
| | | :placeholderText="$t('资金密码(6位数字)')" |
| | | v-model="safeword" |
| | | typeText="password" |
| | | /> |
| | | <ExInput |
| | | :label="$t('确认资金密码')" |
| | | :placeholderText="$t('确认资金密码')" |
| | | v-model="resafeword" |
| | | typeText="password" |
| | | /> |
| | | <ExInput |
| | | :label="$t('邀请码(选填)')" |
| | | :placeholderText="$t('请输入邀请码')" |
| | | v-model="invitCode" |
| | | :clearBtn="false" |
| | | /> |
| | | <!-- <div class="title textColor">{{ $t("邮箱验证") }}</div> --> |
| | | <p>{{ $t("verifyEmailTips", { account: account }) }}</p> |
| | | <div class="iptbox inputBackground"> |
| | | <input |
| | | class="inputBackground textColor" |
| | | type="text" |
| | | :placeholder="$t('请输入验证码')" |
| | | v-model="verifyCode" |
| | | /> |
| | | <span @click="senCode" |
| | | >{{ $t("发送验证码") }} |
| | | <template v-if="time"> ({{ time }})s</template></span |
| | | > |
| | | </div> |
| | | <div class="protocol textColor"> |
| | | <i @click="agreeProt"> |
| | | <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" /> |
| | | <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" /> |
| | | </i> |
| | | {{ $t('我已阅读并同意') }}<span class="colorMain" @click="$router.push('/TermsOfService?serviceTerm=1')">{{ $t('服务条款') |
| | | }}</span> |
| | | {{ $t("我已阅读并同意") |
| | | }}<span |
| | | class="colorMain" |
| | | @click="$router.push('/TermsOfService?serviceTerm=1')" |
| | | >{{ $t("服务条款") }}</span |
| | | > |
| | | </div> |
| | | <div class="btn btnMain" @click="register">{{ $t('注册') }}</div> |
| | | <div class="noTips textColor">{{ $t('已有账号') }}<span class="colorMain" @click="$router.push('/login')"> |
| | | {{ $t('去登录') }}</span> |
| | | <div class="btn btnMain" @click="register">{{ $t("注册") }}</div> |
| | | <div class="noTips textColor"> |
| | | {{ $t("已有账号") |
| | | }}<span class="colorMain" @click="$router.push('/login')"> |
| | | {{ $t("去登录") }}</span |
| | | > |
| | | </div> |
| | | <nationality-list ref='controlChild' :title="$t('选择区域码')" @getName="getName(arguments)"></nationality-list> |
| | | <nationality-list |
| | | ref="controlChild" |
| | | :title="$t('选择区域码')" |
| | | @getName="getName(arguments)" |
| | | ></nationality-list> |
| | | |
| | | <Vcode :imgs="[img1, img2]" :show="show" @success="onSuccess" :canvasHeight="200" @fail="onFail" |
| | | @close="show = false;" sliderText='' :successText="$t('验证通过!')" :failText="$t('验证失败,请重试')" /> |
| | | <Vcode |
| | | :imgs="[img1, img2]" |
| | | :show="show" |
| | | @success="onSuccess" |
| | | :canvasHeight="200" |
| | | @fail="onFail" |
| | | @close="show = false" |
| | | sliderText="" |
| | | :successText="$t('验证通过!')" |
| | | :failText="$t('验证失败,请重试')" |
| | | /> |
| | | |
| | | <div>{{ msg }}</div> |
| | | </div> |
| | |
| | | import ExInput from "@/components/ex-input"; |
| | | import Step from "./step.vue"; |
| | | import Axios from "@/API/login.js"; |
| | | import { mapActions, mapGetters } from 'vuex'; |
| | | import { GET_USERINFO } from '@/store/const.store'; |
| | | import nationalityList from '../authentication/components/nationalityList.vue' |
| | | import { mapActions, mapGetters } from "vuex"; |
| | | import { GET_USERINFO } from "@/store/const.store"; |
| | | import nationalityList from "../authentication/components/nationalityList.vue"; |
| | | import Vcode from "vue-puzzle-vcode"; |
| | | import img1 from "../../assets/image/slider/1.png"; |
| | | import img2 from "../../assets/image/slider/2.png"; |
| | | import { getStorage } from '@/utils/utis' |
| | | import { getStorage } from "@/utils/utis"; |
| | | export default { |
| | | props: { |
| | | |
| | | }, |
| | | props: {}, |
| | | components: { |
| | | [Popup.name]: Popup, |
| | | ExInput, |
| | | Step, |
| | | nationalityList, |
| | | Vcode |
| | | Vcode, |
| | | }, |
| | | data() { |
| | | return { |
| | | show: false, |
| | | msg: '', |
| | | msg: "", |
| | | type: 3,// 1手机 2 邮箱 3账号 |
| | | agree: false, |
| | | username: '', |
| | | username: "", |
| | | password: "", |
| | | repassword: '', |
| | | invitCode: '',//邀请码 |
| | | repassword: "", |
| | | resafeword: "", |
| | | safeword: "", |
| | | invitCode: "", //邀请码 |
| | | activeIndex: 1, |
| | | typeText: "password", |
| | | isArea: false, |
| | | dialCode: 0, //电话号前缀 |
| | | icon: '', |
| | | icon: "", |
| | | img1, |
| | | img2, |
| | | } |
| | | account: "", |
| | | timer: "", |
| | | time: 0, |
| | | verifyCode: "", |
| | | }; |
| | | }, |
| | | mounted() { |
| | | let usercode = getStorage('usercode') |
| | | let usercode = getStorage("usercode"); |
| | | if (usercode) { |
| | | this.invitCode = usercode; |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters({ |
| | | theme: 'home/theme' |
| | | theme: "home/theme", |
| | | }), |
| | | }, |
| | | methods: { |
| | | ...mapActions('user', [GET_USERINFO]), |
| | | ...mapActions("user", [GET_USERINFO]), |
| | | getRegType(activeIndex, bFlag) { |
| | | switch (activeIndex) { |
| | | case 0: |
| | | return bFlag ? this.$t('账号') : this.$t('请输入账号'); |
| | | return bFlag ? this.$t("账号") : this.$t("请输入账号"); |
| | | case 1: |
| | | return bFlag ? this.$t('邮箱') : this.$t('请输入邮箱'); |
| | | return bFlag ? this.$t("邮箱") : this.$t("请输入邮箱"); |
| | | case 2: |
| | | return bFlag ? this.$t('手机号') : this.$t('请输入手机号'); |
| | | return bFlag ? this.$t("手机号") : this.$t("请输入手机号"); |
| | | } |
| | | }, |
| | | onClose() { |
| | | console.log('onClose') |
| | | console.log("onClose"); |
| | | }, |
| | | onSuccess() { |
| | | console.log('onSuccess') |
| | | console.log("onSuccess"); |
| | | this.registerApi(); |
| | | this.show = false; |
| | | }, |
| | | onFail() { |
| | | this.msg = '' |
| | | this.msg = ""; |
| | | }, |
| | | onRefresh() { |
| | | this.msg = '' |
| | | this.msg = ""; |
| | | }, |
| | | onSelectArea() { |
| | | this.openBtn(); |
| | |
| | | this.dialCode = params[2]; |
| | | }, |
| | | agreeProt() { |
| | | this.agree = !this.agree |
| | | this.agree = !this.agree; |
| | | }, |
| | | register() { |
| | | // if (this.activeIndex == 0){ |
| | |
| | | // } |
| | | // } |
| | | switch (this.activeIndex) { |
| | | case 0: |
| | | { |
| | | if (this.username == '') { |
| | | this.$toast(this.$t('请输入账号')); |
| | | case 0: { |
| | | if (this.username == "") { |
| | | this.$toast(this.$t("请输入账号")); |
| | | return; |
| | | } |
| | | if (this.username.length < 6 || this.username.length > 30) { |
| | | this.$toast(this.$t('账号长度必须6-30位')); |
| | | this.$toast(this.$t("账号长度必须6-30位")); |
| | | return; |
| | | } |
| | | break; |
| | | } |
| | | case 1: |
| | | { |
| | | case 1: { |
| | | let match = this.username.search(/@/); |
| | | if (this.username == '' || match == -1) { |
| | | this.$toast(this.$t('请输入正确的邮箱地址')); |
| | | if (this.username == "" || match == -1) { |
| | | this.$toast(this.$t("请输入正确的邮箱地址")); |
| | | return; |
| | | } |
| | | break; |
| | | } |
| | | case 2: |
| | | { |
| | | if (this.username == '') { |
| | | this.$toast(this.$t('请输入手机号')); |
| | | case 2: { |
| | | if (this.username == "") { |
| | | this.$toast(this.$t("请输入手机号")); |
| | | return; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (this.password == '') { |
| | | this.$toast(this.$t('请输入密码')); |
| | | return |
| | | if (this.password == "") { |
| | | this.$toast(this.$t("请输入密码")); |
| | | return; |
| | | } |
| | | if (this.password.length < 6) { |
| | | this.$toast(this.$t('密码(6-12个字符)')); |
| | | return |
| | | this.$toast(this.$t("密码(6-12个字符)")); |
| | | return; |
| | | } |
| | | if (this.repassword !== this.password) { |
| | | this.$toast(this.$t('密码不一致')); |
| | | return |
| | | this.$toast(this.$t("密码不一致")); |
| | | return; |
| | | } |
| | | if (!this.agree) { |
| | | this.$toast(this.$t('请同意服务条款')); |
| | | return |
| | | this.$toast(this.$t("请同意服务条款")); |
| | | return; |
| | | } |
| | | this.show = true |
| | | if (this.verifyCode.length < 6) { |
| | | this.$toast(this.$t("请输入6位验证码")); |
| | | return; |
| | | } |
| | | // this.show = true |
| | | this.registerApi(); |
| | | }, |
| | | bindEmail() { |
| | | Axios.bindEmail({ |
| | | email: this.account, |
| | | verifcode: this.verifyCode, |
| | | }) |
| | | .then((res) => { |
| | | this.$toast(this.$t("绑定成功")); |
| | | // this.$router.push('/setFond') |
| | | this.setSafewordReg(); |
| | | }) |
| | | .catch((error) => { |
| | | if (error.code === "ECONNABORTED") { |
| | | this.$toast(this.$t("网络超时!")); |
| | | } else if (error.msg !== undefined) { |
| | | this.$toast(this.$t(error.msg)); |
| | | } |
| | | }); |
| | | }, |
| | | changeIndex(index) { |
| | | this.activeIndex = index; |
| | |
| | | }, |
| | | registerApi() { |
| | | switch (this.activeIndex) { |
| | | case 0: |
| | | { |
| | | case 0: { |
| | | this.type = 3; |
| | | break; |
| | | } |
| | | case 1: |
| | | { |
| | | case 1: { |
| | | this.type = 2; |
| | | break; |
| | | } |
| | | case 2: |
| | | { |
| | | case 2: { |
| | | this.type = 1; |
| | | break; |
| | | } |
| | | } |
| | | Axios.registerUser({ |
| | | username: (this.activeIndex == 0 || this.activeIndex == 1) ? this.username : `${this.username}`, |
| | | username: |
| | | this.activeIndex == 0 || this.activeIndex == 1 |
| | | ? this.username |
| | | : `${this.username}`, |
| | | password: this.password, |
| | | re_password: this.repassword, |
| | | re_safeword: this.resafeword, |
| | | safeword: this.safeword, |
| | | type: this.type, |
| | | usercode: this.invitCode, |
| | | }).then((res) => { |
| | | this.GET_USERINFO(res.data) |
| | | if (this.activeIndex == 0||this.activeIndex == 2) { |
| | | this.$router.push('/setFond') |
| | | verifcode: this.verifyCode, |
| | | }) |
| | | .then((res) => { |
| | | this.GET_USERINFO(res.data); |
| | | // if (this.activeIndex == 0 || this.activeIndex == 2) { |
| | | this.$router.push("/finish"); |
| | | // } else { |
| | | // this.$router.push('/userCenter') |
| | | // this.$router.push({ |
| | | // name: "verify", |
| | | // query: { |
| | | // type: this.activeIndex, |
| | | // account: |
| | | // this.activeIndex == 1 ? this.username : `${this.username}`, |
| | | // }, |
| | | // }); |
| | | // } |
| | | }) |
| | | .catch((error) => { |
| | | if (error.code === "ECONNABORTED") { |
| | | this.$toast(this.$t("网络超时!")); |
| | | } else if (error.msg !== undefined) { |
| | | this.$toast(this.$t(error.msg)); |
| | | } |
| | | else { |
| | | this.$router.push({ name: 'verify', query: { type: this.activeIndex, account: this.activeIndex == 1 ? this.username : `${this.username}` } }) |
| | | } |
| | | }).catch((error) => { |
| | | if (error.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); } |
| | | else if (error.msg !== undefined) { this.$toast(this.$t(error.msg)); } |
| | | }); |
| | | }, |
| | | senCode() { |
| | | if (this.time > 0) { |
| | | return false; |
| | | } |
| | | Axios.sendVerifyCode({ |
| | | target: this.username, |
| | | }) |
| | | .then((res) => { |
| | | this.time = 30; |
| | | this.timer = setInterval(() => { |
| | | if (this.time > 0) { |
| | | this.time = this.time - 1; |
| | | } else { |
| | | this.time = 0; |
| | | clearInterval(this.timer); |
| | | } |
| | | }, 1000); |
| | | }) |
| | | .catch((error) => { |
| | | if (error.code === "ECONNABORTED") { |
| | | this.$toast(this.$t("网络超时!")); |
| | | } else if (error.msg !== undefined) { |
| | | this.$toast(this.$t(error.msg)); |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | background: themed("tab_background"); |
| | | } |
| | | |
| | | |
| | | @include themify() { |
| | | color: themed("text_color"); |
| | | } |
| | |
| | | } |
| | | |
| | | .forget { |
| | | color: #1D91FF; |
| | | color: #1d91ff; |
| | | font-size: 24px; |
| | | line-height: 28px; |
| | | } |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | height: 30px; |
| | | |
| | | margin-top: 20px; |
| | | i { |
| | | width: 30px; |
| | | height: 30px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .iptbox { |
| | | height: 88px; |
| | | margin-top: 16px; |
| | | padding: 0 20px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | border-radius: 6px; |
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | | border: none; |
| | | } |
| | | span { |
| | | color: #1d91ff; |
| | | } |
| | | } |
| | | </style> |