1073 lines
37 KiB
JavaScript
1073 lines
37 KiB
JavaScript
const ConsTradeStatus = {
|
|
已执行: '已执行',
|
|
已到期: '已到期',
|
|
已平仓: '已平仓'
|
|
};
|
|
const configcolumn_data = {
|
|
当日成交: "todayConfirmList",
|
|
今日到期: "todayMaturityList",
|
|
明日到期: "tomorrowMaturityList"
|
|
};
|
|
const TradeTabIndexEnum = {
|
|
今日成交: 1,
|
|
今日提前终止: 2,
|
|
今日到期: 3,
|
|
明日到期: 4,
|
|
场内成交记录: 5,
|
|
场外成交记录: 11,
|
|
对冲交易: 12,
|
|
全部: 13
|
|
};
|
|
const g_ConfirmedState = ["已到期", "已执行", "已平仓"];
|
|
|
|
function GetGridColModes() {
|
|
var i = 0;
|
|
var colModelGrid = [
|
|
{
|
|
name: 'id',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'IsMoneynessOption',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'EncryptId',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'rowFlag',
|
|
label: ' ',
|
|
width: 30,
|
|
optionHide: true,
|
|
formatter: expandFormat,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'TradeStatus',
|
|
label: '交易状态',
|
|
index: 'TradeStatus',
|
|
width: 95,
|
|
align: 'center'
|
|
}, {
|
|
name: 'TradeNumber',
|
|
label: '交易编号',
|
|
index: 'TradeNumber',
|
|
width: 150,
|
|
align: 'center'
|
|
}, {
|
|
name: 'AssetBookName',
|
|
label: '簿记帐户',
|
|
index: 'AssetBookName',
|
|
width: 150,
|
|
align: 'center'
|
|
}, {
|
|
name: 'ClientName',
|
|
label: '交易对手方',
|
|
index: 'ClientName',
|
|
width: 300,
|
|
align: 'center'
|
|
}, {
|
|
name: 'TradeDate',
|
|
label: '成交日期',
|
|
index: 'TradeDate',
|
|
width: 90,
|
|
align: 'center',
|
|
formatter: 'date'
|
|
}, {
|
|
name: 'ExerciseDate',
|
|
label: '到期日期',
|
|
index: 'ExerciseDate',
|
|
width: 90,
|
|
align: 'center',
|
|
formatter: 'date'
|
|
}, {
|
|
name: 'BuySell',
|
|
label: '买卖方向',
|
|
index: 'BuySell',
|
|
width: 70,
|
|
align: 'center'
|
|
}, {
|
|
name: 'ExerciseMode',
|
|
label: '行权方式',
|
|
index: 'ExerciseMode',
|
|
width: 70,
|
|
align: 'center',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return rowObject.ExerciseModeCn;
|
|
}
|
|
}, {
|
|
name: 'TradeType',
|
|
label: '结构类型',
|
|
index: 'TradeType',
|
|
width: 120,
|
|
align: 'center',
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType;
|
|
}
|
|
}, {
|
|
name: 'SyntheticUnderlyingTipsInfo',
|
|
label: '组合标的信息',
|
|
index: 'SyntheticUnderlyingTipsInfo',
|
|
width: 120,
|
|
align: 'left',
|
|
hidden: true,
|
|
optionHide: true
|
|
}, {
|
|
name: 'OptionType',
|
|
label: '看涨看跌',
|
|
index: 'OptionType',
|
|
width: 70,
|
|
align: 'center'
|
|
}, {
|
|
name: 'UnderlyingCode',
|
|
label: '标的代码',
|
|
index: 'UnderlyingCode',
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: ShowStructFormater
|
|
}, {
|
|
name: 'UnderlyingName',
|
|
label: '标的名称',
|
|
index: 'UnderlyingName',
|
|
width: 100,
|
|
align: 'center',
|
|
sortable: false
|
|
}, {
|
|
name: 'InitialSpotPrice',
|
|
label: '期初标的价格',
|
|
index: 'InitialSpotPrice',
|
|
width: 90,
|
|
align: 'right',
|
|
sorttype: 'float',
|
|
formatter: otcformat.trading.umprice,
|
|
sortable: false
|
|
}, {
|
|
name: 'Strike',
|
|
label: '执行价格',
|
|
index: 'Strike',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: strikeFormat
|
|
}, {
|
|
name: 'TradeSinglePrice',
|
|
label: '权利金(成交)',
|
|
index: 'TradeSinglePrice',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: TradeSinglePriceFormat
|
|
}, {
|
|
name: 'TradeOriginalAmount1', label: '成交数量', width: 70, sortable: false,
|
|
formatter: function (cellvalue, options, rowObject) {
|
|
return otcformat.trading.notional(tradeHelper.getTradeAmountV(rowObject));
|
|
}
|
|
}, {
|
|
name: 'TradeOriginalAmount1',
|
|
label: '有效成交数量',
|
|
index: 'TradeOriginalAmount1',
|
|
width: 96,
|
|
align: 'center',
|
|
sortable: false,
|
|
formatter: function (cellValue, options, rowObject) {
|
|
return otcformat.trading.notional(rowObject.TradeOriginalAmount);
|
|
}
|
|
}
|
|
];
|
|
|
|
if (page.tabIndexSelect === TradeTabIndexEnum.今日成交) {
|
|
colModelGrid.push({
|
|
name: 'TradePrice',
|
|
label: '成交总额',
|
|
index: 'TradePrice',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: TradePriceFormat,
|
|
sorttype: 'float'
|
|
});
|
|
colModelGrid.push({
|
|
name: 'Comments',
|
|
label: '备注',
|
|
index: 'Comments',
|
|
width: 140,
|
|
align: 'left',
|
|
hidden: true
|
|
});
|
|
colModelGrid.push({
|
|
name: 'OriginalStockEqvNotional',
|
|
label: '名义本金',
|
|
index: 'OriginalStockEqvNotional',
|
|
width: 70,
|
|
align: 'right',
|
|
formatter: otcformat.trading.StockEqvNotional,
|
|
sortable: false,
|
|
hidden: true
|
|
});
|
|
|
|
if (page.IsTradeVol) {
|
|
colModelGrid.push({
|
|
name: 'TradeOpenVolatility',
|
|
label: '成交波动率',
|
|
index: 'TradeOpenVolatility',
|
|
width: 100,
|
|
sortable: false,
|
|
align: 'right',
|
|
formatter: PercentFormat
|
|
});
|
|
colModelGrid.push({
|
|
name: 'TradeCloseVolatility',
|
|
label: '目标波动率',
|
|
index: 'TradeCloseVolatility',
|
|
width: 100,
|
|
sortable: false,
|
|
align: 'right',
|
|
formatter: PercentFormat
|
|
});
|
|
colModelGrid.push({
|
|
name: 'NumOfSmoothingDays',
|
|
label: '平滑天数',
|
|
index: 'NumOfSmoothingDays',
|
|
width: 65,
|
|
sortable: false,
|
|
align: 'center'
|
|
});
|
|
}
|
|
}
|
|
if (page.tabIndexSelect === TradeTabIndexEnum.今日成交 || page.tabIndexSelect === TradeTabIndexEnum.今日到期) {
|
|
colModelGrid.push({
|
|
name: 'TraderName',
|
|
label: '交易员',
|
|
index: 'TraderName',
|
|
width: 70,
|
|
align: 'right',
|
|
sortable: false,
|
|
hidden: true
|
|
});
|
|
}
|
|
|
|
if (page.tabIndexSelect === TradeTabIndexEnum.今日到期 || page.tabIndexSelect === TradeTabIndexEnum.明日到期) {
|
|
colModelGrid.push({
|
|
name: 'RealizedPnl',
|
|
label: '实现盈亏',
|
|
index: 'RealizedPnl',
|
|
width: 130,
|
|
align: 'right',
|
|
sortable: false
|
|
, formatter: GetRealizedPnl
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'UnderlyingPrice',
|
|
label: '最新标的价格',
|
|
index: 'UnderlyingPrice',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (rowObject.TradeStatus == "已执行" || rowObject.TradeStatus == "已到期") {
|
|
return "--";
|
|
}
|
|
return otcformat.trading.umprice(cellValue);
|
|
},
|
|
sortable: false
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'SinglePV',
|
|
label: '权利金(存续)',//期权现价
|
|
index: 'SinglePV',
|
|
width: 85,
|
|
align: 'right',
|
|
formatter: GetLatestSinglePVDesc,
|
|
sortable: false
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'TradeAmount',
|
|
label: '存续数量',
|
|
index: 'TradeAmount',
|
|
width: 65,
|
|
align: 'center',
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (rowObject.TradeStatus === ConsTradeStatus.已执行 || rowObject.TradeStatus === ConsTradeStatus.已到期 || rowObject.TradeStatus === ConsTradeStatus.已平仓) {
|
|
var html = "<label href=\"#\" style=\'background-color:chocolate;display:block;' >0</label>";
|
|
return html;
|
|
}
|
|
else {
|
|
return otcformat.trading.notional(cellValue);
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'DeltaInLots',
|
|
label: 'Delta手数',
|
|
index: 'DeltaInLots',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: 'number',
|
|
sortable: false
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'ValueStatus',
|
|
label: '价值状态',
|
|
index: 'ValueStatus',
|
|
width: 150,
|
|
align: 'center',
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (cellValue.indexOf('ITM') >= 0) {
|
|
var html = "<label href=\"#\" style=\'background-color:orange;display:block;' >{0}</label>"
|
|
.template(cellValue);
|
|
return html;
|
|
}
|
|
return cellValue;
|
|
},
|
|
sortable: false
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'FinalPrice',
|
|
label: '到期标的价格',
|
|
index: 'FinalPrice',
|
|
width: 90,
|
|
align: 'right',
|
|
formatter: function (cellValue, options, rowObject) {
|
|
if (rowObject.trade_cash == undefined) {
|
|
return "--";
|
|
}
|
|
return otcformat.trading.umprice(cellValue);
|
|
}
|
|
});
|
|
|
|
//到期收益 payoff*到期数量
|
|
colModelGrid.push({
|
|
name: 'trade_cash.UnwindPrice',
|
|
label: '到期收益',
|
|
index: 'trade_cash.UnwindPrice',
|
|
width: 150,
|
|
align: 'right',
|
|
sortable: false,
|
|
formatter: unwindPriceFormat
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: 'trade_cash.TradeAmount',
|
|
label: '到期数量',
|
|
index: 'trade_cash.TradeAmount',
|
|
width: 100,
|
|
align: 'center',
|
|
formatter: unwindTradeAmountFormat,
|
|
sortable: false
|
|
});
|
|
|
|
colModelGrid.push({
|
|
name: '1',
|
|
label: '操作',
|
|
index: '',
|
|
align: 'center',
|
|
width: 200,
|
|
formatter: showToolName
|
|
});
|
|
}
|
|
|
|
return tradeHelper.getAmountToNotional(colModelGrid);
|
|
}
|
|
|
|
$(function () {
|
|
$("#Btn_BatchExpire").hide();
|
|
$("#tab1NotShow").hide();
|
|
$("#tab3_4NotShow").show();
|
|
var PostData = {};
|
|
PostData.ValidState = $("#ValidState").val();
|
|
PostData.TabIndex = page.tabIndexSelect;
|
|
$(".datepicker").datepicker({
|
|
changeMonth: true,
|
|
changeYear: true,
|
|
showButtonPanel: true,
|
|
showOtherMonths: true,
|
|
selectOtherMonths: true
|
|
});
|
|
colModelGrid = GetGridColModes();
|
|
grid = jQuery('#listGrid').jqGrid({
|
|
url: "/trade/tradeOnValueDateQuery",
|
|
datatype: 'json',
|
|
multiselect: true,
|
|
height: '500px',
|
|
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: 500,
|
|
rowList: [20, 30, 50, 200, 500, 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("/trade/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 setStructTable(rowObject) {
|
|
structTrades = rowObject.SubTrades;
|
|
var trhtml = "";
|
|
var trcode = "<td>标的代码</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.UnderlyingCode);
|
|
var trstrike = "<td>执行价格</td>";
|
|
var trbuysell = "<td>买卖方向</td>";
|
|
var trvarity = "<td>结构类型</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.StructureType);
|
|
var trstockeqvnotional = "<td>名义本金</td><td colspan='{0}'>{1}</td>".template(structTrades.length, (new Number(rowObject.StockEqvNotional) / 10000).toFixed(2) + "万");
|
|
var trmaturedate = "<td>到期日期</td><td colspan='{0}'>{1}</td>".template(structTrades.length, moment(rowObject.ExerciseDate).format("YYYY-MM-DD"));
|
|
//trtradestatus = "<td>交易状态</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.TradeStatus);
|
|
if (structTrades) {
|
|
for (var i = 0; i < structTrades.length; i++) {
|
|
trstrike += "<td>{0}</td>".template(structTrades[i].IsMoneynessOption === "是" ? (new Number(structTrades[i].Strike) * 100).toFixed(2) + "%" : structTrades[i].Strike);
|
|
trbuysell += "<td>{0}</td>".template(structTrades[i].BuySell);
|
|
}
|
|
}
|
|
trhtml = "<tr>{0}</tr>".template(trcode);
|
|
trhtml += "<tr>{0}</tr>".template(trstrike);
|
|
trhtml += "<tr>{0}</tr>".template(trbuysell);
|
|
trhtml += "<tr>{0}</tr>".template(trstockeqvnotional);
|
|
trhtml += "<tr>{0}</tr>".template(trmaturedate);
|
|
//trhtml += "<tr>{0}</tr>".template(trtradestatus);
|
|
trhtml += "<tr>{0}</tr>".template(trvarity);
|
|
|
|
var showTable = "<table class='table'>{0}<table>".template(trhtml);
|
|
|
|
return showTable;
|
|
}
|
|
|
|
function ShowStructFormater(cellValue, options, rowObject) {
|
|
var html;
|
|
//if (rowObject.TradeType === "结构化交易") {
|
|
// html = "<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
|
|
// .template(cellValue || '', setStructTable(rowObject));
|
|
// return html;
|
|
//}
|
|
if (rowObject.TradeType === "合成价差期权") {
|
|
html =
|
|
"<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
|
|
.template(cellValue || '', rowObject.SyntheticUnderlyingTipsInfo);
|
|
return html;
|
|
}
|
|
return cellValue || '';
|
|
}
|
|
|
|
function NotionalFormat(cellValue, options, rowObject) {
|
|
if (rowObject.TradeStatus === ConsTradeStatus.已执行 || rowObject.TradeStatus === ConsTradeStatus.已到期 || rowObject.TradeStatus === ConsTradeStatus.已平仓) {
|
|
return 0;
|
|
}
|
|
else {
|
|
return cellValue;
|
|
}
|
|
}
|
|
|
|
function GetLatestSinglePVDesc(cellValue, options, rowObject) {
|
|
var html = "<span title='{0}'>{1}<span>";
|
|
if (rowObject.TradeStatus === page.trade_yizhixing || rowObject.TradeStatus === page.trade_yidaoqi || rowObject.TradeStatus === page.trade_yipingcang) {
|
|
return html.template("期权现价", "--");
|
|
}
|
|
var voltype = page.volType;
|
|
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) {
|
|
return html.template("期权现价",
|
|
otcformat.trading.premiumRateP(Math.abs(pv[0].Value / rowObject.Notional / rowObject.UnderlyingPrice)));
|
|
} else {
|
|
return html.template("期权现价",
|
|
otcformat.trading.tradeSinglePrice(Math.abs(pv[0].Value / rowObject.Notional)));
|
|
}
|
|
}
|
|
}
|
|
return html.template("期权现价", "--");
|
|
}
|
|
|
|
function GetRealizedPnl(cellValue, options, rowObject) {
|
|
var html = "<span title='{0}'>{1}<span>";
|
|
return html.template("实现盈亏", otcformat.trading.tradePrice(cellValue));
|
|
}
|
|
|
|
function unwindTradeAmountFormat(cellValue, options, rowObject) {
|
|
if (rowObject.trade_cash == undefined) {
|
|
return otcformat.trading.notional(rowObject.TradeAmount);
|
|
}
|
|
return otcformat.trading.notional(rowObject.trade_cash.TradeAmount == null || rowObject.trade_cash.TradeAmount == undefined ? 0 : rowObject.trade_cash.TradeAmount);
|
|
}
|
|
|
|
function unwindPriceFormat(cellValue, options, rowObject) {
|
|
if (rowObject.trade_cash == undefined) {
|
|
return "--";
|
|
}
|
|
|
|
if (rowObject.IsUsePremiumRate) {
|
|
return rowObject.trade_cash.Action == "系统操作-行权费" ?
|
|
otcformat.trading.tradeSinglePrice(Math.abs(rowObject.trade_cash.UnwindPrice))
|
|
: otcformat.trading.premiumRateP(Math.abs(rowObject.trade_cash.UnwindPricePercentRate));
|
|
}
|
|
else {
|
|
return otcformat.trading.tradeSinglePrice(Math.abs(rowObject.trade_cash.UnwindPrice));
|
|
}
|
|
}
|
|
|
|
function TradeAmountFormat(cellValue, options, rowObject) {
|
|
if (rowObject.TradeStatus === ConsTradeStatus.已执行 || rowObject.TradeStatus === ConsTradeStatus.已到期 || rowObject.TradeStatus === ConsTradeStatus.已平仓) {
|
|
return 0;
|
|
}
|
|
else {
|
|
return cellValue;
|
|
}
|
|
}
|
|
|
|
function TradePriceFormat(cellValue, options, rowObject) {
|
|
return otcformat.trading.tradePrice(cellValue);
|
|
}
|
|
|
|
function TradeSinglePriceFormat(cellValue, options, rowObject) {
|
|
if (rowObject.IsUsePremiumRate) {
|
|
return otcformat.trading.premiumRateP(rowObject.PremiumRate);
|
|
}
|
|
else {
|
|
return otcformat.trading.tradeSinglePrice(cellValue);
|
|
}
|
|
}
|
|
|
|
function PercentFormat(cellValue, options, rowObject) {
|
|
if (cellValue) {
|
|
var num = new Number(cellValue) * 100;
|
|
return num.toFixed(2) + "%";
|
|
} else {
|
|
return "0.00%";
|
|
}
|
|
}
|
|
|
|
function strikeFormat(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 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 toggleExpand(rowid) {
|
|
event.stopPropagation();
|
|
$(event.target).toggleClass('fa-minus');
|
|
var url = "/trade/SearchGroupChildrenConfirmList";
|
|
if ($(event.target).hasClass('fa-minus')) {
|
|
main.post(url, { id: rowid, isExerciseDate: page.tabIndexSelect === TradeTabIndexEnum.今日到期 }).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, isExerciseDate: page.tabIndexSelect === TradeTabIndexEnum.今日到期 }).done(function (res) {
|
|
for (var i = 0; i < res.length; i++) {
|
|
jQuery('#listGrid').jqGrid('delRowData', res[i].id);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
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.ValueStatus != undefined && rowdata.ValueStatus.indexOf("ITM") == 0 && rowdata.ExerciseDate === page.valueDate) {
|
|
$('#' + rowIds[i]).find("td").addClass("SelectBG");
|
|
}
|
|
}
|
|
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.今日到期;
|
|
}
|
|
else if (page.tabIndexSelect === TradeTabIndexEnum.明日到期) {
|
|
columnKey = configcolumn_data.明日到期;
|
|
}
|
|
|
|
main.setcolumnChooser(jgrid, columnKey);
|
|
}
|
|
|
|
function customButton(cellValue, options, rowObject) {
|
|
var imageHtml = "<input type=\"button\" value=\"删除\" class=\"btn-warning\" onclick=\"deletetrade('" +
|
|
rowObject.EncryptId +
|
|
"');\" />";
|
|
return imageHtml;
|
|
}
|
|
|
|
function downloadFiles(files) {
|
|
if (files instanceof Array) {
|
|
if (files.length <= 0) {
|
|
return;
|
|
}
|
|
$.each(files,
|
|
function (index, val) {
|
|
val && setTimeout(function () { window.open(val); }, 500);
|
|
});
|
|
} else {
|
|
files && window.open(files);
|
|
}
|
|
}
|
|
|
|
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 showToolName(cellValue, options, rowObject) {
|
|
var html =
|
|
"<input type=\"button\" class=\"wentiEdit\" title='查看交易信息' onclick=\"starttradeView('{0}','{2}')\" value=\"{1}\" />"
|
|
.template(rowObject.EncryptId, "查看", rowObject.TradeType);
|
|
|
|
if (page.tabIndexSelect === TradeTabIndexEnum.今日到期) {
|
|
if (rowObject.TradeStatus === "确认成交" && rowObject.TradeType != "自定义交易") {
|
|
if (rowObject.TradeType === "收益互换") {
|
|
if (page.swap) {
|
|
html = html +
|
|
"<input type=\"button\" class=\"wentiEdit\" title='收益互换' onclick=\"swapTrade('{0}')\" value=\"{1}\" />"
|
|
.template(rowObject.EncryptId, "收益互换");
|
|
}
|
|
}
|
|
else {
|
|
if (page.toEnd && rowObject.IsGroup == 0) {
|
|
html = html +
|
|
"<input type=\"button\" class=\"wentiEdit\" title='执行到期' onclick=\"executionTrade('{0}')\" value=\"{1}\" />"
|
|
.template(rowObject.EncryptId, "执行到期");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return html;
|
|
}
|
|
|
|
function rowclick(id) {
|
|
|
|
}
|
|
|
|
function starttradeView(id, tradeType) {
|
|
main.open("查看交易", "/trade/tradeView/?enid={0}".template(id));
|
|
}
|
|
|
|
function reloadtrade() {
|
|
//重新加载
|
|
SearchClick();
|
|
$('#modal-edittrade').modal('hide');
|
|
}
|
|
|
|
function setGridPostData() {
|
|
var listGrid = $('#listGrid');
|
|
|
|
listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() });
|
|
listGrid.appendPostData({ ClientIds: $("#ClientId").val() });
|
|
listGrid.appendPostData({ AssetIds: $("#AssetId").val() });
|
|
listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() });
|
|
listGrid.appendPostData({ TraderIds: $("#TraderId").val() });
|
|
listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() });
|
|
listGrid.appendPostData({ VarietyId: $("#VarietyId").val() });
|
|
listGrid.appendPostData({ TradeDateStart: $("#DateFromTradeDate").val() });
|
|
listGrid.appendPostData({ TradeDateEnd: $("#DateToTradeDate").val() });
|
|
listGrid.appendPostData({ BuySell: $("#BuySell").val() });
|
|
listGrid.appendPostData({ OptionType: $("#OptionType").val() });
|
|
listGrid.appendPostData({ StartDateStart: $("#DateFromStartDate").val() });
|
|
listGrid.appendPostData({ StartDateEnd: $("#DateToStartDate").val() });
|
|
listGrid.appendPostData({ MaturityDateStart: $("#DateFromMaturityDate").val() });
|
|
listGrid.appendPostData({ MaturityDateEnd: $("#DateToMaturityDate").val() });
|
|
listGrid.appendPostData({ TradePrice: $("#TradePrice").val() });
|
|
listGrid.appendPostData({ TradeStatus: $("#TradeStatus").val() });
|
|
listGrid.appendPostData({ OptName: $("#OptName").val() });
|
|
listGrid.appendPostData({ ValidState: $("#ValidState").val() });
|
|
listGrid.appendPostData({ TradeTypes: $("#TradeTypes").val() });
|
|
listGrid.appendPostData({ Comments: $("#Comments").val() });
|
|
listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() });
|
|
listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() });
|
|
listGrid.appendPostData({ ExerciseMode: $("#ExerciseMode").val() });
|
|
listGrid.appendPostData({ TabIndex: page.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 exportTrade() {
|
|
var dateTemp = new Date().Format("yyyyMMddhhmmss");
|
|
var tabName = "";
|
|
if (page.tabIndexSelect === TradeTabIndexEnum.今日到期) {
|
|
tabName = "今日到期";
|
|
}
|
|
else if (page.tabIndexSelect === TradeTabIndexEnum.今日终止) {
|
|
tabName = "今日终止";
|
|
}
|
|
else if (page.tabIndexSelect === TradeTabIndexEnum.明日到期) {
|
|
tabName = "明日到期";
|
|
}
|
|
else {
|
|
tabName = "今日成交";
|
|
}
|
|
var fileName = "Trade_" + tabName + "_" + dateTemp;
|
|
main.toExcel("listGrid", fileName, "xls", null, " ,操作者,操作时间,操作", [{
|
|
colName: "标的代码",
|
|
formatter:
|
|
function (cellValue, options, rowObject) {
|
|
if (rowObject.TradeType === "合成价差期权") {
|
|
return rowObject.SyntheticUnderlyingTipsInfo;
|
|
}
|
|
return cellValue;
|
|
}
|
|
}]);
|
|
}
|
|
|
|
function downCsv(fileName, exStrr, fileExtension) {
|
|
if (!fileExtension) {
|
|
fileExtension = ".csv";
|
|
}
|
|
var isIE = navigator.userAgent.indexOf('MSIE') >= 0;
|
|
if (isIE) {
|
|
var strHTML = exStrr;
|
|
var winSave = window.open();
|
|
winSave.document.open("text", "utf-8");
|
|
winSave.document.write(strHTML);
|
|
winSave.document.execCommand("SaveAs", true, fileName + fileExtension);
|
|
winSave.close();
|
|
} else {
|
|
var mimeType = 'text/plain';
|
|
$('#createInvote').attr('download', fileName + fileExtension);
|
|
//\uFEFF bom
|
|
$('#createInvote').attr('href',
|
|
'data:' + mimeType + ';charset=utf-8,\uFEFF' + encodeURIComponent(exStrr));
|
|
document.getElementById('createInvote').click();
|
|
}
|
|
}
|
|
|
|
function tabSelect(tabIndex) {
|
|
$("#myTab").children().removeClass("active");
|
|
$("#tab" + tabIndex).addClass("active");
|
|
page.tabIndexSelect = tabIndex;
|
|
$("#Btn_BatchExpire").hide();
|
|
$("#tab1NotShow").hide();
|
|
$("#tab3_4NotShow").show();
|
|
if (tabIndex === TradeTabIndexEnum.今日到期 || tabIndex === TradeTabIndexEnum.明日到期) {
|
|
if (tabIndex === TradeTabIndexEnum.今日到期) {
|
|
$("#Btn_BatchExpire").show();
|
|
}
|
|
$("#DateFromExerciseDate").prop("disabled", true);
|
|
$("#DateToExerciseDate").prop("disabled", true);
|
|
//$("#VolTypesSpan").show();
|
|
|
|
|
|
} else {
|
|
$("#DateFromExerciseDate").prop("disabled", false);
|
|
$("#DateToExerciseDate").prop("disabled", false);
|
|
//$("#VolTypesSpan").hide();
|
|
}
|
|
|
|
if (tabIndex === TradeTabIndexEnum.今日终止) {
|
|
$("#tab1NotShow").show();
|
|
$("#tab3_4NotShow").show();
|
|
} else if (tabIndex === TradeTabIndexEnum.今日到期 || tabIndex === TradeTabIndexEnum.明日到期) {
|
|
$("#tab1NotShow").show();
|
|
$("#tab3_4NotShow").hide();
|
|
}
|
|
SearchClick(true);
|
|
}
|
|
|
|
//执行到期行权 无确认界面
|
|
function SetAsExpired(id) {
|
|
var ors = [];
|
|
if (id) {
|
|
ors.push(id);
|
|
} else {
|
|
var ggrid = jQuery('#listGrid');
|
|
var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow');
|
|
if (selectedIds.length > 0) {
|
|
for (var i = 0; i < selectedIds.length; i++) {
|
|
var or = ggrid.getRowData(selectedIds[i]).id;
|
|
ors.push(or);
|
|
}
|
|
}
|
|
}
|
|
|
|
//批量到期
|
|
main.confirm("确认批量执行到期吗?",
|
|
function () {
|
|
main.post("/trade/MultipleTradeExpireConfirm/", { tradeIds: ors }).done(function (res) {
|
|
//showmiddlemessage(res.msg);
|
|
reloadtrade();
|
|
});
|
|
});
|
|
}
|
|
|
|
//执行合约
|
|
function executionTrade(id) {
|
|
main.post("/trade_cash/checkEodPrice/", { enid: id }).done(function (res) {
|
|
var srcurl = "/trade_cash/executionTradeCash/?enid=" + id + "&isexpire=" + true;
|
|
main.open("执行到期", srcurl,
|
|
{
|
|
end: function () {
|
|
SearchClick(true);
|
|
},
|
|
area: ["1000px", "800px"]
|
|
});
|
|
});
|
|
}
|
|
|
|
function swapTrade(id) {
|
|
var title = "收益结算";
|
|
var srcurl = "/trade/tradeSwapUnwind/?enid=" + id + "&isswap=" + 1;
|
|
main.open(title, srcurl,
|
|
{
|
|
end: function () {
|
|
SearchClick(true);
|
|
}
|
|
});
|
|
}
|
|
|
|
//批量移除新增未确认的交易
|
|
function invalidUnconfirmedTrades() {
|
|
var selectedIds = $('#listGrid').jqGrid('getGridParam', 'selarrrow');
|
|
if (selectedIds.length < 1) {
|
|
main.message("请选择需删除的交易");
|
|
return;
|
|
}
|
|
main.confirmV2("确认要删除所选的'新增待确认'状态的交易?").done(function () {
|
|
main.post("/trade/AjaxInvalidTodayUnconfirmedTrades", { ids: selectedIds }).done(function () {
|
|
SearchClick(true);
|
|
});
|
|
});
|
|
} |