Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/client/clientRiskMonitor.js
T

569 lines
23 KiB
JavaScript

var g_grid = {};
var query_data = {};
var g_threshold = 0;
$(function () {
var PostData = { ValueDate: page.ValueDate };
main.setTradeDatePicker(moment(page.ValueDate));
var grid = jQuery('#listGrid').jqGrid({
url: '',
datatype: 'local',
height: '580px',
width: '96%',
multiselect: true,
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
postData: PostData,
onSelectRow: rowclick,
ondblClickRow: rowdblclick,
colModel: getColModelGrid(),
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
rowNum: page.isGuoJun?10000:500,
rowList: [50,100,200,500,10000],
loadonce: true,
footerrow: true,
loadComplete: gridComplete,
onPaging: onJqgridPaging
});
g_grid = jQuery('#listGrid');
//g_grid.jqGrid('filterToolbar', { defaultSearch:'cn', searchOperators: true });
g_grid.setGridParam({
resizeStop: function (newWidth, index) {
$theadInTable = $(".ui-jqgrid-hdiv").find("table:first").children("thead");
$theadInTable.find("tr.jqg-first-row-header").find('th').eq(index)[0].style.width =
newWidth + "px";
$(".frozen-div").find("table:first").children("thead").find("tr.jqg-first-row-header").find('th').eq(index)[0].style.width =
newWidth + "px";
$(".frozen-bdiv").find("table:first").find("tr").find('td').eq(index)[0].style.width =
newWidth + "px";
$(".frozen-sdiv").find("table:first").find("tr").find('td').eq(index)[0].style.width =
newWidth + "px";
}
});
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
g_grid.jqGrid('destroyFrozenColumns');
g_grid.jqGrid('setFrozenColumns');
function keyEnter(event) {
try {
var e = event ? event : (window.event ? window.event : null);
if (e.keyCode === 13) {
if (e.target.className === "holdingDepositInput") {
$(e.target).blur();
return;
}
SearchClick(true);
}
} catch (e) {
//
}
}
var setColumn = main.setcolumnChooser2(g_grid, page.configcolumn_name);
if (setColumn) {
setColumn.done(function () {
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
g_grid.jqGrid('destroyFrozenColumns');
g_grid.jqGrid('setFrozenColumns');
});
} else {
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
}
document.onkeydown = keyEnter;
SetAceDropDown();
setHoldingDepositFunc();
LoadGrid();
$("#CheckboxAll").click(function () {
selAllGrid();
});
$("#DateValueDate").trigger("change");
});
function modifyHoldingDeposit(e) {
var $holdingDepositInput = $(e.target);
var $parent = $holdingDepositInput.parent();
var $holdingDepositSpan = $parent.find(".holdingDepositSpan")
var valueDate = $("#DateValueDate").val();
var oldHoldingDeposit = numeral($holdingDepositSpan.text()).value();
var newHoldingDeposit = numeral($holdingDepositInput.val()).value();
if (oldHoldingDeposit == newHoldingDeposit) {
$holdingDepositSpan.show();
$holdingDepositInput.hide();
return;
}
var clientId = $parent.find(".clientId").val();
var clientName = $parent.find(".clientName").val();
main.confirm(`确认修改${clientName}${valueDate}的预付金占用为${numeral(newHoldingDeposit).format("0,0.00")}?`, function () {
var pData = {
ClientId: clientId,
ValueDate: $("#DateValueDate").val(),
HoldingDeposit: newHoldingDeposit
};
main.post("/client_span/UpdateWorstCastClientPayable", pData).done(function (res) {
SearchClick(true);
});
}, function () {
$holdingDepositSpan.show();
$holdingDepositInput.val($holdingDepositSpan.text());
$holdingDepositInput.hide();
});
}
function setHoldingDepositFunc() {
if (page.canUpdatePayableMargin) {
$("#listGrid").delegate("td", "dblclick", function () {
var $td = $(this);
if (!$td.find(".holdingDepositSpan").length) {
return;
}
var $holdingDepositSpan = $td.find(".holdingDepositSpan");
var $holdingDepositInput = $td.find(".holdingDepositInput");
$holdingDepositSpan.hide();
$holdingDepositInput.val(numeral($holdingDepositSpan.text()).value());
$holdingDepositInput.show();
$holdingDepositInput.focus();
});
$("#listGrid").delegate(".holdingDepositInput", "blur", function (e) {
modifyHoldingDeposit(e);
});
}
}
function getColModelGrid() {
var colModelGrid = [
{
name: 'id', label: 'id', index: 'id', width: 1, align: 'left', hidden: true,
optionHide: true, frozen: true
}, {
name: 'EncryptId', label: 'EncryptId', index: 'EncryptId', width: 0, align: 'left', hidden: true,
optionHide: true, frozen: true
}, {
name: 'Number', label: '客户编号', index: 'Number', width: 100, align: 'center', frozen: true
}, {
name: 'Name', label: '客户名称', index: 'Name', width: 238, align: 'center', frozen: true
},{
name: 'TotalTradeCount', label: '交易总数', index: 'TotalTradeCount', width: 120, align: 'center', formatter: main.toInt, sorttype: 'number'
}, {
name: 'TotalNotionalPrincipal', label: '名义本金总额', index: 'TotalNotionalPrincipal', width: 150, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'TransactionPenNumber', label: '当日交易数', index: 'TransactionPenNumber', width: 120, align: 'center', formatter: main.toInt, sorttype: 'number'
}, {
name: 'TodayNotionalPrincipal', label: '当日交易名义本金', index: 'TodayNotionalPrincipal', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'PositionNotionalPrincipal', label: '持仓名义本金', index: 'PositionNotionalPrincipal', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'CurrentHoldingPenNumber', label: '持仓笔数', index: 'CurrentHoldingPenNumber', width: 80, align: 'center', formatter: main.toInt, sorttype: 'number'
}, {
name: 'WinLoss', label: '实现盈亏', index: 'WinLoss', width: 120, align: 'right', value: '0', formatter: 'number', sorttype: 'number'
}, {
name: 'InterestPnl', label: '利息', index: 'InterestPnl', width: 120, align: 'right', value: '0', formatter: 'number', sorttype: 'number'
}, {
name: 'TradeFee', label: '费用', index: 'TradeFee', width: 120, align: 'right', value: '0', formatter: 'number', sorttype: 'number'
}, {
name: 'PositionPnl', label: '持仓盈亏', index: 'PositionPnl', width: 120, align: 'right', value: '0', formatter: 'number', optionHide: page.isPvRounded, hidden: page.isPvRounded, sorttype: 'number'
}, {
name: 'RoundedPositionPnl', label: '持仓盈亏', index: 'RoundedPositionPnl', width: 120, align: 'right', value: '0', formatter: 'number', optionHide: !page.isPvRounded, hidden: !page.isPvRounded, sorttype: 'number'
}, {
name: 'LastDayRemainFund', label: '期初结存', index: 'LastDayRemainFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'NetFundAll', label: '出金入金', index: 'NetFundAll', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'NetFund', label: '初保账户', index: 'NetFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'VmFundSum', label: '追保账户', index: 'VmFundSum', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'OtherFund', label: '其他收支', index: 'OtherFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'AmountFund', label: '期末结存', index: 'AmountFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'MySideMargin', label: '初始保证金金额', index: 'MySideMargin', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'MaintenanceMargin', label: '维持保证金金额', index: 'MaintenanceMargin', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'SwapMarketAmount', label: '盯市金额', index: 'SwapMarketAmount', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'SwapMarketAmountPercent', label: '履约保证金比例', index: 'SwapMarketAmountPercent', width: 120, align: 'right', formatter: percentFormat, sorttype: 'number'
}, {
name: 'AvailableAmount', label: '可用资金', index: 'AvailableAmount', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'InsuredAmount', label: '追保金额', index: 'InsuredAmount', width: 120, align: 'right', value: '0', formatter: 'number', sorttype: 'number'
}, {
name: 'DesirableFund', label: '可取资金', index: 'DesirableFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}
];
colModelGrid.push({
name: 'LastSettlemetTime',
label: '系统收盘时间',
index: 'LastSettlemetTime',
width: 150,
align: 'center',
sortable: false,
formatter: "datetime"
});
if (page.ViewTagPermission) {
colModelGrid.push({
name: 'Tags',
label: '标签值',
index: 'Tags',
width: 150,
align: 'left',
sortable: false,
formatter: tagformat
}, {
name: 'OutputTags',
label: 'OutputTags',
index: 'OutputTags',
width: 70,
align: 'center',
hidden: true,
optionHide: true
});
}
return colModelGrid;
}
function tagformat(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;
}
function gridComplete() {
if (arguments[0].Sum) {
var sum = arguments[0].Sum;
$("#listGrid").footerData("set", {
Number: "合计", TotalTradeCount: sum.TotalTradeCountSum, TotalNotionalPrincipal: sum.TotalNotionalPrincipalSum,
TransactionPenNumber: sum.TransactionPenNumberSum,
TodayNotionalPrincipal: sum.TodayNotionalPrincipalSum, PositionNotionalPrincipal: sum.PositionNotionalPrincipalSum, CurrentHoldingPenNumber: sum.CurrentHoldingPenNumberSum,
WinLoss: sum.WinLossSum, InterestPnl: sum.InterestPnlSum, TradeFee: sum.TradeFeeSum, PositionPv: sum.PositionPvSum, PositionPnl: sum.PositionPnlSum, RoundedPositionPnl: sum.RoundedPositionPnlSum,
NetFund: sum.NetFundSum, OtherFund: sum.OtherFundSum,
AmountFund: sum.AmountFundSum, TotalAmount: sum.TotalAmountSum, RoundedTotalAmount: sum.RoundedTotalAmountSum,
AvailableAmount: sum.AvailableAmountSum, InsuredAmount: sum.InsuredAmountSum,
DesirableFund: sum.DesirableFundSum, NetFundAll: sum.NetFundAllSum, VmFundSum: sum.VmFundSumSum, MySideMargin: sum.MySideMarginSum,
MaintenanceMargin: sum.MaintenanceMarginSum, SwapMarketAmount: sum.SwapMarketAmountSum, LastDayRemainFund: sum.LastDayRemainFundSum,
});
}
g_grid = jQuery('#listGrid');
var setColumn = main.setcolumnChooser2(g_grid, page.configcolumn_name);
if (setColumn) {
setColumn.done(function () {
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
g_grid.jqGrid('destroyFrozenColumns');
g_grid.jqGrid('setFrozenColumns');
});
} else {
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
}
var ids = $("#listGrid").jqGrid("getDataIDs");//获取所有行的id
var rowDatas = $("#listGrid").jqGrid("getRowData");//获取所有行的数据
for (var i = 0; i < rowDatas.length; i++) {
var rowData = rowDatas[i];
if (rowData.InsuredAmount > 0) {
if (page.isDongWu) {
if (rowData.InsuredAmount > rowData.MinimumTransferAmount) {
$("#" + ids[i] + " td[aria-describedby=listGrid_InsuredAmount]").css("background-color", "coral");
}
} else
{
$("#" + ids[i] + " td[aria-describedby=listGrid_InsuredAmount]").css("background-color", "coral");
}
}
if (rowData.PayableFund > 0) {
$("#" + ids[i] + " td[aria-describedby=listGrid_PayableFund]").css("background-color", "coral");
}
if (rowData.AvailableStockEqvNotional < 0) {
$("#" + ids[i] + " td[aria-describedby=listGrid_AvailableStockEqvNotional]").css("background-color", "coral");
}
}
}
function LoadGrid() {
jQuery('#listGrid').jqGrid('setGroupHeaders', {
useColSpanStyle: true,
groupHeaders: [
{ startColumnName: 'Number', numberOfColumns: 2, titleText: '<span class="listGroupHeader">客户信息</span>' },
{ startColumnName: 'TotalTradeCount', numberOfColumns: 11, titleText: '<span class="listGroupHeader">交易信息 <span>' },
{ startColumnName: 'LastDayRemainFund', numberOfColumns: 13, titleText: '<span class="listGroupHeader">账户状况</span>' }
]
});
}
function percentFormat(cellValue, options, rowObject) {
return cellValue ? (cellValue * 100).toFixed(2) + "%" : "0.00%";
}
function holdingDepositFormat(cellValue, options, rowObject) {
cellValue = numeral(cellValue).format("0,0.00");
if (cellValue === "NaN") {
cellValue = "0.00";
}
var html;
var margintype = $("#ShownType").val();
if (margintype == "default") {
html = `<div data-value="#=${cellValue}#"><span class="holdingDepositSpan" >${cellValue}</span><input type="text" value="${cellValue}" class="holdingDepositInput" style="display:none"/><input type="hidden" class="clientId" value="${rowObject.id}"/><input type="hidden" class="clientName" value="${rowObject.Name}"/></div>`;
}
else {
html = `<div data-value="#=${cellValue}#">${cellValue}</div>`;
}
return html;
}
function ReceivableCalc(cellValue, options, rowObject) {
return otcformat.fixed2(rowObject.SellerPositionPremium + rowObject.BuyerPositionMargin);
}
var searchPostData = {};
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
listGrid.jqGrid('setGridParam', {
url: '/client/clientBanlanceQuery',
datatype: 'json'
})
searchPostData.Number = $("#Number").val();
searchPostData.ClientIds = $("#id").val();
//searchPostData.CreditRatingIds = $("#CreditRatingId").val();
searchPostData.BoundSide = $("#BoundSide").val();
searchPostData.ValueDate = $("#DateValueDate").val();
searchPostData.CustomerManagerIds = $("#CustomerManagerIds").val();
searchPostData.CustomerManagerString = $("#CustomerManagerString").val();
searchPostData.IsSmallAndMicroEnterprises = $("#IsSmallAndMicroEnterprises").val();
searchPostData.HaveDayTrade = false;
searchPostData.HavePosition = false;
searchPostData.HaveMarginAmount = false;
searchPostData.HavePayableFund = false;
searchPostData.HaveClosedPayableFund = false;
searchPostData.HaveTotalAsset = false;
searchPostData.MarginShownType = $("#ShownType").val();
_.forEach($("#PrewhereMode").val(), (v) => {
searchPostData[v] = true;
})
searchPostData.TagIds = $("#TagIds").val();
listGrid.appendPostData(searchPostData);
query_data = listGrid.jqGrid('getPostData');
if (isSearchclick) {
//点击搜索时默认第一页
listGrid.jqGrid('setGridParam', { page: 1 });
}
listGrid.trigger('reloadGrid');
}
function showcolumnChooser() {
main.showcolumnChooser2(jQuery('#listGrid'), page.configcolumn_name, { height: 620, dialog_opts: { height: 660 } }).done(function () {
window.location.reload();
});
}
function setupMarginHighlight() {
var htmlContent = $('#setupMarginHighlight').html();
main.open2("配置预付金预警",
htmlContent,
{
area: ["450px", "158px"],
success: function (layero, index) {
//var valueDate = $("#DateValueDate").val();
//main.setTradeDatePicker(valueDate, "");
//$("#endDate").val($("#DateValueDate").val());
//$("#startDate,#endDate").datepicker("option", "maxDate", valueDate);
//$("#startDate").on("change", function () {
// var startDate = $(this).val();
// if (!main.isDate(startDate)) {
// return;
// }
// $("#endDate").datepicker("option", "minDate", startDate);
//});
//$("#endDate").on("change", function () {
// var endDate = $(this).val();
// if (!main.isDate(endDate)) {
// return;
// }
// $("#startDate").datepicker("option", "maxDate", endDate);
//});
}
});
}
function rangeClick() {
$("#startDate").prop("disabled", !$("#useRange").prop("checked"));
}
function execExport() {
if (main.isEmpty($("#startDate").val()) && $("#useRange").prop("checked")) {
return main.message("开始日期不能为空");
}
if (main.isEmpty($("#endDate").val())) {
return main.message("结束日期不能为空");
}
if ($("#startDate").val() > $("#endDate").val()) {
return main.message("开始日期不能在结束日期之后");
}
var postData = {};
var clientIds = $("#listGrid").jqGrid('getGridParam', 'selarrrow');
if (clientIds.length > 0) {
postData.ClientIds = clientIds;
}
else { postData = searchPostData; }
postData.StartDate = $("#startDate").val();
postData.ValueDate = $("#endDate").val();
postData.MarginShownType = $("#ShownType").val();
// 构造并提交表单
var $form = $('<form method="post" style="display:none"></form>');
$form.attr('action', '/client/ClientBanlanceExport');
for (var key in postData) {
if (postData.hasOwnProperty(key)) {
var value = postData[key];
if (Array.isArray(value)) {
value.forEach(function (v) {
$form.append($('<input type="hidden" name="' + key + '" />').val(v));
});
} else {
$form.append($('<input type="hidden" name="' + key + '" />').val(value));
}
}
}
$('body').append($form);
$form.submit();
$form.remove();
//main.post("/client/ClientBanlanceExport", postData).done(function (res) {
// // main.downloadFiles(res.obj);
//});
parent.layer.closeAll();
}
function downClientRiskMonitor() {
var htmlContent = $('#exportTPL').html();
main.open2("导出资金监控",
htmlContent,
{
area: ["450px", "300px"],
success: function (layero, index) {
var valueDate = $("#DateValueDate").val();
main.setTradeDatePicker(valueDate, "");
$("#endDate").val($("#DateValueDate").val());
$("#startDate,#endDate").datepicker("option", "maxDate", valueDate);
$("#startDate").on("change", function () {
var startDate = $(this).val();
if (!main.isDate(startDate)) {
return;
}
$("#endDate").datepicker("option", "minDate", startDate);
});
$("#endDate").on("change", function () {
var endDate = $(this).val();
if (!main.isDate(endDate)) {
return;
}
$("#startDate").datepicker("option", "maxDate", endDate);
});
}
});
}
function setClient(obj) {
$("#id option").each(function (i, d) {
if ($(d).is(":checked")) {
$(d).prop("selected", false);
}
else {
$(d).prop("selected", true);
}
});
$("#id").trigger("chosen:updated");
}
function Post(URL, PARAMTERS) {
//创建form表单
var temp_form = document.createElement("form");
temp_form.action = URL;
//如需打开新窗口,form的target属性要设置为'_blank'
temp_form.target = "_blank";
temp_form.method = "post";
temp_form.style.display = "none";
//添加参数
for (var item in PARAMTERS) {
var opt = document.createElement("textarea");
opt.name = PARAMTERS[item].name;
opt.value = PARAMTERS[item].value;
temp_form.appendChild(opt);
}
document.body.appendChild(temp_form);
//提交数据
temp_form.submit();
}
function SendReport() {
var jgrid = jQuery('#listGrid');
var clientIds = main.GetGridIds(jgrid);
if (!clientIds.length) {
main.message("请选择需要发送的客户!");
return;
}
if (!$("#DateValueDate").val()) {
main.message("请选择需要发送报告的查看日期!");
return;
}
var parames = new Array();
parames.push({ name: "clientids", value: clientIds });
parames.push({ name: "valuedate", value: $("#DateValueDate").val() });
parames.push({ name: "showntype", value: $("#ShownType").val() });
Post("/client/clientRiskMonitorBatchSend", parames);
}
function selAllGrid() {
var checkAll = $("#CheckboxAll").prop("checked");
$("#cb_listGrid").click();
var cbGridClick = $("#cb_listGrid").prop("checked");
if (checkAll !== cbGridClick) {
$("#cb_listGrid").click();
}
}