Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/scenario/tradeScenario.js
T
2026-07-28 14:29:43 +08:00

276 lines
9.6 KiB
JavaScript

function starttradeView(id) {
var srcurl = "/trade/tradeView/?enid=" + id;
main.open("查看交易", srcurl, { area: ['1260px', '800px'] });
}
const colModelGrid = (function () {
function showToolName(cellValue, options, rowObject) {
if (rowObject.TradeEncryptId) {
return "<input type=\"button\" class=\"wentiEdit\" title='查看交易信息' onclick=\"starttradeView('{0}')\" value=\"{1}\" />".template(rowObject.TradeEncryptId, "查看");
}
return "";
}
function StrikeFormatter(cellValue, options, rowObject) {
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 0;
}
else {
return "";
}
}
}
var col = [
{
name: '', label: '操作', index: '', width: 90, align: 'center', formatter: showToolName, sortable: false
},
{
name: 'id', label: 'id', index: 'id', width: 0, align: 'center', hidden: true
}, {
name: 'ClientId', label: 'ClientId', index: 'ClientId', width: 0, align: 'center', hidden: true
}, {
name: 'UnderlyingId', label: 'UnderlyingId', index: 'UnderlyingId', width: 0, align: 'center', hidden: true
}, {
name: 'TradeNumber', label: '交易编号', index: 'TradeNumber', width: 150, align: 'center', sortable: false
}, {
name: 'ClientName', label: '客户名称', index: 'ClientName', width: 150, align: 'center', sortable: false
}, {
name: 'TradeDate', label: '交易日期', index: 'TradeDate', width: 90, align: 'center', formatter: 'date', sortable: false
}, {
name: 'TradeAmount', label: '交易数量', index: 'TradeAmount', width: 90, align: 'left', sortable: false, formatter: otcformat.trading.notional
}, {
name: 'BuySell', label: '交易方向', index: 'BuySell', width: 90, align: 'center', sortable: false
}, {
name: 'UnderlyingCode', label: '标的代码', index: 'UnderlyingCode', width: 150, align: 'center', sortable: false
}, {
name: 'UnderlyingAssetClass', label: '标的品种', index: 'UnderlyingAssetClass', width: 150, align: 'center', sortable: false
}, {
name: 'TradeType', label: '结构类型', index: 'TradeType', width: 90, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) {
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType;
}
}, {
name: 'OptionType', label: '看涨看跌', index: 'OptionType', width: 90, align: 'center', sortable: false
}, {
name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', width: 150, align: 'center', formatter: 'date', sortable: false
}, {
name: 'Strike', label: '行权价', index: 'Strike', width: 90, align: 'center', formatter: StrikeFormatter, sortable: false
}, {
name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', width: 150, align: 'center', sortable: false
}];
return tradeHelper.getAmountToNotional(col);
}());
function jqgrid_init() {
function gridComplete(data) {
var jgrid = $(this);
var rowIds = jgrid.jqGrid('getDataIDs');
for (var k = 0; k < rowIds.length; k++) {
var curRowData = jgrid.jqGrid('getRowData', rowIds[k]);
if (curRowData.TradeStatus === '已执行') {
var iddata = "'jqg_listGrid_" + rowIds[k] + "'";
jgrid.find("input[id=" + iddata + "]").prop("disabled", "disabled");
}
}
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
$("input[type=checkbox]").click(function (res) {
var cbGridClick = $(this).prop("checked");
var id = $(this).attr("id");
if (!cbGridClick) {
if (id.indexOf("listGrid") >= 0)
$("#CheckboxAll").prop("checked", false);
}
});
selAllGrid();
$('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll();
}
var grid = $('#listGrid').jqGrid({
url: '/ScenarioAnalysis/TradeScenarioQuery',
datatype: 'json',
multiselect: true,
height: 'auto',
width: '90%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
cmTemplate: { align: 'center', width: 120 },
mtype: 'POST',
postData: {},
afterInsertRow: $.noop,
onSelectRow: $.noop,
ondblClickRow: $.noop,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
rowNum: 20,
rowList: [20, 30, 50, 200, 10000],
loadComplete: gridComplete,
onPaging(r) {
var checkAll = $("#CheckboxAll").prop("checked");
if (checkAll) {
setTimeout(function () {
$("#cb_listGrid").click();
var cbGridClick = $("#cb_listGrid").prop("checked");
if (checkAll !== cbGridClick) {
$("#cb_listGrid").click();
}
}, 200)
}
},
footerrow: false
});
}
$(function () {
$(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true });
main.setTradeDatePicker("", "#PositionDate", page.valueDate, null, false);
$("#CheckboxAll").click(selAllGrid);
document.onkeydown = function (event) {
var e = event ? event : (window.event ? window.event : null);
if (e.keyCode === 13) {
SearchClick(true);
}
};
let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingIds')
.setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade);
jqgrid_init();
});
function selAllGrid() {
var checkAll = $("#CheckboxAll").prop("checked");
$("#cb_listGrid").click();
var cbGridClick = $("#cb_listGrid").prop("checked");
if (checkAll !== cbGridClick) {
$("#cb_listGrid").click();
$("#CheckboxAll").prop("checked", checkAll)
}
}
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
listGrid.appendPostData({ AssetIds: $("#AssetIds").val() });
listGrid.appendPostData({ AssetGroupIds: $("#AssetGroupIds").val() });
listGrid.appendPostData({ ClientIds: $("#ClientIds").val() });
listGrid.appendPostData({ PositionDate: $("#PositionDate").val() });
listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingIds").val() });
listGrid.appendPostData({ VarietyIds: $("#VarietyIds").val() });
listGrid.appendPostData({ TradeTypes: $("#TradeTypes").val() });
if (isSearchclick) {
listGrid.jqGrid('setGridParam', { page: 1 });
}
listGrid.trigger('reloadGrid');
}
function scenarioCalc() {
var selIds = main.GetGridIds($('#listGrid'));
let data = Object.assign({ IsSelAll: $("#CheckboxAll").prop("checked") }, $('#listGrid').getPostData());
if (!data.IsSelAll) {
if (!selIds.length) {
return main.alert("请至少选择一笔交易");
}
data.EodTradeIds = [];
data.OtcTradeIds = [];
data.ExchangeTradeIds = [];
for (let idstr of selIds) {
let index = idstr.lastIndexOf('_');
if (index < 0) continue;
let id = parseInt(idstr.substring(0, index));
if (!id) continue;
switch (idstr.substring(index + 1)) {
case '历史':
data.EodTradeIds.push(id); break;
case '场外':
data.OtcTradeIds.push(id); break;
case '场内':
data.ExchangeTradeIds.push(id); break;
}
}
}
layer.open({
type: 2,
title: "情景分析计算",
shadeClose: false,
shade: 0.4,
area: ['1360px', '90%'],
content: "/ScenarioAnalysis/ScenarioCalc?" + $.param(data, true)
});
}
function openConfig() {
layer.open({
type: 2,
title: "情景分析配置",
shadeClose: false,
shade: 0.4,
area: ['1200px', '600px'],
content: "/ScenarioAnalysis/ScenarioList"
});
}
let testStstus = false;
let testNum = 1;
let testList = [];
function testCalc(num = 1, status = false) {
testNum = --num;
if (!status) {
testStstus = true;
$("#CheckboxAll").prop("checked", true);
selAllGrid();
}
scenarioCalc();
}
function getTestStatus() {
return testStstus;
}
function setTestValue(list) {
console.debug(list);
if (testList.length === 0) {
testList = list;
}
else {
//if (testList.length !== list.length) {
// main.alert("存在数量差异");
// testStatus = false;
//} else {
// for (var i = 0; i < testList.length; i++) {
// if (list[i] !== testList[i]) {
// main.alert("存在值差异");
// testStatus = false;
// return;
// }
// }
//}
}
if (testStstus && testNum > 0) {
layer.closeAll();
testCalc(testNum, true);
} else {
testStstus = false;
main.alert("计算完成");
}
}