874 lines
43 KiB
Plaintext
874 lines
43 KiB
Plaintext
@using YLErp
|
||
@model YLErp.Modules.TradeModule.ForwardModule.TradeCheckModel
|
||
@{
|
||
ViewBag.Title = "远期交易信息 | 编辑";
|
||
Layout = "~/Views/Shared/_InfoLayout.cshtml";
|
||
|
||
var tradeModel = Model.Trade;
|
||
var UnderlyingModel = Model.UnderlyingInfo;
|
||
var UnderlyingModel2 = ViewBag.Underlying2;
|
||
var generateAmendDoc = PS.Config.TradeElement.IsGenerateAmendDoc;
|
||
var needSendChangeEmail = PS.Config.TradeElement.IsAmendableAfterConfirm && PS.Config.TradeElement.IsGenerateAmendDoc;
|
||
var SalesCommission = Model.Trade.SalesCommission;
|
||
var type = string.IsNullOrWhiteSpace(tradeModel.StructureType) ? tradeModel.TradeType : tradeModel.StructureType;
|
||
var pageObj = new
|
||
{
|
||
CountRatio = Model.UnderlyingInfo.CountRatio,
|
||
ForwardTradePriceModel = PS.Config.ErpElement.ForwardTradePriceModel,
|
||
showHuaAn = PS.Config.Company == CompanyEnum.华安,
|
||
};
|
||
}
|
||
@section CSS{
|
||
<link rel="stylesheet" href="~/Style/Css/tradeEdit.css" />
|
||
<style>
|
||
.form-group { width: 400px; }
|
||
</style>
|
||
}
|
||
@section JS
|
||
{
|
||
<script>
|
||
const pageData = @Json.Serialize(pageObj);
|
||
</script>
|
||
<script src="@HtmlUtil.BasicDataJs("品种")"></script>
|
||
<script type="text/javascript">
|
||
//otcformat禁止千分位分组
|
||
window.otcformat.options.disableGrouping = true;
|
||
|
||
const consVarieties = ylotc.varieties;
|
||
var valuedate = moment("@valuedateBLL.ValueDate").format("YYYY-MM-DD");
|
||
var Mardate = "@UnderlyingModel.MaturityDate" == "" ? "" : moment("@UnderlyingModel.MaturityDate").format("YYYY-MM-DD");
|
||
var diffList = @(Json.Serialize(Model.diffList));
|
||
var salesCommissionCtrl;
|
||
var SalesCommission = @Json.Serialize(SalesCommission);
|
||
|
||
$(function () {
|
||
$("#OptionType").val('@tradeModel.OptionType');
|
||
$("#BuySell").val('@tradeModel.BuySell');
|
||
$("#MaturityDate").val(Mardate);
|
||
var Variety = $("#VarietyName").val();
|
||
var date = consVarieties.find(x => x.Name === Variety);
|
||
$("#TradeUnit").val(date.TradeUnit);
|
||
$("#QueteUnit").text(date.QuoteUnit);
|
||
main.setTradeDatePicker("", "#TradeDate", null, null, false);
|
||
main.setTradeDatePicker("", "#ExerciseDate", null, null, true);
|
||
main.setTradeDatePicker("", "#SettlementDate", null, null, true);
|
||
main.setTradeDatePicker("", "#ActualExerciseDate", null, null, true);
|
||
//$(".form-group").addClass("col-md-6");
|
||
changeForwardValue()
|
||
|
||
var assLiClickFlag = false;
|
||
$("#btn_save").on('click',
|
||
function () {
|
||
if (!assLiClickFlag) {
|
||
savetrade();
|
||
assLiClickFlag = true;
|
||
setTimeout(function () {
|
||
assLiClickFlag = false;
|
||
},
|
||
5000);
|
||
}
|
||
});
|
||
|
||
$("#SpotPrice").blur(function () {
|
||
});
|
||
$("#Lots").blur(function () {
|
||
$("#Lots").val(otcformat.trading.notional($("#Lots").val()) || 0);
|
||
changeLots();
|
||
changeForwardValue()
|
||
});
|
||
|
||
|
||
$("#TradeAmount").blur(function () {
|
||
|
||
var amount = $("#TradeAmount").val();
|
||
var lots = otcformat.trading.notional(amount / @UnderlyingModel.ContractSize);
|
||
$("#Lots").val(lots);
|
||
|
||
changeForwardValue()
|
||
});
|
||
|
||
$("#OpenCommission").blur(function () {
|
||
changeForwardValue()
|
||
});
|
||
showDiffWithReviewTrade();
|
||
|
||
if (SalesCommission && SalesCommission.Commission > 0) {
|
||
salesCommissionCtrl = new SalesCommissionCtrl(document.getElementById('salesCommissionCtrl'), SalesCommission);
|
||
}
|
||
});
|
||
|
||
|
||
function refreshUnderlyingPrice() {
|
||
main.post("/underlying_manager/underlyingGetById",
|
||
{ id: g_underlyingid, voltype: "交易" })
|
||
.done(function (res) {
|
||
$("#InitialSpotPrice").val(otcformat.trading.umprice(res.underlying_manager.Price));
|
||
changeForwardValue();
|
||
});
|
||
}
|
||
|
||
function showDiffWithReviewTrade() {
|
||
if (!diffList || !diffList.length) {
|
||
return;
|
||
}
|
||
diffList.forEach(function (curValue) {
|
||
$(`[name='${curValue}']`).parent()
|
||
.append('<span class="glyphicon glyphicon-remove not-match" style="color: red;"></span>');
|
||
});
|
||
}
|
||
|
||
//计算远期价值
|
||
//(交割价格- 期初价格) * 成交数量 * CountRatio *(多-1,空1)]*(买入1,卖出 - 1)
|
||
function changeForwardValue() {
|
||
if ($("#InitialSpotPrice").val() == "" || $("#Strike").val() == "" || !$("#OptionType").val()) {
|
||
return;
|
||
}
|
||
|
||
var optionType = $("#OptionType").val();
|
||
var buySell = $("#BuySell").val();
|
||
var initialPrice = numeral($("#InitialSpotPrice").val()).value();
|
||
var strikePrice = numeral($("#Strike").val()).value();
|
||
var tradeAmount = numeral($("#TradeAmount").val()).value();
|
||
var forwardValue = otcformat.trading.umprice((strikePrice - initialPrice) * tradeAmount * pageData.CountRatio * (optionType == "看涨" ? -1 : 1) * (buySell == "买入" ? 1 : -1));
|
||
$("#ForwardValue").val(forwardValue);
|
||
changeTradePrice();
|
||
|
||
}
|
||
|
||
$("#InitialSpotPrice,#Strike").change(function () {
|
||
var val = $(this).val();
|
||
if (val) {
|
||
$(this).val(otcformat.trading.umprice(val));
|
||
}
|
||
});
|
||
|
||
$("#TradeAmount,#Lots").change(function () {
|
||
var val = $(this).val();
|
||
if (val) {
|
||
$(this).val(otcformat.trading.notional(val));
|
||
}
|
||
});
|
||
|
||
$("#OpenCommission").change(function () {
|
||
var val = $(this).val();
|
||
if (val) {
|
||
$(this).val(otcformat.trading.umprice(val));
|
||
changeForwardValue();
|
||
}
|
||
});
|
||
|
||
$("#TradePrice").change(function () {
|
||
var TradePirce = $("#TradePrice").val();
|
||
var ForwardValue = $("#ForwardValue").val();
|
||
var Lots = $("#Lots").val();
|
||
var isSupplyForwardValue = $("#IsSupplyForwardValue").val();
|
||
|
||
let supplyPrice = isSupplyForwardValue == "1" ? ForwardValue : isSupplyForwardValue == "-1" ? -ForwardValue : 0;
|
||
var OpenCommission = otcformat.trading.TradePrice((parseFloat(TradePirce) - parseFloat(supplyPrice)) / parseFloat(Lots));
|
||
$("#OpenCommission").val(OpenCommission);
|
||
});
|
||
|
||
$("#AnnualStoragePrice").change(function () {
|
||
var val = $(this).val();
|
||
if (val) {
|
||
$(this).val(otcformat.trading.tradeSinglePrice(val));
|
||
}
|
||
});
|
||
|
||
$("#InitialSpotPrice,#Strike,#OptionType,#BuySell").change(function () {
|
||
changeForwardValue();
|
||
});
|
||
|
||
function savetrade() {
|
||
var callbackFunc = function () {
|
||
if (!checkSubmitData()) {
|
||
return false;
|
||
}
|
||
savetrade_inner();
|
||
};
|
||
icallbackFunc();
|
||
}
|
||
|
||
function checkSubmitData() {
|
||
var pass = $('#forwardTradeEditForm').valid();
|
||
var underid = $("#UnderlyingId").val();
|
||
|
||
//验证输入的日期格式是否正确(包括交易日期、开始日、到期日)
|
||
var ExerciseDate = $("#ExerciseDate").val();
|
||
var regTime = /^[0-9]{4}-[0-1]?[0-9]{1}-[0-3]?[0-9]{1}$/;
|
||
if (!main.isEmpty(ExerciseDate) && !regTime.test(ExerciseDate)) {
|
||
main.message("请输入正确的到期日期格式");
|
||
return false;
|
||
}
|
||
|
||
//验证输入的日期格式是否正确(包括交易日期、开始日、到期日)
|
||
var SettlementDate = $("#SettlementDate").val();
|
||
var regTime = /^[0-9]{4}-[0-1]?[0-9]{1}-[0-3]?[0-9]{1}$/;
|
||
if (!main.isEmpty(SettlementDate) && !regTime.test(SettlementDate)) {
|
||
main.message("请输入正确的结算日期格式");
|
||
return false;
|
||
}
|
||
|
||
//验证输入的日期格式是否正确(包括交易日期、开始日、到期日)
|
||
var ActualExerciseDate = $("#ActualExerciseDate").val();
|
||
var regTime = /^[0-9]{4}-[0-1]?[0-9]{1}-[0-3]?[0-9]{1}$/;
|
||
if (!main.isEmpty(ActualExerciseDate) && !regTime.test(ActualExerciseDate)) {
|
||
main.message("请输入正确的结算日期格式");
|
||
return false;
|
||
}
|
||
|
||
var InitialSpotPrice = $("#InitialSpotPrice").val();
|
||
if (main.isEmpty(InitialSpotPrice)) {
|
||
main.message("请输入期初标的价格");
|
||
return false;
|
||
}
|
||
|
||
var TradeDate = $("#TradeDate").val();
|
||
if (main.isEmpty(TradeDate)) {
|
||
main.message("请输入交易日期");
|
||
return false;
|
||
}
|
||
var regTime = /^[0-9]{4}-[0-1]?[0-9]{1}-[0-3]?[0-9]{1}$/;
|
||
if (!regTime.test(TradeDate)) {
|
||
main.message("请输入正确的交易日期格式");
|
||
return false;
|
||
}
|
||
|
||
if (!$("#UnderlyingId").parent().is(":hidden") && !underid) {
|
||
main.message("请设置标的信息");
|
||
return false;
|
||
}
|
||
if (!$('#AssetId').val()) {
|
||
main.message("请设置簿记账户");
|
||
return false;
|
||
}
|
||
|
||
if (!$("#TradeAmount").parent().is(":hidden") && $("#TradeAmount").val() <= 0) {
|
||
main.message("请填写大于0的数量!");
|
||
return false;
|
||
}
|
||
|
||
|
||
if (!$("#TradeSinglePrice").parent().is(":hidden") && parseFloat($("#TradeSinglePrice").val()) < 0) {
|
||
main.message("权利金不能小于0");
|
||
return false;
|
||
}
|
||
pass = pass && checkExerciseDate();
|
||
return pass;
|
||
}
|
||
|
||
function savetrade_inner() {
|
||
|
||
var postData = getPostData();
|
||
|
||
var checkTradeFunc = function (additionalProcessing) {
|
||
if (!main.isEmpty(additionalProcessing)) {
|
||
postData.additionalProcessing = additionalProcessing;
|
||
}
|
||
$(".not-match").remove();
|
||
|
||
var doneFunc = function (res) {
|
||
if (res.obj && res.obj.proccessType == "AdditionalProcessing") {
|
||
if (res.obj.type === "LackOfMoney") {
|
||
var htmlContent = `<div style="padding:10px">${res.obj.message}</div>`;
|
||
var lackMoneyConfirmLayer = main.open2("提示",
|
||
htmlContent,
|
||
{
|
||
area: ["430px", "175px"],
|
||
btn: ['交易特批', '取消'],
|
||
yes: function (index, layero) {
|
||
var layerIndex = lackMoneyConfirmLayer;
|
||
main.confirm("客户资金或授信不足,强制成交会导致本机构产生风险!要继续复核通过?", function () {
|
||
layer.close(layerIndex);
|
||
checkTradeFunc("LackOfMoney");
|
||
});
|
||
},
|
||
cancel: function (index, layero) {
|
||
if (window.parent && window.parent.reloadtrade) {
|
||
window.parent.reloadtrade();
|
||
}
|
||
(parent || window).layer.closeAll();
|
||
}
|
||
});
|
||
console.log("lackMoneyConfirmLayer:" + lackMoneyConfirmLayer);
|
||
}
|
||
return;
|
||
}
|
||
(parent || window).main.message(res.msg);
|
||
@if (generateAmendDoc)
|
||
{
|
||
<text>
|
||
if (res.obj && res.obj.generateChangeSuccess) {
|
||
main.downloadFiles(res.obj);
|
||
}
|
||
</text>
|
||
}
|
||
|
||
@if (needSendChangeEmail)
|
||
{
|
||
<text>
|
||
if (res.obj && res.obj.generateChangeSuccess) {
|
||
main.confirm("确认发送变更确认书?",
|
||
function () {
|
||
main.post("/trade/SendChangeConfirmEmails", { tradeids: tradeId }).done(
|
||
function (res) {
|
||
if (res.success) {
|
||
main.message("发送成功");
|
||
} else {
|
||
main.message(res.msg);
|
||
}
|
||
try {
|
||
window.parent.reloadtrade();
|
||
} catch (e) {
|
||
}
|
||
});
|
||
});
|
||
} else {
|
||
try {
|
||
window.parent.reloadtrade();
|
||
} catch (e) {
|
||
}
|
||
}
|
||
</text>
|
||
}
|
||
else
|
||
{
|
||
<text>
|
||
try {
|
||
$("#btn_check").attr("style", "display:block;float:left");
|
||
$("#btn_Reject").attr("style", "display:block;float:left");
|
||
window.parent.reloadtrade();
|
||
} catch (e) { }
|
||
</text>
|
||
}
|
||
|
||
}
|
||
var failFunc = function (res) {
|
||
if (!res || !res.obj || main.isEmpty(res.obj.diffList)) {
|
||
return;
|
||
}
|
||
res.obj.diffList.forEach(function (curValue) {
|
||
$(`[name='${curValue}']`).parent()
|
||
.append('<span class="glyphicon glyphicon-remove not-match" style="color: red;"></span>');
|
||
});
|
||
}
|
||
|
||
main.post("/forwardtrade/CheckTrade", postData).done(doneFunc).fail(failFunc);
|
||
}
|
||
checkTradeFunc();
|
||
|
||
}
|
||
|
||
function checkExerciseDate() {
|
||
var underlyingInstrumentType = $("#UnderlyingInstrumentType").val();
|
||
|
||
var mar = $("#MaturityDate").val();
|
||
if (!mar) return true;
|
||
|
||
var exe = $("#ExerciseDate").val();
|
||
var tradeDate = $("#TradeDate").val();
|
||
|
||
|
||
var isTradeDateShow = !$("#TradeDate").parent().is(":hidden");
|
||
if (isTradeDateShow) {
|
||
//if (tradeDate > valuedate) {
|
||
// main.message("交易日期不能是未来日期");
|
||
// $("#TradeDate").val("");
|
||
// return false;
|
||
//}
|
||
var flag = true;
|
||
$.ajax({
|
||
url: '/calendar/IsHoliday',
|
||
type: 'post',
|
||
async: false,//使用同步的方式,true为异步方式
|
||
data: { 'date': tradeDate },//这里使用json对象
|
||
success: function (isHoliday) {
|
||
if (isHoliday === true) {
|
||
main.message("交易日期不得为假日");
|
||
$("#TradeDate").val("");
|
||
flag = false;
|
||
return false;
|
||
}
|
||
},
|
||
fail: function () {
|
||
//code here...
|
||
}
|
||
});
|
||
if (!flag) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
if (tradeDate > exe) {
|
||
main.message("交易日应该在到期日之前");
|
||
$("#ExerciseDate").val("");
|
||
return false;
|
||
}
|
||
if (exe > mar) {
|
||
main.message("到期日必需在标的到期日之前");
|
||
$("#ExerciseDate").val("");
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
function changeSupplyForwardValue() {
|
||
this.changeTradePrice(true);
|
||
}
|
||
//计算开仓总费用
|
||
//补偿远期价值 + 开仓费用
|
||
function changeTradePrice() {
|
||
var lots = numeral($("#Lots").val()).value();
|
||
var openCommission = numeral($("#OpenCommission").val()).value();
|
||
var ForwardValue = numeral($("#ForwardValue").val()).value();
|
||
var isSupplyForwardValue = $("#IsSupplyForwardValue").val();
|
||
var supplyPrice = isSupplyForwardValue == "1" ? ForwardValue : isSupplyForwardValue == "-1" ? -ForwardValue : 0;
|
||
var TradePrice = otcformat.trading.tradePrice((supplyPrice + lots * openCommission));
|
||
$("#TradePrice").val(TradePrice);
|
||
}
|
||
|
||
function changeLots() {
|
||
try {
|
||
var lots = $("#Lots").val();
|
||
var amount = otcformat.trading.notional(lots * @UnderlyingModel.ContractSize / @UnderlyingModel.CountRatio);
|
||
$("#TradeAmount").val(amount);
|
||
} catch (e) { }
|
||
}
|
||
|
||
// -------------------------------Check Method End----------------------------------
|
||
jQuery.prototype.serializeObject = function () {
|
||
var obj = new Object();
|
||
$.each(this.serializeArray(),
|
||
function (index, param) {
|
||
if (!(param.name in obj)) {
|
||
obj[param.name] = param.value;
|
||
}
|
||
});
|
||
return obj;
|
||
};
|
||
|
||
function getPostData() {
|
||
var data = $("#forwardTradeEditForm").serializeObject();
|
||
if (salesCommissionCtrl) {
|
||
data.SalesCommission = salesCommissionCtrl.getValue();
|
||
}
|
||
return data;
|
||
}
|
||
|
||
function savereject() {
|
||
var postData = getPostData();
|
||
main.post("/forwardtrade/TradeReject", postData).done(
|
||
function (res) {
|
||
try {
|
||
window.parent.reloadtrade();
|
||
} catch (e) { }
|
||
}
|
||
);
|
||
}
|
||
|
||
|
||
function savepass(additionalProcessing) {
|
||
if (main.isEmpty(additionalProcessing)) {
|
||
additionalProcessing = "";
|
||
}
|
||
var text = '复核检查通过!';
|
||
var status = 'pass';
|
||
var tradeId = '@tradeModel.id';
|
||
var pop = '';
|
||
main.post("/processtradelog/UpdateTradeProcessLog",
|
||
{ tradeId: tradeId, status: status, text: text },
|
||
{ async: false }).done(
|
||
function (data) {
|
||
if (!data.success) {
|
||
main.message(res.msg);
|
||
return;
|
||
}
|
||
@if (generateAmendDoc)
|
||
{
|
||
<text>
|
||
if (data.obj && data.obj.generateChangeSuccess) {
|
||
main.downloadFiles(data.obj.url);
|
||
}
|
||
</text>
|
||
}
|
||
|
||
@if (needSendChangeEmail)
|
||
{
|
||
<text>
|
||
if (data.obj && data.obj.generateChangeSuccess) {
|
||
main.confirm("确认发送变更确认书?",
|
||
function () {
|
||
main.post("/trade/SendChangeConfirmEmails", { tradeids: tradeId }).done(
|
||
function (data) {
|
||
if (data.success) {
|
||
main.message("发送成功");
|
||
} else {
|
||
main.message(data.msg);
|
||
}
|
||
try {
|
||
window.parent.reloadtrade();
|
||
} catch (e) {
|
||
}
|
||
});
|
||
});
|
||
}
|
||
</text>
|
||
}
|
||
else
|
||
{
|
||
<text>
|
||
try { window.parent.reloadtrade(); } catch (e) { }
|
||
</text>
|
||
}
|
||
}
|
||
);
|
||
}
|
||
|
||
function savechecktrade() {
|
||
if (!checkSubmitData()) {
|
||
return false;
|
||
}
|
||
savetrade_inner();
|
||
}
|
||
|
||
var assLiClickFlag = false;
|
||
|
||
function btn_check() {
|
||
if (!assLiClickFlag) {
|
||
savechecktrade();
|
||
assLiClickFlag = true;
|
||
setTimeout(function () {
|
||
assLiClickFlag = false;
|
||
},
|
||
5000);
|
||
}
|
||
}
|
||
|
||
|
||
$("#btn_Pass").on('click', function () {
|
||
savepass();
|
||
});
|
||
|
||
function btn_Reject() {
|
||
//if (!checkSubmitData()) {
|
||
// return true;
|
||
//}
|
||
//var exe = $("#ExerciseDate").val();
|
||
//var isExerciseShow = !$("#ExerciseDate").parent().is(":hidden");
|
||
//if (isExerciseShow) {
|
||
// main.post("/calendar/IsHoliday", { date: exe }).done(function (isHoliday) {
|
||
// if (isHoliday === false) {
|
||
// savereject();
|
||
// } else {
|
||
// main.message("到期日不得为假日");
|
||
// }
|
||
// });
|
||
//} else {
|
||
// savereject();
|
||
//}
|
||
savereject();
|
||
}
|
||
|
||
//ESC
|
||
$(document).keyup(function (event) {
|
||
switch (event.keyCode) {
|
||
case 27:
|
||
window.parent.layer.closeAll();
|
||
}
|
||
});
|
||
</script>
|
||
}
|
||
|
||
@using (Html.BeginForm("forwardTradeEdit", "forwardTrade", FormMethod.Post, new { id = "forwardTradeEditForm" }))
|
||
{
|
||
<div class="well" style="margin: 0px auto;">
|
||
<div class="well-left">
|
||
<fieldset>
|
||
<!--目前框架新增和修改同一界面,造成的问题就是输入的字段新增和修改都一样-->
|
||
@if (Model != null)
|
||
{
|
||
<input type="hidden" value="@tradeModel.id" name="id" id="id" />
|
||
<input type="hidden" value="@tradeModel.TradeStatus" name="TradeStatus" id="TradeStatus" />
|
||
<input type="hidden" value="@tradeModel.GroupId" name="GroupId" id="GroupId" />
|
||
<input type="hidden" value="@tradeModel.GroupName" name="GroupName" id="GroupName" />
|
||
<input type="hidden" value="@tradeModel.TradeStatus" name="TradeStatus" id="TradeStatus" />
|
||
<input type="hidden" value="@tradeModel.CheckTradeUpdate" name="CheckTradeUpdate" id="CheckTradeUpdate" />
|
||
<input type="hidden" value="@tradeModel.TradeSource" name="TradeSource" id="TradeSource" />
|
||
<input type="hidden" value="@tradeModel.TradeSavedVol" name="TradeSavedVol" id="TradeSavedVol" />
|
||
}
|
||
<input type="hidden" value="@tradeModel.EncryptId" name="EncryptId" id="EncryptId" />
|
||
</fieldset>
|
||
<div class="form-group">
|
||
<label class="formlabel" for="TradeType">结构类型</label>
|
||
<label class="formlabel" style="color:white;letter-spacing:6px;padding:2px;background-color:#09bbbc;border-radius:4px;text-align:center" id="TradeType" name="TradeType">@type</label>
|
||
</div>
|
||
<input type="hidden" value="@tradeModel.UnderlyingCode" name="UnderlyingCode" id="UnderlyingCode" />
|
||
<div class="form-group" style="display:none">
|
||
<label class="formlabel" for="UnderlyingInstrumentType">标的资产类型</label>
|
||
<label class="formlabel" style="letter-spacing:6px;padding:2px;border-radius:4px;text-align:center" id="UnderlyingInstrumentType" name="UnderlyingInstrumentType">@tradeModel.UnderlyingInstrumentTypeCn</label>
|
||
<input type="hidden" value="@tradeModel.UnderlyingInstrumentType" name="UnderlyingInstrumentType" id="UnderlyingInstrumentType" />
|
||
</div>
|
||
@if (pageObj.ForwardTradePriceModel == YLErp.Configuration.Enums.ForwardTradePriceModel.HOOK_PRICE)
|
||
{
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的品种</label>
|
||
<input id="VarietyName" value="@UnderlyingModel.UnderlyingType" class="text-box" readonly type="text" name="VarietyName">
|
||
<input type="hidden" value="@UnderlyingModel.UnderlyingTypeId" id="VarietyId" name="VarietyId">
|
||
</div>
|
||
@*@Html.MyDropdownFor(model => tradeModel.VarietyId, new List<SelectListItem>
|
||
{ }, new { disabled = "disabled" })*@
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的代码</label>
|
||
<input id="UnderlyingCode" value="@tradeModel.UnderlyingCode" class="text-box" readonly type="text" name="UnderlyingCode" style="color: red; font-weight: bold;">
|
||
<input type="hidden" value="@tradeModel.UnderlyingId" id="UnderlyingId" name="UnderlyingId">
|
||
</div>
|
||
<div class="form-group maturity">
|
||
<label class="formlabel" for="MaturityDate">标的到期日</label>
|
||
<input id="MaturityDate" class="text-box datepicker" type="datetime" value="" name="MaturityDate" disabled="">
|
||
<span class="field-validation-valid" data-valmsg-for="MaturityDate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">交易单位</label>
|
||
<input id="TradeUnit" value="" class="text-box" readonly type="text" name="TradeUnit">
|
||
<input type="hidden" value="@UnderlyingModel.TradeUnit" id="TradeUnit" name="TradeUnit">
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="formlabel" for="QueteUnit">
|
||
报价单位:
|
||
</label>
|
||
<label class="lblQuoteUnit" id="QueteUnit"> </label>
|
||
</div>
|
||
}
|
||
else
|
||
{
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的1品种</label>
|
||
<input id="VarietyName" value="@UnderlyingModel.UnderlyingType" class="text-box" readonly type="text" name="VarietyName">
|
||
<input type="hidden" value="@UnderlyingModel.UnderlyingTypeId" id="VarietyId" name="VarietyId">
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的1代码</label>
|
||
<input id="UnderlyingCode" value="@tradeModel.UnderlyingCode" class="text-box" readonly type="text" name="UnderlyingCode" style="color: red; font-weight: bold;">
|
||
<input type="hidden" value="@tradeModel.UnderlyingId" id="UnderlyingId" name="UnderlyingId">
|
||
</div>
|
||
|
||
<div class="form-group maturity">
|
||
<label class="formlabel" for="MaturityDate">标的1到期日</label>
|
||
<input id="MaturityDate" class="text-box datepicker" type="datetime" value="" name="MaturityDate" disabled="">
|
||
<span class="field-validation-valid" data-valmsg-for="MaturityDate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
if (UnderlyingModel2 != null)
|
||
{
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的2品种</label>
|
||
<input id="VarietyName2" value="@(UnderlyingModel2.UnderlyingType ?? "")" class="text-box" readonly type="text" name="VarietyName">
|
||
<input type="hidden" value="@(UnderlyingModel2.UnderlyingTypeId ?? 0)" id="VarietyId" name="VarietyId">
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="formlabel" for="VarietyId">标的2代码</label>
|
||
<input id="UnderlyingCode2" value="@(UnderlyingModel2.UnderlyingCode ?? "")" class="text-box" readonly type="text" name="UnderlyingCode" style="color: red; font-weight: bold;">
|
||
<input type="hidden" value="@(UnderlyingModel2.id ?? 0)" id="UnderlyingId2" name="UnderlyingId">
|
||
</div>
|
||
<div class="form-group maturity">
|
||
<label class="formlabel" for="MaturityDate">标的2到期日</label>
|
||
<input id="MaturityDate2" class="text-box datepicker" type="datetime" value="@(UnderlyingModel2.MaturityDate ?? "")" name="MaturityDate" disabled="">
|
||
<span class="field-validation-valid" data-valmsg-for="MaturityDate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
}
|
||
}
|
||
@if (tradeModel.id < 1)
|
||
{
|
||
<div class='form-group'>
|
||
<label class='formlabel' for='TradeNumber' style="display:block;">交易编号</label>
|
||
<input id="TradeNumber" class="text-box" readonly="readonly" style="width:250px!important;" type="text" value="" name="TradeNumber" tabindex="-1" placeholder="留空自动生成">
|
||
</div>
|
||
}
|
||
<div id="salesCommissionCtrl"></div>
|
||
</div>
|
||
<div class="well-right">
|
||
<div class="well-right-content">
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="ClientId">客户名称</label>
|
||
<input id="ClientName" value="@tradeModel.ClientName" class="text-box" readonly type="text" name="ClientName">
|
||
<input type="hidden" value="@tradeModel.ClientId" id="ClientId" name="ClientId">
|
||
</div>
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="ClientId">交易员</label>
|
||
<input id="TraderName" value="@tradeModel.TraderName" class="text-box" readonly type="text" name="TraderName">
|
||
<input type="hidden" value="@tradeModel.TraderId" class="text-box" readonly id="TraderId" name="TraderId">
|
||
</div>
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="ClientId">簿记账户</label>
|
||
<input id="AssetBookName" value="@tradeModel.AssetBookName" class="text-box" readonly type="text" name="AssetBookName">
|
||
<input type="hidden" value="@tradeModel.AssetId" class="text-box" readonly id="AssetId" name="AssetId">
|
||
</div>
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="TradeDate">成交日期</label>
|
||
<input id="TradeDate" class="text-box datepicker" type="text" value="@(tradeModel.TradeDate?.ToString("yyyy-MM-dd"))" name="TradeDate" data-val="true" data-val-required="成交日期 字段是必需的">
|
||
<span style="color:red">*</span><span class="field-validation-valid" data-valmsg-for="TradeDate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
@if (PS.Config.Is浙期 && tradeModel.ActualExerciseDate != null)
|
||
{
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="ActualExerciseDate">实际到期日期</label>
|
||
<input id="ActualExerciseDate" class="text-box datepicker" type="text" value="@(tradeModel.ActualExerciseDate.OtcFormatDate())" name="ActualExerciseDate" readonly>
|
||
@*<span style="color:red">*</span><span class="field-validation-valid" data-valmsg-for="ActualExerciseDate" data-valmsg-replace="true"></span>*@
|
||
</div>
|
||
}
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="ExerciseDate">到期日期</label>
|
||
<input id="ExerciseDate" class="text-box datepicker" type="text" value="@(tradeModel.ExerciseDate?.ToString("yyyy-MM-dd"))" name="ExerciseDate" data-val="true" data-val-required="到期日期 字段是必需的">
|
||
<span style="color:red">*</span><span class="field-validation-valid" data-valmsg-for="ExerciseDate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="SettlementDate">结算日期</label>
|
||
<input id="SettlementDate" class="text-box datepicker" type="text" value="@(tradeModel.SettlementDate?.ToString("yyyy-MM-dd"))" name="SettlementDate" readonly>
|
||
</div>
|
||
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel">交易方向</label>
|
||
<select id="BuySell" name="BuySell">
|
||
<option value="卖出">卖出</option>
|
||
<option value="买入">买入</option>
|
||
</select><span style="color:red">*</span>
|
||
</div>
|
||
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel">多空方向</label>
|
||
<select id="OptionType" name="OptionType" style="border-color: #09bbbd !important;border-radius: 5px;height: 25px;width:120px">
|
||
<option value="看涨">多头</option>
|
||
<option value="看跌">空头</option>
|
||
</select>
|
||
<span style="color:red">*</span>
|
||
</div>
|
||
|
||
@*@Html.MyDecimalFor(Model=>Model.Trade.Lots, true)*@
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="TradeAmount">手数</label>
|
||
<input id="Lots" class="text-box valid"
|
||
type="number" value="@tradeModel.Lots" name="Lots" data-val="true" /><span style="color:red">*</span>
|
||
<span class="field-validation-valid" data-valmsg-for="TradeAmount" data-valmsg-replace="true"></span>
|
||
</div>
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="TradeAmount">成交数量</label>
|
||
<input id="TradeAmount" class="text-box valid"
|
||
type="number" value="@(tradeModel.TradeAmount.OtcFormatNotional())" name="TradeAmount" data-val="true" /><span style="color:red">*</span>
|
||
<span class="field-validation-valid" data-valmsg-for="TradeAmount" data-valmsg-replace="true"></span>
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="Strike">交割价格</label>
|
||
|
||
<input id="Strike" class="text-box"
|
||
type="number" value="@(tradeModel.Strike.OtcFormatUmPrice())" name="Strike" data-val="true"> <span style="color:red">*</span>
|
||
<span class="field-validation-valid" data-valmsg-for="Strike" data-valmsg-replace="true"></span>
|
||
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="Strike">期初标的价格</label>
|
||
|
||
<input id="InitialSpotPrice" class="text-box"
|
||
type="number" value="@(tradeModel.SpotPrice.OtcFormatUmPrice())" name="InitialSpotPrice" data-val="true"> <span style="color:red">*</span>
|
||
<span class="field-validation-valid" data-valmsg-for="InitialSpotPrice" data-valmsg-replace="true"></span>
|
||
<!--期权交易的复核界面没有刷新,先去掉
|
||
<a href="javascript:void(0)" onclick="refreshUnderlyingPrice()">
|
||
<span title="使用系统标的价格" class="glyphicon glyphicon-refresh"></span>
|
||
</a>
|
||
-->
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="TradePrice">@(type)价值</label>
|
||
<input id="ForwardValue" class="text-box" readonly
|
||
type="text" name="ForwardValue" data-val="true">
|
||
</div>
|
||
|
||
|
||
@if (Model.ShowInitialMargin)
|
||
{
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="InitialMargin">初始预付金</label>
|
||
<input name="InitialMargin" type="number" data-val="true" readonly value="@(tradeModel.InitialMargin.OtcFormatMoney())" />
|
||
</div>
|
||
}
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="OpenCommission">开仓费用</label>
|
||
<input id="OpenCommission" class="text-box valid"
|
||
type="number" value="@(tradeModel.trade_forward.OpenCommission == 0 ? "" : tradeModel.trade_forward.OpenCommission.OtcFormatMoney(grouping: false))" name="trade_forward.OpenCommission" data-val="true" aria-required="true" aria-invalid="false">
|
||
<span style="color:red">* </span>
|
||
<span class="field-validation-valid" data-valmsg-for="trade_forward.OpenCommission" data-valmsg-replace="true"></span>
|
||
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="TradePrice">开仓总费用</label>
|
||
<input id="TradePrice" class="text-box"
|
||
type="number" name="TradePrice" data-val="true">
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="trade_forward.AnnualMarginRate">年化预付金成本</label>
|
||
<input readonly id="AnnualMarginRate" class="text-box"
|
||
type="number" value="@(tradeModel.trade_forward.AnnualMarginRate == 0 ? "" : tradeModel.trade_forward.AnnualMarginRate.OtcFormatMoney(grouping: false))" name="trade_forward.AnnualMarginRate">%
|
||
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="trade_forward.AnnualStoragePrice">年化仓储成本</label>
|
||
<input readonly id="AnnualStoragePrice" class="text-box"
|
||
type="number" value="@(tradeModel.trade_forward.AnnualStoragePrice == 0 ? "" : tradeModel.trade_forward.AnnualStoragePrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))" name="trade_forward.AnnualStoragePrice"> <label class="lblQuoteUnit"></label>
|
||
</div>
|
||
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="NoRiskRate">无风险利率</label>
|
||
<input id="NoRiskRate" class="text-box valid" type="number" value="@tradeModel.NoRiskRate.OtcFormatMoney()" name="NoRiskRate" readonly="readonly" aria-invalid="false">%
|
||
<span class="field-validation-valid" data-valmsg-for="NoRiskRate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel" for="MetaDic['IsSupplyForwardValue']">是否补充远期价值</label>
|
||
<select id="IsSupplyForwardValue" name="IsSupplyForwardValue" disabled onchange="changeSupplyForwardValue()">
|
||
@{
|
||
tradeModel.MetaDic.TryGetValue("IsSupplyForwardValue", out var isSupplyForwardValue);
|
||
<option value="0" @(isSupplyForwardValue == "0" ? "selected" :"")>否</option>
|
||
@if (PS.Config.ErpElement.ForwardValueIsSupplyOrPay != YLErp.Configuration.Enums.ForwardValueIsSupplyOrPay.Type2)
|
||
{
|
||
<option value="1" @(isSupplyForwardValue == "1" ? "selected" :"")>补偿</option>
|
||
}
|
||
@if (PS.Config.ErpElement.ForwardValueIsSupplyOrPay != YLErp.Configuration.Enums.ForwardValueIsSupplyOrPay.Type1)
|
||
{
|
||
<option value="-1" @(isSupplyForwardValue == "-1" ? "selected" : "")>支付</option>
|
||
}
|
||
}
|
||
</select>
|
||
<span class="field-validation-valid" data-valmsg-for="NoRiskRate" data-valmsg-replace="true"></span>
|
||
</div>
|
||
<div class="form-group col-md-12 col-md-6">
|
||
<label class="formlabel"></label>
|
||
<button class="btn btn-sm btn-outline-dark" type="button" disabled>均价结算设置</button>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="field-remarks">
|
||
<div class="form-group col-md-6">
|
||
<label class="formlabel" for="Comments">备注</label>
|
||
<textarea id="Comments" class="text-box" rows="3" name="Comments" style="margin-top: 0px; margin-bottom: 0px; height: 47px;"></textarea>
|
||
<span class="field-validation-valid" data-valmsg-for="Comments" data-valmsg-replace="true"></span>
|
||
</div>
|
||
@*@Html.MyTextAreaFor(model => tradeModel.Comments, 3)*@
|
||
<div class="btn-wrap" style="margin: 0px auto; padding-top: 23px; text-align: right; float:left;">
|
||
@MyControls.Btn("复核", "btn_check()")
|
||
@MyControls.Btn("拒绝", "btn_Reject()")
|
||
@MyControls.Btn("关闭", "layer.closeMe()")
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
<div style="clear: both;"></div>
|
||
</div>
|
||
|
||
}
|
||
|
||
@await Html.PartialAsync("/Views/trade/_part/SalesCommission.cshtml", new SalesCommissionModel() { Disabled = true })
|