1
李凌
2025-09-22 517b4a398d9ca06788366f2c4b94d5d8831af5fc
1
23 files modified
780 ■■■■■ changed files
src/components/Transform/list-quotation/index.vue 14 ●●●●● patch | view | raw | blame | history
src/components/Transform/trade-head/index.vue 5 ●●●●● patch | view | raw | blame | history
src/i18n/Deutsch.js 1 ●●●● patch | view | raw | blame | history
src/i18n/Italy.js 1 ●●●● patch | view | raw | blame | history
src/i18n/Japanese.js 1 ●●●● patch | view | raw | blame | history
src/i18n/Portuguese.js 1 ●●●● patch | view | raw | blame | history
src/i18n/Spanish.js 1 ●●●● patch | view | raw | blame | history
src/i18n/cn.js 1 ●●●● patch | view | raw | blame | history
src/i18n/en.js 1 ●●●● patch | view | raw | blame | history
src/i18n/fa.js 1 ●●●● patch | view | raw | blame | history
src/i18n/korean.js 1 ●●●● patch | view | raw | blame | history
src/i18n/th.js 1 ●●●● patch | view | raw | blame | history
src/i18n/vi.js 1 ●●●● patch | view | raw | blame | history
src/i18n/zhcn.js 1 ●●●● patch | view | raw | blame | history
src/utils/index.js 4 ●●●● patch | view | raw | blame | history
src/views/cryptos/TrendDetails/index.vue 8 ●●●● patch | view | raw | blame | history
src/views/cryptos/Withdraw/withdrawPage.vue 653 ●●●● patch | view | raw | blame | history
src/views/homePage/components/head.vue 10 ●●●● patch | view | raw | blame | history
src/views/homePage/index.vue 29 ●●●●● patch | view | raw | blame | history
src/views/quotes/List.vue 29 ●●●●● patch | view | raw | blame | history
src/views/quotes/components/head.vue 12 ●●●● patch | view | raw | blame | history
src/views/safety/index.vue 2 ●●● patch | view | raw | blame | history
src/views/safety/resetPhoneEmail.vue 2 ●●● patch | view | raw | blame | history
src/components/Transform/list-quotation/index.vue
@@ -20,7 +20,7 @@
        </div>
      </van-cell>
      <transition-group :name="type" tag="div">
        <div v-if="active == 0" :key="active">
        <div v-if="active == 0">
          <van-cell v-for="item in listData" :key="item.id">
            <ul class="flex justify-between w-full items-center" @click="onItemClick(item)">
              <li class="flex items-center left">
@@ -40,11 +40,11 @@
                </p>
              </li>
              <li class="flex flex-col items-end mid">
                <p class="textColor font-32 font-600">{{ item.close || '--' }}</p>
                <p class="textColor font-32 font-600">{{ item.close.toFixed(4) || '--' }}</p>
                <p class="font-24 text-grey">{{ currency.currency_symbol }}
                  {{ item.close && item.symbol_data.toUpperCase() == 'SHIB' ? (item.close * currency.rate).toFixed(8) :
                    (item.close *
                      currency.rate).toFixed(6)/1 || '--' }}</p>
                      currency.rate).toFixed(4) || '--' }}</p>
              </li>
              <li class="right flex items-center justify-end">
                <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio > 0">
@@ -55,7 +55,7 @@
            </ul>
          </van-cell>
        </div>
        <div v-else :key="active">
        <div v-else>
          <van-cell v-for="item in showList" :key="item.id">
            <ul class="flex justify-between w-full items-center" @click="onItemClick(item)">
              <li class="flex items-center left">
@@ -74,10 +74,10 @@
                </p>
              </li>
              <li class="flex flex-col items-end mid">
                <p class="textColor font-32 font-600">{{ item.close }}</p>
                <p class="textColor font-32 font-600">{{ item.close.toFixed(4) }}</p>
                <p class="font-24 text-grey">{{ currency.currency_symbol }} {{ item.close &&
                  item.symbol_data.toUpperCase() == 'SHIB' ? (item.close * currency.rate).toFixed(8) : (item.close *
                    currency.rate).toFixed(6) / 1 || '--' }}</p>
                    currency.rate).toFixed(4) || '--' }}</p>
              </li>
              <li class="right flex items-center justify-end text-right">
                <div v-if="active == 3" class="textColor w-182 font-700 font-24">
@@ -117,6 +117,7 @@
      fixDate,
      HOST_URL,
      active: 0,
      showList: [],
      type: 'left' //left 从左往右 right 从有王座
    }
  },
@@ -225,6 +226,7 @@
        this.showList = [...this.listData].sort(this.compare("volume", 'up'))
      }
      this.$forceUpdate()
      // console.log("aaaaaaaaa", this.showList, this.listData);
    }
  }
}
src/components/Transform/trade-head/index.vue
@@ -188,7 +188,7 @@
  watch: {
    symbol(val) {
      console.log("symbol", val);
      this.getIsItemHasAddGlobal()
      if (this.islevel) {
        this.$emit('changeLine', true)
@@ -218,7 +218,8 @@
    onRoute(item) {
      if (this.islevel) {
        if (this.$route.params.symbol !== item.symbol) {
          this.$router.push(`/cryptos/trendDetails/${item.symbol}?type=${this.$route.query.type}`)
          if (this.kineType) this.$router.push(`/cryptos/trendDetails/${item.symbol}?type=${this.$route.query.type}&kineType=${this.kineType}`)
          else this.$router.push(`/cryptos/trendDetails/${item.symbol}?type=${this.$route.query.type}`)
          // alert(this.kineType)
          if (this.kineType) {
            setStorage('tradeSymbol', item.symbol)
src/i18n/Deutsch.js
@@ -2841,4 +2841,5 @@
    "最低认购": "Mindestzeichnung",
    "币种数量": "Menge der währung",
    "进度": "Fortschritt",
    "更换绑定": "Ersetzen sie die bindung",
}
src/i18n/Italy.js
@@ -2931,4 +2931,5 @@
    "最低认购": "Sottoscrizione minima",
    "币种数量": "Menge der Währung",
    "进度": "Fortschritt",
    "更换绑定": "Cambio di legame",
}
src/i18n/Japanese.js
@@ -2699,4 +2699,5 @@
    "最低认购": "最低申込",
    "币种数量": "通貨数量",
    "进度": "進捗",
    "更换绑定": "バインドを変更します",
}
src/i18n/Portuguese.js
@@ -651,4 +651,5 @@
    "最低认购": "Subscrição mínima",
    "币种数量": "Quantidade de moeda",
    "进度": "Progresso",
    "更换绑定": "Trocar de ligação",
}
src/i18n/Spanish.js
@@ -2614,4 +2614,5 @@
    "最低认购": "Suscripción mínima",
    "币种数量": "Cantidad de moneda",
    "进度": "Progreso",
    "更换绑定": "Cambiar enlace",
}
src/i18n/cn.js
@@ -2820,4 +2820,5 @@
    "最低认购": "最低認購",
    "币种数量": "幣種數量",
    "进度": "進度",
    "更换绑定": "更換綁定",
}
src/i18n/en.js
@@ -2795,4 +2795,5 @@
    "最低认购": "Minimum subscription",
    "币种数量": "Currency quantity",
    "进度": "Progress",
    "更换绑定": "Change binding",
}
src/i18n/fa.js
@@ -2738,4 +2738,5 @@
    "最低认购": "Souscription minimale",
    "币种数量": "Menge der Währung",
    "进度": "Fortschritt",
    "更换绑定": "Changer de liaison",
}
src/i18n/korean.js
@@ -2835,4 +2835,5 @@
    "最低认购": "최소 구독",
    "币种数量": "통화 수량",
    "进度": "진행 상황",
    "更换绑定": "바인딩 변경",
}
src/i18n/th.js
@@ -2806,4 +2806,5 @@
    "最低认购": "การจองซื้อขั้นต่ำ",
    "币种数量": "จำนวนเงินตรา",
    "进度": "ความก้าวหน้า",
    "更换绑定": "เปลี่ยนการเชื่อมโยง",
}
src/i18n/vi.js
@@ -2785,4 +2785,5 @@
    "最低认购": "Đăng ký tối thiểu",
    "币种数量": "Số lượng tiền tệ",
    "进度": "Tiến độ",
    "更换绑定": "Thay đổi liên kết",
}
src/i18n/zhcn.js
@@ -2800,4 +2800,5 @@
    "最低认购": "最低认购",
    "币种数量": "币种数量",
    "进度": "进度",
    "更换绑定": "更换绑定",
}
src/utils/index.js
@@ -78,7 +78,6 @@
  }
}
// 小数展示,保留五位小数
export const formatNumber = (num) => {
  if (typeof (num) !== 'number') {
@@ -99,7 +98,6 @@
  }
}
// 保留五位小数
export const formatNumberToFixedFive = (num) => {
@@ -137,7 +135,6 @@
  }
}
export const formatMoney = (val) => {
  if(val === 0){
    return 0
@@ -160,7 +157,6 @@
  }
  return (val / Math.pow(num, 4)).toFixed(2) + "T"; //T  
}
export  const formatNews = (str) => {
  if(!str) {
src/views/cryptos/TrendDetails/index.vue
@@ -20,7 +20,7 @@
              <p class="font-70 font-600" :class="quote.change_ratio > 0 ? 'text-green' : 'text-red'">
                {{ quote.close || '--' }}</p>
              <p class="font-22 mt-10">≈ {{ currency.currency_symbol }}{{ quote.close ? (quote.close *
                currency.rate).toFixed(2) : '--' }}
                currency.rate).toFixed(6) : '--' }}
                <span :class="quote.change_ratio > 0 ? 'text-green' : 'text-red'">{{ quote.change_ratio
                  ||
                  '--' }}%</span>
@@ -68,7 +68,7 @@
                    <p>{{ $t('买入') }}</p>
                    <p class="flex  justify-between  font-22">
                      <span style="margin-right: -10px;">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)'
                        }}</span>
                      }}</span>
                      <span class="buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase() }})</span>
                    </p>
                  </li>
@@ -111,7 +111,7 @@
                  <span class="flex-1">{{ $t('方向') }}</span>
                  <span class="flex-1">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)' }}</span>
                  <span class="flex-1 flex justify-center buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase()
                    }})</span>
                  }})</span>
                </li>
                <li v-for="(item, index) in deals" :key="item.ts + item.price + item.amount || index"
                  class="flex  justify-between mt-30">
@@ -298,7 +298,7 @@
    ...mapGetters({ currency: 'home/currency', userInfo: 'user/userInfo' })
  },
  mounted() {
    console.log('sss')
    console.log('sss', this.$route.query)
    //this.continueOrder()
    this.kineType = this.$route.query.kineType
    if (this.$route.query.type) {
src/views/cryptos/Withdraw/withdrawPage.vue
@@ -60,9 +60,16 @@
                    <span class="font-32 ml-5 text-grey">{{ value }}</span>
                </div>
                <p class="text-grey mt-22 font-28">{{ $t('提现费用') }}:{{ fee || '0.00' }} {{ value }}</p>
                <p class="text-white mt-46 textColor font-28">{{ $t('提币说明') }}:
                <p class="text-grey mt-10 textColor font-28">{{ $t('提币说明') }}:
                </p>
                <div class="text-grey mt-10 font-28" v-html="tip"></div>
                <div class="text-grey mt-20 font-28" v-html="tip"></div>
                <p class="font-35 mt-2 textColor">{{ $t('fundsPassword') }}</p>
                <div class="inputBackground flex items-center justify-between h-96 rounded mt-22">
                    <input :placeholder="$t('fundsPasswordContTips')" maxlength="6"
                        class="h-full flex-1 border-none bg-none px-16 font-22 textColor" v-model="safeword" />
                </div>
                <van-button
                    class="w-768 h-100 rounded flex justify-center items-center mt-56  text-white btnMain border-none"
                    @click="showDetail">
@@ -124,344 +131,352 @@
</template>
<script>
    import {
        Popup,
        ActionSheet,
        showToast
    } from "vant"
    import Axios from "@/service/recharge.js"
    import {
        _withdrawFee,
        _withdrawApply
    } from "@/service/withdraw.api.js"
    import assetsHead from "@/components/Transform/assets-head/index.vue";
    import BarScan from '@/components/Transform/scan/scan.vue';
    import {
        _getAllWallet
    } from "@/service/fund.api";
    export default {
        name: "withdrawPage",
        components: {
            assetsHead,
            [Popup.name]: Popup,
            [ActionSheet.name]: ActionSheet,
            BarScan
import {
    Popup,
    ActionSheet,
    showToast
} from "vant"
import Axios from "@/service/recharge.js"
import {
    _withdrawFee,
    _withdrawApply
} from "@/service/withdraw.api.js"
import assetsHead from "@/components/Transform/assets-head/index.vue";
import BarScan from '@/components/Transform/scan/scan.vue';
import {
    _getAllWallet
} from "@/service/fund.api";
import { throttle } from "@/utils/index.js";
export default {
    name: "withdrawPage",
    components: {
        assetsHead,
        [Popup.name]: Popup,
        [ActionSheet.name]: ActionSheet,
        BarScan
    },
    data() {
        return {
            tip: '',
            value: 'USDT', //选中的币种
            show: false,
            showSymbol: false,
            actions: [{
                name: 'USDT'
            }, {
                name: 'BTC'
            }, {
                name: 'ETH'
            }, {
                name: 'USDC'
            }],
            blockList: [],
            blockchainIndex: "",
            usdtBalance: "", //余额
            amount: "", //提现金额
            fee: "", //手续费
            volume_last: "", //到账金额
            blockName: "", //当前链名称
            address: "", // 二维码扫描结果
            scancode: false, //控制是否使用扫一扫功能
            withdraw_fee_type: '',
            percent: 0,
            numLenth: 3,
            safeword: '' //资金密码
        }
    },
    created() {
        this.getBlock(this.value);
        this.getAvailable(this.actions[0].name);
        Axios.getRechargeTips({
            language: this.$i18n.locale,
            token: this.$store.state.user.userInfo.token,
            content_code: '003',
        }).then(res => {
            this.tip = res.content
        }).catch(err => {
            if (err.code === 'ECONNABORTED') {
                showToast(this.$t('网络超时!'));
            } else if (err.msg !== undefined) {
                showToast(this.$t(err.msg));
            }
        })
        _withdrawFee({
            amount: 1,
            channel: this.value + '_' + this.blockName
        }).then((res) => {
            this.withdraw_fee_type = res.withdraw_fee_type
            if (this.withdraw_fee_type == 'rate') {
                this.percent = res.fee
            } else {
                this.fee = res.fee;
            }
        });
    },
    methods: {
        getwei(value, numLenth) {
            console.log(numLenth)
            let str = value.toString();
            let strIndex = str.indexOf('.');
            if (strIndex === -1) return str;
            str = str.substring(0, strIndex + numLenth);
            console.log(str, numLenth)
            return str;
        },
        data() {
            return {
                tip: '',
                value: 'USDT', //选中的币种
                show: false,
                showSymbol: false,
                actions: [{
                    name: 'USDT'
                }, {
                    name: 'BTC'
                }, {
                    name: 'ETH'
                }, {
                    name: 'USDC'
                }],
                blockList: [],
                blockchainIndex: "",
                usdtBalance: "", //余额
                amount: "", //提现金额
                fee: "", //手续费
                volume_last: "", //到账金额
                blockName: "", //当前链名称
                address: "", // 二维码扫描结果
                scancode: false, //控制是否使用扫一扫功能
                withdraw_fee_type: '',
                percent: 0,
                numLenth: 3
        // 打开相机
        clickCode() {
            this.scancode = true;
        },
        //返回扫描结果并关闭摄像头
        getResult(result) {
            this.address = result;
            if (result !== "") {
                this.scancode = false;
            }
        },
        created() {
            this.getBlock(this.value);
            this.getAvailable(this.actions[0].name);
            Axios.getRechargeTips({
                language: this.$i18n.locale,
                token: this.$store.state.user.userInfo.token,
                content_code: '003',
            }).then(res => {
                this.tip = res.content
            }).catch(err => {
                if (err.code === 'ECONNABORTED') {
                    showToast(this.$t('网络超时!'));
                } else if (err.msg !== undefined) {
                    showToast(this.$t(err.msg));
                }
            })
            _withdrawFee({
                amount: 1,
                channel: this.value + '_' + this.blockName
            }).then((res) => {
                this.withdraw_fee_type = res.withdraw_fee_type
                if (this.withdraw_fee_type == 'rate') {
                    this.percent = res.fee
                } else {
                    this.fee = res.fee;
        showDetail() {
            if (this.address.length > 63 || this.address.length == 0) {
                showToast(this.$t('提现地址格式错误'))
                return
            }
            if (!this.amount) {
                showToast(this.$t('请输入正确数量'))
                return
            }
            if (this.amount / 1 > this.usdtBalance / 1) {
                showToast(this.$t('金额不足'))
                return
            }
            this.show = true;
        },
        goRouter(params) {
            this.$router.push({
                path: params,
                query: {
                    type: '2',
                    back: "1"
                }
            });
        },
        methods: {
            getwei(value, numLenth) {
                console.log(numLenth)
                let str = value.toString();
                let strIndex = str.indexOf('.');
                if (strIndex === -1) return str;
                str = str.substring(0, strIndex + numLenth);
                console.log(str, numLenth)
                return str;
            },
            // 打开相机
            clickCode() {
                this.scancode = true;
            },
            //返回扫描结果并关闭摄像头
            getResult(result) {
                this.address = result;
                if (result !== "") {
                    this.scancode = false;
                }
            },
            showDetail() {
                if (this.address.length > 63 || this.address.length == 0) {
                    showToast(this.$t('提现地址格式错误'))
                    return
                }
                if (!this.amount) {
                    showToast(this.$t('请输入正确数量'))
                    return
                }
                if (this.amount / 1 > this.usdtBalance / 1) {
                    showToast(this.$t('金额不足'))
                    return
                }
                this.show = true;
            },
            goRouter(params) {
                this.$router.push({
                    path: params,
                    query: {
                        type: '2',
                        back: "1"
                    }
                });
            },
            // onConfirm() {
            //     this.$router.push('/withdraw/withdrawSumbit')
            // },
            //选中币种
            onSelect(item) {
                this.amount = ''
                this.volume_last = ''
                this.fee = ''
                this.showSymbol = false;
                this.value = item.name;
                this.withdraw_fee_type = ''
                this.getBlock(item.name);
                this.getAvailable(item.name)
                if (item.name == 'BTC' || item.name == 'ETH') {
                    this.numLenth = 7
                    _withdrawFee({
                        amount: 1,
                        channel: this.value + '_' + this.blockName
                    }).then((res) => {
                        this.withdraw_fee_type = res.withdraw_fee_type
                        if (this.withdraw_fee_type == 'fixed') {
                            this.fee = res.fee;
                        } else {
                            this.percent = res.fee
                        }
                    });
                } else {
                    this.numLenth = 3
                }
            },
            //根据币种获取链地址
            getBlock(symbol) {
                Axios.getBlock({
                    coin: symbol
        // onConfirm() {
        //     this.$router.push('/withdraw/withdrawSumbit')
        // },
        //选中币种
        onSelect(item) {
            this.amount = ''
            this.volume_last = ''
            this.fee = ''
            this.showSymbol = false;
            this.value = item.name;
            this.withdraw_fee_type = ''
            this.getBlock(item.name);
            this.getAvailable(item.name)
            if (item.name == 'BTC' || item.name == 'ETH') {
                this.numLenth = 7
                _withdrawFee({
                    amount: 1,
                    channel: this.value + '_' + this.blockName
                }).then((res) => {
                    this.blockList = res;
                    this.blockName = res[0].blockchain_name;
                });
            },
            //选中链名称
            changeBlockchain(item, index) {
                this.blockchainIndex = index;
                this.blockName = item.blockchain_name;
            },
            //获取钱包余额
            getAvailable(symbol) {
                _getAllWallet().then((res) => {
                    let walletList = res.extends;
                    let initObj = walletList.find(item => {
                        return item.symbol_data.toLowerCase() == symbol.toLowerCase()
                    })
                    this.usdtBalance = initObj.volume
                });
            },
            //点全部
            allBtn() {
                this.amount = this.getwei(this.usdtBalance, this.numLenth);
                this.changeInput()
            },
            //输入改变
            changeInput() {
                if (this.amount === '') {
                    this.volume_last = '0.00'
                    return
                }
                if (this.amount.length > 11) {
                    this.amount = this.amount.slice(0, 11)
                }
                if (this.withdraw_fee_type == 'part') {
                    _withdrawFee({
                        amount: this.amount,
                        channel: this.value + '_' + this.blockName
                    }).then((res) => {
                        console.log(res)
                    this.withdraw_fee_type = res.withdraw_fee_type
                    if (this.withdraw_fee_type == 'fixed') {
                        this.fee = res.fee;
                        this.volume_last = res.volume_last;
                    });
                } else if (this.withdraw_fee_type == 'rate') {
                    if (this.amount == '') {
                        this.volume_last = 0
                    } else {
                        this.fee = this.getwei(this.percent * this.amount, this.numLenth)
                        this.volume_last = this.getwei(this.amount * 1 - this.percent * this.amount, this.numLenth)
                        this.percent = res.fee
                    }
                } else {
                    if (this.amount * 1 < this.fee * 1) {
                        console.log('a')
                        this.volume_last = 0
                    } else {
                        this.volume_last = this.getwei(this.amount * 1 - this.fee * 1, this.numLenth)
                    }
                }
            },
            //提币提交
            onConfirm() {
                if (!this.amount) {
                    showToast(this.$t('请输入数量'));
                    return;
                }
                let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/;
                if (!numReg.test(this.amount)) {
                    showToast(this.$t('请输入数字'));
                    return;
                }
                if (!this.address) {
                    showToast(this.$t('请输入提现地址'));
                    return;
                }
                if (this.amount && this.address) {
                    // this.$router.push({
                    //   path: '/cryptos/withdraw/securityVerification',
                    //   query: {
                    //     amount: this.amount,
                    //     from: this.address,
                    //     channel: this.value + '_' + this.blockName
                    //   }
                    // })
                    //       _withdrawApply({
                    //         session_token:this.sessionToken,
                    //         amount:this.amount,
                    //         from:this.address,
                    //         channel:this.value+'_'+ this.blockName
                    //     }).then((res)=> {
                    //         if(res.code==0) {
                    //             this.$router.push({
                    //                 path:"/withdraw/withdrawSumbit"
                    //             });
                    //         }else{
                    // showToast(this.$t(res.msg));
                    //         }
                    //     });
                    _withdrawApply({
                            session_token:this.sessionToken,
                            amount:this.amount,
                            from:this.address,
                            channel:this.value+'_'+ this.blockName
                    }).then((res) => {
                        this.$router.push({
                            path: "/cryptos/withdraw/withdrawSumbit"
                        });
                    }).catch(err => {
                        //console.log(err)
                        if (err.code == 105) {
                            showToast(this.$t('当前还需交易%s,才可提币', {
                                'MONEY': err.msg
                            }));
                        } else if (err.code === 'ECONNABORTED') {
                            showToast(this.$t('网络超时!'))
                        } else if (err.msg !== undefined) {
                            showToast(this.$t(err.msg))
                        }
                        // this.getToken()
                    })
                } else {
                    showToast(this.$t('请输入提币数量'));
                }
            },
            async pastCont() {
                this.address = await navigator.clipboard.readText();
                });
            } else {
                this.numLenth = 3
            }
        },
        //根据币种获取链地址
        getBlock(symbol) {
            Axios.getBlock({
                coin: symbol
            }).then((res) => {
                this.blockList = res;
                this.blockName = res[0].blockchain_name;
            });
        },
        //选中链名称
        changeBlockchain(item, index) {
            this.blockchainIndex = index;
            this.blockName = item.blockchain_name;
        },
        //获取钱包余额
        getAvailable(symbol) {
            _getAllWallet().then((res) => {
                let walletList = res.extends;
                let initObj = walletList.find(item => {
                    return item.symbol_data.toLowerCase() == symbol.toLowerCase()
                })
                this.usdtBalance = initObj.volume
            });
        },
        //点全部
        allBtn() {
            this.amount = this.getwei(this.usdtBalance, this.numLenth);
            this.changeInput()
        },
        //输入改变
        changeInput() {
            if (this.amount === '') {
                this.volume_last = '0.00'
                return
            }
            if (this.amount.length > 11) {
                this.amount = this.amount.slice(0, 11)
            }
            if (this.withdraw_fee_type == 'part') {
                _withdrawFee({
                    amount: this.amount,
                    channel: this.value + '_' + this.blockName
                }).then((res) => {
                    console.log(res)
                    this.fee = res.fee;
                    this.volume_last = res.volume_last;
                });
            } else if (this.withdraw_fee_type == 'rate') {
                if (this.amount == '') {
                    this.volume_last = 0
                } else {
                    this.fee = this.getwei(this.percent * this.amount, this.numLenth)
                    this.volume_last = this.getwei(this.amount * 1 - this.percent * this.amount, this.numLenth)
                }
            } else {
                if (this.amount * 1 < this.fee * 1) {
                    console.log('a')
                    this.volume_last = 0
                } else {
                    this.volume_last = this.getwei(this.amount * 1 - this.fee * 1, this.numLenth)
                }
            }
        },
        //提币提交
        onConfirm: throttle(function () {
            if (!this.amount) {
                showToast(this.$t('请输入数量'));
                return;
            }
            let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/;
            if (!numReg.test(this.amount)) {
                showToast(this.$t('请输入数字'));
                return;
            }
            if (!this.address) {
                showToast(this.$t('请输入提现地址'));
                return;
            }
            if (!this.safeword) {
                showToast(this.$t('fundsPasswordContTips'));
                return;
            }
            if (this.amount && this.address) {
                // this.$router.push({
                //   path: '/cryptos/withdraw/securityVerification',
                //   query: {
                //     amount: this.amount,
                //     from: this.address,
                //     channel: this.value + '_' + this.blockName
                //   }
                // })
                //       _withdrawApply({
                //         session_token:this.sessionToken,
                //         amount:this.amount,
                //         from:this.address,
                //         channel:this.value+'_'+ this.blockName
                //     }).then((res)=> {
                //         if(res.code==0) {
                //             this.$router.push({
                //                 path:"/withdraw/withdrawSumbit"
                //             });
                //         }else{
                // showToast(this.$t(res.msg));
                //         }
                //     });
                _withdrawApply({
                    session_token: this.sessionToken,
                    amount: this.amount,
                    safeword: this.safeword,
                    from: this.address,
                    channel: this.value + '_' + this.blockName
                }).then((res) => {
                    this.$router.push({
                        path: "/cryptos/withdraw/withdrawSumbit"
                    });
                }).catch(err => {
                    //console.log(err)
                    if (err.code == 105) {
                        showToast(this.$t('当前还需交易%s,才可提币', {
                            'MONEY': err.msg
                        }));
                    } else if (err.code === 'ECONNABORTED') {
                        showToast(this.$t('网络超时!'))
                    } else if (err.msg !== undefined) {
                        showToast(this.$t(err.msg))
                    }
                    // this.getToken()
                })
            } else {
                showToast(this.$t('请输入提币数量'));
            }
        }, 1000),
        async pastCont() {
            this.address = await navigator.clipboard.readText();
        }
    }
}
</script>
<style lang="scss" scoped>
    @import "@/assets/init.scss";
@import "@/assets/init.scss";
    #cryptos {
        .withdrawl-page {
            width: 100%;
            box-sizing: border-box;
            font-size: 26px;
        }
#cryptos {
    .withdrawl-page {
        width: 100%;
        box-sizing: border-box;
        font-size: 26px;
    }
        .van-popup.van-popup--bottom {
            border-top-left-radius: 30px;
            border-top-right-radius: 30px;
        }
    .van-popup.van-popup--bottom {
        border-top-left-radius: 30px;
        border-top-right-radius: 30px;
    }
        .pop-box {
            border-top-left-radius: 30px;
            border-top-right-radius: 30px;
        }
    .pop-box {
        border-top-left-radius: 30px;
        border-top-right-radius: 30px;
    }
        .color-blue {
            color: $btn_main;
        }
    .color-blue {
        color: $btn_main;
    }
        .bg-grey-light {
            background: $light-grey;
        }
    .bg-grey-light {
        background: $light-grey;
    }
        li {
            &.active {
                border-color: $color_main;
                color: $color_main;
            }
        }
        .van-button--default {
            color: $text_color;
        }
        .btnMain {
            background: $btn_main;
    li {
        &.active {
            border-color: $color_main;
            color: $color_main;
        }
    }
    .van-button--default {
        color: $text_color;
    }
    .btnMain {
        background: $btn_main;
    }
}
</style>
src/views/homePage/components/head.vue
@@ -1,9 +1,11 @@
<template>
    <div class="head flex justify-between items-center pl-5 pr-5">
        <div class="more mr-5"><img src="@/assets/imgs/home/more.png" alt="" @click="onRoute('/my')"></div>
        <div class="more_input pl-5 pr-5 flex items-center justify-start mr-5 pt-2" @click="onRoute('/optional/search')">
        <div class="more_input pl-5 pr-5 flex items-center justify-start mr-5 pt-2">
            <img src="@/assets/imgs/quotes/search.png" alt="">
            <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span>
            <!-- <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span> -->
            <van-field v-model="iValue" :placeholder="$t('请输入关键词搜寻')" style="background-color: #F7F7F7;padding: 0 1rem;"
                @input="emit('search', iValue)" />
        </div>
        <div class="scan"><img src="@/assets/image/assets-center/language.png" alt="" @click="onRoute('/language')"></div>
        <!-- <div class="gift"><img src="@/assets/imgs/home/gift.png" alt=""></div>
@@ -15,6 +17,7 @@
<script setup>
import { useRouter } from 'vue-router';
import { useI18n } from "vue-i18n";
import { ref } from 'vue';
const { t } = useI18n()
const router = useRouter()
@@ -22,6 +25,9 @@
const onRoute = (path) => {
    router.push(path)
}
const iValue = ref('')
const emit = defineEmits(['search'])
</script>
src/views/homePage/index.vue
@@ -1,7 +1,7 @@
<template>
    <div class="home_page">
        <Head></Head>
        <Head @search="onSearch"></Head>
        <!-- <div class="home_logo flex justify-center"><img src="@/assets/imgs/home/home_logo.png" alt=""></div> -->
        <!-- <van-swipe class="home_logo" :autoplay="3000" indicator-color="white">
            <van-swipe-item><img src="@/assets/imgs/home/Slider-1.jpg" alt=""></van-swipe-item>
@@ -171,6 +171,8 @@
//#region 行情数据----------------------------------------
let qList = ref([])
let qListCope = ref([]) // 备份数据
let key = ref('') // 搜索关键词
let timeout = ref(null)
const coinArr = computed(() => store.getters['home/coinArr']);
@@ -181,7 +183,16 @@
    if (!(list instanceof Array)) {
        return
    }
    qList.value = list;
    // 通过关键字进行筛选
    if (key.value) {
        qList.value = list.filter(item => {
            return item.symbol_data.toLowerCase().includes(key.value.toLowerCase()) || item.name.toLowerCase().includes(key.value.toLowerCase())
        })
    } else {
        qList.value = list
    }
    qListCope.value = list; // 备份数据
    if (timeout.value) {
        clearTimeout(timeout.value)
@@ -192,6 +203,20 @@
}
fetchQList()
// 搜索
const onSearch = (val) => {
    key.value = val
    if (!val) {
        qList.value = qListCope.value
        return
    }
    let newList = qListCope.value.filter(item => {
        return item.symbol_data.toLowerCase().includes(val.toLowerCase()) || item.name.toLowerCase().includes(val.toLowerCase())
    })
    qList.value = newList
}
onBeforeUnmount(() => {
    if (timeout.value) {
        clearTimeout(timeout.value)
src/views/quotes/List.vue
@@ -1,7 +1,7 @@
<template>
  <div class="quotes-list pt-5 pb-60 pl-5 pr-5" id="cryptos">
    <Head></Head>
    <Head @search="onSearch"></Head>
    <list-quatation :listData="qList" :tabActive="2" />
  </div>
</template>
@@ -18,6 +18,8 @@
//#region 行情数据----------------------------------------
let qList = ref([])
let qListCope = ref([]) // 备份数据
let key = ref('') // 搜索关键词
let timeout = ref(null)
const coinArr = computed(() => store.getters['home/coinArr']);
@@ -28,7 +30,16 @@
  if (!(list instanceof Array)) {
    return
  }
  qList.value = list;
  // 通过关键字进行筛选
  if (key.value) {
    qList.value = list.filter(item => {
      return item.symbol_data.toLowerCase().includes(key.value.toLowerCase()) || item.name.toLowerCase().includes(key.value.toLowerCase())
    })
  } else {
    qList.value = list
  }
  qListCope.value = list; // 备份数据
  if (timeout.value) {
    clearTimeout(timeout.value)
@@ -45,6 +56,20 @@
  }
})
//#endregion----------------------------------------------
// 搜索
const onSearch = (val) => {
  key.value = val
  if (!val) {
    qList.value = qListCope.value
    return
  }
  let newList = qListCope.value.filter(item => {
    return item.symbol_data.toLowerCase().includes(val.toLowerCase()) || item.name.toLowerCase().includes(val.toLowerCase())
  })
  qList.value = newList
}
</script>
<style lang="scss" scoped>
.quotes-list {
src/views/quotes/components/head.vue
@@ -1,8 +1,11 @@
<template>
    <div class="head flex justify-between items-center pl-5 pr-5">
        <div class="more_input pl-20 pr-5 flex items-center justify-start mr-5 pt-2" @click="onRoute('/optional/search')">
        <!-- <div class="more_input pl-20 pr-5 flex items-center justify-start mr-5 pt-2" @click="onRoute('/optional/search')"> -->
        <div class="more_input pl-20 pr-5 flex items-center justify-start mr-5 pt-2">
            <img src="@/assets/imgs/quotes/search.png" alt="">
            <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span>
            <!-- <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span> -->
            <van-field v-model="iValue" :placeholder="$t('请输入关键词搜寻')" style="background-color: #F7F7F7;"
                @input="emit('search', iValue)" />
        </div>
    </div>
</template>
@@ -10,6 +13,7 @@
<script setup>
import { useRouter } from 'vue-router';
import { useI18n } from "vue-i18n";
import { ref } from 'vue';
const { t } = useI18n()
const router = useRouter()
@@ -17,6 +21,9 @@
const onRoute = (path) => {
    router.push(path)
}
const iValue = ref('')
const emit = defineEmits(['search'])
</script>
@@ -44,6 +51,7 @@
        img {
            width: 2.5rem;
            margin-right: .5rem;
        }
    }
}
src/views/safety/index.vue
@@ -93,7 +93,7 @@
    url: "/resetVerify?type=0"
  },
  {
    name: `${t('resetPhone')}/${t('resetEmail')}`,
    name: `${t('更换绑定')}`,
    url: "/resetPhoneEmail"
  },
])
src/views/safety/resetPhoneEmail.vue
@@ -4,7 +4,7 @@
            <img src="../../assets/image/icon-close.png" alt="" @click="router.go(-1)">
            <div @click="onRoute('/customerService')">{{ $t('onLineService') }}</div>
        </div>
        <div class="title textColor">{{ $t('重置') }}</div>
        <div class="title textColor">{{ $t('更换绑定') }}</div>
        <div class="flex re-tab">
            <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
                $t('account')