1
jhzh
2025-08-18 401c2caeedb8952ca5f792381fff9fc9b83f663d
1
20 files modified
178 ■■■■ changed files
src/components/Transform/perpetual-position-list/index.vue 2 ●●● 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/router/index.js 3 ●●●● patch | view | raw | blame | history
src/service/user.api.js 2 ●●● patch | view | raw | blame | history
src/views/cryptos/PerpetualContract/orderDetail.vue 4 ●●●● patch | view | raw | blame | history
src/views/cryptos/Withdraw/withdrawPage.vue 90 ●●●● patch | view | raw | blame | history
src/views/my/index.vue 54 ●●●● patch | view | raw | blame | history
src/views/safety/index.vue 6 ●●●● patch | view | raw | blame | history
src/views/trade/index.vue 5 ●●●●● patch | view | raw | blame | history
src/components/Transform/perpetual-position-list/index.vue
@@ -54,7 +54,7 @@
            item.lever_rate ? item.lever_rate : 1 }}x</div>
        </div>
        <div class="flex-1 text-center  font-28">
          <div class="text-grey">{{ $t('保证金') }} ( {{ routeType == 'cryptos' ? 'USDT' : 'USD' }})</div>
          <div class="text-grey">{{ $t('交易金额') }} ( {{ routeType == 'cryptos' ? 'USDT' : 'USD' }})</div>
          <div class="mt-20 textColor">{{ item.deposit }}</div>
        </div>
        <div class="flex-1 flex flex-col items-end  font-28">
src/i18n/Deutsch.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Transaktionsbetrag",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Bitte wählen Sie das richtige Netzwerk. Wenn Sie an das falsche Netzwerk senden, können Ihre Vermögenswerte verloren gehen.",
    "信用分":"Kreditwürdigkeit",
    entrustOrder: "Betrauungsauftrag",
src/i18n/Italy.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Importo della transazione",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Seleziona la rete corretta. Se invii alla rete sbagliata, i tuoi dati potrebbero andare persi.",
    "信用分":"punteggio di credito",
    entrustOrder: "Ordine di Affidamento",
src/i18n/Japanese.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"取引金額",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"正しいネットワークを選択してください。間違ったネットワークに送信すると、資産が失われる可能性があります。",
    "信用分":"クレジットスコア",
    entrustOrder: "委託注文",
src/i18n/Portuguese.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Valor da transação",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Selecione a rede correta. Se você enviar para a rede errada, seus ativos poderão ser perdidos.",
    "信用分":"pontuação de crédito",
    entrustOrder: "Ordem de Confiança",
src/i18n/Spanish.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Valor da transação",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Selecione a rede correta. Se você enviar para a rede errada, seus ativos poderão ser perdidos.",
    "信用分":"pontuação de crédito",
    entrustOrder: "Ordem de Confiança",
src/i18n/cn.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"交易金額",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"請選擇正確的網路。若發送至錯誤的網絡,您的資產可能會遺失。",
    "信用分":"信用分",
    entrustOrder: "委託訂單",
src/i18n/en.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Transaction amount",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Please select the correct network. If you send to the wrong network, your assets may be lost.",
    "信用分":"credit score",
    entrustOrder: "Entrust Order",
src/i18n/fa.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Montant de la transaction",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Veuillez sélectionner le bon réseau. Si vous envoyez vers le mauvais réseau, vos ressources risquent d'être perdues..",
    "信用分":"pointage de crédit",
    entrustOrder: "Ordonnance de mandat",
src/i18n/korean.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"거래금액",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"올바른 네트워크를 선택해 주세요. 잘못된 네트워크로 보내시면 자산이 손실될 수 있습니다..",
    "信用分":"신용 점수",
    entrustOrder: "위탁 주문",
src/i18n/th.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"จำนวนธุรกรรม",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"กรุณาเลือกเครือข่ายที่ถูกต้อง หากส่งไปยังเครือข่ายที่ไม่ถูกต้อง ทรัพย์สินของคุณอาจสูญหาย",
    "信用分":"คะแนนเครดิต",
    entrustOrder: "คำสั่งซื้อ",
src/i18n/vi.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"Số tiền giao dịch",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"Vui lòng chọn đúng mạng. Nếu bạn gửi đến sai mạng, tài sản của bạn có thể bị mất.。",
    "信用分":"Phần tín dụng",
    entrustOrder: "Lệnh ủy thác",
src/i18n/zhcn.js
@@ -1,4 +1,5 @@
export default {
    "交易金额":"交易金额",
    "请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。":"请选择正确的网络。若发送至错误的网络,您的资产可能会丢失。",
    "信用分":"信用分",
    entrustOrder: "委托订单",
src/router/index.js
@@ -6,6 +6,7 @@
import {
    useUserStore
} from "@/store/user.js";
import store from '@/store/store'
import {
    onMounted
} from 'vue';
@@ -1179,7 +1180,7 @@
                {
                    path: 'transfer',
                    meta: {
                        tarbar: true,
                        tarbar: false,
                    },
                    component: () =>
                        import( /* webpackChunkName: "transfer" */ /* webpackPrefetch: true */
src/service/user.api.js
@@ -322,7 +322,7 @@
export const _customer = () => {
    return request({
        url: "api/syspara!getSyspara.action",
        url: "api/syspara/getSyspara.action",
        method: "GET",
        params: {
            code: "customer_service_url"
src/views/cryptos/PerpetualContract/orderDetail.vue
@@ -21,11 +21,11 @@
        </div>
        <div class="flex justify-between cell-item">
          <div class="text-grey">{{ $t('开仓金额') }}</div>
          <div class="textColor">{{ detail.amount_open }}</div>
          <div class="textColor">{{ detail.deposit_open }}</div>
        </div>
        <div class="flex justify-between cell-item">
          <div class="text-grey">{{ $t('可平金额') }}</div>
          <div class="textColor">{{ detail.amount }}</div>
          <div class="textColor">{{ detail.deposit }}</div>
        </div>
        <!-- <div class="flex justify-between cell-item">
          <div class="text-grey">{{ $t('保证金') }}</div>
src/views/cryptos/Withdraw/withdrawPage.vue
@@ -21,18 +21,19 @@
        </div>
        <p class="font-35 mt-44 textColor">{{ $t('区块链网络') }}</p>
        <ul class="flex mt-22  flex-wrap">
          <li
            class="w-210 h-96 mb-20 mr-40 rounded rounded-lg border border-solid flex justify-center items-center textColor"
            :class="blockchainIndex == index ? 'active' : ''" v-for="(item, index) in blockList" :key="item.id"
            @click="changeBlockchain(item, index)">{{ item.blockchain_name }}</li>
                    <li class="w-210 h-96 mb-20 mr-40 rounded rounded-lg border border-solid flex justify-center items-center textColor"
                        :class="blockchainIndex == index ? 'active' : ''" v-for="(item, index) in blockList"
                        :key="item.id" @click="changeBlockchain(item, index)">{{ item.blockchain_name }}</li>
        </ul>
        <p class="font-35 mt-22 textColor">{{ $t('地址') }}</p>
        <div class="inputBackground flex items-center justify-between h-96 rounded mt-22">
          <input :placeholder="$t('长按粘贴')" class="h-full flex-1 border-none bg-none px-16 textColor" v-model="address" />
                    <input :placeholder="$t('长按粘贴')" class="h-full flex-1 border-none bg-none px-16 textColor"
                        v-model="address" />
          <div class="flex items-center">
            <span class="colorMain" @click="pastCont">{{ $t('粘贴') }}</span>
            <div>
              <img @click="clickCode()" src="@/assets/image/public/scan.png" alt="logo" class="w-65 h-65 ml-20 mr-30" />
                            <img @click="clickCode()" src="@/assets/image/public/scan.png" alt="logo"
                                class="w-65 h-65 ml-20 mr-30" />
            </div>
          </div>
        </div>
@@ -62,14 +63,16 @@
        <p class="text-white mt-46 textColor font-28">{{ $t('提币说明') }}:
        </p>
        <div class="text-grey mt-10 font-28" v-html="tip"></div>
        <van-button class="w-768 h-100 rounded flex justify-center items-center mt-56  text-white btnMain border-none"
                <van-button
                    class="w-768 h-100 rounded flex justify-center items-center mt-56  text-white btnMain border-none"
          @click="showDetail">
          {{ $t('提现') }}</van-button>
      </div>
      <van-popup v-model:show="show" position="bottom">
        <div class="pop-box relative font-28">
          <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-20 top-20" @click="show = false" />
                    <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-20 top-20"
                        @click="show = false" />
          <p class="font-38 text-center pt-60 textColor">{{ $t('确认订单') }}</p>
          <p class="font-35 mt-49 text-grey text-center">{{ $t('实际到账') }}</p>
          <p class="font-50 mt-23 text-center textColor">{{ volume_last }} <span class="text-grey font-35">
@@ -108,7 +111,8 @@
          <p class="px-32 mt-40 font-30 textColor">2. {{ $t('提币订单创建后不可取消。') }}</p>
          <p class="w-768 h-100 rounded flex justify-center items-center mt-56 mb-48 btnMain text-white ml-32"
            @click="onConfirm">
            {{ $t('确定') }}</p>
                        {{ $t('确定') }}
                    </p>
        </div>
      </van-popup>
      <!-- 币种 -->
@@ -120,12 +124,21 @@
</template>
<script>
import { Popup, ActionSheet, showToast } from "vant"
    import {
        Popup,
        ActionSheet,
        showToast
    } from "vant"
import Axios from "@/service/recharge.js"
import { _withdrawFee,_withdrawApply } from "@/service/withdraw.api.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 {
        _getAllWallet
    } from "@/service/fund.api";
export default {
  name: "withdrawPage",
  components: {
@@ -140,7 +153,15 @@
      value: 'USDT', //选中的币种
      show: false,
      showSymbol: false,
      actions: [{ name: 'USDT' }, { name: 'BTC' }, { name: 'ETH' }, { name: 'USDC' }],
                actions: [{
                    name: 'USDT'
                }, {
                    name: 'BTC'
                }, {
                    name: 'ETH'
                }, {
                    name: 'USDC'
                }],
      blockList: [],
      blockchainIndex: "",
      usdtBalance: "", //余额
@@ -167,8 +188,11 @@
    }).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)); }
                if (err.code === 'ECONNABORTED') {
                    showToast(this.$t('网络超时!'));
                } else if (err.msg !== undefined) {
                    showToast(this.$t(err.msg));
                }
    })
    _withdrawFee({
      amount: 1,
@@ -349,22 +373,44 @@
        //     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)=> {
            console.log('123123123123123',res);
            if(res.code==0) {
                this.$router.push({
                    path:"/withdraw/withdrawSumbit"
                            path: "/cryptos/withdraw/withdrawSumbit"
                });
            }else{
              this.$toast(this.$t(res.msg));
                    }).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();
        });
                        // this.getToken()
                    })
      } else {
        showToast(this.$t('请输入提币数量'));
      }
src/views/my/index.vue
@@ -1,11 +1,17 @@
<template>
  <section class="my-index" >
    <fx-header :title="$t('my')">
    <!-- <fx-header :back="false" :title="$t('my')">
      <template v-slot:right>
        <van-icon name="service-o" size="24" @click="$router.push('/customerService')"></van-icon>
      </template>
    </fx-header>
    </fx-header> -->
    <assets-head title="">
        <!-- <img src="../../../assets/image/assets-center/exchange.png" alt="exchange-img" class="w-44 h-38"
            @click="goRouter('/customerService')" /> -->
            <template v-slot:right>
              <van-icon name="service-o" size="24" @click="$router.push('/customerService')"></van-icon>
            </template>
    </assets-head>
    <div class="px-8 mt-4">
      <h1 class="text-2xl font-bold title" v-if="!(userStore.userInfo && userStore.userInfo.token)">{{
        $t('welcome')
@@ -35,7 +41,7 @@
            <div class="label pl-2 pr-2 ml-3" :class="{ 'green': kycHighStatus == 2 }">
              {{ kycHighStatus == 2 ? $t('高级用户') : $t('普通用户') }}
            </div>
            <div class="pl-2 pr-2 ml-3" style="font-size: 12px;">{{$t('信用分')}} : {{userStore.userInfo.creditScore}}</div>
            <div class="pl-2 pr-2 ml-3" style="font-size: 12px;">{{$t('信用分')}} : {{userdata.creditScore}}</div>
          </div>
        </div>
      </div>
@@ -50,10 +56,10 @@
            <img src="@/assets/imgs/my/安全.png" alt="">
            <div>{{ t('安全') }}</div>
          </div>
          <div class="label_item flex flex-col items-center justify-center mt-8" @click="onRoute('/changePassword')">
<!--          <div class="label_item flex flex-col items-center justify-center mt-8" @click="onRoute('/changePassword')">
            <img src="@/assets/imgs/my/密码.png" alt="">
            <div>{{ t('修改密码') }}</div>
          </div>
          </div> -->
          <div class="label_item flex flex-col items-center justify-center mt-8"
            @click="onRoute('/cryptos/accountChange')">
            <img src="@/assets/imgs/my/记录.png" alt="">
@@ -108,7 +114,7 @@
<script setup>
import { reactive, onMounted, ref, computed } from 'vue';
import { useRouter } from 'vue-router';
import { _getIdentify, _getKycHighLevel, _logOut } from "@/service/user.api.js";
import { _getIdentify, _getKycHighLevel, _logOut,_info ,_customer } from "@/service/user.api.js";
import { useUserStore } from '@/store/user';
import { useI18n } from "vue-i18n";
import useClipboard from "vue-clipboard3";
@@ -121,8 +127,10 @@
const router = useRouter()
const userStore = useUserStore()
const customer_service_url = ref(null)
const status = ref(null)
const kycHighStatus = ref(null)
const userdata = ref({})
const state = reactive({
  cellList: [
    {
@@ -144,19 +152,22 @@
  ]
})
const onRoute = (path) => {
  console.log(path)
  // if(path=='/login'){
     //  console.log(status.value);
     //  // router.$refs.app.loginButton();
  // }else{
     //  router.push(path)
  // }
  if(path=='/customerService'){
      if(customer_service_url.value){
          window.location.href = customer_service_url.value;
      }else{
  router.push(path)
      }
  }else{
      router.push(path)
  }
}
onMounted(() => {
  if (userStore.userInfo && userStore.userInfo.token) {
    getIdentify()
    getKycHighLevel()
    getinfo()
    getcustomer()
  }
})
const cellList = computed(() => {
@@ -210,6 +221,21 @@
    store.state.user.userInfo = {}
  })
}
const getcustomer = () => {
  _customer().then((data) => {
    customer_service_url.value = data.customer_service_url
    console.log(customer_service_url);
  }).catch(error => {
    console.error('Error fetching data:', error);
  });
};
const getinfo = () => {
  _info().then((data) => {
    userdata.value = data;  // 确保 userdata 被正确声明
  }).catch(error => {
    console.error('Error fetching data:', error);
  });
};
const getIdentify = () => {
  _getIdentify().then(data => {
    status.value = data.status
src/views/safety/index.vue
@@ -1,6 +1,6 @@
<template>
  <div class="safety">
    <fx-header :back="false" @back="$router.push('/my/index')">
    <fx-header >
    </fx-header>
    <div class="content">
      <div class="title textColor">{{ $t('safe') }}</div>
@@ -8,7 +8,7 @@
      <div class="tit2">{{ $t('twoAuthenticationTips') }}</div>
    </div>
    <van-grid :column-num="2" :gutter="12" class="verify">
      <van-grid-item v-for="(item, index) in verifyList" :key="index"
      <!-- <van-grid-item v-for="(item, index) in verifyList" :key="index"
        @click="gotoVerify(item.url, item.isVerify, item.type)">
        <div class="verifyBox">
          <div class="left">
@@ -22,7 +22,7 @@
          </div>
        </div>
        <div class="name textColor">{{ item.title }}</div>
      </van-grid-item>
      </van-grid-item> -->
    </van-grid>
    <div class="content">
      <div v-for="(obj, index) in list" :key="index" @click="$router.push(obj.url)"
src/views/trade/index.vue
@@ -13,7 +13,6 @@
    <ContractHeader :symbol="symbol" :range="range" :selectIndex="selectIndex" :symbolName="symbolName"
      :balance="userInfo.balance" @tab="onTopTab" @update-coin="onUpdate">
    </ContractHeader>
    <!-- <Head :symbolObj="symbolObj"></Head> -->
    <div :key="symbol" class="pb-108 no_touch">
@@ -305,10 +304,10 @@
    }
  },
  async created() {
    if (this.$route.query.type) {
      this.type = this.$route.query.type
    }
    this.keyIndex += 1
    await this.SET_COIN_LIST(this.type)
    _getBalance().then(data => { // 获取用户余额
      this.$store.commit('user/SET_USERINFO', { balance: data.money })
@@ -317,8 +316,10 @@
    })
  },
  methods: {
    ...mapActions('home', [SET_COIN_LIST]),
    onUpdate(symbol) { // 更新
        this.keyIndex += 1
      this.currentType = 'long'
      this.symbol = symbol
      this.closeSocket()