cleanup: 删除 _dz 链死视图 Structure_DZ.cshtml 与 _PricingItemTpl_dz.cshtml

依据死代码分析报告第一轮零风险清理。
Structure_DZ.cshtml 仅被已删除的 Structure_DZ() Action 使用;
_PricingItemTpl_dz.cshtml 仅被 Structure_DZ.cshtml PartialAsync 引用。
单独 revert 本 commit 即可整体找回。
This commit is contained in:
hjhan
2026-08-28 08:25:35 +08:00
parent c007037d36
commit 91680a8f2f
2 changed files with 0 additions and 1815 deletions
-910
View File
@@ -1,910 +0,0 @@
@using Microsoft.AspNetCore.Html
@using YLErp.QdpModule.Constants
@model PricingModel
@{
ViewBag.Title = "期权定价";
if (Model.IsImport)
{
Layout = "~/Views/Shared/_InfoLayout.cshtml";
}
else
{
Layout = "~/Views/Shared/_MainLayout.cshtml";
}
var assetunits = JsDataModel.GetAssetUnits(CurUser);
var traders = JsDataModel.GetTraders(assetunits);
var pageObj = new
{
assetunits = assetunits,
trade = new trade() { Strike = 0 },
traders = JsDataModel.GetTraders(assetunits),
tradeMarginTemplateItems = new tradeController().GetMarginTemplateItems(),
tradeMarginTemplates = new tradeController().GetMarginTemplates(),
engineNames = new[] { "abc", "xyz" },
structureTypes = ViewBag.StructureTypeMap?.Keys,
PropertyMap = ViewBag.StructureTypeMap,
IsPVIncludePrincipal = PS.Config.ErpElement.IsPVIncludePrincipal
};
var pageData = new
{
showCCR = PS.Config.Company == CompanyEnum.国海,
is厦门象屿 = PS.Config.Company == CompanyEnum.厦门象屿,
};
}
@section CSS{
<link href="~/Style/Css/pricing.structure.css?v=1" rel="stylesheet" />
@switch (PS.Config.Company)
{
case CompanyEnum.光大光子:
<link href="~/Style/GDGZ/pricing.structure.css" rel="stylesheet" />
break;
case CompanyEnum.国泰君安:
<link href="~/Style/GTJA/pricing.structure.css" rel="stylesheet" />
break;
}
<style>
.pitem-cash:not(.pitem) {
background: #f0f8ff
}
.customPanel {
background: #CDE0E6;
height: 100%;
display: table;
width: 100%;
}
.autocomplete-suggestions {
width: auto !important;
min-width: 11%;
}
.pricing-item {
transform: none !important;
}
.empty {
border-top: none !important;
background: none !important;
}
.bottomborder {
border-bottom: 1px solid #ddd !important;
}
.topborder {
border-top: 1px solid #ddd !important;
}
</style>
}
@section JS{
<script src="~/Statics/libs/_utils/dragscroll.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Statics/libs/_utils/FileSaver.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Statics/libs/_utils/dom-to-image.min.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Statics/libs/sortable/Sortable.min.js"></script>
<script src="~/front/calendar?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script src="~/Scripts/app/trade/percentColumnText.js?v=@HtmlUtil.JsVersion"></script>
<script src="@HtmlUtil.BasicDataJs("品种", "客户")"></script>
<script>
const pageObj = @Json.Serialize(pageObj);
const pageData = @Json.Serialize(pageData);
const pageVue = @Json.Serialize(Model);
const optionTradeTypes = Object.freeze([{ value: "香草期权", pinyin: 'XCQQ' },
{ value: "障碍期权", pinyin: 'ZAQQ' }, { value: "二元期权", pinyin: 'EYQQ' },
{ value: "亚式期权", pinyin: 'YSQQ' }, { value: "凤凰期权", pinyin: 'FHQQ' },
{ value: "雪球期权", pinyin: 'XQQQ' }, { value: "结构化产品", pinyin: 'JGHCP' },
]);
pageVue.GetTotalMargin = function (trades, structureType) {
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.InitialMargin) || 0, 0);
};
pageVue.GetTotalTradePrice = function (trades) {
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.TradePrice) || 0, 0);
};
pageVue.GetTotalDay1Pnl = function (trades) {
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.Day1Pnl) || 0, 0);
};
pageVue.CalcVersion = "@(Context.Request.Query["version"])";
ylotc.trade = pageObj.trade;
ylotc.traders = pageObj.traders;
ylotc.assetunits = pageObj.assetunits;
ylotc.tradeMarginTemplateItems = pageObj.tradeMarginTemplateItems;
ylotc.tradeMarginTemplates = pageObj.tradeMarginTemplates;
ylotc.engineNames = pageObj.engineNames;
ylotc.options = pageObj.options;
ylotc.structureTypes = pageObj.structureTypes;
</script>
@if (PS.Config.Company == CompanyEnum.伴兴)
{
<script>
pageVue.GetTotalMargin = function (trades, structureType) {
if (trades.length === 1) return parseFloat(trades[0].InitialMargin) || 0;
if (!structureType || structureType === "结构化交易") {
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.InitialMargin) || 0, 0);
}
if (structureType.indexOf("跨式") >= 0) {
return _.max(_.map(trades, x => Math.abs(x.InitialMargin)));
}
return _.reduce(trades, (acc, cur) => acc += cur.BuySell === '卖出' ? 0 : parseFloat(cur.InitialMargin) || 0, 0);
};
</script>
}
else if (PS.Config.Company == CompanyEnum.茂川资本)
{
<script>
pageVue.GetTotalMargin = function (trades, structureType) {
if (structureType && structureType.indexOf("跨式") >= 0) {
return _.max(_.map(trades, x => Math.abs(x.InitialMargin)));
}
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.InitialMargin) || 0, 0);
};
</script>
}
else if (PS.Config.Company == CompanyEnum.弘业)
{
<script>
pageVue.GetTotalMargin = function (trades, structureType) {
if (structureType && structureType.indexOf("跨式") >= 0) {
return _.max(_.map(trades, x => Math.abs(x.InitialMargin)));
}
return _.reduce(trades, (acc, cur) => acc += parseFloat(cur.InitialMargin) || 0, 0);
};
</script>
}
<script src="~/Scripts/app/pricing/tradePricing_dz.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Scripts/app/pricing/structure_dz.js?v=@(HtmlUtil.JsVersion)"></script>
}
@await Html.PartialAsync("_CouponDayCount")
<div id="listdiv" class="@(Model.IsImport ? "sr-only" : "")">
<!--定价顶部-->
<div class="card pricing-top" id="pricing-top">
<div class="card-body">
<div class="row no-gutters">
<label class="col-auto mr-2">波动率类型</label>
<div class="col-auto mr-2">
<select v-model="viewState.VolType" v-on:change="pricingVue.changeVolType()">
@foreach (var item in ConsVolInfos.VolTypes)
{
<option value="@item">@item</option>
}
</select>
</div>
<div class="col" style="min-width:350px">
<div class="dropdown d-inline-block">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">新增单腿</button>
<div class="dropdown-menu" style="width:200px;">
<a href="javascript:;" class="dropdown-item" v-for="item in optionTradeTypes" v-on:click="pricingVue.addTrade(null,item.value)">{{item.value}}</a>
<div class="dropdown-divider"></div>
<div class="form-group ml-2">
<div class="input-group">
<input type="text" class="form-control" id="importTradeNumber" placeholder="输入交易编号导入" />
<span class="input-group-append">
<a href="javascript:;" class="pl-2 pr-2" onclick="topVue.importTrade()"><i class="fa fa-copy"></i></a>
</span>
</div>
</div>
</div>
</div>
<div class="dropdown d-inline-block">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">新增组合</button>
<div class="dropdown-menu">
<a v-if="!simpleMode" href="javascript:;" class="dropdown-item" onclick="pricingVue.combine()">自由组合</a>
@foreach (var item in StructureOption_Code.StructureOptionsCn)
{
if (!new List<string>() { "复制标的资产", "比例价差", "箱式价差" }.Contains(item.Text))
{
<a class="dropdown-item" href="javascript:;" v-on:click="addStructure('@item.Value','@item.Text')">@item.Text</a>
}
}
</div>
</div>
<button type="button" class="btn btn-primary" onclick="pricingVue.calcPrice()">定价计算</button>
@if (CurUser.交易管理_交易新增)
{
<button type="button" class="btn btn-primary" onclick="pricingVue.saveTrades()">录入交易</button>
}
<div class="dropdown d-inline-block">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">图形分析</button>
<div class="dropdown-menu">
@*<a class="dropdown-item" href="javascript:;" v-on:click="pricingVue.showPayoffLineChart()">到期收益曲线</a>*@
@*<a class="dropdown-item" href="javascript:;" v-on:click="pricingVue.showPvChart()">组合价值曲线</a>*@
<a class="dropdown-item" href="javascript:;" v-on:click="pricingVue.showLifeLineChart()">Pv变化曲线</a>
<a class="dropdown-item" href="javascript:;" v-on:click="pricingVue.showGreeksChart()">时间变化曲线</a>
</div>
</div>
<div class="btn-group">
<button type="button" class="btn btn-danger" onclick="templateVue.showList()">模板</button>
<button type="button" class="btn btn-danger" onclick="templateVue.showSave()" title="保存为模板">保存</button>
</div>
<div class="dropdown d-inline-block">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">选项</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:;" v-on:click="toggleSimpleMode" title="是否隐藏不常用的字段">
<span class="fa mr-2" v-bind:class="simpleMode?'fa-check':''"></span>
<span>精简模式</span>
</a>
@if (Model.ShowInitialMargin)
{
<a class="dropdown-item" href="javascript:;" v-on:click="toggleCalcMargin" title="是否计算初始预付金">
<span class="fa mr-2" v-bind:class="calcMargin?'fa-check':''"></span>
<span>计算预付金</span>
</a>
}
<a class="dropdown-item" href="javascript:;" v-on:click="toggleCalcAutocallGreeks" title="是否计算凤凰和雪球的所有Greeks">
<span class="fa mr-2" v-bind:class="calcAutocallGreeks?'fa-check':''"></span>
<span>计算凤凰和雪球的所有Greeks</span>
</a>
</div>
</div>
<button type="button" class="btn btn-primary" onclick="pricingVue.clear()" title="清空legs交易">清空</button>
@if (CurUser.交易管理_分组设置)
{
<button type="button" class="btn btn-primary" onclick="pricingVue.saveGroupTrades()">加入分组</button>
}
</div>
</div>
</div>
</div>
<div class="yc-panel">
<!--定价合计-->
<div class="pricing-summary" id="pricing-summary">
<table class="table table-bordered">
<colgroup>
<col span="1" width="200" />
<col span="1" width="150" />
</colgroup>
<thead>
<tr>
<th>对冲手数</th>
@*<th>组合成交金额</th>*@
<th v-if="topVue.calcMargin">组合预付金</th>
<th>Day1Pnl</th>
<th>PV</th>
<th>Delta</th>
<th>GammaCash</th>
<th>Theta</th>
<th>Vega</th>
<th>Rho</th>
</tr>
</thead>
<tbody v-cloak>
<tr>
<td style="color:red;font-weight: bold;">
<span>{{DeltaHands}}</span>
@if (Model.HedgingOrder && Model.IsTrader)
{
<a href="javascript:;" class="ml-1" onclick="pricingVue.hedgingOrder()" title="对冲下单"><i class="fa fa-external-link"></i></a>
}
</td>
@*<td>{{summary.TotalTradePrice| FixNumber}}</td>*@
<td v-if="topVue.calcMargin">{{summary.TotalMargin| FixNumber}}</td>
<td>{{summary.TotalDay1Pnl| FixNumber}}</td>
<td>{{summary.Pv| FixNumber}}</td>
<td>{{summary.Delta| FixNumber}}</td>
<td>{{summary.GammaCash| FixNumber}}</td>
<td>{{summary.Theta| FixNumber}}</td>
<td>{{summary.Vega| FixNumber}}</td>
<td>{{summary.Rho| FixNumber}}</td>
</tr>
</tbody>
</table>
</div>
<div class="clearfix"></div>
<!--定价列表-->
<div class="pricing-main">
<div class="d-flex">
<div class="pricing-titles-cont">
<div class="singleprice" id="singleprice">@(Model.CompanyName) 付 0.000</div>
<div class="pricing-titles">
<div>组合单价</div>
</div>
<div id="pricing-titles"></div>
</div>
<div class="pricing-items-cont">
<div class="zhanwei"></div>
<div class="d-flex" id="pricing-items"></div>
</div>
</div>
</div>
</div>
</div>
<!--定价组件模板框架-->
<template id="pricingItems_tpl">
<div class="pricing-item">
<div class="pricing-index screenshot-hide" v-if="!pageVue.IsImport">
<span class="structure-type">{{structureType}}</span>
<a href="javascript:;" title="拖动位置" class="pricing-index-drag" v-show="!floating"><i class="fa fa-arrows"></i></a>
<a href="javascript:;" v-on:click="remove" title="移除此项" v-show="!floating"><i class="fa fa-remove"></i></a>
<a href="javascript:void(0)" class="pricing-index-text">{{index}}</a>
<div class="pricing-index-icons" v-show="!floating">
<label class="check-label">
<input type="checkbox" v-model="isSelected" v-on:change="resetSummary(true)">
</label>
<a href="javascript:;" v-on:click="saveTrade" title="录入交易"><i class="fa fa-save"></i></a>
<a href="javascript:;" v-show="showFloatingIcon" v-on:click="showFloatVue" title="浮窗编辑">
<i class="fa fa-external-link"></i>
</a>
</div>
<div class="pricing-index-right" v-show="!floating">
<div class="dropdown">
<a href="javascript:;" class="pricing-index-right-toggle" data-toggle="dropdown">
<i class="fa fa-ellipsis-v"></i>
</a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a href="javascript:;" class="dropdown-item" v-on:click="copyThis">复制此项</a>
<a href="javascript:;" class="dropdown-item" v-on:click="screenshot">生成截图</a>
<a href="javascript:;" class="dropdown-item" v-show="datas.length>1" v-on:click="uncouple">取消组合</a>
</div>
</div>
</div>
</div>
<div class="pricing-trades">
<template v-for="(data,index) in datas">
<vue-trade2 v-if="data.trade.TradeType==='现金流交易'" v-on:reset-summary="resetSummary" v-on:change-client="changeClient" :floating="floating" :trade="data.trade" :view-state="data.viewState" :calc-result="data.calcResult"></vue-trade2>
<vue-trade v-else v-on:reset-summary="resetSummary" v-on:change-client="changeClient" v-on:synch-trade="synchTrade" v-on:sum-total="sumTotal" :floating="floating" :trade="data.trade" :view-state="data.viewState" :calc-result="data.calcResult"></vue-trade>
</template>
</div>
<div class="border-0 text-center" v-show="!floating">
<label class="w-100 m-0">
<input type="checkbox" class="checkbox" v-model="isSelected" title="是否录入交易" v-on:change="resetSummary(true)" />
</label>
</div>
</div>
</template>
<!--定价组件模板内部-->
@await Html.PartialAsync("_PricingItemTpl_dz")
<!--定价浮窗-->
<div id="floatModal" class="modal modal-fullscreen @(Model.IsImport?"show":"")" tabindex="-1" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="pricing-float-topbar">
<div class="btn-group screenshot-hide">
<button type="button" class="btn btn-primary" onclick="floatVue.screenshot()">截图</button>
<button type="button" class="btn btn-primary" onclick="floatVue.calcPrice()">定价计算</button>
<button type="button" class="btn btn-primary" onclick="floatVue.saveTrade()">录入交易</button>
<button type="button" class="btn btn-primary" onclick="floatVue.hide()">关闭</button>
</div>
</div>
<div class="pricing-float-main d-flex" id="for-screenshot">
<div class="ml-auto pricing-titles-cont">
<div class="singleprice screenshot-hide" id="singleprice2">@(Model.CompanyName) 付 0.000</div>
<div class="pricing-titles screenshot-hide">
<div>组合单价</div>
</div>
<div id="pricing-titles2"></div>
</div>
<div class="mr-auto pricing-items-cont">
<div class="zhanwei screenshot-hide"></div>
<div class="pricing-float-items" id="pricing-items2"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--截图内容-->
<div id="screenshot" class="text-center screenshot-wrap" style="display:none;">
<div class="img-wrap">
<img id="screenshot-img" />
</div>
<div class="toolbar">
<button type="button" class="btn btn-primary" onclick="screenshoter.download()">保存截图</button>
<button type="button" class="btn btn-primary" onclick="screenshoter.closeShow()">关闭</button>
</div>
</div>
<!--标的下拉选择显示模板-->
<script type="text/html" id="underlyingSuggestionTpl">
<div class="row no-gutters" style="padding:3px 10px;">
<div class="col text-left">${Code}</div>
<% if (!!Name) { %>
<div class="col-auto text-right text-truncate" style="width:70px;">${Name}</div>
<% } %>
</div>
</script>
<!--输入错误信息提示-->
<div class="modal" id="checkErrorModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<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">
<table id="checkErrorTable" class="table table-bordered table-hover">
<colgroup>
<col span="1" width="100" />
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>错误信息</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
<!--交易录入-->
<div class="modal" tabindex="-1" id="modalTradeSave" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content" style="width:520px;">
<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="width:500px;border-radius:0;box-shadow:none">
<div class="form-group">
<label class="form-label">簿记账户</label>
<input type="text" class="form-input" id="AssetId" />
</div>
<div class="form-group">
<label class="form-label">交易员</label>
<input type="text" class="form-input" @(Model.CanSelectTrader ? "" : "readonly") id="TraderId" value="@(Model.Trade.TraderName)" data-id="@(Model.Trade.TraderId)" />
</div>
@if (!Model.ClientUsedForCalc)
{
<div class="form-group">
<label class="form-label">客户名称</label>
<input type="text" class="form-input" id="ClientId" />
</div>
}
<div id="salesCommissionCtrl"></div>
<div class="form-group">
<label class="form-label">交易编号</label>
<input type="text" class="form-input @(Model.UpperTradeNumber?"text-uppercase":"")" id="TradeNumber" maxlength="50" autocomplete="off" placeholder="不填则自动生成" />
</div>
@if (PS.Config.ErpElement.SecuritiesEnvironment)
{
<div class="form-group" hidden>
<label class="form-label">交易场所</label>
<select class="form-input" name="TradingPlace" id="TradingPlace">
@{
HtmlString html1 = new HtmlString("");
foreach (var item in YLErp.DBModels.Consts.ConsReport.TradingPlaceMap)
{
var str = "";
if (Model.Trade.MetaDic.ContainsKey("交易场所") && Model.Trade.MetaDic["交易场所"] == item.Key)
{
str = "selected='selected'";
}
<option @str>@item.Key</option>
}
}
</select>
</div>
<div class="form-group" hidden>
<label class="form-label">清算机构</label>
<select class="form-input" name="ClearingAgency" id="ClearingAgency">
@{
html1 = new HtmlString("");
foreach (var item in YLErp.DBModels.Consts.ConsReport.ClearingAgencyMap)
{
if (item.Key == "甲方" || item.Key == "乙方")
{
continue;
}
<option>@item.Key</option>
}
}
</select>
</div>
if (!Model.ClientUsedForCalc)
{
<div class="form-group">
<label class="form-label">主协议编号</label>
<select class="form-input" name="MainProtocolCode" id="MainProtocolCode">
</select>
</div>
<div class="form-group">
<label class="formlabel">补充协议编号</label>
<select class="form-input" name="SupProtocolCode" id="SupProtocolCode">
</select>
</div>
}
}
else
{
<div class="form-group">
<label class="formlabel">中央对手方清算</label>
<select id="IsCentralClearing" class="form-input" name="IsCentralClearing">
<option value="N">否</option>
<option value="Y">是</option>
<option value="I">计划中央对手方清算</option>
</select>
</div>
<div class="form-group">
<label class="formlabel">中央清算平台</label>
<select id="CentralClearingPaltform" class="form-input" name="CentralClearingPaltform">
@foreach (var item in YLErp.BLL.DictionaryBLL.GetList("中央清算平台", true,"",true))
{
<option value="@item.Value">@item.Text</option>
}
</select>
</div>
<div class="form-group">
<label class="formlabel">交易平台</label>
<select id="TradingPaltform" class="form-input" name="TradingPaltform">
@foreach (var item in YLErp.BLL.DictionaryBLL.GetList("交易平台", true, "", true))
{
<option value="@item.Value">@item.Text</option>
}
</select>
</div>
}
<div class="form-group" hidden>
<label class="form-label">交易对手方角色</label>
<select class="form-input" name="OpponentRole" id="OpponentRole">
<option>甲方</option>
<option selected>乙方</option>
</select>
</div>
@if (PS.Config.Company == CompanyEnum.东方财富)
{
<div class="form-group">
<label class="formlabel">初始预付金率</label>
<input type="number" class="form-input" id="InitialAdvance" />
<span>% </span>
</div>
<div class="form-group">
<label class="formlabel">期间预付金率</label>
<input type="number" class="form-input" id="PeriodAdvance" />
<span>% </span>
</div>
<div class="form-group">
<label class="formlabel">前端收益费率</label>
<input type="number" class="form-input" id="FontEarning" />
<span>% </span>
</div>
<div class="form-group">
<label class="formlabel">追保线</label>
<input type="number" class="form-input" id="ConfirmedLine" />
<span>% </span>
</div>
<div class="form-group">
<label class="formlabel">追保比例下限</label>
<input type="number" class="form-input" id="ConfirmedFloor" />
<span>% </span>
</div>
}
</form>
</div>
<div class="modal-footer">
<div class="mx-auto">
<button type="button" id="btnSave" class="btn btn-primary btn-save">录入交易</button>
<button type="button" class="btn btn-primary btn-close" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
</div>
<!--加入组合-->
<div class="modal" tabindex="-1" id="modalGroupTradeSave" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content" style="width:1020px;">
<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="width:990px;border-radius:0;box-shadow:none">
<div style="background-color: #F2F2F2; height: 15px; margin: unset;"></div>
<div style="background-color: #F2F2F2; height: 225px; margin: unset;">
<div class="form-group col-6">
<label class="formlabel">交易日期</label>
<vue-datepicker class="text-box form-input" v-model="trade.TradeDate" disabled />
</div>
<div class="form-group col-6">
<label class="formlabel">到期日期</label>
<vue-datepicker class="text-box form-input" v-model="trade.ExerciseDate" />
</div>
<div class="form-group col-6">
<label class="formlabel">买卖方向</label>
<select class="form-input" v-model="trade.BuySell" v-on:change="changeBuySell()">
<option>卖出</option>
<option>买入</option>
</select>
</div>
<div class="form-group col-6">
<label class="formlabel">成交方式</label>
<select class="form-input" v-model="trade.IsUsePremiumRate" v-on:change="changeIsUsePremiumRate()">
<option :value="true">名义本金</option>
<option :value="false">成交数量</option>
</select>
</div>
<div class="form-group col-6">
<label class="formlabel">期初价格</label>
<vue-number-input class="form-input" v-model="trade.SpotPrice" v-bind:format="inputFormatSpot" disabled></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">成交数量</label>
<vue-number-input class="form-input" v-model="trade.TradeAmount" v-on:input="changeTradeAmount()" v-bind:format="inputFormatTradeAmount" v-bind:disabled="trade.IsUsePremiumRate"></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">名义本金</label>
<vue-number-input class="form-input" v-model="trade.StockEqvNotional" v-on:input="changeStockEqvNotional()" v-bind:format="inputFormatEqvNotional" v-bind:disabled="!trade.IsUsePremiumRate"></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">权利金</label>
<template v-if="trade.IsUsePremiumRate">
<vue-number-input class="form-input" v-model="trade.PremiumRate" v-bind:format="inputFormatPremiumRate" disabled></vue-number-input>
</template>
<template v-else>
<vue-number-input class="form-input" v-model="trade.TradeSinglePrice" v-bind:format="inputFormatSinglePriceOnly" disabled></vue-number-input>
</template>
</div>
<div class="form-group col-6">
<label class="formlabel">交易总额</label>
<vue-number-input class="form-input" v-model="trade.TradePrice" disabled></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">相对行权价</label>
<select class="form-input" v-model="trade.IsMoneynessOption">
<option>是</option>
<option>否</option>
</select>
</div>
</div>
<div style="background-color: #CDE0E6; height: 15px; margin: unset;"></div>
<div class="customPanel">
<div class="form-group col-6">
<label class="form-label">结构类型</label>
<select class="form-input" v-model="trade.StructureType" v-on:change="changeStrucTureType()">
<option v-for="structureType in structureTypes">
{{ structureType }}
</option>
</select>
</div>
<template v-if="trade.StructureType == '气囊结构'">
<div class="form-group col-6">
<label class="formlabel">看涨看跌</label>
<select class="form-input" v-model="trade.OptionType">
<option>看涨</option>
<option>看跌</option>
</select>
</div>
<div class="form-group col-6">
<label class="formlabel">敲入价格</label>
<vue-number-input class="form-input" v-model="trade.trade_airbag.Barrier" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">低执行价格</label>
<vue-number-input class="form-input" v-model="trade.Strike" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">高执行价格</label>
<vue-number-input class="form-input" v-model="trade.trade_airbag.HighStrike" v-bind:format="inputFormatStrike" v-bind:disabled="!trade.trade_airbag.HasPayoffLimit"></vue-number-input>
<input type="checkbox" class="mr-1" v-model="trade.trade_airbag.HasPayoffLimit">
</div>
<div class="form-group col-6">
<label class="formlabel">未敲入参与率</label>
<vue-number-input class="form-input" v-model="trade.trade_airbag.NotKIParticipationRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group col-6">
<label class="formlabel">上涨参与率</label>
<vue-number-input class="form-input" v-model="trade.trade_airbag.KIParticipationRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-else>
<template v-for="(value,key,index) in PropertyMap">
<template v-if="key != '气囊结构'">
<div v-show="trade.StructureType == key">
<template v-for="(item,index) in value">
<div class="form-group col-6">
<template v-if="item.isNew">
<input type="text" class="form-input" style="width: 120px;" v-model="item.ColumnName" v-on:change="changeOption()" />
</template>
<template v-else>
<label class="formlabel">{{item.ColumnName}}</label>
</template>
<template v-if="item.ColumnType == @((int)YLErp.Enums.StructureColumnTypeEnum.NUMBER)">
<vue-number-input type="text" class="form-input" v-model="item.ColumnDefaultValue" v-bind:format="customNumberFormat"></vue-number-input>
</template>
<template v-else-if="item.ColumnType == @((int)YLErp.Enums.StructureColumnTypeEnum.NUMBERP)">
<vue-number-input type="text" class="form-input" v-model="item.ColumnDefaultValue" v-bind:format="customNumberPercentFormat"></vue-number-input>
</template>
<template v-else-if="item.ColumnType == @((int)YLErp.Enums.StructureColumnTypeEnum.DATE)">
<vue-datepicker class="text-box form-input" v-model="item.ColumnDefaultValue" />
</template>
<template v-else-if="item.ColumnType == @((int)YLErp.Enums.StructureColumnTypeEnum.COMBO_BOX_SINGLE)">
<select class="form-input" v-model="item.ColumnDefaultValue" autocomplete="off">
<option v-for="opt in item.ColumnOptions.split(',')" :value="opt" :key="opt">
{{opt}}
</option>
</select>
</template>
<template v-else>
@*YLErp.Enums.StructureColumnTypeEnum.TEXT*@
<input type="text" class="form-input" v-model="item.ColumnDefaultValue" />
</template>
<a class="fa fa-minus" style="margin-left: 10px;" v-on:click="deleteProperty(index)"></a>
</div>
</template>
</div>
</template>
</template>
<div class="form-group col-6" style="text-align: center;">
<button type="button" class="btn btn-primary btn-save" v-on:click="addNewProperty()">新增</button>
</div>
</template>
</div>
<div style="background-color: #F2F2F2; height: 15px; margin: unset;"></div>
<div style="background-color: #F2F2F2; height: 180px;">
<div style="margin-left: 15px;">
<label class='formlabel'>交易备注</label>
<textarea rows='3' v-model="trade.Comments" class="text-box h-auto text-left" style="width: 80%"></textarea>
</div>
<div class="form-group col-6">
<label class="form-label">簿记账户</label>
<input type="text" class="form-input" id="GroupAssetId" />
</div>
<div class="form-group col-6">
<label class="form-label">交易员</label>
<input type="text" class="form-input" id="GroupTraderId" />
</div>
<div class="form-group col-6">
<label class="form-label">交易对手方</label>
<input type="text" class="form-input" id="GroupClientId" />
</div>
<div class="form-group col-6">
<label class="form-label">交易编号</label>
<input type="text" class="form-input" v-model="trade.TradeNumber" />
</div>
</div>
@*@if (Model.SecuritiesEnvironment)
{
<div class="form-group">
<label class="form-label">交易场所</label>
<select class="form-input" v-model="trade.TradingPlace">
@foreach (var item in YLErp.DBModels.Consts.ConsReport.TradingPlaceMap)
{
<option>@item.Key</option>
}
</select>
</div>
<div class="form-group">
<label class="form-label">清算机构</label>
<select class="form-input" v-model="trade.ClearingAgency">
@foreach (var item in YLErp.DBModels.Consts.ConsReport.ClearingAgencyMap)
{
if (item.Key == "甲方" || item.Key == "乙方")
{
continue;
}
<option>@item.Key</option>
}
</select>
</div>
if (!Model.ClientUsedForCalc)
{
<div class="form-group">
<label class="form-label">主协议编号</label>
<select class="form-input" name="MainProtocolCode" id="MainProtocolCode">
</select>
</div>
<div class="form-group">
<label class="formlabel">补充协议编号</label>
<select class="form-input" name="SupProtocolCode" id="SupProtocolCode">
</select>
</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="saveGroupTrade()">录入组合交易</button>
<button type="button" class="btn btn-primary btn-close" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
</div>
<!--对冲下单-->
<form id="orderForm" action="/RiskHedging/HedgingOrder" method="post" target="_blank" class="sr-only">
<input type="hidden" name="InstType" value="" />
</form>
@await Html.PartialAsync("_SyntheticPrice")
@await Html.PartialAsync("/Views/trade/_part/SalesCommission.cshtml", new SalesCommissionModel() { Disabled = false, ViewType = "期权" })
<!--自定义模板-->
<div class="modal" tabindex="-1" id="modalTemplate">
<div class="modal-dialog">
<div class="modal-content">
<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">
<template v-if="saveMode">
<form id="formTemplateSave" onsubmit="return false;">
<div class="form-group">
<label>模板名称</label>
<input type="text" class="form-control text-left" style="width:100%;" maxlength="50" v-model="saveData.name">
</div>
<div class="form-group">
<div><label><input type="checkbox" v-model="saveData._override" checked="" class="mr-1">覆盖已存在的模板</label></div>
<div>
<label><input type="checkbox" v-model="saveData._CommonTemplate" checked="" class="mr-1">保存为公共模板</label>
</div>
</div>
<div class="form-group text-center">
<button type="button" class="btn btn-primary" v-on:click="saveTemplate">保存模板</button>
</div>
</form>
</template>
<template v-else>
<div class="row">
<div class="col">
<div class="yt-input-group d-inline-block">
<input type="text" class="search" v-model="searchText" placeholder="搜索" v-on:input="searchList" />
<a href="javascript:void(0)" class="yt-input-group-append show" v-on:click="searchList('reset')" style="padding-top:4px;" title="清除搜索"><i class="fa fa-remove"></i></a>
</div>
</div>
<div class="col text-right">
<a href="javascript:void(0)" v-on:click="refreshList" title="重新加载列表" style="line-height:30px;"><i class="fa fa-refresh"></i></a>
</div>
</div>
<hr />
<ul class="list-group list-group-flush yt-template-group border">
<li class="list-group-item yt-template-item" v-for="item in listData" v-show="item.show">
<a href="javascript:void(0)" title="删除" class="yt-template-remove" v-on:click="removeTemplate(item.id)"><i class="fa fa-remove"></i></a>
<a href="javascript:void(0)" v-on:click="loadTemplate" class="yt-template-link">{{item.name}}</a><span>{{item.ConfigType==3?"公共模板":"个人模板"}}</span>
</li>
</ul>
</template>
</div>
</div>
</div>
</div>
@@ -1,905 +0,0 @@
@*定价模板*@
@model PricingModel
@{ Layout = null;}
<template id="pricingItem_tpl">
<div v-bind:class="isTitle?'pricing-titles':'pricing-trade'">
<div class="ptitle screenshot-hide" v-if="!pageVue.IsImport">交易序号</div>
<template v-if="pageVue.ClientUsedForCalc">
<div class="ptitle">客户名称</div>
<div class="pitem pitem-cash" v-show="!trade.hideCommen" v-bind:class="trade.hideCommen ? 'topborder' : ''">
<vue-client v-model="trade.ClientId" v-on:input="changeClient" :update="updateKey.client" />
</div>
<div class="pitem empty" v-show="trade.hideCommen" v-bind:class="trade.hideCommen ? 'topborder' : ''"></div>
</template>
<div class="ptitle">期权类型</div>
<div class="pitem" v-show="!trade.hideCommen">
<vue-tradetype v-model="trade.TradeType" v-on:input="changeTradeType" v-bind:disabled="!!trade.StructureType" />
</div>
<div class="pitem empty" v-show="trade.hideCommen" v-bind:class="!pageVue.ClientUsedForCalc && trade.hideCommen ? 'topborder' : ''"></div>
<div class="pitem-cash">
<span>现金流</span>
</div>
<template v-if="!topVue.simpleMode" style="display:none">
<div class="ptitle screenshot-hide">标的类型</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-niceselect name="UnderlyingInstrumentType" :items="tradeHelper.InstrumentTypes" v-model="trade.UnderlyingInstrumentType" v-on:input="changeInstrumentType" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">标的品种</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-variety v-bind:variety="viewState.variety" v-on:change-variety="changeVariety" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
<div class="ptitle">标的代码</div>
<div class="pitem" v-show="!trade.hideCommen">
<vue-underlying v-bind:underlying="viewState.underlying" v-on:change-underlying="changeUnderlying" />
</div>
<div class="pitem empty" v-show="trade.hideCommen"></div>
<div class="pitem-cash"></div>
<div class="ptitle">成交数量</div>
<div class="pitem" v-show="!trade.hideCommen || trade.StructureType == '蝶式组合'">
<vue-number-input v-model="trade.TradeAmountV" v-on:input="changeTradeAmountV" v-bind:format="inputFormatTradeAmountV" v-bind:disabled="!!trade.IsUsePremiumRate"></vue-number-input>
</div>
<div class="pitem empty" v-show="trade.hideCommen && trade.StructureType != '蝶式组合'"></div>
<div class="pitem-cash"></div>
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">有效成交数量</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen || trade.StructureType == '蝶式组合'">
<vue-number-input v-model="trade.TradeAmount" v-on:input="changeTradeAmount" v-bind:format="inputFormatTradeAmount" v-bind:disabled="!!trade.IsUsePremiumRate"></vue-number-input>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen && trade.StructureType != '蝶式组合'"></div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">名义本金</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen || trade.StructureType == '蝶式组合'">
<input type="number" v-bind:disabled="!trade.IsUsePremiumRate" v-model="trade.StockEqvNotional" v-on:change="changeStockEqvNotional" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen && trade.StructureType != '蝶式组合'"></div>
<div class="ptitle screenshot-hide">有效名义本金</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen || trade.StructureType == '蝶式组合'">
<input type="number" v-bind:disabled="!trade.IsUsePremiumRate" v-model="trade.StockEqvNotionalReal" v-on:change="changeStockEqvNotionalReal" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen && trade.StructureType != '蝶式组合'"></div>
</template>
<template v-if="!floating||fieldState.ExerciseMode">
<div class="ptitle">行权方式</div>
<div class="pitem" v-show="!trade.hideCommen">
<vue-niceselect name="ExerciseMode" :items="tradeHelper.ExerciseModes" v-model="trade.ExerciseMode" v-on:input="changeExerciseMode" v-if="showExerciseMode" v-bind:disabled="showExerciseMode===1" />
</div>
<div class="pitem empty" v-bind:class="trade.StructureType == '蝶式组合' ? 'topborder' : ''" v-show="trade.hideCommen"></div>
<div class="pitem-cash"></div>
</template>
<div class="ptitle">交易日期</div>
<div class="pitem pitem-cash" v-show="!trade.hideCommen">
<vue-datepicker :maxdate="trade.ExerciseDate" v-model="trade.TradeDate" :noholiday="fieldState.Cashflow" v-on:input="changeTradeDate" />
</div>
<div class="pitem empty" v-show="trade.hideCommen"></div>
<div class="ptitle">到期日期</div>
<div class="pitem pitem-cash" v-show="!trade.hideCommen || trade.StructureType == '日历价差'">
<vue-datepicker :maxdate="trade.MaturityDate" v-model="trade.ExerciseDate" :noholiday="fieldState.Cashflow" v-on:input="changeExerciseDate" />
</div>
<div class="pitem empty" v-show="trade.hideCommen && trade.StructureType != '日历价差'"></div>
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">结算日期</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen || trade.StructureType == '日历价差'">
<vue-datepicker v-model="trade.SettlementDate" :noholiday="fieldState.Cashflow" v-on:input="changeSettlementDate" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen && trade.StructureType != '日历价差'"></div>
</template>
<div class="ptitle">期初标的价格</div>
<div class="pitem seal" v-show="!trade.hideCommen">
<div class="yt-input-group" v-bind:class="viewState.SpotPrice">
<input type="number" class="has-popover-syn" v-model="trade.SpotPrice" v-on:input="changeSpotPrice(true)" v-on:blur="blurSpotPrice" v-bind:step="getPriceTick()" v-bind:readonly="!!viewState.synthetic" v-bind:data-calcid="trade.CalcId" max="999999" min="-999999" />
<a href="javascript:;" v-on:click="getSpotPrice" title="获取系统的期初标的价格" class="yt-input-group-append s1" tabindex="-1">
<i class="fa fa-refresh"></i>
</a>
</div>
</div>
<div class="pitem empty" v-bind:class="trade.StructureType == '日历价差' ? 'topborder' : ''" v-show="trade.hideCommen"></div>
<div class="pitem-cash seal"><span class="sr-only">期初标的价格</span></div>
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">标的价格</div>
<div class="pitem seal screenshot-hide" v-show="!trade.hideCommen">
<div class="yt-input-group">
<input type="number" v-model="trade.UnderlyingPrice" v-on:input="synchTrade" max="999999" min="-999999" step="0.01" />
<a href="javascript:;" v-on:click="getUnderlyingPrice" title="获取系统的标的价格" class="yt-input-group-append s1" tabindex="-1">
<i class="fa fa-refresh"></i>
</a>
</div>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash seal screenshot-hide"><span class="sr-only">标的价格</span></div>
</template>
<div class="ptitle" v-show="!floating||!fieldState.AutoCall&&!fieldState.SnowBall">执行价格</div>
<div class="pitem seal" v-show="!floating||!fieldState.AutoCall&&!fieldState.SnowBall">
<div class="yt-input-group" v-if="!fieldState.AutoCall&&!fieldState.SnowBall&&trade.StrikeType!=='Floating'">
<vue-number-input name="Strike" v-model="trade.Strike" v-on:input="changeStrike" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append" tabindex="-1">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比">¥</a>
</span>
</div>
</div>
<div class="pitem-cash"><span class="sr-only">执行价格</span></div>
<template v-if="!floating||fieldState.OptionType">
<div class="ptitle">看涨看跌</div>
<div class="pitem">
<vue-niceselect name="OptionType" :items="tradeHelper.OptionTypes" v-model="trade.OptionType" v-if="showOptionType" />
</div>
<div class="pitem-cash"></div>
</template>
<div class="ptitle">交易方向</div>
<div class="pitem pitem-cash">
<vue-niceselect name="BuySell" :items="consBuysellTypes" v-model="trade.BuySell" v-on:input="changeBuySell" />
</div>
<div class="ptitle">权利金</div>
<div class="pitem yt-input-group">
<template v-if="trade.IsUsePremiumRate">
<vue-number-input name="PremiumRate" v-model="trade.PremiumRate" v-on:input="changePremiumRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<a href="javascript:;" title="点击后切换成绝对值权利金" v-on:click="showAbsPrice" class="yt-input-group-append" tabindex="-1">%</a>
</template>
<template v-else>
<vue-number-input name="TradeSinglePrice" v-model="trade.TradeSinglePrice" v-on:input="changeTradeSinglePrice" v-bind:format="inputFormatSinglePriceOnly"></vue-number-input>
<a href="javascript:;" title="点击后切换成标的价格百分比" v-on:click="showPercentPrice" class="yt-input-group-append" tabindex="-1">¥</a>
</template>
</div>
<div class="pitem-cash"></div>
<!--简单模式-->
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">参与率</div>
<div class="pitem screenshot-hide">
<vue-number-input v-model="trade.ParticipationRate" v-on:input="changeEffectRatio" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">保底收益</div>
<div class="pitem screenshot-hide">
<template v-if="trade.IsUsePremiumRate">
<vue-number-input name="PrincipalRateWrite" v-model="trade.PrincipalRateWrite" v-on:input="changeEffectRatio" v-bind:format="inputFormatPremiumRate"></vue-number-input>
</template>
<template v-else>
<vue-number-input name="SinglePrincipalWrite" v-model="trade.SinglePrincipalWrite" v-on:input="changeEffectRatio" v-bind:format="inputFormatSinglePrincipalOnly"></vue-number-input>
</template>
</div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">保底收益总额</div>
<div class="pitem yt-input-group screenshot-hide">
<vue-number-input name="OriginalPrincipalSum" v-model="trade.OriginalPrincipalSum" v-bind:format="inputFormatDouble2" v-on:input="changePrincipalSum"></vue-number-input>
<a href="javascript:;" v-on:click="changeEffectRatio" title="计算保底收益总额" class="yt-input-group-append s1" tabindex="-1">
<i class="fa fa-refresh"></i>
</a>
</div>
</template>
<div class="ptitle">成交金额</div>
<div class="pitem pitem-cash">
<vue-number-input v-model="trade.TradePrice" v-bind:disabled="!fieldState.Cashflow" v-bind:format="inputFormatTradePrice"></vue-number-input>
</div>
<div class="pitem-cash"></div>
<!--初始预付金-->
@if (Model.ShowInitialMargin)
{
//组合交易初始预付金不需要展示,只需要展示组合预付金
<template v-if="topVue.calcMargin && !fieldState.ShowTotal">
<div class="ptitle">初始预付金</div>
<div class="pitem">
<div class="yt-input-group" v-bind:class="viewState.InitialMargin">
<vue-number-input v-on:change="changeInitialMargin" v-model="trade.InitialMargin" v-bind:format="inputFormatTradePrice" step="0.1"></vue-number-input>
<a href="javascript:;" v-on:click="getInitialMargin" title="使用系统计算的初始预付金" class="yt-input-group-append s1">
<i class="fa fa-refresh"></i>
</a>
</div>
</div>
<div class="pitem-cash"></div>
</template>
}
<template v-if="fieldState.ShowTotal">
<div class="ptitle">组合价格</div>
<div class="pitem pitem-cash" v-show="!trade.hideCommen">
<vue-number-input v-model="trade.TotalTradePrice" v-bind:format="inputFormatTradePrice" disabled></vue-number-input>
</div>
<div class="pitem empty topborder" v-show="trade.hideCommen"></div>
<div class="pitem-cash"></div>
</template>
@if (Model.ShowInitialMargin)
{
<template v-if="topVue.calcMargin && fieldState.ShowTotal">
<div class="ptitle">组合预付金</div>
<div class="pitem" v-show="!trade.hideCommen">
<div class="yt-input-group" v-bind:class="viewState.InitialMargin">
<vue-number-input v-model="trade.TotalInitialMargin" v-bind:format="inputFormatTradePrice" disabled></vue-number-input>
</div>
</div>
<div class="pitem empty" v-show="trade.hideCommen"></div>
<div class="pitem-cash"></div>
</template>
}
<!--奇异期权-->
<template v-if="floating">
<!--------------二元期权---------------->
<template v-if="fieldState.BinaryOption">
<div class="ptitle">二元类型</div>
<div class="pitem">
<vue-niceselect name="PayoffType" :items="binaryPayoffTypes" v-model="trade.PayoffType" v-on:input="changePayoffType" />
</div>
<div class="ptitle">补偿金额</div>
<div class="pitem">
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.CashOrNothingAmountRate" v-bind:format="inputFormatPremiumRate" v-bind:disabled="trade.PayoffType==='AssetOrNothing'"></vue-number-input>
<vue-number-input v-else v-model="trade.CashOrNothingAmount" v-bind:format="inputFormatSinglePrice" v-bind:disabled="trade.PayoffType==='AssetOrNothing'"></vue-number-input>
</div>
<template v-if="fieldState.ExerciseMode>10">
<template v-if="fieldState.PayoffTypeShow">
<div class="ptitle">高障碍价格</div>
<div class="pitem">
<vue-number-input v-model="trade.BarrierHigh" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">高障碍补偿金额</div>
<div class="pitem">
<div>
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.CashOrNothingAmountHighRate" v-bind:format="inputFormatPremiumRate" v-bind:disabled="trade.PayoffType=='DoubleNoTouch'&&trade.ExerciseMode=='American'"></vue-number-input>
<vue-number-input v-else v-model="trade.CashOrNothingAmountHigh" v-bind:format="inputFormatSinglePrice" v-bind:disabled="trade.PayoffType=='DoubleNoTouch'&&trade.ExerciseMode=='American'"></vue-number-input>
</div>
</div>
</template>
<div class="ptitle">观察方式</div>
<div class="pitem">
<vue-niceselect name="MonitorType" :items="consMonitorTypes" v-model="trade.MonitorType" />
</div>
<div class="ptitle">补偿支付</div>
<div class="pitem">
<vue-niceselect name="RebateType" :items="binaryRebateTypes" v-model="trade.RebateType" />
</div>
</template>
<div class="ptitle">补偿按敲出日年化</div>
<div class="pitem">
<vue-niceselect name="RebateAnnualizedAtKO" :items="consFalseAsNo" v-model="trade.RebateAnnualizedAtKO" v-bind:disabled="trade.ExerciseMode === 'European' || this.trade.PayoffType === 'UpNoTouch' || this.trade.PayoffType === 'DownNoTouch' || this.trade.PayoffType === 'DoubleNoTouch'" />
</div>
<div class="ptitle">补偿计息规则</div>
<div class="pitem">
<vue-daycount v-if="trade.RebateAnnualizedAtKO" name="RebateDayCount" v-model="trade.RebateDayCount" />
</div>
</template>
<!--------------障碍期权---------------->
<template v-if="fieldState.BarrierOption">
<div class="ptitle">障碍类型</div>
<div class="pitem">
<vue-niceselect name="BarrierType" :items="consBarrierTypes" v-model="trade.BarrierType" v-on:input="changeFieldState" />
</div>
<div class="ptitle">障碍价格</div>
<div class="pitem">
<vue-number-input v-model="trade.BarrierLow" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">高障碍价格</div>
<div class="pitem">
<vue-number-input v-if="(trade.BarrierType || '').startsWith('双')" v-model="trade.BarrierHigh" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">补偿金额</div>
<div class="pitem">
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.RebateRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<vue-number-input v-else v-model="trade.Rebate" v-bind:format="inputFormatSinglePrice"></vue-number-input>
</div>
<div class="ptitle" v-show="fieldState.IsBarrierType">高障碍补偿金额</div>
<div class="pitem" v-show="fieldState.IsBarrierType">
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.RebateHighRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<vue-number-input v-else v-model="trade.RebateHigh" v-bind:format="inputFormatSinglePrice"></vue-number-input>
</div>
<div class="ptitle">障碍偏移</div>
<div class="pitem">
<input type="number" v-model="trade.BarrierShift" />
</div>
<div class="ptitle">观察方式</div>
<div class="pitem">
<vue-niceselect name="MonitorType" :items="consMonitorTypes" v-model="trade.MonitorType" />
</div>
<div class="ptitle">补偿支付</div>
<div class="pitem">
<vue-niceselect name="RebateType" :items="consRebateTypes" v-model="trade.RebateType" />
</div>
<div class="ptitle">补偿按敲出日年化</div>
<div class="pitem">
<vue-niceselect v-if="(trade.BarrierType || '').endsWith('敲出')" name="RebateAnnualizedAtKO" :items="consFalseAsNo" v-model="trade.RebateAnnualizedAtKO" />
</div>
<div class="ptitle">补偿计息规则</div>
<div class="pitem">
<vue-daycount v-if="trade.RebateAnnualizedAtKO" name="RebateDayCount" v-model="trade.RebateDayCount" />
</div>
</template>
<!--------------双鲨期权---------------->
<template v-if="fieldState.DBSharkOption">
<div class="ptitle">障碍价格</div>
<div class="pitem">
<vue-number-input v-model="trade.BarrierLow" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">高障碍价格</div>
<div class="pitem">
<vue-number-input v-model="trade.BarrierHigh" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">高行权价</div>
<div class="pitem">
<vue-number-input v-model="trade.StrikeHigh" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">补偿金额</div>
<div class="pitem">
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.RebateRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<vue-number-input v-else v-model="trade.Rebate" v-bind:format="inputFormatSinglePrice"></vue-number-input>
</div>
<div class="ptitle">高障碍补偿金额</div>
<div class="pitem">
<vue-number-input v-if="trade.IsUsePremiumRate" v-model="trade.RebateHighRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<vue-number-input v-else v-model="trade.RebateHigh" v-bind:format="inputFormatSinglePrice"></vue-number-input>
</div>
<div class="ptitle">高参与率</div>
<div class="pitem">
<vue-number-input v-model="trade.CallParticipationRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="ptitle">低参与率</div>
<div class="pitem">
<vue-number-input v-model="trade.PutParticipationRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="ptitle">观察方式</div>
<div class="pitem">
<vue-niceselect name="MonitorType" :items="consMonitorTypes" v-model="trade.MonitorType" />
</div>
<div class="ptitle">补偿支付</div>
<div class="pitem">
<vue-niceselect name="RebateType" :items="consRebateTypes" v-model="trade.RebateType" />
</div>
</template>
<!--------------亚式期权---------------->
<template v-if="fieldState.AsiaOption">
<div class="ptitle">均价起算日</div>
<div class="pitem">
<vue-datepicker v-model="trade.AveragingPeriodStartDate" />
</div>
<div class="ptitle">均价计算</div>
<div class="pitem">
<vue-niceselect name="PayoffType" :items="consAsiaPayoffType" v-model="trade.PayoffType" v-on:input="changePayOffType" />
</div>
<div class="ptitle" id="EnhancedPriceTitle" v-show="trade.PayoffType=='EnhancedArithmeticAverage'&&trade.StrikeType!='Floating'">增强价格</div>
<div class="pitem" v-show="trade.PayoffType=='EnhancedArithmeticAverage'&&trade.StrikeType!='Floating'">
<vue-number-input v-model="trade.EnhancedPrice" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">行权价类型</div>
<div class="pitem">
<vue-niceselect name="StrikeType" :items="consAsiaStrikeType" v-model="trade.StrikeType" v-on:input="changeStrikeType" />
</div>
<div class="ptitle">杠杆率</div>
<div class="pitem">
<vue-number-input v-model="trade.StrikeGearingFactor" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<!----------------雪球期权---------------->
<template v-if="fieldState.SnowBall">
<!---雪球期权敲出--->
<div class="ptitle">敲出障碍价格</div>
<div class="pitem">
<div class="yt-input-group">
<vue-number-input v-model="trade.KOBarrier" v-on:input="changeKOBarrier" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格" tabindex="-1">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比" tabindex="-1">¥</a>
</span>
</div>
</div>
<div class="ptitle">敲出赔付类别</div>
<div class="pitem">
<vue-niceselect name="KOPayoffType" :items="snowballKOPayoffTypeEnums" v-model="trade.KOPayoffType" v-on:input="changeFieldState" />
</div>
<div class="ptitle" v-show="fieldState.IsFixedCoupon">票息年化</div>
<div class="pitem" v-show="fieldState.IsFixedCoupon">
<vue-niceselect name="IsFixedCoupon" :items="consFalseAsYes" v-model="trade.IsFixedCoupon" />
</div>
<div class="ptitle" v-show="fieldState.KORebate">票息率</div>
<div class="pitem yt-input-group" v-show="fieldState.KORebate">
<div><vue-number-input v-model="trade.KORebate" v-on:input="changeRebate" v-bind:format="inputFormatPremiumRate"></vue-number-input></div>
<a href="javascript:;" v-on:click="calcKORebate()" class="yt-input-group-append" tabindex="-1">
<span title="根据权利金反算票息" class="fa fa-refresh"></span>
</a>
</div>
<div class="ptitle" v-show="fieldState.IsFixedCoupon">票息日历规则</div>
<div class="pitem" v-show="fieldState.IsFixedCoupon">
<vue-daycount name="CouponDayCount" v-model="trade.CouponDayCount" />
</div>
<div class="ptitle" v-show="fieldState.KORebate">票息包含首日</div>
<div class="pitem" v-show="fieldState.KORebate">
<vue-niceselect name="CouponIncludeStartDate" :items="consFalseAsNo" v-model="trade.CouponIncludeStartDate" v-once />
</div>
<div class="ptitle" v-show="fieldState.KORebate">使用支付日计息</div>
<div class="pitem" v-show="fieldState.KORebate">
<vue-niceselect name="CouponUsePaymentDate" :items="consFalseAsNo" v-model="trade.CouponUsePaymentDate" />
</div>
<div class="ptitle" v-show="fieldState.AnnualizedPremiumRate">年化期权费率</div>
<div class="pitem yt-input-group " v-show="fieldState.AnnualizedPremiumRate">
<div><vue-number-input v-model="trade.AnnualizedPremiumRate" v-bind:format="inputFormatPremiumRate"></vue-number-input></div>
<a href="javascript:;" v-on:click="calcSnowballAnnualPremium()" class="yt-input-group-append" tabindex="-1">
<span title="保本雪球计算年化期权费率" class="fa fa-refresh"></span>
</a>
</div>
<div class="ptitle" v-show="fieldState.SpreadStrikeAtKO1">敲出行权价1</div>
<div class="pitem" v-show="fieldState.SpreadStrikeAtKO1">
<vue-number-input v-model="trade.SpreadStrikeAtKO1" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle" v-show="fieldState.SpreadStrikeAtKO">敲出行权价2</div>
<div class="pitem" v-show="fieldState.SpreadStrikeAtKO">
<vue-number-input v-model="trade.SpreadStrikeAtKO" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">敲出支付方式</div>
<div class="pitem">
<vue-niceselect name="KORebateType" :items="consKORebateTypes" v-model="trade.KORebateType" />
</div>
<div class="ptitle screenshot-hide">敲出观察频率</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="koObservationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#KO')" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
<!---雪球期权敲入--->
<div class="ptitle screenshot-hide">敲入观察频率</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="observationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#KI')" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
<div class="ptitle">敲入障碍价格</div>
<div class="pitem">
<div class="yt-input-group">
<vue-number-input v-model="trade.KIBarrier" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格" tabindex="-1">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比" tabindex="-1">¥</a>
</span>
</div>
</div>
<div class="ptitle">敲入到期支付类别</div>
<div class="pitem">
<vue-niceselect name="KIPayoffType" :items="snowballKIPayoffTypeEnums" v-model="trade.KIPayoffType" v-on:input="changeFieldState" :key="updateKey.KIPayoffType" />
</div>
<div class="ptitle" v-show="fieldState.SpreadStrike1">敲入行权价</div>
<div class="pitem" v-show="fieldState.SpreadStrike1">
<vue-number-input v-model="trade.SpreadStrike1" v-bind:format="inputFormatStrike" v-on:input="changeSpreadStrike1"></vue-number-input>
</div>
<div class="ptitle" v-show="fieldState.SpreadStrike">封底/封顶行权价</div>
<div class="pitem" v-show="fieldState.SpreadStrike">
<vue-number-input v-model="trade.SpreadStrike" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">红利票息</div>
<div class="pitem">
<vue-number-input v-model="trade.Coupon" v-bind:format="inputFormatPremiumRate"></vue-number-input>
</div>
</template>
<!--------------凤凰期权---------------->
<template v-if="fieldState.AutoCall">
<div class="ptitle">票息年化</div>
<div class="pitem">
<vue-niceselect name="IsFixedCoupon" :items="consFalseAsYes" v-model="trade.IsFixedCoupon" />
</div>
<div class="ptitle">票息率</div>
<div class="pitem yt-input-group">
<vue-number-input name="Coupon" v-model="trade.Coupon" v-on:input="changeRebate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
<a href="javascript:;" v-on:click="calcPhoenixCouponRate()" class="yt-input-group-append" tabindex="-1">
<span title="根据权利金反算票息" class="fa fa-refresh"></span>
</a>
</div>
<div class="ptitle">票息障碍价格</div>
<div class="pitem">
<div class="yt-input-group">
<vue-number-input v-model="trade.CouponBarrier" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格" tabindex="-1">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比" tabindex="-1">¥</a>
</span>
</div>
</div>
<div class="ptitle">票息日历规则</div>
<div class="pitem">
<vue-daycount name="CouponDayCount" v-model="trade.CouponDayCount" />
</div>
<div class="ptitle">票息包含首日</div>
<div class="pitem">
<vue-niceselect name="CouponIncludeStartDate" :items="consFalseAsNo" v-model="trade.CouponIncludeStartDate" v-once />
</div>
<div class="ptitle">票息结算方式</div>
<div class="pitem">
<vue-niceselect name="CouponPayType" :items="consCouponPayTypes" v-model="trade.CouponPayType" v-on:input="changeCouponPayType" />
</div>
<div class="ptitle">敲出障碍价格</div>
<div class="pitem">
<div class="yt-input-group">
<vue-number-input v-model="trade.KOBarrier" v-on:input="changeKOBarrier" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格" tabindex="-1">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比" tabindex="-1">¥</a>
</span>
</div>
</div>
<div class="ptitle screenshot-hide">敲出观察频率</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="koObservationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#KO')" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
<div class="ptitle screenshot-hide">敲入观察频率</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="observationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#KI')" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
<div class="ptitle">敲入障碍价格</div>
<div class="pitem">
<div class="yt-input-group">
<vue-number-input v-model="trade.KIBarrier" v-bind:format="inputFormatStrike"></vue-number-input>
<span class="yt-input-group-append">
<a href="javascript:;" v-if="trade.IsMoneynessOption==='是'" v-on:click="showAbsStrike" title="点击后切换成绝对值执行价格" tabindex="-1">%</a>
<a href="javascript:;" v-else v-on:click="showPercentStrike" title="点击后切换成标的价格百分比" tabindex="-1">¥</a>
</span>
</div>
</div>
<div class="ptitle">敲入到期是否支付票息</div>
<div class="pitem">
<div v-if="trade.CouponPayType===2">
<vue-niceselect name="IncludeCouponAfterKI" :items="consTrueAsYes" v-model="trade.IncludeCouponAfterKI" />
</div>
<div v-else>是</div>
</div>
<div class="ptitle">敲入到期支付类别</div>
<div class="pitem">
<vue-niceselect name="KIPayoffType" :items="autocallKIPayoffTypeEnums" v-model="trade.KIPayoffType" v-on:input="changeFieldState" :key="updateKey.KIPayoffType" />
</div>
<div class="ptitle" v-show="fieldState.SpreadStrike1">敲入行权价</div>
<div class="pitem" v-show="fieldState.SpreadStrike1">
<vue-number-input v-model="trade.SpreadStrike1" v-bind:format="inputFormatStrike" v-on:input="changeSpreadStrike1"></vue-number-input>
</div>
<div class="ptitle" v-show="fieldState.SpreadStrike">封顶/封底行权价</div>
<div class="pitem" v-show="fieldState.SpreadStrike">
<vue-number-input v-model="trade.SpreadStrike" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
</template>
<!--------------区间累计---------------->
<template v-if="fieldState.RangeAcc">
<div class="ptitle">区间下限</div>
<div class="pitem">
<vue-number-input v-model="trade.LowerRange" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">区间上限</div>
<div class="pitem">
<vue-number-input v-model="trade.UpperRange" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">区间收益</div>
<div class="pitem">
<vue-number-input v-model="trade.BonusRate" v-bind:format="inputFormatPercent4"></vue-number-input>
</div>
</template>
<!--------------气囊结构---------------->
<template v-if="fieldState.AirBag">
<div class="ptitle">障碍价格</div>
<div class="pitem">
<vue-number-input v-model="trade.BarrierLow" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
<div class="ptitle">观察方式</div>
<div class="pitem">
<vue-niceselect name="IsDiscreteMonitored" :items="consIsDiscreteMonitored" v-model="trade.IsDiscreteMonitored" />
</div>
<div class="ptitle">敲入参与率</div>
<div class="pitem">
<vue-number-input v-model="trade.KIParticipationRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="ptitle">收益封顶</div>
<div class="pitem">
<vue-niceselect name="HasPayoffLimit" :items="consTrueAsYes" v-model="trade.HasPayoffLimit" />
</div>
<div class="ptitle">收益封顶价格</div>
<div class="pitem">
<vue-number-input v-model="trade.HighStrike" v-bind:format="inputFormatStrike"></vue-number-input>
</div>
</template>
<!--------------收益增强结构---------------->
<template v-if="fieldState.UnEnhance">
<div class="ptitle">年化增强收益</div>
<div class="pitem">
<vue-number-input v-model="trade.AnnualizedEnhanceRate" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<!--------------现金流交易-------------->
<template v-if="fieldState.Cashflow">
<div class="ptitle">利率</div>
<div class="pitem-cash">
<vue-number-input name="ProfitRate" v-model="trade.ProfitRate" v-bind:format="inputFormatPremiumRate"></vue-number-input>
</div>
<div class="ptitle">资金类型</div>
<div class="pitem-cash">
<vue-niceselect name="DepositType" :items="consDepositType" v-model="trade.DepositType" v-on:input="changeDepositType" />
</div>
<div class="ptitle">利率类型</div>
<div class="pitem-cash">
<vue-niceselect name="RateType" :items="consRateType" v-model="trade.RateType" />
</div>
<div class="ptitle">计算日历规则</div>
<div class="pitem-cash">
<vue-daycount name="CouponDayCount" v-model="trade.CouponDayCount" />
</div>
<div class="ptitle">预付返还比例</div>
<div class="pitem-cash">
<vue-number-input v-show="trade.DepositType=='0'" name="PrepayRatio" v-model="trade.PrepayRatio" v-bind:format="inputFormatPremiumRate"></vue-number-input>
</div>
</template>
<!--------------观察频率---------------->
<template v-if="fieldState.ObservationDatesShow">
<div class="ptitle screenshot-hide">观察频率</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group" v-if="trade.TradeType!=='二元期权'||(trade.TradeType==='二元期权'&&trade.ExerciseMode === 'American')">
<input type="text" v-model="observationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#KI')">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
</template>
</template>
<div class="ptitle screenshot-hide">成交波动率</div>
<div class="pitem screenshot-hide yt-input-group" v-bind:class="viewState.VolState">
<vue-number-input v-model="trade.Vol" v-bind:format="inputFormatVolPercent" v-on:input="changeOpenVolatility"></vue-number-input>
<a href="javascript:;" v-on:click="getTradeOpenVolatility" title="更新波动率" class="yt-input-group-append" tabindex="-1">
<i class="fa fa-refresh"></i>
</a>
<a href="javascript:;" v-on:click="getTradeImpliedVol" title="计算隐含波动率" class="yt-input-group-append s1" tabindex="-1" v-show="trade.TradeType==='香草期权'">
<i class="fa fa-calculator"></i>
</a>
</div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">Mid Vol</div>
<div class="pitem screenshot-hide yt-input-group" v-bind:class="viewState.MidVolState">
<vue-number-input v-model="trade.MidVol" v-bind:format="inputFormatVolPercent" v-on:input="changeOpenMidVolatility"></vue-number-input>
<a href="javascript:;" v-on:click="getTradeMidVolatility" title="更新Mid Vol" class="yt-input-group-append" tabindex="-1">
<i class="fa fa-refresh"></i>
</a>
</div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">Day1 Pnl</div>
<div class="pitem pitem-cash screenshot-hide">
<input type="number" v-model="trade.Day1Pnl" v-bind:format="inputFormatVolPercent" disabled />
</div>
<!--收益结算-->
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">收益结算</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-niceselect name="SettlementType" :items="tradeHelper.SettlementTypes" v-model="trade.SettlementType" v-on:input="synchTrade" />
</div>
<div class="pitem empty topborder screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">无风险利率</div>
<div class="pitem pitem-cash yt-input-group screenshot-hide" v-bind:class="viewState.NoRiskRate" v-show="!trade.hideCommen">
<vue-number-input v-model="trade.NoRiskRate" v-on:input="changeNoRiskRate" v-bind:format="inputFormatPercent"></vue-number-input>
<a href="javascript:;" v-on:click="getNoRiskRate" class="yt-input-group-append" tabindex="-1">
<span title="获取系统设定的无风险利率" class="fa fa-refresh"></span>
</a>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<template v-if="!floating&&fieldState.DividendRate">
<div class="ptitle screenshot-hide">分红率</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<div class="yt-input-group" v-bind:class="viewState.DividendRate" v-if="trade.UnderlyingInstrumentType==='Stock'||trade.UnderlyingInstrumentType==='StockIndex'">
<vue-number-input v-model="trade.DividendRate" v-on:input="changeDividendRate" v-bind:format="inputFormatPercentN"></vue-number-input>
<a href="javascript:;" v-on:click="getDividendRate" class="yt-input-group-append" tabindex="-1">
<span title="获取系统设定的分红率" class="fa fa-refresh"></span>
</a>
</div>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
</template>
<div class="ptitle screenshot-hide">TTM(Days)</div>
<div class="pitem yt-input-group screenshot-hide" v-bind:class="viewState.TTMDays" v-show="!trade.hideCommen">
<input type="number" min="0" v-on:change="changeTTM" v-model="trade.TTMDays" />
<a href="javascript:;" v-on:click="getTTM(true)" class="yt-input-group-append s1" tabindex="-1">
<span title="获取交易日期和到期日期之间工作日的长度" class="fa fa-refresh"></span>
</a>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
<!--------------结构化产品-------------->
<template v-if="floating">
<template v-if="fieldState.Structure">
<div class="ptitle screenshot-hide">结算类型</div>
<div class="pitem screenshot-hide">
<vue-niceselect :items="consCashAsPhysical" v-model="viewState.CashOrPhysical" v-on:input="setcashOrPhysical" />
</div>
<div class="ptitle screenshot-hide">结构要素</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="structure" />
<a href="javascript:;" class="yt-input-group-append show" title="结构要素" v-on:click="setStructureList()" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
<div class="ptitle screenshot-hide">观察日</div>
<div class="pitem screenshot-hide">
<div class="yt-input-group">
<input type="text" v-model="observationRate" readonly />
<a href="javascript:;" class="yt-input-group-append show" title="设置观察日" v-on:click="setObservationDates('#ST')" tabindex="-1">
<i class="fa fa-pencil-square"></i>
</a>
</div>
</div>
</template>
</template>
<div class="ptitle screenshot-hide">工作日</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen">
<input type="number" v-model="trade.Weekdays" disabled />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="ptitle screenshot-hide">交易日</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen">
<input type="number" v-model="trade.TradingDays" disabled />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="ptitle screenshot-hide">公共假日</div>
<div class="pitem pitem-cash screenshot-hide" v-show="!trade.hideCommen">
<input type="number" v-model="trade.PublicHolidays" disabled />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<!--年化系数-->
<template v-if="!topVue.simpleMode">
<template v-if="fieldState.SnowBall||fieldState.AutoCall">
<div class="ptitle screenshot-hide">是否年化</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-niceselect name="IsAnnualized2" :items="consFalseAsNo" v-model="trade.IsAnnualized2" v-on:input="changeIsAnnualized" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">年化系数</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<div class="row no-gutters" v-if="trade.IsAnnualized2">
<div class="col">
<vue-number-input name="AnnualizeFactor2" v-model="AnnualizeFactor2.ttmDays" v-bind:format="inputFormatDouble2" v-on:input="changeAnnualizeFactor" class="text-right pr-2"></vue-number-input>
</div>
<div class="col-auto" style="width:1rem">/</div>
<div class="col">
<vue-number-input name="AnnualizeFactor2" v-model="AnnualizeFactor2.daysInYear" v-bind:format="inputFormatDouble2" v-on:input="changeAnnualizeFactor" class="text-left pl-2"></vue-number-input>
</div>
</div>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
<template v-else>
<div class="ptitle screenshot-hide">是否年化</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-niceselect name="IsAnnualized" :items="consFalseAsNo" v-model="trade.IsAnnualized" v-on:input="changeIsAnnualized" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
<div class="ptitle screenshot-hide">年化系数</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<div class="row no-gutters" v-if="trade.IsAnnualized">
<div class="col">
<vue-number-input v-model="AnnualizeFactor.ttmDays" v-bind:format="inputFormatDouble2" v-on:input="changeAnnualizeFactor" class="text-right pr-2"></vue-number-input>
</div>
<div class="col-auto" style="width:1rem">/</div>
<div class="col">
<vue-number-input v-model="AnnualizeFactor.daysInYear" v-bind:format="inputFormatDouble2" v-on:input="changeAnnualizeFactor" class="text-left pl-2"></vue-number-input>
</div>
</div>
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
</template>
<!--定价模型-->
<template v-if="!topVue.simpleMode">
<div class="ptitle screenshot-hide">定价模型</div>
<div class="pitem screenshot-hide" v-show="!trade.hideCommen">
<vue-niceselect name="EngineName" :items="engineNames" v-model="trade.EngineName" :disabled="!canEditEngineName" />
</div>
<div class="pitem empty screenshot-hide" v-show="trade.hideCommen"></div>
<div class="pitem-cash screenshot-hide"></div>
</template>
<!--单笔计算结果-->
<div class="ptitle screenshot-hide" style="height:130px;background: #fff;border:0;">
<div class="ptitle-calc-result" style="border-bottom:1px solid #ddd;">单笔计算结果</div>
<div style="height: 54px;" v-show="!floating">
<div>
<button type="button" class="btn btn-primary mt-3" onclick="pricingVue.calcPrice()">定价计算</button>
</div>
<div v-show="!topVue.simpleMode">
<button type="button" class="btn btn-primary mt-3" onclick="pricingVue.combine()">自由组合</button>
</div>
</div>
</div>
<div class="pitem pitem-cash border-0 screenshot-hide" style="height:130px">
<table class="table table-bordered table-calc-result-1">
<tbody>
<tr>
<th style="width:50%">PV</th>
<th style="width:50%" title="每报价单位Delta*手数">Delta</th>
</tr>
<tr>
<td style="width:50%">{{calcResult.Pv}}</td>
<td style="width:50%">{{calcResult.Delta}}</td>
</tr>
<tr>
<th title="每报价单位GammaCash*手数">GammaCash</th>
<th title="每报价单位Vega*交易份额">Vega</th>
</tr>
<tr>
<td>{{calcResult.GammaCash}}</td>
<td>{{calcResult.Vega}}</td>
</tr>
<tr>
<th title="每报价单位Theta*交易份额">Theta</th>
<th title="每报价单位Rho*交易份额*100">Rho</th>
</tr>
<tr>
<td>{{calcResult.Theta}}</td>
<td>{{calcResult.Rho}}</td>
</tr>
</tbody>
</table>
</div>
<div class="pitem screenshot-fill"></div>
</div>
</template>