From 59269b6839c57aeb0d547dfd6da38157180483fd Mon Sep 17 00:00:00 2001
From: lxf <1371462558@qq.com>
Date: Tue, 15 Jul 2025 10:56:11 +0800
Subject: [PATCH] 1
---
src/i18n/Portuguese.js | 3
src/views/foreign/deliveryContract/position.vue | 2
src/views/optional/index.vue | 3
src/components/Transform/deliveryContract/position.vue | 4
src/components/Transform/deliveryContract/hold.vue | 10
src/i18n/th.js | 3
src/assets/img/icon-password (1).png | 0
src/i18n/Italy.js | 3
src/i18n/Japanese.js | 7
src/assets/img/icon-invite.png | 0
src/i18n/en.js | 7
src/views/foreign/deliveryContract/FullWarehouse.vue | 4
src/i18n/Spanish.js | 3
src/views/cryptos/Funds/index.vue | 20
src/views/foreign/foreignPerpetualContract/deliveryContract.vue | 2
src/assets/img/mine-select.png | 0
src/i18n/fa.js | 7
src/views/morePage/index.vue | 2
src/views/cryptos/AccountChange/index.vue | 2
src/components/Transform/deliveryContract/FullWarehouse.vue | 4
src/components/Transform/trade-head/index.vue | 22
src/views/trade/index.vue | 2
src/service/trade.api.js | 5
src/views/my/newindex.vue | 13
src/assets/img/icon-dollar.png | 0
src/components/Transform/list-quotation/index.vue | 14
yarn.lock | 11
src/views/register/index.vue | 135 ++
src/assets/img/bg-login.png | 0
src/components/Transform/contract-futrue/index.vue | 8
src/components/Transform/contract-header/index.vue | 25
src/components/Transform/perpetual-open/index.vue | 43
src/assets/img/icon-language.png | 0
src/i18n/Deutsch.js | 7
src/views/changeFundsPassword/index.vue | 16
src/views/foreign/deliveryContract/hold.vue | 2
src/views/news/index.vue | 56
src/components/foreign/foreign-contract-futrue/index.vue | 2
src/views/login/index.vue | 73 +
src/views/cryptos/PerpetualContract/index.vue | 177 ++
src/views/cryptos/Trade/index.vue | 1646 ++++++++++++++++++-------------
src/views/news/explanation.vue | 260 ++++
src/i18n/vi.js | 3
src/components/Transform/kline-charts/index.vue | 6
src/i18n/zhcn.js | 3
src/views/register/setFond.vue | 48
src/components/foreign/foreign-popup-delivery/index.vue | 2
src/views/language/index.vue | 8
src/views/cryptos/Funds/newIndex.vue | 225 +++-
src/config/index.js | 3
src/assets/img/icon-arrow-up.png | 0
src/assets/img/icon-arrow-down.png | 0
src/i18n/korean.js | 7
src/assets/img/icon-foldline.png | 0
src/views/my/index.vue | 1
src/components/Transform/trade-order-area/index.vue | 30
src/i18n/cn.js | 8
src/assets/init.scss | 1
src/components/Transform/assetsCenter/overview.vue | 17
src/views/foreign/deliveryContract/index.vue | 2
src/components/Transform/assetsCenter/assets.vue | 19
src/components/Transform/deliveryContract/index.vue | 2
src/App.vue | 4
src/components/Transform/popup-delivery/index.vue | 14
src/assets/img/back.svg | 1
65 files changed, 1,997 insertions(+), 1,010 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index c4a5efd..f0504b5 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,5 +1,5 @@
<template>
- <div class="pt-3">
+ <div>
<router-view />
</div>
@@ -9,7 +9,7 @@
<script setup>
import fxFooter from '@/components/fx-footer/index.vue'
import { useRoute } from 'vue-router';
-import {setStorage} from '@/utils/index.js'
+import { setStorage } from '@/utils/index.js'
const route = useRoute()
const geturlkey = (name) => {
diff --git a/src/assets/img/back.svg b/src/assets/img/back.svg
new file mode 100644
index 0000000..52261a4
--- /dev/null
+++ b/src/assets/img/back.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="#ffffff" d="m9.55 12l7.35 7.35q.375.375.363.875t-.388.875t-.875.375t-.875-.375l-7.7-7.675q-.3-.3-.45-.675t-.15-.75t.15-.75t.45-.675l7.7-7.7q.375-.375.888-.363t.887.388t.375.875t-.375.875z"/></svg>
\ No newline at end of file
diff --git a/src/assets/img/bg-login.png b/src/assets/img/bg-login.png
new file mode 100644
index 0000000..d1e6e53
--- /dev/null
+++ b/src/assets/img/bg-login.png
Binary files differ
diff --git a/src/assets/img/icon-arrow-down.png b/src/assets/img/icon-arrow-down.png
new file mode 100644
index 0000000..d126190
--- /dev/null
+++ b/src/assets/img/icon-arrow-down.png
Binary files differ
diff --git a/src/assets/img/icon-arrow-up.png b/src/assets/img/icon-arrow-up.png
new file mode 100644
index 0000000..7d505f0
--- /dev/null
+++ b/src/assets/img/icon-arrow-up.png
Binary files differ
diff --git a/src/assets/img/icon-dollar.png b/src/assets/img/icon-dollar.png
new file mode 100644
index 0000000..eee15e4
--- /dev/null
+++ b/src/assets/img/icon-dollar.png
Binary files differ
diff --git a/src/assets/img/icon-foldline.png b/src/assets/img/icon-foldline.png
new file mode 100644
index 0000000..9e72746
--- /dev/null
+++ b/src/assets/img/icon-foldline.png
Binary files differ
diff --git a/src/assets/img/icon-invite.png b/src/assets/img/icon-invite.png
new file mode 100644
index 0000000..4ef2fec
--- /dev/null
+++ b/src/assets/img/icon-invite.png
Binary files differ
diff --git a/src/assets/img/icon-language.png b/src/assets/img/icon-language.png
new file mode 100644
index 0000000..475310f
--- /dev/null
+++ b/src/assets/img/icon-language.png
Binary files differ
diff --git "a/src/assets/img/icon-password \0501\051.png" "b/src/assets/img/icon-password \0501\051.png"
new file mode 100644
index 0000000..711ffdc
--- /dev/null
+++ "b/src/assets/img/icon-password \0501\051.png"
Binary files differ
diff --git a/src/assets/img/mine-select.png b/src/assets/img/mine-select.png
new file mode 100644
index 0000000..6f89869
--- /dev/null
+++ b/src/assets/img/mine-select.png
Binary files differ
diff --git a/src/assets/init.scss b/src/assets/init.scss
index 3a67205..66a1231 100644
--- a/src/assets/init.scss
+++ b/src/assets/init.scss
@@ -502,6 +502,7 @@
.rounded-2xl {
border-radius: 16px;
+ // width: 100%;
}
.rounded-full {
diff --git a/src/components/Transform/assetsCenter/assets.vue b/src/components/Transform/assetsCenter/assets.vue
index 7c80dfc..40553a1 100644
--- a/src/components/Transform/assetsCenter/assets.vue
+++ b/src/components/Transform/assetsCenter/assets.vue
@@ -15,32 +15,27 @@
</div>
<div class="font-700 font-66 mt-18 textColor" v-if="!eyetel">
{{ funds.money_all_coin || '--' }}
- <span class="font-40 text-grey">≈{{ currency.currency_symbol
- }}{{
- funds.money_all_coin
- ? Number(funds.money_all_coin * currency.rate).toFixed(2)
- : ' --'
-}}</span>
+
</div>
<div class="font-70 font-66 mt-18 textColor" v-else>********</div>
</div>
<div class="pl-33 pr-33 btn-box flex justify-between">
<div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/recharge/rechargeList')">
<div class="word-wrap">
- <img :src="handImg(`../../../assets/theme/${THEME}/image/assets/up.png`)" alt="" />
- <span> {{ $t('充币') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/up.png`)" alt="" />
+ <span style="color: #000;"> {{ $t('充币') }}</span>
</div>
</div>
<div class="text-white font-25 textColor tabBackground" @click="withdrawBtn">
<div class="word-wrap">
- <img :src="handImg(`../../../assets/theme/${THEME}/image/assets/down.png`)" alt="" />
- <span>{{ $t('提币') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/down.png`)" alt="" />
+ <span style="color: #000;">{{ $t('提币') }}</span>
</div>
</div>
<div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/exchangePage')">
<div class="word-wrap">
- <img :src="handImg(`../../../assets/theme/${THEME}/image/assets/l_r.png`)" alt="" />
- <span>{{ $t('闪兑') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/l_r.png`)" alt="" />
+ <span style="color: #000;">{{ $t('闪兑') }}</span>
</div>
</div>
</div>
diff --git a/src/components/Transform/assetsCenter/overview.vue b/src/components/Transform/assetsCenter/overview.vue
index d9b9cc2..ae49734 100644
--- a/src/components/Transform/assetsCenter/overview.vue
+++ b/src/components/Transform/assetsCenter/overview.vue
@@ -24,20 +24,20 @@
<div class="pl-33 pr-33 btn-box flex justify-between">
<div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/recharge/rechargeList')">
<div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/up.png`)" alt="">
- <span> {{ $t('充币') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/up.png`)" alt="" />
+ <span style="color: #000;"> {{ $t('充币') }}</span>
</div>
</div>
<div class="text-white font-25 textColor tabBackground" @click="withdrawBtn">
<div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/down.png`)" alt="">
- <span>{{ $t('提币') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/down.png`)" alt="" />
+ <span style="color: #000;">{{ $t('提币') }}</span>
</div>
</div>
<div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/exchangePage')">
<div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/l_r.png`)" alt="">
- <span>{{ $t('闪兑') }}</span>
+ <img :src="handImg(`../../../assets/theme/white/image/assets/l_r.png`)" alt="" />
+ <span style="color: #000;">{{ $t('闪兑') }}</span>
</div>
</div>
</div>
@@ -90,7 +90,7 @@
{ id: 1, text: this.$t('现货账户'), icon: 'spot', key: 'money_all_coin' },
{ id: 2, text: this.$t('合约账户 (U本位)'), icon: 'contract_u', key: 'money_contract' },
{ id: 3, text: this.$t('交割合约账户'), icon: 'contract_d', key: 'money_futures' },
- { id: 4, text: this.$t('理财账户'), icon: 'invest', key: 'money_finance' },
+ // { id: 4, text: this.$t('理财账户'), icon: 'invest', key: 'money_finance' },
{ id: 5, text: this.$t('矿机资产'), icon: 'mining', key: 'money_miner' },
]
},
@@ -100,6 +100,9 @@
// this.getList();
},
methods: {
+ handImg(url) {
+ return new URL(url, import.meta.url).href
+ },
handleImage(url) {
return new URL(url, import.meta.url).href
},
diff --git a/src/components/Transform/contract-futrue/index.vue b/src/components/Transform/contract-futrue/index.vue
index 2383058..aff2d43 100644
--- a/src/components/Transform/contract-futrue/index.vue
+++ b/src/components/Transform/contract-futrue/index.vue
@@ -1,20 +1,20 @@
<template>
<div>
<div class="contact-futrue">
- <div class="font-24 text-grey mb-24">{{ $t('交割时间') }}</div>
+ <div class="font-24 text-grey mb-24">{{ $t('兑换时间') }}</div>
<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" :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"
+ <p class="w-280 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'"
>{{ item.time_num +
item.time_unit.substr(0, 1) }}</p>
- <p class="w-125 h-full flex justify-center items-center font-22 flex-1"
+ <!-- <p class="w-140 h-full flex justify-center items-center font-22 flex-1"
:class="active === item.para_id ? 'bg-dark-blue text-white' : 'delivery_tab_background textColor'"
>{{
- item.profit_ratio }}%</p>
+ item.profit_ratio }}%</p> -->
</li>
</ul>
</div>
diff --git a/src/components/Transform/contract-header/index.vue b/src/components/Transform/contract-header/index.vue
index 28d2b42..c4a25fc 100644
--- a/src/components/Transform/contract-header/index.vue
+++ b/src/components/Transform/contract-header/index.vue
@@ -13,7 +13,9 @@
</div>
<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()">
+ <!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="klineJump()"> -->
+ <img src="../../../assets/image/public/record.png" alt="record-img" class="w-44 h-44 right"
+ @click="goHistory" />
</div>
<!-- <div class="flex items-center">
<img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35"
@@ -56,11 +58,11 @@
<div class="flex justify-between mb-50" v-for="item in list" :key="item.name" @click="onRoute(item)">
<div>
<div class="textColor font-28">{{ item.name }}</div>
- <!-- <div class="text-grey mt-10 font-28">{{ selectIndex == 1 ? $t('永续') : $t('交割') }}</div> -->
+ <!-- <div class="text-grey mt-10 font-28">{{ selectIndex == 1 ? $t('永续') : $t('兑换') }}</div> -->
</div>
<div class="text-right">
<div class="textColor font-28">{{ item.close }}</div>
- <div class="mt-10 font-28" :class="item.change_ratio_str > 0 ? 'text-green' : 'text-red'">{{ item.change_ratio_str
+ <div class="mt-10 font-28" :class="item.change_ratio > 0 ? 'text-green' : 'text-red'">{{ item.change_ratio
}}%</div>
</div>
</div>
@@ -118,7 +120,7 @@
myCoinList: 'qoutes/coinList'
}),
title() {
- return [this.$t('永续'), this.$t('交割')][this.selectIndex - 1]
+ return [this.$t('永续'), this.$t('兑换')][this.selectIndex - 1]
}
},
data() {
@@ -144,6 +146,21 @@
}
},
methods: {
+ goHistory() {
+ if (this.$store.state.user.userInfo.token) {
+ let type = 'forex'
+ if (this.$route.query.type) {
+ type = this.$route.query.type
+ }
+ const url = this.topIndex / 1 === 1 ? '/cryptos/perpetualHistory' : '/cryptos/deliveryContractHistory'
+ this.$router.push({
+ path: url, query: { symbol: this.symbol, type: type }
+ });
+ } else {
+ this.$router.push('/login')
+ }
+
+ },
onRoute(item) {
if (this.$route.params.symbol !== item.symbol) {
this.$router.push(`/cryptos/perpetualContract/${item.symbol}?selectIndex=${this.selectIndex}`)
diff --git a/src/components/Transform/deliveryContract/FullWarehouse.vue b/src/components/Transform/deliveryContract/FullWarehouse.vue
index 0992e66..f49867c 100644
--- a/src/components/Transform/deliveryContract/FullWarehouse.vue
+++ b/src/components/Transform/deliveryContract/FullWarehouse.vue
@@ -6,7 +6,7 @@
<div class="segmentation"></div>
<div class="Full-warehouse-list">
<div class="Delivery-time">
- <div class="Delivery-time-title">{{ $t('交割时间') }}</div>
+ <div class="Delivery-time-title">{{ $t('兑换时间') }}</div>
<div class="Delivery-time-list">
<div class="Delivery-time-item" v-for="(item, index) in DeliveryTime" :key="index"
@click="DeliveryTime_index = index">
@@ -95,7 +95,7 @@
export default {
data() {
return {
- title: this.$t('交割'),
+ title: this.$t('兑换'),
symbol: 'BTC',
price: '22637.22',
range: '-3.81%',
diff --git a/src/components/Transform/deliveryContract/hold.vue b/src/components/Transform/deliveryContract/hold.vue
index 6286701..93e79b9 100644
--- a/src/components/Transform/deliveryContract/hold.vue
+++ b/src/components/Transform/deliveryContract/hold.vue
@@ -7,10 +7,10 @@
<div class="flex items-center">
<div class="pl-29 pr-29 pt-11 pb-11 text-white open-btn font-28"
:class="item.direction == 'buy' ? ' bg-green' : 'bg-red'">
- {{ item.direction == 'buy' ? $t('开多') : $t('开空') }}
+ {{ item.direction == 'buy' ? $t('买入') : $t('卖出') }}
</div>
<div class="ml-22 font-31 font-600">
- <span class="textColor">{{ item.name }} {{ $t('交割') }}</span>
+ <span class="textColor">{{ item.name }} {{ $t('兑换') }}</span>
<span class="text-grey font-28 font-400 ml-17 mr-17">{{ $t('全仓') }} {{ item.lever_rate
}}x</span>
</div>
@@ -34,14 +34,14 @@
<div class="flex-1">
<div class="text-grey">{{ $t('方向') }}</div>
<div class="mt-20" :class="item.direction === 'buy' ? 'text-green' : 'text-red'">{{ item.direction ===
- 'buy' ? $t('开多') : $t('开空') }}</div>
+ 'buy' ? $t('买入') : $t('卖出') }}</div>
</div>
<div class="flex-1 font-28">
<div class="text-grey text-center">{{ $t('数量') }}</div>
<div class="mt-20 text-center textColor">{{ item.volume }}</div>
</div>
<div class="flex-1 flex flex-col items-end font-28">
- <div class="text-grey">{{ $t('盈亏') }}</div>
+ <div class="text-grey">{{ $t('服务费') }}</div>
<div class="mt-20" :class="item.profit / 1 > 0 ? 'text-green' : 'text-red'">
{{ item.profit / 1 > 0 ? '+' + item.profit : item.profit }}
</div>
@@ -53,7 +53,7 @@
<div class="mt-20 textColor">{{ fomatTime(item.remain_time) }}</div>
</div>
<div class="flex-1">
- <div class="text-grey text-center">{{ $t('交割时间') }}</div>
+ <div class="text-grey text-center">{{ $t('兑换时间') }}</div>
<div class="mt-20 text-center textColor">{{ item.time_num + item.time_unit }}</div>
</div>
<div class="flex-1">
diff --git a/src/components/Transform/deliveryContract/index.vue b/src/components/Transform/deliveryContract/index.vue
index cec7f7a..5bd9dce 100644
--- a/src/components/Transform/deliveryContract/index.vue
+++ b/src/components/Transform/deliveryContract/index.vue
@@ -15,7 +15,7 @@
export default {
data() {
return {
- title:this.$t('交割'),
+ title:this.$t('兑换'),
symbol:'BTC',
price:'22637.22',
range:'-3.81%',
diff --git a/src/components/Transform/deliveryContract/position.vue b/src/components/Transform/deliveryContract/position.vue
index 50576f0..2a57bc4 100644
--- a/src/components/Transform/deliveryContract/position.vue
+++ b/src/components/Transform/deliveryContract/position.vue
@@ -5,7 +5,7 @@
<div class="position-tag ">
<div class="position-tag-style" :class="item.direction === 'buy' ? 'green' : 'red'">
{{ item.direction === 'buy' ? $t('开多') : $t('开空') }}</div>
- <div class="position-tag-title textColor">{{ item.name }} {{ $t('交割') }}</div>
+ <div class="position-tag-title textColor">{{ item.name }} {{ $t('兑换') }}</div>
<div class="position-tag-title2">{{ $t('全仓') }}</div>
<img class="position-tag-img" src="@/assets/image/deliveryContract/Group1042.png" />
</div>
@@ -19,7 +19,7 @@
{{ item.direction === 'buy' ? $t('开多') : $t('开空') }}</span>
</div>
<div class="position-div1">
- <span class="position-text1">{{ $t('交割时间') }}</span>
+ <span class="position-text1">{{ $t('兑换时间') }}</span>
<span class="position-text2 textColor">{{ item.time_num + item.time_unit }}</span>
</div>
<div class="position-div1">
diff --git a/src/components/Transform/kline-charts/index.vue b/src/components/Transform/kline-charts/index.vue
index f98f2c3..ca2e157 100644
--- a/src/components/Transform/kline-charts/index.vue
+++ b/src/components/Transform/kline-charts/index.vue
@@ -26,7 +26,7 @@
<van-loading type="spinner"></van-loading>
</div>
</div>
- <ul class="flex px-32 py-20 box-border justify-between text-grey font-26" v-if="showBottom"
+ <!-- <ul class="flex px-32 py-20 box-border justify-between text-grey font-26" v-if="showBottom"
style="border-top:1px solid rgba(68,75,88,0.2);">
<template v-if="!isChange">
<li v-for="item in subTechnicalIndicatorTypes" :key="item" class="mr-20"
@@ -42,7 +42,7 @@
:class="{ 'text-black': typeValue === item }" @click="choiceType(item)">{{ item }}</li>
</template>
</template>
- </ul>
+ </ul> -->
</div>
</div>
</template>
@@ -164,7 +164,7 @@
},
methods: {
initData() {
- this.timeValue = this.timeList[0]
+ this.timeValue = this.timeList[1]
chart = init('kline', config);
chart.setOffsetRightSpace(25)
chart.setDataSpace(10)
diff --git a/src/components/Transform/list-quotation/index.vue b/src/components/Transform/list-quotation/index.vue
index 89df0f0..6472474 100644
--- a/src/components/Transform/list-quotation/index.vue
+++ b/src/components/Transform/list-quotation/index.vue
@@ -25,8 +25,8 @@
<van-icon name="play" style="align-content:center;transform: rotate(90deg);"/>
</div>
<div class="px-16 py-20 bg-black text-white flex flex-col absolute min-w-140 box-border top-25 rounded-11 leading-28" style="z-index:999;margin-top: 0.8rem;" v-show="isTopShow">
- <div @click="changeType('外汇交易', 1)">{{ $t('外汇交易') }}</div>
- <div @click="changeType('外汇交割', 2)">{{ $t('外汇交割') }}</div>
+ <div @click="changeType('货币兑换', 2)">{{ $t('货币兑换') }}</div>
+ <div @click="changeType('外汇交易', 1)">{{ $t('外汇交易') }}</div>
<!-- <div>期貨</div>
<div>收藏</div> -->
</div>
@@ -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_str === 0 ? 0 : item.change_ratio_str) }}%</p>
+ <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio > 0">
+ {{ (item.change_ratio === 0 ? 0 : item.change_ratio) }}%</p>
<p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else>
- {{ (item.change_ratio_str === 0 ? 0 : item.change_ratio_str) }}%</p>
+ {{ (item.change_ratio === 0 ? 0 : item.change_ratio) }}%</p>
</li>
</ul>
</van-cell>
@@ -133,8 +133,8 @@
HOST_URL,
active: 0,
isTopShow: false,
- topTitle: '外汇交易',
- topValue: 1,
+ topTitle: this.$t('货币兑换'),
+ topValue: 2,
type: 'left' //left 从左往右 right 从有王座
}
},
diff --git a/src/components/Transform/perpetual-open/index.vue b/src/components/Transform/perpetual-open/index.vue
index 5c53bf9..bcd59e2 100644
--- a/src/components/Transform/perpetual-open/index.vue
+++ b/src/components/Transform/perpetual-open/index.vue
@@ -1,7 +1,7 @@
<template>
<!-- 永续合约开仓页 -->
<div id="cryptos">
- <div class="perpetual-open">
+ <div class="perpetual-open" style="width: 280px;">
<div class="flex pt-34 ">
<div class="w-180 h-60 lh-60 text-center rounded tabBackground textColor">{{ $t('全仓') }} </div>
<div class="w-140 h-60 lh-60 ml-29 rounded tabBackground textColor" v-if="selectIndex / 1 === 1">
@@ -21,7 +21,7 @@
</div>
<div class="pt-30 pb-20">
<div class="flex">
- <div class="w-440 flex flex-col">
+ <div class=" flex flex-col">
<template v-if="selectIndex == 1">
<div class="flex items-center h-66 rounded-lg text-grey">
<p class="font-28 flex-1 flex items-center justify-center h-66 "
@@ -53,7 +53,7 @@
<span class="ml-20">{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</span>
</div>
- <div class="w-440 flex items-center greyBg h-76 lh-76 rounded-lg" style="background-color:#f5f5f5;" v-if="initFutrue" >
+ <div class=" 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"
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" />
@@ -62,7 +62,7 @@
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"
+ class="border-none greyBg text-center textColor" style="width: 226px;background-color:#f5f5f5;" v-model="form.amount" type="number"
@input="onInput" />
<div class="w-80 flex items-center justify-center" style="height:100%;background-color:#f5f5f5;">
<template v-if="selectIndex == 1">
@@ -125,7 +125,7 @@
<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"
+ <!-- <div class="flex font-24 text-grey justify-between mt-20"
v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'">
<div>{{ $t("手续费") }}</div>
<div class="textColor">
@@ -139,17 +139,17 @@
}}
{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}
</div>
- </div>
+ </div> -->
<template v-if="userInfo.token">
<template v-if="selectIndex == 1">
<div class="w-full h-80 lh-80 bg-green flex text-white rounded-md mt-70" v-if="currentType == 'long'"
@click="order('long')">
<div class="font-34 relative text-center" style="flex-grow:1;" v-if="selectIndex == 1">
- {{ $t('开多') }}
- <span class="right-word font-22 text-center">{{
+ {{ $t('买入') }}
+ <!-- <span class="right-word font-22 text-center">{{
$t("看涨")
- }}</span>
+ }}</span> -->
</div>
<div class="font-34 relative text-center" style="flex-grow:1;" v-else>
{{ $t('做多买入') }}
@@ -158,10 +158,10 @@
<div class="w-full h-80 lh-80 bg-red flex text-white rounded-md mt-70" v-if="currentType == 'short'"
@click="order('short')">
<div class="relative font-34 text-center" style="flex-grow:1;" v-if="selectIndex == 1">
- {{ $t('开空') }}
- <span class="right-word font-22 text-center">{{
+ {{ $t('卖出') }}
+ <!-- <span class="right-word font-22 text-center">{{
$t("看跌")
- }}</span>
+ }}</span> -->
</div>
<div class="relative font-34 text-center" style="flex-grow:1;" v-else>
{{ $t('做空买入') }}
@@ -172,19 +172,19 @@
<div class="w-full h-80 lh-80 bg-green flex text-white rounded-md mt-10 " @click="order('open')"
v-if="userInfo.token">
<div class="font-34 relative text-center" style="flex-grow: 1">
- {{ $t("开多") }}
- <span class="right-word font-22 text-center">{{
+ {{ $t("买入") }}
+ <!-- <span class="right-word font-22 text-center">{{
$t("看涨")
- }}</span>
+ }}</span> -->
</div>
</div>
<div class="w-full h-80 lh-80 bg-red flex text-white rounded-md mt-20 mb-10" style="position: relative;"
:class="{ 'mt-22': selectIndex == 2 }" @click="order('close')" v-if="userInfo.token">
<div class="relative font-34 text-center" style="flex-grow: 1">
- {{ $t("开空") }}
- <span class="right-word font-22 text-center">{{
+ {{ $t("卖出") }}
+ <!-- <span class="right-word font-22 text-center">{{
$t("看跌")
- }}</span>
+ }}</span> -->
</div>
</div>
</template>
@@ -198,7 +198,7 @@
@click="$router.push('/login')">{{ $t('logIn') }}</div>
</div>
</div>
- <div class="ml-30">
+ <!-- <div class="ml-30">
<div class="w-290 flex justify-between text-grey font-22">
<div>
<div>{{ $t("价格") }}</div>
@@ -267,7 +267,6 @@
<div class="flex k-select-box">
<div class="mt-22 mb-22 select-box" style="position: relative">
<div class="flex justify-between items-center w-full h-70" @click="selectArryBtn">
- <!-- <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%">
{{ dataArrTitle }}
</div>
@@ -283,11 +282,11 @@
<img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30 ml-10" />
</div>
</div>
- </div>
+ </div> -->
</div>
</div>
<van-popup v-model:show="show" class="rounded-2xl">
- <popup-delivery showBtns :detailData="detailData" :key="detailData.order_no" @close="onClose"
+ <popup-delivery style="padding: 10px;" showBtns :detailData="detailData" :key="detailData.order_no" @close="onClose"
@continueToBuy="continueTobuy" @timeEnd="handleTimeEnd" :price="price" />
</van-popup>
<van-action-sheet v-model:show="isSelectShow" @select="onSelect" :actions="actions" :cancel-text="$t('取消')"
diff --git a/src/components/Transform/popup-delivery/index.vue b/src/components/Transform/popup-delivery/index.vue
index 657ee0f..295fd46 100644
--- a/src/components/Transform/popup-delivery/index.vue
+++ b/src/components/Transform/popup-delivery/index.vue
@@ -1,9 +1,9 @@
<template>
<div id="cryptos">
- <div class="popup-delivery w-700 font-28 rounded-2xl overflow-hidden">
+ <div class="popup-delivery w-500 font-28 rounded-2xl overflow-hidden" style="padding: 10px;height: 90%;">
<div class="border-b-color pt-54 pb-36 relative textColor">
- <h1 class="font-38 px-32">{{ detailData.name }} {{ $t('交割') }}</h1>
- <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-10 top-10" @click="onClose" />
+ <h1 class="font-38 px-32">{{ detailData.name }} {{ $t('兑换') }}</h1>
+ <!-- <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-10 top-10" @click="onClose" /> -->
</div>
<div class="flex justify-center mt-45" v-if="!(detailData.state === 'created')">
<!-- {{detailData.time_num}} -->
@@ -18,7 +18,7 @@
</div>
<div class="mt-45 font-50 text-center"
:class="{ 'text-green': detailData.profit_state === '1', 'text-red': detailData.profit_state === '0' }" v-else>{{
- $t('盈亏') }}<span>{{ detailData.profit_state === '1' ? '+' : '' }}{{ detailData.profit }}</span> {{ routeType == 'cryptos' ? 'USDT' : 'USD' }}</div>
+ $t('服务费') }}<span>{{ detailData.profit_state === '1' ? '+' : '' }}{{ detailData.profit }}</span> {{ routeType == 'cryptos' ? 'USDT' : 'USD' }}</div>
<ul class="flex flex-col pb-61 textColor">
<li v-for="item in listItem" :key="item.id" class="flex justify-between px-38 mt-28">
<p class="text-grey font-30">{{ item.text }}</p>
@@ -109,7 +109,7 @@
{ id: 2, text: this.detailData.state !== 'created' ? this.$t('现价') : this.$t('结算价格'), key: 'close_price' },
{ id: 3, text: this.$t('方向'), key: 'direction' },
{ id: 4, text: this.$t('数量'), key: 'amount', extro: this.routeType == 'cryptos' ? 'USDT' : 'USD' },
- { id: 5, text: this.$t('交割时间'), key: 'settlement_time' }
+ { id: 5, text: this.$t('兑换时间'), key: 'settlement_time' }
]
}
},
@@ -153,9 +153,9 @@
handleBuyWord(item) {
if (item.id === 3) {
if (this.detailData.direction === 'buy') {
- return this.$t('开多')
+ return this.$t('买入')
} else {
- return this.$t('开空')
+ return this.$t('卖出')
}
} else if (item.key === 'settlement_time') {
return this.detailData.time_num + this.detailData.time_unit
diff --git a/src/components/Transform/trade-head/index.vue b/src/components/Transform/trade-head/index.vue
index 3c42e03..6878814 100644
--- a/src/components/Transform/trade-head/index.vue
+++ b/src/components/Transform/trade-head/index.vue
@@ -42,8 +42,11 @@
v-if="isCollect" />
<img v-else src="../../../assets/image/icon-star.png" class="w-30 h-30 mr-10 ml-20" @click="openCurrency" />
</div>
- <img v-if="isTrade" src="../../../assets/image/kline.png" class="w-44 h-44 right" alt=""
- @click="$router.push(`/cryptos/trendDetails/${symbol}?kineType=trade`)">
+ <img src="../../../assets/image/public/record.png" alt="record-img" class="w-44 h-44 "
+ @click="goHistory" />
+
+ <!-- <img v-if="isTrade" src="../../../assets/image/kline.png" class="w-44 h-44 right" alt=""
+ @click="$router.push(`/cryptos/trendDetails/${symbol}?kineType=trade`)"> -->
</div>
</div>
<!-- 左侧边弹出菜单 -->
@@ -69,8 +72,8 @@
</div>
<div class="text-right">
<div class="textColor font-28">{{ item.close || '--' }}</div>
- <div class="mt-10 font-28" :class="item.change_ratio_str > 0 ? 'text-green' : 'text-red'">
- {{ item.change_ratio_str }}%</div>
+ <div class="mt-10 font-28" :class="item.change_ratio > 0 ? 'text-green' : 'text-red'">
+ {{ item.change_ratio }}%</div>
</div>
</div>
</div>
@@ -223,6 +226,17 @@
}
this.show = false
},
+ goHistory() {
+ if (this.$store.state.user.userInfo.token) {
+ let type = 'cryptos'
+ if (this.$route.query.type) {
+ type = this.$route.query.type
+ }
+ this.$router.push(`/cryptos/tradeRecord/${this.symbol}/?type=forex`)
+ } else {
+ this.$router.push('/login')
+ }
+ },
async onSidebar() { // 侧边栏打开
// console.log(this.userInfo)
// 优先用本地缓存的 coins
diff --git a/src/components/Transform/trade-order-area/index.vue b/src/components/Transform/trade-order-area/index.vue
index 013aca2..f6f1ae7 100644
--- a/src/components/Transform/trade-order-area/index.vue
+++ b/src/components/Transform/trade-order-area/index.vue
@@ -1,5 +1,5 @@
<template>
- <div class="flex flex-col flex-1 font-28">
+ <div class="flex flex-col flex-1 font-28" style="width: 280px;">
<div class="flex items-center h-66 tabBackground text-grey">
<p class="font-28 flex-1 flex items-center justify-center h-66 buy-item"
:class="currentType == 'open' ? 'open' : ''" @click="changeTab('open')">{{ $t('买入') }}</p>
@@ -23,16 +23,16 @@
:disabled="type / 1 === 1" />
<span>USDT</span>
</div>
- <div class="h-70 lh-70 inputBackground mb-25 flex justify-center px-16 textColor2">
+ <!-- <div class="h-70 lh-70 inputBackground mb-25 flex justify-center px-16 textColor2">
<span>{{ title }}</span>
- </div>
+ </div> -->
<div class="flex total-list">
<div class="total-div" :class="[!isTotal ? 'active-bg' : '']" @click="checkIsTotal(false)">
{{ $t('数量') }}
</div>
- <div class="total-div" :class="[isTotal ? 'active-bg' : '']" @click="checkIsTotal(true)">
+ <!-- <div class="total-div" :class="[isTotal ? 'active-bg' : '']" @click="checkIsTotal(true)">
{{ $t('总额') }}
- </div>
+ </div> -->
</div>
<div v-if="!isTotal" class="h-70 lh-70 inputBackground mb-36 flex justify-center px-16">
<input :placeholder="$t('数量')" class=" w-full h-70 border-none textColor font-28" v-model="form.volume"
@@ -44,8 +44,8 @@
@input="onInputTotal" />
<span class="textColor font-28">{{ 'USDT' }}</span>
</div>
- <div class="font-24 w-full flex justify-between items-center textColor1">
- <!-- <span class="flex-1 text-left">0%</span> -->
+ <!-- <div class="font-24 w-full flex justify-between items-center textColor1">
+ <span class="flex-1 text-left">0%</span>
<span class="flex-1 tab-item" :class="[percentageVal == 25 ? 'select-active' : '']"
@click="exchangeVal(25)">25%</span>
<span class="flex-1 tab-item" :class="[percentageVal == 50 ? 'select-active' : '']"
@@ -54,7 +54,7 @@
@click="exchangeVal(75)">75%</span>
<span class="flex-1 tab-item" :class="[percentageVal == 100 ? 'select-active' : '']"
@click="exchangeVal(100)">100%</span>
- </div>
+ </div> -->
<div class="flex justify-between items-center mt-40">
<div class="flex flex-col font-24">
<p class="text-grey" v-if="this.currentType === 'open'">{{ $t('可用') }}<span class="textColor ml-8">
@@ -90,6 +90,7 @@
[Tab.name]: Tab
},
props: {
+
symbol: {
type: String,
default: ''
@@ -166,7 +167,7 @@
order_price_type: 'opponent', // 市价or限价
},
type: "1",//选中市价或限价类型
- currentType: "open", //开仓类型
+ // currentType: "close", //开仓类型
interval: 0.001,
marks: (val) => val % 25 === 0,
isTotal: false,
@@ -180,6 +181,7 @@
]
this.title = this.selectData[0].title
this.type = this.selectData[0].type
+ // this.currentType = this.currentTypes
this.form.order_price_type = 'opponent'
},
methods: {
@@ -470,15 +472,17 @@
}
.open {
- background-color: $green;
- background: url(@/assets/image/public/open-bg.png) no-repeat right center;
+ // background-color: $green;
+ background-color: #2EBD85;
+ // background: url(@/assets/image/public/open-bg.png) no-repeat right center;
background-size: 100% 100%;
color: white;
}
.close {
- background-color: $green;
- background: url(@/assets/image/public/close-bg.png) no-repeat left center;
+ background-color: #DE5D56;
+ // background: url(@/assets/image/public/close-bg.png) no-repeat left center;
+
background-size: 100% 100%;
color: white;
}
diff --git a/src/components/foreign/foreign-contract-futrue/index.vue b/src/components/foreign/foreign-contract-futrue/index.vue
index 5400787..acae19d 100644
--- a/src/components/foreign/foreign-contract-futrue/index.vue
+++ b/src/components/foreign/foreign-contract-futrue/index.vue
@@ -1,6 +1,6 @@
<template>
<div class="contact-futrue">
- <div class="font-24 text-grey mb-24">{{ $t('交割时间') }}</div>
+ <div class="font-24 text-grey mb-24">{{ $t('兑换时间') }}</div>
<ul class="flex flex-wrap w-full">
<li v-for="(item, index) in initFutrue.para" :key="item.para_id" 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"
diff --git a/src/components/foreign/foreign-popup-delivery/index.vue b/src/components/foreign/foreign-popup-delivery/index.vue
index cf3d551..573ad0b 100644
--- a/src/components/foreign/foreign-popup-delivery/index.vue
+++ b/src/components/foreign/foreign-popup-delivery/index.vue
@@ -107,7 +107,7 @@
{ id: 2, text: props.detailData.state !== 'created' ? t('现价') : t('结算价格'), key: 'close_price' },
{ id: 3, text: t('方向'), key: 'direction' },
{ id: 4, text: t('number'), key: 'amount', extro: 'USD' },
- { id: 5, text: t('交割时间'), key: 'settlement_time' }
+ { id: 5, text: t('兑换时间'), key: 'settlement_time' }
]
})
diff --git a/src/config/index.js b/src/config/index.js
index 2dd6213..a2c5302 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -35,8 +35,9 @@
// const ENV_DEV = 'zhapi.coinbtcs.com' // dev
// const ENV_DEV = 'openapi.yanshiz.com' // dev
-// const ENV_DEV = '192.168.10.24:8086' // dev
const ENV_DEV = 'aa.yanshiz.com' // dev
+// const ENV_DEV = '192.168.10.24:8086' // dev
+// const ENV_DEV = 'aa.yanshiz.com' // dev
// const ENV_PRO = 'qheufhj.site' // app域名
diff --git a/src/i18n/Deutsch.js b/src/i18n/Deutsch.js
index 34e0dad..4c7da05 100644
--- a/src/i18n/Deutsch.js
+++ b/src/i18n/Deutsch.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Devisenhandel",
+ hbdhdd:"Währungsumtauschauftrag",
+ whjydd:"Forex-Handelsaufträge",
entrustOrder: "Betrauungsauftrag",
installApp: "Diese Anwendung installieren",
press: "drücken",
@@ -2798,4 +2801,8 @@
"未实现盈亏(USD)": "Nicht realisierter Gewinn und Verlust (USD) ",
"证件号码长度超过50": "Die Länge der Ausweisnummer überschreitet 50",
"实名姓名长度超过50": "Die Länge des Namens überschreitet 50",
+ "Defi质押流动性挖矿": "Defi pledge liquidity mining",
+ "效益": "Effekt",
+ "可投金额": "Investierbarer Betrag",
+ "指南": "Handbuch"
}
\ No newline at end of file
diff --git a/src/i18n/Italy.js b/src/i18n/Italy.js
index c441b72..4dd83d5 100644
--- a/src/i18n/Italy.js
+++ b/src/i18n/Italy.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Trading di valute",
+ hbdhdd:"Ordine di cambio valuta",
+ whjydd:"Ordini di trading Forex",
entrustOrder: "Ordine di Affidamento",
installApp: "Installa questa applicazione",
press: "premere",
diff --git a/src/i18n/Japanese.js b/src/i18n/Japanese.js
index 9be87d3..d9f1a23 100644
--- a/src/i18n/Japanese.js
+++ b/src/i18n/Japanese.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"通貨取引",
+ hbdhdd:"外貨両替注文",
+ whjydd:"外国為替取引注文",
entrustOrder: "委託注文",
installApp: "このアプリをインストール",
press: "押す",
@@ -2656,4 +2659,8 @@
"未实现盈亏(USD)": "未実現損益(USD)",
"证件号码长度超过50": "IDカード番号の長さが50を超えています",
"实名姓名长度超过50": "実名の長さが50を超えています",
+ "Defi质押流动性挖矿": "DeFi ローン",
+ "效益": "効果",
+ "可投金额": "ローン可能額",
+ "指南": "ガイド"
}
\ No newline at end of file
diff --git a/src/i18n/Portuguese.js b/src/i18n/Portuguese.js
index cfc39a9..0598cb3 100644
--- a/src/i18n/Portuguese.js
+++ b/src/i18n/Portuguese.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Negociação de moedas",
+ whjydd:"Ordens de negociação Forex",
+ hbdhdd:"Pedidos de troca",
entrustOrder: "Ordem de Confiança",
installApp: "Instalar este aplicativo",
press: "pressione",
diff --git a/src/i18n/Spanish.js b/src/i18n/Spanish.js
index 43b337f..76c2805 100644
--- a/src/i18n/Spanish.js
+++ b/src/i18n/Spanish.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Negociação de moedas",
+ whjydd:"Ordens de negociação Forex",
+ hbdhdd:"Pedidos de troca",
entrustOrder: "Ordem de Confiança",
installApp: "Instalar este aplicativo",
press: "pressione",
diff --git a/src/i18n/cn.js b/src/i18n/cn.js
index b6cec79..259322d 100644
--- a/src/i18n/cn.js
+++ b/src/i18n/cn.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"貨幣交易",
+ hbdhdd:"貨幣兌換訂單",
+ whjydd:"外匯交易訂單",
entrustOrder: "委託訂單",
installApp: "安裝此應用程序",
press: "按",
@@ -2777,4 +2780,9 @@
"未实现盈亏(USD)": "未實現盈虧(USD)",
"证件号码长度超过50": "證件號碼長度超過50",
"实名姓名长度超过50": "實名姓名長度超過50",
+ "Defi质押流动性挖矿": "Defi质押流动性挖矿",
+ "效益": "效益",
+ "可投金额": "可投金额",
+ "指南": "指南",
+ "兑换": "兌換",
}
diff --git a/src/i18n/en.js b/src/i18n/en.js
index a6453c0..85f110a 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Currency Trading",
+ hbdhdd:"Currency exchange order",
+ whjydd:"Forex trading orders",
entrustOrder: "Entrust Order",
installApp: "Install this application",
press: "Press",
@@ -2753,4 +2756,8 @@
"未实现盈亏(USD)": "Unrealized P/L (USD)",
"证件号码长度超过50": "ID number length exceeds 50",
"实名姓名长度超过50": "Real name length exceeds 50",
+ "Defi质押流动性挖矿": "Defi pledge liquidity mining",
+ "效益": "Benefits",
+ "可投金额": "Investable amount",
+ "指南": "Guide"
}
\ No newline at end of file
diff --git a/src/i18n/fa.js b/src/i18n/fa.js
index 641aefb..cc901f2 100644
--- a/src/i18n/fa.js
+++ b/src/i18n/fa.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"Négociation de devises",
+ hbdhdd:"Ordre de change",
+ whjydd:"Ordres de trading Forex",
entrustOrder: "Ordonnance de mandat",
installApp: "Installer cette application",
press: "appuyer",
@@ -2695,4 +2698,8 @@
"未实现盈亏(USD)": "Non réalisé P/L (USD)",
"证件号码长度超过50": "La longueur du numéro d'identification dépasse 50",
"实名姓名长度超过50": "La longueur réelle du nom dépasse 50",
+ "Defi质押流动性挖矿": "Defi pledge liquidity mining",
+ "效益": "Effet",
+ "可投金额": "Montant investible",
+ "指南": "Guide"
}
\ No newline at end of file
diff --git a/src/i18n/korean.js b/src/i18n/korean.js
index a915d93..c91f9c4 100644
--- a/src/i18n/korean.js
+++ b/src/i18n/korean.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"통화 거래",
+ hbdhdd:"교환요청",
+ whjydd:"외환 거래 주문",
entrustOrder: "위탁 주문",
installApp: "이 앱을 설치",
press: "누르다",
@@ -2792,4 +2795,8 @@
'未实现盈亏(USD)': '미실현 손익(USD) ',
"证件号码长度超过50": "ID 번호 길이가 50자를 초과합니다.",
"实名姓名长度超过50": "실명 길이가 50자를 초과합니다.",
+ "Defi质押流动性挖矿": "DeFi 투자",
+ "效益": "이익",
+ "可投金额": "투자 가능 금액",
+ "指南": "가이드"
}
\ No newline at end of file
diff --git a/src/i18n/th.js b/src/i18n/th.js
index 9b6b18f..3dc3fd5 100644
--- a/src/i18n/th.js
+++ b/src/i18n/th.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"การซื้อขายสกุลเงิน",
+ whjydd:"คำสั่งการซื้อขายฟอเร็กซ์",
+ hbdhdd:"คำสั่งแลกเงิน",
entrustOrder: "คำสั่งซื้อ",
InstallApp: "ติดตั้งแอปนี้",
press: "กด",
diff --git a/src/i18n/vi.js b/src/i18n/vi.js
index 63a2442..1e40133 100644
--- a/src/i18n/vi.js
+++ b/src/i18n/vi.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"giao dịch tiền tệ",
+ hbdhdd:"Lệnh đổi tiền",
+ whjydd:"Lệnh giao dịch ngoại hối",
entrustOrder: "Lệnh ủy thác",
installApp: "Cài đặt ứng dụng này",
press: "nhấn",
diff --git a/src/i18n/zhcn.js b/src/i18n/zhcn.js
index 4123a81..2804d39 100644
--- a/src/i18n/zhcn.js
+++ b/src/i18n/zhcn.js
@@ -1,4 +1,7 @@
export default {
+ hbjy:"货币交易",
+ hbdhdd:"货币兑换订单",
+ whjydd:"外汇交易订单",
entrustOrder: "委托订单",
installApp: "安装此应用程序",
press: "按",
diff --git a/src/service/trade.api.js b/src/service/trade.api.js
index e2c888c..5eae8d2 100644
--- a/src/service/trade.api.js
+++ b/src/service/trade.api.js
@@ -1,7 +1,7 @@
import request from './request';
import { METHODS } from '@/config';
import { API_PREFIX } from '@/config';
-
+import { getStorage, setStorage, handleImage } from '@/utils/utis.js'
/**
* 获取 支付币种(法币) 列表
* @returns {*}
@@ -306,6 +306,9 @@
// 获取k线
export const _getKline = (symbol, line) => { // 1min, 5min, 15min, 30min, 60min, 4hour, 1day, 1mon, 1week, 1分钟,5分钟,1天,1月
+ if (!symbol) {
+ symbol = getStorage('symbol')
+ }
return request({
url: `${API_PREFIX}/hobi!getKline.action`,
method: 'GET',
diff --git a/src/views/changeFundsPassword/index.vue b/src/views/changeFundsPassword/index.vue
index 8e20594..8454811 100644
--- a/src/views/changeFundsPassword/index.vue
+++ b/src/views/changeFundsPassword/index.vue
@@ -6,17 +6,19 @@
</template>
</fx-header>
<div class="content">
+ <ExInput :label="$t('oldPassword')" :placeholderText="$t('entryPassword')" :tips="$t('funsPasswordTips')"
+ v-model="oldPassword" typeText="password" />
<ExInput :label="$t('newPassword')" :placeholderText="$t('entryPassword')" :tips="$t('funsPasswordTips')"
v-model="password" typeText="password" />
<ExInput :label="$t('sureNewPassword')" :placeholderText="$t('entryPassword')" :tips="$t('funsPasswordTips')"
v-model="rePassword" typeText="password" />
- <ExChecked class="mb-42" :list="list" @checkedSelect="onChecked"></ExChecked>
- <p class="label mt-14 textColor">{{ $t('verificationCode') }}</p>
+ <!-- <ExChecked class="mb-42" :list="list" @checkedSelect="onChecked"></ExChecked> -->
+ <!-- <p class="label mt-14 textColor">{{ $t('verificationCode') }}</p>
<div class="iptbox inputBackground">
<input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')" v-model="verifyCode">
<span v-if="currentType != 3" @click="senCode">{{ $t('sendVerifyCode') }}<template v-if="time">
({{ time }})s</template></span>
- </div>
+ </div> -->
<van-button class="w-full" style="margin-top:10px;" @click="submit" type="primary">
{{ $t('sure') }}
</van-button>
@@ -35,7 +37,7 @@
import { useI18n } from "vue-i18n";
const { t } = useI18n()
const router = useRouter()
-
+const oldPassword = ref('')//旧密码
const password = ref('')//密码
const rePassword = ref('')//确认密码
const verifyCode = ref('') //验证码
@@ -90,8 +92,10 @@
}
_setSafeword({
safeword: password.value,
- verifcode_type: currentType.value,
- verifcode: verifyCode.value
+ // verifcode_type: currentType.value,
+ verifcode_type: '3',
+ verifcode: verifyCode.value,
+ odl_safeword:oldPassword.value
}).then((res) => {
showToast(t('changeSuccess'))
setTimeout(() => {
diff --git a/src/views/cryptos/AccountChange/index.vue b/src/views/cryptos/AccountChange/index.vue
index 90cd61d..169e4b1 100644
--- a/src/views/cryptos/AccountChange/index.vue
+++ b/src/views/cryptos/AccountChange/index.vue
@@ -65,7 +65,7 @@
selectData: [
{ title: this.$t('全部'), type: '' },
{ title: this.$t('法币交易'), type: 'coin' },
- { title: this.$t('合约交易'), type: 'contract' },
+ { title: this.$t('货币交易'), type: 'contract' },
{ title: this.$t('币币交易'), type: 'exchange' },
],
type: "",//选中类型
diff --git a/src/views/cryptos/Funds/index.vue b/src/views/cryptos/Funds/index.vue
index 58d8fad..70be053 100644
--- a/src/views/cryptos/Funds/index.vue
+++ b/src/views/cryptos/Funds/index.vue
@@ -12,13 +12,13 @@
<div class="flex mt-17">
<span class="flex-1 border-b-color " :class="{ active_color: tab === 0 }"></span>
<span class="flex-1 border-b-color" :class="{ active_color: tab === 1 }"></span>
- <span class="flex-1 border-b-color" :class="{ active_color: tab === 2 }"></span>
- <span class="flex-1 border-b-color" :class="{ active_color: tab === 3 }"></span>
+ <!-- <span class="flex-1 border-b-color" :class="{ active_color: tab === 2 }"></span> -->
+ <!-- <span class="flex-1 border-b-color" :class="{ active_color: tab === 3 }"></span> -->
</div>
<over-view v-if="tab === 0" :funds="funds" :key="tab"></over-view>
<as-sets v-if="tab === 1" :funds="funds" :key="tab"></as-sets>
- <contract v-if="tab === 2" :funds="funds" :index="index" :key="tab"></contract>
- <financial v-if="tab === 3" :funds="funds" :index="index" :key="tab"></financial>
+ <!-- <contract v-if="tab === 2" :funds="funds" :index="index" :key="tab"></contract> -->
+ <!-- <financial v-if="tab === 3" :funds="funds" :index="index" :key="tab"></financial> -->
</div>
</div>
</template>
@@ -53,13 +53,13 @@
{
type: this.$t('现货账户'),
},
- {
- type: this.$t('合约'),
+ // {
+ // type: this.$t('合约'),
- },
- {
- type: this.$t('理财'),
- },
+ // },
+ // {
+ // type: this.$t('理财'),
+ // },
]
}
},
diff --git a/src/views/cryptos/Funds/newIndex.vue b/src/views/cryptos/Funds/newIndex.vue
index 9412bee..3583c02 100644
--- a/src/views/cryptos/Funds/newIndex.vue
+++ b/src/views/cryptos/Funds/newIndex.vue
@@ -1,89 +1,179 @@
<template>
<div>
- <assets-head :title="t('资金账户')" :back-func="backFunc" ></assets-head>
+ <assets-head :title="t('资金账户')" :back-func="backFunc"></assets-head>
- <div class="px-17">
- <div class="flex items-center justify-between">
- <div class="text-25 font-bold">Defi質押流動性挖礦</div>
- <img class="w-64 h-57 ml-90 flex-none" src="@/assets/imgs/icon-mining.png" draggable="false">
- </div>
-
- <div class="h-182 mt-20 pt-28 px-19 box-border text-white bgimg">
- <div class="flex justify-between items-center">
- <div class="text-11">{{ t('托管金额') }}</div>
- <img class="w-17 h-17" src="@/assets/imgs/icon-income.png" draggable="false">
+ <div class="px-17">
+ <div class="flex items-center justify-between">
+ <div class="text-25 font-bold">{{ $t('Defi质押流动性挖矿') }}</div>
+ <img class="w-64 h-57 ml-90 flex-none" src="@/assets/imgs/icon-mining.png" draggable="false">
</div>
- <div class="text-34 font-bold mt-5 block">{{ statiscis.amount_sum || 0 }}</div>
-
- <div class="flex justify-between my-20 text-center text-16">
- <div>
- <div>{{ t('累计收益') }}</div>
- <div class="text-20">{{ statiscis.aready_profit || 0 }}</div>
+
+ <div class="h-182 mt-20 pt-28 px-19 box-border text-white bgimg">
+ <div class="flex justify-between items-center">
+ <div class="text-11">{{ t('托管金额') }}</div>
+ <img class="w-17 h-17" src="@/assets/imgs/icon-income.png" draggable="false">
</div>
- <div>
- <div>{{ t('预计日收益') }}</div>
- <div class="text-20">{{ statiscis.today_profit || 0 }}</div>
- </div>
- <div>
- <div>{{ t('托管订单') }}</div>
- <div class="text-20">{{ statiscis.order_sum || 0 }}</div>
+ <div class="text-34 font-bold mt-5 block">{{ statiscis.amount_sum || 0 }}</div>
+
+ <div class="flex justify-between my-20 text-center text-16">
+ <div>
+ <div>{{ t('累计收益') }}</div>
+ <div class="text-20">{{ statiscis.aready_profit || 0 }}</div>
+ </div>
+ <div>
+ <div>{{ t('预计日收益') }}</div>
+ <div class="text-20">{{ statiscis.today_profit || 0 }}</div>
+ </div>
+ <div>
+ <div>{{ t('托管订单') }}</div>
+ <div class="text-20">{{ statiscis.order_sum || 0 }}</div>
+ </div>
</div>
</div>
- </div>
- <div class="mt-15">
- <div class="text-16">鎖倉挖礦</div>
-
<div class="mt-15">
- <div class="h-100 box-border p-15 mb-10 bgimg1">
- <div class="flex items-center justify-between">
- <div class="text-17 font-bold">01</div>
- <div class="text-16 font-bold">5天</div>
- </div>
- <div class="flex mt-5">
- <div>
- <div class="text-11">效益</div>
- <div class="text-16">0.003% - 0.004%</div>
+ <div class="text-16">{{ $t('去挖矿') }}</div>
+
+ <div class="mt-15">
+ <div class="h-100 box-border p-15 mb-10 bgimg1" @click="() => { onShow1 = true }">
+ <div class="flex items-center justify-between">
+ <div class="text-17 font-bold">01</div>
+ <div class="text-16 font-bold">5{{ $t('天') }}</div>
</div>
- <div class="ml-30">
- <div class="text-11">可投金額</div>
- <div class="text-16">1000 - 100000</div>
+ <div class="flex mt-5">
+ <div>
+ <div class="text-11">{{ $t('效益') }}</div>
+ <div class="text-16">0.003% - 0.004%</div>
+ </div>
+ <div class="ml-30">
+ <div class="text-11">{{ $t('可投金额') }}</div>
+ <div class="text-16">1000 - 100000</div>
+ </div>
</div>
</div>
- </div>
-
- <div class="h-100 box-border p-15 mb-10 bgimg1">
- <div class="flex items-center justify-between">
- <div class="text-17 font-bold">02</div>
- <div class="text-16 font-bold">17天</div>
- </div>
- <div class="flex mt-5">
- <div>
- <div class="text-11">效益</div>
- <div class="text-16">0.004% - 0.005%</div>
+
+ <van-action-sheet v-model:show="onShow1">
+ <div class="content">
+ <div class="py-25 px-18 bg-white rounded-t-20">
+ <span class="text-27 font-bold">
+ <span>01</span>
+ </span>
+ <div class="mt-10 pb-15 border-b-1 border-b-dashed border-#ccc">
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="cycle" style="font-weight: 600;">{{ $t('周期') }}</span>
+ <span>5</span>
+ </div>
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="benefit" style="font-weight: 600;">{{ $t('效益') }}</span>
+ <span>0.003-0.004%</span>
+ </div>
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="purchaseLimit" style="font-weight: 600;">{{ $t("购买数量") }}</span>
+ <span>99999</span>
+ </div>
+ </div>
+ <div class="mt-15">
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="amountLimit" style="font-weight: 600;">{{ $t('限额') }}</span>
+ <span>1000-100000</span>
+ </div>
+ <input class="mt-5 rounded-5 py-9 px-16 text-right text-24 font-700"
+ style="border: 0.5px solid rgba(0, 0, 0, 0.2);width: 100%;" type="number" maxlength="140" step="any"
+ enterkeyhint="done" autocomplete="off" id="investmentAmount" name="investmentAmount" />
+ </div>
+ <div class="mt-60">
+ <span class="text-15 text-#9c9c9c ">
+ <span data-i18n="expectedReturn">
+ {{ $t('预期收益') }}:
+ </span>0</span>
+ <div class="mt-5 h-55 leading-55 bg-#333 text-19 rounded-5 text-center text-white"
+ @click="openPopup(1)">
+ {{ $t('购买') }}
+ </div>
+ </div>
+ </div>
</div>
- <div class="ml-30">
- <div class="text-11">可投金額</div>
- <div class="text-16">10000 - 10000000</div>
+ </van-action-sheet>
+
+ <div class="h-100 box-border p-15 mb-10 bgimg1" @click="() => { onShow2 = true }">
+ <div class="flex items-center justify-between">
+ <div class="text-17 font-bold">02</div>
+ <div class="text-16 font-bold">17{{ $t('天') }}</div>
+ </div>
+ <div class="flex mt-5">
+ <div>
+ <div class="text-11">{{ $t('效益') }}</div>
+ <div class="text-16">0.004% - 0.005%</div>
+ </div>
+ <div class="ml-30">
+ <div class="text-11">{{ $t('可投金额') }}</div>
+ <div class="text-16">10000 - 10000000</div>
+ </div>
</div>
</div>
+
+ <van-action-sheet v-model:show="onShow2" title="标题">
+ <div class="content">
+ <div class="py-25 px-18 bg-white rounded-t-20">
+ <span class="text-27 font-bold">
+ <span>02</span>
+ </span>
+ <div class="mt-10 pb-15 border-b-1 border-b-dashed border-#ccc">
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="cycle" style="font-weight: 600;">{{ $t('周期') }}</span>
+ <span>17</span>
+ </div>
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="benefit" style="font-weight: 600;">{{ $t('效益') }}</span>
+ <span>0.004-0.005%</span>
+ </div>
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="purchaseLimit" style="font-weight: 600;">{{ $t("购买数量") }}</span>
+ <span>99999</span>
+ </div>
+ </div>
+ <div class="mt-15">
+ <div class="flex items-center justify-between text-15">
+ <span data-i18n="amountLimit" style="font-weight: 600;">{{ $t('限额') }}</span>
+ <span>10000-10000000</span>
+ </div>
+ <input class="mt-5 rounded-5 py-9 px-16 text-right text-24 font-700"
+ style="border: 0.5px solid rgba(0, 0, 0, 0.2);width: 100%;" type="number" maxlength="140" step="any"
+ enterkeyhint="done" autocomplete="off" id="investmentAmount" name="investmentAmount" />
+ </div>
+ <div class="mt-60">
+ <span class="text-15 text-#9c9c9c ">
+ <span data-i18n="expectedReturn">
+ {{ $t('预期收益') }}:
+ </span>0</span>
+ <div class="mt-5 h-55 leading-55 bg-#333 text-19 rounded-5 text-center text-white"
+ @click="openPopup(2)">
+ {{ $t('购买') }}
+ </div>
+ </div>
+ </div>
+ </div>
+ </van-action-sheet>
</div>
</div>
</div>
</div>
-</div>
</template>
<script setup>
-import { financeStatics} from '@/service/financialManagement.api.js'
+import { financeStatics } from '@/service/financialManagement.api.js'
import { ref, onMounted } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
import { useRouter } from 'vue-router';
+import fa from '../../../i18n/fa';
const router = useRouter();
const statiscis = ref({});
+const amount = ref('');
+const onShow1 = ref(false);
+const onShow2 = ref(false);
onMounted(() => {
getFinancialData();
@@ -91,6 +181,15 @@
const backFunc = () => {
router.back();
+}
+
+const handleBuy = () => {
+ if (!amount.value) {
+ uni.showToast({ title: t('请输入购买金额'), icon: 'none' });
+ return;
+ }
+ // 这里可以添加购买逻辑的API调用
+ console.log('购买金额:', amount.value);
}
@@ -102,6 +201,14 @@
})
}
+const openPopup = (type) => {
+ if (type === 1) {
+ onShow1.value = false
+ } else if (type === 2) {
+ onShow2.value = false
+ }
+}
+
</script>
<style lang="scss" scoped>
@@ -110,14 +217,12 @@
.bgimg {
background: url('@/assets/imgs/mining-card.png') no-repeat;
background-size: 100% 100%;
- background-repeat: no-repeat;
+ background-repeat: no-repeat;
}
.bgimg1 {
background: url('@/assets/imgs/mining-bg.png') no-repeat;
background-size: 100% 100%;
- background-repeat: no-repeat;
+ background-repeat: no-repeat;
}
-
-
</style>
\ No newline at end of file
diff --git a/src/views/cryptos/PerpetualContract/index.vue b/src/views/cryptos/PerpetualContract/index.vue
index c8faae1..7737508 100644
--- a/src/views/cryptos/PerpetualContract/index.vue
+++ b/src/views/cryptos/PerpetualContract/index.vue
@@ -5,9 +5,10 @@
<ContractHeader :symbol="symbol" :range="range" :selectIndex="selectIndex" :symbolName="symbolName"
:balance="userInfo.balance" @tab="onTopTab" @update-coin="onUpdate">
</ContractHeader>
+ <k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" :showBottom="true" />
<p class="status-info" v-if="chartData.market && chartData.market.status">
<span>{{ chartData.market.status && $t(chartData.market.status) }},</span>
- <span class="time">{{ chartData.market.time_str }}</span>
+ <span class="time">{{ chartData.market.time }}</span>
<span>{{ chartData.market.time_zone && $t(chartData.market.time_zone) }}</span>
</p>
<div :class="{ slide2: animated1 }" v-if="selectIndex === 1">
@@ -35,7 +36,7 @@
<p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
<p class="second-line">
<span class="red">{{ chartData?.netChange }}</span>
- <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
+ <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
</p>
</div>
<div class="flex-r">
@@ -123,7 +124,7 @@
<p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
<p class="second-line">
<span class="red">{{ chartData?.netChange }}</span>
- <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span>
+ <span class="red">{{ `${chartData?.change_ratio}%` }}</span>
</p>
</div>
<div class="flex-r">
@@ -171,55 +172,81 @@
</div>
</div>
</section>
- <div class="mainBackground rounded-view" key="y">
+ <div class="btns" style="margin-top:20px;">
+ <div class="tbns_mc" @click="showPopupclick('close')">{{$t('卖出')}}</div>
+ <div class="tbns_mr" @click="showPopupclick('open')">{{$t('买入')}}</div>
+ </div>
+
+ <div class="ws_box">
+ <div class="ws_box_box">
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-dollar.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('开')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.open}}</div>
+ </div>
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-arrow-up.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('高')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.high}}</div>
+ </div>
+ </div>
+ <div class="ws_box_box" style="padding-bottom: 10px;">
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-arrow-down.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('低')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.low}}</div>
+ </div>
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-foldline.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('24h成交量')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.amount}}</div>
+ </div>
+ </div>
+ </div>
+ <van-popup v-model:show="showPopup" :round="true">
+ <div class="popup-content" >
+ <PerpetualOpen class="pl-30 pr-30" :key="symbol" :selectIndex="selectIndex" :symbol="symbol"
+ :green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-close="initClose"
+ :init-futrue="initFutrue" @ordered="onOrdered" @changeValueBack="changeValueBack">
+ </PerpetualOpen>
+ <!-- <van-button @click="showPopup = false">关闭</van-button> -->
+ </div>
+ </van-popup>
+ <!-- <div class="mainBackground rounded-view" key="y">
<PerpetualOpen class="pl-30 pr-30" :key="symbol" :selectIndex="selectIndex" :symbol="symbol"
:green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-close="initClose"
:init-futrue="initFutrue" @ordered="onOrdered" @changeValueBack="changeValueBack">
</PerpetualOpen>
<div class="line"></div>
- <!-- 委托/持仓-->
<PerpetualOrder class="pl-30 pr-30" :key="keyIndex + 'd'" :symbol="symbol" :order-cur="orderCur"
:order-hold="orderHold" :price="price" :topIndex="selectIndex" :futrue-hold="futrueHold"
:futrue-histroy="futrueHistroy" @tab="onTab" @recall="onRecall">
</PerpetualOrder>
- </div>
+ </div> -->
</div>
</div>
- <div class="fixed-box">
+ <!-- <div class="fixed-box">
<div class="flex justify-between items-center px-30 py-20" @click.stop="handleClickShowKlineChart()">
<span class="font-30 textColor2" style="color:#fff;">{{ symbol.toUpperCase() }} {{ $t('k线图表') }}</span>
<van-icon class="font-30" style="color:#fff;" :name="showCharts ? 'arrow-down' : 'arrow-up'"></van-icon>
</div>
- <!-- <section class="indicator-index-container" v-if="showKlineChart">
- <div class="indicator-index-box">
- <div class="flex-l">
- <ul>
- <li v-for="(item, index) in filterOne" :key="item" @click="handleClickSelectTime(item, index)"
- :class="[item.index === timeLabelActive ? 'active' : '']">{{
- item.name
- }}</li>
- <li @click="handleClickMoreBtn">{{ $t('更多') }}</li>
- </ul>
- </div>
- </div>
- <div class="indicator-index-box-second" v-if="showMore">
- <ul>
- <li v-for="(item, index) in filterTwo" :key="item" @click="handleClickSelectTime(item, index)"
- :class="[item.index === timeLabelActive ? 'active' : '']">{{
- item.name
- }}</li>
- </ul>
- </div>
- </section> -->
+
<div class="kline-container flex" v-if="showKlineChart">
<div class="chart-index">
- <!-- <fx-kline :height="500" :symbol="symbol" :isShowsolid="true" :chartType="chartType" v-if="symbol" @data="onData"
- :key="`${symbol}-${timeValue}`" /> -->
+
<k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" :showBottom="true" />
</div>
</div>
- </div>
+ </div> -->
</div>
</template>
@@ -296,6 +323,7 @@
return {
quote: {},
initTimer: null,
+ showPopup:false,
keyIndex: 0,
timeout: null,
timer: null, // 底部持仓等的公用定时器
@@ -322,6 +350,7 @@
show: false, // popup
animated1: false,
animated2: false,
+ _symbol:'',
currentType: 'open',
showCharts: false,
type: 'cryptos',
@@ -380,6 +409,10 @@
this.symbol = symbol
this.init(symbol)
},
+ showPopupclick(e){
+ this.showPopup = !this.showPopup
+ // this.$refs.TradeOrderArea.changeTab(e);
+ },
changeCurrentType(type) {
this.currentType = type
},
@@ -464,6 +497,7 @@
// this.clearTimeout()
this.initParam(this.symbol, evt) // 重新初始化
// 判断方法是否存在
+ this.showPopup = false
const fn = this[this.curTab];
if (typeof fn === 'function') {
fn.call(this, this.symbol);
@@ -474,7 +508,7 @@
//console.log('下单后更新数据')
},
onTab(evt) { // 点击tab后的回调
- console.log('evt2', evt)
+ // console.log('evt2', evt)
this.clearTimer()
// this.clearTimeout()
this.curTab = evt
@@ -483,17 +517,17 @@
fetchQoutes(symbol) { // 获取当前行情
_getHomeList(symbol).then(data => { // 获取行情
this.symbolName = data[0].name
- console.log(data[0].name)
+ // console.log(data[0].name)
this.handleQoutes(data)
this.startQuoteSocket() // socket
})
},
handleQoutes(data) {
- console.log('handleQoutes: ', data);
+ // console.log('handleQoutes: ', data);
if (data && data.length) {
const cur = data[0]
this.price = cur.close
- this.range = (cur.change_ratio_str || cur.changeRatioStr)
+ this.range = (cur.change_ratio || cur.changeRatio)
this.quote = cur
this.updateKey++
}
@@ -688,9 +722,15 @@
this.clearTimer()
const _symbol = symbol || this.symbol
+
+ if(this.symbol){
+ this._symbol = this.symbol
+ }else{
+ this._symbol = symbol
+ }
console.log('init: ',this.symbol, symbol)
this.fetchQoutes(_symbol)
- this.fetchDeepData(_symbol)
+ // this.fetchDeepData(_symbol)
this.initParam(_symbol) // 'open'
// this.clearTimer()
//if (this.curTab === 'fetchOrderListCur') {
@@ -779,6 +819,71 @@
</script>
<style lang="scss">
+ .ws_box_box_box_btn{
+ font-size: 35px;
+ font-weight: bold;
+ padding-bottom: 20px;
+ }
+ .ws_box_box_box_top_img{
+ width: 30px;
+ height: 30px;
+ margin-right: 10px;
+ }
+ .ws_box_box_box_top{
+ display: flex;
+ align-items: center;
+ font-size: 30px;
+ font-weight: bold;
+ color: #8c8883;
+ }
+ .ws_box_box_box{
+ width: 50%;
+ display: flex;
+ flex-direction: column;
+ padding-top: 40px;
+ padding-left: 40px;
+ }
+ .ws_box_box{
+ display: flex;
+ }
+ .ws_box{
+ display: flex;
+ flex-direction: column;
+ background-color: #F6F7F9;
+ border-radius:24px;
+ color:#333;
+ margin:30px;
+ }
+ .tbns_mr {
+ font-weight: bold;
+ font-size: 35px;
+ text-align:center;
+ background-color: #3A7FF6;
+ color: #fff;
+ width: 350px;
+ line-height: 100px;
+ height: 100px;
+ border-radius: 50px;
+ }
+ .tbns_mc {
+ font-weight: bold;
+ font-size: 35px;
+ text-align:center;
+ background-color: #DE5D57;
+ color: #fff;
+ width: 350px;
+ line-height: 100px;
+ height: 100px;
+ border-radius: 50px;
+ }
+
+ .btns {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin: 0 20px;
+ // width: 100%;
+ }
//.list-enter-active, .list-leave-active {
// transition: all .5s;
// transform: translateY(30px)
diff --git a/src/views/cryptos/Trade/index.vue b/src/views/cryptos/Trade/index.vue
index 2a47c74..468e8d2 100644
--- a/src/views/cryptos/Trade/index.vue
+++ b/src/views/cryptos/Trade/index.vue
@@ -1,8 +1,8 @@
<template>
- <div id="cryptos">
- <!-- 调节跳动深度 -->
- <div class="pb-108 no_touch">
- <!-- <div class="px-30 pt-20">
+ <div id="cryptos">
+ <!-- 调节跳动深度 -->
+ <div class="pb-108 no_touch">
+ <!-- <div class="px-30 pt-20">
<div class="flex h-88 w-full box-border border-solid-grey rounded-lg">
<div @click="$router.push('/cryptos/exchangePage')"
class="font-bold font-32 flex justify-center items-center flex-1">
@@ -13,112 +13,162 @@
</div>
</div>
</div> -->
- <trade-head :isReturn="true" :backFunc="() => $router.push('/')" :symbolName="symbolName" :symbol="symbol"
- :price="price" :range="range" :isTrade="true" @update-coin="onUpdate" @data="quote = $event" />
-
- <div class="trade-buy-sell flex justify-between px-30 py-30">
- <trade-order-area :symbol="symbol" :symbolName="symbolName" :init-open="initOpen" :init-close="initClose"
+ <trade-head :isReturn="true" :backFunc="() => $router.push('/')" :symbolName="symbolName" :symbol="symbol"
+ :price="price" :range="range" :isTrade="true" @update-coin="onUpdate" @data="quote = $event" />
+ <div class="chart-index" style="margin-top: 30px;">
+ <k-line-charts v-if="symbol" :update-key="updateKey" :update-data="quote" :symbol="symbol"
+ :showBottom="true" />
+ </div>
+ <div class="trade-buy-sell flex justify-between px-30 py-30">
+ <!-- <trade-order-area :symbol="symbol" :symbolName="symbolName" :init-open="initOpen" :init-close="initClose"
:price="price" @ordered="onOrdered" />
<keep-alive>
<cryptos-trade-deep-data :selectValue="selectValue" @getList="getList" :showType="showType" :symbol="symbol"
v-if="symbol" :price="price" class="w-290 ml-30" />
- </keep-alive>
- </div>
- <div class="flex k-select-box">
- <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%;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">
- <div class="font-28" v-for="(item, index) in sortList" :key="index" @click="selectItem(item)">{{
+ </keep-alive> -->
+ <!-- <trade-order-area :symbol="symbol" :symbolName="symbolName" :init-open="initOpen" :init-close="initClose"
+ :price="price" @ordered="onOrdered" /> -->
+ <div class="btns" style="margin-top:20px;">
+ <div class="tbns_mc" @click="showPopupclick('close')">{{$t('卖出')}}</div>
+ <div class="tbns_mr" @click="showPopupclick('open')">{{$t('买入')}}</div>
+ </div>
+
+ </div>
+
+ <van-popup v-model:show="showPopup" :round="true">
+ <div class="popup-content" style="padding: 20px;">
+ <trade-order-area ref="TradeOrderArea" :symbol="symbol" :symbolName="symbolName" :init-open="initOpen" :init-close="initClose"
+ :price="price" @ordered="onOrdered" />
+ </div>
+ </van-popup>
+ <div class="ws_box">
+ <div class="ws_box_box">
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-dollar.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('开')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.open}}</div>
+ </div>
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-arrow-up.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('高')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.high}}</div>
+ </div>
+ </div>
+ <div class="ws_box_box" style="padding-bottom: 10px;">
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-arrow-down.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('低')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.low}}</div>
+ </div>
+ <div class="ws_box_box_box">
+ <div class="ws_box_box_box_top">
+ <img class="ws_box_box_box_top_img" src="../../../assets/img/icon-foldline.png"/>
+ <div class="ws_box_box_box_top_txt">{{$t('24h成交量')}}</div>
+ </div>
+ <div class="ws_box_box_box_btn">{{quote.amount}}</div>
+ </div>
+ </div>
+ </div>
+
+ <!-- <div class="flex k-select-box">
+ <div class="mt-20 mb-22 select-box" style="position:relative;">
+ <div class=" flex justify-between items-center w-full h-70" @click="selectBtn">
+ <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">
+ <div class="font-28" v-for="(item, index) in sortList" :key="index" @click="selectItem(item)">{{
item.name
}}
- </div>
- </div>
- </div>
- <div class="ml-10" @click="isSelectShow = true">
- <img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30" />
- </div>
- </div>
- <div class="h-16 diviLine"></div>
- <div>
- <div class="flex justify-between border-b-color items-center">
- <div class="flex pl-30">
+ </div>
+ </div>
+ </div>
+ <div class="ml-10" @click="isSelectShow = true">
+ <img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30" />
+ </div>
+ </div> -->
+ <!-- <div class="h-16 diviLine"></div>
+ <div>
+ <div class="flex justify-between border-b-color items-center">
+ <div class="flex pl-30">
- <div class="px-10 py-10 flex items-center text-grey font-28" @click="tabClick('1')"
- :class="tabType == '1' ? 'active-line' : ''">{{ $t('当前委托') }}<span v-if="tabType == '1'">({{
+ <div class="px-10 py-10 flex items-center text-grey font-28" @click="tabClick('1')"
+ :class="tabType == '1' ? 'active-line' : ''">{{ $t('当前委托') }}<span v-if="tabType == '1'">({{
entrustList.length }})</span></div>
- <div class="px-10 ml-50 py-10 flex items-center text-grey font-28" @click="tabClick('2')"
- :class="tabType == '2' ? 'active-line' : ''">{{ $t('历史委托') }}</div>
- <div class="px-10 py-10 flex items-center ml-50 text-grey font-28" @click="tabClick('3')"
- :class="tabType == '3' ? 'active-line' : ''">{{ $t('资产') }}</div>
- </div>
- <img src="../../../assets/image/public/record.png" alt="record-img" class="w-64 h-35 pr-30 "
- @click="goHistory" />
- </div>
- </div>
- <div class="py-20 px-20" v-if="tabType == '1'">
- <entrust-item v-for="item in entrustList" :key="item.order_no" :entrust="item" state="submitted"
- @cancelOrder="cancelOrder" />
- </div>
- <div class="py-20 px-20" v-else-if="tabType == '2'">
- <history-item unit="USDT" v-for="item in entrustList" :key="item.order_no" :coinPrice="coinPrice" :entrust="item"
- :state="item.state" @cancelOrder="cancelOrder" />
- </div>
- <div class="py-20 px-20" v-else>
- <div class="mb-20 border-b">
- <p class="font-28 text-grey mt-24 mb-22">{{ $t('当前币对资产') }}</p>
- <ul>
- <li v-for="item in pairsList" :key="item.symbol" class="flex justify-between py-10">
- <div class="flex items-center">
- <img
- :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol_data}.png` : handleImage('../../../assets/loading-default.png')"
- class="w-52 h-52 rounded-full mr-16" />
- <p class="flex flex-col">
- <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
- <span class="font-20 text-grey">{{ item.full_name }}</span>
- </p>
- </div>
- <div class="flex flex-col items-end">
- <strong class="font-28 textColor mb-6">{{ item.volume }}</strong>
- <span class="font-20 text-grey">{{ currency.currency_symbol }} {{ (item.usdt ? (currency.rate *
+ <div class="px-10 ml-50 py-10 flex items-center text-grey font-28" @click="tabClick('2')"
+ :class="tabType == '2' ? 'active-line' : ''">{{ $t('历史委托') }}</div>
+ <div class="px-10 py-10 flex items-center ml-50 text-grey font-28" @click="tabClick('3')"
+ :class="tabType == '3' ? 'active-line' : ''">{{ $t('资产') }}</div>
+ </div>
+ <img src="../../../assets/image/public/record.png" alt="record-img" class="w-64 h-35 pr-30 "
+ @click="goHistory" />
+ </div>
+ </div> -->
+ <div class="py-20 px-20" v-if="tabType == '1'">
+ <entrust-item v-for="item in entrustList" :key="item.order_no" :entrust="item" state="submitted"
+ @cancelOrder="cancelOrder" />
+ </div>
+ <div class="py-20 px-20" v-else-if="tabType == '2'">
+ <history-item unit="USDT" v-for="item in entrustList" :key="item.order_no" :coinPrice="coinPrice"
+ :entrust="item" :state="item.state" @cancelOrder="cancelOrder" />
+ </div>
+ <div class="py-20 px-20" v-else>
+ <div class="mb-20 border-b">
+ <p class="font-28 text-grey mt-24 mb-22">{{ $t('当前币对资产') }}</p>
+ <ul>
+ <li v-for="item in pairsList" :key="item.symbol" class="flex justify-between py-10">
+ <div class="flex items-center">
+ <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol_data}.png` : handleImage('../../../assets/loading-default.png')"
+ class="w-52 h-52 rounded-full mr-16" />
+ <p class="flex flex-col">
+ <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
+ <span class="font-20 text-grey">{{ item.full_name }}</span>
+ </p>
+ </div>
+ <div class="flex flex-col items-end">
+ <strong class="font-28 textColor mb-6">{{ item.volume }}</strong>
+ <span class="font-20 text-grey">{{ currency.currency_symbol }} {{ (item.usdt ? (currency.rate *
item.usdt).toFixed(2) :
'--') }}</span>
- </div>
- </li>
- </ul>
- </div>
- <div class="mb-20 border-b">
- <p class="font-28 text-grey mt-14 mb-42">{{ $t('其他非0资产') }}</p>
- <ul>
- <li v-for="item in no_zeroList" :key="item.symbol" class="flex justify-between py-10">
- <div class="flex items-center">
- <img
- :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol_data}.png` : handleImage('../../../assets/loading-default.png')"
- class="w-52 h-52 rounded-full mr-16" />
- <p class="flex flex-col">
- <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
- <span class="font-20 text-grey">{{ item.full_name }}</span>
- </p>
- </div>
- <div class="flex flex-col items-end">
- <strong class="font-28 textColor mb-6">{{ item.volume }}</strong>
- <span class="font-20 text-grey">{{ currency.currency_symbol }} {{ (item.usdt ? (currency.rate *
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div class="mb-20 border-b">
+ <p class="font-28 text-grey mt-14 mb-42">{{ $t('其他非0资产') }}</p>
+ <ul>
+ <li v-for="item in no_zeroList" :key="item.symbol" class="flex justify-between py-10">
+ <div class="flex items-center">
+ <img :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol_data}.png` : handleImage('../../../assets/loading-default.png')"
+ class="w-52 h-52 rounded-full mr-16" />
+ <p class="flex flex-col">
+ <strong class="font-28 textColor mb-6">{{ item.symbol.toUpperCase() }}</strong>
+ <span class="font-20 text-grey">{{ item.full_name }}</span>
+ </p>
+ </div>
+ <div class="flex flex-col items-end">
+ <strong class="font-28 textColor mb-6">{{ item.volume }}</strong>
+ <span class="font-20 text-grey">{{ currency.currency_symbol }} {{ (item.usdt ? (currency.rate *
item.usdt).toFixed(2) :
'--') }}</span>
- </div>
- </li>
- </ul>
- </div>
- </div>
- <!-- <div v-if="tabType == '1' && entrustList.length === 0"
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <!-- <div v-if="tabType == '1' && entrustList.length === 0"
class="flex flex-col justify-center items-center pt-185 pb-100">
<img src="../../../assets/image/assets-center/no-data.png" alt="no-date" class="w-120 h-120" />
<p class="textColor">{{ $t('暂无数据') }}</p>
</div> -->
- <!-- <div class="fixed w-full shadow-box z-100 inputBackground">
+ <!-- <div class="fixed w-full shadow-box z-100 inputBackground">
<div class="flex justify-between px-30 py-10">
<span class="font-24 textColor2">{{ symbol.toUpperCase() }}/USDT {{ $t('k线图表') }}</span>
<van-icon class="textColor" :name="showCharts ? 'arrow-down' : 'arrow-up'"
@@ -127,12 +177,15 @@
<k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" v-if="symbol && showCharts"
:showBottom="false" />
</div> -->
- <div class="fixed-box">
+ <!-- <div class="fixed-box">
<div class="flex justify-between items-center px-30 py-20" @click.stop="handleClickShowKlineChart()">
<span class="font-30 textColor2" style="">{{ symbol.toUpperCase() }} {{ $t('k线图表') }}</span>
<van-icon class="textColor font-28" :name="showCharts ? 'arrow-down' : 'arrow-up'"></van-icon>
</div>
- <!-- <section class="indicator-index-container" v-if="showKlineChart">
+ <div class="kline-container flex" v-if="showKlineChart">
+
+ </div> -->
+ <!-- <section class="indicator-index-container" v-if="showKlineChart">
<div class="indicator-index-box">
<div class="flex-l">
<ul>
@@ -153,668 +206,863 @@
</ul>
</div>
</section> -->
- <div class="kline-container flex" v-if="showKlineChart">
- <div class="chart-index">
- <!-- <fx-kline :height="500" :symbol="symbol" :isShowsolid="true" :chartType="chartType" v-if="symbol" @data="onData"
- :key="`${symbol}-${timeValue}`" /> -->
- <k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" :showBottom="true" />
- </div>
- </div>
- </div>
- <van-action-sheet class="action-sheet" v-model:show="isSelectShow" @select="onSelect" :actions="actions"
- :cancel-text="$t('取消')" close-on-click-action @cancel="onCancel" />
- </div>
+ <!-- </div> -->
+ <van-action-sheet class="action-sheet" v-model:show="isSelectShow" @select="onSelect" :actions="actions"
+ :cancel-text="$t('取消')" close-on-click-action @cancel="onCancel" />
- </div>
+ </div>
+
+ </div>
</template>
<script>
-import TradeHead from '@/components/Transform/trade-head/index.vue'
-import TradeOrderArea from '@/components/Transform/trade-order-area/index.vue'
-import CryptosTradeDeepData from '@/components/Transform/cryptos-trade-deep-data/index.vue'
-import EntrustItem from '@/components/Transform/entrust-item/index.vue'
-import KLineCharts from '@/components/Transform/kline-charts/index.vue'
-import historyItem from '@/components/Transform/history-item/index.vue'
-import fxKline from '@/components/fx-kline/index.vue'
+ import TradeHead from '@/components/Transform/trade-head/index.vue'
+ import TradeOrderArea from '@/components/Transform/trade-order-area/index.vue'
+ import CryptosTradeDeepData from '@/components/Transform/cryptos-trade-deep-data/index.vue'
+ import EntrustItem from '@/components/Transform/entrust-item/index.vue'
+ import KLineCharts from '@/components/Transform/kline-charts/index.vue'
+ import historyItem from '@/components/Transform/history-item/index.vue'
+ import fxKline from '@/components/fx-kline/index.vue'
-import Axios from '@/service/trading'
-import { _getHomeList } from '@/service/home.api'
-import { Popup, Swipe, SwipeItem, Circle, Icon, showSuccessToast, showFailToast } from 'vant';
-import { mapActions, mapGetters } from 'vuex'
-import { SET_COIN_LIST } from '@/store/const.store'
-import { WS_URL, HOST_URL } from '@/config'
-import TradeApi from "@/service/trading.js";
-import { getStorage, handleImage } from '@/utils/utis'
-import { useQuotesStore } from '@/store/quotes.store'
-import { SET_STAGE } from '@/store/types.store';
-import { _getExchangeRate } from '@/service/cryptos.api'
-const quotesStore = useQuotesStore()
-export default {
- name: "TradePage",
- components: {
- TradeHead,
- TradeOrderArea,
- CryptosTradeDeepData,
- [Popup.name]: Popup,
- [Swipe.name]: Swipe,
- [SwipeItem.name]: SwipeItem,
- [Circle.name]: Circle,
- [Icon.name]: Icon,
- EntrustItem,
- KLineCharts,
- historyItem,
- fxKline,
- KLineCharts
- },
- computed: {
- ...mapGetters('user', ['userInfo']),
- ...mapGetters({
- coinList: 'home/coinList',
- }),
- },
- data() {
- const initArr = []
- for (let i = 0; i < 8; i++) {
- initArr.push({
- volume: '--',
- price: '--'
- })
- }
- return {
- HOST_URL,
- quote: {},
- showCharts: false,
- updateKey: 1,
- initTimer: null,
- keyIndex: 0,
- timeout: null,
- timer: null, // 底部持仓等的公用定时器
- timer2: null, // 交割合约底部持仓等的公用定时器
- symbol: '',
- price: '',
- range: '',
- initOpen: {},
- initClose: {},
- asks: initArr, // 卖单
- bids: initArr, // 买单
- orderCur: [], // 当前委托
- orderHold: [], // 持有仓位
- futrueHold: [], // 交割持仓
- futrueHistroy: [], // 交割历史
- socket: null, // 行情
- sockets: {
- quotes: null, // 行情
- deep: null /// 深度
- },
- curTab: '', // 当前委托还是持有仓位
- selectIndex: 1, // 当前tab
- initFutrue: {}, /// 交割合约
- show: false, // popup
- entrustList: [], //当前委托订单
- tabType: 1,
- no_zeroList: [], //其他非0资产数组
- pairsList: {}, //当前资产
- // curRequest: [], //
- isShow: false,
- title: 1,
- isSelectShow: false,
- actions: [{ name: this.$t('默认'), value: 0, className: 'actions-active' }, { name: this.$t('展示买单'), value: 1, className: "" }, { name: this.$t('展示卖单'), value: 2, className: '' }],
- showType: 0,
- sortList: [],
- selectValue: 0,
- coinPrice: 0,
- type: 'cryptos',
- filterOne: [
- { name: this.$t('分时'), paramsValue: 'timeSharing', seconds: 1 * 60 * 1000, index: 0, },
- { name: '1' + this.$t('天'), paramsValue: '1day', seconds: 1 * 24 * 60 * 60 * 1000, index: 1, },
- { name: '1' + this.$t('周'), paramsValue: '1week', seconds: 7 * 24 * 60 * 60 * 1000, index: 2, },
- { name: '1' + this.$t('月'), paramsValue: '1mon', seconds: 30 * 24 * 60 * 60 * 1000, index: 3, },
- { name: '5' + this.$t('天'), paramsValue: '5day', seconds: 5 * 24 * 60 * 60 * 1000, index: 4, },
- { name: this.$t('season'), paramsValue: '1quarter', seconds: 3 * 30 * 24 * 60 * 60 * 1000, index: 5, },
- { name: this.$t('Year'), paramsValue: '1year', seconds: 12 * 30 * 24 * 60 * 60 * 1000, index: 6, },
- ],
- filterTwo: [
- { name: '120' + this.$t('分'), paramsValue: '120min', seconds: 2 * 60 * 60 * 1000, index: 7, },
- { name: '60' + this.$t('分'), paramsValue: '60min', seconds: 1 * 60 * 60 * 1000, index: 8, },
- { name: '30' + this.$t('分'), paramsValue: '30min', seconds: 30 * 60 * 1000, index: 9, },
- { name: '15' + this.$t('分'), paramsValue: '15min', seconds: 15 * 60 * 1000, index: 10, },
- { name: '5' + this.$t('分'), paramsValue: '5min', seconds: 5 * 60 * 1000, index: 11, },
- { name: '1' + this.$t('分'), paramsValue: '1min', seconds: 1 * 60 * 1000, index: 12, },
- ],
- showKlineChart: false,
- chartType: '',
- timeValue: '',
- chartData: {},
- timeLabelActive: 1,
- showMore: false,
- symbolName: '',
- updateKey: 1,
- currency: {},
- timer3: null
- }
- },
- async created() {
- if (this.$route.query.type) {
- this.type = this.$route.query.type
- }
- await this.SET_COIN_LIST(this.type)
- this.getExchangeRate()
- },
- methods: {
- handleImage,
- ...mapActions('home', [SET_COIN_LIST]),
- onUpdate(symbol) { // 更新
- this.symbol = symbol
- this.closeSocket()
- this.init(symbol)
- },
- getExchangeRate() {
- _getExchangeRate({}).then((res) => {
- this.currency = res
- })
- },
- handleClickShowKlineChart() {
- this.showKlineChart = !this.showKlineChart
- },
- handleClickSelectTime(params) {
- const { paramsValue, seconds, index } = params;
- this.timeLabelActive = index;
- quotesStore[SET_STAGE]({ stage: paramsValue, seconds })
- this.onSelectTime(paramsValue)
- },
- onSelectTime(evt) {
- this.timeValue = evt
- if (evt == 'timeSharing') {
- this.chartType = 'area'
- } else {
- this.chartType = 'candle_solid'
- }
- },
- // 事件
- onData(data) {
- this.chartData = data
- },
- handleClickMoreBtn() {
- this.showMore = !this.showMore
- },
- getCoinPrce(val) {
- _getHomeList(val).then((res) => {
- this.symbolName = res[0].name
- this.coinPrice = res[0].close
- })
- },
- tabClick(type) {
- this.tabType = type;
- this.entrustList = []
- if (type == 3) {
- if (!this.userInfo.token) {
- this.$router.push('/login')
- } else {
- this.getWallet()
- }
- } else {
- if (!this.userInfo.token) {
- this.$router.push('/login')
- } else {
- this.getOrderList()
- }
- }
- },
- onOrdered(evt) { // 下单过后的回调
- this.clearTimer()
- // this.clearTimeout()
- this.initParam(this.symbol, evt) // 重新初始化
- //console.log('下单后更新数据')
- },
- onTab(evt) { // 点击tab后的回调
- // console.log('evt', evt)
- this.clearTimer()
- // this.clearTimeout()
- this.curTab = evt
- this[evt](this.symbol)
- },
- handleQoutes(data) {
- if (data && data.length) {
- const cur = data[0]
- this.price = cur.close
- this.range = cur.change_ratio_str || cur.changeRatioStr
- this.quote = cur
- this.updateKey++
- }
- },
- startQuoteSocket() { // 行情socket
- // console.log('symbol', this.symbol)
- if (!this.symbol) {
- return
- }
- this.socket = new WebSocket(`${WS_URL}/1/${this.symbol}`)
- this.socket.onmessage = (evt) => {
- const { data } = evt
- const { code, data: _data } = JSON.parse(data)
- if (code / 1 === 0) {
- this.handleQoutes(_data)
- }
- }
- },
- initParam(symbol, type) { // 初始化参数
- if (this.userInfo.token) {
- if (type === 'open' || !type) {
- //console.log('开仓数据')
- Axios.tradeBuyToken({})
- .then(res => {
- this.initOpen = res
- // console.log(this.initOpen.volume, res.data.volume, type)
- })
- }
- if (type === 'close' || !type) {
- Axios.tradeSellToken({
- symbol
- }).then(res => {
- this.initClose = res
- })
- }
+ import Axios from '@/service/trading'
+ import {
+ _getHomeList
+ } from '@/service/home.api'
+ import {
+ Popup,
+ Swipe,
+ SwipeItem,
+ Circle,
+ Icon,
+ showSuccessToast,
+ showFailToast
+ } from 'vant';
+ import {
+ mapActions,
+ mapGetters
+ } from 'vuex'
+ import { ref } from 'vue';
+ import {
+ SET_COIN_LIST
+ } from '@/store/const.store'
+ import {
+ WS_URL,
+ HOST_URL
+ } from '@/config'
+ import TradeApi from "@/service/trading.js";
+ import {
+ getStorage,
+ handleImage
+ } from '@/utils/utis'
+ import {
+ useQuotesStore
+ } from '@/store/quotes.store'
+ import {
+ SET_STAGE
+ } from '@/store/types.store';
+ import {
+ _getExchangeRate
+ } from '@/service/cryptos.api'
+ const quotesStore = useQuotesStore()
+ export default {
+ name: "TradePage",
+ components: {
+ TradeHead,
+ TradeOrderArea,
+ CryptosTradeDeepData,
+ [Popup.name]: Popup,
+ [Swipe.name]: Swipe,
+ [SwipeItem.name]: SwipeItem,
+ [Circle.name]: Circle,
+ [Icon.name]: Icon,
+ EntrustItem,
+ KLineCharts,
+ historyItem,
+ fxKline,
+ KLineCharts
+ },
+ computed: {
+ ...mapGetters('user', ['userInfo']),
+ ...mapGetters({
+ coinList: 'home/coinList',
+ }),
+ },
+ data() {
+ const initArr = []
+ for (let i = 0; i < 8; i++) {
+ initArr.push({
+ volume: '--',
+ price: '--'
+ })
+ }
+ return {
+ HOST_URL,
+ showPopup:false,
+ quote: {},
+ showCharts: false,
+ updateKey: 1,
+ initTimer: null,
+ currentType:null,
+ keyIndex: 0,
+ timeout: null,
+ timer: null, // 底部持仓等的公用定时器
+ timer2: null, // 交割合约底部持仓等的公用定时器
+ symbol: '',
+ price: '',
+ range: '',
+ initOpen: {},
+ initClose: {},
+ asks: initArr, // 卖单
+ bids: initArr, // 买单
+ orderCur: [], // 当前委托
+ orderHold: [], // 持有仓位
+ futrueHold: [], // 交割持仓
+ futrueHistroy: [], // 交割历史
+ socket: null, // 行情
+ sockets: {
+ quotes: null, // 行情
+ deep: null /// 深度
+ },
+ curTab: '', // 当前委托还是持有仓位
+ selectIndex: 1, // 当前tab
+ initFutrue: {}, /// 交割合约
+ show: true, // popup
+ entrustList: [], //当前委托订单
+ tabType: 1,
+ no_zeroList: [], //其他非0资产数组
+ pairsList: {}, //当前资产
+ // curRequest: [], //
+ isShow: false,
+ title: 1,
+ isSelectShow: false,
+ actions: [{
+ name: this.$t('默认'),
+ value: 0,
+ className: 'actions-active'
+ }, {
+ name: this.$t('展示买单'),
+ value: 1,
+ className: ""
+ }, {
+ name: this.$t('展示卖单'),
+ value: 2,
+ className: ''
+ }],
+ showType: 0,
+ sortList: [],
+ selectValue: 0,
+ coinPrice: 0,
+ type: 'cryptos',
+ filterOne: [{
+ name: this.$t('分时'),
+ paramsValue: 'timeSharing',
+ seconds: 1 * 60 * 1000,
+ index: 0,
+ },
+ {
+ name: '1' + this.$t('天'),
+ paramsValue: '1day',
+ seconds: 1 * 24 * 60 * 60 * 1000,
+ index: 1,
+ },
+ {
+ name: '1' + this.$t('周'),
+ paramsValue: '1week',
+ seconds: 7 * 24 * 60 * 60 * 1000,
+ index: 2,
+ },
+ {
+ name: '1' + this.$t('月'),
+ paramsValue: '1mon',
+ seconds: 30 * 24 * 60 * 60 * 1000,
+ index: 3,
+ },
+ {
+ name: '5' + this.$t('天'),
+ paramsValue: '5day',
+ seconds: 5 * 24 * 60 * 60 * 1000,
+ index: 4,
+ },
+ {
+ name: this.$t('season'),
+ paramsValue: '1quarter',
+ seconds: 3 * 30 * 24 * 60 * 60 * 1000,
+ index: 5,
+ },
+ {
+ name: this.$t('Year'),
+ paramsValue: '1year',
+ seconds: 12 * 30 * 24 * 60 * 60 * 1000,
+ index: 6,
+ },
+ ],
+ filterTwo: [{
+ name: '120' + this.$t('分'),
+ paramsValue: '120min',
+ seconds: 2 * 60 * 60 * 1000,
+ index: 7,
+ },
+ {
+ name: '60' + this.$t('分'),
+ paramsValue: '60min',
+ seconds: 1 * 60 * 60 * 1000,
+ index: 8,
+ },
+ {
+ name: '30' + this.$t('分'),
+ paramsValue: '30min',
+ seconds: 30 * 60 * 1000,
+ index: 9,
+ },
+ {
+ name: '15' + this.$t('分'),
+ paramsValue: '15min',
+ seconds: 15 * 60 * 1000,
+ index: 10,
+ },
+ {
+ name: '5' + this.$t('分'),
+ paramsValue: '5min',
+ seconds: 5 * 60 * 1000,
+ index: 11,
+ },
+ {
+ name: '1' + this.$t('分'),
+ paramsValue: '1min',
+ seconds: 1 * 60 * 1000,
+ index: 12,
+ },
+ ],
+ showKlineChart: false,
+ chartType: '',
+ timeValue: '',
+ chartData: {},
+ timeLabelActive: 1,
+ showMore: false,
+ symbolName: '',
+ updateKey: 1,
+ currency: {},
+ timer3: null
+ }
+ },
+
+ async created() {
+ if (this.$route.query.type) {
+ this.type = this.$route.query.type
+ }
+ await this.SET_COIN_LIST(this.type)
+ this.getExchangeRate()
+ },
+ methods: {
+ onReady(){
+ if (this.$refs.TradeOrderArea) {
+ this.$refs.TradeOrderArea.changeTab();
+ }
+ },
+ handleImage,
+ ...mapActions('home', [SET_COIN_LIST]),
+ onUpdate(symbol) { // 更新
+ this.symbol = symbol
+ this.closeSocket()
+ this.init(symbol)
+ },
+ showPopupclick(e){
+ this.showPopup = !this.showPopup
+ // this.currentType = e
+ this.$refs.TradeOrderArea.changeTab(e);
+ },
+ getExchangeRate() {
+ _getExchangeRate({}).then((res) => {
+ this.currency = res
+ })
+ },
+ handleClickShowKlineChart() {
+ this.showKlineChart = !this.showKlineChart
+ },
+ handleClickSelectTime(params) {
+ const {
+ paramsValue,
+ seconds,
+ index
+ } = params;
+ this.timeLabelActive = index;
+ quotesStore[SET_STAGE]({
+ stage: paramsValue,
+ seconds
+ })
+ this.onSelectTime(paramsValue)
+ },
+ onSelectTime(evt) {
+ this.timeValue = evt
+ if (evt == 'timeSharing') {
+ this.chartType = 'area'
+ } else {
+ this.chartType = 'candle_solid'
+ }
+ },
+ // 事件
+ onData(data) {
+ this.chartData = data
+ },
+ handleClickMoreBtn() {
+ this.showMore = !this.showMore
+ },
+ getCoinPrce(val) {
+ _getHomeList(val).then((res) => {
+ this.symbolName = res[0].name
+ this.coinPrice = res[0].close
+ })
+ },
+ tabClick(type) {
+ this.tabType = type;
+ this.entrustList = []
+ if (type == 3) {
+ if (!this.userInfo.token) {
+ this.$router.push('/login')
+ } else {
+ this.getWallet()
+ }
+ } else {
+ if (!this.userInfo.token) {
+ this.$router.push('/login')
+ } else {
+ this.getOrderList()
+ }
+ }
+ },
+ onOrdered(evt) { // 下单过后的回调
+ this.clearTimer()
+ // this.clearTimeout()
+ this.initParam(this.symbol, evt) // 重新初始化
+ //console.log('下单后更新数据')
+ },
+ onTab(evt) { // 点击tab后的回调
+ // console.log('evt', evt)
+ this.clearTimer()
+ // this.clearTimeout()
+ this.curTab = evt
+ this[evt](this.symbol)
+ },
+ handleQoutes(data) {
+ if (data && data.length) {
+ const cur = data[0]
+ this.price = cur.close
+ this.range = cur.change_ratio || cur.changeRatio
+ this.quote = cur
+ this.updateKey++
+ }
+ },
+ startQuoteSocket() { // 行情socket
+ // console.log('symbol', this.symbol)
+ if (!this.symbol) {
+ return
+ }
+ this.socket = new WebSocket(`${WS_URL}/1/${this.symbol}`)
+ this.socket.onmessage = (evt) => {
+ const {
+ data
+ } = evt
+ const {
+ code,
+ data: _data
+ } = JSON.parse(data)
+ if (code / 1 === 0) {
+ this.handleQoutes(_data)
+ }
+ }
+ },
+ initParam(symbol, type) { // 初始化参数
+ if (this.userInfo.token) {
+ if (type === 'open' || !type) {
+ //console.log('开仓数据')
+ Axios.tradeBuyToken({})
+ .then(res => {
+ this.initOpen = res
+ // console.log(this.initOpen.volume, res.data.volume, type)
+ })
+ }
+ if (type === 'close' || !type) {
+ Axios.tradeSellToken({
+ symbol
+ }).then(res => {
+ this.initClose = res
+ })
+ }
- if (this.userInfo.token) {
- this.getWallet()
- this.timer3 = setInterval(() => {
- this.getOrderList();
- }, 2000)
- }
- }
- },
- init(symbol) { // 初始化页面
- this.symbol = symbol
- if (!this.socket) {
- this.startQuoteSocket()
- }
- this.initParam(symbol) // 'open'
- this.clearTimer()
- this.getCoinPrce(symbol)
- },
- closeSocket() {
- this.socket && this.socket.close()
- this.socket = null
- },
- clearTimer() {
- clearInterval(this.timer)
- clearInterval(this.timer3)
- this.timer = null
- },
- tradeBuy() {
- Axios.tradeBuy({
- volume: 1,
- session_token: '',
- symbol: '',
- price: 1,
- order_price_type: '' //limit限价 opponent市价
- }).then((res) => {
- console.log(res);
- }).catch((error) => {
- if (error.code === 'ECONNABORTED') { showFailToast(this.$t('网络超时!')); }
- else if (error.msg !== undefined) { showFailToast(this.$t(error.msg)); }
- });
- },
- getOrderList() {
- TradeApi.tradeRecord({
- page_no: 1,
- symbol: this.$route.params.symbol,
- type: this.tabType == 1 ? 'orders' : 'hisorders'
- }).then(res => {
- console.log(res);
- this.entrustList = res
- }).catch(() => {
+ if (this.userInfo.token) {
+ this.getWallet()
+ this.timer3 = setInterval(() => {
+ this.getOrderList();
+ }, 2000)
+ }
+ }
+ },
+ init(symbol) { // 初始化页面
+ this.symbol = symbol
+ if (!this.socket) {
+ this.startQuoteSocket()
+ }
+ this.initParam(symbol) // 'open'
+ this.clearTimer()
+ this.getCoinPrce(symbol)
+ },
+ closeSocket() {
+ this.socket && this.socket.close()
+ this.socket = null
+ },
+ clearTimer() {
+ clearInterval(this.timer)
+ clearInterval(this.timer3)
+ this.timer = null
+ },
+ tradeBuy() {
+ Axios.tradeBuy({
+ volume: 1,
+ session_token: '',
+ symbol: '',
+ price: 1,
+ order_price_type: '' //limit限价 opponent市价
+ }).then((res) => {
+ console.log(res);
+ }).catch((error) => {
+ if (error.code === 'ECONNABORTED') {
+ showFailToast(this.$t('网络超时!'));
+ } else if (error.msg !== undefined) {
+ showFailToast(this.$t(error.msg));
+ }
+ });
+ },
+ getOrderList() {
+ TradeApi.tradeRecord({
+ page_no: 1,
+ symbol: this.$route.params.symbol,
+ type: this.tabType == 1 ? 'orders' : 'hisorders'
+ }).then(res => {
+ console.log(res);
+ this.entrustList = res
+ }).catch(() => {
- })
- },
- cancelOrder(order) {
- TradeApi.tradeCancel({
- order_no: order,
- }).then(res => {
- this.initParam(this.symbol)
- showSuccessToast(this.$t('成功'))
- }).catch(() => {
+ })
+ },
+ cancelOrder(order) {
+ TradeApi.tradeCancel({
+ order_no: order,
+ }).then(res => {
+ this.initParam(this.symbol)
+ showSuccessToast(this.$t('成功'))
+ }).catch(() => {
- })
- },
- getWallet() {
- TradeApi.getPairs({
- pairs: `${this.symbol}/usdt`,
- symbolType: 'cryptos'
- })
- .then(res => {
- this.pairsList = res.pairs;
- this.no_zeroList = res.no_zero;
- })
- },
- goHistory() {
- if (this.userInfo.token) {
- let type = 'cryptos'
- if (this.$route.query.type) {
- type = this.$route.query.type
- }
- this.$router.push(`/cryptos/tradeRecord/${this.symbol}/?type=${type}`)
- } else {
- this.$router.push('/login')
- }
- },
- //价格类型下拉框切换
- selectBtn() {
- this.isShow = !this.isShow;
- },
- //选择价格类型
- selectItem(item) {
- this.title = item.name;
- this.isShow = false;
- this.selectValue = item.value
- },
- onSelect(item) {
- this.showType = item.value
- this.actions.map((item) => {
- item.className = ''
- })
- item.className = 'actions-active'
- },
- onCancel() {
- this.isSelectShow = false
- },
- getList(val) {
- if (val.numberLength <= 2) {
- this.title = val.arry[0].name
- } else {
- this.title = val.arry[val.arry.length - 1].name
- }
- this.sortList = val.arry
- }
- },
- beforeRouteEnter(to, from, next) {
- let { params: { symbol } } = to
- // console.log('to', to)
- // let catchTradeSymbol = getStorage('tradeSymbol') || null
- // if (catchTradeSymbol != null) {
- // symbol = catchTradeSymbol
- // }
- if (symbol) {
- next(vm => {
- vm.symbol = symbol
- vm.init(symbol)
- })
- } else {
- next()
- }
- },
- activated() {
- // if (!this.socket) {
- // this.startQuoteSocket()
- // }
- },
- deactivated() {
- this.closeSocket()
- this.clearTimer()
- },
- beforeUnmount() {
- this.closeSocket()
- // this.clearTimeout(true)
- this.clearTimer()
- }
-}
-
+ })
+ },
+ getWallet() {
+ TradeApi.getPairs({
+ pairs: `${this.symbol}/usdt`,
+ symbolType: 'cryptos'
+ })
+ .then(res => {
+ this.pairsList = res.pairs;
+ this.no_zeroList = res.no_zero;
+ })
+ },
+ goHistory() {
+ if (this.userInfo.token) {
+ let type = 'cryptos'
+ if (this.$route.query.type) {
+ type = this.$route.query.type
+ }
+ this.$router.push(`/cryptos/tradeRecord/${this.symbol}/?type=${type}`)
+ } else {
+ this.$router.push('/login')
+ }
+ },
+ //价格类型下拉框切换
+ selectBtn() {
+ this.isShow = !this.isShow;
+ },
+ //选择价格类型
+ selectItem(item) {
+ this.title = item.name;
+ this.isShow = false;
+ this.selectValue = item.value
+ },
+ onSelect(item) {
+ this.showType = item.value
+ this.actions.map((item) => {
+ item.className = ''
+ })
+ item.className = 'actions-active'
+ },
+ onCancel() {
+ this.isSelectShow = false
+ },
+ getList(val) {
+ if (val.numberLength <= 2) {
+ this.title = val.arry[0].name
+ } else {
+ this.title = val.arry[val.arry.length - 1].name
+ }
+ this.sortList = val.arry
+ }
+ },
+ beforeRouteEnter(to, from, next) {
+ let {
+ params: {
+ symbol
+ }
+ } = to
+ // console.log('to', to)
+ // let catchTradeSymbol = getStorage('tradeSymbol') || null
+ // if (catchTradeSymbol != null) {
+ // symbol = catchTradeSymbol
+ // }
+ if (symbol) {
+ next(vm => {
+ vm.symbol = symbol
+ vm.init(symbol)
+ })
+ } else {
+ next()
+ }
+ },
+ activated() {
+ // if (!this.socket) {
+ // this.startQuoteSocket()
+ // }
+ },
+ deactivated() {
+ this.closeSocket()
+ this.clearTimer()
+ },
+ beforeUnmount() {
+ this.closeSocket()
+ // this.clearTimeout(true)
+ this.clearTimer()
+ }
+ }
</script>
<style lang="scss" scoped>
-@import "@/assets/init.scss";
+ .ws_box_box_box_btn{
+ font-size: 35px;
+ font-weight: bold;
+ padding-bottom: 20px;
+ }
+ .ws_box_box_box_top_img{
+ width: 30px;
+ height: 30px;
+ margin-right: 10px;
+ }
+ .ws_box_box_box_top{
+ display: flex;
+ align-items: center;
+ font-size: 30px;
+ font-weight: bold;
+ color: #8c8883;
+ }
+ .ws_box_box_box{
+ width: 50%;
+ display: flex;
+ flex-direction: column;
+ padding-top: 40px;
+ padding-left: 40px;
+ }
+ .ws_box_box{
+ display: flex;
+ }
+ .ws_box{
+ display: flex;
+ flex-direction: column;
+ background-color: #F6F7F9;
+ border-radius:24px;
+ color:#333;
+ margin:30px;
+ }
+ @import "@/assets/init.scss";
+ .tbns_mr {
+ font-weight: bold;
+ font-size: 35px;
+ text-align:center;
+ background-color: #3A7FF6;
+ color: #fff;
+ width: 350px;
+ line-height: 100px;
+ height: 100px;
+ border-radius: 50px;
+ }
+ .tbns_mc {
+ font-weight: bold;
+ font-size: 35px;
+ text-align:center;
+ background-color: #DE5D57;
+ color: #fff;
+ width: 350px;
+ line-height: 100px;
+ height: 100px;
+ border-radius: 50px;
+ }
-#cryptos {
- :v-deep(.px-4) {
- padding-left: 30px !important;
- padding-right: 30px !important;
- }
+ .btns {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ // margin: 10px;
+ width: 100%;
+ }
- :v-deep(.py-4) {
- padding-top: 30px !important;
- padding-bottom: 30px !important;
- }
+ #cryptos {
+ :v-deep(.px-4) {
+ padding-left: 30px !important;
+ padding-right: 30px !important;
+ }
+
+ :v-deep(.py-4) {
+ padding-top: 30px !important;
+ padding-bottom: 30px !important;
+ }
- //.list-enter-active, .list-leave-active {
- // transition: all .5s;
- // transform: translateY(30px)
- //}
- //.list-enter, .list-leave-to
- // /* .list-leave-active for below version 2.1.8 */ {
- // transform: translateY(0)
- //}
- :deep(.action-sheet .van-popup) {
- height: 100%;
- width: 670px;
- }
+ //.list-enter-active, .list-leave-active {
+ // transition: all .5s;
+ // transform: translateY(30px)
+ //}
+ //.list-enter, .list-leave-to
+ // /* .list-leave-active for below version 2.1.8 */ {
+ // transform: translateY(0)
+ //}
+ :deep(.action-sheet .van-popup) {
+ height: 100%;
+ width: 770px;
+ }
- .no_touch {
- -webkit-user-select: none;
- user-select: none;
- -ms-user-select: none;
- -moz-user-select: none;
- }
+ .no_touch {
+ -webkit-user-select: none;
+ user-select: none;
+ -ms-user-select: none;
+ -moz-user-select: none;
+ }
- .list-enter-active,
- .list-leave-active {
- will-change: transform;
- transition: all 250ms;
- }
+ .list-enter-active,
+ .list-leave-active {
+ will-change: transform;
+ transition: all 250ms;
+ }
- .list-enter {
- opacity: 0;
- transform: translate3d(-100%, 0, 0);
- }
+ .list-enter {
+ opacity: 0;
+ transform: translate3d(-100%, 0, 0);
+ }
- .list-leave {
- opacity: 0;
- transform: translate3d(100%, 0, 0);
- }
+ .list-leave {
+ opacity: 0;
+ transform: translate3d(100%, 0, 0);
+ }
- .rounded-view {
- border-top-left-radius: 20px;
- border-top-right-radius: 20px;
- padding: 0 30px;
- box-sizing: border-box;
- }
+ .rounded-view {
+ border-top-left-radius: 20px;
+ border-top-right-radius: 20px;
+ padding: 0 30px;
+ box-sizing: border-box;
+ }
- .my-swipe {
- width: 100%;
- }
+ .my-swipe {
+ width: 100%;
+ }
- .active-line {
- position: relative;
- // padding-bottom: 18px;
- color: #fff;
- background-color: $btn_main;
- }
+ .active-line {
+ position: relative;
+ // padding-bottom: 18px;
+ color: #fff;
+ background-color: $btn_main;
+ }
- .active-line::after {
- content: '';
- position: absolute;
- left: 0px;
- bottom: 0;
- right: 0;
- width: 100%;
- height: 4px;
- background-color: $btn_main;
- }
+ .active-line::after {
+ content: '';
+ position: absolute;
+ left: 0px;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 4px;
+ background-color: $btn_main;
+ }
- .shadow-box {
- bottom: 0;
- }
-}
+ .shadow-box {
+ bottom: 0;
+ }
+ }
-.border-b {
- border-color: $border_color;
-}
+ .border-b {
+ border-color: $border_color;
+ }
-.k-select-box {
- position: relative;
- top: -30px;
- justify-content: flex-end;
- padding: 0 30px !important;
- align-items: center;
+ .k-select-box {
+ position: relative;
+ top: -30px;
+ justify-content: flex-end;
+ padding: 0 30px !important;
+ align-items: center;
- .select-box {
- width: 220px;
+ .select-box {
+ width: 220px;
- background: #f5f5f5;
+ background: #f5f5f5;
- margin-right: 20px;
- }
+ margin-right: 20px;
+ }
-}
+ }
-.z-100 {
- z-index: 100;
-}
+ .z-100 {
+ z-index: 100;
+ }
-.option-box {
- z-index: 99;
- background-color: #f5f5f5;
- box-shadow: 0px 0px 0.1875rem 0.1875rem #f5f5f5;
-}
+ .option-box {
+ z-index: 99;
+ background-color: #f5f5f5;
+ box-shadow: 0px 0px 0.1875rem 0.1875rem #f5f5f5;
+ }
-:deep(.van-action-sheet__content) {
- background: transparent;
+ :deep(.van-action-sheet__content) {
+ background: transparent;
- .van-action-sheet__item {
- background: transparent;
- color: $text_color;
- }
+ .van-action-sheet__item {
+ background: transparent;
+ color: $text_color;
+ }
-}
+ }
-:deep(.van-action-sheet__gap) {
- background: transparent;
-}
+ :deep(.van-action-sheet__gap) {
+ background: transparent;
+ }
-:deep(.van-action-sheet__cancel) {
- background: transparent;
-}
+ :deep(.van-action-sheet__cancel) {
+ background: transparent;
+ }
-.fixed-box {
- position: fixed;
- width: 100%;
- bottom: 0;
- left: 0;
- z-index: 1000;
- background: #141417;
-}
+ .fixed-box {
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ z-index: 1000;
+ background: #141417;
+ }
-.indicator-index-container {
- .indicator-index-box {
- padding: 24px;
- display: flex;
- // justify-content: space-between;
- align-items: center;
+ .indicator-index-container {
+ .indicator-index-box {
+ padding: 24px;
+ display: flex;
+ // justify-content: space-between;
+ align-items: center;
- ul {
- display: flex;
- flex-wrap: wrap;
+ ul {
+ display: flex;
+ flex-wrap: wrap;
- li {
- text-align: center;
- margin: 0 8px;
- padding: 0px 8px;
- font-size: 24px;
- border-radius: 8px;
- }
- }
+ li {
+ text-align: center;
+ margin: 0 8px;
+ padding: 0px 8px;
+ font-size: 24px;
+ border-radius: 8px;
+ }
+ }
- .flex-r {
- display: flex;
- justify-content: flex-end;
- width: 80px;
+ .flex-r {
+ display: flex;
+ justify-content: flex-end;
+ width: 80px;
- img {
- width: 12px;
- height: 16px;
- }
+ img {
+ width: 12px;
+ height: 16px;
+ }
- }
- }
+ }
+ }
- .active {
- background: $btn_main;
- }
-}
+ .active {
+ background: $btn_main;
+ }
+ }
-.indicator-index-box-second {
- ul {
- display: flex;
- border: 1px solid $border_color;
- align-items: center;
- border-right: none;
- }
+ .indicator-index-box-second {
+ ul {
+ display: flex;
+ border: 1px solid $border_color;
+ align-items: center;
+ border-right: none;
+ }
- li {
- flex: 1;
- height: 64px;
- line-height: 64px;
- text-align: center;
- font-size: 12px;
- border-right: 1px solid $border_color;
- }
-}
+ li {
+ flex: 1;
+ height: 64px;
+ line-height: 64px;
+ text-align: center;
+ font-size: 12px;
+ border-right: 1px solid $border_color;
+ }
+ }
-.kline-container {
- margin-top: 10px;
+ .kline-container {
+ margin-top: 10px;
- .order-book-container {
- padding: 100px 2px 0 6px;
- width: 130px;
- border-left: 1px solid $border_color;
- }
+ .order-book-container {
+ padding: 100px 2px 0 6px;
+ width: 130px;
+ border-left: 1px solid $border_color;
+ }
- .chart-index {
- flex: 1;
- min-width: 200px;
- }
+ .chart-index {
+ flex: 1;
+ min-width: 200px;
+ }
- .text-sm {
- position: relative;
- }
+ .text-sm {
+ position: relative;
+ }
- .select-div {
- width: 100px;
- position: absolute;
- top: 30px;
- left: 0;
- z-index: 100;
+ .select-div {
+ width: 100px;
+ position: absolute;
+ top: 30px;
+ left: 0;
+ z-index: 100;
- ul {
- box-shadow: 0px 3px 11px 0px rgb(0 0 0 / 10%);
+ ul {
+ box-shadow: 0px 3px 11px 0px rgb(0 0 0 / 10%);
- li {
- background: $mainbgWhiteColor;
- text-align: center;
- padding: 10px 0;
- font-size: 16px;
- }
+ li {
+ background: $mainbgWhiteColor;
+ text-align: center;
+ padding: 10px 0;
+ font-size: 16px;
+ }
- li:not(:last-child) {
- border-bottom: 1px solid $border-grey;
- }
- }
- }
+ li:not(:last-child) {
+ border-bottom: 1px solid $border-grey;
+ }
+ }
+ }
- .active {
- background: $btn_main !important;
- color: $text_color;
- }
-}
+ .active {
+ background: $btn_main !important;
+ color: $text_color;
+ }
+ }
-.diviLine{
- background-color: #f5f5f5;
-}
-.textColor2, .textColor{
- color: #fff;
-}
-</style>
+ .diviLine {
+ background-color: #f5f5f5;
+ }
+
+ .textColor2,
+ .textColor {
+ color: #fff;
+ }
+</style>
\ No newline at end of file
diff --git a/src/views/foreign/deliveryContract/FullWarehouse.vue b/src/views/foreign/deliveryContract/FullWarehouse.vue
index 6d3f260..5f70843 100644
--- a/src/views/foreign/deliveryContract/FullWarehouse.vue
+++ b/src/views/foreign/deliveryContract/FullWarehouse.vue
@@ -6,7 +6,7 @@
<div class="segmentation"></div>
<div class="Full-warehouse-list">
<div class="Delivery-time">
- <div class="Delivery-time-title">{{ $t('交割时间') }}</div>
+ <div class="Delivery-time-title">{{ $t('兑换时间') }}</div>
<div class="Delivery-time-list">
<div class="Delivery-time-item" v-for="(item,index) in DeliveryTime" :key="index" @click="DeliveryTime_index=index">
<div class="Delivery-time-item-time" :style="index==DeliveryTime_index?'background: #7F81FD;color: #ffffff;':''">{{ item.time }}</div>
@@ -77,7 +77,7 @@
export default {
data() {
return {
- title:this.$t('交割'),
+ title:this.$t('兑换'),
symbol:'BTC',
price:'22637.22',
range:'-3.81%',
diff --git a/src/views/foreign/deliveryContract/hold.vue b/src/views/foreign/deliveryContract/hold.vue
index bcb86d0..3ac2686 100644
--- a/src/views/foreign/deliveryContract/hold.vue
+++ b/src/views/foreign/deliveryContract/hold.vue
@@ -54,7 +54,7 @@
<div class="mt-10 textColor">{{ fomatTime(item.remain_time) }}</div>
</div>
<div class="flex-1">
- <div class="text-grey1 text-center">{{ $t('交割时间') }}</div>
+ <div class="text-grey1 text-center">{{ $t('兑换时间') }}</div>
<div class="mt-10 text-center textColor">{{ item.time_num + item.time_unit }}</div>
</div>
<div class="flex-1">
diff --git a/src/views/foreign/deliveryContract/index.vue b/src/views/foreign/deliveryContract/index.vue
index cec7f7a..5bd9dce 100644
--- a/src/views/foreign/deliveryContract/index.vue
+++ b/src/views/foreign/deliveryContract/index.vue
@@ -15,7 +15,7 @@
export default {
data() {
return {
- title:this.$t('交割'),
+ title:this.$t('兑换'),
symbol:'BTC',
price:'22637.22',
range:'-3.81%',
diff --git a/src/views/foreign/deliveryContract/position.vue b/src/views/foreign/deliveryContract/position.vue
index 6732b39..a576d93 100644
--- a/src/views/foreign/deliveryContract/position.vue
+++ b/src/views/foreign/deliveryContract/position.vue
@@ -18,7 +18,7 @@
{{ item.direction === 'buy' ? $t('开多') : $t('开空') }}</span>
</div>
<div class="position-div1">
- <span class="position-text1">{{ $t('交割时间') }}</span>
+ <span class="position-text1">{{ $t('兑换时间') }}</span>
<span class="position-text2 textColor">{{ item.time_num + item.time_unit }}</span>
</div>
<div class="position-div1">
diff --git a/src/views/foreign/foreignPerpetualContract/deliveryContract.vue b/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
index e04677b..4578a22 100644
--- a/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
+++ b/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
@@ -14,7 +14,7 @@
@click="goToTab('delivery')"
style="cursor:pointer;"
>
- <span>{{ t('交割') }}</span>
+ <span>{{ t('兑换') }}</span>
</span>
</dev>
</dev>
diff --git a/src/views/language/index.vue b/src/views/language/index.vue
index 1c83073..c0712bd 100644
--- a/src/views/language/index.vue
+++ b/src/views/language/index.vue
@@ -26,15 +26,15 @@
let lang = ref([
{ title: '繁体中文', key: 'CN', image: new URL('../../assets/image/lang/taiwan.png', import.meta.url) },
- { title: '简体中文', key: 'zh-CN', image: new URL('../../assets/image/lang/zh-CN.png', import.meta.url) },
+ // { title: '简体中文', key: 'zh-CN', image: new URL('../../assets/image/lang/zh-CN.png', import.meta.url) },
{ title: 'English', key: 'en', image: new URL('../../assets/image/lang/en-US.png', import.meta.url) },
{ title: '한국인', key: 'Korean', image: new URL('../../assets/image/lang/Korean.png', import.meta.url) },
{ title: 'やまと', key: 'Japanese', image: new URL('../../assets/image/lang/Japanese.png', import.meta.url) },
{ title: 'Deutsch', key: 'de', image: new URL('../../assets/image/lang/de.png', import.meta.url) }, //德语
{ title: 'Français', key: 'fr', image: new URL('../../assets/image/lang/French.png', import.meta.url) }, //法语
- { title: 'Tiếng Việt', key: 'vi', image: new URL('../../assets/image/lang/vi.png', import.meta.url) },//越南语
- { title: 'Italiano', key: 'Italy', image: new URL('../../assets/image/lang/Italy.png', import.meta.url) }, //意大利语
- { title: 'ไทย', key: 'th', image: new URL('../../assets/image/lang/Thai.png', import.meta.url) }, //泰语
+ // { title: 'Tiếng Việt', key: 'vi', image: new URL('../../assets/image/lang/vi.png', import.meta.url) },//越南语
+ // { title: 'Italiano', key: 'Italy', image: new URL('../../assets/image/lang/Italy.png', import.meta.url) }, //意大利语
+ // { title: 'ไทย', key: 'th', image: new URL('../../assets/image/lang/Thai.png', import.meta.url) }, //泰语
])
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 24d28ab..2189933 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -1,7 +1,7 @@
<template>
<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="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="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
$t('account')
@@ -14,8 +14,8 @@
}}
</div>
</div> -->
- <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
- :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon" />
+ <!-- <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')"
v-model="password" typeText="password" />
<div class="forget colorMain" @click="$router.push('/forget')">{{ $t('forgetPassword') }}</div>
@@ -24,7 +24,54 @@
<div class="noTips textColor">{{ $t('noAccount') }}<span class="colorMain" @click="$router.push('/register')">
{{ $t('goRegister') }}</span>
</div>
- <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list>
+ <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list> -->
+
+ <div class="h-100vh px-26 text-white"
+ style="background: url("/static/img/bg-login.png") 0% 0% / cover fixed;">
+ <div class="w-22 h-22 mt-80" @click="handleLanguageClick">
+ <div
+ style="background-image: url("/static/img/icon-language.png"); background-position: 0% 0%; background-size: 100% 100%;">
+ </div>
+ <img src="../../assets/img/icon-language.png" draggable="false">
+ </div>
+ <span class="text-40 font-bold mt-43 block">{{ $t('login') }}</span>
+ <span class="text-15 font-medium block mt-10">{{ $t('登陆后继续') }}</span>
+ <div class="mt-40">
+ <div class="bg-white p-14 rounded-10 flex items-center">
+ <div class="w-26 h-26">
+ <div
+ style="background-image: url("/static/tabbar/mine-select.png"); background-position: 0% 0%; background-size: 100% 100%;">
+ </div><span></span><img src="../../assets/img/mine-select.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="text" maxlength="140" v-model="username" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('请输入账号')">
+ </div>
+ </div>
+ </div>
+ <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <div
+ style="background-image: url("/static/img/icon-password.png"); background-position: 0% 0%; background-size: 100% 100%;">
+ </div><span></span><img src="../../assets/img/icon-password.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="password" v-model="password" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('密码')">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="py-17 text-center bg-black mt-120 rounded-10 text-19 font-700" @click="verifyLogin">{{
+ $t('login') }}</div>
+ <div class="mt-20 text-center">
+ <span>{{ $t('还没有账号') }}</span>
+ <span class="font-bold ml-5" @click="$router.push('/register')">{{ $t('去注册') }}</span>
+ </div>
+ <span class="block text-center mt-20" @click="$router.push('/forget')">{{ $t('修改密码') }}</span>
+ </div>
</div>
</template>
@@ -49,6 +96,10 @@
} else {
router.push(path)
}
+}
+
+const handleLanguageClick = () => {
+ router.push('/language')
}
let username = ref('')
@@ -157,11 +208,16 @@
</script>
<style lang="scss" scoped>
+@import '@/assets/css/deepseek_css_20250625_30ff932.css';
+.uni-input-input{
+ background-color: #fff;
+}
.login {
width: 100%;
- padding: 15px;
+ padding: 15px 0;
font-size: 13px;
box-sizing: border-box;
+ background: url('../../assets/img/bg-login.png') 0% 0% / cover fixed;
}
.top {
@@ -208,7 +264,8 @@
.noTips {
margin-top: 22px;
}
-.colorMain{
+
+.colorMain {
color: #1194F7;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/morePage/index.vue b/src/views/morePage/index.vue
index 6d51cf3..17ca6f7 100644
--- a/src/views/morePage/index.vue
+++ b/src/views/morePage/index.vue
@@ -112,7 +112,7 @@
foreign: [
{ name: t('外汇交易'), url: new URL('@/assets/theme/dark/image/nav/trade.png', import.meta.url), path: '/foreign/coinChart?symbol=USDSGD', isLogin: false },
{ name: t('外汇合约'), url: new URL('@/assets/theme/dark/image/nav/contract.png', import.meta.url), path: '/foreign/coinChart?symbol=USDSGD', isLogin: false },
- { name: t('外汇交割'), url: new URL('@/assets/theme/dark/image/nav/delivery1.png', import.meta.url), path: '/foreign/deliveryContract/USDSGD', isLogin: false },
+ { name: t('货币兑换'), url: new URL('@/assets/theme/dark/image/nav/delivery1.png', import.meta.url), path: '/foreign/deliveryContract/USDSGD', isLogin: false },
]
})
const searchList = ref([])
diff --git a/src/views/my/index.vue b/src/views/my/index.vue
index ea57bce..a7f58ad 100644
--- a/src/views/my/index.vue
+++ b/src/views/my/index.vue
@@ -177,7 +177,6 @@
{ icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('language'), path: '/language' },
// { icon: 'gold-coin-o', title: t('计价方式'), path: '/cryptos/exchangeRate' },
{ icon: new URL('../../assets/image/assets-center/aboutUs.png', import.meta.url), title: t('onLineService'), path: '/customerService' },
-
]
},
// {
diff --git a/src/views/my/newindex.vue b/src/views/my/newindex.vue
index 387eafe..9906e9b 100644
--- a/src/views/my/newindex.vue
+++ b/src/views/my/newindex.vue
@@ -90,9 +90,10 @@
// 账户详情选项数据
const accountItems = ref([
// { icon: 'icon-option.png', title: '貨幣訂單' , path: '/position/index'},
- { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('现货订单') , path: '/position/index'},
+ { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('hbdhdd') , path: '/cryptos/deliveryContractHistory?symbol=USDSGD&type=forex'},
+ { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('whjydd') , path: '/cryptos/tradeRecord/USDSGD/?type=forex'},
{ icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('账变记录') , path:'/cryptos/accountChange'},
- { icon: new URL('../../assets/img/icon-wallet.png', import.meta.url), title: t('银行卡'), path: '/payMentMethod/list'},
+ // { icon: new URL('../../assets/img/icon-wallet.png', import.meta.url), title: t('银行卡'), path: '/payMentMethod/list'},
{ icon: new URL('../../assets/img/icon-real.png', import.meta.url), title: t('实名认证'), status: status.value[userStore.userInfo.kyc_status] , path: '/certificationCenter'},
{ icon: new URL('../../assets/img/icon-small-language.png', import.meta.url), title: t('语言'), status: JSON.parse(localStorage.getItem('lang_tit')), path: '/language' },
{ icon: new URL('../../assets/img/icon-small-password.png', import.meta.url), title: t('修改密码'), path: '/changePassword'},
@@ -107,7 +108,7 @@
// { icon: 'icon-service.png', title: '專屬客服' },
{ icon: new URL('../../assets/img/icon-about.png', import.meta.url), title: t('关于我们'), path: '/aboutUs' },
// { icon: 'icon-logout.png', title: '下載 APP' },
- { icon: new URL('../../assets/img/icon-logout.png', import.meta.url), title: t('退出'), button: true }
+ { icon: new URL('../../assets/img/icon-logout.png', import.meta.url), title: t('退出'),path:'/aaa', button: true }
]);
const state = reactive({
@@ -136,7 +137,11 @@
router.push('/login')
return
}
- router.push(path)
+ if(path=='/aaa'){
+ loginOut()
+ }else{
+ router.push(path)
+ }
}
onMounted(() => {
if (userStore.userInfo && userStore.userInfo.token) {
diff --git a/src/views/news/explanation.vue b/src/views/news/explanation.vue
index c4f0e0d..285ed6b 100644
--- a/src/views/news/explanation.vue
+++ b/src/views/news/explanation.vue
@@ -2,29 +2,29 @@
<div>
<!-- 顶部导航栏 -->
<div class="status_bar fixed w-full top-0 left-0 h-44 flex items-center justify-between bg-white">
- <div class="i-material-symbols:arrow-back-ios-new-rounded text-black ml-13 text-18"></div>
+ <div class="i-material-symbols:arrow-back-ios-new-rounded text-black ml-13 text-18" @click="goBack"></div>
<div class="absolute top-0 left-0 w-full h-44 flex items-center justify-center z--1">
- <div class="text-19 font-medium">{{t('新手')}}指南</div>
+ <div class="text-19 font-medium">{{ t('新手') }} {{ $t('指南') }}</div>
</div>
</div>
-
+
<!-- 内容占位 -->
<div class="h-44"></div>
-
+
<!-- 内容区域 -->
- <div class="p-15 text-16" v-if="lang === 'zh-CN'">
+ <div class="p-15 text-16" v-if="lang === 'CN'">
<h2>產品詳情</h2>
<p>1 用戶可以隨時查看股票、數位貨幣、期貨價格,線上交易更安全。</p>
<p>2 提供使用者最專業的K線,深度分析市場行情,為使用者投資提供參考。</p>
<p>3 支援USDT、ETH、BTC等線上兌換,掌握最前沿幣幣交易行情。</p>
-
+
<h2>開戶須知</h2>
<p>1、開立真實帳戶(註冊會員)前需仔細閱讀、查看我司《交易規則》和《風險揭露與告知》。</p>
<p>2.客戶開戶要求為:年滿18歲、具有完全民事行為能力的公民。</p>
<p>3、客戶應保管好自己的數位錢包,用於相互轉賬,並妥善保管銀行密碼和交易密碼,定期修改密碼,不得向任何人透露。</p>
<p>4、自行註冊,遵守「一人一帳戶規則」。</p>
<p>5.成功儲值公眾號後即可開始交易。</p>
-
+
<h2>交易須知</h2>
<p>1、申請經費後,隨時買賣;</p>
<p>2、帳戶撮合後,即可當日交易;</p>
@@ -34,7 +34,7 @@
<p>方法二:根據您的需求點擊發布按鈕發布買入或賣出訂單進行快速成交,系統會為您快速匹配買賣用戶。</p>
<p>注意:買入訂單15分鐘後如未支付,系統將自動取消訂單,請及時支付。</p>
<p>若當日取消訂單3次以上,則當日無法再次成交,次日恢復交易權限</p>
-
+
<h2>溫馨提示</h2>
<p>投資衍生品具有重大風險,並不適合所有投資者。</p>
<p>您並不擁有基礎資產或其相關權益。</p>
@@ -51,17 +51,257 @@
<p>Android 是 Google Inc. 的註冊商標。</p>
<p>© 2024 CMC Markets</p>
</div>
+
+ <div class="p-15 text-16" v-else-if="lang === 'Korean'">
+ <div class="p-15">상품 상세정보<br> 1 사용자는 언제든지 주식, 암호화폐, 선물 가격을 확인할 수 있어 온라인 거래가 더욱 안전해집니다.
+ <br> 2 사용자에게 가장 전문적인 K-line, 시장 상황에 대한 심층 분석을 제공하고 사용자에게 투자에 대한 참조를 제공합니다.
+ <br> 3 USDT, ETH, BTC 등의 온라인 교환을 지원하고 최신 화폐 거래 상황을 파악합니다.
+ <br> <br> 계좌개설 안내<br> 1. 실계좌 개설(회원가입) 전, 당사의 "거래규칙" 및 "위험공개 및 통지"를 주의 깊게 읽고 확인하시기 바랍니다.
+ <br> 2. 고객 계좌 개설 요건은 18세 이상이며 민사행위 능력이 있는 시민입니다.
+ 고객은 자금 출처가 합법적인지 확인하기 위해 실제적이고 합법적인 신원으로 계좌를 개설해야 합니다.
+ <br> 3. 고객은 상호 이체를 위해 각자의 전자지갑을 보유하고, 은행 비밀번호 및 거래 비밀번호를 적절하게 관리하고, 비밀번호를 정기적으로 변경하며, 이를 누구에게도 공개해서는 안 됩니다.
+ <br> 4. "1인 1계정 원칙"을 준수하여 직접 등록하세요.
+ <br> 5. 공식 계정 충전이 완료되면 거래를 시작할 수 있습니다.
+ <br> <br> 매매 안내<br> 1. 펀드 신청 후 언제든지 매수, 매도 가능<br> 2. 계좌 매칭 후 당일 거래 가능<br> 3. 언제 자금이 손실 경고선에 가까워졌으므로 가능한 한 빨리 마진을
+ 보충해야 합니다. 제때에 포지션을 보충하지 않으면 위험 관리 시스템에 의해 해당 포지션이 청산될 수 있습니다. ;<br> 4. 거래 자금이 청산선보다 낮은 경우 당사는 귀하의 계정에 손절매 작업을
+ 구현할 권리가 있습니다.<br> 방법 1: 플랫폼의 구매 및 구매를 통해 구매하려는 주문을 사고 판매합니다. 판매 목록.
+ <br> 방법 2: 빠른 거래를 위해 게시 버튼을 클릭하여 필요에 따라 매수 또는 매도 주문을 게시하면 시스템이 신속하게 매수 및 매도 사용자를 매칭해 드립니다.
+ 참고: 구매 주문이 15분 후에도 결제되지 않으면 시스템이 자동으로 주문을 취소하므로 기한 내에 결제해 주시기 바랍니다.
+ 당일 주문을 3회 이상 취소할 경우 당일 다시 거래가 완료되지 않으며 다음날 거래권한이 복원됩니다.<br> <br> 주의사항<br> 파생상품 투자 상당한 위험을 수반하며 모든 투자자에게 적합하지
+ 않습니다.
+ 귀하는 기본 자산이나 관련 지분을 소유하지 않습니다.
+ 거래하기 전에 관련된 위험을 완전히 이해하기 위해 독립적인 조언자의 조언을 구하는 것이 좋습니다.
+ 이 웹사이트는 일반적인 정보만 제공하며 귀하의 구체적인 목표, 요구 사항 및 재정 상황은 고려하지 않습니다.
+ 따라서 파생상품을 거래하거나 계속 보유하기로 결정한 경우에는 개인 목표, 필요 및 재정 상황을 고려하여 이를 고려해야 합니다.
+ 당사 서비스 및 요금에 대한 모든 세부 사항은 금융 서비스 가이드에 포함되어 있으며, 위에 언급된 채널을 통해서도 확인할 수 있습니다.
+ 당사의 CFD 목표 시장 확인서에는 당사의 금융 상품이 대상으로 하는 그룹이 자세히 설명되어 있습니다.
+ 금융 상품을 거래하거나 계속 보유하기로 결정하기 전에 상품 공개 명세서, 정보 메모(CMC Pro 사용자용) 및 기타 관련 문서를 반드시 읽어보시기 바랍니다.
+ 이 모든 문서는 www.Thinkmarkets.info에서 보실 수 있습니다.
+ CMC Markets Asia Pacific Pty Ltd(ACN 100 058 213), AFSL No. 238054, CFD 발행자.
+ <br> Apple, iPad 및 iPhone은 미국 및 기타 국가에서 Apple Inc.의 등록 상표입니다.
+ App Store는 Apple Inc.의 서비스 상표입니다.
+ Android는 Google Inc.의 등록 상표입니다.
+ <br> © 2024 CMC 시장
+ </div>
+ </div>
+
+ <div class="p-15 text-16" v-else-if="lang === 'Japanese'">
+ <div class="p-15">商品詳細<br> 1 株式、デジタル通貨、先物などの価格をいつでも確認でき、オンライン取引がより安全になります。
+ <br> 2 最も専門的な K ラインの市況の詳細な分析をユーザーに提供し、投資の参考情報をユーザーに提供します。
+ <br> 3 USDT、ETH、BTCなどのオンライン取引をサポートし、最新の通貨取引状況を把握します。
+ <br> <br> 口座開設手順<br> 1. リアル口座開設(会員登録)の前に、当社の「取引ルール」および「リスク開示と通知」をよくお読みいただき、ご確認ください。
+ <br> 2. 顧客のアカウント開設要件は次のとおりです: 18 歳以上で、市民活動の完全な能力を備えた国民。
+ 顧客は、資金源が合法であることを確認するために、実際の法的な身元を使用して口座を開設する必要があります。
+ <br> 3. 顧客は相互送金用に自分のデジタルウォレットを保持し、銀行パスワードと取引パスワードを適切に保管し、パスワードを定期的に変更し、他人に開示してはなりません。
+ <br> 4. ご自身で登録し、「1 人 1 アカウントのルール」を遵守してください。
+ <br> 5. 公式アカウントに正常にチャージされた後、取引を開始できます。
+ <br> <br> 取引手順<br> 1. 資金申請後、いつでも売買できます。<br> 2. 口座照合後、同日取引可能です。<br> 3.
+ いつ資金は強力な損失警告ラインに近づいています。できるだけ早く証拠金を補充する必要があります。ポジションを期限内に補充しないと、リスク管理システムによってポジションが強制的に清算される可能性があります。 ;<br> 4.
+ 取引資金が清算ラインを下回る場合、当社はお客様のアカウントにストップロス操作を実施する権利を有します。<br> 方法 1: プラットフォームの購入および購入を通じて購入したい注文を売買します。販売リスト。
+ <br> 方法 2: 迅速な取引のニーズに応じて発行ボタンをクリックして買い注文または売り注文を発行すると、システムがすぐに売り買いユーザーをマッチングします。
+ 注: 注文書が 15 分経っても支払われない場合、システムは自動的に注文をキャンセルしますので、時間までにお支払いください。
+ 同日に3回以上注文がキャンセルされた場合、その日のうちに再度取引は完了せず、翌日に取引権限が回復されます<br> <br> 暖かい注意事項<br>
+ デリバティブへの投資重大なリスクを伴い、すべての投資家に適しているわけではありません。
+ あなたは原資産またはその関連利益を所有していません。
+ 取引前に関連するリスクを十分に理解するために、独立したアドバイザーのアドバイスを求めることをお勧めします。
+ このウェブサイトは一般的な情報のみを提供しており、お客様の特定の目的、ニーズ、財務状況は考慮されていません。
+ したがって、デリバティブの取引や保有を継続することを決定する場合は、個人の目的、ニーズ、財務状況を考慮して検討する必要があります。
+ 当社のサービスおよび料金の詳細はすべて当社の金融サービス ガイドに記載されており、上記のチャネルからも入手できます。
+ 当社の CFD ターゲット市場確認書には、当社の金融商品が対象としているグループの詳細が記載されています。
+ 金融商品の取引または保有の継続を決定する前に、当社の商品開示声明、情報覚書(CMC Pro ユーザー向け)およびその他の関連文書を必ずお読みください。
+ これらのドキュメントはすべて www.Thinkmarkets.info で入手できます。
+ CMC Markets Asia Pacific Pty Ltd (ACN 100 058 213)、AFSL No. 238054、CFD 発行者。
+ <br> Apple、iPad、iPhone は、米国およびその他の国における Apple Inc. の登録商標です。
+ App StoreはApple Inc.のサービスマークです。
+ AndroidはGoogle Inc.の登録商標です。
+ <br> © 2024 CMC マーケット
+ </div>
+ </div>
+
+ <div class="p-15 text-16" v-else-if="lang === 'de'">
+
+ <div class="p-15">Produktdetails<br> 1 Benutzer können jederzeit die Preise von Aktien, digitalen Währungen und
+ Futures überprüfen und so Online-Transaktionen sicherer machen.
+ <br> 2 Bieten Sie Benutzern die professionellste K-Linie, eine eingehende Analyse der Marktbedingungen und
+ stellen Sie Benutzern eine Referenz für Investitionen zur Verfügung.
+ <br> 3 Unterstützen Sie den Online-Austausch von USDT, ETH, BTC usw. und informieren Sie sich über die neuesten
+ Devisenhandelsbedingungen.
+ <br> <br> Anweisungen zur Kontoeröffnung<br> 1. Bevor Sie ein echtes Konto eröffnen (sich als Mitglied
+ registrieren), müssen Sie unsere „Handelsregeln“ und „Risikooffenlegung und -benachrichtigung“ sorgfältig lesen
+ und prüfen.
+ <br> 2. Voraussetzungen für die Eröffnung eines Kundenkontos sind Bürger, die über 18 Jahre alt und voll
+ geschäftsfähig sind.
+ Kunden müssen ein Konto mit einer echten und legalen Identität eröffnen, um sicherzustellen, dass die Geldquelle
+ legal ist.
+ <br> 3. Kunden sollten ihre eigenen digitalen Geldbörsen für gegenseitige Überweisungen aufbewahren,
+ Bankpasswörter und Transaktionspasswörter ordnungsgemäß aufbewahren, Passwörter regelmäßig ändern und dürfen
+ diese niemandem preisgeben.
+ <br> 4. Registrieren Sie sich selbst und halten Sie sich an die „Eine Person, ein Konto“-Regel.
+ <br> 5. Nach erfolgreicher Aufladung des offiziellen Kontos können Sie mit dem Handel beginnen.
+ <br> <br> Handelsanweisungen<br> 1. Nach der Beantragung von Mitteln können Sie jederzeit kaufen und
+ verkaufen;<br> 2. Nachdem das Konto abgeglichen wurde, können Sie am selben Tag handeln;<br> 3. Wann Die Mittel
+ befinden sich in der Nähe der starken Verlustwarnlinie. Sie müssen dies so schnell wie möglich tun. Wenn Sie die
+ Position nicht rechtzeitig auffüllen, kann das Risikokontrollsystem die Liquidation der Position erzwingen ;<br>
+ 4. Wenn die Handelsmittel unter der Liquidationslinie liegen, haben wir das Recht, Stop-Loss-Operationen auf
+ Ihrem Konto durchzuführen;<br> Methode 1: Kaufen und verkaufen Sie die Aufträge, die Sie kaufen möchten, über
+ die Kauf- und Verkaufsfunktionen der Plattform Verkaufsliste.
+ <br> Methode 2: Klicken Sie auf die Schaltfläche „Veröffentlichen“, um einen Kauf- oder Verkaufsauftrag
+ entsprechend Ihren Anforderungen für eine schnelle Transaktion zu veröffentlichen, und das System wird die
+ kaufenden und verkaufenden Benutzer schnell für Sie zusammenbringen.
+ Hinweis: Wenn die Bestellung nicht innerhalb von 15 Minuten bezahlt wird, storniert das System die Bestellung
+ automatisch. Bitte zahlen Sie rechtzeitig.
+ Wenn der Auftrag mehr als dreimal am selben Tag storniert wird, wird die Transaktion am selben Tag nicht erneut
+ abgeschlossen und die Handelsberechtigung wird am nächsten Tag wiederhergestellt<br> <br> Herzliche
+ Erinnerung<br> In Derivate investieren birgt erhebliche Risiken und ist nicht für alle Anleger geeignet.
+ Sie sind nicht Eigentümer der zugrunde liegenden Vermögenswerte oder der damit verbundenen Interessen.
+ Wir empfehlen Ihnen, vor dem Handel den Rat eines unabhängigen Beraters einzuholen, um sicherzustellen, dass Sie
+ die damit verbundenen Risiken vollständig verstehen.
+ Diese Website stellt lediglich allgemeine Informationen zur Verfügung und berücksichtigt nicht Ihre spezifischen
+ Ziele, Bedürfnisse und finanziellen Situation.
+ Wenn Sie sich daher für den Handel mit oder den weiteren Besitz von Derivaten entscheiden, sollten Sie dies im
+ Kontext Ihrer persönlichen Ziele, Bedürfnisse und finanziellen Situation berücksichtigen.
+ Alle Einzelheiten zu unseren Dienstleistungen und etwaigen Gebühren finden Sie in unserem Leitfaden für
+ Finanzdienstleistungen, der auch über die oben genannten Kanäle erhältlich ist.
+ In unserer CFD-Zielmarktbestätigung sind die Gruppen aufgeführt, für die unsere Finanzprodukte bestimmt sind.
+ Bitte lesen Sie unbedingt unsere Produktoffenlegungserklärung, das Informationsmemorandum (für CMC Pro-Benutzer)
+ und andere relevante Dokumente, bevor Sie sich entscheiden, mit einem Finanzprodukt zu handeln oder es weiterhin
+ zu halten.
+ Alle diese Dokumente sind unter www.Thinkmarkets.info verfügbar.
+ CMC Markets Asia Pacific Pty Ltd (ACN 100 058 213), AFSL-Nr. 238054, CFD-Emittent.
+ <br> Apple, iPad und iPhone sind eingetragene Marken von Apple Inc. in den Vereinigten Staaten und anderen
+ Ländern.
+ App Store ist eine Dienstleistungsmarke von Apple Inc.
+ Android ist eine eingetragene Marke von Google Inc.
+ <br> © 2024 CMC Markets
+ </div>
+ </div>
+
+ <div class="p-15 text-16" v-else-if="lang === 'fr'">
+ <div class="p-15">Détails du produit<br> 1 Les utilisateurs peuvent vérifier les prix des actions, des monnaies
+ numériques et des contrats à terme à tout moment, rendant ainsi les transactions en ligne plus sûres.
+ <br> 2 Fournir aux utilisateurs la ligne K la plus professionnelle, une analyse approfondie des conditions du
+ marché et fournir aux utilisateurs une référence pour l'investissement.
+ <br> 3 Soutenez l'échange en ligne d'USDT, ETH, BTC, etc., et saisissez les dernières conditions de trading de
+ devises.
+ <br> <br> Instructions d'ouverture de compte<br> 1. Avant d'ouvrir un compte réel (en vous inscrivant en tant
+ que membre), vous devez lire et vérifier attentivement nos « Règles de trading » et « Divulgation et
+ notification des risques ».
+ <br> 2. Les conditions d'ouverture d'un compte client sont les suivantes : citoyens âgés de plus de
+ 18 ans et possédant la pleine capacité de conduite civile.
+ Les clients doivent ouvrir un compte avec une identité réelle et légale pour s'assurer que la source des fonds
+ est légale.
+ <br> 3. Les clients doivent conserver leur propre portefeuille numérique pour les transferts mutuels, conserver
+ correctement les mots de passe bancaires et les mots de passe de transaction, changer régulièrement les mots de
+ passe et ne doivent les divulguer à personne.
+ <br> 4. Inscrivez-vous vous-même et respectez la règle « une personne, un compte ».
+ <br> 5. Après avoir rechargé avec succès le compte officiel, vous pouvez commencer à trader.
+ <br> <br> Instructions de trading<br> 1. Après avoir demandé des fonds, achetez et vendez à tout
+ moment ;<br> 2. Une fois le compte apparié, vous pouvez négocier le même jour ;<br> 3. Quand les fonds
+ sont proches de la ligne d'avertissement forte de perte, vous devez le faire le plus tôt possible. Reconstituer
+ la marge si vous ne reconstituez pas la position à temps, la position peut être contrainte à être liquidée par
+ le système de contrôle des risques ; ;<br> 4. Lorsque les fonds de trading sont inférieurs à la ligne de
+ liquidation, nous avons le droit de mettre en œuvre des opérations stop loss sur votre compte ;<br> Méthode 1 :
+ Achetez et vendez les ordres que vous souhaitez acheter via les buy and liste de vente.
+ <br> Méthode 2 : Cliquez sur le bouton de publication pour publier un ordre d'achat ou de vente en fonction
+ de vos besoins pour une transaction rapide, et le système fera rapidement correspondre les utilisateurs
+ acheteurs et vendeurs pour vous.
+ Remarque : si le bon de commande n'est pas payé après 15 minutes, le système annulera automatiquement la
+ commande, veuillez payer à temps.
+ Si l'ordre est annulé plus de 3 fois le même jour, la transaction ne sera pas complétée à nouveau le même jour
+ et l'autorité de négociation sera rétablie le lendemain<br> <br> Rappel chaleureux<br> Investir dans des
+ produits dérivés comporte des risques importants et ne convient pas à tous les investisseurs.
+ Vous ne possédez pas les actifs sous-jacents ni les intérêts qui y sont associés.
+ Nous vous recommandons de demander l'avis d'un conseiller indépendant pour vous assurer que vous comprenez
+ parfaitement les risques encourus avant de négocier.
+ Ce site Web fournit uniquement des informations générales et ne prend pas en compte vos objectifs spécifiques,
+ vos besoins et votre situation financière.
+ Par conséquent, lorsque vous décidez de négocier ou de continuer à détenir des produits dérivés, vous devez le
+ considérer dans le contexte de vos objectifs personnels, de vos besoins et de votre situation financière.
+ Tous les détails de nos services et tous les frais sont contenus dans notre Guide des services financiers, qui
+ est également disponible via les canaux mentionnés ci-dessus.
+ Notre confirmation du marché cible des CFD détaille les groupes auxquels nos produits financiers sont destinés.
+ Assurez-vous de lire notre déclaration de divulgation du produit, notre mémorandum d'information (pour les
+ utilisateurs de CMC Pro) et d'autres documents pertinents avant de décider de négocier ou de continuer à détenir
+ un produit financier.
+ Tous ces documents sont disponibles sur www.Thinkmarkets.info.
+ CMC Markets Asia Pacific Pty Ltd (ACN 100 058 213), AFSL n° 238054, émetteur de CFD.
+ <br> Apple, iPad et iPhone sont des marques déposées d'Apple Inc. aux États-Unis et dans d'autres pays.
+ App Store est une marque de service d'Apple Inc.
+ Android est une marque déposée de Google Inc.
+ <br> © 2024 CMC Marchés
+ </div>
+
+ </div>
+
+ <div class="p-15 text-16" v-else>
+ <div class="p-15">Product Details
+ <br> 1 Users can check the prices of stocks, digital currencies, and futures at
+ any time, making online transactions safer.
+ <br> 2 Provide users with the most professional K-line, in-depth analysis of market conditions, and provide
+ users with a reference for investment.
+ <br> 3 Support online exchange of USDT, ETH, BTC, etc., and grasp the latest currency trading conditions.
+ <br> <br> Account Opening Instructions<br> 1. Before opening a real account (registering as a member), you must
+ carefully read and check our "Trading Rules" and "Risk Disclosure and Notification".
+ <br> 2. Customer account opening requirements are: citizens who are over 18 years old and have full capacity for
+ civil conduct.
+ Customers must open an account with a real and legal identity to ensure that the source of funds is legal.
+ <br> 3. Customers should keep their own digital wallets for mutual transfers, keep bank passwords and
+ transaction passwords properly, change passwords regularly, and must not disclose them to anyone.
+ <br> 4. Register by yourself and abide by the "one person, one account rule".
+ <br> 5. After successfully recharging the official account, you can start trading.
+ <br> <br> Trading Instructions<br> 1. After applying for funds, buy and sell at any time;<br> 2. After the
+ account is matched, you can trade on the same day;<br> 3. When the funds are close to the strong warning line of
+ loss, you need to do it as soon as possible
+ Make up the margin; if you do not make up the position in time, the position may be forced to be liquidated by
+ the risk control system;<br> 4. When the trading funds are lower than the liquidation line, we have the right to
+ implement stop loss operations on your account;<br> Method 1:
+ Buy and sell the orders you want to buy through the platform's buy and sell list.
+ <br> Method 2: Click the publish button to publish a buy or sell order according to your needs for quick
+ transaction, and the system will quickly match the buying and selling users for you.
+ Note: If the purchase order is not paid after 15 minutes, the system will automatically cancel the order, please
+ pay in time.
+ If the order is canceled more than 3 times on the same day, the transaction will not be completed again on the
+ same day, and the trading authority will be restored the next day<br> <br> Warm reminder<br> Investing in
+ derivatives carries significant risks and is not suitable for all investors.
+ You do not own the underlying assets or their related interests.
+ We recommend that you seek the advice of an independent adviser to ensure that you fully understand the risks
+ involved before trading.
+ This website provides general information only and does not take into account your specific objectives, needs
+ and financial situation.
+ Therefore, when you decide to trade or continue to hold any derivatives, you should consider it in the context
+ of your personal objectives, needs and financial situation.
+ All details of our services and any charges are contained in our Financial Services Guide, which is also
+ available through the channels mentioned above.
+ Our CFD Target Market Confirmation details the groups for which our financial products are intended.
+ Please be sure to read our Product Disclosure Statement, Information Memorandum (for CMC Pro users) and other
+ relevant documents before you decide to trade or continue to hold any financial product.
+ All of these documents are available at www.Thinkmarkets.info.
+ CMC Markets Asia Pacific Pty Ltd (ACN 100 058 213), AFSL No. 238054, CFD issuer.
+ <br> Apple, iPad and iPhone are registered trademarks of Apple Inc. in the United States and other countries.
+ App Store is a service mark of Apple Inc.
+ Android is a registered trademark of Google Inc.
+ <br> © 2024 CMC Markets
+ </div>
+ </div>
+
+
</div>
</template>
<script setup>
-import { ref, onMounted } from 'vue'
+import { ref, } from 'vue'
+import { getStorage } from '@/utils/index'
+import { useRouter } from "vue-router"
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
+const router = useRouter();
+const lang = ref(getStorage('lang'))
+const goBack = () => {
+ router.back()
+}
</script>
<style scoped>
/* 可以在这里添加样式 */
@import '@/assets/css/deepseek_css_20250625_30ff932.css';
-
</style>
\ No newline at end of file
diff --git a/src/views/news/index.vue b/src/views/news/index.vue
index b6ca307..593f7d3 100644
--- a/src/views/news/index.vue
+++ b/src/views/news/index.vue
@@ -39,15 +39,15 @@
<div class="font-bold block text-18">{{ item.name }}</div>
<div class="font-bold block text-20">{{ item.ask }}</div>
<div class="w-full h-50">
- <div id="DOGEUSDT" class="w-full h-full relative overflow-hidden"
- style="user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);margin: 0 10px;">
+ <div id="DOGEUSDT" class="w-full h-full relative overflow-hidden"
+ style="user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);margin: 0 10px;">
<!-- 添加进度条动画 -->
- <div class="absolute top-10 left-0 h-1 bg-blue-500 progress-bar-animation"
- :style="{width: '80%'}"></div>
+ <div class="absolute top-10 left-0 h-1 bg-blue-500 progress-bar-animation" :style="{ width: '80%' }">
+ </div>
</div>
</div>
<div class="flex justify-between">
- <div class="py-2 px-8 rounded-full text-13 font-medium bg-white">{{item.change_ratio_str}}</div>
+ <div class="py-2 px-8 rounded-full text-13 font-medium bg-white">{{ item.change_ratio }}</div>
<span class="text-18" :class="index % 2 === 1 ? 'c2c_color' : ''">→</span>
</div>
</div>
@@ -63,31 +63,32 @@
<div class="w-40 h-40 rounded-full flex items-center justify-center">
<img class="w-33 h-33" src="@/assets/a.jpg" draggable="false">
</div>
- <div class="text-center">{{t('理財')}}</div>
+ <div class="text-center">{{ t('理财') }}</div>
</div>
<div class="flex-1 flex flex-col items-center" @click="goToPage('/cryptos/trade/USDSGD')">
<div class="w-40 h-40 rounded-full flex items-center justify-center">
<img class="w-33 h-33" src="@/assets/c.jpg" draggable="false">
</div>
- <div class="text-center">{{t('外汇交易')}}</div>
+ <div class="text-center">{{ t('外汇交易') }}</div>
</div>
<div class="flex-1 flex flex-col items-center" @click="goToPage('/cryptos/perpetualContract/USDSGD?selectIndex=2')">
<div class="w-40 h-40 rounded-full flex items-center justify-center">
<img class="w-33 h-33" src="@/assets/c.jpg" draggable="false">
</div>
- <div class="text-center">{{t('外汇交割')}}</div>
+ <div class="text-center">{{ t('货币兑换') }}</div>
</div>
- <div class="flex-1 flex flex-col items-center" @click="copyInviteLink">
+ <!-- <div class="flex-1 flex flex-col items-center" @click="copyInviteLink">
<div class="w-40 h-40 rounded-full flex items-center justify-center">
<img class="w-33 h-33" src="@/assets/d.jpg" draggable="false">
</div>
- <div class="text-center">{{t('邀请好友')}}</div>
- </div>
+ <div class="text-center">{{ t('邀请好友') }}</div>
+ </div> -->
</div>
<!-- 新手指南部分 -->
- <div class="mt-20 mx-17 h-50 rounded-5 bg-#d8f0dd font-500 flex items-center justify-between text-16 px-15" @click="goToExplanation">
- <span>{{t('新手')}}</span>
+ <div class="mt-20 mx-17 h-50 rounded-5 bg-#d8f0dd font-500 flex items-center justify-between text-16 px-15"
+ @click="goToExplanation">
+ <span>{{ t('新手') }}</span>
<div class="text-20">→</div>
</div>
@@ -99,11 +100,11 @@
<div class="mt-20">
<div class="flex items-end justify-between px-17">
- <span class="block text-22 font-medium">{{t('news')}}</span>
+ <span class="block text-22 font-medium">{{ t('news') }}</span>
</div>
<div class="px-17 mt-10">
<!-- 新闻条目1 -->
- <div class="rounded-5 overflow-hidden mb-10" v-for="(t , i) in list" :key="t.dataId" >
+ <div class="rounded-5 overflow-hidden mb-10" v-for="(t, i) in list" :key="t.dataId">
<div class="bg-#f5f7f9 py-12 px-15 " @click="openOriginUrl(t.originUrl)">
<div class="flex" style="border-bottom: 1px solid rgb(209, 209, 209);">
<div class="text-12 h-70 flex-1 line3">{{ t.description }}</div>
@@ -112,7 +113,7 @@
draggable="false"> -->
</div>
<div class="mt-5 text-10 text-#8c8c8c flex justify-between">
- <span>{{t.createTime}}</span>
+ <span>{{ t.createTime }}</span>
<!-- <div>全球股市</div> -->
</div>
</div>
@@ -121,11 +122,11 @@
</div>
</div>
</template>
-
+
<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { _getInformationList } from '@/service/etf.api'
-import {_getHomeList} from '@/service/cryptos.api'
+import { _getHomeList } from '@/service/cryptos.api'
import { showToast } from 'vant'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
@@ -162,7 +163,14 @@
goToPage('/customerService')
}
const goToPage = (path) => {
- router.push(path)
+ if(path=='/mining'){
+ showToast({
+ message: 'Stay tuned',
+ position: 'bottom',
+ })
+ }else{
+ router.push(path)
+ }
}
const getInformationList = () => {
@@ -183,12 +191,12 @@
hotItems.value = data.slice(0, 3) // 取前3条数据
})
}
-
+
// 立即执行一次
fetchData()
-
+
intervalId.value = setInterval(fetchData, 1000)
-
+
onUnmounted(() => {
if (intervalId.value) {
clearInterval(intervalId.value)
@@ -225,7 +233,7 @@
<style lang="scss" scoped>
@import '@/assets/css/deepseek_css_20250625_30ff932.css';
-.line3{
+.line3 {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
@@ -247,7 +255,7 @@
// }
}
-.c2c_color{
+.c2c_color {
color: #fff;
}
</style>
\ No newline at end of file
diff --git a/src/views/optional/index.vue b/src/views/optional/index.vue
index 3628f0a..558d1cf 100644
--- a/src/views/optional/index.vue
+++ b/src/views/optional/index.vue
@@ -13,6 +13,9 @@
<div class="flex items-center rounded-14 bg-#3640f0 px-10 ml-10" @click="goTo('/cryptos/exchangePage')">
<div class="text-13 font-bold">{{ t('兑换') }}</div>
</div>
+ <div class="flex items-center rounded-14 bg-#3640f0 px-10 ml-10" @click="goTo('/cryptos/funds')">
+ <div class="text-13 font-bold">{{ t('资产') }}</div>
+ </div>
<div class="flex flex-1 justify-end">
<!-- <img src="@/assets/imgs/icon-order.png" class="w-14 h-15" draggable="false"> -->
</div>
diff --git a/src/views/register/index.vue b/src/views/register/index.vue
index 4d6f534..11cc756 100644
--- a/src/views/register/index.vue
+++ b/src/views/register/index.vue
@@ -1,8 +1,16 @@
<template>
- <div class="register">
- <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="register h-100vh">
+ <div class="status_bar fixed w-full top-0 left-0 h-50 flex items-center justify-between">
+ <div class="w-20 h-20 ml-13">
+ <img class="l_icon" src="../../assets/img/back.svg" @click="goBack" />
+ </div>
+ <div class="absolute top-0 left-0 w-full h-44 flex items-center justify-center z--1">
+ <div class="text-19 font-medium" style="color:#fff;">{{ t('register') }}</div>
+ </div>
+ </div>
+ <!-- <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="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
$t('account')
@@ -13,25 +21,26 @@
$t('phoneNum')
}}</div>
</div> -->
- <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
+ <!-- <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
:area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
<ExInput :label="$t('setPassword')" :placeholderText="$t('passwordTips')" v-model="password" typeText="password" />
<ExInput :label="$t('repassword')" :placeholderText="$t('surePassword')" v-model="repassword" typeText="password" />
<ExInput :label="$t('setSafeword')" :placeholderText="$t('safewordTips')" v-model="safeword" typeText="password"
- v-if="activeIndex === 1" />
- <div class="inputCom" v-if="activeIndex === 1">
+ v-if="activeIndex === 1" /> -->
+ <!-- <div class="inputCom" v-if="activeIndex === 1">
<p class="label textColor">{{ $t('验证码') }}</p>
<div class="iptbox inputBackground">
<input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')"
v-model="verifyCode">
<span v-if="type !== 3" @click="senCode">{{ $t('sendVerifyCode') }}
<template v-if="time">({{ time }})s</template>
- </span>
- </div>
- </div>
- <ExInput :label="$t('invitCode')" :placeholderText="$t('entryInvitCode')" v-model="invitCode" :clearBtn="false" />
- <div class="protocol textColor">
+</span>
+</div>
+</div> -->
+ <!-- <ExInput :label="$t('invitCode')" :placeholderText="$t('entryInvitCode')" v-model="invitCode"
+ :clearBtn="false" /> -->
+ <!-- <div class="protocol textColor">
<i @click="agreeProt">
<img v-show="agree" src="../../assets/image/login/prot2.png" alt="" />
<img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" />
@@ -39,18 +48,72 @@
{{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{
$t('serviceConf')
}}</span>
- </div>
- <van-button class="w-full" style="margin-top:10px;" type="primary" @click="register">{{ $t('register') }}
+ </div> -->
+ <!-- <van-button class="w-full" style="margin-top:10px;" type="primary" @click="register">{{ $t('register') }}
</van-button>
<div class="noTips textColor">{{ $t('hasAccount') }}<span class="colorMain" @click="router.push('/login')">
{{ $t('goLogin') }}</span>
+ </div> -->
+ <!-- <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list> -->
+
+ <!-- <Vcode :imgs="[img1, img2]" :show="show" @success="onSuccess" :canvasHeight="200" @fail="onFail"
+ @close="show = false;" sliderText='' :successText="$t('vertifyPass')" :failText="$t('vertifuFail')" /> -->
+
+ <!-- <div>{{ msg }}</div> -->
+
+ <div class="px-26 text-white"
+ style="background: url("/static/img/bg-login.png") 0% 0% / cover fixed;">
+ <span class="text-40 font-bold mt-80 block">{{ $t('register') }}</span>
+ <span class="text-15 font-medium block mt-10">{{ $t('立刻加入') }}</span>
+ <div class="mt-40">
+ <div class="bg-white p-14 rounded-10 flex items-center">
+ <div class="w-26 h-26">
+ <img src="../../assets/img/mine-select.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="text" maxlength="140" v-model="username" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('请输入账号')">
+ </div>
+ </div>
+ </div>
+ <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <img src="../../assets/img/icon-password.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="password" v-model="password" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('密码')">
+ </div>
+ </div>
+ </div>
+ <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <img src="../../assets/img/icon-password.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="password" v-model="repassword" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('密码')">
+ </div>
+ </div>
+ </div>
+ <!-- <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <img src="../../assets/img/icon-invite.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="" v-model="invitCode" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('invitCode')">
+ </div>
+ </div>
+ </div> -->
+ </div>
+ <div class="py-17 text-center bg-black mt-80 rounded-10 text-19 font-700" @click="register">{{
+ $t('register') }}</div>
</div>
- <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list>
-
- <Vcode :imgs="[img1, img2]" :show="show" @success="onSuccess" :canvasHeight="200" @fail="onFail"
- @close="show = false;" sliderText='' :successText="$t('vertifyPass')" :failText="$t('vertifuFail')" />
-
- <div>{{ msg }}</div>
</div>
</template>
@@ -165,6 +228,9 @@
controlChildRef.value.open();
}
+const goBack = () => {
+ router.back()
+}
const getName = (params) => {
icon.value = params.code;
dialCode.value = params.dialCode;
@@ -173,7 +239,7 @@
agree.value = !agree.value
}
const register = () => {
- console.log(activeIndex.value,'activeIndex.value')
+ console.log(activeIndex.value, 'activeIndex.value')
if (activeIndex.value == 0) {
if (username.value == '') {
showToast(t('entryAccount'));
@@ -198,7 +264,7 @@
return
}
} else if (activeIndex.value == 2) {
- if(!(/(^[1-9]\d*$)/.test(username.value))){
+ if (!(/(^[1-9]\d*$)/.test(username.value))) {
showToast(t('entryPhone'));
return
}
@@ -219,11 +285,12 @@
showToast(t('noSamePassword'));
return
}
- if (!agree.value) {
- showToast(t('agreeServiceCond'));
- return
- }
- show.value = true
+ // if (!agree.value) {
+ // showToast(t('agreeServiceCond'));
+ // return
+ // }
+ registerApi()
+ // show.value = true
}
const changeIndex = (index) => {
activeIndex.value = index;
@@ -278,6 +345,7 @@
store.state.user.userInfo = res
if (activeIndex.value == 0) {
router.push('/setFond')
+ // goBack()
} else {
router.push({ name: 'verify', query: { type: activeIndex.value, account: activeIndex.value == 1 ? username.value : `${dialCode.value}${username.value}` } })
}
@@ -289,6 +357,10 @@
</script>
<style lang="scss" scoped>
+@import '@/assets/css/deepseek_css_20250625_30ff932.css';
+.uni-input-input{
+ background-color: #fff;
+}
.activeBKClick {
&:active {
background: $tab_background;
@@ -306,8 +378,9 @@
.register {
width: 100%;
box-sizing: border-box;
- padding: 16px;
+ padding: 16px 0;
font-size: 13px;
+ background: url('../../assets/img/bg-login.png') 0% 0% / cover fixed;
}
.top {
@@ -392,4 +465,10 @@
color: $color_main;
}
}
+
+.l_icon {
+ background-image: url('../../assets/img/back.svg');
+ background-position: 0% 0%;
+ background-size: 100% 100%;
+}
</style>
diff --git a/src/views/register/setFond.vue b/src/views/register/setFond.vue
index 1e9e99c..ad34912 100644
--- a/src/views/register/setFond.vue
+++ b/src/views/register/setFond.vue
@@ -1,10 +1,13 @@
<template>
<div class="setFond">
<div class="header">
- <div class="flex items-center" @click="$router.go(-1)"><img
- src="../../assets/image/assets-center/left-arrow.png" alt="" class="leftReturn" /></div>
+ <div class="status_bar fixed w-full top-0 left-0 h-50 flex items-center justify-between">
+ <div class="w-20 h-20 ml-13">
+ <img class="l_icon" src="../../assets/img/back.svg" @click="$router.go(-1)" />
+ </div>
+ </div>
</div>
- <div class="content">
+ <!-- <div class="content">
<div class="title textColor">{{ $t('setFundPassword') }}</div>
<ExInput :label="$t('password')" :placeholderText="$t('funpasswordTips')" v-model="password"
typeText="password" />
@@ -12,6 +15,37 @@
typeText="password" />
<van-button class="w-full" style="margin-top:10px;" type="primary" @click="submitBind">{{ $t('sure') }}
</van-button>
+ </div> -->
+
+ <div class="px-26 text-white"
+ style="background: url("/static/img/bg-login.png") 0% 0% / cover fixed;">
+ <span class="text-40 font-bold mt-80 block">{{ $t('setFundPassword') }}</span>
+ <div class="mt-40">
+ <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <img src="../../assets/img/icon-password.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="password" v-model="password" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('funpasswordTips')">
+ </div>
+ </div>
+ </div>
+ <div class="mt-15 bg-white p-14 rounded-10 flex items-center">
+ <div class="w-22 h-22">
+ <img src="../../assets/img/icon-password.png" draggable="false">
+ </div>
+ <div class="ml-9 text-black flex-1">
+ <div class="uni-input-wrapper">
+ <input type="password" v-model="repassword" maxlength="140" step="" enterkeyhint="done"
+ class="uni-input-input" autocomplete="off" :placeholder="$t('surePassword')">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="py-17 text-center bg-black mt-80 rounded-10 text-19 font-700" @click="submitBind">{{
+ $t('sure') }}</div>
</div>
</div>
</template>
@@ -38,7 +72,7 @@
}).then((res) => {
// showToast(t('bindSuccess'));
console.log('sss')
- router.push('/identity')
+ router.push('/news')
}).catch((error) => {
showToast(t(error.msg));
});
@@ -58,11 +92,17 @@
</script>
<style lang="scss" scoped>
+@import '@/assets/css/deepseek_css_20250625_30ff932.css';
+.uni-input-input{
+ background-color: #fff;
+}
.setFond {
width: 100%;
+ height: 100vh;
box-sizing: border-box;
font-size: 13px;
padding: 0 16px;
+ background: url('../../assets/img/bg-login.png') 0% 0% / cover fixed;
}
.header {
diff --git a/src/views/trade/index.vue b/src/views/trade/index.vue
index 350b29d..bb6b584 100644
--- a/src/views/trade/index.vue
+++ b/src/views/trade/index.vue
@@ -463,7 +463,7 @@
<div class="symbol-list">
<div class="flex flex-col justify-center pt-50 pb-20 items-center" v-if="symbolList.length === 0">
<img src="@/assets/image/assets-center/no-data.png" alt="" class="no-data-img" />
- <p class="text-grey mt-10">{{ $t('暂无记录') }}123</p>
+ <p class="text-grey mt-10">{{ $t('暂无记录') }}</p>
</div>
<ul v-else>
<li class="symbol-list-item" v-for="item in symbolList" :key="item" @click="itemClickSecondOrFourth(item)">
diff --git a/yarn.lock b/yarn.lock
index 9560802..c7444f1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1128,9 +1128,9 @@
dependencies:
"is-arrayish" "^0.2.1"
-"esbuild-darwin-64@0.15.18":
- "integrity" "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg=="
- "resolved" "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz"
+"esbuild-windows-64@0.15.18":
+ "integrity" "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw=="
+ "resolved" "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz"
"version" "0.15.18"
"esbuild@^0.15.9":
@@ -1420,11 +1420,6 @@
"integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
"resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
"version" "1.0.0"
-
-"fsevents@~2.3.2":
- "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
- "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
- "version" "2.3.2"
"function-bind@^1.1.1":
"integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
--
Gitblit v1.9.3