var g_grid = {}; var query_data = {}; const pricingFormat = otcformat.trading; const consNumberFormat = Object.freeze(new function () { this.fixed2 = main.numberFormat(2); this.fixed3 = main.numberFormat(3); this.fixed4 = main.numberFormat(4); this.fixed5 = main.numberFormat(5); this.fixed6 = main.numberFormat(6); this.umpriceP = this.fixed4; return this; }()); const inputFormatPercent = Object.freeze({ precision: 2, append: '%' }); const inputFormatPremiumRate = Object.freeze({ precision: pricingFormat.premiumRateP.precision, append: '' }); const inputFormatEqvNotional = Object.freeze({ precision: pricingFormat.StockEqvNotional.precision, append: '' }); const inputFormatTradeAmount = Object.freeze({ precision: pricingFormat.notional.precision, negative: true, append: '' }); $(function () { var PostData = {}; PostData.ValidState = $("#ValidState").val(); PostData.TabIndex = page.TabIndex; if (settleDate) { $("#DateFromExerciseDate").val(settleDate); $("#DateToExerciseDate").val(settleDate); PostData.ExerciseDateStart = settleDate; PostData.ExerciseDateEnd = settleDate; } if (tradeType) { var Types = tradeType.split(','); $("#TradeTypes").val(Types); $("#TradeTypes").change(); PostData.TradeTypes = $("#TradeTypes").val().join(","); } $('#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 }); var url = "/trade/tradeQuery"; var prmNames = { page: 'page', rows: 'rows', sort: 'sidx', order: 'sord' }; if (PostData.TabIndex === 8) { url = "/trade/AjaxGetMultiCloseList"; } grid = jQuery('#listGrid').jqGrid({ cmTemplate: { width: 80, align: 'center', sortable: true }, url: url, prmNames: prmNames, 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: getColModel(), pager: jQuery('#pagerGrid'), pagerpos: 'left', rowNum: 25, rowList: [25, 50, 100, 200, 10000], footerrow: false, loadComplete: gridComplete, onPaging: onJqgridPaging }); 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); $("#CheckboxAll").click(selAllGrid); }); function getColModelDefault() { let i = 0; let colModelGrid = [ { name: 'rowFlag', label: ' ', width: 30, optionHide: true, formatter: expandFormat, align: 'center', sortable: false }, { name: 'TradeStatus', label: '交易状态', index: 'TradeStatus', sortIndex: i++, width: 70, align: 'center', sortable: false }, { name: 'TradeNumber', label: '交易编号', index: 'TradeNumber', sortIndex: i++, width: 240, align: 'center', sortable: false, formatter: ShowStructFormater }, { name: 'ClientName', label: '交易对手方', index: 'ClientName', sortIndex: i++, width: 160, align: 'center', sortable: false }, { name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', sortIndex: i++, width: 120, align: 'center', sortable: false }, { name: 'id', label: 'id', index: 'id', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true, sortable: false }, { name: 'EncryptId', label: 'EncryptId', index: 'EncryptId', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true, sortable: false }, { name: 'IsMoneynessOption', label: 'IsMoneynessOption', index: 'IsMoneynessOption', sortIndex: i++, width: 70, align: 'center', hidden: true, optionHide: true, sortable: false }, { name: 'GroupName', label: '分组名', index: 'GroupName', sortIndex: i++, width: 80, hidden: !page.setGroup, sortable: false }, { name: 'TradeDate', label: '成交日期', index: 'TradeDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', sortIndex: i++, width: 90, align: 'center', formatter: 'date' }, { name: 'BuySell', label: '买卖方向', index: 'BuySell', sortIndex: i++, width: 70, align: 'center', sortable: false }, { name: 'ExerciseModeCn', label: '行权方式', index: 'ExerciseModeCn', sortIndex: i++, width: 90, align: 'center', sortable: false }, { name: 'TradeType', label: '结构类型', index: 'TradeType', sortIndex: i++, width: 70, align: 'center', sortable: false, 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', sortable: false }, { name: 'UnderlyingAssetName', label: '标的名称', index: 'UnderlyingAssetName', sortIndex: i++, width: 95, align: 'center', sortable: false }, { name: 'UnderlyingCode', label: '标的代码', index: 'UnderlyingCode', sortIndex: i++, width: 60, align: 'center', sortable: false, formatter: ShowStructFormater }, { name: 'UnderlyingVariety', label: '标的品种', index: 'UnderlyingVariety', sortIndex: i++, width: 60, align: 'center', sortable: false, hidden: !page.showUnderlyingVariety, optionHide: !page.showUnderlyingVariety }, { name: 'SpotPrice', label: '期初标的价格', index: 'SpotPrice', sortIndex: i++, width: 85, align: 'center', sortable: true, formatter: otcformat.trading.umprice }, { name: 'TradeType2', label: 'TradeType2', index: 'TradeType2', sortIndex: i++, width: 70, optionHide: true, hidden: true, sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.TradeType; } }, { name: 'Strike', label: '执行价格', index: 'Strike', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: StrikeFormatter }, { name: 'TradeSinglePrice', label: '权利金(成交)', index: 'TradeSinglePrice', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: TradeSinglePriceFormat }, { name: 'TradeAmount', label: '成交数量', width: 70, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { return otcformat.trading.notional(tradeHelper.getTradeAmountV(rowObject)); } }, { name: 'TradeOriginalAmount', label: '有效成交数量', index: 'TradeOriginalAmount', sortIndex: i++, width: 96, align: 'center', sortable: false, formatter: otcformat.trading.notional }, { name: 'OriginalStockEqvNotional', label: '名义本金', index: 'OriginalStockEqvNotional', sortIndex: i++, width: 70, align: 'center', sortable: true, formatter: StockEqvNotionalMaxFormat }, { name: 'TradePrice', label: '成交金额', index: 'TradePrice', sortIndex: i++, width: 90, align: 'center', sortable: true, formatter: TradePriceFormat }, { name: 'KnockInOutStatusObservation', label: '敲入敲出状态', index: 'KnockInOutStatusObservation', sortIndex: i++, width: 96, align: 'center', sortable: false }, { name: 'FinalPrice', label: '期末价格', index: 'FinalPrice', sortIndex: i++, width: 85, align: 'center', hidden: true, optionHide: true, sortable: false, formatter: otcformat.trading.umprice }, { name: 'PairTrade', label: 'PairTrade', index: 'PairTrade', sortIndex: i++, align: 'center', hidden: true, optionHide: true, sortable: false }, { name: 'SyntheticUnderlyingTipsInfo', label: 'SyntheticUnderlyingTipsInfo', index: 'SyntheticUnderlyingTipsInfo', sortIndex: i++, align: 'center', hidden: true, optionHide: true, sortable: false }, { name: 'SalesCommission.SalesNameStr', label: saleMode == 0 ? "销售人员" : "客户经理", index: 'SalesCommission.SalesNameStr', sortIndex: i++, width: 70, align: 'center', sortable: false }, { name: 'SalesCommission.Commission', label: '销售提成', index: 'SalesCommission.Commission', sortIndex: i++, width: 70, align: 'center', sortable: false, formatter: CommissionFormatter } ]; colModelGrid.push({ name: 'UnderlyingPrice', label: '最新标的价格', index: 'UnderlyingPrice', sortIndex: i++, width: 96, align: 'center', sortable: false, formatter: otcformat.trading.umprice }); if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy) { colModelGrid.push({ name: 'SinglePV', label: '权利金(存续)', index: 'SinglePV', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: GetLatestSinglePVDesc }); colModelGrid.push({ name: 'TradeAmountV', label: '存续数量', index: 'TradeAmountV', sortIndex: i++, width: 70, align: 'center', sortable: false, formatter: TradeAmountFormat }); colModelGrid.push({ name: 'PV', label: '存续市值', index: 'PV', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: GetLatestPVDesc }); colModelGrid.push({ name: 'PositionPnl', label: '浮动盈亏', index: 'PositionPnl', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: GetPositionPnl }); colModelGrid.push({ name: 'RealizedPnl', label: '实现盈亏', index: 'RealizedPnl', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: GetRealizedPnl }); } if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy) { colModelGrid.push({ name: 'UnWindDate', label: '了结日期', index: 'UnWindDate', sortIndex: i++, width: 65, align: 'center', sortable: true, formatter: function (cellValue, options, rowObject) { if (!cellValue) { return "--"; } else { return cellValue.substring(0, 10); } } }); colModelGrid.push({ name: 'UnWindUnderlyingPrice', label: '了结标的价格', index: 'UnWindUnderlyingPrice', sortIndex: i++, width: 96, align: 'center', sortable: false, formatter: otcformat.trading.umprice }); colModelGrid.push({ name: 'UnWindTotalAmount', label: '了结数量', index: 'UnWindTotalAmount', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: otcformat.trading.notional }); colModelGrid.push({ name: 'UnWindFee', label: '了结总额', index: 'UnWindFee', sortIndex: i++, width: 65, align: 'center', sortable: false, formatter: UnWindFeeFormat }); colModelGrid.push({ name: 'UnWindTimes', label: '了结次数', index: 'UnWindTimes', sortIndex: i++, width: 65, align: 'center', sortable: false }); } if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy && page.IsTradeVol) { colModelGrid.push({ name: 'TradeOpenVolatility', label: '成交波动率', index: 'TradeOpenVolatility', sortIndex: i++, width: 80, sortable: false, align: 'center', formatter: otcformat.trading.premiumRateP }); colModelGrid.push({ name: 'TradeCloseVolatility', label: '目标波动率', index: 'TradeCloseVolatility', sortIndex: i++, width: 80, sortable: false, align: 'center', formatter: otcformat.trading.premiumRateP }); colModelGrid.push({ name: 'NumOfSmoothingDays', label: '平滑天数', index: 'NumOfSmoothingDays', sortIndex: i++, width: 65, sortable: true, align: 'center' }); colModelGrid.push({ name: 'Comments', label: '备注', index: 'Comments', sortIndex: i++, width: 70, sortable: false, align: 'center', formatter: function (cellValue, options, rowObject) { if (cellValue && cellValue.startsWith("http://")) { return "{0}".template(cellValue); } return cellValue == null ? "" : cellValue; } }); } if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy && page.isDongZheng) { colModelGrid.push({ name: 'Comments', label: '对手编号', index: 'Comments', sortIndex: i++, width: 120, sortable: false, align: 'center', }); } colModelGrid.push({ name: 'TraderName', label: '交易员', index: 'TraderName', sortIndex: i++, width: 120, sortable: false, align: 'center', }); if (page.ViewTagPermission) { colModelGrid.push({ name: 'Tags', label: '标签值', index: 'Tags', sortIndex: i++, 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 tradeHelper.getAmountToNotional(colModelGrid); } function changeVolType() { //改变波动率类型 } function uploadFinishedTrades() { var srcurl = "/trade/finishedTradesUpload"; main.open("批量了结导入", srcurl, { area: ["550px", "300px"] }); } function batchSetObservationPrice() { var jgrid = jQuery('#listGrid'); var tradeids = main.GetGridIds(jgrid); main.post("/trade/checkBatchSetObservationPrice", { tradeids: tradeids }).done(function (res) { main.open("批量设置观察价格", "/trade/BatchSetObservationPrice/?tradeIds=" + tradeids.join(","), { area: ['900px', '600px'], end: function () { if (window.parent && window.parent.reloadtrade) { window.parent.reloadtrade(); } } }); }); } function uploadEodTradeRiskManualExcel() { var srcurl = "/eod_trade_risk_manual/eod_trade_risk_manualUpload?isByType=false"; main.open("批量风险维护导入", srcurl, { area: ['500px', '400px'] }); } function uploadTradeVolExcel() { var srcurl = "/trade/tradeVolUpload"; main.open("批量波动率导入", srcurl, { area: ['500px', '400px'] }); } function uploadTradeHedgeVolExcel() { var srcurl = "/trade/tradeHedgeVolUpload"; main.open("批量对冲波动率导入", srcurl, { area: ['500px', '400px'] }); } function UploadDividendRateAndNoRiskRateExcel() { var srcurl = "/trade/tradeDividendRateAndNoRiskRate"; main.open("批量分红率和无风险利率导入", srcurl, { area: ['500px', '400px'] }); } function GetLatestPVDesc(cellValue, options, rowObject) { var html = "{1}"; if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return html.template("持仓交易最新价值", "--"); } //根据选中的波动率类型显示 var voltype = $("#VolTypes").val(); if (rowObject.PV) { var jgObj = JSON.parse(rowObject.PV); var pv = $.grep(jgObj, function (d, i) { return d.Key === voltype; }); if (pv.length > 0) { return html.template("持仓交易最新价值", otcformat.trading.tradePrice(pv[0].Value)); } } return html.template("持仓交易最新价值", "--"); } function GetLatestSinglePVDesc(cellValue, options, rowObject) { var html = "{1}"; if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return html.template("期权现价", "--"); } //根据选中的波动率类型显示 var voltype = $("#VolTypes").val(); if (rowObject.PV) { var jgObj = JSON.parse(rowObject.PV); var pv = $.grep(jgObj, function (d, i) { return d.Key === voltype; }); if (pv.length > 0) { if (rowObject.IsUsePremiumRate) { var premiumRate = tradeHelper.GetPremiumRateByTradePrice(pv[0].Value, rowObject.StockEqvNotional, rowObject.ParticipationRate, rowObject.PrincipalSum, rowObject.AnnualizeFactor, rowObject.BuySell, rowObject.TradeType, false); return html.template("期权现价", otcformat.trading.premiumRateP(premiumRate)); } else { var singlePrice = tradeHelper.GetTradeSinglePriceByTradePrice(pv[0].Value, rowObject.StockEqvNotional, rowObject.Notional, rowObject.PrincipalSum, rowObject.AnnualizeFactor, rowObject.BuySell, rowObject.TradeType, false); return html.template("期权现价", otcformat.trading.tradeSinglePrice(singlePrice)); } } } return html.template("期权现价", "--"); } function GetRealizedPnl(cellValue, options, rowObject) { var html = "{1}"; if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang || rowObject.TradeStatus === page.trade_querenchengjiao || rowObject.TradeStatus === page.trade_pingcangdaifuhe || rowObject.TradeStatus === page.trade_xingquandaifuhe || rowObject.TradeStatus === page.trade_tiqianzhongzhi) { return html.template("实现盈亏", otcformat.trading.tradePrice(cellValue)); } return html.template("实现盈亏", "--"); } function GetPositionPnl(cellValue, options, rowObject) { var html = "{1}"; if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return html.template("持仓盈亏", "--"); } //根据选中的波动率类型显示 var voltype = $("#VolTypes").val(); if (rowObject.PositionPnl) { var jgObj = JSON.parse(rowObject.PositionPnl); var positionPnl = $.grep(jgObj, function (d, i) { return d.Key === voltype; }); if (positionPnl.length > 0) { return html.template("持仓盈亏", otcformat.trading.tradePrice(positionPnl[0].Value)); } } return html.template("持仓盈亏", "--"); } function setStructTable(rowObject) { structTrades = rowObject.SubTrades; if (!structTrades) return; var trhtml = ""; var trcode = "标的代码{1}".template(structTrades.length, rowObject.UnderlyingCode); var trstrike = "执行价格"; var tracturalstrike = ""; if (rowObject.IsMoneynessOption === "是") { tracturalstrike = "执行价格"; } var trbuysell = "买卖方向"; var trvarity = "结构类型{1}".template(structTrades.length, rowObject.StructureType); var trstockeqvnotional = "名义本金{1}".template(structTrades.length, otcformat.trading.StockEqvNotional(new Number(rowObject.StockEqvNotional) / 10000) + "万"); var trmaturedate = "到期日期{1}".template(structTrades.length, moment(rowObject.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 === "是" ? (otcformat.trading.premiumRateP(structTrades[i].Strike)) : otcformat.trading.umprice(structTrades[i].Strike)); if (rowObject.IsMoneynessOption === "是") { tracturalstrike += "{0}".template(otcformat.trading.umprice(structTrades[i].Strike * (rowObject.SpotPrice || rowObject.InitialSpotPrice))); } trbuysell += "{0}".template(structTrades[i].BuySell); } } trhtml = "{0}".template(trcode); trhtml += "{0}".template(trstrike); if (rowObject.IsMoneynessOption === "是") { trhtml += "{0}".template(tracturalstrike); } trhtml += "{0}".template(trbuysell); trhtml += "{0}".template(trstockeqvnotional); trhtml += "{0}".template(trmaturedate); //trhtml += "{0}".template(trtradestatus); trhtml += "{0}".template(trvarity); var showTable = "{0}
".template(trhtml); return showTable; } function ShowStructFormater(cellValue, options, rowObject) { if (rowObject.TradeType === "结构化交易") { //return "{0}" // .template(cellValue || '', setStructTable(rowObject)); } else if (rowObject.TradeType === "合成价差期权") { return "{0}" .template(cellValue || '', rowObject.SyntheticUnderlyingTipsInfo); } return cellValue || ''; } function StrikeFormatter(cellValue, options, rowObject) { if (rowObject.TradeType == "自定义交易") { return rowObject.StrikeToShow; } else if (rowObject.TradeType === "收益互换") { return "--"; } if (rowObject.Strike) { if (rowObject.IsMoneynessOption === "是") { return otcformat.trading.umprice(rowObject.InitialSpotPrice * rowObject.Strike); } else { return otcformat.trading.umprice(rowObject.Strike); } } else { if (rowObject.Strike === 0) { return otcformat.trading.umprice(0); } else { return ""; } } } 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 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 otcformat.trading.notional(cellValue); } } function TradeAmountFormat(cellValue, options, rowObject) { if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) { return otcformat.trading.notional(0); } else { return otcformat.trading.notional(tradeHelper.getTradeAmountV(rowObject, rowObject.TradeAmount, 1)); } } function TradePriceFormat(cellValue, options, rowObject) { return otcformat.trading.tradePrice(cellValue * (rowObject.BuySell === "买入" || rowObject.BuySell === "多头开仓" || rowObject.BuySell === "空头平仓" ? -1 : 1)); } function StockEqvNotionalMaxFormat(cellValue, options, rowObject) { return otcformat.trading.StockEqvNotional(isUseStockEqvNotionalMax && cellValue > 0 ? rowObject.StockEqvNotionalMax : cellValue); } function UnWindFeeFormat(cellValue, options, rowObject) { return otcformat.trading.tradePrice(cellValue); } function unwindDateFormat(cellValue, options, rowObject) { return (rowObject.TradeStatus === "已执行" || rowObject.TradeStatus === "已到期") ? moment(cellValue).format("YYYY-MM-DD") : ""; } function TradeSinglePriceFormat(cellValue, options, rowObject) { if (rowObject.IsUsePremiumRate) { return otcformat.trading.premiumRateP(rowObject.PremiumRate); } else { return otcformat.trading.tradeSinglePrice(cellValue); } } //展开折叠 function expandFormat(cellValue, options, rowObject) { var hasExpandIcon = rowObject.IsGroup == 1; if (hasExpandIcon) { return ``; } return ""; } var duichong_TradeType = ["商品期货", "商品现货", "股票"]; function gridComplete() { var jgrid = $(this); $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover", container: "body" }); if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy) { main.setcolumnChooser(jgrid, page.configcolumn_data_cwcj); } if (page.tabIndexSelect === page.TradeTabIndexEnum_cwlj) { main.setcolumnChooser(jgrid, page.configcolumn_data_cwlj); } var rowDatas = jgrid.jqGrid('getDataIDs'); for (var i = 0; i < rowDatas.length; i++) { var rowData = rowDatas[i]; var temp = i + 1; var rowdata = jgrid.getRowData(rowData); //股票和期货是绿色 if (duichong_TradeType.contains(rowdata.TradeType)) { //获取每行下的TD更改CSS var tr_temp = jgrid.find("tr:eq({0})".template(temp)); //tr_temp.css("background", "rgba(84, 255, 0, 0.99)"); tr_temp.find("[aria-describedby='listGrid_TradeSinglePrice']").html(" "); tr_temp.find("[aria-describedby='listGrid_StockEqvNotional']").html(" "); tr_temp.find("[aria-describedby='listGrid_Strike']").html(" "); tr_temp.find("[aria-describedby='listGrid_ExerciseModeCn']").html(" "); } } var newHeight = $(window).height() - 350; $(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;"); selAllGrid(); $('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll(); if (scrollIndex > 0) { $("#gview_listGrid .ui-jqgrid-bdiv").scrollTop(scrollIndex); scrollIndex = 0; } } function customButton(cellValue, options, rowObject) { var imageHtml = ""; return imageHtml; } function deletetrade(encryptId) { if (confirm("确定删除吗?")) { $.ajax({ type: "Post", url: "/trade/InValidTrade", data: { id: encryptId, d: new Date() }, success: function (data) { showmiddlemessage(data.obj); if (data.success) { $('#listGrid').trigger('reloadGrid'); } }, error: function (msg) { alert("error:" + msg); } }); } } function showToolName(cellValue, options, rowObject) { var color = ""; var title = "查看交易信息"; if (rowObject.PairTrade) { color = "color:blue"; title = "已有匹配交易编号:{0}".template(rowObject.PairTradeNumber); } var html = "" .template(rowObject.EncryptId, rowObject.TradeType, color, title); return html; } function rowdblclick(rowid) { var rowData = $(this).getRowData(rowid); if (rowData.EncryptId && rowData.TradeType) { starttradeView(rowData.EncryptId, rowData.TradeType); } } function toggleExpand(rowid) { event.stopPropagation(); $(event.target).toggleClass('fa-minus'); if ($(event.target).hasClass('fa-minus')) { main.post("/trade/SearchGroupChildrenList", { id: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { if (res[i].Comments == null) { res[i].Comments = ""; } jQuery('#listGrid').jqGrid('addRowData', res[i].id, res[i], 'after', rowid); $('#' + res[i].id).find("td").addClass("ChildrenBG"); } }); } else { main.post("/trade/SearchGroupChildrenList", { id: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { jQuery('#listGrid').jqGrid('delRowData', res[i].id); } }); } } function toggleTcIdExpand(rowid) { event.stopPropagation(); $(event.target).toggleClass('fa-minus'); if ($(event.target).hasClass('fa-minus')) { main.post("/trade/AjaxGetMultiCloseGroupChildren", { TcId: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { jQuery('#listGrid').jqGrid('addRowData', res[i].TcId, res[i], 'after', rowid); $('#' + res[i].TcId).find("td").addClass("ChildrenBG"); } }); } else { main.post("/trade/AjaxGetMultiCloseGroupChildren", { TcId: rowid }).done(function (res) { for (var i = 0; i < res.length; i++) { jQuery('#listGrid').jqGrid('delRowData', res[i].TcId); } }); } } function setTradeGroup() { var url = "/trade_group/set_trade_group"; main.open("设置分组", url); } function addTradeGroup() { var jgrid = jQuery('#listGrid'); var selObjs = main.GetGridIds(jgrid); if (selObjs.length === 0) { main.message("请选择至少一个交易"); return; } var url = "/trade_group/add_trade_group"; main.open("加入分组", url); } function addGroupTrade() { var jgrid = jQuery('#listGrid'); var selIds = main.GetGridIds(jgrid); if (selIds.length === 0) { main.message("请选择至少一个交易"); return; } main.post("/trade/CheckSelectedTrades", { tradeids: selIds }).done(function (res) { main.open("组合交易编辑", "/trade/CheckSelectedTradesForAddGroup?" + $.param({ tradeids: selIds }, true), { area: ['1220px', '845px'] }); }); } function dismissGroupTrade() { var jgrid = jQuery('#listGrid'); var selIds = main.GetGridIds(jgrid); if (selIds.length === 0) { main.message("请选择至少一个交易"); return; } main.post("/trade/DismissSelectedGroupTrades", { tradeids: selIds }).done(function (res) { reloadtrade(); }); } function addGroupTradeCash() { var jgrid = jQuery('#listGrid'); var selIds = main.GetGridIds(jgrid); if (selIds.length === 0) { main.message("请选择至少一个交易"); return; } main.post("/trade/CheckSelectedGroupTradesForAction", { tradeids: selIds }).done(function (res) { if (res.IsSuccess) { OpenTradeSettle(selIds); } else { main.message(res.ErrorMsg); } }); //groupVue.tradeIds = selIds; } function OpenTradeSettle(selIds) { let srcurl = "/trade/tradeSettle/?ids=" + selIds.join(','); main.open("分组了结", srcurl, { area: ['1220px', '845px'], scrollbar: false }); } function groupTradeCashActionList() { window.open("tradeGroupActionList", "_blank"); } function cancelTradeGroup() { var jgrid = jQuery('#listGrid'); var tradeids = main.GetGridIds(jgrid); main.confirm("确认取消分组?", function () { main.post("/trade_group/cancelTradeGroup", { tradeids: tradeids }).done(function (res) { reloadtrade(); }); }); } function startAddtrade() { main.open("查看交易", "/trade/tradeEdit/0", { area: ['1260px', '100%'], scrollbar: false }); } function starttradeView(id, tradeType) { if (tradeType.indexOf("远期") >= 0) { let srcurl = "/forwardtrade/tradeView/?enid=" + id + "&isFromPositionReport=true"; main.open("查看远期交易", srcurl); } else { let srcurl = "/trade/tradeView/?enid=" + id + "&checkBtn=1"; main.open("查看交易", srcurl, { area: ['1360px', '100%'], scrollbar: false }); } } let scrollIndex = 0; function reloadtrade() { scrollIndex = $("#gview_listGrid .ui-jqgrid-bdiv").scrollTop(); //重新加载 SearchClick(); } function confirmAllSelect() { var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow'); if (selectedIds.length < 1) { main.message("请选择需确认的交易"); return; } var confirmFunc = function (additionalProcessing) { var ggrid = jQuery('#listGrid'); var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow'); var ors = []; 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 = true; if (!main.isEmpty(additionalProcessing)) { pData.additionalProcessing = additionalProcessing; } main.post("/trade/tradeConfirm", pData).done(function (data) { //错误是打印错误提示 if (!data.success) { main.message(data.msg); return; } if (generateAmendDoc && data.obj && data.obj.generateChangeSuccess) { main.downloadFiles(data.obj.url); } if (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); }); }; ///批量结算 main.confirm("确认所有选中交易?", confirmFunc); } function uploadTrade() { main.open("导入场外期权交易", "/trade/tradeUpload", { area: ['800px', '600px'] }); } function UpdatePostData() { var listGrid = $('#listGrid'); if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy || page.tabIndexSelect === page.TradeTabIndexEnum_cwlj) { //场外成交 & 场外了结 listGrid.appendPostData({ UnWindTimes: $("#UnWindTimes").val() }); listGrid.appendPostData({ UnWindType: $("#UnWindType").val() }); listGrid.appendPostData({ UnwindDateStart: $("#DateFromUnwindDate").val() }); listGrid.appendPostData({ UnwindDateEnd: $("#DateToUnwindDate").val() }); } listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); listGrid.appendPostData({ ContractCode: $("#ContractCode").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({ StructureType: $("#StructureType").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({ MaturityDateStart: $("#DateFromMaturityDate").val() }); listGrid.appendPostData({ MaturityDateEnd: $("#DateToMaturityDate").val() }); listGrid.appendPostData({ TradePrice: $("#TradePrice").val() }); listGrid.appendPostData({ GroupNames: $("#GroupNames").val() }); listGrid.appendPostData({ VolTypes: $("#VolTypes").val() }); var reqTradeStatus = !$("#TradeStatus").val() ? page.AllTradeStatus : $("#TradeStatus").val().join(","); if (!reqTradeStatus) { reqTradeStatus = page.AllTradeStatus; } listGrid.appendPostData({ TradeStatus: reqTradeStatus }); listGrid.appendPostData({ OptIds: !$("#OptIds").val() ? "" : $("#OptIds").val().join(",") }); listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() }); listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() }); listGrid.appendPostData({ ValidState: $("#ValidState").val() }); listGrid.appendPostData({ TraderNames: !$("#TraderName").val() ? "" : $("#TraderName").val().join(",") }); listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() }); listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() }); //listGrid.appendPostData({ GroupNames: !$("#GroupName").val() ? "" : $("#GroupName").val().join(",") }); if ($("#TradeProjectId").length > 0) { listGrid.appendPostData({ TradeProjectIds: !$("#TradeProjectId").val() ? "" : $("#TradeProjectId").val().join(",") }); } listGrid.appendPostData({ Comments: $("#Comments").val() }); listGrid.appendPostData({ ExerciseMode: $("#ExerciseMode").val() }); listGrid.appendPostData({ TabIndex: page.tabIndexSelect }); var isPairTrade = $("#PairTrade").val() === "是" ? true : ($("#PairTrade").val() === "否" ? false : null); listGrid.appendPostData({ IsPairTrade: isPairTrade }); listGrid.appendPostData({ Strike: $("#Strike").val() }); listGrid.appendPostData({ TagIds: $("#TagIds").val() }); } function SearchClick(isSearchclick) { var listGrid = $('#listGrid'); UpdatePostData(); query_data = listGrid.jqGrid('getPostData'); if (typeof isSearchclick !== "undefined" && isSearchclick) { //点击搜索时默认第一页 listGrid.jqGrid('setGridParam', { page: 1 }); } listGrid.trigger('reloadGrid'); } function finalSettlement() { main.post("/clientbalance/finalSettlement").done(function (res) { }); } function exportTradeChoose() { layer.open({ type: 1, title: "导出交易", shadeClose: false, shade: 0.4, area: ['300px', '240px'], content: $('#exportTpl').html() }); } function Customexport() { var url = "/trade/Customexport"; main.open("并表数据上报", url, { area: ['550px', '60%'], end: function () { } }); } function ExportClientEodPosition() { var url = "/trade/ExportClientEodPosition"; main.open("日终数据采集", url, { area: ['550px', '60%'], end: function () { } }); } 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 downloadText(text, filename) { var pom = document.createElement('a'); pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); pom.setAttribute('download', filename); if (document.createEvent) { var event = document.createEvent('MouseEvents'); event.initEvent('click', true, true); pom.dispatchEvent(event); } else { pom.click(); } pom.remove(); } function exportlist() { var jgrid = jQuery('#listGrid'); var tradeids = main.GetGridIds(jgrid); var queryParam = {}; if (tradeids.length > 0) { queryParam.TradeIds = tradeids.join(","); } else { queryParam = $('#listGrid').jqGrid('getPostData'); queryParam.rows = 0; } main.post("/trade/ExportTradeAbstractInfo", queryParam, { dataType: 'text' }).done(function (resp) { downloadText(resp, 'Trade_交易摘要_' + moment().format('YYYYMMDDHHmmss') + '.txt'); }).fail(function () { main.alert('请求失败'); }); } function exporttradetype() { var jgrid = jQuery('#listGrid'); var rowInfo = main.GetGridObjs(jgrid); var queryParam = {}; if (rowInfo.length > 0) { queryParam.TradeCashIds = rowInfo.map(O => O.TcId).join(","); } else { queryParam = $('#listGrid').jqGrid('getPostData'); queryParam.rows = 0; } main.post("/trade/ExportTradeSettlementAbstractInfo", queryParam, { dataType: 'text' }).done(function (resp) { downloadText(resp, 'Trade_交易摘要_' + moment().format('YYYYMMDDHHmmss') + '.txt'); }).fail(function () { main.alert('请求失败'); }); } function previewTradeAbstract() { var jgrid = jQuery('#listGrid'); var tradeids = main.GetGridIds(jgrid); var queryParam = {}; if (tradeids.length > 0) { queryParam.TradeIds = tradeids.join(","); } else { queryParam = $('#listGrid').jqGrid('getPostData'); queryParam.rows = 0; } main.post("/trade/ExportTradeAbstractInfo", queryParam, { dataType: 'text' }).done(function (resp) { downloadText(resp, 'Trade_交易摘要_' + moment().format('YYYYMMDDHHmmss') + '.txt'); }).fail(function () { main.alert('请求失败'); }); } Array.prototype.contains = function (obj) { if (this.length === 0) { return false; } for (var i = 0; i < this.length; i++) { if (this[i] === obj) { return true; } } return false; } function exportTradeMultiFactors() { var jgrid = jQuery('#listGrid'); UpdatePostData(); var postData = jgrid.jqGrid('getPostData'); postData.VolType = $("#VolTypes").val(); var url = "/trade/DownloadTradeQueryMultiFactors?" + $.param(postData, true); var ids = jgrid.jqGrid('getGridParam', 'selarrrow'); if (ids.length > 0) { var TradeIds = ids.join(","); url = url + "&TradeIds=" + TradeIds + "&onlyTradeIds=true"; } else { // } downLoadFile(url); } function exportUnwindMultiFactors() { var jgrid = jQuery('#listGrid'); UpdatePostData(); var postData = jgrid.jqGrid('getPostData'); var url = "/trade/UnwindMultiFactorsExport?" + $.param(postData, true); var ids = jgrid.jqGrid('getGridParam', 'selarrrow'); if (ids.length > 0) { var TradeCashIds = ids.join(","); url = url + "&TradeCashIds=" + TradeCashIds; } else { // } downLoadFile(url); } function downLoadFile(downloadUrlStr) { window.open(downloadUrlStr); } function exportTrade(isExportAllCol) { if (page.tabIndexSelect === page.TradeTabIndexEnum_cwlj) { main.GetSortedGridObjs = function (ggrid) { var rowIds = ggrid.jqGrid('getGridParam', 'selarrrow'); var rowDatas = ggrid.getRowData(); if (main.isEmpty(rowIds)) { return []; } var ors = $.grep(rowDatas, function (ele, index) { return rowIds.some(function (rowId) { return rowId === ele.TcId; }); }); ors.forEach(function (item, index) { if (item !== null) { Object.keys(item).forEach(function (key) { const regex = /#=(.*?)#/g; var result = regex.exec(item[key]); if (result) { item[key] = result[1]; } }); } }); return ors; }; } if (!isExportAllCol) { var dateTemp = new Date().Format("yyyyMMddhhmmss"); var fileName = "Trade_交易搜索_" + dateTemp; var toExcelArray = [ { colName: "分组名", formatter: "text" }, { colName: "交易编号", formatter: "text" }, { colName: "标的代码", formatter: function (cellValue, options, rowObject) { if (rowObject.TradeType === "合成价差期权") { return rowObject.SyntheticUnderlyingTipsInfo; } return cellValue; } }, { colName: "项目编号", formatter: "text" }]; if (page.ViewTagPermission) { toExcelArray.push({ colName: "标签值", formatter: function (cellValue, options, rowObject) { return rowObject.OutputTags; } }); } //海通交易数据导出判断 if (page.isHaiTong) { //成交 var tradeDateStart = $("#DateFromTradeDate").val(); var tradeDateEnd = $("#DateToTradeDate").val(); //到期 var exerciseDateStart = $("#DateFromExerciseDate").val(); var exerciseDateEnd = $("#DateToExerciseDate").val(); //了结 var unwindDateStart = $("#DateFromUnwindDate").val(); var unwindDateEnd = $("#DateToUnwindDate").val(); if ((tradeDateStart != "" || tradeDateEnd != "") && exerciseDateStart == "" && exerciseDateEnd == "" && unwindDateStart == "" && unwindDateEnd == "") { fileName = "成交_" + (tradeDateStart != "" ? tradeDateStart : "") + "_" + (tradeDateEnd != "" ? tradeDateEnd : ""); } else if (tradeDateStart == "" && tradeDateEnd == "" && (exerciseDateStart != "" || exerciseDateEnd != "") && unwindDateStart == "" && unwindDateEnd == "") { fileName = "到期_" + (exerciseDateStart != "" ? exerciseDateStart : "") + "_" + (exerciseDateEnd != "" ? exerciseDateEnd : ""); } else if (tradeDateStart == "" && tradeDateEnd == "" && exerciseDateStart == "" && exerciseDateEnd == "" && (unwindDateStart != "" || unwindDateEnd != "")) { fileName = "了结_" + (unwindDateStart != "" ? unwindDateStart : "") + "_" + (unwindDateEnd != "" ? unwindDateEnd : ""); } } main.toExcel("listGrid", fileName, "xls", null, " ,操作者,操作时间,操作", toExcelArray); return; } } 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(); //document.getElementById('createInvote').click(); } } function unWindSelect(id, tradeType, isReCheck) { if (tradeType === "商品期货") { var message = "\"" + tradeType + "\"不允许平仓操作!"; main.confirm(message, function () { }); return; } var title = "交易平仓"; if (isReCheck) title = "平仓复核"; //障碍期权特殊处理 敲入时状态必须不为空才为有效 敲出时状态为空为有效 if (tradeType === "障碍期权") { main.post("/trade/checkBarrierUnwind", { enid: id }).done(function (res) { if (!res.success) { main.alert(data.msg); return; } else { var srcurl = "/trade/tradeUnwind/?enid=" + id; if (isReCheck) srcurl += ("&isrecheck=" + isReCheck); main.open(title, srcurl, { area: ["1200px", "570px"], end: function () { reloadtrade(); } }); } }); } else { var srcurl = "/trade/tradeUnwind/?enid=" + id; if (isReCheck) srcurl += ("&isrecheck=" + isReCheck); main.open(title, srcurl, { area: ["1200px", "570px"], end: function () { reloadtrade(); } }); } } 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"] }); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); if (page.tabIndexSelect === page.TradeTabIndexEnum_cwqqjy) { main.showcolumnChooser(jgrid, page.configcolumn_data_cwcj); } else if (page.tabIndexSelect === page.TradeTabIndexEnum_cwlj) { main.showcolumnChooser(jgrid, page.configcolumn_data_cwlj); } } 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 openTradeConfirmList() { var volType = $("#VolTypes").val(); window.open("tradeConfirmList?volType=" + volType, "_blank"); } //ESC $(document).keyup(function (event) { switch (event.keyCode) { case 27: window.parent.layer.closeAll(); $(".jconfirm-open").addClass("hide");//关闭取消分组弹层 } }); $(".three-wrap-gtja #AssetId").prev().addClass("Bookkeeping-account"); $(".three-wrap-gtja #TraderName").prev().addClass("Trader-account"); $(".morebtn").click(function (e) { $(".hidediv").toggle(); }); //多次了结列配置 function getColModelOfMultiClose() { function UnwindPriceFormat(cellValue, options, rowObject) { if (rowObject.IsUsePremiumRate) { return rowObject.TcAction === "系统操作-行权费" ? otcformat.trading.tradeSinglePrice(Math.abs(cellValue)) : otcformat.trading.premiumRateP(Math.abs(rowObject.TcUnwindPricePercent)); } else { return otcformat.trading.tradeSinglePrice(Math.abs(cellValue)); } } //展开折叠 function expandFormat(cellValue, options, rowObject) { var hasExpandIcon = rowObject.IsGroup === 1; if (hasExpandIcon) { return ``; } return ""; } var col = [ { name: 'rowFlag', label: ' ', width: 30, optionHide: true, formatter: expandFormat, align: 'center', sortable: false }, { name: 'TcId', hidden: true, optionHide: true, key: true }, { name: 'id', hidden: true, optionHide: true }, { name: 'IsMoneynessOption', hidden: true, optionHide: true, sortable: false }, { name: 'EncryptId', hidden: true, optionHide: true, sortable: false }, { name: 'TradeNumber', label: '交易编号', width: 240, sortable: false }, { name: 'TraderName', label: '交易员', width: 120, sortable: false }, { name: 'AssetBookName', label: '簿记账户', width: 120, sortable: false }, { name: 'ClientName', label: '交易对手方', width: 160, sortable: false }, { name: 'TradeDate', label: '成交日期', width: 90, formatter: 'date', sortable: true }, { name: 'ExerciseDate', label: '到期日期', width: 90, formatter: 'date', sortable: true }, { name: 'BuySell', label: '买卖方向', width: 70, sortable: false }, { name: 'ExerciseMode', label: '行权方式', width: 90, sortable: false }, { name: 'TradeType', label: '结构类型', width: 70, sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType; } }, { name: 'OptionType', label: '看涨看跌', width: 70, sortable: false }, { name: 'UnderlyingAssetName', label: '标的名称', width: 95, sortable: false }, { name: 'UnderlyingCode', label: '标的代码', width: 60, sortable: false }, { name: 'UnderlyingVariety', label: '标的品种', width: 60, align: 'center', sortable: false, hidden: !page.showUnderlyingVariety, optionHide: !page.showUnderlyingVariety }, { name: 'SpotPrice', label: '期初标的价格', width: 85, sortable: true, formatter: otcformat.trading.umprice }, { name: 'Strike', label: '执行价格', width: 90, sortable: true, formatter: StrikeFormatter }, { name: 'TradeSinglePrice', label: '权利金(成交)', width: 90, sortable: true, formatter: TradeSinglePriceFormat }, { name: 'TradeAmount', label: '成交数量', width: 70, sortable: false, formatter: function (cellvalue, options, rowObject) { return otcformat.trading.notional(tradeHelper.getTradeAmountV(rowObject)); } }, { name: 'TradeOriginalAmount', label: '有效成交数量', width: 96, sortable: false, formatter: otcformat.trading.notional }, { name: 'KnockInOutStatusObservation', label: '敲入敲出状态', width: 70, sortable: false }, { name: 'TcSequence', label: '了结序号', width: 70, sortable: false }, { name: 'TcAction', label: '了结方式', width: 70, sortable: false }, { name: 'TcValueDate', label: '了结日期', width: 70, sortable: true, formatter: 'date' }, { name: 'TcFinalPrice', label: '了结标的价格', width: 70, sortable: true, formatter: otcformat.trading.umprice }, { name: 'TcUnwindPrice', label: '权利金(了结)', width: 70, sortable: true, formatter: UnwindPriceFormat }, { name: 'TcUnwindTradeAmount', label: '了结数量', width: 70, sortable: true, formatter: otcformat.trading.notional }, { name: 'TcAmount', label: '了结金额', width: 70, sortable: true, formatter: UnWindFeeFormat }, { name: 'TcTradePrice', label: '成交金额', width: 70, sortable: false, formatter: UnWindFeeFormat }, { name: 'WinLoss', label: '实现盈亏', width: 70, sortable: false, formatter: UnWindFeeFormat }, { name: 'SyntheticUnderlyingTipsInfo', hidden: true, optionHide: true, sortable: false } ]; col.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; } }); return tradeHelper.getAmountToNotional(col); } //获取列配置 function getColModel() { switch (page.TabIndex) { case page.TradeTabIndexEnum_cwlj: return getColModelOfMultiClose(); default: return getColModelDefault(); } } //用于layer.closeMe window.reloadData = reloadtrade; var groupVue = new Vue({ el: '#modalGroupTradeCashSave', data: { tradeIds: [], SettleType: "0", trade: page.trade, tradeCash: page.tradeCash, childTradeCashs: [], }, computed: { inputFormatStrike() { let fmt = {}; if (this.trade.IsMoneynessOption === '是') { fmt.append = '%'; fmt.negative = false; fmt.precision = consNumberFormat.umpriceP.precision; } else { fmt.append = ''; fmt.negative = true; fmt.precision = pricingFormat.umprice.precision; } return fmt; }, }, methods: { closeModal: function () { $('#modalGroupTradeCashSave').modal('hide'); }, saveGroupTradeCash: function () { var thisobj = this; if (thisobj.tradeCash.ValueDate > thisobj.trade.ExerciseDate) { main.message("了结日期不能在交易到期日之后"); return false; } if ((this.trade.IsUsePremiumRate == false) && this.tradeCash.TradeAmount < this.tradeCash.UnwindTradeAmount) { main.message("了结数量不能大于持仓数量"); return false; } if ((this.trade.IsUsePremiumRate == true) && this.tradeCash.TradeAmount == 0) { main.message("持仓数量为0,无法按比例换算"); return false; } if ((this.trade.IsUsePremiumRate == true) && this.tradeCash.TradeAmount < this.tradeCash.UnwindPercentRate / 100) { main.message("了结比例不能大于持仓数量比例"); return false; } main.post("/trade_cash/SaveGroupTradeCash", { trade_cash: thisobj.tradeCash, tradeIds: this.tradeIds, childTradeCashs: thisobj.childTradeCashs }).done(function (resp) { $('#modalGroupTradeCashSave').modal('hide'); window.open("tradeGroupActionList?TradeNumber=" + thisobj.trade.TradeNumber, "_blank"); }); }, changeAmount: function () { let amount = this.tradeCash.Amount; let childTotalTradeAmount = 0; this.childTradeCashs.forEach(function (dom, index) { childTotalTradeAmount += parseFloat(dom.UnwindTradeAmount); }) let singleAmount = amount / childTotalTradeAmount; this.childTradeCashs.forEach(function (dom, index) { dom.Amount = otcformat.trading.tradePrice(dom.UnwindTradeAmount * singleAmount); }) }, changeUnwindPercentRate: function () { if ((this.trade.IsUsePremiumRate == true) && this.tradeCash.TradeAmount == 0) { main.message("持仓数量为0,无法按比例换算"); return false; } if ((this.trade.IsUsePremiumRate == true) && this.tradeCash.TradeAmount < this.tradeCash.UnwindPercentRate / 100) { main.message("了结比例不能大于持仓数量比例"); return false; } let unwindPercentRate = this.tradeCash.UnwindPercentRate / 100; this.childTradeCashs.forEach(function (dom, index) { dom.UnwindStockEqvNotional = dom.OriginalStockEqvNotional * unwindPercentRate; dom.UnwindTradeAmount = otcformat.trading.notional(dom.TradeOriginalAmount * unwindPercentRate); }) }, changeUnwindTradeAmount: function () { if ((this.trade.IsUsePremiumRate == false) && this.tradeCash.TradeAmount < this.tradeCash.UnwindTradeAmount) { main.message("了结数量不能大于持仓数量"); return false; } let unwindPercentRate = this.tradeCash.UnwindTradeAmount / this.trade.TradeOriginalAmount; this.childTradeCashs.forEach(function (dom, index) { dom.UnwindTradeAmount = dom.TradeOriginalAmount * unwindPercentRate; dom.UnwindStockEqvNotional = otcformat.trading.StockEqvNotional(dom.OriginalStockEqvNotional * unwindPercentRate); }) }, changeIsUsePremiumRate: function () { if (this.trade.IsUsePremiumRate == false) { this.changeUnwindTradeAmount(); } else { this.changeUnwindPercentRate(); } }, changeChildUnwindTradeAmount: function (dom) { dom.UnwindStockEqvNotional = otcformat.trading.StockEqvNotional(dom.OriginalStockEqvNotional * dom.UnwindTradeAmount / dom.TradeOriginalAmount); }, changeChildUnwindStockEqvNotional: function (dom) { dom.UnwindTradeAmount = otcformat.trading.notional(dom.UnwindStockEqvNotional / dom.OriginalStockEqvNotional * dom.TradeOriginalAmount); }, changeChildAmount: function () { let sumAmount = 0; this.childTradeCashs.forEach(function (dom, index) { sumAmount += parseFloat(otcformat.trading.tradePrice(dom.Amount)); }) this.tradeCash.Amount = sumAmount; }, starttradeView: function (EncryptId) { var srcurl = "/trade/TradeView/?enid=" + EncryptId + "&isFromPositionReport=true"; main.open("查看交易", srcurl); }, refreshUnderlyingPrice: function () { var thisObj = this; main.post("/underlying_manager/GetUnderlyingPriceByCode", { code: thisObj.trade.UnderlyingCode, tradeId: thisObj.trade.id, valuedate: thisObj.tradeCash.ValueDate }).done(function (res) { thisObj.tradeCash.FinalPrice = res.obj; }); }, exchangeToUnwindStockEqvNotional: function () { this.tradeCash.IsUnwindStockEqvNotional = true; if (this.tradeCash.UnwindType !== "全部平仓") { this.tradeCash.UnwindStockEqvNotional = ""; this.tradeCash.UnwindPercentRate = ""; } }, exchangeToUnwindPercentRate: function () { this.tradeCash.IsUnwindStockEqvNotional = false; if (this.tradeCash.UnwindType !== "全部平仓") { this.tradeCash.UnwindStockEqvNotional = ""; this.tradeCash.UnwindPercentRate = ""; } }, init: function () { } }, components: { 'vue-datepicker': FastVue.vueDatePicker(), 'vue-number-input': FastVue.vueNumberInput() }, }); 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 }); }