605 lines
17 KiB
JavaScript
605 lines
17 KiB
JavaScript
$(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);
|
|
} |