From 25b2ba1cf86bc3439e7ad2acf2cd4a9ea7e4b0ed Mon Sep 17 00:00:00 2001
From: dcc <dcc@163.com>
Date: Fri, 28 Jun 2024 09:28:04 +0800
Subject: [PATCH] 123

---
 src/page/register/index.vue |  643 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 288 insertions(+), 355 deletions(-)

diff --git a/src/page/register/index.vue b/src/page/register/index.vue
index 1a41fbb..5ebfc03 100644
--- a/src/page/register/index.vue
+++ b/src/page/register/index.vue
@@ -1,82 +1,39 @@
 <template>
-  <div class="register">
-    <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>
+    <div class="register">
+        <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>
+        <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>
+        <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model.trim="username"
+            :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
 
-    <ExInput :placeholderText="$t('请输入姓名')" v-model="form.username" />
-    <ExInput :placeholderText="$t('请输入邮箱地址')" v-model="form.email" />
-    <div class="code-box">
-      <div
-        class="btn btnMain code-but"
-        :class="`${codeButTexst === '发送验证码' ? '' : ' S-but'}`"
-        @click="sendCode"
-      >
-        {{ $t(codeButTexst) }}{{ codeButTexst === "发送验证码" ? "" : " S " }}
-      </div>
+        <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" />
+        <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>
+        </div>
+        <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>
 
-      <ExInput :placeholderText="$t('请输入邮箱验证码')" v-model="form.code" />
-    </div>
-    <ExInput :placeholderText="$t('请输入手机号码')" v-model="form.phone" />
-    <ExInput
-      :placeholderText="$t('密码(6-12个字符)')"
-      v-model="form.password"
-      typeText="password"
-    />
-    <ExInput
-      :placeholderText="$t('请确认密码')"
-      v-model="form.re_password"
-      typeText="password"
-    />
-    <ExInput
-      :placeholderText="$t('请输入邀请码')"
-      v-model="form.usercode"
-      :clearBtn="false"
-    />
-    <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
-      >
-    </div>
-    <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>
+        <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>
+        <div>{{ msg }}</div>
+    </div>
 </template>
 
 <script>
@@ -84,324 +41,300 @@
 import ExInput from "@/components/ex-input";
 import Step from "./step.vue";
 import Axios from "@/API/login.js";
-import AxiosuserCenter from "@/API/userCenter.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";
-// /sendVerifyCode
+import { getStorage } from '@/utils/utis'
 export default {
-  props: {},
-  components: {
-    [Popup.name]: Popup,
-    ExInput,
-    Step,
-    nationalityList,
-    Vcode,
-  },
-  data() {
-    return {
-      // 发送验证码倒计时定时器
-      tiem: null,
-      codeButTexst: "发送验证码",
-      form: {
-        phone: "",
-        email: "",
-        code: "",
-        username: "",
-        password: "",
-        re_password: "",
-        usercode: "",
-      },
-      show: false,
-      msg: "",
-      type: 3, // 1手机 2 邮箱 3账号
-      agree: false,
-      username: "",
-      password: "",
-      repassword: "",
-      invitCode: "", //邀请码
-      activeIndex: 1,
-      typeText: "password",
-      isArea: false,
-      dialCode: 0, //电话号前缀
-      icon: "",
-      img1,
-      img2,
-    };
-  },
-  beforeDestroy() {
-    if (this.tiem) {
-      clearInterval(this.tiem);
-      this.tiem = null;
-    }
-  },
+    props: {
 
-  mounted() {
-    let usercode = getStorage("usercode");
-    if (usercode) {
-      this.invitCode = usercode;
+    },
+    components: {
+        [Popup.name]: Popup,
+        ExInput,
+        Step,
+        nationalityList,
+        Vcode
+    },
+    data() {
+        return {
+            show: false,
+            msg: '',
+            type: 3,// 1手机 2 邮箱 3账号
+            agree: false,
+            username: '',
+            password: "",
+            repassword: '',
+            invitCode: '',//邀请码
+            activeIndex: 1,
+            typeText: "password",
+            isArea: false,
+            dialCode: 0, //电话号前缀
+            icon: '',
+            img1,
+            img2,
+        }
+    },
+    mounted() {
+        let usercode = getStorage('usercode')
+        if (usercode) {
+            this.invitCode = usercode;
+        }
+    },
+    computed: {
+        ...mapGetters({
+            theme: 'home/theme'
+        }),
+    },
+    methods: {
+        ...mapActions('user', [GET_USERINFO]),
+        getRegType(activeIndex, bFlag) {
+            switch (activeIndex) {
+                case 0:
+                    return bFlag ? this.$t('账号') : this.$t('请输入账号');
+                case 1:
+                    return bFlag ? this.$t('邮箱') : this.$t('请输入邮箱');
+                case 2:
+                    return bFlag ? this.$t('手机号') : this.$t('请输入手机号');
+            }
+        },
+        onClose() {
+            console.log('onClose')
+        },
+        onSuccess() {
+            console.log('onSuccess')
+            this.registerApi();
+            this.show = false;
+        },
+        onFail() {
+            this.msg = ''
+        },
+        onRefresh() {
+            this.msg = ''
+        },
+        onSelectArea() {
+            this.openBtn();
+        },
+        //打开国家列表底部弹窗
+        openBtn() {
+            this.$refs.controlChild.open();
+        },
+        //获取到当前选中国家的code值
+        getName(params) {
+            this.icon = params[1];
+            this.dialCode = params[2];
+        },
+        agreeProt() {
+            this.agree = !this.agree
+        },
+        register() {
+            // if (this.activeIndex == 0){
+            //     let match = this.username.search(/@/);
+            //     if (this.username == '' || match == -1) {
+            //         this.$toast(this.$t('请输入正确的邮箱地址'));
+            //         return
+            //     }
+            // }else{
+            //     if (this.username == '' ) {
+            //         this.$toast(this.$t('请输入手机号'));
+            //         return
+            //     }
+            // }
+			if(this.invitCode ==''){
+				this.$toast(this.$t('请输入邀请码'));
+				        return
+			}
+            switch (this.activeIndex) {
+                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位'));
+                            return;
+                        }
+                        break;
+                    }
+                case 1:
+                    {
+                        let match = this.username.search(/@/);
+                        if (this.username == '' || match == -1) {
+                            this.$toast(this.$t('请输入正确的邮箱地址'));
+                            return;
+                        }
+                        break;
+                    }
+                case 2:
+                    {
+                        if (this.username == '') {
+                            this.$toast(this.$t('请输入手机号'));
+                            return;
+                        }
+                        break;
+                    }
+            }
+            if (this.password == '') {
+                this.$toast(this.$t('请输入密码'));
+                return
+            }
+            if (this.password.length < 6) {
+                this.$toast(this.$t('密码(6-12个字符)'));
+                return
+            }
+            if (this.repassword !== this.password) {
+                this.$toast(this.$t('密码不一致'));
+                return
+            }
+            if (!this.agree) {
+                this.$toast(this.$t('请同意服务条款'));
+                return
+            }
+            this.show = true
+        },
+        changeIndex(index) {
+            this.activeIndex = index;
+            switch (index) {
+                case 0:
+                case 1: {
+                    this.isArea = false;
+                    break;
+                }
+                case 2: {
+                    this.isArea = true;
+                    break;
+                }
+            }
+        },
+        registerApi() {
+			
+            switch (this.activeIndex) {
+                case 0:
+                    {
+                        this.type = 3;
+                        break;
+                    }
+                case 1:
+                    {
+                        this.type = 2;
+                        break;
+                    }
+                case 2:
+                    {
+                        this.type = 1;
+                        break;
+                    }
+            }
+            Axios.registerUser({
+                username: (this.activeIndex == 0 || this.activeIndex == 1) ? this.username : `${this.username}`,
+                password: this.password,
+                re_password: this.repassword,
+                type: this.type,
+                usercode: this.invitCode,
+            }).then((res) => {
+                this.GET_USERINFO(res.data)
+                if (this.activeIndex == 0) {
+                    this.$router.push('/setFond')
+                }
+                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)); }
+            });
+        }
     }
-  },
-  computed: {
-    ...mapGetters({
-      theme: "home/theme",
-    }),
-  },
-  methods: {
-    async bindEmail() {
-      await AxiosuserCenter.bindEmail({
-        email: this.form.email,
-        verifcode: this.form.code,
-      });
-      return true;
-    },
-    ...mapActions("user", [GET_USERINFO]),
-    async sendCode() {
-      // codeButTexst === '发送验证码' ? '' : ' S-but'
-      if (this.codeButTexst !== "发送验证码") {
-        return;
-      }
-      if (this.form.email) {
-        await Axios.sendVerifyCode({
-          target: this.form.email,
-        });
-        this.codeButTexst = 60;
-        this.tiem = setInterval(() => {
-          this.codeButTexst = this.codeButTexst - 1;
-          if (this.codeButTexst === 0) {
-            this.codeButTexst = "发送验证码";
-            clearInterval(this.tiem);
-          }
-        }, 1000);
-      }
-    },
-    getRegType(activeIndex, bFlag) {
-      switch (activeIndex) {
-        case 0:
-          return bFlag ? this.$t("账号") : this.$t("请输入账号");
-        case 1:
-          return bFlag ? this.$t("邮箱") : this.$t("请输入邮箱");
-        case 2:
-          return bFlag ? this.$t("手机号") : this.$t("请输入手机号");
-      }
-    },
-    onClose() {
-      console.log("onClose");
-    },
-    async onSuccess() {
-      this.show = false;
-      //   this.registerApi();
-      AxiosuserCenter.invitationCode({
-        email: this.form.email,
-        verificationCode: this.form.code,
-        code: this.form.usercode,
-        phone: this.form.phone,
-      })
-        .then(() => {
-          this.registerApi();
-        })
-        .catch((err) => {
-          //   this.$toast(this.$t(res.msg));
-        });
-    },
-    onFail() {
-      this.msg = "";
-    },
-    onRefresh() {
-      this.msg = "";
-    },
-    onSelectArea() {
-      this.openBtn();
-    },
-    //打开国家列表底部弹窗
-    openBtn() {
-      this.$refs.controlChild.open();
-    },
-    //获取到当前选中国家的code值
-    getName(params) {
-      this.icon = params[1];
-      this.dialCode = params[2];
-    },
-    agreeProt() {
-      this.agree = !this.agree;
-    },
-    register() {
-      if (this.form.username == "") {
-        return this.$toast(this.$t("请输入姓名"));
-      }
-      let match = this.form.email.search(/@/);
-      if (this.form.email == "" || match == -1) {
-        return this.$toast(this.$t("请输入正确的邮箱地址"));
-      }
-      if (this.form.phone == "") {
-        this.$toast(this.$t("请输入手机号"));
-        return;
-      }
-      if (this.form.password == "") {
-        this.$toast(this.$t("请输入密码"));
-        return;
-      }
-      if (this.form.password !== this.form.re_password) {
-        this.$toast(this.$t("密码不一致"));
-        return;
-      }
-      if (this.form.usercode == "") {
-        this.$toast(this.$t("请输入邀请码"));
-        return;
-      }
-      if (!this.agree) {
-        this.$toast(this.$t("请同意服务条款"));
-        return;
-      }
-      this.show = true;
-    },
-
-    async registerApi() {
-      this.$store.state.user.userInfo.token = undefined;
-      console.log({
-        ...this.form,
-        type: 0,
-        em: this.form.email,
-      });
-      Axios.registerUser({
-        ...this.form,
-        type: 4,
-        em: this.form.email,
-      })
-        .then((res) => {
-          console.log(res, "=======");
-          // this.GET_USERINFO(res.data);
-          // this.bindEmail(res.data.token);
-          this.$toast(this.$t("注册成功"));
-          setTimeout(() => {
-            this.$router.push("login");
-          }, 1000);
-        })
-        .catch((error) => {
-          this.codeButTexst = "发送验证码";
-          clearInterval(this.tiem);
-          if (error.code === "ECONNABORTED") {
-            this.$toast(this.$t("网络超时!"));
-          } else if (error.msg !== undefined) {
-            this.$toast(this.$t(error.msg));
-          }
-        });
-    },
-  },
-};
+}
 </script>
 
 <style lang="scss" scoped>
 .register {
-  width: 100%;
-  box-sizing: border-box;
-  padding: 32px;
-  font-size: 26px;
+    width: 100%;
+    box-sizing: border-box;
+    padding: 32px;
+    font-size: 26px;
 }
 
 .top {
-  padding-left: 18px;
-  padding-top: 18px;
+    padding-left: 18px;
+    padding-top: 18px;
 
-  img {
-    width: 37px;
-    height: 37px;
-  }
+    img {
+        width: 37px;
+        height: 37px;
+    }
 }
 
 .title {
-  font-weight: 700;
-  font-size: 52px;
-  margin-top: 54px;
-  margin-bottom: 66px;
+    font-weight: 700;
+    font-size: 52px;
+    margin-top: 54px;
+    margin-bottom: 66px;
 }
 
 .re-tab {
-  margin-bottom: 44px;
+    margin-bottom: 44px;
 
-  div {
-    padding: 0 36px;
-    height: 68px;
-    line-height: 68px;
-    text-align: center;
-    border-radius: 8px;
-    margin-right: 20px;
-  }
-
-  .active {
-    @include themify() {
-      background: themed("tab_background");
+    div {
+        padding: 0 36px;
+        height: 68px;
+        line-height: 68px;
+        text-align: center;
+        border-radius: 8px;
+        margin-right: 20px;
     }
 
-    @include themify() {
-      color: themed("text_color");
+    .active {
+        @include themify() {
+            background: themed("tab_background");
+        }
+
+
+        @include themify() {
+            color: themed("text_color");
+        }
     }
-  }
 }
 
 .forget {
-  color: #1d91ff;
-  font-size: 24px;
-  line-height: 28px;
+    color: #1D91FF;
+    font-size: 24px;
+    line-height: 28px;
 }
 
 .btn {
-  color: #fff;
-  height: 88px;
-  line-height: 88px;
-  text-align: center;
-  font-size: 32px;
-  margin-top: 40px;
-  border-radius: 10px;
+    color: #fff;
+    height: 88px;
+    line-height: 88px;
+    text-align: center;
+    font-size: 32px;
+    margin-top: 40px;
+    border-radius: 10px;
 }
 
 .noTips {
-  margin-top: 48px;
+    margin-top: 48px;
 }
 
 .protocol {
-  display: flex;
-  align-items: center;
-  height: 30px;
-
-  i {
-    width: 30px;
+    display: flex;
+    align-items: center;
     height: 30px;
-    margin-right: 18px;
 
-    img {
-      width: 100%;
-      height: 100%;
+    i {
+        width: 30px;
+        height: 30px;
+        margin-right: 18px;
+
+        img {
+            width: 100%;
+            height: 100%;
+        }
     }
-  }
-}
-
-.code-box {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  //   justify-content: space-between;
-
-  .code-but {
-    width: 200px;
-    font-size: 23px;
-    text-align: center;
-    background-color: #6ff;
-    margin-right: 20px;
-    margin-top: 0;
-  }
-}
-::v-deep .inputCom {
-  width: 100%;
-  padding-bottom: 10px;
-}
-.S-but {
-  // background-color:;
-  opacity: 0.5 !important;
 }
 </style>

--
Gitblit v1.9.3