1
李凌
2026-01-21 e01cee0f0c5c5c2eb2d8595eadb3c7a9df2a37fc
1
17 files modified
199 ■■■■ changed files
src/components/Transform/trade-order-area/index.vue 20 ●●●●● patch | view | raw | blame | history
src/components/fx-footer/index.vue 12 ●●●● patch | view | raw | blame | history
src/i18n/Deutsch.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/Italy.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/Japanese.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/Portuguese.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/Spanish.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/cn.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/en.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/fa.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/korean.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/th.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/vi.js 6 ●●●●● patch | view | raw | blame | history
src/i18n/zhcn.js 6 ●●●●● patch | view | raw | blame | history
src/views/ICO/ico.vue 10 ●●●● patch | view | raw | blame | history
src/views/ICO/icoRecord.vue 80 ●●●● patch | view | raw | blame | history
src/views/homePage/index.vue 5 ●●●●● patch | view | raw | blame | history
src/components/Transform/trade-order-area/index.vue
@@ -91,6 +91,7 @@
import TradeApi from "@/service/trading.js";
import { strToArr } from '@/utils/utis'
import { mapGetters } from "vuex";
import { getStorage, setStorage } from '@/utils/index.js';
// import PopupConfirmOrder from '@/components/popup-confirm-order'
export default {
  name: "perpetualPosition",
@@ -136,6 +137,8 @@
    this.title = this.selectData[0].title
    this.type = this.selectData[0].type
    this.form.order_price_type = 'opponent'
    // 检查是否有从其他页面传递的卖出参数
    this.checkSellParams()
  },
  watch: {
    initOpen: { // 处理滚动条初始值
@@ -191,9 +194,26 @@
    this.title = this.selectData[0].title
    this.type = this.selectData[0].type
    this.form.order_price_type = 'opponent'
    // 检查是否有从其他页面传递的卖出参数
    this.checkSellParams()
  },
  methods: {
    strToArr,
    // 检查是否有从其他页面传递的卖出参数
    checkSellParams() {
      const sellParams = getStorage('tradeSellParams')
      if (sellParams && sellParams.mode === 'close' && sellParams.volume) {
        // 切换到卖出模式
        this.changeTab('close')
        // 设置数量
        this.$nextTick(() => {
          this.form.volume = sellParams.volume
          this.isTotal = false
        })
        // 清除存储的参数
        window.localStorage.removeItem('tradeSellParams')
      }
    },
    checkIsTotal(val) {
      this.isTotal = val
      this.percentageVal = 0
src/components/fx-footer/index.vue
@@ -21,10 +21,10 @@
        </template>
      </van-tabbar-item>
      <van-tabbar-item name="STO" to="/ICO/ico">
        <span :class="[active === 'STO' ? 'active' : '']">STO</span>
      <van-tabbar-item name="ICO" to="/ICO/ico">
        <span :class="[active === 'ICO' ? 'active' : '']">ICO</span>
        <template #icon="props">
          <img :src="props.active ? icon.sto.active : icon.sto.inactive" />
          <img :src="props.active ? icon.ICO.active : icon.ICO.inactive" />
        </template>
      </van-tabbar-item>
@@ -115,7 +115,7 @@
} else if (route.path == "/documentation/index") {
  active.value = 'documentation'
} else if (route.path == "/ICO/ico") {
  active.value = 'sto'
  active.value = 'ICO'
}
let quotesStore = useQuotesStore()
@@ -137,7 +137,7 @@
  } else if (route.path == "/documentation/index") {
    active.value = 'documentation'
  } else if (route.path == "/ICO/ico") {
    active.value = 'sto'
    active.value = 'ICO'
  }
})
// 底部列表
@@ -158,7 +158,7 @@
  //   active: new URL('@/assets/imgs/footer/news-active.png', import.meta.url),
  //   inactive: new URL('@/assets/imgs/footer/news.png', import.meta.url),
  // },
  sto: {
  ICO: {
    active: new URL('@/assets/imgs/footer/sto-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/sto.png', import.meta.url),
  },
src/i18n/Deutsch.js
@@ -2870,4 +2870,10 @@
    "DXCN白皮书":'DXCN-Whitepaper',
    "发售": "Verkauf",
    "资格": "Qualifikation",
    "中签时间": "Zuteilungszeit",
    "发行价": "Ausgabepreis",
    "利润": "Gewinn",
    "申购总额": "Gesamter Zeichnungsbetrag",
    "现价总额": "Gesamter aktueller Preis",
    "利润百分比": "Gewinnprozentsatz",
}
src/i18n/Italy.js
@@ -2960,4 +2960,10 @@
    "DXCN白皮书":'Libro bianco DXCN',
    "发售": "Vendita",
    "资格": "Qualifica",
    "中签时间": "Ora di assegnazione",
    "发行价": "Prezzo di emissione",
    "利润": "Profitto",
    "申购总额": "Importo totale di sottoscrizione",
    "现价总额": "Prezzo corrente totale",
    "利润百分比": "Percentuale di profitto",
}
src/i18n/Japanese.js
@@ -2728,4 +2728,10 @@
    "DXCN白皮书":'DXCNホワイトペーパー',
    "发售": "発売",
    "资格": "資格",
    "中签时间": "抽選時間",
    "发行价": "発行価格",
    "利润": "利益",
    "申购总额": "申込総額",
    "现价总额": "現在価格総額",
    "利润百分比": "利益率",
}
src/i18n/Portuguese.js
@@ -679,4 +679,10 @@
    "DXCN白皮书":'Livro Branco do DXCN',
    "发售": "Venda",
    "资格": "Qualificação",
    "中签时间": "Hora de alocação",
    "发行价": "Preço de emissão",
    "利润": "Lucro",
    "申购总额": "Valor total da subscrição",
    "现价总额": "Preço atual total",
    "利润百分比": "Percentagem de lucro",
}
src/i18n/Spanish.js
@@ -2643,4 +2643,10 @@
    "DXCN白皮书":'Libro blanco de DXCN',
    "发售": "Venta",
    "资格": "Calificación",
    "中签时间": "Hora de asignación",
    "发行价": "Precio de emisión",
    "利润": "Beneficio",
    "申购总额": "Importe total de suscripción",
    "现价总额": "Precio actual total",
    "利润百分比": "Porcentaje de beneficio",
}
src/i18n/cn.js
@@ -2849,4 +2849,10 @@
    "DXCN白皮书":'DXCN白皮書',
    "发售": "發售",
    "资格": "資格",
    "中签时间": "中籤時間",
    "发行价": "發行價",
    "利润": "利潤",
    "申购总额": "申購總額",
    "现价总额": "現價總額",
    "利润百分比": "利潤百分比",
}
src/i18n/en.js
@@ -2824,4 +2824,10 @@
    "DXCN白皮书":'DXCN White Paper',
    "发售": "Sale",
    "资格": "Qualification",
    "中签时间": "Allocation Time",
    "发行价": "Issue Price",
    "利润": "Profit",
    "申购总额": "Total Subscription Amount",
    "现价总额": "Total Current Price",
    "利润百分比": "Profit Percentage",
}
src/i18n/fa.js
@@ -2767,4 +2767,10 @@
    "DXCN白皮书":'Livre blanc du DXCN',
    "发售": "Vente",
    "资格": "Qualification",
    "中签时间": "Heure d'allocation",
    "发行价": "Prix d'émission",
    "利润": "Profit",
    "申购总额": "Montant total de souscription",
    "现价总额": "Prix actuel total",
    "利润百分比": "Pourcentage de profit",
}
src/i18n/korean.js
@@ -2864,4 +2864,10 @@
    "DXCN白皮书":'DXCN 백서',
    "发售": "판매",
    "资格": "자격",
    "中签时间": "배정 시간",
    "发行价": "발행가",
    "利润": "이익",
    "申购总额": "청약 총액",
    "现价总额": "현재가 총액",
    "利润百分比": "이익률",
}
src/i18n/th.js
@@ -2834,4 +2834,10 @@
    "DXCN白皮书":'เอกสารไวท์เปเปอร์ของ DXCN',
    "发售": "ขาย",
    "资格": "คุณสมบัติ",
    "中签时间": "เวลาการจัดสรร",
    "发行价": "ราคาออก",
    "利润": "กำไร",
    "申购总额": "จำนวนเงินสมัครซื้อทั้งหมด",
    "现价总额": "ราคาปัจจุบันรวม",
    "利润百分比": "เปอร์เซ็นต์กำไร",
}
src/i18n/vi.js
@@ -2814,4 +2814,10 @@
    "DXCN白皮书":'Sách trắng DXCN',
    "发售": "Bán",
    "资格": "Tư cách",
    "中签时间": "Thời gian phân bổ",
    "发行价": "Giá phát hành",
    "利润": "Lợi nhuận",
    "申购总额": "Tổng số tiền đăng ký mua",
    "现价总额": "Tổng giá hiện tại",
    "利润百分比": "Tỷ lệ lợi nhuận",
}
src/i18n/zhcn.js
@@ -2829,4 +2829,10 @@
    "DXCN白皮书":'DXCN白皮书',
    "发售": "发售",
    "资格": "資格",
    "中签时间": "中签时间",
    "发行价": "发行价",
    "利润": "利润",
    "申购总额": "申购总额",
    "现价总额": "现价总额",
    "利润百分比": "利润百分比",
}
src/views/ICO/ico.vue
@@ -2,11 +2,11 @@
    <div class="ico">
        <fx-header :showLeft="false">
            <template v-slot:title>
                <div>STO</div>
                <div>ICO</div>
            </template>
            <!-- <template v-slot:right>
            <template v-slot:right>
                <van-icon name="todo-list-o" @click="$router.push('/ICO/icoRecord')" />
            </template> -->
            </template>
        </fx-header>
        <div class="ico_list">
@@ -41,9 +41,9 @@
                        <van-progress :percentage="i.progressRate || 0" track-color="#ccc" />
                    </div>
                </div>
                <!-- <div class="item_3 flex justify-center">
                <div class="item_3 flex justify-center">
                    <van-button type="default" round size="large" @click="openBuy(i)">{{$t('申购')}}</van-button>
                </div> -->
                </div>
            </div>
        </div>
src/views/ICO/icoRecord.vue
@@ -2,7 +2,7 @@
    <div class="icoRecord">
        <fx-header>
            <template v-slot:title>
                <div>{{$t('申购记录')}}</div>
                <div>{{ $t('申购记录') }}</div>
            </template>
        </fx-header>
@@ -16,7 +16,7 @@
        </van-tabs>
        <div class="icoRecord_list">
            <div class="icoRecord_item mb-5" v-for="(item,index) in recordLIst" :key="index">
            <div class="icoRecord_item mb-5" v-for="(item, index) in recordLIst" :key="index">
                <div class="item_1">
                    {{ item.symbol }} ({{ item.name }})
                </div>
@@ -32,6 +32,38 @@
                    <div>{{ $t('中签数量') }}</div>
                    <div>{{ item.ballotNumber }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('中签时间') }}</div>
                    <div>{{ item.endTime }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('发行价') }}</div>
                    <div>{{ item.issuePrice }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('现价') }}</div>
                    <div>{{ item.currentPrice }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('利润') }}</div>
                    <div>{{ item.profit }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('申购总额') }}</div>
                    <div>{{ item.subscriptionTotalAmount }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('现价总额') }}</div>
                    <div>{{ item.currentTotalPrice }}</div>
                </div>
                <div class="item_2 flex justify-between">
                    <div>{{ $t('利润百分比') }}</div>
                    <div>{{ item.profitPercent ? (item.profitPercent + '%') : '0' }}</div>
                </div>
                <div class="item_3" v-if="item.status == 5">
                    <van-button type="primary" block round @click="goToSell(item)">{{ $t('卖出') }}</van-button>
                </div>
            </div>
        </div>
    </div>
@@ -42,7 +74,10 @@
import { showToast } from 'vant'
import { _icoRecordList } from "@/service/ico.api.js";
import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
import { setStorage } from "@/utils/index.js";
const { t } = useI18n()
const router = useRouter()
// tab切换
const active = ref('0');
@@ -56,7 +91,7 @@
    let opt = {
        status: active.value
    }
    if(opt.status == '0') delete opt.status
    if (opt.status == '0') delete opt.status
    _icoRecordList(opt).then((res) => {
        console.log(res);
        recordLIst.value = res.records
@@ -88,38 +123,57 @@
    }
    return str
}
// 跳转到卖出页面
const goToSell = (item) => {
    // 将卖出参数存储到 localStorage,供交易页面读取
    setStorage('tradeSellParams', {
        volume: item.ballotNumber || '0',
        mode: 'close' // 卖出模式
    })
    if (item.symbol) {
        router.push(`/cryptos/trade/${item.symbol}`)
    } else {
        showToast(t('交易对信息错误'))
    }
}
</script>
<style lang="scss" scoped>
.icoRecord{
.icoRecord {
    padding: 0rem 1.2rem 2rem 1.2rem;
    font-size: 1.5rem;
    .icoRecord_list{
    .icoRecord_list {
        padding: 1rem 0rem;
        .icoRecord_item{
            background-color: #eee;
            padding:.5rem 1rem;
        .icoRecord_item {
            background-color: #333;
            padding: .5rem 1rem;
            border: #aaa solid 1px;
            border-radius: 1rem;
            .item_1{
            .item_1 {
                padding: 1rem .5rem;
                border-bottom: #ccc solid 1px;
                font-size: 2rem;
                font-weight: 700;
            }
            .item_2{
            .item_2 {
                padding: 1rem .5rem;
                border-bottom: #ccc solid 1px;
                font-size: 1.6rem;
                font-weight: 500;
                &>div:last-child{
                &>div:last-child {
                    color: #999;
                }
            }
            .item_3{
                padding: .5rem;
            .item_3 {
                padding: 1rem .5rem;
                margin-top: 1rem;
            }
        }
    }
src/views/homePage/index.vue
@@ -131,12 +131,11 @@
    // { key: 9, name: t('闪兑'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/cryptos/exchangePage' },
    // { key: 9, name: t('划转'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/my/transfer' },
    // { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) },
    // { key: 11, name: "STO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' },
    // { key: 12, name: "C2C", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/wantBuy' },
    // { key: 13, name: t('质押'), icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '' },
    { key: 14, name: t('onLineService'), icon: new URL('@/assets/imgs/home/home_10.png', import.meta.url), path: '/customerService' },
    // { key: 15, name: 'DXCM PDF', icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: 'https://www.dexm-whitepaper.com/' },
    { key: 11, name: "ICO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' },
]
// 获取公告数据
@@ -365,7 +364,7 @@
        width: 100%;
        .grid_item {
            width: 33%;
            width: 25%;
            color: $tab-c;
            font-size: 1.6rem;