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

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())