1
jhzh
2025-04-04 9b2bee1321e99dfce7fe8442f750b1300391e841
1
14 files modified
1 files added
1087 ■■■■■ changed files
src/API/fund.api.js 11 ●●●●● patch | view | raw | blame | history
src/API/login.js 16 ●●●●● patch | view | raw | blame | history
src/components/ex-nav/index.vue 44 ●●●● patch | view | raw | blame | history
src/components/footer/index.vue 1 ●●●● patch | view | raw | blame | history
src/components/history-item/index.vue 2 ●●● patch | view | raw | blame | history
src/components/ioe-swiper/index.vue 4 ●●● patch | view | raw | blame | history
src/page/assetsCenter/index.vue 2 ●●● patch | view | raw | blame | history
src/page/home.vue 16 ●●●●● patch | view | raw | blame | history
src/page/register/index.vue 754 ●●●●● patch | view | raw | blame | history
src/page/trade/index.vue 8 ●●●● patch | view | raw | blame | history
src/page/transfer.vue 31 ●●●●● patch | view | raw | blame | history
src/page/userCenter/index.vue 4 ●●●● patch | view | raw | blame | history
src/page/withdraw/withdrawPage.vue 22 ●●●●● patch | view | raw | blame | history
src/page/withdraw/withdrawalSecurityVerification_huazhuan.vue 157 ●●●●● patch | view | raw | blame | history
src/router/router.js 15 ●●●●● patch | view | raw | blame | history
src/API/fund.api.js
@@ -238,3 +238,14 @@
        }
    })
}
// 获取资金账户
export const getwalletGrther = (params) => {
  return request({
    url: "/api/walletGrther!getParameter.action",
    method: "GET",
    params: {
      currency:params.currency,
      fromTo:params.fromTo,
    },
  });
};
src/API/login.js
@@ -61,9 +61,23 @@
    }, params)
};
const save_email = (params) => {
    return httpJson({
        url: "/api/localuser!save_email.action",
        method: "get",
        isLoading: true
    }, params)
};
const registerNoVerifcodeSafeword = (params) => {
    return httpJson({
        url: "/api/localuser!registerNoVerifcodeSafeword.action",
        method: "get",
        isLoading: true
    }, params)
};
const apiList = {
    getCurrentProjectInfo, registerUser, sendVerifyCode, loginUser, helpCenter, registerTest
    getCurrentProjectInfo, registerUser, sendVerifyCode, loginUser, helpCenter, registerTest,save_email,registerNoVerifcodeSafeword
}
export default apiList
src/components/ex-nav/index.vue
@@ -57,12 +57,12 @@
        path: '/exchange/exchangePage'
      },
      {
        name: this.$t('理财'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_1.png`),
        // path: '/fm-home',
          path: '/fund'
      },
    //   {
    //     name: this.$t('理财'),
    //     icon: require(`../../assets/theme/${this.theme}/image/new/img_1.png`),
    //     // path: '/fm-home',
          // path: '/fund'
    //   },
      {
        name: this.$t('现货账户'),
@@ -83,11 +83,11 @@
        icon: require(`../../assets/theme/${this.theme}/image/new/img_4.png`),
        path: '/machine'
      },
      {
        name: this.$t('质押借币'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_5.png`),
        path: '/pledgeLoan'
      },
      // {
      //   name: this.$t('质押借币'),
      //   icon: require(`../../assets/theme/${this.theme}/image/new/img_5.png`),
      //   path: '/pledgeLoan'
      // },
      {
        name: this.$t('ICO'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_6.png`),
@@ -120,12 +120,12 @@
        path: '/recharge/rechargeList'
      },
      {
        name: this.$t('理财'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_1.png`),
        // path: '/fm-home',
        path: '/fund'
      },
  //     {
  //       name: this.$t('理财'),
  //       icon: require(`../../assets/theme/${this.theme}/image/new/img_1.png`),
  //       // path: '/fm-home',
        // path: '/fund'
  //     },
      {
        name: this.$t('现货账户'),
@@ -146,11 +146,11 @@
        icon: require(`../../assets/theme/${this.theme}/image/new/img_4.png`),
        path: '/machine'
      },
      {
        name: this.$t('质押借币'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_5.png`),
        path: '/pledgeLoan'
      },
      // {
      //   name: this.$t('质押借币'),
      //   icon: require(`../../assets/theme/${this.theme}/image/new/img_5.png`),
      //   path: '/pledgeLoan'
      // },
      {
        name: this.$t('ICO申购'),
        icon: require(`../../assets/theme/${this.theme}/image/new/img_6.png`),
src/components/footer/index.vue
@@ -124,6 +124,7 @@
::v-deep .van-tabbar-item__text {
  text-align: center;
  font-size: 23px;
}
.bgFooter {
src/components/history-item/index.vue
@@ -39,7 +39,7 @@
            </div>
            <div class="data-item right-text">
                <div class="title">{{ $t('成交量') }}({{ entrust.symbol }})</div>
                <div class="text">{{ ((entrust.price * entrust.volume) / coinPrice).toFixed(5) }}</div>
                <div class="text">{{ entrust.volume.toFixed(5) }}</div>
            </div>
        </div>
    </div>
src/components/ioe-swiper/index.vue
@@ -119,7 +119,9 @@
}
</script>
<style lang="scss" scoped>
.h-304{
    height: 25rem;
}
.ioe-swiper{
  box-sizing: border-box;
  -webkit-overflow-scrolling: touch;
src/page/assetsCenter/index.vue
@@ -159,7 +159,7 @@
                eyetel: false,
                timer: null,
                zjlist: [],
                tab: 1,
                tab: 0,
                index: 0, // 每个组件的二级tab
                funds: {},
                fundsdata: {},
src/page/home.vue
@@ -31,19 +31,17 @@
          }}
        </div>
      </div>
      <div class="flex-centerY">
      <div class="flex-centerY" style="margin: 5px;">
        <img @click="$router.push('/recharge/rechargeList')"
             :src="require(`../assets/theme/${theme}/image/new/img_11.png`)" style="width: 50%;"/>
        <img @click="$router.push('/fund')" :src="require(`../assets/theme/${theme}/image/new/img_12.png`)"
             style="width: 50%;"/>
       <img @click="$router.push('/machine')" :src="require(`../assets/theme/${theme}/image/new/img_14.png`)"
                    style="width: 50%;"/>
      </div>
      <div class="flex-centerY">
      <!-- <div class="flex-centerY"> -->
        <!--        <img @click="$router.push('/pledgeLoan')"  :src="require(`../assets/theme/${theme}/image/new/img_13.png`)" style="width: 50%;" />-->
        <img  @click="wk()" :src="require(`../assets/theme/${theme}/image/new/img_13.png`)"
             style="width: 50%;"/>
        <img @click="$router.push('/machine')" :src="require(`../assets/theme/${theme}/image/new/img_14.png`)"
             style="width: 50%;"/>
      </div>
      <!-- </div> -->
      <list-quatation :listData="qList" @listSort="listSort"/>
<!--      <div class="addBox" v-show="showSave&&false" @click="closeSaveBox">-->
      <!-- <div class="addBox" v-show="false" @click="closeSaveBox">
src/page/register/index.vue
@@ -1,367 +1,449 @@
<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" style="margin-bottom: 0;padding-bottom: 0">{{ $t('注册') }}</div>
    <div style="color: #999999;font-size: 14px;margin: 5px 0 30px 0">{{ $t('欢迎来到')}}ALOKEX</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" style="margin-bottom: 0;padding-bottom: 0">{{ $t('注册') }}</div>
        <div style="color: #999999;font-size: 14px;margin: 5px 0 30px 0">{{ $t('欢迎来到')}}ALOKEX</div>
    <div class="flex re-tab" style="border-bottom: #ccc 1px solid;">
      <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)" v-if="false">{{ $t('账号') }}</div>
      <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('邮箱') }}</div>
       <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)" v-if="false">{{ $t('手机号') }}</div>
    </div>
    <div style="font-size: 14px">
      {{ getRegType(activeIndex, true) }}
    </div>
    <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0" :placeholderText="getRegType(activeIndex, false)"
             v-model.trim="username"
             :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon"/>
        <div class="flex re-tab" style="border-bottom: #ccc 1px solid;">
            <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)" v-if="false">
                {{ $t('账号') }}</div>
            <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('邮箱') }}
            </div>
            <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)" v-if="false">
                {{ $t('手机号') }}</div>
        </div>
        <div style="font-size: 14px">
            {{ getRegType(activeIndex, true) }}
        </div>
        <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"
            :placeholderText="getRegType(activeIndex, false)" v-model.trim="username" :area="isArea"
            :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
    <div style="font-size: 14px">
      {{ $t('设置密码') }}
    </div>
    <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0" :placeholderText="$t('密码(6-12个字符)')" v-model="password" typeText="password"/>
    <div style="font-size: 14px">
      {{ $t('确认密码') }}
    </div>
    <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"   :placeholderText="$t('请确认密码')" v-model="repassword" typeText="password"/>
    <div style="font-size: 14px">
        <div style="font-size: 14px">
            {{ $t('设置密码') }}
        </div>
        <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"
            :placeholderText="$t('密码(6-12个字符)')" v-model="password" typeText="password" />
        <div style="font-size: 14px">
            {{ $t('确认密码') }}
        </div>
        <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"
                    :placeholderText="$t('密码(6-12个字符)')" v-model="repassword" typeText="password" />
        <div style="font-size: 14px">
            {{ $t('资金密码') }}
        </div>
        <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"
                    :placeholderText="$t('请输入密码')" v-model="safeword" typeText="password" />
        <div style="font-size: 14px">
            {{ $t('确认资金密码') }}
        </div>
        <ExInput style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"
            :placeholderText="$t('请确认密码')" v-model="re_safeword" typeText="password" />
        <!-- 邮箱验证码 -->
        <div style="display: flex; align-items: center; margin-top: 20px;">
            <ExInput
                style="border: #bbb 1px solid; border-radius: 3px; padding: 0; padding-bottom: 10px; margin-right: 10px;width: 253px;"
                :placeholderText="$t('请输入邮箱验证码')" v-model="emailVerificationCode" typeText="text" />
            <div style="background-color: #007BFF; color: white; border-radius: 3px; padding: 6px 12px; font-size: 14px;"
                @click="sendVerificationCode">
                {{ time==0? $t('获取验证码'):time }}
            </div>
        </div>
        <!-- <div style="font-size: 14px">
      {{ $t('邀请码(选填)') }}
    </div>
    <ExInput  style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"  :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')">{{
    <ExInput  style="border: #bbb 1px solid;border-radius: 3px;padding: 0;padding-bottom: 10px;margin: 10px 0"  :placeholderText="$t('请输入邀请码')" v-model="invitCode" :clearBtn="false"/> -->
        <div class="protocol textColor" style="margin-top: 20px;">
            <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>
        </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>
import {Popup} from "vant";
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 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 {
        Popup
    } from "vant";
    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 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'
export default {
  props: {},
  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
      //     }
      // }
      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.invitCode == '') {
        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.dialCode}${this.username}`,
        password: this.password,
        re_password: this.repassword,
        type: this.type,
        usercode: this.invitCode,
      }).then((res) => {
        this.$toast(this.$t('注册成功'));
        setTimeout(()=>{
          this.$router.push('/login')
        },1500)
        return;
        // 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.dialCode}${this.username}`
        //     }
        //   })
        // }
      }).catch((error) => {
        if (error.code === 'ECONNABORTED') {
          this.$toast(this.$t('网络超时!'));
        } else if (error.msg !== undefined) {
          this.$toast(this.$t(error.msg));
        }
      });
    }
  }
}
    export default {
        props: {},
        components: {
            [Popup.name]: Popup,
            ExInput,
            Step,
            nationalityList,
            Vcode
        },
        data() {
            return {
                show: false,
                msg: '',
                type: 3, // 1手机 2 邮箱 3账号
                agree: false,
                username: '',
                password: "",
                repassword: '',
                invitCode: '', //邀请码
                re_safeword: '',
                safeword: '',
                activeIndex: 1,
                typeText: "password",
                isArea: false,
                dialCode: 0, //电话号前缀
                emailVerificationCode: '', //邮箱验证码
                icon: '',
                time: 0,
                img1,
                img2,
            }
        },
        mounted() {
            let usercode = getStorage('usercode')
            if (usercode) {
                this.invitCode = usercode;
            }
        },
        computed: {
            ...mapGetters({
                theme: 'home/theme'
            }),
        },
        methods: {
            ...mapActions('user', [GET_USERINFO]),
            sendVerificationCode() {
                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));
                    }
                });
            },
            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.save_email()
                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
                //     }
                // }
                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.invitCode == '') {
                //   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;
                    }
                }
            },
            save_email() {
                Axios.save_email({
                    email: this.username,
                    verifcode: this.emailVerificationCode,
                }).then((res) => {
                }).catch((error) => {
                    if (error.code === 'ECONNABORTED') {
                        this.$toast(this.$t('网络超时!'));
                    } else if (error.msg !== undefined) {
                        this.$toast(this.$t(error.msg));
                    }
                });
            },
            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.dialCode}${this.username}`,
                    password: this.password,
                    re_password: this.repassword,
                    type: this.type,
                    verifcode: this.emailVerificationCode,
                    safeword: this.safeword,
                    re_safeword: this.re_safeword,
                    // usercode: this.invitCode,
                }).then((res) => {
                    this.$toast(this.$t('注册成功'));
                    setTimeout(() => {
                        this.$router.push('/login')
                    }, 1500)
                    return;
                    // 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.dialCode}${this.username}`
                    //     }
                    //   })
                    // }
                }).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>
.register {
  width: 100%;
  box-sizing: border-box;
  padding: 32px;
  font-size: 26px;
}
    .register {
        width: 100%;
        box-sizing: border-box;
        padding: 32px;
        font-size: 26px;
    }
.top {
  padding-left: 18px;
  padding-top: 18px;
    .top {
        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;
}
    .title {
        font-weight: 700;
        font-size: 52px;
        margin-top: 54px;
        margin-bottom: 66px;
    }
.re-tab {
  margin-bottom: 44px;
    .re-tab {
        margin-bottom: 44px;
  div {
    padding: 0 36px;
    height: 68px;
    line-height: 68px;
    text-align: center;
    border-radius: 8px;
    margin-right: 20px;
  }
        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");
    }
        .active {
            @include themify() {
                background: themed("tab_background");
            }
    @include themify() {
      color: themed("text_color");
    }
            @include themify() {
                color: themed("text_color");
            }
    border-bottom: #1976d2 2px solid;
    color: #1976d2 !important;
    padding-bottom: 20px;
    font-size: 16px;
    font-weight: bold;
    border-radius: 0;
  }
}
            border-bottom: #1976d2 2px solid;
            color: #1976d2 !important;
            padding-bottom: 20px;
            font-size: 16px;
            font-weight: bold;
            border-radius: 0;
        }
    }
.forget {
  color: #1D91FF;
  font-size: 24px;
  line-height: 28px;
}
    .forget {
        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;
}
    .btn {
        color: #fff;
        height: 88px;
        line-height: 88px;
        text-align: center;
        font-size: 32px;
        margin-top: 40px;
        border-radius: 10px;
    }
.noTips {
  margin-top: 48px;
}
    .noTips {
        margin-top: 48px;
    }
.protocol {
  display: flex;
  align-items: center;
  height: 30px;
    .protocol {
        display: flex;
        align-items: center;
        height: 30px;
  i {
    width: 30px;
    height: 30px;
    margin-right: 18px;
        i {
            width: 30px;
            height: 30px;
            margin-right: 18px;
    img {
      width: 100%;
      height: 100%;
    }
  }
}
</style>
            img {
                width: 100%;
                height: 100%;
            }
        }
    }
</style>
src/page/trade/index.vue
@@ -79,8 +79,8 @@
                <ul>
                    <li v-for="item in pairsList" :key="item.symbol" class="flex justify-between py-10">
                        <div class="flex items-center">
                            <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                                class="w-52 h-52 rounded-full mr-16" />
                            <!-- <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                                class="w-52 h-52 rounded-full mr-16" /> -->
                            <p class="flex flex-col">
                                <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
                                <span class="font-20 text-grey">{{ item.full_name }}</span>
@@ -101,8 +101,8 @@
                <ul>
                    <li v-for="item in no_zeroList" :key="item.symbol" class="flex justify-between py-10">
                        <div class="flex items-center">
                            <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                                class="w-52 h-52 rounded-full mr-16" />
                            <!-- <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                                class="w-52 h-52 rounded-full mr-16" /> -->
                            <p class="flex flex-col">
                                <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
                                <span class="font-20 text-grey">{{ item.full_name }}</span>
src/page/transfer.vue
@@ -87,8 +87,24 @@
                buttitle:this.$t('交易')+this.$t('账户'),
            };
        },
        mounted(){
            this.getwallet()
        },
        created() {
            this.getwallet()
        },
        beforeRouteUpdate(to, from, next) {
          // 路由更新时调用
          next(vm => {
              this.getwallet()
              // 这里你可以访问到组件实例 `vm`,可以用来调用一些方法
            });
        },
        watch: {
          '$route'(to, from) {
            // 路由变化时手动触发操作
            this.getwallet()
          }
        },
        methods: {
            clickall(){
@@ -162,30 +178,19 @@
                    newcurrency = 'usdc'
                }
                this.$router.push({
                  path: "/Fundverification",
                  path: "/withdraw/securityVerification_zh",
                  query: {
                    currency: newcurrency,
                    fromTo: this.toptitle==(this.$t('资金')+this.$t('账户'))?'1':'2',
                    amount: this.amount
                  },
                });
                // return
                // var data = {
                //     currency: newcurrency,
                //     fromTo: this.toptitle==(this.$t('资金')+this.$t('账户'))?'1':'2',
                //     amount: this.amount
                // }
                // await walletGrthertransfer(data).then((res) => {
                //     console.log(res);
                // });
            },
            async getwallet() {
                await walletGrther().then((data) => {
                    console.log(data.id);
                    this.usdcMoney = err.usdtMoney
                    this.usdcMoney = data.usdtMoney
                }).catch((err)=>{
                    console.log(err.id);
                    this.usdcMoney = err.usdtMoney
                });
            },
            onClickLeft() {
src/page/userCenter/index.vue
@@ -41,7 +41,7 @@
          </div>
        </div>
      </div>
      <div class="flex flex-centerY" style="margin-top: 20px">
      <!-- <div class="flex flex-centerY" style="margin-top: 20px">
        <div @click="$router.push('/recharge/rechargeList')" class="flexY-center" style="flex: 1">
          <img src="../../assets/new/img_1.png" class="ic1"/>
          <div>
@@ -66,7 +66,7 @@
            {{ $t('资产') }}
          </div>
        </div>
      </div>
      </div> -->
     <!-- <div @click="$router.push('/promote')" class="flex flex-centerY css-1uwabd6">
        <img :src="require(`../../assets/theme/${this.theme}/image/yqhy.png`)" style="width: 25px;height: 25px"/>
        <div style="margin-left: 20px">
src/page/withdraw/withdrawPage.vue
@@ -123,7 +123,7 @@
import AxiosWithdraw from "@/API/withdraw.js"
import assetsHead from "@/components/assets-head";
import BarScan from '@/components/scan/scan.vue';
import { _getAllWallet } from "@/API/fund.api";
import { _getAllWallet,walletGrther } from "@/API/fund.api";
import AxiosUser from "@/API/userCenter";
import { mapGetters } from "vuex";
export default {
@@ -298,12 +298,20 @@
        },
        //获取钱包余额
        getAvailable(symbol) {
            _getAllWallet().then((res) => {
                let walletList = res.extends;
                let initObj = walletList.find(item => {
                    return item.symbol.toLowerCase() == symbol.toLowerCase()
                })
                this.usdtBalance = initObj.usable
            walletGrther().then((res) => {
                console.log('symbol.toLowerCase()',symbol.toLowerCase());
                if(symbol.toLowerCase()=='usdt'){
                    this.usdtBalance = res.usdtMoney
                }else if(symbol.toLowerCase()=='eth'){
                    this.usdtBalance = res.ethMoney
                }else{
                    this.usdtBalance = res.btcMoney
                }
                // let walletList = res.extends;
                // let initObj = walletList.find(item => {
                //     return item.symbol.toLowerCase() == symbol.toLowerCase()
                // })
                // this.usdtBalance = initObj.usable
            });
        },
        //点全部
src/page/withdraw/withdrawalSecurityVerification_huazhuan.vue
New file
@@ -0,0 +1,157 @@
<template>
    <div id="withdraw_verify" class="withdraw_verify">
        <assets-head />
        <div class="content">
            <div class="title textColor">{{ $t('安全验证') }}</div>
            <p>{{ $t('请输入资金密码') }}</p>
            <div class="iptbox inputBackground">
                <input class="inputBackground textColor" type="password" :placeholder="$t('请输入密码')" v-model="password">
            </div>
            <div class="mt-40" v-if="this.isGoogleInput">
                <p>{{ $t('请输入谷歌验证码') }}</p>
                <div class="iptbox inputBackground">
                    <input class="inputBackground textColor" type="password" :placeholder="$t('请输入谷歌验证码')"
                        v-model="googleCode">
                </div>
            </div>
            <div class="btn btnMain" @click="confirm">{{ $t('提交') }}</div>
            <div class="mt-42" style="color:#1D91FF;"><span
                    @click="$router.push('/resetVerify?type=0')">{{ $t('资金密码不可用?') }}</span>
            </div>
        </div>
    </div>
</template>
<script>
    import assetsHead from "@/components/assets-head";
    import {
        Form,
        Field,
        CellGroup
    } from 'vant';
    import {
        walletGrther,
        walletGrthertransfer,
        getwalletGrther
    } from "@/API/fund.api";
    import AxiosWithdraw from "@/API/withdraw.js"
    import otcApi from "@/API/otc";
    import AxiosUser from "@/API/userCenter";
    export default {
        name: "withdrawalSecurityVerification",
        props: ['type'],
        components: {
            assetsHead,
            [Form.name]: Form,
            [Field.name]: Field,
            [CellGroup.name]: CellGroup,
        },
        data() {
            return {
                password: '',
                data: null,
                sessionToken: '',
                googleCode: '',
                isGoogleInput: false
            }
        },
        created() {
            AxiosUser._getIsGoogleAuth({
                code: 'google_auth_secret_open'
            }).then(res => {
                this.isGoogleInput = res.data.google_auth_secret_open === '1'
            })
            this.data = this.$route.query
            this.getToken()
        },
        methods: {
            getToken() {
                AxiosWithdraw.GetSessionToken().then((res) => {
                    this.sessionToken = res.data.session_token;
                });
            },
            onSubmit(values) {
                console.log('submit', values);
            },
            async confirm(data) {
                if (!this.password) {
                    this.$toast(this.$t('请输入资金密码'));
                    return
                }
                var data = {
                    currency: this.$route.query.currency,
                      fromTo: this.$route.query.fromTo,
                      amount: this.$route.query.amount,
                      safeword:this.password
                }
                await walletGrthertransfer(data).then((res) => {
                    console.log(res);
                    this.$toast(this.$t('操作成功'));
                    // this.$router.push({
                    //   path: "/transfer",
                    // });
                    this.$router.go(-1);
                });
            }
        }
    }
</script>
<style lang="scss" scoped>
    .withdraw_verify {
        width: 100%;
        box-sizing: border-box;
    }
    .cl {
        color: dodgerblue;
    }
    .title {
        font-weight: 700;
        font-size: 52px;
        margin-top: 54px;
        margin-bottom: 56px;
    }
    .content {
        padding: 0 32px;
        p {
            color: #868D9A;
            font-size: 30px;
            margin-bottom: 18px;
        }
        .iptbox {
            height: 88px;
            margin-top: 16px;
            padding: 0 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-radius: 8px;
            input {
                flex: 1;
                height: 100%;
                border: none;
            }
            span {
                color: #1D91FF;
            }
        }
    }
    .btn {
        color: #fff;
        height: 88px;
        line-height: 88px;
        text-align: center;
        font-size: 32px;
        margin-top: 178px;
        border-radius: 10px;
    }
</style>
src/router/router.js
@@ -138,6 +138,21 @@
              /* webpackChunkName: "SecurityVerification" */ /* webpackPrefetch: true */"@/page/withdraw/withdrawalSecurityVerification"
        ),
    },
    {
      //提现申请密码验证
      path: "/withdraw/securityVerification_zh",
      name: "SecurityVerification_zh",
      meta: { index: 10 },
      props(route) {
        return {
          ...route.query
        }
      },
      component: () =>
        import(
              /* webpackChunkName: "SecurityVerification" */ /* webpackPrefetch: true */"@/page/withdraw/withdrawalSecurityVerification_huazhuan"
        ),
    },
    {
      //提现详情
      path: "/withdraw/withdrawDetail",