var g_grid = {}; var query_data = {}; $(function () { var PostData = {}; PostData.ValidState = $("#ValidState").val(); if (settleDate) { $("#DateFromExerciseDate").val(settleDate); $("#DateToExerciseDate").val(settleDate); PostData.ExerciseDateStart = settleDate; PostData.ExerciseDateEnd = settleDate; } $('#createInvote2').click( function () { var tempTrim = String.prototype.trim; String.prototype.trim = function () { var firstChar = ""; if (this.indexOf("\t") === 0) { firstChar = "\t"; } return firstChar + this.replace(/(^\s*)|(\s*$)/g, ""); }; ExcellentExport.csv(this, 'excelTable'); String.prototype.trim = tempTrim; return; } ); $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); grid = jQuery('#listGrid').jqGrid({ cmTemplate: { width: 80, align: 'center', sortable: false }, url: '/forwardTrade/TradeQuery', datatype: 'json', multiselect: true, height: 'auto', width: '96%', autowidth: false, shrinkToFit: false, viewrecords: true, jsonReader: { repeatitems: false }, caption: '', mtype: 'POST', postData: PostData, onSelectRow: rowclick, ondblClickRow: rowdblclick, colModel: colModelGrid, pager: jQuery('#pagerGrid'), pagerpos: 'left', rowNum: 20, rowList: [20, 30, 50, 200, 10000], footerrow: 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.OtcForward); $("#CheckboxAll").click(function () { //setall selAllGrid(); }); }); var hideObj = { clientWidth: 160 }; var i = 0; var getColModelGrid = function () { let colModelGrid = [ { name: 'id', label: 'id', index: 'id', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'EncryptId', label: 'EncryptId', index: 'EncryptId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'UnderlyingId', label: 'UnderlyingId', index: 'UnderlyingId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, { name: 'IsMoneynessOption', label: 'IsMoneynessOption', index: 'IsMoneynessOption', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true }, //{ // name: '', // label: '操作', // index: '', // sortIndex: i++, // width: 70, // align: 'center', // formatter: showToolName //}, { name: 'OptDate', label: '操作时间', index: 'OptDate', sortIndex: i++, width: 160, align: 'center', sortable:true, formatter: 'datetime' }, { name: 'OptName', label: '操作者', index: 'OptName', sortIndex: i++, width: 70, align: 'center' }, { name: 'CreatorName', label: '创建者', index: 'CreatorName', sortIndex: i++, width: 70, align: 'center' }, { name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', sortIndex: i++, width: 110, align: 'center' }, { name: 'TraderName', label: '交易员', index: 'TraderName', sortIndex: i++, width: 70, align: 'center' }, { name: 'TradeStatus', label: '交易状态', index: 'TradeStatus', sortIndex: i++, width: 70, align: 'center' }, { name: 'TradeNumber', label: '交易编号', index: 'TradeNumber', sortIndex: i++, width: 150, align: 'center' }, { name: 'ClientName', label: '客户名称', index: 'ClientName', sortIndex: i++, width: hideObj.clientWidth, align: 'center' }, { name: 'BuySell', label: '交易方向', index: 'BuySell', sortIndex: i++, width: 70, align: 'center' }, { name: 'TradeDate', label: '交易日期', index: 'TradeDate', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: 'date' }, { name: 'StartDate', label: '开始日期', hidden: true, index: 'StartDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: 'date' }, { name: 'UnderlyingCode', label: '标的代码', index: 'UnderlyingCode', sortIndex: i++, width: 60, align: 'center' }, { name: 'UnderlyingName', label: '标的名称', index: 'UnderlyingName', sortIndex: i++, width: 100, align: 'center' }, { name: 'InitialSpotPrice', label: '期初标的价格', index: 'InitialSpotPrice', hidden: true, sortIndex: i++, width: 85, align: 'center', formatter: otcformat.trading.umprice }, { name: 'MaturityDate', label: '标的到期日', index: 'MaturityDate', sortIndex: i++, width: 90, align: 'center', sortable:true, //formatter: 'date' //如果标的资产类型为Stock,则将该列值置空 formatter: function (cellValue, options, rowObject) { if (rowObject.UnderlyingInstrumentType === "Stock") return ""; else return rowObject.MaturityDate ?(rowObject.MaturityDate + "").substring(0, 10):''; } }, { name: 'ExerciseModeCn', label: '行权方式', hidden: true, optionHide: true, index: 'ExerciseModeCn', sortIndex: i++, width: 90, align: 'center' }, { name: 'TradeType', label: '结构类型', index: 'TradeType', sortIndex: i++, width: 70, align: 'center', formatter: function (cellvalue, options, rowObject) { return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType } }, { name: 'OptionType', label: '多空方向', index: 'OptionType', sortIndex: i++, width: 70, align: 'center', formatter: function (cellvalue, options, rowObject) { return !rowObject.OptionType ? "" : rowObject.OptionType === "看涨" ? "多头" : "空头"; } }, { name: 'Strike', label: '交割价格', index: 'Strike', sortIndex: i++, width: 90, align: 'center', sortable:true, formatter: otcformat.trading.umprice }, { name: 'TradeOriginalAmount', label: '交易数量', index: 'TradeOriginalAmount', sortIndex: i++, width: 70, align: 'center', sortable: false, formatter: tradeHelper.getNotionalFormat }, { name: 'trade_forward.OpenCommission', label: '开仓费用', index: 'OpenCommission', sortIndex: i++, width: 90, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: 'OriginalStockEqvNotional', label: '名义本金', sortIndex: i++, width: 70, align: 'center', sortable: true, formatter: StockEqvNotionalMaxFormat }, { name: 'TotalOpenCommission', label: '开仓总费用', index: 'TotalOpenCommission', sortIndex: i++, width: 90, sortable: false, align: 'center', formatter: function (cellvalue, options, rowObject) { if (!rowObject.TradePrice) { return "0.00"; } var num = rowObject.TradePrice; return otcformat.trading.tradePrice(num); } }, { name: 'TradeAmount', label: '存续数量', index: 'TradeAmount', sortIndex: i++, width: 70, align: 'center', sortable: true, formatter: TradeAmountFormat }, { name: 'FinalPrice', label: '期末价格', index: 'FinalPrice', sortIndex: i++, width: 85, align: 'center', hidden: true, formatter: otcformat.trading.umprice }, { name: 'SyntheticUnderlyingTipsInfo', label: 'SyntheticUnderlyingTipsInfo', index: 'SyntheticUnderlyingTipsInfo', sortIndex: i++, align: 'center', hidden: true, optionHide: true }, { name: 'SalesCommission.Commission', label: '销售提成', index: 'SalesCommission.Commission', sortIndex: i++, width: 90, align: 'center', sortable: false, formatter: CommissionFormatter } ]; if (page.isDongZheng === "True") { colModelGrid.push({ name: 'Comments', label: '对手编号', index: 'Comments', sortIndex: i++, width: 120, sortable: false, align: 'center', }); } else { colModelGrid.push( { name: 'Comments', label: '备注', index: 'Comments', sortIndex: i++, width: 70, align: 'center', formatter: function (cellValue, options, rowObject) { if (cellValue && cellValue.startsWith("http://")) { return "{0}".template(cellValue); } return cellValue; } }); } if (page.ViewTagPermission) { colModelGrid.push({ name: 'Tags', label: '标签值', index: 'Tags', width: 150, align: 'left', sortable: false, formatter: function (cellvalue, options, rowObject) { var html = '
'; var tagNames = ""; if (rowObject.Tags != null && rowObject.Tags.length > 0) { for (var i = 0; i < rowObject.Tags.length; i++) { if (i == rowObject.Tags.length - 1) { tagNames += "[" + rowObject.Tags[i].Name + "]"; } else { tagNames += "[" + rowObject.Tags[i].Name + "],"; } } if (rowObject.Tags.length > 2) { for (var i = 0; i < 2; i++) { html += '' + rowObject.Tags[i].Name + ''; } html += '...'; } else { for (var i = 0; i < rowObject.Tags.length; i++) { html += '' + rowObject.Tags[i].Name + ''; } } } html += '
'; return html; } }, { name: 'OutputTags', label: 'OutputTags', index: 'OutputTags', width: 70, align: 'center', hidden: true, optionHide: true }); } return colModelGrid; }; var colModelGrid = getColModelGrid(); function DoubleFormat(cellValue, options, rowObject) { return !cellValue ? "0.00" : cellValue.toFixed(2); } function PercentFormat(cellValue, options, rowObject) { if (cellValue) { var num = new Number(cellValue) * 100; return num.toFixed(2) + "%"; } else { return "0.00%"; } } function StockEqvNotionalMaxFormat(cellValue, options, rowObject) { return otcformat.trading.StockEqvNotional(isUseStockEqvNotionalMax && rowObject.StockEqvNotionalMax > 0 ? rowObject.StockEqvNotionalMax : cellValue); } function NotionalFormat(cellValue, options, rowObject) { if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return "0.00"; } else { return DoubleFormat(cellValue, options, rowObject); } } function TradeAmountFormat(cellValue, options, rowObject) { if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return "0.00"; } else { return tradeHelper.getNotionalFormatByDouble(cellValue, options, rowObject); } } function TradePriceFormat(cellValue, options, rowObject) { return numeral(cellValue * (rowObject.BuySell === "买入" || rowObject.BuySell === "多头开仓" || rowObject.BuySell === "空头平仓" ? -1 : 1)).format('0,0.00'); } function unwindDateFormat(cellValue, options, rowObject) { return (rowObject.TradeStatus === "已执行" || rowObject.TradeStatus === "已到期") ? moment(cellValue).format("YYYY-MM-DD") : ""; } function CommissionFormatter(cellValue, options, rowObject) { if (rowObject.SalesCommission.Commission) { if (rowObject.SalesCommission.CommissionFixed == false) { return otcformat.trading.premiumRateP(rowObject.SalesCommission.Commission); } else { return otcformat.trading.umprice(rowObject.SalesCommission.Commission); } } else { if (rowObject.SalesCommission.Commission === 0) { return otcformat.trading.umprice(0); } else { return ""; } } } function gridComplete() { var jgrid = $(this); var rowNum = parseInt(jgrid.getGridParam('records'), 10); if (rowNum > 0) { $(".ui-jqgrid-sdiv").show(); var totalTradeAmount = arguments[0].Sum == null ? "" : arguments[0].Sum.TradeAmountSum; jgrid.footerData("set", { "TradeAmount": totalTradeAmount }); $(".ui-jqgrid-sortable").css("text-align", "center"); var newHeight = $(window).height() - 270; $(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;"); $('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll(); } else { $(".ui-jqgrid-sdiv").hide(); } //jgrid.sortGrid(g_sort.name, g_sort.order); main.setcolumnChooser(jgrid, page.configcolumn_data_yqjyss); $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" }); } function showToolName(cellValue, options, rowObject) { var color = ""; var title = "查看交易信息"; var html = "" .template(rowObject.EncryptId, rowObject.TradeType, color, title); return html; } function rowclick(id) { } function rowdblclick(rowid) { var rowData = $(this).getRowData(rowid); if (rowData.EncryptId && rowData.TradeType) { starttradeView(rowData.EncryptId, rowData.TradeType); } } function startAddtrade() { layer.open({ type: 2, title: "新增远期交易", shadeClose: false, shade: 0.4, area: ['1400px', '800px'], content: "/forwardTrade/TradeEditV2/0" }); } function starttradeView(id, tradeType) { var srcurl = "/forwardTrade/TradeView/?enid=" + id + "&checkBtn=1"; main.open("查看交易", srcurl, { area: ['1300px', '900px'], scrollbar: false }); } function reloadtrade() { //重新加载 SearchClick(); } function SearchClick(isSearchclick) { var listGrid = $('#listGrid'); listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); listGrid.appendPostData({ AssetIds: !$("#AssetId").val() ? "" : $("#AssetId").val().join(",") }); listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() }); listGrid.appendPostData({ ClientIds: !$("#ClientId").val() ? "" : $("#ClientId").val().join(",") }); listGrid.appendPostData({ AssetType: $("#AssetType").val() }); listGrid.appendPostData({ UnderlyingIds: !$("#UnderlyingId").val() ? "" : $("#UnderlyingId").val().join(",") }); listGrid.appendPostData({ ExchangeAccountCodes: $("#ExchangeAccountCode").val() }); listGrid.appendPostData({ TradeTypes: !$("#TradeTypes").val() ? "" : $("#TradeTypes").val().join(",") }); 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({ MaturityDateStart: $("#DateFromMaturityDate").val() }); listGrid.appendPostData({ MaturityDateEnd: $("#DateToMaturityDate").val() }); listGrid.appendPostData({ TradePrice: $("#TradePrice").val() }); var reqTradeStatus = !$("#TradeStatus").val() ? page.AllTradeStatus : $("#TradeStatus").val().join(","); if (!reqTradeStatus) { reqTradeStatus = page.AllTradeStatus; } listGrid.appendPostData({ TradeStatus: reqTradeStatus }); listGrid.appendPostData({ TraderNames: !$("#TraderName").val() ? "" : $("#TraderName").val().join(",") }); listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() }); listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() }); listGrid.appendPostData({ TagIds: $("#TagIds").val() }); query_data = listGrid.jqGrid('getPostData'); if (typeof isSearchclick !== "undefined" && isSearchclick) { //点击搜索时默认第一页 listGrid.jqGrid('setGridParam', { page: 1 }); } listGrid.trigger('reloadGrid'); } function exportTrade(isExportAllCol) { if (!isExportAllCol) { var dateTemp = new Date().Format("yyyyMMddhhmmss"); var fileName = "远期交易导出" + dateTemp; var toExcelAarry = [ { colName: "交易编号", formatter: "text" }, { colName: "标的代码", formatter: function (cellValue, options, rowObject) { if (rowObject.TradeType === "合成价差期权") { return rowObject.SyntheticUnderlyingTipsInfo; } return cellValue; } }]; if (page.ViewTagPermission) { toExcelAarry.push({ colName: "标签值", formatter: function (cellValue, options, rowObject) { return rowObject.OutputTags; } }); } main.toExcel("listGrid", fileName, "xls", null, "操作者,操作时间,操作", toExcelAarry ); return; } } function importTrade() { main.open("远期交易导入", "/forwardTrade/TradeUpload", { area: ['800px', '600px'] }); } function getValidVal(val, defaultVal) { if (!val) { return defaultVal || ""; } return val; } function getRowText(data, rowModel, template) { var rowText = ""; for (var i = 0; i < data.length; i++) { var val = getValidVal(data[i].value); if (data[i].visible) { if (typeof data[i].visible === "boolean" && !data[i].visible) { continue; } if (typeof data[i].visible === "function" && !data[i].visible(val, rowModel)) { continue; } } if (data[i].func && typeof data[i].func === "function") { val = data[i].func(val, rowModel); } rowText += template.template(data[i].name, val); } return rowText; } function downCsv(fileName, exStrr, fileExtension) { //针对换行符和空格符转换 exStrr = exStrr.replace(/                      /g, " ").replace(/权  利  金/g, "权 利 金").replace(//g, "\r\n"); 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)); if (fileExtension === ".txt") { document.getElementById('createInvote').click(); return; } //todo test $('#createInvote2').attr('download', fileName + fileExtension); $("#excelTable").html(exStrr); document.getElementById('createInvote2').click(); } } function unWindSelect(id, tradeType, isReCheck) { if (tradeType === "商品期货") { var message = "\"" + tradeType + "\"不允许平仓操作!"; main.confirm(message, function () { }); return; } var title = "交易平仓"; if (isReCheck) title = "平仓复核"; //障碍期权特殊处理 敲入时状态必须不为空才为有效 敲出时状态为空为有效 var srcurl = "/forwardTrade/tradeUnwind/?enid=" + id; if (isReCheck) srcurl += ("&isrecheck=" + isReCheck); main.open(title, srcurl, { area: ["1200px", "570px"], end: function () { reloadtrade(); } }); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); main.showcolumnChooser(jgrid, page.configcolumn_data_yqjyss); } function selAllGrid() { var checkAll = $("#CheckboxAll").prop("checked"); $("#cb_listGrid").click(); var cbGridClick = $("#cb_listGrid").prop("checked"); if (checkAll !== cbGridClick) { $("#cb_listGrid").click(); } } function GetSelAll() { var listGrid = $('#listGrid'); return { IsSelAll: $("#CheckboxAll").prop("checked"), PostData: listGrid.getPostData() }; } function getSelectTradeIds() { return main.GetGridIds($('#listGrid')); } function GetGridObjs() { return main.GetGridObjs($('#listGrid')); } function approvalList() { var grid = $("#listGrid"); var selRow = grid.jqGrid('getGridParam', 'selarrrow'); if (selRow.length == 0) { main.message("请勾选要匹配的交易"); return; } if (selRow.length > 1) { main.message("请仅勾选一条交易操作"); return; } var trade = grid.getRowData(selRow[0]); main.open("审批记录", "/trade/InterfaceApprovalRecord?type=1&code=" + trade.TradeNumber, { area: ["1200px", "600px"] }); } //ESC $(document).keyup(function (event) { switch (event.keyCode) { case 27: window.parent.layer.closeAll(); $(".jconfirm-open").addClass("hide");//关闭取消分组弹层 } }); function BatchSetTradeTag() { var jgrid = jQuery('#listGrid'); var selIds = main.GetGridIds(jgrid); if (selIds.length === 0) { main.message("请选择至少一个交易"); return; } let srcurl = "/Tag/BatchSetTradeTag/?ids=" + selIds.join(','); main.open("批量设置标签", srcurl, { area: ['778px', '257px'], scrollbar: false }); } window.reloadData = reloadtrade;