From dce10d37ad35efe8ed1d39d6e5fcf7e4904381df Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Fri, 12 Jun 2026 13:19:53 +0800
Subject: [PATCH] 1
---
src/views/trade/components/OptionsContract.vue | 42 ++++++++++++++++-----
src/components/Transform/perpetual-order/index.vue | 36 +++++++++++++----
src/views/cryptos/PerpetualContract/index.vue | 18 ++++++++-
3 files changed, 75 insertions(+), 21 deletions(-)
diff --git a/src/components/Transform/perpetual-order/index.vue b/src/components/Transform/perpetual-order/index.vue
index e37b1bc..d6872ba 100644
--- a/src/components/Transform/perpetual-order/index.vue
+++ b/src/components/Transform/perpetual-order/index.vue
@@ -10,6 +10,8 @@
orderHold.length }})</span></div>
<div class="px-2 ml-12 py-2 flex items-center textColor1y text-28" @click="tabClick('2')"
:class="type == '2' ? 'active-line' : ''">{{ $t('当前委托') }}</div>
+ <div class="px-2 ml-12 py-2 flex items-center textColor1 text-28" @click="tabClick('5')"
+ :class="type == '5' ? 'active-line' : ''">{{ $t('历史仓位') }}</div>
</template>
<template v-else>
<div class="px-2 py-2 flex items-center textColor1 text-28" @click="tabClick('3')"
@@ -20,8 +22,8 @@
:class="type == '4' ? 'active-line' : ''">{{ $t('历史仓位') }}</div>
</template>
</div>
- <img src="../../../assets/image/public/record.png" alt="record-img" class="w-16 h-9 pr-8 record-img"
- @click="goHistory" />
+ <!-- <img src="../../../assets/image/public/record.png" alt="record-img" class="w-16 h-9 pr-8 record-img"
+ @click="goHistory" /> -->
</div>
<!-- 永续-->
<template v-if="topIndex / 1 === 1">
@@ -32,6 +34,11 @@
<!-- 持有仓位列表 -->
<div v-if="type == '2'">
<PerpetualEntrustList :list-data="orderCur" @recall="$emit('recall', $event)"></PerpetualEntrustList>
+ </div>
+ <!-- 历史仓位列表 -->
+ <div v-if="type == '5'">
+ <PerpetualHistoryPosition :list-data="perpetualHistroy" />
+ <div class="text-grey text-center py-72 text-30" v-if="perpetualHistroy.length == 0">{{ $t('您目前没有持仓') }}</div>
</div>
</template>
<!-- 交割-->
@@ -52,6 +59,7 @@
<script>
import PerpetualEntrustList from '../perpetual-entrust-list/index.vue';
import PerpetualPositionList from '../perpetual-position-list/index.vue';
+import PerpetualHistoryPosition from '../perpetual-history-position/index.vue';
import futrueHoldList from '../deliveryContract/hold.vue'
import futrueHistroyPosition from '../deliveryContract/position.vue'
import { mapGetters } from 'vuex'
@@ -60,7 +68,7 @@
name: "perpetualOrder",
data() {
return {
- type: '1', // 1:永续持有,2:永续当前,3:交割持有,4:交割历史
+ type: '1', // 1:永续持有,2:永续当前,5:永续历史,3:交割持有,4:交割历史
};
},
props: {
@@ -96,9 +104,19 @@
return []
}
},
+ perpetualHistroy: {
+ type: Array,
+ default() {
+ return []
+ }
+ },
price: {
type: [Number, String],
default: '0.00'
+ },
+ symbolType: {
+ type: String,
+ default: 'cryptos'
},
},
watch: {
@@ -147,17 +165,17 @@
if (type === '4') {
this.$emit('tab', 'fetchFutrueHistory')
}
+ if (type === '5') {
+ this.$emit('tab', 'fetchPerpetualHistory')
+ }
// this.$emit(type)
},
goHistory() {
if (this.userInfo.token) {
- let type = 'cryptos'
- if (this.$route.query.type) {
- type = this.$route.query.type
- }
+ const type = this.symbolType || 'cryptos'
const url = this.topIndex / 1 === 1 ? '/cryptos/perpetualHistory' : '/cryptos/deliveryContractHistory'
this.$router.push({
- path: url, query: { symbol: this.symbol, type: type }
+ path: url, query: { symbol: this.symbol, type }
});
} else {
this.$router.push('/login')
@@ -165,7 +183,7 @@
}
},
- components: { PerpetualEntrustList, PerpetualPositionList, futrueHistroyPosition, futrueHoldList },
+ components: { PerpetualEntrustList, PerpetualPositionList, PerpetualHistoryPosition, futrueHistroyPosition, futrueHoldList },
computed: {
...mapGetters('user', ['userInfo']),
},
diff --git a/src/views/cryptos/PerpetualContract/index.vue b/src/views/cryptos/PerpetualContract/index.vue
index a56b5b5..9b5855e 100644
--- a/src/views/cryptos/PerpetualContract/index.vue
+++ b/src/views/cryptos/PerpetualContract/index.vue
@@ -94,7 +94,7 @@
<!-- 委托/持仓-->
<PerpetualOrder class="pl-8 pr-8" :key="keyIndex + 'b'" :symbol="symbol" :order-cur="orderCur"
:order-hold="orderHold" :topIndex="selectIndex" :futrue-hold="futrueHold" :futrue-histroy="futrueHistroy"
- @tab="onTab" @recall="onRecall">
+ :perpetual-histroy="perpetualHistroy" :symbol-type="type" @tab="onTab" @recall="onRecall">
</PerpetualOrder>
</div>
</div>
@@ -180,7 +180,8 @@
<!-- 委托/持仓-->
<PerpetualOrder class="pl-8 pr-8" :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">
+ :futrue-histroy="futrueHistroy" :perpetual-histroy="perpetualHistroy" :symbol-type="type" @tab="onTab"
+ @recall="onRecall">
</PerpetualOrder>
</div>
</div>
@@ -304,6 +305,7 @@
bids: initArr, // 买单
orderCur: [], // 当前委托
orderHold: [], // 持有仓位
+ perpetualHistroy: [], // 永续历史
futrueHold: [], // 交割持仓
futrueHistroy: [], // 交割历史
sockets: {
@@ -656,6 +658,18 @@
// this.clearTimeout()
})
},
+ fetchPerpetualHistory(symbol) { // 永续历史仓位
+ if (this.userInfo.token) {
+ contractOrder({
+ symbol,
+ type: 'hisorders',
+ page_no: 1,
+ symbolType: this.type || 'cryptos'
+ }).then(data => {
+ this.perpetualHistroy = data || []
+ })
+ }
+ },
init(symbol) { // 初始化页面
this.symbol = symbol
this.fetchQoutes(symbol)
diff --git a/src/views/trade/components/OptionsContract.vue b/src/views/trade/components/OptionsContract.vue
index dc031cd..1df6498 100644
--- a/src/views/trade/components/OptionsContract.vue
+++ b/src/views/trade/components/OptionsContract.vue
@@ -43,7 +43,7 @@
<div class="line"></div>
<PerpetualOrder class="pl-8 pr-8" :key="keyIndex + 'b'" :symbol="symbol" :order-cur="orderCur"
:order-hold="orderHold" :topIndex="selectIndex" :futrue-hold="futrueHold" :futrue-histroy="futrueHistroy"
- @tab="onTab" @recall="onRecall" />
+ :perpetual-histroy="perpetualHistroy" :symbol-type="type" @tab="onTab" @recall="onRecall" />
</div>
</div>
@@ -85,8 +85,8 @@
<div class="px-2 ml-12 py-2 flex items-center textColor1 text-28" @click="onDeliveryTab('history')"
:class="deliveryPositionTab === 'history' ? 'active-line' : ''">{{ $t('历史仓位') }}</div>
</div>
- <img src="@/assets/image/public/record.png" alt="record-img" class="w-16 h-9 pr-8 record-img"
- @click="goDeliveryHistory" />
+ <!-- <img src="@/assets/image/public/record.png" alt="record-img" class="w-16 h-9 pr-8 record-img"
+ @click="goDeliveryHistory" /> -->
</div>
<template v-if="deliveryPositionTab === 'hold'">
<futrue-hold-list :price="price" :list-data="futrueHold" />
@@ -216,6 +216,7 @@
bids: initDepthArr(),
orderCur: [],
orderHold: [],
+ perpetualHistroy: [],
futrueHold: [],
futrueHistroy: [],
curTab: 'fetchOrderListHold',
@@ -290,6 +291,8 @@
symbol(val) {
if (val && val !== this._lastSymbol) {
this._lastSymbol = val
+ this.futrueHold = []
+ this.futrueHistroy = []
this.closeSocket()
this.init(val)
}
@@ -483,23 +486,30 @@
fetchFutrueHoldList(symbol) {
if (!this.userInfo || !this.userInfo.token) return
const symbolType = this.type || 'cryptos'
- symbol = ''
- _futrueOrderList(symbol, 'orders', 1, symbolType).then(data => {
+ const querySymbol = symbol || this.symbol || ''
+ _futrueOrderList(querySymbol, 'orders', 1, symbolType).then(data => {
this.futrueHold = (data || []).sort(this.sortData)
})
this.clearTimer()
this.timer = setInterval(() => {
- symbol = ''
- _futrueOrderList(symbol, 'orders', 1, symbolType).then(data => {
+ _futrueOrderList(querySymbol, 'orders', 1, symbolType).then(data => {
this.futrueHold = (data || []).sort(this.sortData)
})
}, 1000)
},
fetchFutrueHistory(symbol) {
const symbolType = this.type || 'cryptos'
- symbol = ''
- _futrueOrderList(symbol, 'hisorders', 1, symbolType).then(data => {
+ const querySymbol = symbol || this.symbol || ''
+ _futrueOrderList(querySymbol, 'hisorders', 1, symbolType).then(data => {
this.futrueHistroy = data || []
+ })
+ },
+ fetchPerpetualHistory(symbol) {
+ if (!this.userInfo || !this.userInfo.token) return
+ symbol = ''
+ const symbolType = this.type || 'cryptos'
+ contractOrder({ symbol, type: 'hisorders', page_no: 1, symbolType }).then(data => {
+ this.perpetualHistroy = data || []
})
},
init(symbol) {
@@ -508,10 +518,22 @@
this.fetchDeepData(symbol)
this.initParam(symbol)
this.clearTimer()
+ if ((this.selectIndex ?? 1) === 2) {
+ if (this.deliveryPositionTab === 'history') {
+ this.curTab = 'fetchFutrueHistory'
+ this.fetchFutrueHistory(symbol)
+ } else {
+ this.curTab = 'fetchFutrueHoldList'
+ this.fetchFutrueHoldList(symbol)
+ }
+ return
+ }
if (this.curTab === 'fetchOrderListHold') {
this.fetchOrderListHold(symbol)
+ } else if (typeof this[this.curTab] === 'function') {
+ this[this.curTab](symbol)
} else {
- this.fetchFutrueHoldList(symbol)
+ this.fetchOrderListHold(symbol)
}
},
closeSocket() {
--
Gitblit v1.9.3