From 09f08b8e0414901c54a6d7d2c51051f94fedb44e Mon Sep 17 00:00:00 2001
From: lxf <1371462558@qq.com>
Date: Sun, 15 Jun 2025 15:18:20 +0800
Subject: [PATCH] 6.15号修改
---
src/components/constract/PerpetualContract/orderCom/amountSlider.vue | 110 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 82 insertions(+), 28 deletions(-)
diff --git a/src/components/constract/PerpetualContract/orderCom/amountSlider.vue b/src/components/constract/PerpetualContract/orderCom/amountSlider.vue
index fdd211e..46a622a 100644
--- a/src/components/constract/PerpetualContract/orderCom/amountSlider.vue
+++ b/src/components/constract/PerpetualContract/orderCom/amountSlider.vue
@@ -30,8 +30,10 @@
<!-- 订单 -->
<div v-if="existToken">
<div v-if="typeNum == 0" class="submit-info-item">
- <div>{{ $t("message.home.kekaizhangshu") }}</div>
- <div>{{ `${maxAmount} ${$t("message.home.zhang")}` }}</div>
+ <!-- <div>{{ $t("message.home.kekaizhangshu") }}</div>
+ <div>{{ `${maxAmount} ${$t("message.home.zhang")}` }}</div> -->
+ <div>{{ $t("message.jiaoyi.qianbaoyue") }}</div>
+ <div>{{ walletMoney }} USDT</div>
</div>
<div v-if="typeNum == 1" class="submit-info-item">
@@ -54,6 +56,9 @@
import { mapState, mapActions, mapStores } from "pinia";
import { useUserStore } from "@/store/user";
import { useCurrencyStore } from "@/store/currency";
+import Axios from "@/api/currency.js";
+import bus from "vue3-eventbus";
+
export default {
emits: ["getAmount"],
name: "amountSlider",
@@ -82,6 +87,10 @@
type: Number,
default: 0,
},
+ initOpen: {
+ type: Object,
+ default: {},
+ },
},
data() {
return {
@@ -95,27 +104,47 @@
100: "100%",
},
allowedSteps: [0, 25, 50, 75, 100],
+
+ totalAsset: "0.000000", //总资产
+ walletMoney: "0.000000", //钱包余额
+ profitLoss: "0.000000", //未实现盈亏
+ marginRate: "0.000000", //保证金比率
+ maintenanceMargin: "0.000000", //维持保证金 = 钱包余额
};
+ },
+ mounted() {
+ if (this.existToken) {
+ this.timer = setInterval(() => {
+ this.getAssetTotal();
+ }, 2000);
+ }
+ },
+ unmounted() {
+ if (this.timer) {
+ clearInterval(this.timer);
+ this.timer = null;
+ }
},
computed: {
...mapState(useUserStore, ["existToken"]),
+ //保证金余额
+ marginBalance: function () {
+ // 钱包余额 + 未实现盈亏
+ return bigDecimal.add(this.walletMoney, this.profitLoss);
+ },
},
methods: {
- onSliderInput(val) {
- // 只允许滑到指定点
- const allowed = this.allowedSteps;
- let closest = allowed[0];
- let minDiff = Math.abs(val - allowed[0]);
- for (let i = 1; i < allowed.length; i++) {
- const diff = Math.abs(val - allowed[i]);
- if (diff < minDiff) {
- minDiff = diff;
- closest = allowed[i];
- }
- }
- if (this.sliderAmount !== closest) {
- this.sliderAmount = closest;
- }
+ //获取资产总余额
+ getAssetTotal() {
+ Axios.currencyPaypal().then((res) => {
+ const { total, money_wallet, money_contract, money_contract_profit } =
+ res.data;
+ this.totalAsset = total; //总资产
+ this.walletMoney = bigDecimal.round(money_wallet, 2); //钱包余额
+ this.profitLoss = bigDecimal.round(money_contract_profit, 2); //永续合约总未实现盈亏
+ // bus.emit("moneyContract", money_contract); //合约可用余额
+ bus.emit("moneyContract", money_wallet); //合约可用余额
+ });
},
//输入框事件
inputChange(val) {
@@ -129,18 +158,43 @@
sliderAmountChange(val) {
let data;
if (this.maxAmount) {
- if (val == 0) {
- this.amount = undefined;
- } else {
- const rate = val / 100; //如0.25
- data = this.maxAmount * rate;
- // if (this.lever_rate) {
- // data = math.format((this.maxAmount * rate), 2);
- // } else {
- // data = math.format((this.maxAmount * rate) / 1, 2);
- // }
- this.amount = parseInt(data);
+ // if (val == 0) {
+ // this.amount = undefined;
+ // } else {
+
+ const rate = val / 100; //如0.25
+ let sxf = 0;
+ switch (Number(this.lever_rate)) {
+ case 25:
+ sxf = 0.0375;
+ break;
+ case 50:
+ sxf = 0.075;
+ break;
+ case 100:
+ sxf = 0.15;
+ break;
+ case 200:
+ sxf = 0.3;
+ break;
+ default:
+ sxf = 0;
}
+ const fl =
+ this.walletMoney * sxf * this.initOpen.amount * this.lever_rate * rate;
+ const maxAmount =
+ this.walletMoney * this.initOpen.amount * this.lever_rate;
+ console.log(maxAmount * rate, fl);
+
+ data = maxAmount * rate - fl;
+
+ // if (this.lever_rate) {
+ // data = math.format((this.maxAmount * rate), 2);
+ // } else {
+ // data = math.format((this.maxAmount * rate) / 1, 2);
+ // }
+ this.amount = parseInt(data);
+ // }
this.$emit("getAmount", this.amount);
}
},
--
Gitblit v1.9.3