From 1eb842d51e2297e8fedaf0b22a1df96e967fb5fa Mon Sep 17 00:00:00 2001
From: lxf <1371462558@qq.com>
Date: Sun, 06 Jul 2025 11:38:26 +0800
Subject: [PATCH] style
---
src/components/perpetual-open/index.vue | 186 ++++++++++++++++++++++++++++++++++++++--------
1 files changed, 152 insertions(+), 34 deletions(-)
diff --git a/src/components/perpetual-open/index.vue b/src/components/perpetual-open/index.vue
index df39b1e..17c6575 100644
--- a/src/components/perpetual-open/index.vue
+++ b/src/components/perpetual-open/index.vue
@@ -121,7 +121,7 @@
/>
<span class="ml-20">USDT</span>
</div>
- <div
+ <!-- <div
class="h-76 lh-76 inputBackground mb-30 flex pr-20 justify-center rounded-lg textColor"
v-if="selectIndex == 1"
>
@@ -142,7 +142,7 @@
v-model="form.stop_price_loss"
/>
<span class="font-22 font-400 textColor">{{ $t("止损") }}</span>
- </div>
+ </div> -->
<div
class="w-440 flex items-center inputBackground h-76 lh-76 rounded-lg"
>
@@ -161,7 +161,7 @@
<input
:placeholder="
selectIndex == 1
- ? $t('张数')
+ ? $t('手数')
: $t('最少') + initFutrue && initFutrue.para
? $t('最小金额') + initFutrue.para[paraIndex].buy_min
: ''
@@ -191,12 +191,17 @@
</div>
<template v-if="selectIndex == 1">
<div class="mt-40 mb-30 w-full flex justify-between items-center">
- <span class="font-22 font-400 text-grey">{{
- $t("可开张数")
- }}</span>
+ <span class="font-22 font-400 text-grey">
+ <!-- {{ $t("可开") }}{{ $t("手数") }} -->
+ {{ $t("可用余额") }}
+ <!-- {{initFutrue.amount / (initData.amount + 0.0375) * form.lever_rate }} // -->
+ </span>
+ <!-- {{ form.lever_rate }} -->
<span class="font-22 font-400 textColor">
- {{ initData.volume }}
- {{ $t("张") }}
+ <!-- 余额 -->
+ {{ initFutrue.amount }} USDT
+ <!-- {{ maxItems }} -->
+ <!-- {{ $t("手数") }} -->
</span>
</div>
<!-- <vue-slider v-bind="options" v-model="form.amount"></vue-slider> -->
@@ -214,10 +219,10 @@
<span class="flex-1 text-right">75%</span>
<span class="flex-1 text-right">100%</span>
</div> -->
- <!-- 张数输入 -->
+ <!-- 张数 滑块 -->
<amount-slider
ref="sliderRef"
- :maxAmount="getVolumnByLever()"
+ :maxAmount="maxItems"
@getAmount="getAmount"
></amount-slider>
</template>
@@ -225,25 +230,25 @@
<div class="flex justify-between mt-30">
<div class="text-grey">{{ $t("合约金额") }}</div>
<div class="textColor">
- {{ initData.amount * (form.amount / 1) * form.lever_rate }} USDT
+ {{ (form.amount * initData.amount).toFixed(4) }}
+ USDT
</div>
</div>
<div class="flex justify-between mt-30">
<div class="text-grey">{{ $t("保证金") }}</div>
<div class="textColor">
- {{ (initData.amount * (form.amount / 1)) | nan }} USDT
+ {{ margin.toFixed(4) }}
+ USDT
</div>
</div>
<div class="flex justify-between mt-30">
<div class="text-grey">{{ $t("建仓手续费") }}</div>
- <div class="textColor">
- {{
- userInfo.perpetual_contracts_status === "1"
- ? initData.fee * (form.amount / 1)
- : (initData.fee * (form.amount / 1) * form.lever_rate) | nan
- }}
- USDT
- </div>
+ <!-- {{
+ userInfo.perpetual_contracts_status === "1"
+ ? initData.fee * (form.amount / 1)
+ : (initData.fee * (form.amount / 1) * form.lever_rate) | nan
+ }} -->
+ <div class="textColor">{{ fee.toFixed(4) }} USDT</div>
</div>
</template>
<div
@@ -684,8 +689,20 @@
// 倍数
obj.lever = [
{
- id: 1,
- lever_rate: 1,
+ id: 25,
+ lever_rate: 25,
+ },
+ {
+ id: 50,
+ lever_rate: 50,
+ },
+ {
+ id: 100,
+ lever_rate: 100,
+ },
+ {
+ id: 200,
+ lever_rate: 200,
},
];
}
@@ -696,6 +713,66 @@
coudBuyVolume() {
// 可买数量
return Math.floor(this.initOpen.volume / 1 / this.form.lever_rate);
+ },
+ // 每份保证金
+ perItemMargin() {
+ console.log(
+ this.initData,
+ ": 每份保证金",
+ this.initData.amount / this.form.lever_rate
+ );
+ return this.initData.amount / this.form.lever_rate;
+ },
+ // 每份手续费(基于保证金)
+ perItemFee() {
+ const rateMap = {
+ 25: 0.0375,
+ 50: 0.075,
+ 100: 0.15,
+ 200: 0.3,
+ };
+ const rate = rateMap[this.form.lever_rate];
+ return this.perItemMargin * rate;
+ },
+ // 每份总支出
+ perItemTotalCost() {
+ return this.perItemMargin + this.perItemFee;
+ },
+ // 最大可购买整数份数
+ maxItems() {
+ console.log(this.initFutrue.amount, ": initFutrue.amount");
+ if (this.perItemTotalCost <= 0) return 0;
+ return Math.floor(this.initFutrue.amount / this.perItemTotalCost);
+ },
+ // 实际交易金额
+ actualTradeValue() {
+ return this.form.amount * this.initData.amount;
+ },
+ // 总保证金
+ margin() {
+ return this.form.amount * this.perItemMargin;
+ },
+ // 总手续费
+ fee() {
+ return this.form.amount * this.perItemFee;
+ },
+ // 总支出
+ totalExpenditure() {
+ return this.margin + this.fee;
+ },
+ calculatedFee() {
+ const rateMap = {
+ 25: 0.0375,
+ 50: 0.075,
+ 100: 0.15,
+ 200: 0.3,
+ };
+ const rate = rateMap[this.form.lever_rate];
+ console.log(this.initData.amount, ": initData.amount");
+ return (
+ (this.form.amount * this.initData.amount * rate) / this.form.lever_rate
+ );
+ // : this.initData.amount * (this.form.amount / 1) * rate;
},
},
filters: {
@@ -723,21 +800,21 @@
title: this.$t("市价"),
type: "1",
},
- {
- title: this.$t("限价"),
- type: "2",
- },
+ // {
+ // title: this.$t("限价"),
+ // type: "2",
+ // },
],
form: {
symbol: "", // 币种
session_token: "",
direction: "buy", // 买or卖
price_type: "opponent", // 市价or限价
- lever_rate: 1, // 杠杆
+ lever_rate: 200, // 杠杆
stop_price_profit: "",
stop_price_loss: "",
price: "",
- amount: "", // 数量
+ amount: 0, // 数量
para_id: "", // 交割周琦id
},
focus: false,
@@ -781,10 +858,10 @@
title: this.$t("市价"),
type: "1",
},
- {
- title: this.$t("限价"),
- type: "2",
- },
+ // {
+ // title: this.$t("限价"),
+ // type: "2",
+ // },
];
this.title = this.selectData[0].title;
this.type = this.selectData[0].type;
@@ -793,12 +870,51 @@
methods: {
//获取张数
getAmount(val) {
- this.form.amount = val;
+ console.log(val, "获取张数");
+ this.form.amount = val || 0;
+ // if(this.form.lever_rate==25){
+ // this.form.amount = Math.floor((this.initFutrue.amount-(this.initFutrue.amount * 0.0375))/this.initData.amount)
+ // }else if(this.form.lever_rate==50){
+ // this.form.amount = Math.floor((this.initFutrue.amount-(this.initFutrue.amount * 0.0375))/this.initData.amount)
+ // }else if(this.form.lever_rate==100){
+ // this.form.amount = Math.floor((this.initFutrue.amount-(this.initFutrue.amount * 0.15))/this.initData.amount)
+ // }else{
+ // this.form.amount = Math.floor((this.initFutrue.amount-(this.initFutrue.amount * 0.3))/this.initData.amount)
+ // }
},
// 获取张数,数据转换
getVolumnByLever() {
let vol;
- vol = this.initOpen.volume / 1;
+ // vol = this.initOpen.volume / 1;
+ if (this.form.lever_rate == 25) {
+ vol =
+ Math.floor(
+ // (this.initFutrue.amount - this.initFutrue.amount * 0.0375) /
+ // this.initData.amount
+ this.initFutrue.amount / (this.initData.amount + 0.0375)
+ ) * this.form.lever_rate;
+ } else if (this.form.lever_rate == 50) {
+ vol =
+ Math.floor(
+ // (this.initFutrue.amount - this.initFutrue.amount * 0.0375) /
+ // this.initData.amount
+ this.initFutrue.amount / (this.initData.amount + 0.075)
+ ) * this.form.lever_rate;
+ } else if (this.form.lever_rate == 100) {
+ vol =
+ Math.floor(
+ // (this.initFutrue.amount - this.initFutrue.amount * 0.15) /
+ // this.initData.amount
+ this.initFutrue.amount / (this.initData.amount + 0.15)
+ ) * this.form.lever_rate;
+ } else {
+ vol =
+ Math.floor(
+ // (this.initFutrue.amount - this.initFutrue.amount * 0.3) /
+ // this.initData.amount
+ this.initFutrue.amount / (this.initData.amount + 0.3)
+ ) * this.form.lever_rate;
+ }
return Math.floor(vol);
},
@@ -1076,11 +1192,13 @@
this.$refs.sliderRef.emptyValue();
}
this.$toast(this.$t("操作成功"));
+
_getBalance().then((data) => {
// 刷新余额
this.$store.commit("user/SET_USERINFO", {
balance: data.money,
});
+ location.reload();
});
this.$emit("ordered", emitFunc);
if (this.selectIndex / 1 === 2) {
--
Gitblit v1.9.3