function getColModelGrid() { var i = 0; var colModelGrid = [ { name: 'trade.id', label: 'trade.id', index: 'trade.id', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'trade.IsMoneynessOption', label: 'trade.IsMoneynessOption', index: 'trade.IsMoneynessOption', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'trade.EncryptId', label: 'trade.EncryptId', index: 'trade.EncryptId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'trade.UnderlyingId', label: 'trade.UnderlyingId', index: 'trade.UnderlyingId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'trade.TradeNumber', label: '交易编号', index: 'trade.TradeNumber', sortIndex: i++, width: 150, align: 'center', formatter: ShowStructFormater }, { name: 'trade.ClientName', label: '客户名称', index: 'trade.ClientName', sortIndex: i++, width: 150, align: 'center' }, { name: 'TradeType', label: '结构类型', index: 'TradeType', sortIndex: i++, width: 70, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.trade.StructureType && rowObject.trade.IsGroup != 2 ? rowObject.trade.StructureType : rowObject.TradeType; } }, { name: 'trade.TradeStatus', label: '交易状态', index: 'trade.TradeStatus', sortIndex: i++, width: 100, align: 'center', formatter: tradeStatusFormat }, { name: 'trade_cash.UnwindTradeAmount', label: '提前终止数量', index: 'trade_cash.UnwindTradeAmount', width: 100, align: 'right', sortable: false, sortIndex: i++, formatter: unwindTradeAmountFormat }, { name: 'trade_cash.FinalPrice', label: '终止时标的价格', index: 'trade_cash.FinalPrice', width: 120, align: 'right', sortable: false, sortIndex: i++, formatter: 'number' }, { name: 'trade_cash.UnwindPrice', label: '提前终止价格', index: 'trade_cash.UnwindPrice', width: 150, align: 'right', sortable: false, sortIndex: i++, formatter: unwindPriceFormat }, { name: 'WinLoss', label: '实现盈亏', index: 'WinLoss', width: 100, align: 'right', sortable: false, sortIndex: i++, formatter: winLossFormat }, { name: 'trade.TradeDate', label: '交易日期', index: 'trade.TradeDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'trade.ExerciseDate', label: '到期日期', index: 'trade.ExerciseDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'trade.BuySell', label: '交易方向', index: 'trade.BuySell', sortIndex: i++, width: 70, align: 'center' }, { name: 'trade.OriginalNotional', label: '交易数量', index: 'trade.OriginalNotional', sortIndex: i++, width: 70, align: 'right', formatter: function (cellValue, options, rowObject) { return page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * rowObject.trade.TradeOriginalAmount : rowObject.trade.TradeOriginalAmount; } }, { name: 'trade.TradeAmount', label: '持仓数量', index: 'trade.TradeAmount', sortIndex: i++, width: 70, align: 'right', formatter: TradeAmountFormat }, { name: 'trade.TradeAmount', label: '累计已了结数量', index: 'trade.TradeAmount', sortIndex: i++, width: 70, align: 'right', hidden: ylotc.Company === "国泰君安", optionHide: ylotc.Company === "国泰君安", formatter: unwindTradeAmountFormatA }, { name: 'trade.UnderlyingCode', label: '标的代码', index: 'trade.UnderlyingCode', sortIndex: i++, width: 60, align: 'center', formatter: ShowStructFormater }, { name: 'trade.ExerciseMode', label: '行权方式', index: 'trade.ExerciseMode', sortIndex: i++, width: 70, align: 'left', formatter: function (cellValue, options, rowObject) { return rowObject.trade.ExerciseModeCn; } }, { name: 'trade.OptionType', label: '多空方向', index: 'trade.OptionType', sortIndex: i++, width: 70, align: 'center', formatter: function (cellvalue, options, rowObject) { if (rowObject.trade.OptionType != "") { return rowObject.trade.OptionType == "看涨" ? "多头" : "空头"; } } }, { name: 'trade.Strike', label: '执行价格', index: 'trade.Strike', sortIndex: i++, width: 90, align: 'right', formatter: 'number' }, { name: 'trade.InitialSpotPrice', label: '标的期初价格', index: 'trade.InitialSpotPrice', sortIndex: i++, width: 90, align: 'right', sortable: false, formatter: initialSpotPriceFormat }, { name: 'trade.trade_forward.OpenCommission', label: '开仓费用', index: 'trade.trade_forward.OpenCommission', sortIndex: i++, width: 90, align: 'right', sortable: false, formatter: ThreeFormat, }, { name: 'trade.Comments', label: '备注', index: 'trade.Comments', sortIndex: i++, width: 140, align: 'left' }, { name: 'trade.CreatorName', label: '创建者', index: 'trade.CreatorName', sortIndex: i++, width: 70, align: 'center' }, { name: 'trade.OptName', label: '操作者', index: 'trade.OptName', sortIndex: i++, width: 70, align: 'center' }, { name: 'trade.OptDate', label: '操作时间', index: 'trade.OptDate', sortIndex: i++, width: 90, align: 'center' }, { name: '', label: '操作', index: '', sortIndex: i++, align: 'center', width: 200, formatter: showToolName } ]; return colModelGrid; } function tabSelect() { $("#myTab").children().removeClass("active"); $("#tab" + page.tabIndex).addClass("active"); $("#Btn_BatchExpire").hide(); $("#tab1NotShow").hide(); $("#tab3_4NotShow").show(); var tabName = page.tabName; if (tabName === "当日到期" || tabName === "明日到期") { if (tabName === "当日到期") { $("#Btn_BatchExpire").show(); } $("#DateFromExerciseDate").prop("disabled", true); $("#DateToExerciseDate").prop("disabled", true); } else { $("#DateFromExerciseDate").prop("disabled", false); $("#DateToExerciseDate").prop("disabled", false); } if (tabName === "当日提前终止") { $("#tab1NotShow").show(); $("#tab3_4NotShow").show(); } else if (tabName === "当日到期" || tabName === "明日到期") { $("#tab1NotShow").show(); $("#tab3_4NotShow").hide(); } SearchClick(true); } function exportTrade() { var dateTemp = new Date().Format("yyyyMMddhhmmss"); var fileName = "Trade_" + page.tabName + "_" + dateTemp; main.toExcel("listGrid", fileName, "xls", null, "操作者,操作时间,操作"); } var g_grid = {}; $(function () { tabSelect(); showTabTotalCount(); $("#Btn_BatchExpire").hide(); $("#tab1NotShow").hide(); $("#tab3_4NotShow").show(); var PostData = {}; PostData.ValueDateStart = page.valueDate; PostData.ValueDateEnd = page.valueDate; PostData.TabIndex = page.tabIndex; PostData.IsHistoryWithUnconfirmed = true; PostData.IsForward = true; $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); var colModelGrid = getColModelGrid(); grid = jQuery('#listGrid').jqGrid({ url: "/clientbalance/GetPreEndList/forward", datatype: 'json', multiselect: true, height: 'auto', width: '96%', autowidth: false, shrinkToFit: false, viewrecords: true, jsonReader: { repeatitems: false }, caption: '', mtype: 'POST', postData: PostData, colModel: colModelGrid, pager: jQuery('#pagerGrid'), pagerpos: 'left', ondblClickRow: rowdblclick, rowNum: 20, rowList: [20, 30, 50, 200, 10000], footerrow: false, loadComplete: gridComplete, grouping: true }); main.isSearching = true; g_grid = jQuery('#listGrid'); function keyEnter(event) { try { var e = event || window.event || {}; if (e.keyCode === 13) { SearchClick(true); } } catch (e) { // } } document.onkeydown = keyEnter; let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId') .setFlag(tradeHelper.UnderlyingSelectFlag.OtcForward); $(window).resize(); }); function showTabTotalCount() { main.post("/forwardtrade/tradeCountsOnValueDateQuery").done(function (data) { for (var i in data) { $(`#tab${i}`).find("a").attr("title", `总数${data[i]}笔`); } $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" }); }); } function rowdblclick(rowid) { var rowData = $(this).getRowData(rowid); starttradeView(rowData["trade.EncryptId"], rowData["trade.TradeType"]); } function setStructTable(rowObject) { structTrades = rowObject.SubTrades; var trhtml = ""; var trcode = "标的代码{1}".template(structTrades.length, rowObject.trade.UnderlyingCode); var trstrike = "执行价格"; var trbuysell = "买卖方向"; var trvarity = "结构类型{1}".template(structTrades.length, rowObject.trade.StructureType); var trstockeqvnotional = "名义本金{1}".template(structTrades.length, (new Number(rowObject.trade.StockEqvNotional) / 10000).toFixed(2) + "万"); var trmaturedate = "到期日期{1}".template(structTrades.length, moment(rowObject.trade.ExerciseDate).format("YYYY-MM-DD")); //trtradestatus = "交易状态{1}".template(structTrades.length, rowObject.TradeStatus); if (structTrades) { for (var i = 0; i < structTrades.length; i++) { trstrike += "{0}".template(structTrades[i].IsMoneynessOption === "是" ? (new Number(structTrades[i].Strike) * 100).toFixed(2) + "%" : structTrades[i].Strike); trbuysell += "{0}".template(structTrades[i].BuySell); } } trhtml = "{0}".template(trcode); trhtml += "{0}".template(trstrike); trhtml += "{0}".template(trbuysell); trhtml += "{0}".template(trstockeqvnotional); trhtml += "{0}".template(trmaturedate); //trhtml += "{0}".template(trtradestatus); trhtml += "{0}".template(trvarity); return "{0}
".template(trhtml); } function ShowStructFormater(cellValue, options, rowObject) { var html; //if (rowObject.trade.TradeType === "结构化交易") { // html = "{0}" // .template(cellValue || '', setStructTable(rowObject)); // return html; //} if (rowObject.trade.TradeType === "合成价差期权") { html = "{0}" .template(cellValue || '', rowObject.trade.SyntheticUnderlyingTipsInfo); return html; } return cellValue || ''; } function NotionalFormat(cellValue, options, rowObject) { return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 : cellValue; } function TradeAmountFormat(cellValue, options, rowObject) { if (ylotc.Company === "国泰君安") { return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 : (page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * cellValue : cellValue); } else { return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" ? 0 : (page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount) : (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount)); } } function TradeAmountFormatA(cellValue, options, rowObject) { return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 : (page.IsUseDisplayNotional ? (rowObject.trade.TradeOriginalAmount - (rowObject.trade.CountRatio || 1) * (rowObject.trade.TradeOriginalAmount - rowObject.trade_cash.UnwindTradeAmount)) : (rowObject.trade.TradeOriginalAmount - rowObject.trade.TradeOriginalAmount - rowObject.trade_cash.UnwindTradeAmount)); } function unwindTradeAmountFormatA(cellValue, options, rowObject) { return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" ? 0 : (page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * (rowObject.trade.TradeOriginalAmount - (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount)) : (rowObject.trade.TradeOriginalAmount - (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount))); } function unwindTradeAmountFormat(cellValue, options, rowObject) { return rowObject.trade_cash.Action === "系统操作-行权费" ? main.formatNumber(page.IsUseDisplayNotional ? rowObject.trade_cash.TradeAmount * (rowObject.trade.CountRatio || 1) : rowObject.trade_cash.TradeAmount, 2) : main.formatNumber(page.IsUseDisplayNotional ? rowObject.trade_cash.UnwindTradeAmount * (rowObject.trade.CountRatio || 1) : rowObject.trade_cash.UnwindTradeAmount, 2); } function unwindPriceFormat(cellValue, options, rowObject) { if (rowObject.IsUsePremiumRate) { return rowObject.trade_cash.Action == "系统操作-行权费" ? otcformat.trading.tradeSinglePrice(rowObject.trade_cash.UnwindPrice) : otcformat.trading.premiumRateP(rowObject.trade_cash.UnwindPricePercentRate); } else { return otcformat.trading.tradeSinglePrice(rowObject.trade_cash.UnwindPrice); } } function doubleFormat(cellValue, options, rowObject) { return cellValue === null || cellValue === undefined ? "0.00" : numeral(cellValue).format("0,0.00") === "NaN" ? "0.00" : numeral(cellValue).format("0,0.00"); } //盈亏从机构方角度看,需要去反(源数据是和盯市报告一样,以客户角度来看的) function winLossFormat(cellValue, options, rowObject) { return cellValue === null || cellValue === undefined ? "0.000" : numeral(cellValue).format("0,0.000") === "NaN" ? "0.000" : numeral(-cellValue).format("0,0.000"); } function tradeStatusFormat(cellValue, options, rowObject) { return (rowObject.trade_cash.Action === "系统操作-行权费" || ((rowObject.trade.TradeStatus === "行权待复核" || rowObject.trade.TradeStatus === "平仓待复核") && rowObject.trade_cash.ValidState === "InValid")) ? rowObject.trade.TradeStatus : (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindNotional > 1e-5 ? "部分平仓" : "已平仓"); } function PercentFormat(cellValue, options, rowObject) { if (cellValue) { var num = new Number(cellValue) * 100; return num.toFixed(2) + "%"; } else { return "0.00%"; } } function gridComplete() { var jgrid = $(this); var newHeight = $(window).height() - 400; $(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;"); $('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll(); $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" }); main.setcolumnChooser(jgrid, page.configcolumn_name); } function customButton(cellValue, options, rowObject) { var imageHtml = ""; return imageHtml; } function downloadFiles(files) { if (files instanceof Array) { if (files.length > 0) { $.each(files, function (index, val) { val && setTimeout(function () { window.open(val); }, 500); }); } } else { files && window.open(files); } } function showToolName(cellValue, options, rowObject) { var html = "" .template(rowObject.trade.EncryptId, "查看", rowObject.trade.TradeType); return html; } function initialSpotPriceFormat(cellValue, options, rowObject) { return rowObject.trade.InitialSpotPrice.toFixed(2) || rowObject.trade.SpotPrice.toFixed(2); } function ThreeFormat(cellValue, options, rowObject) { return cellValue ? numeral(cellValue).format("0.000") : "0.000"; } function rowclick(id) { } function starttradeView(id, tradeType) { main.open("查看交易", "/forwardtrade/tradeView/?enid={0}".template(id)); } function reloadtrade() { //重新加载 SearchClick(); $('#modal-edittrade').modal('hide'); } function setGridPostData() { var listGrid = $('#listGrid'); listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); listGrid.appendPostData({ ClientIds: $("#ClientId").val() }); listGrid.appendPostData({ AssetIds: $("#AssetId").val() }); listGrid.appendPostData({ TraderIds: $("#TraderId").val() }); listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() }); listGrid.appendPostData({ VarietyIds: $("#VarietyId").val() }); listGrid.appendPostData({ TradeDateStart: $("#DateFromTradeDate").val() }); listGrid.appendPostData({ TradeDateEnd: $("#DateToTradeDate").val() }); listGrid.appendPostData({ BuySell: $("#BuySell").val() }); listGrid.appendPostData({ OptionType: $("#OptionType").val() }); listGrid.appendPostData({ StartDateStart: $("#DateFromStartDate").val() }); listGrid.appendPostData({ StartDateEnd: $("#DateToStartDate").val() }); listGrid.appendPostData({ TradeStatus: $("#TradeStatus").val() }); listGrid.appendPostData({ TradeTypes: $("#TradeTypes").val() }); listGrid.appendPostData({ Comments: $("#Comments").val() }); listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() }); listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() }); listGrid.appendPostData({ ExerciseMode: $("#ExerciseMode").val() }); listGrid.appendPostData({ TabIndex: page.tabIndex }); } function SearchClick(isSearchclick) { setGridPostData(); if (isSearchclick) { //点击搜索时默认第一页 $('#listGrid').jqGrid('setGridParam', { page: 1 }); } $('#listGrid').trigger('reloadGrid'); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); main.showcolumnChooser(jgrid, page.configcolumn_name); } function downCsv(fileName, exStrr, fileExtension) { if (!fileExtension) { fileExtension = ".csv"; } var isIE = navigator.userAgent.indexOf('MSIE') >= 0; if (isIE) { var strHTML = exStrr; var winSave = window.open(); winSave.document.open("text", "utf-8"); winSave.document.write(strHTML); winSave.document.execCommand("SaveAs", true, fileName + fileExtension); winSave.close(); } else { var mimeType = 'text/plain'; $('#createInvote').attr('download', fileName + fileExtension); //\uFEFF bom $('#createInvote').attr('href', 'data:' + mimeType + ';charset=utf-8,\uFEFF' + encodeURIComponent(exStrr)); document.getElementById('createInvote').click(); } }