Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/trade/swapTradeList.js
T

1377 lines
46 KiB
JavaScript

var g_grid = {};
var query_data = {};
$(function () {
var PostData = {};
if (observationDate) {
$("#DateValueDate").val(observationDate);
PostData.ValueDate = observationDate;
}
if (settleDate) {
$("#DateFromExerciseDate").val(settleDate);
$("#DateToExerciseDate").val(settleDate);
PostData.ExerciseDateStart = settleDate;
PostData.ExerciseDateEnd = settleDate;
}
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true
});
grid = jQuery('#listGrid').jqGrid({
cmTemplate: {
width: 80,
align: 'center',
sortable: false
},
url: '/swapTrade/TradeQuery',
datatype: 'json',
multiselect: true,
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
postData: PostData,
afterInsertRow: AfterInsertRow,
onSelectRow: rowclick,
ondblClickRow: rowdblclick,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
rowNum: 20,
rowList: [20, 30, 50, 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(function () {
//setall
selAllGrid();
});
});
var hideObj = { clientWidth: 160 };
var i = 0;
var getColModelGrid = function () {
if (isguojun) {
var col = [
{
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: 'UnwindDate',
label: 'UnwindDate',
hidden: true,
optionHide: true
}, {
name: 'trade_swap.GetSwapTimeAndRate',
label: 'trade_swap.GetSwapTimeAndRate',
index: 'trade_swap.GetSwapTimeAndRate',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'trade_swap.PaySwapTimeAndRate',
label: 'trade_swap.PaySwapTimeAndRate',
index: 'trade_swap.PaySwapTimeAndRate',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true,
}, {
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: 'Comments',
label: '备注',
index: 'Comments',
sortIndex: i++,
width: 110,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (cellValue && cellValue.startsWith("http://")) {
return "<a href='{0}' style='text-decoration:underline;' target='_blank'>{0}</a>".template(cellValue);
}
return cellValue == null ? "" : cellValue;
},
hidden: true
}, {
name: 'TradeStatus',
label: '交易状态',
index: 'TradeStatus',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'ClientNumber',
label: '客户编号',
index: 'ClientNumber',
sortIndex: i++,
width: 100,
align: 'center'
}, {
name: 'ClientName',
label: '客户名称',
index: 'ClientName',
sortIndex: i++,
width: hideObj.clientWidth,
align: 'center'
}, {
name: 'AssetBookName',
label: '簿记账户',
index: 'AssetBookName',
sortIndex: i++,
width: 110,
align: 'center'
}, {
name: 'TradeNumber',
label: '交易编号',
index: 'TradeNumber',
sortIndex: i++,
width: 240,
align: 'center',
formatter: ShowStructFormater
}, {
name: 'TradeDate',
label: '交易日期',
index: 'TradeDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'StartDate',
label: '开始日期',
index: 'StartDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'ExerciseDate',
label: '到期日期',
index: 'ExerciseDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'SettlementDate',
label: '结算日期',
index: 'SettlementDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'UnderlyingCode',
label: '标的代码',
index: 'UnderlyingCode',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
}, {
name: 'UnderlyingName',
label: '标的名称',
index: 'UnderlyingName',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
}, {
name: 'QuoteCurrency',
label: '计价货币',
index: 'QuoteCurrency',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'TraderName',
label: '交易员',
index: 'TraderName',
sortIndex: i++,
width: 100,
align: 'center',
hidden: true
}, {
name: 'SalesCommission.Commission',
label: '销售提成',
index: 'SalesCommission.Commission',
sortIndex: i++,
width: 90,
align: 'center',
sortable: false,
formatter: CommissionFormatter,
hidden: true
}, {
name: 'trade_swap_gj.LongShort',
label: '多头空头',
index: 'trade_swap_gj.LongShort',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
}, {
name: 'SpotPrice',
label: '标的期初价格',
index: 'SpotPrice',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: Format6
}, {
name: 'OriginalNotional',
label: '成交数量',
index: 'OriginalNotional',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: otcformat.trading.notional
}, {
name: 'trade_swap_gj.OpenPrice',
label: '标的期初价格(费后)',
index: 'trade_swap_gj.OpenPrice',
sortIndex: i++,
width: 120,
align: 'center',
sortable: false,
formatter: Format6
}, {
name: 'trade_swap_gj.TradeCommission',
label: '开仓费用',
index: 'trade_swap_gj.TradeCommission',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: otcformat.trading.umprice
}, {
name: 'trade_swap_gj.OpenCurrencyRate',
label: '期初汇率',
index: 'trade_swap_gj.OpenCurrencyRate',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: otcformat.trading.umprice
}, {
name: 'trade_swap_gj.PricingOriginalStockEqvNotional',
label: '期初名义本金(计价货币)',
index: 'trade_swap_gj.PricingOriginalStockEqvNotional',
sortIndex: i++,
width: 150,
align: 'center',
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'OriginalStockEqvNotional',
label: '期初名义本金(结算货币)',
index: 'OriginalStockEqvNotional',
sortIndex: i++,
width: 150,
align: 'center',
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'trade_swap_gj.SwapTimeAndRate',
label: '固定收益率',
index: 'trade_swap_gj.SwapTimeAndRate',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: SwapTimeAndRateFormat2
}, {
name: 'Notional',
label: '存续数量',
index: 'Notional',
width: 100,
sortIndex: i++,
align: 'center',
sortable: false,
formatter: otcformat.trading.notional
}, {
name: 'trade_swap_gj.PricingStockEqvNotional',
label: '存续名义本金(计价货币)',
index: 'trade_swap_gj.PricingStockEqvNotional',
sortIndex: i++,
width: 150,
align: 'center',
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'StockEqvNotional',
label: '存续名义本金(结算货币)',
index: 'StockEqvNotional',
sortIndex: i++,
width: 150,
align: 'center',
formatter: otcformat.trading.StockEqvNotional
}
];
return tradeHelper.getAmountToNotional(col);
} else {
var col = [
{
// name: 'rowFlag',
// label: ' ',
// width: 30,
// optionHide: true,
// formatter: expandFormat,
// align: 'center',
// sortable: false
//}, {
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: 'trade_swap.GetSwapTimeAndRate',
// label: 'trade_swap.GetSwapTimeAndRate',
// index: 'trade_swap.GetSwapTimeAndRate',
// sortIndex: i++,
// width: 70,
// align: 'center',
// hidden: true,
// optionHide: true
//}, {
// name: 'trade_swap.PaySwapTimeAndRate',
// label: 'trade_swap.PaySwapTimeAndRate',
// index: 'trade_swap.PaySwapTimeAndRate',
// sortIndex: i++,
// width: 70,
// align: 'center',
// hidden: true,
// optionHide: true
}, {
name: 'UnwindDate',
label: 'UnwindDate',
hidden: true,
optionHide: true
}, {
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: 'Comments',
label: '备注',
index: 'Comments',
sortIndex: i++,
width: 110,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (cellValue && cellValue.startsWith("http://")) {
return "<a href='{0}' style='text-decoration:underline;' target='_blank'>{0}</a>".template(cellValue);
}
return cellValue == null ? "" : cellValue;
}
}
, {
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: 240,
align: 'center',
formatter: ShowStructFormater
}, {
name: 'ContractCode',
label: '确认书编号',
index: 'ContractCode',
sortIndex: i++,
width: 240,
align: 'center',
hidden: true,
formatter: ShowStructFormater
}, {
name: 'TradeDate',
label: '交易日期',
index: 'TradeDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'StartDate',
label: '开始日期',
index: 'StartDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'ExerciseDate',
label: '到期日期',
index: 'ExerciseDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'SettlementDate',
label: '结算日期',
index: 'SettlementDate',
sortIndex: i++,
width: 90,
align: 'center',
sortable: true,
formatter: 'date'
}, {
name: 'SettlementFlag',
label: '是否延期结算',
index: 'SettlementFlag',
sortIndex: i++,
width: 100,
align: 'center',
sortable: false,
formatter: YesOrNoFormat
}, {
name: 'TradeType',
label: '结构类型',
index: 'TradeType',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'trade_swap.SwapType',
label: '互换类型',
index: 'trade_swap.SwapType',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'OriginalStockEqvNotional',
label: '名义本金',
index: 'OriginalStockEqvNotional',
sortIndex: i++,
width: 70,
align: 'center',
sortable: true,
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'ClientName',
label: '交易对手方',
index: 'ClientName',
sortIndex: i++,
width: hideObj.clientWidth,
align: 'center'
}, {
name: 'QuoteCurrency',
label: '计价货币',
index: 'QuoteCurrency',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'TradeAmount',
label: '持仓数量',
width: 100,
sortIndex: i++,
align: 'center',
sortable: false,
formatter: otcformat.trading.notional
}, {
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.GetOpenPrice',
label: '[收取]开仓价格',
index: 'trade_swap.GetOpenPrice',
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.GetLot',
label: '[收取]手数',
index: 'trade_swap.GetLot',
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: 'TraderName',
label: '交易员',
index: 'TraderName',
sortIndex: i++,
width: 100,
align: 'center'
}, {
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.PayOpenPrice',
label: '[支付]开仓价格',
index: 'trade_swap.PayOpenPrice',
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.PayLot',
label: '[支付]手数',
index: 'trade_swap.PayLot',
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: CommissionFormatter
}
];
if (page.ViewTagPermission) {
col.push({
name: 'Tags',
label: '标签值',
index: 'Tags',
width: 150,
align: 'left',
sortable: false,
formatter: function (cellvalue, options, rowObject) {
var html = '<div class="tag-context">';
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 += '<span class="tag-item" data-id="' + rowObject.Tags[i].Id + '" data-name="' + rowObject.Tags[i].Name + '"><span class="tag-text" data-value="' + rowObject.Tags[i].Id + '">' + rowObject.Tags[i].Name + '</span></span>';
}
html += '<span class="tag-add" title="' + tagNames + '">...</span>';
} else {
for (var i = 0; i < rowObject.Tags.length; i++) {
html += '<span class="tag-item" data-id="' + rowObject.Tags[i].Id + '" data-name="' + rowObject.Tags[i].Name + '"><span class="tag-text" data-value="' + rowObject.Tags[i].Id + '">' + rowObject.Tags[i].Name + '</span></span>';
}
}
}
html += '</div>';
return html;
}
},
{
name: 'OutputTags',
label: 'OutputTags',
index: 'OutputTags',
width: 70,
align: 'center',
hidden: true,
optionHide: true
});
}
return tradeHelper.getAmountToNotional(col);
}
};
var colModelGrid = getColModelGrid();
function ShowStructFormater(cellValue, options, rowObject) {
return cellValue || '';
}
function DoubleFormat(cellValue, options, rowObject) {
return !cellValue ? "0.00" : cellValue.toFixed(2);
}
function Format6(cellValue, options, rowObject) {
return cellValue ? cellValue.toFixed(6) : "0.000000";
}
function YesOrNoFormat(cellValue, options, rowObject) {
return cellValue ? "是" : "否";
}
function PercentFormat(cellValue, options, rowObject) {
if (cellValue) {
var num = new Number(cellValue) * 100;
return num.toFixed(2) + "%";
} else {
return "0.00%";
}
}
function SwapTimeAndRateFormat(cellValue, options, rowObject) {
if (cellValue != null && cellValue.indexOf(";") > 0) {
var spCellValue = cellValue.split(";")[1];
if (spCellValue != null && spCellValue.indexOf(",") > 0) {
return PercentFormat(spCellValue.split(",")[0]);
} else {
return PercentFormat(spCellValue);
}
}
return PercentFormat(cellValue);
}
function SwapTimeAndRateFormat2(cellValue, options, rowObject) {
if (cellValue != null && cellValue.indexOf(";") > 0) {
var spCellValue = cellValue.split(";")[1];
if (rowObject.trade_swap.IsGetFloatingProfit) {
if (spCellValue != null && spCellValue.indexOf(",") > 0) {
return PercentFormat(-spCellValue.split(",")[0]);
} else {
return PercentFormat(-spCellValue);
}
} else {
if (spCellValue != null && spCellValue.indexOf(",") > 0) {
return PercentFormat(spCellValue.split(",")[0]);
} else {
return PercentFormat(spCellValue);
}
}
}
return PercentFormat(cellValue);
}
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 expandFormat(cellValue, options, rowObject) {
var hasExpandIcon = rowObject.IsGroup == 1;
if (hasExpandIcon) {
return `<a class="yl-grid-plus" href="#" ondblclick="event.stopPropagation()" onclick="toggleExpand('${options.rowId}')"><i class="fa fa-plus"></i></a>`;
}
return "";
}
function exportUnwindSwapTrade() {
var url = "/swaptrade/UnwindSwapTradeExport";
downLoadFile(url);
}
function downLoadFile(downloadUrlStr) {
window.open(downloadUrlStr);
}
function gridComplete() {
var jgrid = $(this);
var rowIds = jgrid.jqGrid('getDataIDs');
for (var i = 0; i < rowIds.length; i++) {
var rowId = rowIds[i];
var rowdata = jgrid.getRowData(rowId);
if (rowdata.ExerciseDate == page.systemDate && (rowdata.TradeStatus != "已平仓" && rowdata.TradeStatus != "已到期")) {
$('#' + rowIds[i]).addClass("ExerciseDateBg");
}
else if (rowdata['trade_swap.GetSwapTimeAndRate'].indexOf(page.systemDate) > -1 || rowdata['trade_swap.PaySwapTimeAndRate'].indexOf(page.systemDate) > -1) {
$('#' + rowIds[i]).addClass("SwapDateBg");
}
if (rowdata.TradeStatus == "已平仓" && rowdata.UnwindDate == page.systemDate) {
$('#' + rowIds[i]).addClass("UnwindTradeBg");
}
}
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
main.setcolumnChooser(jgrid, page.configcolumn_data_hhjyss);
var newHeight = $(window).height() - 250;
$(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;");
selAllGrid();
$('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll();
}
function customButton(cellValue, options, rowObject) {
var imageHtml = "<input type=\"button\" value=\"删除\" class=\"btn-warning\" onclick=\"deletetrade('" +
rowObject.EncryptId +
"');\" />";
return imageHtml;
}
function deletetrade(encryptId) {
if (confirm("确定删除吗?")) {
$.ajax({
type: "Post",
url: "/forwardTrade/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 rowdblclick(rowid) {
var rowData = $(this).getRowData(rowid);
if (rowData.EncryptId) {
starttradeView(rowData.EncryptId);
}
}
function toggleExpand(rowid) {
event.stopPropagation();
$(event.target).toggleClass('fa-minus');
if ($(event.target).hasClass('fa-minus')) {
main.post("/swaptrade/SearchGroupChildrenList", { 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("/trade/SearchGroupChildrenList", { id: rowid }).done(function (res) {
for (var i = 0; i < res.length; i++) {
jQuery('#listGrid').jqGrid('delRowData', res[i].id);
}
});
}
}
function startAddtrade() {
layer.open({
type: 2,
title: "新增互换交易",
shadeClose: false,
shade: 0.4,
area: ['1380px', '800px'],
content: "/swapTrade/TradeEdit/0"
});
}
function starttradeView(id) {
var srcurl = "/trade/TradeView/?enid=" + id + "&checkBtn=1";
main.open("查看交易", srcurl);
}
function reloadtrade() {
//重新加载
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(",") };
// R4:不再硬编码 IsSkipCheck=true 静默跳过资金校验——普通确认走校验,
// 资金不足时由 LackOfMoney 弹窗走显式特批(additionalProcessing)链路
if (!main.isEmpty(additionalProcessing)) {
pData.additionalProcessing = additionalProcessing;
}
main.post("/trade/tradeConfirm", pData).done(function (data) {
//错误是打印错误提示
if (!data.success) {
main.message(data.msg);
return;
}
SearchClick(true);
});
};
///批量结算
main.confirm("确认所有选中交易?", confirmFunc);
}
function uploadTrade() {
main.open("导入互换流水", "/swapTrade/tradeUpload", { area: ['800px', '600px'] });
}
function uploadTradeFlowGroup() {
main.open("导入互换流水", "/swapTrade/tradeFlowGroupUpload", { area: ['800px', '600px'] });
}
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
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({ TradeDateStart: $("#DateFromTradeDate").val() });
listGrid.appendPostData({ TradeDateEnd: $("#DateToTradeDate").val() });
listGrid.appendPostData({ StartDateStart: $("#DateFromStartDate").val() });
listGrid.appendPostData({ StartDateEnd: $("#DateToStartDate").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({ SettlementDateStart: $("#DateFromSettlementDate").val() });
listGrid.appendPostData({ SettlementDateEnd: $("#DateToSettlementDate").val() });
listGrid.appendPostData({ ValueDate: $("#DateValueDate").val() });
listGrid.appendPostData({ SettlementFlags: $("#SettlementFlag").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 openTradeConfirmList() {
window.open("tradeConfirmList", "_blank");
}
function openTradeFlowList() {
if (page.company == "国泰君安") {
window.open("TradeFlowListMore", "_blank");
} else {
window.open("TradeFlowList", "_blank");
}
}
function downloadFlowInfo() {
exportSubmit('/SwapTrade/ExportTradeFlowInfo');
}
function downloadOpenInfo() {
exportSubmit('/SwapTrade/ExportTradeOpenInfo');
}
function exportSubmit(url) {
var $form = $('#exportForm').html('');
$form.attr("action", url)
$form.submit();
}
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;
}
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 removeconfigcolumn() {
}
function showcolumnChooser() {
var jgrid = jQuery('#listGrid');
main.showcolumnChooser(jgrid, page.configcolumn_data_hhjyss);
}
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 importTrade(type) {
main.open("互换交易导入", "/SwapTrade/SwapTradeUpload", { area: ['800px', '600px'] });
}
function uploadTrades() {
let fileName = $("#uploadfileButton").val();
if (!fileName) {
return main.alert("请选择要导入的文件!");
}
let index = fileName.lastIndexOf(".");
let fileEx = index > 0 ? fileName.substr(index).toLowerCase() : '';
if (fileEx !== '.xlsx') {
return main.alert("只能上传.xlsx类型的文件!");
}
function success(data) {
if (data.success) {
_reloadData = 'reloadData';
main.alert(!data.totalNum ? '导入成功!' : "共 {0} 条数据,导入成功 {1} 条数据!".template(data.totalNum, data.successNum));
} else {
main.alert("导入失败:" + data.msg);
}
}
var url = "/swapTrade/UploadSwapTrade";//区分导入,了结导入
main.confirm("确定导入?", UploadFile.bind(null, { inputId: 'openFile', url: url, success: success }));
}
function UploadFile(options) {
if (!options || !options.url || !options.inputId) {
throw '[UploadFile]参数错误';
}
let file = $("#uploadfile").prop('files');
if (!file || !file[0]) return;
file = file[0];
var formData = new FormData();
formData.append("file", file, file.name);
formData.append("upload_file", true);
$.ajax({
type: "POST",
url: options.url,
xhr: function () {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', options.progressFn, false);
}
return myXhr;
},
beforeSend() {
main.waitMe("show");
},
success: options.success,
error(error) {
main.alert("导入失败:" + error.statusText);
},
complete(result) {
main.waitMe("hide");
},
async: true,
data: formData,
cache: false,
contentType: false,
processData: false,
timeout: 60000
});
}
function downTemplate() {
if (page.company == "山西") {
window.open("../App_Docs/导入模板/互换交易数据导入模板.xlsx");
}
}
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");//关闭取消分组弹层
}
});
$(".three-wrap-gtja #AssetId").prev().addClass("Bookkeeping-account");
$(".three-wrap-gtja #TraderName").prev().addClass("Trader-account");
$(".morebtn").click(function (e) {
$(".hidediv").toggle();
});
function exportTradeChoose() {
layer.open({
type: 1,
title: "导出交易",
shadeClose: false,
shade: 0.4,
area: ['300px', '240px'],
content: $('#exportTpl').html()
});
}
function exportTrade() {
var dateTemp = new Date().Format("yyyyMMddhhmmss");
var fileName = "互换交易导出" + dateTemp;
var toExcelArray = [];
if (page.ViewTagPermission) {
toExcelArray.push({
colName: "标签值",
formatter: function (cellValue, options, rowObject) {
return rowObject.OutputTags;
}
});
}
main.toExcel("listGrid", fileName, "xls", null, "", toExcelArray);
}
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;