93f9b248dd0eecbaa77006e5146c58c831d89d8e..4e060ba04e97107a4b000e0232c818912a83e9d0
2025-07-08 lxf
style
4e060b diff | tree
2025-07-08 lxf
style
2eef7e diff | tree
17 files modified
1 files added
276 ■■■■■ changed files
src/components/Transform/contract-futrue/index.vue 16 ●●●● patch | view | raw | blame | history
src/components/Transform/contract-header/index.vue 8 ●●●● patch | view | raw | blame | history
src/components/Transform/kline-charts/index.vue 2 ●●● patch | view | raw | blame | history
src/components/Transform/list-quotation/index.vue 16 ●●●● patch | view | raw | blame | history
src/components/Transform/mining-exchange-input/index.vue 10 ●●●● patch | view | raw | blame | history
src/components/Transform/perpetual-open/index.vue 46 ●●●●● patch | view | raw | blame | history
src/config/index.js 7 ●●●●● patch | view | raw | blame | history
src/views/cryptos/PerpetualContract/index.vue 42 ●●●● patch | view | raw | blame | history
src/views/cryptos/Trade/index.vue 6 ●●●● patch | view | raw | blame | history
src/views/cryptos/TrendDetails/index.vue 8 ●●●● patch | view | raw | blame | history
src/views/cryptos/Withdraw/withdrawPage.vue 3 ●●●●● patch | view | raw | blame | history
src/views/cryptos/index.vue 8 ●●●● patch | view | raw | blame | history
src/views/forget/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/login/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/optional/index.vue 18 ●●●●● patch | view | raw | blame | history
src/views/register/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/register/step.vue 1 ●●●● patch | view | raw | blame | history
vite.config.js.timestamp-1751953010068.mjs 73 ●●●●● patch | view | raw | blame | history
src/components/Transform/contract-futrue/index.vue
@@ -2,10 +2,10 @@
  <div>
    <div class="contact-futrue">
      <div class="font-24 text-grey mb-24">{{ $t('交割时间') }}</div>
      <ul class="flex flex-wrap w-full">
      <ul class="flex flex-wrap w-full"  v-if="initFutrue.para?.length" >
        <!-- v-if="initFutrue.para" -->
        <!-- initFutrue: {{ initFutrue.para }} -->
        <li v-for="(item, index) in initFutrue.para"  v-if="initFutrue.para" :key="item.uuid"
        <li v-for="(item, index) in initFutrue.para" :key="index"
          class="h-92 flex items-center mb-22" @click="onSelect(item, index)">
          <p class="w-95 h-full flex justify-center items-center font-22 flex-1"
            :class="active === item.para_id ? 'bg-light-blue text-white' : 'delivery_left_tab_background textColor'"
@@ -46,17 +46,17 @@
  created() {
        console.log('this.initFutrue', this.initFutrue)
        // this._initParam();
        if (this.initFutrue.para.length > 0) {
        if (this.initFutrue?.para.length > 0) {
          this.active = this.initFutrue.para[0].para_id || ''
          this.$emit('paraId', { id: this.active, index: 0 })
        }
  },
  watch: {
    '$route.query.symbol'(newVal, oldVal) {
      if (newVal !== oldVal) {
        this._initParam();
      }
    }
    // '$route.query.symbol'(newVal, oldVal) {
    //   if (newVal !== oldVal) {
    //     this._initParam();
    //   }
    // }
  },
  methods: {
    onSelect(item, index) { // 选中
src/components/Transform/contract-header/index.vue
@@ -11,9 +11,9 @@
              <div class="font-35">{{ symbolName.toUpperCase() || '--' }}</div>
              <div class="ml-15 font-28">{{ title }}</div>
            </div>
            <div class="pl-10 w-160  font-28" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{ range > 0 ?
              '+' : '' }}{{ range || '--' }}%</div>
            <!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="klineJump()"> -->
            <div class="pl-10 w-160  font-28" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{ range || '--' }}%</div>
              <!-- 右上角小图标 -->
            <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="klineJump()">
          </div>
          <!-- <div class="flex items-center">
                        <img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35"
@@ -145,7 +145,7 @@
  methods: {
    onRoute(item) {
      if (this.$route.params.symbol !== item.symbol) {
        // this.$router.push(`/cryptos/perpetualContract/${item.symbol}?selectIndex=${this.selectIndex}`)
        this.$router.push(`/cryptos/perpetualContract/${item.symbol}?selectIndex=${this.selectIndex}`)
        // debugger
        this.$emit('update-coin', item.symbol)
        setStorage('symbol', item.symbol)
src/components/Transform/kline-charts/index.vue
@@ -81,7 +81,7 @@
        { id: '15min', time: '15min', text: '15' + this.$t('分'), ts: 15 * 60 * 1000 },
        { id: '30min', time: '30min', text: '30' + this.$t('分'), ts: 30 * 60 * 1000 },
        { id: '60min', time: '60min', text: '1' + this.$t('小时'), ts: 60 * 60 * 1000 },
        { id: '4hour', time: '4hour', text: '4' + this.$t('小时'), ts: 4 * 60 * 60 * 1000 },
        // { id: '4hour', time: '4hour', text: '4' + this.$t('小时'), ts: 4 * 60 * 60 * 1000 },
        { id: '1day', time: '1day', text: '1' + this.$t('天'), ts: 24 * 60 * 60 * 1000 },
        { id: '1week', time: '1week', text: '1' + this.$t('周'), ts: 7 * 24 * 60 * 60 * 1000 },
        { id: '1mon', time: '1mon', text: '1' + this.$t('月'), ts: 30 * 24 * 60 * 60 * 1000 }
src/components/Transform/list-quotation/index.vue
@@ -44,11 +44,11 @@
                  alt="logo" class="w-72 h-72 rounded-full mr-16" />
                <p class="flex flex-col">
                  <span class="flex items-end font-32 flex items-center">
                    <span class="textColor font-600 font-30">{{ item.symbol_data && item.symbol_data.toUpperCase() || '--'
                    <span class="textColor font-600 font-30">{{ item.name || '--'
                    }}</span>
                    <span class="font-24 text-grey" style="position: relative; top: 1px">
                    <!-- <span class="font-24 text-grey" style="position: relative; top: 1px">
                      /USDT
                    </span>
                    </span> -->
                    <!-- <span class="font-24 text-grey" style="position: relative; top: 1px">
                      {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span> -->
                  </span>
@@ -62,10 +62,10 @@
                    currency.rate).toFixed(2) || '--' }}</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_str > 0 || item.change_ratio > 0">
                  +{{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p>
                <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio_str > 0">
                  {{ (item.change_ratio_str === 0 ? 0 : item.change_ratio_str) }}%</p>
                <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else>
                  {{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p>
                  {{ (item.change_ratio_str === 0 ? 0 : item.change_ratio_str) }}%</p>
              </li>
            </ul>
          </van-cell>
@@ -100,9 +100,9 @@
                </div>
                <template v-else>
                  <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio_str > 0 || item.change_ratio > 0">
                    +{{ item.change_ratio || item.change_ratio_str }}%</p>
                    +{{ item.change_ratio_str }}%</p>
                  <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else>
                    {{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p>
                    {{ (item.change_ratio_str === 0 ? 0 : '--') }}%</p>
                </template>
              </li>
            </ul>
src/components/Transform/mining-exchange-input/index.vue
@@ -254,7 +254,7 @@
  .exchange-pop {
    .tab-list {
      background: #0D1323;
      background: #eee;
      border-radius: 140px;
      height: 180px;
@@ -265,8 +265,8 @@
      }
      .active {
        background: #262D47;
        background: #3640f0;
        color: #fff;
        border-radius: 140px;
      }
    }
@@ -277,8 +277,8 @@
    }
    .search-input {
      color: $text_color;
      background: #0D1323;
      // color: #fff;
      background: #f5f5f5;
      border-radius: 80px;
      height: 100px !important;
      display: flex;
src/components/Transform/perpetual-open/index.vue
@@ -54,12 +54,12 @@
            </div>
            <div class="w-440 flex items-center greyBg h-76 lh-76 rounded-lg" style="background-color:#f5f5f5;" v-if="initFutrue" >
              <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0"
              <!-- <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0"
                class="w-80 flex items-center justify-center" style="height:100%;" @click="onReduce">
                <img src="../../../assets/image/public/reduce.png" alt="add" class="w-30 h-6" />
              </div>
              <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none greyBg text-center textColor"
                style="width: 156px;" v-model="form.amount" type="number" @input="onInput" />
              </div> -->
              <!-- <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none greyBg text-center textColor"
                style="width: 156px;" v-model="form.amount" type="number" @input="onInput" /> -->
              <input v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'"
                :placeholder="($t('最少') + initFutrue && initFutrue.para ? $t('最小金额') + initFutrue.para[paraIndex].buy_min : '')"
                class="border-none greyBg text-center textColor" style="width: 156px;background-color:#f5f5f5;" v-model="form.amount" type="number"
@@ -74,13 +74,13 @@
              </div>
            </div>
            <template v-if="selectIndex == 1">
              <div class="mt-40 mb-30 w-full flex justify-between items-center">
              <!-- <div class="mt-40 mb-30 w-full flex justify-between items-center">
                <span class="font-22 font-400 text-grey">{{ $t("可开张数") }}</span>
                <span class="font-22 font-400 textColor">
                  {{ initData.volume }}
                  {{ initData.volume || 0}}
                  {{ $t("张") }}
                </span>
              </div>
              </div> -->
              <!-- <vue-slider v-bind="options" v-model="form.amount"></vue-slider> -->
              <!-- <vue-slider class="mainBox" v-bind="options" :marks="marks" v-model="form.volume" :hide-label="true"  width="90%"
              :railStyle="{ background: '#404040', height: '4px' }"
@@ -124,6 +124,7 @@
              <div>{{ $t("可用USDT") }}</div>
              <div class="textColor">{{ initFutrue.amount }} {{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</div>
            </div>
            <!-- {{JSON.stringify(initFutrue.para) != '[]'}} {{JSON.stringify(initFutrue.para)}} -->
            <div class="flex font-24 text-grey justify-between mt-20"
              v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'">
              <div>{{ $t("手续费") }}</div>
@@ -131,7 +132,7 @@
                {{
                  (
                    form.amount *
                    (initFutrue && initFutrue.para
                    (initFutrue?.para.length>0
                      ? initData.para[paraIndex].unit_fee
                      : "")
                  ).toFixed(2)
@@ -436,27 +437,32 @@
    '$route'(val) {
      this.getHomeList(val.params.symbol);
    },
    initData(val) {
      if (val.lever.length > 0) {
        val.lever = val.lever.sort(this.orderListAsc('lever_rate'))
      }
    // initData(val) {
    //   if (val && val.lever && val.lever.length > 0) {
    //     val.lever = val.lever.sort(this.orderListAsc('lever_rate'))
    //   }
    }
    // }
  },
  computed: {
    ...mapGetters('user', ['userInfo']),
    ...mapGetters('home', ['currency']),
    initData() {
      let obj = null
      if (this.selectIndex / 1 === 1) {
        obj = this.initOpen
        if (!obj.lever || !obj.lever.length) { // 倍数
          obj.lever = [{ id: 1, lever_rate: 1 }]
        const obj = this.initOpen ? { ...this.initOpen } : { lever: [{ id: 1, lever_rate: 1 }] };
        if (!obj.lever || !Array.isArray(obj.lever) || !obj.lever.length) {
          obj.lever = [{ id: 1, lever_rate: 1 }];
        } else {
          obj.lever = [...obj.lever].sort(this.orderListAsc('lever_rate'));
        }
        return obj
        return obj;
      }
      return this.initFutrue
      // 交割合约
      if (this.initFutrue && Array.isArray(this.initFutrue.para) && this.initFutrue.para.length > 0) {
        return this.initFutrue;
      }
      // 返回一个默认对象,避免模板报错
      return {};
    },
    coudBuyVolume() { // 可买数量
      return Math.floor((this.initOpen.volume / 1) / this.form.lever_rate)
src/config/index.js
@@ -35,7 +35,8 @@
// const ENV_DEV = 'zhapi.coinbtcs.com' // dev
// const ENV_DEV = 'openapi.yanshiz.com' // dev
const ENV_DEV = '192.168.10.18:8086' // dev
// const ENV_DEV = '192.168.10.24:8086' // dev
const ENV_DEV = 'aa.yanshiz.com' // dev
// const ENV_PRO = 'qheufhj.site' //  app域名
@@ -47,8 +48,8 @@
let ws_url = ''
let host_url = ''
if (import.meta.env.MODE === 'development') {
    host_url = 'http://' + ENV_DEV
    base_url = 'http://' + ENV_DEV
    host_url = 'https://' + ENV_DEV
    base_url = 'https://' + ENV_DEV
    ws_url = 'ws://' + ENV_DEV + '/api/websocket'
} else {
    host_url = 'https://' + ENV_PRO
src/views/cryptos/PerpetualContract/index.vue
@@ -16,7 +16,7 @@
            <p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
            <p class="second-line">
              <span class="red">{{ chartData?.netChange }}</span>&nbsp;
              <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
              <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
            </p>
          </div>
          <div @click="handleClickShowMore()" class="line-r">
@@ -35,7 +35,7 @@
            <p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
            <p class="second-line">
              <span class="red">{{ chartData?.netChange }}</span>&nbsp;
              <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
              <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
            </p>
          </div>
          <div class="flex-r">
@@ -104,7 +104,7 @@
            <p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
            <p class="second-line">
              <span class="red">{{ chartData?.netChange }}</span>&nbsp;
              <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
              <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
            </p>
          </div>
          <div @click="handleClickShowMore()" class="line-r">
@@ -123,7 +123,7 @@
            <p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
            <p class="second-line">
              <span class="red">{{ chartData?.netChange }}</span>&nbsp;
              <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
              <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
            </p>
          </div>
          <div class="flex-r">
@@ -372,7 +372,7 @@
  methods: {
    ...mapActions('home', [SET_COIN_LIST]),
    onUpdate(symbol) { // 更新
      debugger
      // debugger
      this.currentType = 'long'
      this.closeSocket()
      // this.clearTimer()
@@ -489,10 +489,11 @@
      })
    },
    handleQoutes(data) {
      // console.log('handleQoutes: ', data);
      if (data && data.length) {
        const cur = data[0]
        this.price = cur.close
        this.range = cur.change_ratio + ''
        this.range = cur.changeRatioStr + ''
        this.quote = cur
        this.updateKey++
      }
@@ -580,7 +581,7 @@
          //   }, 3000);
          // })
        }
        initFun()
        // initFun()
      }
      if (type === 'close' || !type) {
        let initFunTimer = null;
@@ -591,14 +592,14 @@
            clearTimeout(initFunTimer)
            initFunTimer = null
          }).catch(err => {
            initFunTimer = setTimeout(() => {
              initFun()
            }, 3000);
            // initFunTimer = setTimeout(() => {
            //   initFun()
            // }, 3000);
          })
        }
        initFunTimer = setTimeout(() => {
          initFun()
        }, 600);
        // initFunTimer = setTimeout(() => {
        //   initFun()
        // }, 600);
      }
      if (type === 'futrue' || !type) {
        _futrueOrderInit(symbol).then(data => {
@@ -686,17 +687,18 @@
      this.closeSocket()
      this.clearTimer()
      this.symbol = symbol
      this.fetchQoutes(symbol)
      this.fetchDeepData(symbol)
      this.initParam(symbol) // 'open'
      this.clearTimer()
      const _symbol = symbol || this.symbol
      console.log('init: ',this.symbol, symbol)
      this.fetchQoutes(_symbol)
      this.fetchDeepData(_symbol)
      this.initParam(_symbol) // 'open'
      // this.clearTimer()
      //if (this.curTab === 'fetchOrderListCur') {
      if (this.curTab === 'fetchOrderListHold') {
        //this.fetchOrderListCur(symbol)
        this.fetchOrderListHold(symbol)
        this.fetchOrderListHold(_symbol)
      } else {
        this.fetchFutrueHoldList(symbol)
        this.fetchFutrueHoldList(_symbol)
      }
    },
src/views/cryptos/Trade/index.vue
@@ -28,7 +28,7 @@
        <div class="mt-20 mb-22 select-box" style="position:relative;">
          <div class=" flex justify-between  items-center w-full h-70" @click="selectBtn">
            <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> -->
            <div class="pl-16 font-28 textColor" style="width:80%;">{{ title }}</div>
            <div class="pl-16 font-28 textColor" style="width:80%;color: #333;">{{ title }}</div>
            <img src="../../../assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-20" />
          </div>
          <div class="option-box" v-show="isShow">
@@ -626,8 +626,8 @@
  .active-line {
    position: relative;
    // padding-bottom: 18px;
    color: $text_color;
    background-color: $color_main
    color: #fff;
    background-color: $btn_main;
  }
  .active-line::after {
src/views/cryptos/TrendDetails/index.vue
@@ -4,13 +4,13 @@
      <trade-head :backFunc="() => $router.push('/')" :symbol="symbol" :islevel="true" @update-coin="onUpdate"
        @data="quote = $event" :title="$t('永续')" @changeLine="onChangeLine" :isNight="isNight" :isChange="isChange"
        :kineType="kineType" :tabIndex="tab" @changeNight="OnchangeNight" />
      <div class="flex justify-between px-32 pt-40" v-if="!kineType">
      <!-- <div class="flex justify-between px-32 pt-40" v-if="!kineType">
        <div class="w-368 h-80 mr-32 font-28 flex justify-center items-center rounded box-border tabBtn"
          :class="tab === '1' ? 'activeBtn' : ''" @click="onTab('1')">{{ $t('永续合约') }}</div>
        <div class="w-368 h-80  font-28 flex justify-center items-center rounded box-border tabBtn"
          :class="tab === '2' ? 'activeBtn' : ''" @click="onTab('2')">{{ queryType == 'cryptos' ? $t('交割合约') : $t('期货交易')
          }}</div>
      </div>
      </div> -->
      <!-- 数据区 -->
      <div :class="{ slide2: animated1, slide1: animated2 }">
        <div class="data-index">
@@ -33,7 +33,7 @@
                  <p>{{ quote.high || '--' }}</p>
                </div>
                <div class="flex w-1/2 flex-col justify-between w-220 buy-title">
                  <p class="text-grey">{{ $t('24h成交量') }}({{ symbolData && symbolData.toUpperCase() || '--' }})</p>
                  <p class="text-grey">{{ $t('24h成交量') }}</p>
                  <p>{{ quote.amount && quote.amount.toFixed(3) || '--' }}</p>
                </div>
              </div>
@@ -284,7 +284,7 @@
      order_no: '',
      timer: null,
      isChangeLine: false,
      isNight: true,
      isNight: false,
      isChange: true, //是否有切换黑夜白天模式
      kineType: '',
      deepBuy: [],
src/views/cryptos/Withdraw/withdrawPage.vue
@@ -417,4 +417,7 @@
    background: $btn_main;
  }
}
:deep(.van-action-sheet__name) {
  color: #fff;
}
</style>
src/views/cryptos/index.vue
@@ -136,14 +136,14 @@
    async fetchQList(v) { // 获取行情
      let coninArr = ''
      if (v) { this.getVal = v }
      if(this.getVal == 2) {
      // if(this.getVal == 2) {
        let arr = getStorage('qoutes').coins
        arr.map((item) => {
          coninArr += item.symbol + ','
        })
       }else{
        coninArr = this.coinArr.join(',')
      }
      //  }else{
        // coninArr = this.coinArr.join(',')
      // }
      console.log('fetchQList', v, coninArr)
      // if()
      const list = await _getHomeList(coninArr).catch(() => {
src/views/forget/index.vue
@@ -4,11 +4,11 @@
        </fx-header>
        <div class="forgetCont">
            <div class="title textColor">{{ $t('resetLoginPassword') }}</div>
            <div class="flex re-tab text-grey">
            <!-- <div class="flex re-tab text-grey">
                <div :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ $t('email') }}</div>
                <div :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('phoneNum') }}</div>
                <div :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('googleVerify') }}</div>
            </div>
            </div> -->
            <ExInput :label="$t('account')" :placeholderText="$t('entryAccount')" v-model="account" :dialCode="dialCode"
                @selectArea="onSelectArea" :area="isArea" :icon="icon" />
            <van-button class="w-full" style="margin-top:10px;" type="primary" @click="next">{{ $t('nextStep') }}
src/views/login/index.vue
@@ -2,7 +2,7 @@
    <div class="login">
        <div class="top" @click="onRoute('/my/index')"><img src="../../assets/image/icon-close.png" alt="" /></div>
        <div class="title textColor">{{ $t('login') }}</div>
        <div class="flex login-tab">
        <!-- <div class="flex login-tab">
            <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
                $t('account')
            }}
@@ -13,7 +13,7 @@
                $t('phoneNum')
            }}
            </div>
        </div>
        </div> -->
        <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
            :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon" />
        <ExInput style="padding-bottom:0!important;" :label="$t('password')" :placeholderText="$t('entryPassword')"
src/views/optional/index.vue
@@ -35,15 +35,15 @@
    <div class="text-12 pt-10">
      <div class="flex justify-between items-center">
        <div style="color: rgb(150, 150, 150);">{{t('可用')}}({{ currency.name }})</div>
        <div class="title text-blue-600">{{ currency.mark_price }}</div>
        <div class="title text-blue-600">{{ currency.usable }}</div>
      </div>
      <div class="my-16 flex justify-between items-center">
        <div style="color: rgb(150, 150, 150);">{{ t('处理中') }}({{ currency.name }})</div>
        <div>{{ 0 }}</div>
        <div>{{ currency.freeze_amount }}</div>
      </div>
      <div class="flex justify-between items-center">
        <div style="color: rgb(150, 150, 150);">{{ t('转换') }}(USDT)</div>
        <div></div>
        <div>{{ currency.usdt }}</div>
      </div>
    </div>
  </div>
@@ -56,6 +56,7 @@
<script setup>
import { ref, onMounted } from 'vue';
import { _getContractBySymbolType, _contractOrder } from '@/service/etf.api';
import { _getAllWallet } from '@/service/fund.api';
import { useI18n } from "vue-i18n";
import {useRouter} from 'vue-router';
const { t } = useI18n()
@@ -87,15 +88,16 @@
const getOrderList = async () => {
  const params = {
    type: 'orders',
    page_no: 1,
    page_size: 'all',
    // type: 'orders',
    // page_no: 1,
    // page_size: 'all',
    symbolType: 'cryptos'
  };
  const response = await _contractOrder(params);
  const response = await _getAllWallet(params);
    console.log(response, 'response')
    // 处理订单数据
    currencies.value = response
    currencies.value = response.extends
};
</script>
src/views/register/index.vue
@@ -3,7 +3,7 @@
        <div class="top" @click="router.go(-1)"><img src="../../assets/image/icon-close.png" alt=""></div>
        <Step :step="1"></Step>
        <div class="title textColor">{{ $t('register') }}</div>
        <div class="flex re-tab">
        <!-- <div class="flex re-tab">
            <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
                $t('account')
            }}</div>
@@ -12,7 +12,7 @@
            <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{
                $t('phoneNum')
            }}</div>
        </div>
        </div> -->
        <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
            :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
src/views/register/step.vue
@@ -53,6 +53,7 @@
    .green {
        background: $green;
        color: #fff;
    }
}
vite.config.js.timestamp-1751953010068.mjs
New file
@@ -0,0 +1,73 @@
// vite.config.js
import { defineConfig } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/vite/dist/node/index.js";
import vue from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import path from "path";
import Components from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-components/dist/vite.mjs";
import { VantResolver } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-components/dist/resolvers.mjs";
import DefineOptions from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-define-options/dist/vite.mjs";
import { visualizer } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import legacy from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/@vitejs/plugin-legacy/dist/index.mjs";
var __vite_injected_original_dirname = "/Users/apple/Desktop/\u6085\u6590\u8DE8\u5883/composite_h5-main1";
var isVisualizer = process.env.VISUALIZER === "show";
var vite_config_default = defineConfig({
  base: "",
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()]
    }),
    DefineOptions(),
    isVisualizer && visualizer({ gzipSize: true }),
    legacy({
      targets: ["defaults", "not IE 11"]
    })
  ],
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@import "@/assets/css/variable.scss";`
      }
    }
  },
  server: {
    open: true,
    port: 8085,
    hmr: true,
    host: "0.0.0.0",
    proxy: {
      "/api": {
        target: "https://104.233.210.35:8085",
        changeOrigin: true,
        secure: false
      }
    }
  },
  resolve: {
    dedupe: [
      "vue"
    ],
    alias: {
      "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js",
      "~": path.resolve(__vite_injected_original_dirname, "./"),
      "@": path.resolve(__vite_injected_original_dirname, "src")
    }
  },
  build: {
    assetsDir: "static",
    rollupOptions: {
      input: {
        index: path.resolve(__vite_injected_original_dirname, "index.html")
      },
      output: {
        chunkFileNames: "js/[name]-[hash].js",
        entryFileNames: "js/[name]-[hash].js",
        assetFileNames: "[ext]/name-[hash].[ext]"
      }
    }
  },
  externals: ["vue"]
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvYXBwbGUvRGVza3RvcC9cdTYwODVcdTY1OTBcdThERThcdTU4ODMvY29tcG9zaXRlX2g1LW1haW4xXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvYXBwbGUvRGVza3RvcC9cdTYwODVcdTY1OTBcdThERThcdTU4ODMvY29tcG9zaXRlX2g1LW1haW4xL3ZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9hcHBsZS9EZXNrdG9wLyVFNiU4MiU4NSVFNiU5NiU5MCVFOCVCNyVBOCVFNSVBMiU4My9jb21wb3NpdGVfaDUtbWFpbjEvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IENvbXBvbmVudHMgZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZSc7XG5pbXBvcnQgeyBWYW50UmVzb2x2ZXIgfSBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnMnO1xuaW1wb3J0IERlZmluZU9wdGlvbnMgZnJvbSAndW5wbHVnaW4tdnVlLWRlZmluZS1vcHRpb25zL3ZpdGUnO1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcidcbmltcG9ydCBsZWdhY3kgZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcblxuY29uc3QgaXNWaXN1YWxpemVyID0gcHJvY2Vzcy5lbnYuVklTVUFMSVpFUiA9PT0gJ3Nob3cnXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBiYXNlOiAnJywgIC8vSDVcdTYyNTNcdTUzMDVcdTc1MjhcbiAgLy8gYmFzZTogJy4vJywgLy8gQVBQXHU2MjUzXHU1MzA1XHU3NTI4XG4gIHBsdWdpbnM6IFtcbiAgICB2dWUoKSxcbiAgICBDb21wb25lbnRzKHtcbiAgICAgIHJlc29sdmVyczogW1ZhbnRSZXNvbHZlcigpXSxcbiAgICB9KSxcbiAgICBEZWZpbmVPcHRpb25zKCksXG4gICAgaXNWaXN1YWxpemVyICYmIHZpc3VhbGl6ZXIoeyBnemlwU2l6ZTogdHJ1ZSB9KSxcbiAgICBsZWdhY3koe1xuICAgICAgdGFyZ2V0czogWydkZWZhdWx0cycsICdub3QgSUUgMTEnXSxcbiAgICB9KSxcbiAgXSxcbiAgY3NzOiB7XG4gICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgc2Nzczoge1xuICAgICAgICBhZGRpdGlvbmFsRGF0YTogYEBpbXBvcnQgXCJAL2Fzc2V0cy9jc3MvdmFyaWFibGUuc2Nzc1wiO2BcbiAgICAgIH0sXG4gICAgfVxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBvcGVuOiB0cnVlLFxuICAgIHBvcnQ6IDgwODUsXG4gICAgaG1yOiB0cnVlLFxuICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICBwcm94eToge1xuICAgICAgXCIvYXBpXCI6IHtcbiAgICAgICAgdGFyZ2V0OiBcImh0dHBzOi8vMTA0LjIzMy4yMTAuMzU6ODA4NVwiLFxuICAgICAgICAvLyB0YXJnZXQ6IFwiaHR0cDovLzE5OC4xMy4zOS4xMDk6ODA4MVwiLFxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIC8vIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC93YXAvLCBcIlwiKSxcbiAgICAgICAgc2VjdXJlOiBmYWxzZVxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICByZXNvbHZlOiB7XG4gICAgZGVkdXBlOiBbXG4gICAgICAndnVlJ1xuICAgIF0sXG4gICAgYWxpYXM6IHtcbiAgICAgICd2dWUtaTE4bic6ICd2dWUtaTE4bi9kaXN0L3Z1ZS1pMThuLmNqcy5qcycsXG4gICAgICBcIn5cIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vJyksXG4gICAgICBcIkBcIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3NyYycpLFxuICAgIH1cbiAgfSxcbiAgYnVpbGQ6IHtcbiAgICBhc3NldHNEaXI6IFwic3RhdGljXCIsXG4gICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgaW5kZXg6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiaW5kZXguaHRtbFwiKSxcbiAgICAgIH0sXG4gICAgICBvdXRwdXQ6IHtcbiAgICAgICAgY2h1bmtGaWxlTmFtZXM6ICdqcy9bbmFtZV0tW2hhc2hdLmpzJyxcbiAgICAgICAgZW50cnlGaWxlTmFtZXM6IFwianMvW25hbWVdLVtoYXNoXS5qc1wiLFxuICAgICAgICBhc3NldEZpbGVOYW1lczogXCJbZXh0XS9uYW1lLVtoYXNoXS5bZXh0XVwiXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGV4dGVybmFsczpbJ3Z1ZSddXG59KVxuXG5jb25zdCBnbG9iYWxTYXNzID0gY29uZmlnID0+IHtcbiAgY29uc3Qgb25lT2ZzTWFwID0gY29uZmlnLm1vZHVsZS5ydWxlKCdzY3NzJykub25lT2ZzLnN0b3JlXG4gIG9uZU9mc01hcC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGl0ZW1cbiAgICAgIC51c2UoJ3Nhc3MtcmVzb3VyY2VzLWxvYWRlcicpXG4gICAgICAubG9hZGVyKCdzYXNzLXJlc291cmNlcy1sb2FkZXInKVxuICAgICAgLm9wdGlvbnMoe1xuICAgICAgICByZXNvdXJjZXM6ICdAL2Fzc2V0cy9jc3MvaW5pdC5zY3NzJ1xuICAgICAgfSlcbiAgICAgIC5lbmQoKVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBc1YsU0FBUyxvQkFBb0I7QUFDblgsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sVUFBVTtBQUNqQixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLG1CQUFtQjtBQUMxQixTQUFTLGtCQUFrQjtBQUMzQixPQUFPLFlBQVk7QUFQbkIsSUFBTSxtQ0FBbUM7QUFTekMsSUFBTSxlQUFlLFFBQVEsSUFBSSxlQUFlO0FBQ2hELElBQU8sc0JBQVEsYUFBYTtBQUFBLEVBQzFCLE1BQU07QUFBQSxFQUVOLFNBQVM7QUFBQSxJQUNQLElBQUk7QUFBQSxJQUNKLFdBQVc7QUFBQSxNQUNULFdBQVcsQ0FBQyxhQUFhLENBQUM7QUFBQSxJQUM1QixDQUFDO0FBQUEsSUFDRCxjQUFjO0FBQUEsSUFDZCxnQkFBZ0IsV0FBVyxFQUFFLFVBQVUsS0FBSyxDQUFDO0FBQUEsSUFDN0MsT0FBTztBQUFBLE1BQ0wsU0FBUyxDQUFDLFlBQVksV0FBVztBQUFBLElBQ25DLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFDQSxLQUFLO0FBQUEsSUFDSCxxQkFBcUI7QUFBQSxNQUNuQixNQUFNO0FBQUEsUUFDSixnQkFBZ0I7QUFBQSxNQUNsQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFFUixjQUFjO0FBQUEsUUFFZCxRQUFRO0FBQUEsTUFDVjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxRQUFRO0FBQUEsTUFDTjtBQUFBLElBQ0Y7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLFlBQVk7QUFBQSxNQUNaLEtBQUssS0FBSyxRQUFRLGtDQUFXLElBQUk7QUFBQSxNQUNqQyxLQUFLLEtBQUssUUFBUSxrQ0FBVyxLQUFLO0FBQUEsSUFDcEM7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixPQUFPO0FBQUEsUUFDTCxPQUFPLEtBQUssUUFBUSxrQ0FBVyxZQUFZO0FBQUEsTUFDN0M7QUFBQSxNQUNBLFFBQVE7QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBLE1BQ2xCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFdBQVUsQ0FBQyxLQUFLO0FBQ2xCLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==