Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/risk/SubstandardTrade.js
T

654 lines
22 KiB
JavaScript

$(function () {
var PostData = { SubstandardType: $("#SubstandardType").val() };
$('#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;
}
);
// document.getElementById('createInvote2').click();
$(".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' };
grid = jQuery('#listGrid').jqGrid({
cmTemplate: {
width: 80,
align: 'center',
sortable: true
},
url: url,
prmNames: prmNames,
datatype: 'json',
multiselect: false,
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
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);
});
const tradeStatus = ["已到期", "已平仓", "已行权", "已执行"];
function getColModelDefault() {
var hideObj = { clientWidth: 160 };
let i = 0;
let colModelGrid = [
{
name: 'TradeStatus',
label: '交易状态',
index: 'TradeStatus',
sortIndex: i++,
width: 70,
align: 'center',
sortable: false
}, {
name: 'TradeNumber',
label: '交易编号',
index: 'TradeNumber',
sortIndex: i++,
width: 150,
align: 'center',
sortable: false,
formatter: ShowStructFormater
}, {
name: 'ClientName',
label: '交易对手方',
index: 'ClientName',
sortIndex: i++,
width: hideObj.clientWidth,
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',
cellattr: function (cellvalue, options, rowObject) {
if (rowObject.MetaDic.IsLockTradingDay === 'True') {
if (tradeStatus.contains(rowObject.TradeStatus)) {
return "style='background-color:gray;color:white;'";
}
else {
return "style='background-color: orange'";
}
}
}
}, {
name: 'ExerciseDate',
label: '到期日期',
index: 'ExerciseDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date',
cellattr: function (cellvalue, options, rowObject) {
if (rowObject.MetaDic.IsMinTradingDay === 'True') {
if (tradeStatus.contains(rowObject.TradeStatus)) {
return "style='background-color:gray;color:white;'";
}
else {
return "style='background-color: orange'";
}
}
}
}, {
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: 'InitialSpotPrice',
label: '期初标的价格',
index: 'InitialSpotPrice',
sortIndex: i++,
width: 85,
align: 'center',
sortable: false,
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: false,
formatter: StrikeFormatter,
cellattr: function (cellvalue, options, rowObject) {
if (rowObject.MetaDic.IsStrikeOffset === 'True') {
if (tradeStatus.contains(rowObject.TradeStatus)) {
return "style='background-color:gray;color:white;'";
}
else {
return "style='background-color: orange'";
}
}
}
}, {
name: 'TradeSinglePrice',
label: '权利金(成交)',
index: 'TradeSinglePrice',
sortIndex: i++,
width: 90,
align: 'center',
sortable: false,
formatter: TradeSinglePriceFormat
}, {
name: 'TradeOriginalAmount',
label: '成交数量',
index: 'TradeOriginalAmount',
sortIndex: i++,
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: 70,
align: 'center',
sortable: false,
formatter: otcformat.trading.notional
}, {
name: 'OriginalStockEqvNotionalV2',
label: '名义本金',
index: 'OriginalStockEqvNotionalV2',
sortIndex: i++,
width: 70,
align: 'center',
sortable: false,
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'TradePrice',
label: '成交金额',
index: 'TradePrice',
sortIndex: i++,
width: 90,
align: 'center',
sortable: false,
formatter: TradePriceFormat
}, {
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.Commission',
label: '销售提成',
index: 'SalesCommission.Commission',
sortIndex: i++,
width: 90,
align: 'center',
sortable: false,
formatter: CommissionFormatter
}
];
colModelGrid.push({
name: 'UnderlyingPrice',
label: '最新标的价格',
index: 'UnderlyingPrice',
sortIndex: i++,
width: 65,
align: 'center',
sortable: false,
formatter: otcformat.trading.umprice
});
return tradeHelper.getAmountToNotional(colModelGrid);
}
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 || '', rowObject.SyntheticUnderlyingTipsInfo);
}
return cellValue || '';
}
function StrikeFormatter(cellValue, options, rowObject) {
if (rowObject.TradeType === "自定义交易") {
return "";
}
else if (rowObject.TradeType === "收益互换") {
return "--";
}
if (rowObject.Strike) {
if (rowObject.IsMoneynessOption === "是") {
return otcformat.trading.premiumRateP(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(cellValue);
}
}
function TradePriceFormat(cellValue, options, rowObject) {
return otcformat.trading.tradePrice(cellValue * (rowObject.BuySell === "买入" || rowObject.BuySell === "多头开仓" || rowObject.BuySell === "空头平仓" ? -1 : 1));
}
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);
}
}
var duichong_TradeType = ["商品期货", "商品现货", "股票"];
function gridComplete() {
var jgrid = $(this);
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover", container: "body" });
main.setcolumnChooser(jgrid, page.configcolumn_data_substandard);
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();
var opt = {
url: "/risk/CurrentSubstandardTradeRule",
dataType: "json",
success: function (data) {
if (data && data.success) {
var text = "";
//"合约期限30天以下、行权价偏离标的资产市场价格超过20%的合约"
if (data.obj.MinTradingDay) {
text += "合约期限" + data.obj.MinTradingDay + "天以下(到期日期高亮)、";
}
if (data.obj.LockTradingDay) {
text += "存续期" + data.obj.LockTradingDay + "天以内(成交日期高亮)、";
}
if (data.obj.StrikeOffset) {
text += "行权价偏离标的资产市场价格超过" + otcformat.fixed2P(data.obj.StrikeOffset) + "(执行价格高亮)";
}
if (text.length > 0) {
if (text.endsWith('、')) {
text = text.substring(0, text.length - 1);
}
text += '的合约(高亮时,存续交易为橘色,已了结交易为灰色)';
}
$("#ruleTip").text(text);
}
}
};
main.ajax(opt);
}
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 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: ['1260px', '100%'], scrollbar: false });
}
}
function reloadtrade() {
//重新加载
SearchClick();
}
function selAllGrid() {
var checkAll = $("#CheckboxAll").prop("checked");
$("#cb_listGrid").click();
var cbGridClick = $("#cb_listGrid").prop("checked");
if (checkAll !== cbGridClick) {
$("#cb_listGrid").click();
}
}
function UpdatePostData() {
var listGrid = $('#listGrid');
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({ 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() ? "" : $("#TradeStatus").val().join(",");
listGrid.appendPostData({ TradeStatus: reqTradeStatus });
listGrid.appendPostData({ TradeStatus: reqTradeStatus });
listGrid.appendPostData({ OptIds: !$("#OptIds").val() ? "" : $("#OptIds").val().join(",") });
listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() });
listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() });
listGrid.appendPostData({ SubstandardType: $("#SubstandardType").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() });
}
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 showcolumnChooser() {
var jgrid = jQuery('#listGrid');
main.showcolumnChooser(jgrid, page.configcolumn_data_substandard);
}
function getColModel() {
return getColModelDefault();
}