$(function () { var PostData = {}; $("#DateValueDate").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true, maxDate: page.calcDate }); $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); changePriceType(); PostData.ValueDate = $("#DateValueDate").val(); PostData.VolType = "持仓"; var grid = jQuery('#listGrid').jqGrid({ url: '/swaptrade/EodPositionRisksQuery', datatype: 'json', height: 'auto', width: '96%', multiselect: true, autowidth: false, shrinkToFit: false, viewrecords: true, jsonReader: { repeatitems: false }, mtype: 'POST', postData: PostData, afterInsertRow: AfterInsertRow, onSelectRow: rowclick, ondblClickRow: rowdblclick, colModel: tradeHelper.getAmountToNotional(colModelGrid), pager: jQuery('#pagerGrid'), pagerpos: 'left', rowNum: 10000, rowList: [25, 50, 100, 200, 10000], footerrow: false, //userDataOnFooter: true, loadComplete: gridComplete, onPaging: onJqgridPaging, grouping: true }); 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); $(window).resize(function () { //如有频繁改变大小的需求,要增加延迟运行的逻辑; $("#listGrid").setGridWidth($("#main-wrapper").width() - 30); var newHeight = $(window).height() - 350; $("#listGrid").setGridHeight(newHeight); }); }); const GroupingFormat = main.numberFormat(2, { grouping: true }); const ThreeDecimalGroupingFormat = main.numberFormat(3, { grouping: false }); var i = 0; var colModelGrid = [{ name: 'id', label: 'id', index: 'id', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'EncryptTradeId', label: 'EncryptTradeId', index: 'EncryptTradeId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'ParentTradeNumber', label: '交易编号', index: 'ParentTradeNumber', width: 150, align: 'center', sortIndex: i++, sortable: true }, { name: 'ContractCode', label: '确认书编号', index: 'ContractCode', width: 150, align: 'center', sortIndex: i++, sortable: true }, { name: 'ClientName', label: '交易对手方', index: 'ClientName', width: 150, sortIndex: i++, align: 'center', sortable: true }, { name: 'ClientNumber', label: '交易对手编号', index: 'ClientNumber', width: 150, sortIndex: i++, align: 'center', sortable: false }, { name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', width: 150, sortIndex: i++, align: 'center', sortable: true }, { name: 'TradeDate', label: '成交日期', sortIndex: i++, index: 'TradeDate', width: 90, align: 'center', formatter: 'date', sortable: true }, { name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', width: 80, sortIndex: i++, align: 'center', formatter: 'date', sortable: true }, { name: 'SettlementDate', label: '结算日期', index: 'SettlementDate', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: 'date' }, { name: 'SettlementFlag', label: '是否延期结算', index: 'SettlementFlag', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: YesOrNoFormat }, { name: 'TradeType', label: '结构类型', index: 'TradeType', sortIndex: i++, width: 70, align: 'center', sortable: true }, { name: 'StockEqvNotionalToShow', label: '名义本金', index: 'StockEqvNotionalToShow', sortIndex: i++, width: 100, align: 'center', formatter: StockEqvNotionalFormat, sortable: false }, { name: page.isPvRounded ? 'RoundedPV' : 'PV', label: '存续市值', index: page.isPvRounded ? 'RoundedPV' : 'PV', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: page.isPvRounded ? 'RoundedPositionPnl' : 'PositionPnl', label: '浮动盈亏', index: page.isPvRounded ? 'RoundedPositionPnl' : 'PositionPnl', sortIndex: i++, width: 65, align: 'center', formatter: 'number', sortable: true, formatter: PriceFormat }, { name: 'RealizedPnl', label: '实现盈亏', index: 'RealizedPnl', sortIndex: i++, width: 65, align: 'center', formatter: 'number', sortable: false, formatter: RealizedPnlFormat }, { name: 'Delta', label: 'Delta', index: 'Delta', width: 100, align: 'center', sortIndex: i++, formatter: otcformat.trading.greek, sortable: false }, { name: 'DeltaLots', label: 'Delta手数', index: 'DeltaLots', width: 100, align: 'center', sortIndex: i++, formatter: otcformat.trading.notional, sortable: false }, { name: 'TradeAmount', label: '持仓数量', index: 'TradeAmount', width: 100, align: 'center', sortIndex: i++, formatter: otcformat.trading.notional, sortable: false }, { name: 'trade.trade_swap.IsGetFloatingProfit', label: '[收取]浮动收益', index: 'trade.trade_swap.IsGetFloatingProfit', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: YesOrNoFormat }, { name: 'trade.trade_swap.GetUnderlyingCode', label: '[收取]标的代码', index: 'trade.trade_swap.GetUnderlyingCode', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.MetaDic.GetUnderlyingName', label: '[收取]标的名称', index: 'trade.MetaDic.GetUnderlyingName', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.trade_swap.GetLongShort', label: '[收取]多头空头', index: 'trade.trade_swap.GetLongShort', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.trade_swap.GetSpotPrice', label: '[收取]标的期初价格', index: 'trade.trade_swap.GetSpotPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }, { name: 'trade.trade_swap.GetTradeAmount', label: '[收取]交易数量', index: 'trade.trade_swap.GetTradeAmount', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.notional }, { name: 'trade.trade_swap.GetTradePrice', label: '[收取]交易费用', index: 'trade.trade_swap.GetTradePrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: 'trade.trade_swap.GetMarginRate', label: '[收取]初始预付金率', index: 'trade.trade_swap.GetMarginRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.premiumRateP }, { name: 'trade.trade_swap.GetSwapTimeAndRate', label: '[收取]互换利率(年化)', index: 'trade.trade_swap.GetSwapTimeAndRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: SwapTimeAndRateFormat }, { name: 'trade.trade_swap.IsPayFloatingProfit', label: '[支付]浮动收益', index: 'trade.trade_swap.IsPayFloatingProfit', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: YesOrNoFormat }, { name: 'trade.trade_swap.PayUnderlyingCode', label: '[支付]标的代码', index: 'trade.trade_swap.PayUnderlyingCode', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.MetaDic.PayUnderlyingName', label: '[支付]标的名称', index: 'trade.MetaDic.PayUnderlyingName', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.trade_swap.PayLongShort', label: '[支付]多头空头', index: 'trade.trade_swap.PayLongShort', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade.trade_swap.PaySpotPrice', label: '[支付]标的期初价格', index: 'trade.trade_swap.PaySpotPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }, { name: 'trade.trade_swap.PayTradeAmount', label: '[支付]交易数量', index: 'trade.trade_swap.PayTradeAmount', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.notional }, { name: 'trade.trade_swap.PayTradePrice', label: '[支付]交易费用', index: 'trade.trade_swap.PayTradePrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: 'trade.trade_swap.PaySwapTimeAndRate', label: '[支付]互换利率(年化)', index: 'trade.trade_swap.PaySwapTimeAndRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: SwapTimeAndRateFormat }, { name: 'trade.trade_swap.PayMarginRate', label: '[支付]初始预付金率', index: 'trade.trade_swap.PayMarginRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.premiumRateP }, { name: 'SurvivingNominalPrincipal', label: '存续名义本金', index: 'SurvivingNominalPrincipal', sortIndex: i++, hidden: !page.showGuohai, optionHide: !page.showGuohai, width: 100, align: 'center', sortable: false, formatter(cellValue, options, rowObject) { return main.formatNumber(cellValue || '', 2); } } ]; function gridComplete() { var jgrid = $(this); main.setcolumnChooser(jgrid, page.configcolumn_data); $(window).resize(); } function rowdblclick(rowid) { var rowData = $(this).getRowData(rowid); if (rowData.id > 0 && rowData.TradeType) { starttradeView(rowData.EncryptTradeId, rowData.TradeType); } } function starttradeView(id, tradeType) { var srcurl = "/trade/tradeView/?enid=" + id + "&isFromPositionReport=false&isOnlyCloseButton=true"; main.open("查看交易", srcurl, { area: ['1260px', '800px'] }); } //---------------------------Formatter--------------------------------- function PriceFormat(cellValue, options, rowObject) { return otcformat.trading.tradePrice(cellValue); } function RealizedPnlFormat(cellValue, options, rowObject) { return otcformat.trading.tradePrice(cellValue); } function StockEqvNotionalFormat(cellValue, options, rowObject) { return otcformat.trading.StockEqvNotional(cellValue); } function YesOrNoFormat(cellValue, options, rowObject) { return cellValue ? "是" : "否"; } function PercentFormat(cellValue, options, rowObject) { if (cellValue) { var num = new Number(cellValue) * 100; return num.toFixed(2) + "%"; } else { return "0.00%"; } } function SwapTimeAndRateFormat(cellValue, options, rowObject) { if (cellValue != null && cellValue.indexOf(";") > 0) { var spCellValue = cellValue.split(";")[1]; if (spCellValue != null && spCellValue.indexOf(",") > 0) { return PercentFormat(spCellValue.split(",")[0]); } else { return PercentFormat(spCellValue); } } return PercentFormat(cellValue); } //--------------------------------------------------------------------------------- function rowclick(id) { } function exportTrade() { var jgrid = jQuery('#listGrid'); var postData = GetPostData(); var ids = jgrid.jqGrid('getGridParam', 'selarrrow'); if (ids.length > 0) { postData.TradeIds = ids; } downLoadFile("/swaptrade/DownloadEodPositionRisks?" + $.param(postData, true)); } function downLoadFile(downloadUrlStr) { window.open(downloadUrlStr); } function GetPostData() { var postData = {}; postData.ValueDate = $("#DateValueDate").val(); postData.TradeNumber = $("#TradeNumber").val(); postData.BookIds = $("#BookId").val(); postData.AssetIdGroupList = $("#GroupId").val(); postData.UnderlyingIds = $("#UnderlyingId").val(); postData.TraderIds = $("#TraderId").val(); postData.ClientIds = $("#ClientId").val(); postData.EodSettlePriceMode = $("#EodSettlePriceMode").val(); postData.SettlementDateStart = $("#DateFromSettlementDate").val(); postData.SettlementDateEnd = $("#DateToSettlementDate").val(); postData.SettlementFlags = $("#SettlementFlag").val(); postData.TagIds = $("#TagIds").val(); return postData; } function SearchClick(isSearchclick) { var listGrid = $('#listGrid'); listGrid.appendPostData(GetPostData()); if (typeof (isSearchclick) != "undefined" && isSearchclick) { //点击搜索时默认第一页 listGrid.jqGrid('setGridParam', { page: 1 }); } listGrid.trigger('reloadGrid'); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); main.showcolumnChooser(jgrid, page.configcolumn_data); } function changePriceType() { var lastDate = new Date().Format("yyyy-MM-dd"); if ($('#EodSettlePriceMode').val() == "结算价") { lastDate = page.valueDate_settle; $('#settleBtn').show(); } else { lastDate = page.valueDate_eod; $('#settleBtn').hide(); } $("#DateValueDate").datepicker("option", "maxDate", lastDate); if (!$("#DateValueDate").val()) { $("#DateValueDate").val(lastDate); } } //function openSettlePage() { // main.open("结算价收盘", "/eod_trade_value/eodBatchExec_Settle", { area: ["680px", "510px"] }); //} function downClientRiskMonitor() { var htmlContent = $('#exportRiskReport').html(); main.open2("导出日终持仓风险_互换", htmlContent, { area: ["450px", "300px"], success: function (layero, index) { var valueDate = $("#DateValueDate").val(); main.setTradeDatePicker(valueDate, ""); $("#endDate").val($("#DateValueDate").val()); $("#startDate,#endDate").datepicker("option", "maxDate", valueDate); $("#startDate").on("change", function () { var startDate = $(this).val(); if (!main.isDate(startDate)) { return; } $("#endDate").datepicker("option", "minDate", startDate); }); $("#endDate").on("change", function () { var endDate = $(this).val(); if (!main.isDate(endDate)) { return; } $("#startDate").datepicker("option", "maxDate", endDate); }); } }); } //导出区间 function rangeClick() { $("#startDate").prop("disabled", !$("#useRange").prop("checked")); } //导出提示 function execExport() { if (main.isEmpty($("#startDate").val()) && $("#useRange").prop("checked")) { return main.message("开始日期不能为空"); } if (main.isEmpty($("#endDate").val())) { return main.message("结束日期不能为空"); } if ($("#startDate").val() > $("#endDate").val()) { return main.message("开始日期不能在结束日期之后"); } var jgrid = jQuery('#listGrid'); var postData = GetPostData(); if ($("#useRange").prop("checked")) { postData.StartDate = $("#startDate").val(); postData.ValueDate = $('#endDate').val(); window.open("/trade/EodPositionRiskExport?" + $.param(postData, true) + "&processName=ExportEodPositionRisksSwap"); } else { postData.StartDate = $("#startDate").val(); postData.ValueDate = $('#endDate').val(); var ids = jgrid.jqGrid('getGridParam', 'selarrrow'); if (ids.length > 0) { postData.TradeIds = ids; } downLoadFile("/swaptrade/DownloadEodPositionRisks?" + $.param(postData, true)); parent.layer.closeAll(); } } function downLoadFile(downloadUrlStr) { window.open(downloadUrlStr); }