| | |
| | | :symbol="newPageData.symbol" |
| | | :lever_rate="current_lever_rate_num" |
| | | :typeNum="isActive" |
| | | :initOpen="initOpen" |
| | | @getAmount="getAmount" |
| | | ></amount-slider> |
| | | <!-- 操作按钮--> |
| | |
| | | <!-- 合约金额=保证金--> |
| | | <div class="submit-info-item"> |
| | | <div>{{ $t("message.home.heyuejine") }}:</div> |
| | | <div>{{ getMargin }} {{ unit }}</div> |
| | | <div>{{ getContractAmount }} {{ unit }}</div> |
| | | </div> |
| | | <!-- 保证金 --> |
| | | <div class="submit-info-item"> |
| | |
| | | ref="openDialog" |
| | | :type="activeName" |
| | | :sellOrBuy="directionName" |
| | | this.maxAmount |
| | | :info="getSubmitInfo('open')" |
| | | ></open-dialog> |
| | | </div> |
| | |
| | | lever_rate: ["1.00X"], // 后端返回的杠杆 ['1.00X','2.00X',...] |
| | | origin_lever: [], // 支持的杠杆 [1,2,3] |
| | | current_lever_rate: "", //当前选中 |
| | | current_lever_rate_num: 1, //当前选中的杠杆数字 1 |
| | | current_lever_rate_num: 200, //当前选中的杠杆数字 1 |
| | | |
| | | initClose: {}, |
| | | initOpen: {}, |
| | |
| | | }, 2000); //延迟调用 |
| | | }); |
| | | bus.on("moneyContract", (val) => { |
| | | this.availableMoney = val; |
| | | if (val) { |
| | | this.availableMoney = val; |
| | | } |
| | | }); //合约可用余额 |
| | | }, |
| | | //销毁定时器 |
| | |
| | | let data = "0.00"; |
| | | if (amount != undefined && this.lever_rate != undefined) { |
| | | if (this.lever_rate?.length > 0) { |
| | | data = this.sessionObj?.amount * amount * this.current_lever_rate_num; |
| | | data = amount * this.initOpen.amount; |
| | | } else if (this.lever_rate.length == 0) { |
| | | data = this.sessionObj?.amount * amount * 1; |
| | | } |
| | | } |
| | | return bigDecimal.round(data, 6); |
| | | return bigDecimal.round(data, 2); |
| | | }, |
| | | // 获取保证金,开仓才需要 |
| | | getMargin: function () { |
| | | // if (this.availableMoney > 0) return; |
| | | const amount = this.inputAmount; |
| | | let data = "0.000000"; |
| | | console.log( |
| | | "getMargin", |
| | | this.isActive, |
| | | amount, |
| | | this.lever_rate, |
| | | this.sessionObj.amount, |
| | | this.current_lever_rate_num |
| | | parseInt(amount / this.current_lever_rate_num), |
| | | this.availableMoney, // |
| | | this.sessionObj.amount, // |
| | | this.current_lever_rate_num // 倍数 |
| | | ); |
| | | if ( |
| | | this.isActive === 0 && |
| | |
| | | this.sessionObj.amount |
| | | ) { |
| | | if (this.lever_rate.length > 0) { |
| | | data = this.sessionObj.amount * amount * this.current_lever_rate_num; |
| | | data = |
| | | parseInt(amount * this.initOpen.amount) / |
| | | this.current_lever_rate_num; |
| | | } else if (this.lever_rate.length == 0) { |
| | | data = this.sessionObj.amount * amount * 1; |
| | | } |
| | | } |
| | | // 校验保证金不能大于余额 |
| | | if ( |
| | | Number(this.availableMoney) > 0 && |
| | | Number(data) > Number(this.availableMoney) |
| | | ) { |
| | | // 自动限制为最大可用余额 |
| | | data = this.availableMoney; |
| | | // 可选:提示 |
| | | this.$nextTick(() => { |
| | | ElMessage.warning(this.$t("message.home.baozhengjinbuzu")); // 保证金不足 |
| | | }); |
| | | } |
| | | return bigDecimal.round(data, 6); |
| | | // if ( |
| | | // Number(this.availableMoney) > 0 && |
| | | // Number(data) > Number(this.availableMoney) |
| | | // ) { |
| | | // 自动限制为最大可用余额 |
| | | // data = this.availableMoney; |
| | | // 可选:提示 |
| | | // this.$nextTick(() => { |
| | | // ElMessage.warning(this.$t("message.home.baozhengjinbuzu")); // 保证金不足 |
| | | // }); |
| | | // } |
| | | return bigDecimal.round(data, 2); |
| | | }, |
| | | // 获取手续费 |
| | | getFee: function () { |
| | |
| | | // } |
| | | // return bigDecimal.round(data); |
| | | const amount = this.inputAmount; |
| | | let data = 0; |
| | | // if(amount) {return bigDecimal.round(data, 2);}; |
| | | let rate = 0; |
| | | // 根据当前杠杆设置费率 |
| | | switch (Number(this.current_lever_rate_num)) { |
| | |
| | | default: |
| | | rate = 0; |
| | | } |
| | | let data = 0; |
| | | if (amount && this.isActive == 0) { |
| | | data = amount * rate * 100; // 乘以100显示百分比 |
| | | data = |
| | | (parseInt(amount * this.initOpen.amount) / |
| | | this.current_lever_rate_num) * |
| | | rate; // 乘以100显示百分比 |
| | | } |
| | | return bigDecimal.round(data, 2); |
| | | }, |
| | |
| | | }, |
| | | //获取张数 |
| | | getAmount(val) { |
| | | console.log("val: ", val); |
| | | this.inputAmount = val; |
| | | }, |
| | | // 切换限价单和市价单 |
| | |
| | | // 获取张数,数据转换 |
| | | getVolumnByLever() { |
| | | let amount = this.initOpen.volume; |
| | | console.log("amount: ", amount); |
| | | if (this.isActive == 1) { |
| | | amount = Math.max(this.closeSellAmount, this.closeBuyAmount); |
| | | } |
| | | // console.log("amount: ", amount); |
| | | // if (this.isActive == 1) { |
| | | // amount = Math.max(this.closeSellAmount, this.closeBuyAmount); |
| | | // } |
| | | if (!amount) { |
| | | return 0; |
| | | } else { |
| | | if (this.lever_rate.length > 0) { |
| | | return parseInt(amount / this.current_lever_rate_num); |
| | | // const contractSize = 1; |
| | | // const price = this.price || this.newPageData.close || 1; |
| | | // const availableMargin = amount; // 可用保证金 |
| | | // const lever = this.current_lever_rate_num; |
| | | // if (this.lever_rate.length > 0) { |
| | | const price = this.initOpen.amount; |
| | | // console.log( |
| | | // "price: ", |
| | | // price, |
| | | // this.current_lever_rate_num, |
| | | // this.availableMoney, |
| | | // (this.availableMoney * this.current_lever_rate_num) / price |
| | | // ); |
| | | |
| | | // const maxVolume = parseInt( |
| | | // (availableMargin * lever) / (contractSize * price) |
| | | // ); |
| | | // return maxVolume > 0 ? maxVolume : 0; |
| | | } else if (this.lever_rate.length == 0) { |
| | | return parseInt(amount / 1); |
| | | } |
| | | // 最大可开张数 |
| | | return parseInt( |
| | | (this.availableMoney * this.current_lever_rate_num) / price |
| | | ); |
| | | // } |
| | | |
| | | // const contractSize = 1; |
| | | // const availableMargin = amount; // 可用保证金 |
| | | // const lever = this.current_lever_rate_num; |
| | | // const maxVolume = parseInt( |
| | | // (availableMargin * lever) / (contractSize * price) |
| | | // ); |
| | | // return maxVolume > 0 ? maxVolume : 0; |
| | | // } else if (this.lever_rate.length == 0) { |
| | | // return parseInt(amount / 1); |
| | | // } |
| | | } |
| | | }, |
| | | |