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

671 lines
22 KiB
JavaScript

const ConsTradeStatus = {
已执行: '已执行',
已到期: '已到期',
已平仓: '已平仓'
};
const TradeTabIndexEnum = {
今日成交: 1,
今日提前终止: 2,
今日到期: 3,
明日到期: 4,
全部: 13
};
const g_ConfirmedState = ["已到期", "已执行", "已平仓"];
var hideObj = { clientWidth: 160 };
var i = 0;
function GetGridColModes() {
return [
{
name: 'id',
label: 'id',
index: 'id',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'EncryptId',
label: 'EncryptId',
index: 'EncryptId',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'UnderlyingId',
label: 'UnderlyingId',
index: 'UnderlyingId',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'IsMoneynessOption',
label: 'IsMoneynessOption',
index: 'IsMoneynessOption',
sortIndex: i++,
width: 70,
align: 'center',
hidden: true,
optionHide: true
}
, {
name: 'OptDate',
label: '操作时间',
index: 'OptDate',
sortIndex: i++,
width: 160,
align: 'center',
formatter: 'datetime'
}, {
name: 'OptName',
label: '操作者',
index: 'OptName',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'CreatorName',
label: '创建者',
index: 'CreatorName',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'Comments',
label: '备注',
index: 'Comments',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'GroupName',
label: '分组名',
index: 'GroupName', hidden: true, optionhide: true,
sortIndex: i++,
width: 60
}
, {
name: 'TradeType',
label: '结构类型',
index: 'TradeType',
sortIndex: i++,
width: 70,
align: 'center',
formatter: function (cellvalue, options, rowObject) {
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType;
}
}, {
name: 'AssetBookName',
label: '簿记账户',
index: 'AssetBookName',
sortIndex: i++,
width: 110,
align: 'center'
}, {
name: 'TraderName',
label: '交易员',
index: 'TraderName',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'TradeStatus',
label: '交易状态',
index: 'TradeStatus',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'TradeNumber',
label: '交易编号',
index: 'TradeNumber',
sortIndex: i++,
width: 150,
align: 'center'
}, {
name: 'ClientName',
label: '客户名称',
index: 'ClientName',
sortIndex: i++,
width: hideObj.clientWidth,
align: 'center'
}, {
name: 'BuySell',
label: '交易方向',
index: 'BuySell',
sortIndex: i++,
width: 70,
align: 'center'
}, {
name: 'TradeDate',
label: '交易日期',
index: 'TradeDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date'
}, {
name: 'StartDate',
label: '开始日期', hidden: true,
index: 'StartDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date'
}, {
name: 'ExerciseDate',
label: '到期日期',
index: 'ExerciseDate',
sortIndex: i++,
width: 90,
align: 'center',
formatter: 'date'
}, {
name: 'UnderlyingCode',
label: '标的代码',
index: 'UnderlyingCode',
sortIndex: i++,
width: 60,
align: 'center'
}, {
name: 'InitialSpotPrice',
label: '期初标的价格',
index: 'InitialSpotPrice', hidden: true, optionhide: true,
sortIndex: i++,
width: 85,
align: 'center',
formatter: DoubleFormat
}, {
name: 'MaturityDate',
label: '标的到期日',
index: 'MaturityDate',
sortIndex: i++,
width: 90,
align: 'center',
//formatter: 'date'
//如果标的资产类型为Stock,则将该列值置空
formatter: function (cellValue, options, rowObject) {
if (rowObject.UnderlyingInstrumentType === "Stock")
return "";
else {
if (rowObject.MaturityDate == null)
return "";
else
return (rowObject.MaturityDate + "").substring(0, 10);
}
}
}, {
name: 'ExerciseModeCn',
label: '行权方式', hidden: true,
index: 'ExerciseModeCn',
sortIndex: i++,
width: 90,
align: 'center'
}, {
name: 'OptionType',
label: '多空方向',
index: 'OptionType',
sortIndex: i++,
width: 70,
align: 'center',
formatter: function (cellvalue, options, rowObject) {
if (rowObject.OptionType != "") {
return rowObject.OptionType == "看涨" ? "多头" : "空头";
}
}
}, {
name: 'Strike',
label: '交割价格',
index: 'Strike',
sortIndex: i++,
width: 90,
align: 'center',
formatter: StrikeFormatter
}, {
name: 'TradeOriginalAmount',
label: '交易数量',
index: 'TradeOriginalAmount',
sortIndex: i++,
width: 70,
align: 'center', sortable: false,
formatter: tradeHelper.getNotionalFormatByDouble
}, {
name: 'trade_forward.OpenCommission',
label: '开仓费用',
index: 'OpenCommission',
sortIndex: i++,
width: 90,
align: 'center', sortable: false,
formatter: DoubleFormat
}, {
name: 'OriginalStockEqvNotional',
label: '名义本金', sortable: false,
sortIndex: i++,
width: 70,
align: 'center',
formatter: otcformat.trading.StockEqvNotional
}, {
name: 'TotalOpenCommission',
label: '开仓总费用', sortable: false,
index: 'TotalOpenCommission',
sortIndex: i++,
width: 90,
align: 'center',
formatter: function (cellvalue, options, rowObject) {
if (!rowObject.TradePrice) {
return "0.00";
}
var num = rowObject.TradePrice;
return num.toFixed(2);
}
}, {
name: 'FinalPrice',
label: '期末价格',
index: 'FinalPrice',
sortIndex: i++,
width: 85,
align: 'center', hidden: true,
formatter: DoubleFormat
}, {
name: 'PairTrade',
label: 'PairTrade',
index: 'PairTrade',
sortIndex: i++,
align: 'center',
hidden: true,
optionHide: true
}, {
name: 'SyntheticUnderlyingTipsInfo',
label: 'SyntheticUnderlyingTipsInfo',
index: 'SyntheticUnderlyingTipsInfo',
sortIndex: i++,
align: 'center',
hidden: true,
optionHide: true
}
];
}
function StrikeFormatter(cellValue, options, rowObject) {
var num = new Number(rowObject.Strike);
return num.toFixed(2);
}
function DoubleFormat(cellValue, options, rowObject) {
return !cellValue ? "0.00" : cellValue.toFixed(2);
}
$(function () {
$("#Btn_BatchExpire").hide();
$("#tab1NotShow").hide();
$("#tab3_4NotShow").show();
var PostData = {};
PostData.ValidState = $("#ValidState").val();
PostData.TabIndex = tabIndexSelect;
var tradetype = ["远期"];
PostData.TradeTypes = tradetype;
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true
});
colModelGrid = GetGridColModes();
grid = jQuery('#listGrid').jqGrid({
url: "/ForwardTrade/tradeOnValueDateQuery",
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
});
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);
tabSelect(tabIndexSelect);
showTabTotalCount();
$(window).resize();
});
function showTabTotalCount() {
main.post("/ForwardTrade/tradeCountsOnValueDateQuery", null, { waitMe: false }).done(function (data) {
for (var i in data) {
$(`#tab${i}`).find("a").attr("title", `总数${data[i]}笔`);
}
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
});
}
function rowdblclick(rowid) {
var rowData = $(this).getRowData(rowid);
starttradeView(rowData.EncryptId, rowData.TradeType);
}
function gridComplete() {
var jgrid = $(this);
var rowIds = jgrid.jqGrid('getDataIDs');
var newHeight = $(window).height() - 400;
$(".ui-jqgrid .ui-jqgrid-bdiv").css("cssText", "height: " + newHeight + "px!important;");
$('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll();
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
var columnKey = "";
if (tabIndexSelect === TradeTabIndexEnum.今日成交) {
columnKey = page.configcolumn_data.当日成交;
}
else if (tabIndexSelect === TradeTabIndexEnum.今日到期) {
columnKey = page.configcolumn_data.今日到期;
}
else if (tabIndexSelect === TradeTabIndexEnum.明日到期) {
columnKey = page.configcolumn_data.明日到期;
}
main.setcolumnChooser(jgrid, columnKey);
}
function downloadFiles(files) {
if (files instanceof Array) {
if (files.length <= 0) {
return;
}
$.each(files,
function (index, val) {
val && setTimeout(function () { window.open(val); }, 500);
});
} else {
files && window.open(files);
}
}
function confirmAllSelect() {
var selectedIds = $('#listGrid').jqGrid('getGridParam', 'selarrrow');
if (selectedIds.length < 1) {
return main.message("请选择需确认的交易");
}
var confirmFunc = function (additionalProcessing, id, useRecall) {
var ors = [];
if (id) {
ors.push(id);
} else {
for (var i = 0; i < selectedIds.length; i++) {
ors.push(selectedIds[i]);
}
}
let pData = { tradeIds: ors, additionalProcessing: additionalProcessing };
var ajaxopt = {
type: "Post",
url: "/ForwardTrade/tradeConfirm",
data: pData,
success: function (data) {
//错误是打印错误提示
if (!data.success) {
main.alert(data.msg + "\r\n批量操作已终止");
if (reloadtrade) {
reloadtrade();
}
return;
}
if (data.obj && data.obj.proccessType === "AdditionalProcessing") {
if (data.obj.TrialDataId) {
var layerSetting = {
type: 2,
title: "提示",
shadeClose: false,
shade: 0.4,
area: ['800px', '500px'],
content: "/trade/showQuotaTrial?id=" + data.obj.TrialDataId,
yes: function (index) {
var obj = window["layui-layer-iframe" + index].page;
if (obj.IsTF) {
if (obj.Data.Remark && obj.Data.Remark.length > 0) {
main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) {
if (!res || !res.success) {
main.message(res.msg);
}
});
confirmFunc("LackOfMoney", obj.Data.TradeId, true);
} else {
main.message("必须填写说明内容,才可以录入交易");
return;
}
} else {
if (obj.Data.Remark && obj.Data.Remark.length > 0) {
main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) {
if (!res || !res.success) {
main.message(res.msg);
}
});
}
confirmFunc("LackOfMoney", obj.Data.TradeId, true);
}
(parent || window).layer.closeAll();
},
cancel: function () {
if (window.parent && window.parent.reloadtrade) {
window.parent.reloadtrade();
}
(parent || window).layer.closeAll();
}
};
if (data.obj.type === "LackOfMoney") {
layerSetting.btn = [page.buttonStr, '取消'];
}
// 只展示“资金状况”的情况
if (data.obj.typecode === "FundStatus") {
layerSetting.btn = ["确认", '取消'];
}
layer.open(layerSetting);
}
else {
if (data.obj.message) {
main.message(data.obj.message);
}
}
return;
}
if (useRecall) {
confirmFunc();
return;
} else {
main.message(data.msg);
}
if (generateAmendDoc && data.obj && data.obj.generateChangeSuccess) {
main.downloadFiles(data.obj.url);
}
if (needSendChangeEmail && data.obj && data.obj.generateChangeSuccess) {
main.confirm("确认发送变更确认书?",
function () {
main.post("/ForwardTrade/SendChangeConfirmEmails", { tradeIds: tradeIds })
.done(function (data) {
if (data.success) {
main.message("发送成功");
} else {
main.message(data.msg);
}
});
});
}
SearchClick(true);
},
beforeSend: function () {
main.waitMe(true);
},
complete: function () {
main.waitMe(false);
},
error: function (msg) {
main.message(msg);
}
};
$.ajax(ajaxopt);
}
///批量结算
main.confirm("确认所有选中交易?", confirmFunc);
}
function 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({ AssetIdGroupList: $("#GroupId").val() });
listGrid.appendPostData({ TraderIds: $("#TraderId").val() });
listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() });
listGrid.appendPostData({ BuySell: $("#BuySell").val() });
listGrid.appendPostData({ OptionType: $("#OptionType").val() });
listGrid.appendPostData({ TradeStatus: $("#TradeStatus").val() });
listGrid.appendPostData({ TabIndex: tabIndexSelect });
listGrid.appendPostData({ TradeTypes: ["远期"] });
}
function SearchClick(isSearchclick) {
setGridPostData();
if (isSearchclick) {
//点击搜索时默认第一页
$('#listGrid').jqGrid('setGridParam', { page: 1 });
}
main.isSearching = true;
$('#listGrid').trigger('reloadGrid');
}
function showcolumnChooser() {
var jgrid = jQuery('#listGrid');
var columnKey = "";
if (tabIndexSelect === TradeTabIndexEnum.今日成交) {
columnKey = page.configcolumn_data.当日成交;
}
else if (tabIndexSelect === TradeTabIndexEnum.今日到期) {
columnKey = page.configcolumn_data.今日到期;
}
else if (tabIndexSelect === TradeTabIndexEnum.明日到期) {
columnKey = page.configcolumn_data.明日到期;
}
main.showcolumnChooser(jgrid, columnKey);
}
function exportTrade() {
var dateTemp = new Date().Format("yyyyMMddhhmmss");
var tabName = "";
if (tabIndexSelect === TradeTabIndexEnum.今日到期) {
tabName = "今日到期";
}
else if (tabIndexSelect === TradeTabIndexEnum.今日终止) {
tabName = "今日提前终止";
}
else if (tabIndexSelect === TradeTabIndexEnum.明日到期) {
tabName = "明日到期";
}
else {
tabName = "今日成交";
}
var fileName = "Trade_" + tabName + "_" + dateTemp;
main.toExcel("listGrid", fileName, "xls", null, "操作者,操作时间,操作");
}
function downCsv(fileName, exStrr, fileExtension) {
if (!fileExtension) {
fileExtension = ".csv";
}
var isIE = navigator.userAgent.indexOf('MSIE') >= 0;
if (isIE) {
var strHTML = exStrr;
var winSave = window.open();
winSave.document.open("text", "utf-8");
winSave.document.write(strHTML);
winSave.document.execCommand("SaveAs", true, fileName + fileExtension);
winSave.close();
} else {
var mimeType = 'text/plain';
$('#createInvote').attr('download', fileName + fileExtension);
//\uFEFF bom
$('#createInvote').attr('href',
'data:' + mimeType + ';charset=utf-8,\uFEFF' + encodeURIComponent(exStrr));
document.getElementById('createInvote').click();
}
}
function tabSelect(tabIndex) {
$("#myTab").children().removeClass("active");
$("#tab" + tabIndex).addClass("active");
tabIndexSelect = tabIndex;
$("#Btn_BatchExpire").hide();
$("#tab1NotShow").hide();
$("#tab3_4NotShow").show();
if (tabIndex === TradeTabIndexEnum.今日到期 || tabIndex === TradeTabIndexEnum.明日到期) {
if (tabIndex === TradeTabIndexEnum.今日到期) {
$("#Btn_BatchExpire").show();
}
$("#DateFromExerciseDate").prop("disabled", true);
$("#DateToExerciseDate").prop("disabled", true);
} else {
$("#DateFromExerciseDate").prop("disabled", false);
$("#DateToExerciseDate").prop("disabled", false);
}
if (tabIndex === TradeTabIndexEnum.今日终止) {
$("#tab1NotShow").show();
$("#tab3_4NotShow").show();
} else if (tabIndex === TradeTabIndexEnum.今日到期 || tabIndex === TradeTabIndexEnum.明日到期) {
$("#tab1NotShow").show();
$("#tab3_4NotShow").hide();
}
SearchClick(true);
}