507 lines
20 KiB
Plaintext
507 lines
20 KiB
Plaintext
@{
|
|
ViewBag.Title = "行权日报告";
|
|
Layout = "~/Views/Shared/_MainLayout.cshtml";
|
|
}
|
|
@section CSS{
|
|
<style>
|
|
.no-skin { position: static !important; }
|
|
</style>
|
|
}
|
|
@section JS{
|
|
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
|
|
<script type="text/javascript">
|
|
var g_grid = {};
|
|
$(function() {
|
|
var curDate = "@valuedateBLL.ValueDate.ToString("yyyy-MM-dd")"; //new Date().Format("yyyy-MM-dd");
|
|
|
|
var reqTradeStatus = $("#TradeStatus").val() == null
|
|
? "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期"
|
|
: $("#TradeStatus").val().join(",");
|
|
if (!reqTradeStatus) {
|
|
reqTradeStatus = "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期";
|
|
}
|
|
|
|
var PostData = {
|
|
ValidState: $("#ValidState").val(),
|
|
ExerciseDateStart: curDate,
|
|
ExerciseDateEnd: curDate,
|
|
TradeTypes: '@string.Join(",", ConsTrade.TradeTypesForOtcOptions)',
|
|
TradeStatus: reqTradeStatus
|
|
};
|
|
|
|
$("#DateFromExerciseDate").datepicker({
|
|
changeMonth: true,
|
|
changeYear: true,
|
|
showButtonPanel: true,
|
|
showOtherMonths: true,
|
|
selectOtherMonths: true,
|
|
onSelect: function(selectedDate) { //选择日期后执行的操作
|
|
$("#DateToMaturityDate").val("");
|
|
setValidation("DateToExerciseDate", selectedDate, false);
|
|
}
|
|
});
|
|
$("#DateToExerciseDate").datepicker({
|
|
changeMonth: true,
|
|
changeYear: true,
|
|
showButtonPanel: true,
|
|
showOtherMonths: true,
|
|
selectOtherMonths: true,
|
|
onSelect: function(selectedDate) { //选择日期后执行的操作
|
|
$("#DateToMaturityDate").val("");
|
|
setValidation("DateFromExerciseDate", selectedDate, true);
|
|
}
|
|
});
|
|
|
|
|
|
$("#DateFromExerciseDate").val(curDate);
|
|
$("#DateToExerciseDate").val(curDate);
|
|
|
|
setValidation("DateFromExerciseDate", $("#DateToExerciseDate").val(), true);
|
|
setValidation("DateToExerciseDate", $("#DateFromExerciseDate").val(), false);
|
|
@Html.Raw(JqGridSimple.OutGrid("/trade/todayMaturityTradeQuery" , isMultiSelect: true));
|
|
g_grid = jQuery('#listGrid');
|
|
|
|
function keyEnter(event) {
|
|
try {
|
|
var e = event ? event : (window.event ? window.event : null);
|
|
if (e.keyCode == 13) {
|
|
SearchClick(true);
|
|
}
|
|
} catch (e) {
|
|
|
|
}
|
|
}
|
|
document.onkeydown = keyEnter;
|
|
let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId')
|
|
.setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade);
|
|
});
|
|
|
|
function setValidation(elId, selectedDate, isSetMax) {
|
|
if (isSetMax) {
|
|
var time = selectedDate.split("-");
|
|
var year = time[0];
|
|
var month = time[1] - 1;
|
|
var day = time[2];
|
|
$("#" + elId).datepicker(
|
|
'option',
|
|
'maxDate',
|
|
new Date(year, month, day)
|
|
);
|
|
} else {
|
|
var time = selectedDate.split("-");
|
|
var year = time[0];
|
|
var month = time[1] - 1;
|
|
var day = time[2];
|
|
$("#" + elId).datepicker(
|
|
'option',
|
|
'minDate',
|
|
new Date(year, month, day)
|
|
);
|
|
}
|
|
}
|
|
|
|
var colModelGrid = [
|
|
{
|
|
name: 'id',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'EncryptId',
|
|
hidden: true,
|
|
optionHide: true
|
|
},
|
|
{
|
|
name: 'ExerciseDate',
|
|
label: '到期日',
|
|
index: 'ExerciseDate',
|
|
width: 90,
|
|
align: 'left',
|
|
formatter: 'date'
|
|
}, {
|
|
name: 'UnderlyingCode',
|
|
label: '标的代码',
|
|
index: 'UnderlyingCode',
|
|
width: 60,
|
|
align: 'left',
|
|
formatter: ShowStructFormater
|
|
}, {
|
|
name: 'TradeType',
|
|
label: '期权类型',
|
|
index: 'TradeType',
|
|
width: 70,
|
|
align: 'left',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType
|
|
}
|
|
}, {
|
|
name: 'ExerciseModeCn',
|
|
label: '行权方式',
|
|
index: 'ExerciseModeCn',
|
|
width: 90,
|
|
align: 'left'
|
|
}, {
|
|
name: 'OptionType',
|
|
label: '看涨看跌',
|
|
index: 'OptionType',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'BuySell',
|
|
label: '交易方向',
|
|
index: 'BuySell',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'Strike',
|
|
label: '执行价格',
|
|
index: 'Strike',
|
|
width: 0,
|
|
align: 'left',
|
|
hidden: true,
|
|
formatter: otcformat.trading.umprice
|
|
}, {
|
|
name: 'IsMoneynessOption',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'ActualStrike',
|
|
label: '有效执行价格',
|
|
index: 'ActualStrike',
|
|
width: 90,
|
|
align: 'left',
|
|
formatter: otcformat.trading.umprice
|
|
}, {
|
|
name: 'InitialSpotPrice',
|
|
label: '期初价格',
|
|
index: 'InitialSpotPrice',
|
|
width: 90,
|
|
align: 'left',
|
|
formatter: otcformat.trading.umprice
|
|
}, {
|
|
name: 'Notional',
|
|
label: '份额',
|
|
index: 'Count',
|
|
width: 70,
|
|
align: 'left',
|
|
formatter: otcformat.trading.notional
|
|
}, {
|
|
name: 'AssetBookName',
|
|
label: '簿记账户',
|
|
index: 'AssetBookName',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'ClientName',
|
|
label: '客户名称',
|
|
index: 'ClientName',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'TraderName',
|
|
label: '交易员',
|
|
index: 'TraderName',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'TradeStatus',
|
|
label: '交易状态',
|
|
index: 'TradeStatus',
|
|
width: 70,
|
|
align: 'left'
|
|
}, {
|
|
name: 'TradeNumber',
|
|
label: '交易编号',
|
|
index: 'TradeNumber',
|
|
width: 150,
|
|
align: 'left'
|
|
}, {
|
|
name: '',
|
|
label: '操作',
|
|
index: '',
|
|
width: 150,
|
|
align: 'center',
|
|
formatter: showToolName
|
|
}, {
|
|
name: 'PairTrade',
|
|
label: 'PairTrade',
|
|
index: 'PairTrade',
|
|
width: 150,
|
|
align: 'left',
|
|
hidden: true,
|
|
optionHide: true
|
|
}
|
|
];
|
|
|
|
function gridComplete() {
|
|
$(".selftooltip").tooltip({ html: true, show: 50000 , trigger: "hover"});
|
|
main.setcolumnChooser(jQuery('#listGrid'), "@configcolumn_data.行权日报告");
|
|
}
|
|
|
|
var g_curdate = new moment("@valuedateBLL.ValueDate").format("YYYY-MM-DD");
|
|
|
|
function ShowStructFormater(cellValue, options, rowObject) {
|
|
var html;
|
|
if (rowObject.TradeType == "合成价差期权") {
|
|
html =
|
|
"<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
|
|
.template(cellValue, rowObject.SyntheticUnderlyingTipsInfo);
|
|
return html;
|
|
}
|
|
return cellValue;
|
|
}
|
|
|
|
function showToolName(cellValue, options, rowObject) {
|
|
var html = "";
|
|
html +=
|
|
"<input type=\"button\" class=\"wentiEdit\" title='执行' onclick=\"executionTrade('{0}',false)\" {1} value=\"{2}\" />"
|
|
.template(rowObject.EncryptId, rowObject.CanExercise ? "" : "disabled='disabled'", "执行");
|
|
html +=
|
|
"<input type=\"button\" class=\"wentiEdit\" title='到期' onclick=\"executionTrade('{0}',true)\" {1} value=\"{2}\" />"
|
|
.template(rowObject.EncryptId, rowObject.CanExpire || rowObject.isOverdue ? "" : "disabled = 'disabled'", "到期");
|
|
@*@if (YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.MarketMaker)
|
|
{
|
|
<text>
|
|
if (rowObject.TradeStatus == "已执行"&&rowObject. || rowObject.TradeStatus == "已到期") {
|
|
html +=
|
|
"<input type=\"button\" style='width:100px;border: 1px solid #8B2323;color: #ca4241;margin: 3px 1px' title='生成到期结算单' onclick=\"GenerateSettleBill('{0}')\" value=\"{1}\" />"
|
|
.template(rowObject.id, "生成结算单");
|
|
}
|
|
</text>
|
|
}*@
|
|
return html;
|
|
}
|
|
|
|
/**
|
|
* 执行合约
|
|
*/
|
|
function executionTrade(id, isExpired) {
|
|
var srcurl = "/trade_cash/executionTradeCash/?enid=" + id + "&isexpire=" + isExpired;
|
|
var title = isExpired ? "执行到期" : "执行期权";
|
|
main.open(title, srcurl, { area: ["1000px", "800px"]});
|
|
}
|
|
|
|
/**
|
|
* 合约到期
|
|
*/
|
|
function expireTrade(id, pair) {
|
|
var title = "执行合约到期?"
|
|
if (pair && pair != "undefined") title += "同时到期配对交易?id:" + pair;
|
|
main.confirm(title,
|
|
function () {
|
|
main.post("/trade_cash/checkEodPrice/", { enid: id }).done(function (res) {
|
|
main.post("/trade/tradeExpireConfirm", { enid: id }).done(function () {
|
|
reloadMaturityTrade();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function SetAsExpired() {
|
|
var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow');
|
|
|
|
//批量到期
|
|
main.confirm("确认执行批量到期行权吗?",
|
|
function() {
|
|
main.post("/trade/MultipleTradeExpireConfirm/").done(function() {
|
|
reloadMaturityTrade();
|
|
});
|
|
});
|
|
}
|
|
|
|
function reloadMaturityTrade() {
|
|
//重新加载
|
|
SearchClick();
|
|
}
|
|
|
|
function SearchClick(isSearchclick) {
|
|
var listGrid = $('#listGrid');
|
|
|
|
listGrid.appendPostData({ AssetIds: $("#AssetId").val() == null ? "" : $("#AssetId").val().join() });
|
|
listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() });
|
|
listGrid.appendPostData({
|
|
UnderlyingIds: $("#UnderlyingId").val() == null ? "" : $("#UnderlyingId").val().join(",")
|
|
});
|
|
listGrid.appendPostData({ ClientIds: $("#ClientId").val() == null ? "" : $("#ClientId").val().join(",") });
|
|
listGrid.appendPostData({ TradeType: $("#TradeType").val() });
|
|
listGrid.appendPostData({ ExerciseMode: $("#ExerciseMode").val() });
|
|
|
|
listGrid.appendPostData({ ExerciseDate: $("#ExerciseDate").val() });
|
|
listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() });
|
|
listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() });
|
|
|
|
var tradeTypes = $("#TradeTypes").val() == null
|
|
? '@string.Join(",", ConsTrade.TradeTypesForOtcOptions)'
|
|
: $("#TradeTypes").val().join(",");
|
|
|
|
listGrid.appendPostData({ TradeTypes: tradeTypes });
|
|
|
|
var reqTradeStatus = $("#TradeStatus").val() == null
|
|
? "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期"
|
|
: $("#TradeStatus").val().join(",");
|
|
if (!reqTradeStatus) {
|
|
reqTradeStatus = "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期";
|
|
}
|
|
|
|
listGrid.appendPostData({ TradeStatus: reqTradeStatus });
|
|
|
|
//query_data = {
|
|
// AssetId: $("#AssetId").val(),
|
|
// UnderlyingId: $("#UnderlyingId").val(),
|
|
// TradeTypes: $("#TradeTypes").val() == null ? "" : $("#TradeTypes").val().join(","),
|
|
// ExerciseDateStart: $("#DateFromExerciseDate").val(),
|
|
// ExerciseDateEnd: $("#DateToExerciseDate").val()
|
|
//}
|
|
|
|
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
|
|
//点击搜索时默认第一页
|
|
listGrid.jqGrid('setGridParam',
|
|
{
|
|
page: 1
|
|
});
|
|
}
|
|
listGrid.trigger('reloadGrid');
|
|
}
|
|
|
|
function finalSettlement() {
|
|
main.post("/clientbalance/finalSettlement").done(function(res) {
|
|
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 客户行权日报告
|
|
*/
|
|
function ClientMaturityTrade() {
|
|
var srcurl = "/trade/clientMaturityDateTradeList";
|
|
main.open("客户行权日报告", srcurl);
|
|
}
|
|
|
|
function showcolumnChooser() {
|
|
var jgrid = jQuery('#listGrid');
|
|
main.showcolumnChooser(jgrid, "@configcolumn_data.行权日报告");
|
|
}
|
|
|
|
function downloadFiles(files) {
|
|
if (files instanceof Array) {
|
|
if (files.length <= 0) {
|
|
return;
|
|
}
|
|
$.each(files,
|
|
function(index, val) {
|
|
setTimeout(function() {
|
|
window.open(val);
|
|
},
|
|
500);
|
|
});
|
|
} else {
|
|
window.open(files);
|
|
}
|
|
}
|
|
|
|
function GenerateSettleBill(id) {
|
|
var tradeIds = [];
|
|
if (id) {
|
|
tradeIds.push(id);
|
|
} else {
|
|
var jgrid = jQuery('#listGrid');
|
|
tradeIds = main.GetGridIds(jgrid);
|
|
}
|
|
if (tradeIds.length === 0) {
|
|
main.message("请选择交易");
|
|
return;
|
|
}
|
|
|
|
var htmlContent = '<form class="form-horizontal" role="form" style="padding:15px 12px 5px">' +
|
|
'<div class="form-group">' +
|
|
'<label class="col-sm-4 control-label">文档类型</label>' +
|
|
'<div class="btn-group col-sm-8" data-toggle="buttons">' +
|
|
'<label class="btn btn-sm btn-primary active" style="border:none"><input type="radio" checked name="docType" value="PDF"> PDF</label>' +
|
|
'<label class="btn btn-sm btn-primary" style="border:none"><input type="radio" name="docType" value="DOC"> DOC</label>' +
|
|
'</div>' +
|
|
'</div>' +
|
|
'</form>';
|
|
|
|
main.open2("生成结算确认书",
|
|
htmlContent,
|
|
{
|
|
area: ["280px", "165px"],
|
|
btn: ['生成', '取消'],
|
|
yes: function(index, layero) {
|
|
var docType = $('input[name="docType"]:checked').val();
|
|
main.post("/trade/GJGenerateSettleBill/",
|
|
{ tradeIds: tradeIds, docType: docType },
|
|
{
|
|
success: function(resp) {
|
|
if (resp.success) {
|
|
downloadFiles(resp.obj);
|
|
} else {
|
|
main.alert(resp.msg.replace("\r\n", "<br/>"));
|
|
downloadFiles(resp.obj);
|
|
}
|
|
parent.layer.closeAll();
|
|
}
|
|
});
|
|
},
|
|
cancel: function(index, layero) {
|
|
parent.layer.closeAll();
|
|
},
|
|
success: function(layero, index) {
|
|
$(".btn-group").on("click",
|
|
".btn",
|
|
function(event) {
|
|
$('input[name="docType"]:checked').prop("checked", false);
|
|
$(this).children("input").prop("checked", true);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function BatchGenerateSettleBill(id) {
|
|
main.post("/trade/BatchGenerateSettleBill/").done(function(data) {
|
|
console.info(data);
|
|
reloadMaturityTrade();
|
|
});
|
|
}
|
|
|
|
function calcActualStrike(cellValue, options, rowObject) {
|
|
if (rowObject.IsMoneynessOption == "是") {
|
|
return (rowObject.Strike * rowObject.InitialSpotPrice).toFixed(2);
|
|
} else {
|
|
return parseFloat(rowObject.Strike).toFixed(2);
|
|
}
|
|
}
|
|
</script>
|
|
}
|
|
|
|
<div class="searchdiv">
|
|
@Html.MyAceDropdownInput("AssetId", "簿记账户", AssetunitController.GetClientassetunit())
|
|
@Html.MyAceDropdownInput("GroupId", "簿记账户组", AssetUnitModel.GetAllAssetUnitGroupItem())
|
|
<div class="search-group">
|
|
<span class="search-label">标的代码</span>
|
|
<select class="" data-placeholder="请选择 标的代码" id="UnderlyingId" name="UnderlyingId" multiple></select>
|
|
</div>
|
|
|
|
@Html.MyAceDropdownInput("TradeTypes", "期权类型", GlobalData.GetTradeTypes(ConsTrade.TradeTypesForOtcOptions, true))
|
|
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllOpenClient())
|
|
@Html.MyAceDropdownInput2("ExerciseMode", "行权方式", ConsTrade.ExerciseType.GetSelectItems())
|
|
@Html.SearchDateRange("ExerciseDate", "到期日")
|
|
@Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.GetSelectItems(ConsTrade.AllTradeStatus, ConsTrade.确认成交))
|
|
|
|
@MyControls.SearchBtn()
|
|
@MyControls.Btn("批量到期行权", "SetAsExpired()")
|
|
@MyControls.Btn("客户行权日报告", "ClientMaturityTrade()")
|
|
|
|
<div style="width: 30px; display: inline;" onclick="showcolumnChooser();return false;">
|
|
<img src="~/Images/configure.png" />
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!--
|
|
<div>
|
|
@MyControls.Btn("配置显示列", "showcolumnChooser()")
|
|
</div>
|
|
-->
|
|
@Html.Raw(JqGridSimple.OutTable()) |