const configcolumn_data = { 当日成交: "todaySwapConfirmList", 今日到期: "todaySwapMaturityList" }; const TradeTabIndexEnum = { 今日成交: 1, 今日提前终止: 2, 今日到期: 3, 今日收益结算:9 }; function GetGridColModes() { var i = 0; var 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: 'OptDate', label: '操作时间', index: 'OptDate', sortIndex: i++, width: 160, align: 'center', 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: 'Comments', label: '备注', index: 'Comments', sortIndex: i++, width: 110, align: 'center' } , { name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', sortIndex: i++, width: 110, 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: 'TradeDate', label: '交易日期', index: 'TradeDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'StartDate', label: '开始日期', index: 'StartDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'SettlementDate', label: '结算日期', index: 'SettlementDate', sortIndex: i++, width: 90, align: 'center', 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' }, { name: 'trade_swap.SwapType', label: '互换类型', index: 'trade_swap.SwapType', sortIndex: i++, width: 70, sortable: false, align: 'center' }, { name: 'OriginalStockEqvNotional', label: '名义本金', index: 'OriginalStockEqvNotional', sortIndex: i++, width: 70, align: 'center', sortable: false, formatter: otcformat.trading.StockEqvNotional }, { name: 'ClientName', label: '交易对手方', index: 'ClientName', sortIndex: i++, align: 'center' }, { name: 'TraderName', label: '交易员', index: 'TraderName', sortIndex: i++, width: 100, align: 'center' }, { name: 'trade_swap.IsGetFloatingProfit', label: '[收取]浮动收益', index: 'trade_swap.IsGetFloatingProfit', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: YesOrNoFormat }, { name: 'trade_swap.GetUnderlyingCode', label: '[收取]标的代码', index: 'trade_swap.GetUnderlyingCode', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'MetaDic.GetUnderlyingName', label: '[收取]标的名称', index: 'MetaDic.GetUnderlyingName', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade_swap.GetLongShort', label: '[收取]多头空头', index: 'trade_swap.GetLongShort', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade_swap.GetSpotPrice', label: '[收取]标的期初价格', index: 'trade_swap.GetSpotPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }, { name: 'trade_swap.GetTradeAmount', label: '[收取]交易数量', index: 'trade_swap.GetTradeAmount', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.notional }, { name: 'trade_swap.GetTradePrice', label: '[收取]交易费用', index: 'trade_swap.GetTradePrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: 'trade_swap.GetMarginRate', label: '[收取]初始预付金率', index: 'trade_swap.GetMarginRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.premiumRateP }, { name: 'trade_swap.GetSwapTimeAndRate', label: '[收取]互换利率(年化)', index: 'trade_swap.GetSwapTimeAndRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: SwapTimeAndRateFormat }, { name: 'trade_swap.IsPayFloatingProfit', label: '[支付]浮动收益', index: 'trade_swap.IsPayFloatingProfit', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: YesOrNoFormat }, { name: 'trade_swap.PayUnderlyingCode', label: '[支付]标的代码', index: 'trade_swap.PayUnderlyingCode', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'MetaDic.PayUnderlyingName', label: '[支付]标的名称', index: 'MetaDic.PayUnderlyingName', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade_swap.PayLongShort', label: '[支付]多头空头', index: 'trade_swap.PayLongShort', sortIndex: i++, width: 100, align: 'center', sortable: false, }, { name: 'trade_swap.PaySpotPrice', label: '[支付]标的期初价格', index: 'trade_swap.PaySpotPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }, { name: 'trade_swap.PayTradeAmount', label: '[支付]交易数量', index: 'trade_swap.PayTradeAmount', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.notional }, { name: 'trade_swap.PayTradePrice', label: '[支付]交易费用', index: 'trade_swap.PayTradePrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.tradePrice }, { name: 'trade_swap.PaySwapTimeAndRate', label: '[支付]互换利率(年化)', index: 'trade_swap.PaySwapTimeAndRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: SwapTimeAndRateFormat }, { name: 'trade_swap.PayMarginRate', label: '[支付]初始预付金率', index: 'trade_swap.PayMarginRate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.premiumRateP }, { name: 'SalesCommission.Commission', label: '销售提成', index: 'SalesCommission.Commission', sortIndex: i++, width: 90, align: 'center', sortable: false, formatter: PercentFormat } ]; if (page.tabIndexSelect === TradeTabIndexEnum.今日到期 || page.tabIndexSelect === TradeTabIndexEnum.今日收益结算) { if (page.tabIndexSelect === TradeTabIndexEnum.今日收益结算) { colModelGrid.push({ name: 'trade_cash.ValueDate', label: '收益结算日期', index: 'trade_cash.ValueDate', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: 'date' }); } colModelGrid.push({ name: 'trade_cash.trade_cash_swap.GetFinalPrice', label: '[收取]到期标的价格', index: 'trade_cash.trade_cash_swap.GetFinalPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }); colModelGrid.push({ name: 'trade_cash.trade_cash_swap.PayFinalPrice', label: '[支付]到期标的价格', index: 'trade_cash.trade_cash_swap.PayFinalPrice', sortIndex: i++, width: 100, align: 'center', sortable: false, formatter: otcformat.trading.umprice }); colModelGrid.push({ name: 'RealizedPnl', label: '实现盈亏', index: 'RealizedPnl', sortIndex: i++, width: 130, align: 'right', sortable: false, formatter: GetRealizedPnl }); colModelGrid.push({ name: '', label: '操作', index: '', sortIndex: i++, align: 'center', width: 200, formatter: showToolName }); } return tradeHelper.getAmountToNotional(colModelGrid); } $(function () { $("#tab3_4NotShow").show(); var PostData = {}; PostData.TabIndex = page.tabIndexSelect; $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); colModelGrid = GetGridColModes(); grid = jQuery('#listGrid').jqGrid({ url: "/swaptrade/tradeOnValueDateQuery", 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 }); 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.OtcTrade); tabSelect(page.tabIndexSelect); showTabTotalCount(); }); function showTabTotalCount() { main.post("/swaptrade/tradeCountsOnValueDateQuery", null, { waitMe: false }).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.EncryptId, rowData.TradeType); } function GetRealizedPnl(cellValue, options, rowObject) { var html = "{1}"; return html.template("实现盈亏", otcformat.trading.tradePrice(cellValue)); } function YesOrNoFormat(cellValue, options, rowObject) { return cellValue ? "是" : "否"; } //展开折叠 function expandFormat(cellValue, options, rowObject) { var hasExpandIcon = rowObject.IsGroup == 1; if (hasExpandIcon) { return ``; } return ""; } function toggleExpand(rowid) { event.stopPropagation(); $(event.target).toggleClass('fa-minus'); var url = "/trade/SearchSwapGroupChildrenConfirmList"; if ($(event.target).hasClass('fa-minus')) { main.post(url, { id: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { jQuery('#listGrid').jqGrid('addRowData', res[i].id, res[i], 'after', rowid); $('#' + res[i].id).find("td").addClass("ChildrenBG"); } }); } else { main.post(url, { id: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { jQuery('#listGrid').jqGrid('delRowData', res[i].id); } }); } } 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" }); var columnKey = ""; if (page.tabIndexSelect === TradeTabIndexEnum.今日成交) { columnKey = configcolumn_data.当日成交; } else if (page.tabIndexSelect === TradeTabIndexEnum.今日到期) { columnKey = configcolumn_data.今日到期; } main.setcolumnChooser(jgrid, columnKey); } function showToolName(cellValue, options, rowObject) { var html = "" .template(rowObject.EncryptId, "查看", rowObject.TradeType); if (page.tabIndexSelect === TradeTabIndexEnum.今日到期) { if (rowObject.TradeType === "收益互换" && rowObject.TradeStatus === "确认成交" && rowObject.IsGroup != 1) { html = html + "" .template(rowObject.EncryptId, "收益结算"); } } return html; } function rowclick(id) { } function starttradeView(id) { var srcurl = "/trade/TradeView/?enid=" + id + "&checkBtn=1"; main.open("查看交易", srcurl); } function reloadtrade() { //重新加载 SearchClick(); $('#modal-edittrade').modal('hide'); } function setGridPostData() { var listGrid = $('#listGrid'); listGrid.appendPostData({ ClientIds: $("#ClientId").val() }); listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() }); listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); listGrid.appendPostData({ TraderIds: $("#TraderId").val() }); listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() }); listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() }); listGrid.appendPostData({ TradeStatus: $("#TradeStatus").val() }); listGrid.appendPostData({ AssetIds: $("#AssetId").val() }); listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() }); listGrid.appendPostData({ TabIndex: page.tabIndexSelect }); } function SearchClick(isSearchclick) { setGridPostData(); if (isSearchclick) { //点击搜索时默认第一页 $('#listGrid').jqGrid('setGridParam', { page: 1 }); } main.isSearching = true; $('#listGrid').trigger('reloadGrid'); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); var columnKey = ""; if (page.tabIndexSelect === TradeTabIndexEnum.今日成交) { columnKey = configcolumn_data.当日成交; } else if (page.tabIndexSelect === TradeTabIndexEnum.今日到期) { columnKey = configcolumn_data.今日到期; } else if (page.tabIndexSelect === TradeTabIndexEnum.今日收益结算) { columnKey = configcolumn_data.今日收益结算; } main.showcolumnChooser(jgrid, columnKey); } function tabSelect(tabIndex) { $("#myTab").children().removeClass("active"); $("#tab" + tabIndex).addClass("active"); page.tabIndexSelect = tabIndex; if (tabIndex === TradeTabIndexEnum.今日到期) { $("#DateFromExerciseDate").prop("disabled", true); $("#DateToExerciseDate").prop("disabled", true); } else { $("#DateFromExerciseDate").prop("disabled", false); $("#DateToExerciseDate").prop("disabled", false); } SearchClick(true); } function swapTrade(id) { var title = "收益结算"; var srcurl = "/trade/tradeSwapUnwind/?enid=" + id + "&isswap=" + 1; main.open(title, srcurl, { end: function () { SearchClick(true); } }); } 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 confirmAllSelect() { var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow'); if (selectedIds.length < 1) { main.message("请选择需确认的交易"); return; } var confirmFunc = function (additionalProcessing, id, useRecall) { var ggrid = jQuery('#listGrid'); var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow'); var ors = []; if (id) { ors.push(id); } else { for (var i = 0; i < rowIds.length; i++) { var or = ggrid.getRowData(rowIds[i]).id; ors.push(or); } } var pData = { tradeids: ors.join(",") }; pData.isSkipCheck = false; if (!main.isEmpty(additionalProcessing)) { pData.additionalProcessing = additionalProcessing; } var ajaxopt = { type: "Post", url: "/trade/tradeConfirm", data: pData, success: function (data) { //错误是打印错误提示 if (!data.success) { main.alert(data.msg + "\r\n批量操作已终止"); if (reloadtrade) { reloadtrade(); } return; } if (data.obj && data.obj.proccessType === "AdditionalProcessing") { if (data.obj.TrialDataId) { var layerSetting = { type: 2, title: "提示", shadeClose: false, shade: 0.4, area: ['800px', '500px'], content: "/trade/showQuotaTrial?id=" + data.obj.TrialDataId, yes: function (index) { var obj = window["layui-layer-iframe" + index].page; if (obj.IsTF) { if (obj.Data.Remark && obj.Data.Remark.length > 0) { main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) { if (!res || !res.success) { main.message(res.msg); } }); confirmFunc("LackOfMoney", obj.Data.TradeId, true); } else { main.message("必须填写说明内容,才可以录入交易"); return; } } else { if (obj.Data.Remark && obj.Data.Remark.length > 0) { main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) { if (!res || !res.success) { main.message(res.msg); } }); } confirmFunc("LackOfMoney", obj.Data.TradeId, true); } (parent || window).layer.closeAll(); }, cancel: function () { if (window.parent && window.parent.reloadtrade) { window.parent.reloadtrade(); } (parent || window).layer.closeAll(); } }; if (data.obj.type === "LackOfMoney") { layerSetting.btn = [page.buttonStr, '取消']; } // 只展示“资金状况”的情况 if (data.obj.typecode === "FundStatus") { layerSetting.btn = ["确认", '取消']; } layer.open(layerSetting); } else { if (data.obj.message) { main.message(data.obj.message); } } return; } if (useRecall) { confirmFunc(); return; } else { main.message(data.msg); } if (page.generateAmendDoc && data.obj && data.obj.generateChangeSuccess) { main.downloadFiles(data.obj.url); } if (page.needSendChangeEmail && data.obj && data.obj.generateChangeSuccess) { main.confirm("确认发送变更确认书?", function () { main.post("/trade/SendChangeConfirmEmails", { tradeids: ors.join(",") }) .done(function (data) { if (data.success) { main.message("发送成功"); } else { main.message(data.msg); } }); }); } SearchClick(true); }, beforeSend: function () { main.waitMe(true); }, complete: function () { main.waitMe(false); }, error: function (msg) { main.message(msg); } }; $.ajax(ajaxopt); }; ///批量结算 main.confirm("确认所有选中交易?", confirmFunc); } function delaySettlement() { var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow'); if (selectedIds.length < 1) { main.message("请选择需确认的交易"); return; } var query = { tradeids: selectedIds.join(","), isBatch: true }; query = $.param(query); layer.open({ type: 2, title: "延期结算", shadeClose: false, shade: 0.4, area: ["450px", "350px"], content: "/SwapTrade/tradeDelaySettlement?" + query }); }