Files
zszq-trs/YLErpWeb/Views/trade/tradeView_Group.cshtml
T
2024-05-09 14:06:26 +08:00

491 lines
23 KiB
Plaintext

@model TradeViewModel
@{
Layout = null;
var tradeModel = Model.Trade;
var isPremiumRate = tradeModel.IsUsePremiumRate == true;
var isMoneyness = tradeModel.IsMoneynessOption == "是";
var rebatFmt = isPremiumRate ? OtcFormatFlag.premiumRateP : OtcFormatFlag.tradeSinglePrice;
var volFmt = PS.Config.IsTradeVol && PS.Config.ErpElement.VolMoreAccurate ? OtcFormatFlag.percent4 : OtcFormatFlag.percent;
var salesNames = String.Join(",", Model.SalesCommission.Select(n => n.SalesmanName).ToArray());
var isJd = tradeModel.UnderlyingCode?.Trim().ToUpper().StartsWith("JD") ?? false;
tradeModel.TradeUnit = PS.Config.IsUseDisplayNotional ? (tradeModel.QuoteUnit == "500千克" ? "半吨" : (isJd ? "吨" : tradeModel.QuoteUnit)) : tradeModel.TradeUnit;
}
<div id="optionVueDiv">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link active" href="#baseInfo" data-toggle="tab">成交</a>
</li>
@if (Model.couponTradeCashList != null && Model.couponTradeCashList.Any())
{
<li class="nav-item">
<a class="nav-link" href="#couponInfo" data-toggle="tab">组合票息</a>
</li>
}
@if (Model.unWindTradeCashList != null && Model.unWindTradeCashList.Any())
{
<li class="nav-item">
<a class="nav-link" href="#terminationInfo" data-toggle="tab">提前终止</a>
</li>
}
@if (Model.maturityTradeCash != null)
{
<li class="nav-item">
<a class="nav-link" href="#maturityInfo" data-toggle="tab">到期</a>
</li>
}
@if (ConsTrade.TradeStatusAfterConfirmed.Contains(Model.Trade.TradeStatus))
{
@*<li class="nav-item">
<a class="nav-link" href="#ClientCashinCashout" data-toggle="tab">资金记录</a>
</li>*@
}
@if (Model.tradeMarginTemplates != null && Model.tradeMarginTemplates.Any())
{
<li class="nav-item">
<a class="nav-link" href="#tradeMarginTemplatesInfo" data-toggle="tab">预付金模板</a>
</li>
}
</ul>
</div>
<div class="tab-content">
<div id="baseInfo" class="tab-pane in active">
<table class="table table-bordered">
<tr>
<td class="tdRight">交易日期</td>
<td>@(tradeModel.TradeDate.OtcFormatDate())</td>
<td class="tdRight">到期日期</td>
<td>@(tradeModel.ExerciseDate.OtcFormatDate())</td>
</tr>
<tr>
<td class="tdRight">买卖方向</td>
<td>@(tradeModel.BuySell)</td>
<td class="tdRight">结算日期</td>
<td>@(tradeModel.SettlementDate.OtcFormatDate())</td>
</tr>
<tr>
<td class="tdRight">成交方式</td>
<td>@(isPremiumRate ? "名义本金" : "成交数量")</td>
<td class="tdRight">成交数量</td>
<td>
@(tradeModel.TradeOriginalAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))
@(tradeModel.TradeUnit)
</td>
</tr>
<tr>
<td class="tdRight">名义本金</td>
<td>@(tradeModel.OriginalStockEqvNotionalV2.OtcFormat(OtcFormatFlag.StockEqvNotional))</td>
@if (isPremiumRate)
{
<td class="tdRight">期权费率</td>
<td>@(tradeModel.PremiumRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
else
{
<td class="tdRight">权利金</td>
<td>
@(tradeModel.TradeSinglePrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))
@if (tradeModel.TradeSinglePrice != null)
{
@(tradeModel.QuoteUnitSingle)
}
</td>
}
</tr>
<tr>
@if (!string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<td class="tdRight">名义本金(结算币种)</td>
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
}
<td class="tdRight">成交总额</td>
<td>@(tradeModel.TradePrice.OtcFormatMoney())</td>
@if (string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<td class="tdRight"></td>
<td></td>
}
</tr>
@if (tradeModel.StructureType == "气囊结构")
{
<tr>
<td class="tdRight">期权类型</td>
<td>@(tradeModel.StructureType)</td>
<td class="tdRight">看涨看跌</td>
<td>@(tradeModel.OptionType)</td>
</tr>
<tr>
<td class="tdRight">敲入价格</td>
<td>@(tradeModel.trade_airbag.Barrier.OtcFormatUmPrice(isMoneyness))</td>
<td class="tdRight">未敲入参与率</td>
<td>@(tradeModel.trade_airbag.NotKIParticipationRate.OtcFormatPercent())</td>
</tr>
<tr>
<td class="tdRight">上涨参与率</td>
<td>@(tradeModel.trade_airbag.KIParticipationRate.OtcFormatPercent())</td>
<td class="tdRight">低执行价格</td>
<td>@(tradeModel.Strike.OtcFormatUmPrice(isMoneyness))</td>
</tr>
<tr>
<td class="tdRight">高执行价格</td>
<td>@(tradeModel.trade_airbag.HasPayoffLimit ? tradeModel.trade_airbag.HighStrike.OtcFormatUmPrice(isMoneyness) : "")</td>
</tr>
}
else if (tradeModel.Propertys != null)
{
var i = 0;
var length = tradeModel.Propertys.Count;
var preProperty = new ExtendInfoModel();
foreach (var property in tradeModel.Propertys)
{
i++;
if (i == 1)
{
<tr>
<td class="tdRight">期权类型</td>
<td>@(tradeModel.StructureType)</td>
<td class="tdRight">@property.name</td>
<td>@property.value</td>
</tr>
}
else if (i % 2 == 0)
{
preProperty = property;
if (i == length)
{
<tr>
<td class="tdRight">@property.name</td>
<td>@property.value</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
}
else
{
<tr>
<td class="tdRight">@preProperty.name</td>
<td>@preProperty.value</td>
<td class="tdRight">@property.name</td>
<td>@property.value</td>
</tr>
}
}
if (i == 0)
{
<tr>
<td class="tdRight">期权类型</td>
<td>@(tradeModel.StructureType)</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
}
<tr>
<td class="tdRight">簿记账户</td>
<td>@(tradeModel.AssetBookName)</td>
<td class="tdRight">交易员</td>
<td>@(tradeModel.TraderName)</td>
</tr>
<tr>
<td class="tdRight">交易对手方</td>
<td>@(tradeModel.ClientName)</td>
<td class="tdRight">交易编号</td>
<td>@(tradeModel.TradeNumber)</td>
</tr>
<tr>
<td class="tdRight">计价币种</td>
<td>@tradeModel.QuoteCurrency</td>
<td class="tdRight">汇率</td>
<td>
@{
tradeModel.MetaDic.TryGetValue("ExchangeRate", out var ExchangeRate);
}@ExchangeRate
</td>
</tr>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<tr>
<td class="tdRight">中央对手方清算</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.IsCentralClearing, out var isCentralClearing);
}
@(isCentralClearing == "Y" ? "是" : isCentralClearing == "I" ? "计划中央对手方清算" : "否")
</td>
<td class="tdRight">中央清算平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CentralClearingPaltform, out var centralClearingPaltform);
}
@centralClearingPaltform
</td>
</tr>
<tr>
<td class="tdRight">交易平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPaltform, out var tradingPaltform);
}
@tradingPaltform
</td>
</tr>
}
<tr>
<td class="tdRight">备注</td>
<td colspan="3">@(tradeModel.RemarkInfo)</td>
</tr>
@if (CurUser.交易管理_交易标签查看权限)
{
<tr>
<td class="tdRight">标签</td>
<td colspan="3">
<div class="tag-context" style="width:100%;display:inline-block;line-height:36px;text-align:left;">
@if (Model.Tags != null && Model.Tags.Any())
{
foreach (var tag in Model.Tags)
{
<span class="tag-item" data-id="@tag.Id" data-name="@tag.Name">
<span class="tag-text" data-value="@tag.Id">@tag.Name</span>
@if (CurUser.交易管理_交易标签调整权限)
{
<span class="tag-remove" onclick="DeleteTag('@tag.Name')">x</span>
}
</span>
}
}
@if (CurUser.交易管理_交易标签调整权限)
{
<span class="tag-add">+</span>
}
</div>
</td>
</tr>
}
@if (tradeModel.StructureType == "气囊结构")
{
<tr>
<td class="tdRight">敲入敲出状态</td>
<td>@(tradeModel.trade_airbag.KnockInOutStatusCn)</td>
<td class="tdRight">敲入敲出时间</td>
<td>@(tradeModel.trade_airbag.KnockInOutDate?.ToString("yyyy-MM-dd"))</td>
</tr>
}
</table>
</div>
@if (Model.couponTradeCashList != null)
{
var index = 1;
<div id="couponInfo" class="tab-pane">
@foreach (var tradeCash in Model.couponTradeCashList)
{
<table class="table table-bordered">
<tr>
<td class="tdRight">票息序号</td>
<td>@(index++)</td>
<td class="tdRight">票息日期</td>
<td>@(tradeCash.ValueDate.OtcFormatDate())</td>
</tr>
<tr>
<td class="tdRight">观察价格</td>
<td>@(tradeCash.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
<td class="tdRight">票息金额</td>
<td>@(tradeCash.Amount.OtcFormatMoney())</td>
</tr>
</table>
}
</div>
}
@if (Model.unWindTradeCashList != null)
{
var index = 1;
<div id="terminationInfo" class="tab-pane">
@foreach (var tradeCash in Model.unWindTradeCashList)
{
if (tradeCash.Action == "系统操作-行权费")
{
<table class="table table-bordered">
<tr>
<td class="tdRight">提前终止序号</td>
<td>@(index++)</td>
@if (isPremiumRate)
{
<td class="tdRight">行权比例</td>
<td>@(tradeCash.NotionalPercent.OtcFormatPercent())</td>
}
else
{
<td class="tdRight">行权数量</td>
<td>@(tradeCash.TradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
}
</tr>
<tr>
<td class="tdRight">行权日期</td>
<td>@(tradeCash.ValueDate.OtcFormatDate())</td>
<td class="tdRight">收益总额</td>
<td>@(tradeCash.Amount.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">行权收益</td>
<td>@(tradeCash.SingleWinPrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
<td class="tdRight">实现盈亏</td>
<td>@(tradeCash.WinLoss)</td>
</tr>
</table>
}
else
{
<table class="table table-bordered">
<tr>
<td class="tdRight">提前终止序号</td>
<td>@(index++)</td>
@if (isPremiumRate)
{
<td class="tdRight">平仓比例</td>
<td>@(tradeCash.UnwindPercentRate.OtcFormatPercent())</td>
}
else
{
<td class="tdRight">平仓数量</td>
<td>@(tradeCash.UnwindTradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
}
</tr>
<tr>
<td class="tdRight">平仓日期</td>
<td>@(tradeCash.ValueDate.OtcFormatDate())</td>
<td class="tdRight">平仓标的价格</td>
<td>@(tradeCash.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
<tr>
<td class="tdRight">平仓总额</td>
<td>@(tradeCash.Amount.OtcFormatMoney())</td>
<td class="tdRight">实现盈亏</td>
<td>@(tradeCash.WinLoss)</td>
</tr>
</table>
}
}
</div>
}
@if (Model.maturityTradeCash != null)
{
var mtc = Model.maturityTradeCash;
<div id="maturityInfo" class="tab-pane">
<table class="table table-bordered">
<tr>
<td class="tdRight">到期日期</td>
<td>@(mtc.ValueDateString)</td>
@if (isPremiumRate)
{
<td class="tdRight">到期比例</td>
<td>@(mtc.NotionalPercent.OtcFormatPercent())</td>
}
else
{
<td class="tdRight">到期数量</td>
<td>@(mtc.TradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
}
</tr>
<tr>
@if (isPremiumRate && mtc.Action != "系统操作-行权费")
{
<td class="tdRight">到期收益</td>
<td>@(mtc.SingleWinPricePercent.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
else
{
<td class="tdRight">到期收益</td>
<td>@(mtc.SingleWinPrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
}
<td class="tdRight">实现盈亏</td>
<td>@(mtc.WinLoss)</td>
</tr>
<tr>
@if (tradeModel.TradeType == "亚式期权")
{
<td class="tdRight">到期标的价格</td>
<td>@(mtc.SpotPrice.OtcFormat(OtcFormatFlag.umprice))</td>
}
else
{
<td class="tdRight">到期标的价格</td>
<td>@(mtc.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
}
<td class="tdRight">收益总额</td>
<td>@(mtc.Amount.OtcFormatMoney())</td>
</tr>
@if (tradeModel.TradeType == "亚式期权")
{
<tr>
<td class="tdRight">到期标的均价</td>
<td colspan="3">@(mtc.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
}
</table>
</div>
}
@if (ConsTrade.TradeStatusAfterConfirmed.Contains(Model.Trade.TradeStatus))
{
@*<div id="ClientCashinCashout" class="tab-pane">
<div style="display:inline;right:100px;">
<button id="" class="btn btn-primary " type="button" onclick="Addentryexit(0,@Model.Trade.id);return false;">
新增
</button>
<button id="" class="btn btn-primary " type="button" onclick="setExcute();return false;">
确认
</button>
<button id="" class="btn btn-primary " type="button" onclick="setReject();return false;">
拒绝
</button>
</div>
<div style="min-width: 1000px;" id="entryexitEditPopInner"></div>
</div>*@
}
</div>
</div>
<!--录入组合敲入敲出信息-->
<div class="modal" tabindex="-1" id="modalKnockInOutStatusSave" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content" style="width:600px; margin-top: 260px; margin-left: 100px;">
<div class="modal-header">
<h5 class="modal-title">敲入敲出状态录入</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form class="mx-auto form-layout form-layout-save p-0 m-0 border-0" style="border-radius:0;box-shadow:none">
<div style="margin: unset;">
<div class="form-group">
<label class="formlabel">敲入敲出状态</label>
<select class="form-input" v-model="trade_airbag.KnockInOutStatus">
<option value="KnockedIn">敲入</option>
<option value="KnockedOut">敲出</option>
</select>
</div>
<div class="form-group">
<label class="formlabel">敲入敲出日期</label>
<vue-datepicker class="text-box form-input" v-model="trade_airbag.KnockInOutDate" />
</div>
</div>
</form>
</div>
<div class="modal-footer">
<div class="mx-auto">
<button type="button" class="btn btn-primary btn-save" data-dismiss="modal" v-on:click="saveKnockInOutStatus()">保存</button>
<button type="button" class="btn btn-primary btn-close" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
</div>