1962 lines
71 KiB
JavaScript
1962 lines
71 KiB
JavaScript
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 "<a href='{0}' style='text-decoration:underline;' target='_blank'>{0}</a>".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 = '<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(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 = "<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 = $("#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 = "<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 = $("#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 = "<span title='{0}'>{1}<span>";
|
|
|
|
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 = "<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 = $("#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 = "<td>标的代码</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.UnderlyingCode);
|
|
var trstrike = "<td>执行价格</td>";
|
|
var tracturalstrike = "";
|
|
if (rowObject.IsMoneynessOption === "是") {
|
|
tracturalstrike = "<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, otcformat.trading.StockEqvNotional(new Number(rowObject.StockEqvNotional) / 10000) + "万");
|
|
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 === "是" ? (otcformat.trading.premiumRateP(structTrades[i].Strike)) : otcformat.trading.umprice(structTrades[i].Strike));
|
|
if (rowObject.IsMoneynessOption === "是") {
|
|
tracturalstrike += "<td>{0}</td>".template(otcformat.trading.umprice(structTrades[i].Strike * (rowObject.SpotPrice || rowObject.InitialSpotPrice)));
|
|
}
|
|
trbuysell += "<td>{0}</td>".template(structTrades[i].BuySell);
|
|
}
|
|
}
|
|
trhtml = "<tr>{0}</tr>".template(trcode);
|
|
trhtml += "<tr>{0}</tr>".template(trstrike);
|
|
if (rowObject.IsMoneynessOption === "是") {
|
|
trhtml += "<tr>{0}</tr>".template(tracturalstrike);
|
|
}
|
|
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) {
|
|
if (rowObject.TradeType === "结构化交易") {
|
|
//return "<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
|
|
// .template(cellValue || '', setStructTable(rowObject));
|
|
}
|
|
else if (rowObject.TradeType === "合成价差期权") {
|
|
return "<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
|
|
.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 `<a class="yl-grid-plus" href="#" ondblclick="event.stopPropagation()" onclick="toggleExpand('${options.rowId}')"><i class="fa fa-plus"></i></a>`;
|
|
}
|
|
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 = "<input type=\"button\" value=\"删除\" class=\"btn-warning\" onclick=\"deletetrade('" +
|
|
rowObject.EncryptId +
|
|
"');\" />";
|
|
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 = "<input style=\"{2}\" type=\"button\" class=\"wentiEdit\" title='{3}' onclick=\"starttradeView('{0}','{1}')\" value=\"查看\" />"
|
|
.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(/<br\/>/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 `<a class="yl-grid-plus" href="#" ondblclick="event.stopPropagation()" onclick="toggleTcIdExpand('${options.rowId}')"><i class="fa fa-plus"></i></a>`;
|
|
}
|
|
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 = '<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;
|
|
}
|
|
});
|
|
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 });
|
|
}
|
|
|