Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/trade/forwardtradePreEndList.js
T
2024-05-09 14:06:26 +08:00

600 lines
22 KiB
JavaScript

function getColModelGrid() {
var i = 0;
var colModelGrid = [
{
name: 'trade.id',
label: 'trade.id',
index: 'trade.id',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'trade.IsMoneynessOption',
label: 'trade.IsMoneynessOption',
index: 'trade.IsMoneynessOption',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'trade.EncryptId',
label: 'trade.EncryptId',
index: 'trade.EncryptId',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'trade.UnderlyingId',
label: 'trade.UnderlyingId',
index: 'trade.UnderlyingId',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'trade.TradeNumber',
label: '交易编号',
index: 'trade.TradeNumber',
sortIndex: i++,
width: 150,
align: 'center',
formatter: ShowStructFormater
}, {
name: 'trade.ClientName',
label: '客户名称',
index: 'trade.ClientName',
sortIndex: i++,
width: 150,
align: 'center'
}, {
name: 'TradeType',
label: '结构类型',
index: 'TradeType',
sortIndex: i++,
width: 70,
align: 'center', sortable: false,
formatter: function (cellvalue, options, rowObject) {
return rowObject.trade.StructureType && rowObject.trade.IsGroup != 2 ? rowObject.trade.StructureType : rowObject.TradeType;
}
}, {
name: 'trade.TradeStatus',
label: '交易状态',
index: 'trade.TradeStatus',
sortIndex: i++,
width: 100,
align: 'center',
formatter: tradeStatusFormat
}, {
name: 'trade_cash.UnwindTradeAmount',
label: '提前终止数量',
index: 'trade_cash.UnwindTradeAmount',
width: 100,
align: 'right',
sortable: false,
sortIndex: i++,
formatter: unwindTradeAmountFormat
}, {
name: 'trade_cash.FinalPrice',
label: '终止时标的价格',
index: 'trade_cash.FinalPrice',
width: 120,
align: 'right',
sortable: false,
sortIndex: i++,
formatter: 'number'
}, {
name: 'trade_cash.UnwindPrice',
label: '提前终止价格',
index: 'trade_cash.UnwindPrice',
width: 150,
align: 'right',
sortable: false,
sortIndex: i++,
formatter: unwindPriceFormat
}, {
name: 'WinLoss',
label: '实现盈亏',
index: 'WinLoss',
width: 100,
align: 'right',
sortable: false,
sortIndex: i++,
formatter: winLossFormat
}, {
name: 'trade.TradeDate',
label: '交易日期',
index: 'trade.TradeDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date'
}, {
name: 'trade.ExerciseDate',
label: '到期日期',
index: 'trade.ExerciseDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date'
}, {
name: 'trade.BuySell',
label: '交易方向',
index: 'trade.BuySell',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'trade.OriginalNotional',
label: '交易数量',
index: 'trade.OriginalNotional',
sortIndex: i++,
width: 70,
align: 'right',
formatter: function (cellValue, options, rowObject) {
return page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * rowObject.trade.TradeOriginalAmount : rowObject.trade.TradeOriginalAmount;
}
}, {
name: 'trade.TradeAmount',
label: '持仓数量',
index: 'trade.TradeAmount',
sortIndex: i++,
width: 70,
align: 'right',
formatter: TradeAmountFormat
},
{
name: 'trade.TradeAmount',
label: '累计已了结数量',
index: 'trade.TradeAmount',
sortIndex: i++,
width: 70,
align: 'right',
hidden: ylotc.Company === "国泰君安",
optionHide: ylotc.Company === "国泰君安",
formatter: unwindTradeAmountFormatA
}, {
name: 'trade.UnderlyingCode',
label: '标的代码',
index: 'trade.UnderlyingCode',
sortIndex: i++,
width: 60,
align: 'center',
formatter: ShowStructFormater
}, {
name: 'trade.ExerciseMode',
label: '行权方式',
index: 'trade.ExerciseMode',
sortIndex: i++,
width: 70,
align: 'left',
formatter: function (cellValue, options, rowObject) {
return rowObject.trade.ExerciseModeCn;
}
}, {
name: 'trade.OptionType',
label: '多空方向',
index: 'trade.OptionType',
sortIndex: i++,
width: 70,
align: 'center',
formatter: function (cellvalue, options, rowObject) {
if (rowObject.trade.OptionType != "") {
return rowObject.trade.OptionType == "看涨" ? "多头" : "空头";
}
}
}, {
name: 'trade.Strike',
label: '执行价格',
index: 'trade.Strike',
sortIndex: i++,
width: 90,
align: 'right',
formatter: 'number'
}, {
name: 'trade.InitialSpotPrice',
label: '标的期初价格',
index: 'trade.InitialSpotPrice',
sortIndex: i++,
width: 90,
align: 'right', sortable: false,
formatter: initialSpotPriceFormat
}, {
name: 'trade.trade_forward.OpenCommission',
label: '开仓费用',
index: 'trade.trade_forward.OpenCommission',
sortIndex: i++,
width: 90,
align: 'right',
sortable: false,
formatter: ThreeFormat,
}, {
name: 'trade.Comments',
label: '备注',
index: 'trade.Comments',
sortIndex: i++,
width: 140,
align: 'left'
}, {
name: 'trade.CreatorName',
label: '创建者',
index: 'trade.CreatorName',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'trade.OptName',
label: '操作者',
index: 'trade.OptName',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'trade.OptDate',
label: '操作时间',
index: 'trade.OptDate',
sortIndex: i++,
width: 90,
align: 'center'
}, {
name: '',
label: '操作',
index: '',
sortIndex: i++,
align: 'center',
width: 200,
formatter: showToolName
}
];
return colModelGrid;
}
function tabSelect() {
$("#myTab").children().removeClass("active");
$("#tab" + page.tabIndex).addClass("active");
$("#Btn_BatchExpire").hide();
$("#tab1NotShow").hide();
$("#tab3_4NotShow").show();
var tabName = page.tabName;
if (tabName === "当日到期" || tabName === "明日到期") {
if (tabName === "当日到期") {
$("#Btn_BatchExpire").show();
}
$("#DateFromExerciseDate").prop("disabled", true);
$("#DateToExerciseDate").prop("disabled", true);
} else {
$("#DateFromExerciseDate").prop("disabled", false);
$("#DateToExerciseDate").prop("disabled", false);
}
if (tabName === "当日提前终止") {
$("#tab1NotShow").show();
$("#tab3_4NotShow").show();
} else if (tabName === "当日到期" || tabName === "明日到期") {
$("#tab1NotShow").show();
$("#tab3_4NotShow").hide();
}
SearchClick(true);
}
function exportTrade() {
var dateTemp = new Date().Format("yyyyMMddhhmmss");
var fileName = "Trade_" + page.tabName + "_" + dateTemp;
main.toExcel("listGrid", fileName, "xls", null, "操作者,操作时间,操作");
}
var g_grid = {};
$(function () {
tabSelect();
showTabTotalCount();
$("#Btn_BatchExpire").hide();
$("#tab1NotShow").hide();
$("#tab3_4NotShow").show();
var PostData = {};
PostData.ValueDateStart = page.valueDate;
PostData.ValueDateEnd = page.valueDate;
PostData.TabIndex = page.tabIndex;
PostData.IsHistoryWithUnconfirmed = true;
PostData.IsForward = true;
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true
});
var colModelGrid = getColModelGrid();
grid = jQuery('#listGrid').jqGrid({
url: "/clientbalance/GetPreEndList/forward",
datatype: 'json',
multiselect: true,
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
postData: PostData,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
ondblClickRow: rowdblclick,
rowNum: 20,
rowList: [20, 30, 50, 200, 10000],
footerrow: false,
loadComplete: gridComplete,
grouping: true
});
main.isSearching = true;
g_grid = jQuery('#listGrid');
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.OtcForward);
$(window).resize();
});
function showTabTotalCount() {
main.post("/forwardtrade/tradeCountsOnValueDateQuery").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["trade.EncryptId"], rowData["trade.TradeType"]);
}
function setStructTable(rowObject) {
structTrades = rowObject.SubTrades;
var trhtml = "";
var trcode = "<td>标的代码</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.trade.UnderlyingCode);
var trstrike = "<td>执行价格</td>";
var trbuysell = "<td>买卖方向</td>";
var trvarity = "<td>结构类型</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.trade.StructureType);
var trstockeqvnotional = "<td>名义本金</td><td colspan='{0}'>{1}</td>".template(structTrades.length, (new Number(rowObject.trade.StockEqvNotional) / 10000).toFixed(2) + "万");
var trmaturedate = "<td>到期日期</td><td colspan='{0}'>{1}</td>".template(structTrades.length, moment(rowObject.trade.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);
return "<table class='table'>{0}<table>".template(trhtml);
}
function ShowStructFormater(cellValue, options, rowObject) {
var html;
//if (rowObject.trade.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.trade.TradeType === "合成价差期权") {
html =
"<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
.template(cellValue || '', rowObject.trade.SyntheticUnderlyingTipsInfo);
return html;
}
return cellValue || '';
}
function NotionalFormat(cellValue, options, rowObject) {
return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 : cellValue;
}
function TradeAmountFormat(cellValue, options, rowObject) {
if (ylotc.Company === "国泰君安") {
return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 :
(page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * cellValue : cellValue);
} else {
return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" ? 0 :
(page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount)
: (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount));
}
}
function TradeAmountFormatA(cellValue, options, rowObject) {
return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" || rowObject.trade.TradeStatus === "已平仓" ? 0 :
(page.IsUseDisplayNotional ? (rowObject.trade.TradeOriginalAmount - (rowObject.trade.CountRatio || 1) * (rowObject.trade.TradeOriginalAmount - rowObject.trade_cash.UnwindTradeAmount)) :
(rowObject.trade.TradeOriginalAmount - rowObject.trade.TradeOriginalAmount - rowObject.trade_cash.UnwindTradeAmount));
}
function unwindTradeAmountFormatA(cellValue, options, rowObject) {
return rowObject.trade.TradeStatus === "已执行" || rowObject.trade.TradeStatus === "已到期" ? 0 :
(page.IsUseDisplayNotional ? (rowObject.trade.CountRatio || 1) * (rowObject.trade.TradeOriginalAmount - (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount))
: (rowObject.trade.TradeOriginalAmount - (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindTradeAmount)));
}
function unwindTradeAmountFormat(cellValue, options, rowObject) {
return rowObject.trade_cash.Action === "系统操作-行权费" ?
main.formatNumber(page.IsUseDisplayNotional ? rowObject.trade_cash.TradeAmount * (rowObject.trade.CountRatio || 1) : rowObject.trade_cash.TradeAmount, 2) :
main.formatNumber(page.IsUseDisplayNotional ? rowObject.trade_cash.UnwindTradeAmount * (rowObject.trade.CountRatio || 1) : rowObject.trade_cash.UnwindTradeAmount, 2);
}
function unwindPriceFormat(cellValue, options, rowObject) {
if (rowObject.IsUsePremiumRate) {
return rowObject.trade_cash.Action == "系统操作-行权费" ?
otcformat.trading.tradeSinglePrice(rowObject.trade_cash.UnwindPrice)
: otcformat.trading.premiumRateP(rowObject.trade_cash.UnwindPricePercentRate);
}
else {
return otcformat.trading.tradeSinglePrice(rowObject.trade_cash.UnwindPrice);
}
}
function doubleFormat(cellValue, options, rowObject) {
return cellValue === null || cellValue === undefined ? "0.00" : numeral(cellValue).format("0,0.00") === "NaN" ? "0.00" : numeral(cellValue).format("0,0.00");
}
//盈亏从机构方角度看,需要去反(源数据是和盯市报告一样,以客户角度来看的)
function winLossFormat(cellValue, options, rowObject) {
return cellValue === null || cellValue === undefined ? "0.000" : numeral(cellValue).format("0,0.000") === "NaN" ? "0.000" : numeral(-cellValue).format("0,0.000");
}
function tradeStatusFormat(cellValue, options, rowObject) {
return (rowObject.trade_cash.Action === "系统操作-行权费" || ((rowObject.trade.TradeStatus === "行权待复核" || rowObject.trade.TradeStatus === "平仓待复核") && rowObject.trade_cash.ValidState === "InValid")) ? rowObject.trade.TradeStatus : (rowObject.trade_cash.Notional - rowObject.trade_cash.UnwindNotional > 1e-5 ? "部分平仓" : "已平仓");
}
function PercentFormat(cellValue, options, rowObject) {
if (cellValue) {
var num = new Number(cellValue) * 100;
return num.toFixed(2) + "%";
} else {
return "0.00%";
}
}
function gridComplete() {
var jgrid = $(this);
var newHeight = $(window).height() - 400;
$(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;");
$('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll();
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
main.setcolumnChooser(jgrid, page.configcolumn_name);
}
function customButton(cellValue, options, rowObject) {
var imageHtml = "<input type=\"button\" value=\"删除\" class=\"btn-warning\" onclick=\"deletetrade('" +
rowObject.trade.EncryptId +
"');\" />";
return imageHtml;
}
function downloadFiles(files) {
if (files instanceof Array) {
if (files.length > 0) {
$.each(files, function (index, val) {
val && setTimeout(function () { window.open(val); }, 500);
});
}
} else {
files && window.open(files);
}
}
function showToolName(cellValue, options, rowObject) {
var html =
"<input type=\"button\" class=\"wentiEdit\" title='查看交易信息' onclick=\"starttradeView('{0}','{2}')\" value=\"{1}\" />"
.template(rowObject.trade.EncryptId, "查看", rowObject.trade.TradeType);
return html;
}
function initialSpotPriceFormat(cellValue, options, rowObject) {
return rowObject.trade.InitialSpotPrice.toFixed(2) || rowObject.trade.SpotPrice.toFixed(2);
}
function ThreeFormat(cellValue, options, rowObject) {
return cellValue ? numeral(cellValue).format("0.000") : "0.000";
}
function rowclick(id) { }
function starttradeView(id, tradeType) {
main.open("查看交易", "/forwardtrade/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({ TraderIds: $("#TraderId").val() });
listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() });
listGrid.appendPostData({ VarietyIds: $("#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({ TradeStatus: $("#TradeStatus").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.tabIndex });
}
function SearchClick(isSearchclick) {
setGridPostData();
if (isSearchclick) {
//点击搜索时默认第一页
$('#listGrid').jqGrid('setGridParam', { page: 1 });
}
$('#listGrid').trigger('reloadGrid');
}
function showcolumnChooser() {
var jgrid = jQuery('#listGrid');
main.showcolumnChooser(jgrid, page.configcolumn_name);
}
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();
}
}