516 lines
19 KiB
JavaScript
516 lines
19 KiB
JavaScript
var g_grid = {};
|
||
$(function () {
|
||
var PostData = {};
|
||
var calcDate = page.ValueDate;
|
||
|
||
//控件选择时的触发事件
|
||
main.setTradeDatePicker("", "#ValueDate", calcDate, function (selectedDate) {
|
||
if (selectedDate) {
|
||
$("#ValueDateFrom").datepicker("option", "maxDate", selectedDate);
|
||
}
|
||
});
|
||
main.setTradeDatePicker("", "#ValueDateFrom", calcDate, function (selectedDate) {
|
||
if (selectedDate) {
|
||
$("#ValueDate").datepicker("option", "minDate", selectedDate);
|
||
}
|
||
});
|
||
//手动修改时的触发事件
|
||
$("#ValueDate").change(function () {
|
||
$("#ValueDateFrom").datepicker("option", "maxDate", $("#ValueDate").val());
|
||
});
|
||
$("#ValueDateFrom").change(function () {
|
||
$("#ValueDate").datepicker("option", "minDate", $("#ValueDateFrom").val());
|
||
});
|
||
//默认初始值赋值逻辑
|
||
if (!page.EndTime) {
|
||
$("#ValueDate").val(calcDate);
|
||
} else {
|
||
$("#ValueDate").val(page.EndTime);
|
||
}
|
||
|
||
//admin配置 结算报告配置 开始日期
|
||
if (page.TradeMarketReportCfg == "SYSTEMDATE") {
|
||
$("#ValueDateFrom").val($("#ValueDate").val());
|
||
}
|
||
|
||
if (page.StartTime && page.EndTime) {
|
||
$("#ValueDateFrom").val(page.StartTime);
|
||
}
|
||
|
||
|
||
|
||
if (isRunHe || isGuoTou) {
|
||
|
||
var ValueDateFrom = $("#ValueDateFrom").val();
|
||
if (!ValueDateFrom || ValueDateFrom === 'null') {
|
||
$("#ValueDateFrom").val(calcDate);
|
||
}
|
||
var ValueDate = $("#ValueDate").val();
|
||
if (!ValueDate || ValueDate === 'null') {
|
||
$("#ValueDate").val(calcDate);
|
||
}
|
||
}
|
||
|
||
|
||
$("#ClientId").val(page.ClientId);
|
||
if (page.ParentFlag == "True")
|
||
$("#ParentFlag").attr("checked", true);
|
||
else
|
||
$("#ParentFlag").attr("checked", false);
|
||
|
||
if ($("#ClientId").val()) {
|
||
SearchClientBalance();
|
||
}
|
||
|
||
function keyEnter(event) {
|
||
try {
|
||
var e = event ? event : (window.event ? window.event : null);
|
||
if (e.keyCode === 13) {
|
||
SearchClick(true);
|
||
}
|
||
} catch (e) {
|
||
//
|
||
}
|
||
}
|
||
|
||
document.onkeydown = keyEnter;
|
||
try {
|
||
SetAceDropDown();
|
||
|
||
} catch (e) {
|
||
//
|
||
}
|
||
|
||
function AfterInsertRow(rowid, aData) {
|
||
}
|
||
|
||
function WorstCastClientPayableTrigger(data) {
|
||
var payableMargin = numeral(data).value() > 0 ? numeral(data).value() : 0;
|
||
var totalCredit = numeral($("#TotalCredit").val()).value();
|
||
var marginBalance = numeral($("#MarginBalance").val()).value();
|
||
var closedTradePayableFund = numeral($("#ClosedTradePayableFund").text()).value();
|
||
var positionTradePayableFund = numeral($("#PositionTradePayableFund").text()).value();
|
||
var frozenMarginMoney = numeral($("#FrozenMarginMoney").val()).value();//为负
|
||
var todayRemainFund = numeral($("#ToDayRemainFund").text()).value();
|
||
var todayRemianFundProduct = numeral($("#TodayRemianFundProduct").text()).value();
|
||
var frozenRedeemFunds = numeral($("#FrozenRedeemFunds").val()).value();
|
||
var positionPremiumNetCash = numeral($("#PositionPremiumNetCash").text()).value();
|
||
|
||
var availableAmount = marginBalance - payableMargin + frozenMarginMoney;
|
||
$("#AvailableFund").text(numFormart(availableAmount));
|
||
|
||
|
||
|
||
let margin = Math.max(payableMargin - Math.max(todayRemainFund, 0) - todayRemianFundProduct - totalCredit, 0);
|
||
if (isXiangCai) {
|
||
margin = Math.max((-numFormart(availableAmount)), 0);
|
||
}
|
||
$("#Margin").text(numFormart(margin));
|
||
|
||
|
||
|
||
var payableFund = closedTradePayableFund + positionTradePayableFund + numeral($("#Margin").text()).value();
|
||
$("#PayableFund").val(numFormart(payableFund));
|
||
var desirableFund = isShenWan || isHongYuan ? Math.max(availableAmount + frozenRedeemFunds, 0) : Math.max(availableAmount + frozenRedeemFunds - Math.max(-positionPremiumNetCash, 0), 0);
|
||
$("#DesirableFund").text(numFormart(desirableFund));
|
||
}
|
||
|
||
$("#WorstCastClientPayable").blur(function () {
|
||
var oldData = $("#WorstCastClientPayable").text();
|
||
var dateVal = $(this).val();
|
||
var clientId = parseInt($("#ClientId").val());
|
||
var client = clients.find(y => y.id === clientId);
|
||
if (!(/^(0|[-1-9]\d*)(\.\d*)?$/.test(dateVal) && client && client.MarginOptionType == 1 || /^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal))) {
|
||
$(this).val("");
|
||
return;
|
||
}
|
||
else {
|
||
var clientName = $("#ClientId :selected").text();
|
||
if (!clientName) {
|
||
main.alert("请先选择需要修改预付金占用的客户");
|
||
return;
|
||
}
|
||
|
||
main.confirm("确定修改{0}在{1}的预付金占用吗?".template(clientName, $("#ValueDate").val()),
|
||
function () {
|
||
var pData = {
|
||
ClientId: $("#ClientId").val(),
|
||
ValueDate: $("#ValueDate").val(),
|
||
HoldingDeposit: dateVal
|
||
};
|
||
main.post("/client_span/UpdateWorstCastClientPayable", pData).done(function (res) {
|
||
if (res.success) {
|
||
$("#WorstCastClientPayable").text(dateVal);
|
||
$("#WorstCastClientPayable").css("border-color", "red");
|
||
$("#unlock").show();
|
||
WorstCastClientPayableTrigger(dateVal);
|
||
}
|
||
});
|
||
}, function () {
|
||
$("#WorstCastClientPayable").val(oldData);
|
||
WorstCastClientPayableTrigger(oldData);
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
$("#FundThreshold").blur(function () {
|
||
var oldData = $("#FundThreshold").text();
|
||
var dateVal = $(this).val();
|
||
if (!/^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal)) {
|
||
$(this).val("");
|
||
return;
|
||
}
|
||
else {
|
||
ClientId = $("#ClientId").val()
|
||
var clientName = $("#ClientId :selected").text();
|
||
if (ClientId == '' || ClientId === 'null') {
|
||
main.alert("请先选择需要填写阈值的客户!");
|
||
return;
|
||
}
|
||
|
||
main.confirm("确定修改{0}阈值吗?".template(clientName),
|
||
function () {
|
||
var pData = {
|
||
Id: $("#ClientId").val(),
|
||
FundThreshold: dateVal
|
||
};
|
||
main.post("/Client/UpdateClientFundThresholdJson", pData).done(function (res) {
|
||
if (res.success) {
|
||
$("#FundThreshold").text(dateVal);
|
||
$("#FundThreshold").css("border-color", "red");
|
||
}
|
||
});
|
||
}, function () {
|
||
$("#FundThreshold").val(oldData);
|
||
});
|
||
}
|
||
});
|
||
});
|
||
|
||
function showTradeNumber(cellValue, options, rowObject) {
|
||
if (cellValue === "合计:") {
|
||
return cellValue;
|
||
}
|
||
|
||
var url = "/trade/tradeFileManagement?tradeNumber=" + cellValue;
|
||
var showNumber = "<a href=\"javascript:void(0)\" title=\"查看客户文件\" onclick='main.open(\"客户文件\",\"{1}\")'>{0}</a>".template(cellValue, url);
|
||
return showNumber;
|
||
}
|
||
|
||
function showExerciseMode(cellValue, options, rowObject) {
|
||
if ("American" === rowObject.ExerciseMode || "American" === rowObject.trade.ExerciseMode) {
|
||
return "美式";
|
||
} else if ("European" === rowObject.ExerciseMode || "European" === rowObject.trade.ExerciseMode) {
|
||
return "欧式";
|
||
}
|
||
}
|
||
|
||
function percentFormat(cellValue, options, rowObject) {
|
||
return cellValue ? (cellValue * 100).toFixed(2) + "%" : "0.00%";
|
||
}
|
||
|
||
function doubleFormat(cellValue, options, rowObject) {
|
||
return cellValue ? cellValue.toFixed(2) : "0.00";
|
||
}
|
||
|
||
function unwindNotionalFormat(cellValue, options, rowObject) {
|
||
return rowObject.trade_cash.Action === "系统操作-行权费" ? rowObject.trade_cash.Notional || 0 : rowObject.trade_cash.UnwindNotional;
|
||
}
|
||
|
||
function tradeStatusFormat(cellValue, options, rowObject) {
|
||
return rowObject.trade_cash.Action === "系统操作-行权费" ? rowObject.trade.TradeStatus : "已平仓";
|
||
}
|
||
|
||
function strikeFormat(cellValue, options, rowObject) {
|
||
return rowObject.trade.IsMoneynessOptionData ? numeral(rowObject.trade.InitialSpotPrice * (rowObject.trade.Strike || 0)).format("0,0.00") : numeral(rowObject.trade.Strike || 0).format("0,0.0");
|
||
}
|
||
|
||
//实现盈亏包含 了结数量的权利金,需要将其计算进去
|
||
function amountFormat(cellValue, options, rowObject) {
|
||
return numeral(rowObject.trade_cash.Action === "系统操作-行权费" ? -rowObject.trade_cash.Amount
|
||
+ rowObject.trade.TradePrice * rowObject.trade_cash.UnwindPercentRate * (rowObject.trade.BuySell === "卖出" ? -1 : 1) : -rowObject.trade_cash.Amount
|
||
+ rowObject.trade.TradePrice * rowObject.trade_cash.UnwindPercentRate * (rowObject.trade.BuySell === "卖出" ? -1 : 1)).format("0,0.00");
|
||
}
|
||
|
||
function rowclick(id) {
|
||
}
|
||
|
||
function reloadTradeMarketReport() {
|
||
//重新加载
|
||
SearchClick(true);
|
||
}
|
||
|
||
function SearchClick(isSearchclick) {
|
||
SearchClientBalance();
|
||
}
|
||
|
||
function SearchClientBalance() {
|
||
var param = {};
|
||
//param.JmsID = g_gmsid;
|
||
param.ClientId = $("#ClientId").val();
|
||
param.ValueDate = $("#ValueDate").val(); //相当于ValueDateEnd
|
||
param.ValueDateStart = $("#ValueDateFrom").val();
|
||
param.ValueDateEnd = param.ValueDate;
|
||
param.IsClientBalanceGap = false;
|
||
param.IsGetOuterMarginGap = false;
|
||
if ($("#ParentFlag").prop("checked"))
|
||
param.ParentFlag = true;
|
||
else
|
||
param.ParentFlag = false;
|
||
|
||
$("#WorstCastClientPayable").prop("disabled", "true");
|
||
$("#PayableFund").prop("disabled", "true");
|
||
if (!param.ValueDateStart) {
|
||
// param.ValueDateStart = param.ValueDate;
|
||
}
|
||
if (!param.ClientId || param.ClientId === 'null') {
|
||
main.message("请选择要查看报告的客户名称!");
|
||
return;
|
||
}
|
||
if (!param.ValueDate || param.ValueDate === 'null') {
|
||
main.message("请选择要查看报告的结束日期!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() > page.ValueDate) {
|
||
main.message("结束日期不能大于当前系统日期!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
|
||
main.message("起始日期不能大于结束日期!");
|
||
return;
|
||
}
|
||
if (isXiangYu) {
|
||
if ($("#ValueDate").val() < page.ValueDate) {
|
||
$("#FundThreshold").prop("disabled", "true");
|
||
} else {
|
||
$("#FundThreshold").prop("disabled", "");
|
||
}
|
||
}
|
||
|
||
main.post("/trade_span/GetClientLatestBalance", { clientId: $("#ClientId").val(), ValueDateFrom: param.ValueDateStart, ValueDateTo: param.ValueDateEnd, IsClientBalanceGap: param.IsClientBalanceGap, IsGetOuterMarginGap: param.IsGetOuterMarginGap, ParentFlag: param.ParentFlag }).done(function (data) {
|
||
$("#LastDayRemainFund").text(numFormart(data.LastDayRemainFund));
|
||
//R2 阶段三 §3.2 口径(BUG-07 修正,与邮件/Excel 报告 SettlementReportService 同源):
|
||
//初始保证金=SwapInitMargin(应付预付金净额+初始预付金授信占用净额)、维持保证金=−MySideMargin(client_span 维持保证金反号聚合)、
|
||
//授信额度=OriginalTotalCredit(原始授信值,未经最大可用比例折算;公式计算仍用折算后 TotalCredit)
|
||
$("#SwapInitMargin").text(numFormart(data.SwapInitMargin));
|
||
$("#WinLoss").text(numFormart(data.WinLoss));
|
||
$("#CashInCashOutChange").text(numFormart(data.NetFundAll));
|
||
$("#PositionPnl").text(numFormart(isPvRounded ? data.RoundedPositionPnl : data.PositionPnl));
|
||
$("#MaintenanceMargin").text(numFormart(-data.MySideMargin));
|
||
$("#NetFundAll").text(numFormart(data.NetFund));
|
||
$("#SwapMarketAmount").text(numFormart(data.SwapMarketAmount));
|
||
$("#VmFundSum").text(numFormart(data.VmFundSum));
|
||
$("#AvailableFund").text(numFormart(data.AvailableAmount));
|
||
$("#OtherFund").text(numFormart(data.OtherFund));
|
||
$("#MarginByPayableMargin").text(numFormart(data.MarginByPayableMarginTotal));
|
||
$("#ToDayRemainFund").text(numFormart(data.AmountFund));
|
||
$("#DesirableFund").text(numFormart(data.DesirableFundTotal));
|
||
$("#TotalCredit").text(numFormart(data.OriginalTotalCredit));
|
||
$("#UsedCredit").text(numFormart(data.UsedCredit));
|
||
});
|
||
|
||
var data = { clientId: $("#ClientId").val(), ValueDateFrom: $("#ValueDateFrom").val(), ValueDateTo: $("#ValueDate").val() };
|
||
main.post("/trade_span/GetPositionAndHistoryTotalNumber", data, { waitMe: false }).done(function (data) {
|
||
$("#positionTab").attr("title", data.PostionListNumber);
|
||
$("#historyTab").attr("title", data.HistoryListNumber);
|
||
$("#positionSwapTab").attr("title", data.PositionSwapListNumber);
|
||
$("#historySwapTab").attr("title", data.HistorySwapListNumber);
|
||
});
|
||
}
|
||
function numFormart(num) {
|
||
num = num || 0;
|
||
var result = numeral(num).format("0,0.00") === "NaN" ? "0.00" : numeral(num).format("0,0.00");
|
||
if (result === "-0.00") {
|
||
result = "0.00";
|
||
}
|
||
return result;
|
||
}
|
||
|
||
function PopDesc() {
|
||
main.open("配置报告", "/clientbalance/TradeMarketDescSet", { area: ['65%', '75%'] });
|
||
}
|
||
|
||
function SendReport() {
|
||
var param = {};
|
||
var clientName = $("#ClientId :selected").text();
|
||
param.ClientId = $("#ClientId").val();
|
||
param.ValueDate = $("#ValueDate").val();
|
||
if (!param.ClientId || param.ClientId === 'null') {
|
||
main.message("请选择要查看报告的客户名称!");
|
||
return;
|
||
}
|
||
if (!param.ValueDate || param.ValueDate === 'null') {
|
||
main.message("请选择要查看报告的结束日期!");
|
||
return;
|
||
}
|
||
|
||
if ($("#ParentFlag").prop("checked"))
|
||
param.ParentFlag = true;
|
||
else
|
||
param.ParentFlag = false;
|
||
|
||
if ($("#ValueDate").val() > page.ValueDate) {
|
||
main.message("结束日期不能大于当前系统日期!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
|
||
main.message("起始日期不能大于结束日期!");
|
||
return;
|
||
}
|
||
if (isShenWan) {
|
||
main.post("/clientbalance/GenerateTradeMarketBill2", screenData());
|
||
}
|
||
else {
|
||
var payablemargin = numeral($("#WorstCastClientPayable").val()).format("0.00");
|
||
//湘财 追保金额
|
||
if (isXiangCai) {
|
||
payablemargin = numeral($("#Margin").text()).format("0.00");
|
||
}
|
||
main.open("向{0}发送报告".template(clientName), "/clientbalance/TradeMarketClientSend?clientid=" + param.ClientId + "&payablemargin=" + payablemargin + "&payableFund=" + numeral($("#PayableFund").val()).format("0.00") + "&reportType=GetOuterMargin" + "&ParentFlag=" + param.ParentFlag, { area: ['65%', '95%'] });
|
||
}
|
||
}
|
||
|
||
function DownLoadReport() {
|
||
var param = {};
|
||
var clientName = $("#ClientId :selected").text();
|
||
param.ClientId = $("#ClientId").val();
|
||
param.ValueDate = $("#ValueDate").val();
|
||
if (!param.ClientId || param.ClientId === 'null') {
|
||
main.message("请选择要查看报告的客户名称!");
|
||
return;
|
||
}
|
||
if (!param.ValueDate || param.ValueDate === 'null') {
|
||
main.message("请选择要查看报告的结束日期!");
|
||
return;
|
||
}
|
||
|
||
if ($("#ValueDate").val() > page.ValueDate) {
|
||
main.message("结束日期不能大于当前系统日期!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
|
||
main.message("起始日期不能大于结束日期!");
|
||
return;
|
||
}
|
||
|
||
main.post("/clientbalance/ViewTradeMarketFile", screenData()).done(function (res) {
|
||
window.open(res.obj);
|
||
});
|
||
}
|
||
|
||
function screenData() {
|
||
var data = { From: $("#ValueDateFrom").val(), To: $("#ValueDate").val() };
|
||
data.ClientId = $("#ClientId").val();
|
||
if ($("#ParentFlag").prop("checked"))
|
||
data.ParentFlag = true;
|
||
else
|
||
data.ParentFlag = false;
|
||
return data;
|
||
}
|
||
|
||
function locationChange(tab) {
|
||
let val = $("#ClientId").val();
|
||
var ParentFlag = false;
|
||
if (!val || val === 'null') {
|
||
main.message("请选择要查看报告的客户名称!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() > page.ValueDate) {
|
||
main.message("结束日期不能大于当前系统日期!");
|
||
return;
|
||
}
|
||
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
|
||
main.message("起始日期不能大于结束日期!");
|
||
return;
|
||
}
|
||
if ($("#ParentFlag").prop("checked"))
|
||
ParentFlag = true;
|
||
else
|
||
ParentFlag = false;
|
||
|
||
window.location.href = tab + "?clientId=" + $("#ClientId").val() + "&startTime=" + $("#ValueDateFrom").val() + "&endTime=" + $("#ValueDate").val() + "&ParentFlag=" + ParentFlag;
|
||
return;
|
||
}
|
||
|
||
function unlockPayableMarginManual() {
|
||
var clientName = $("#ClientId :selected").text();
|
||
if (!clientName) {
|
||
main.alert("请先选择客户信息");
|
||
return;
|
||
}
|
||
main.confirm("确定解锁{0}在{1}的预付金占用吗?".template(clientName, $("#ValueDate").val()),
|
||
function () {
|
||
var pData = {
|
||
ClientId: $("#ClientId").val(),
|
||
ValueDate: $("#ValueDate").val()
|
||
};
|
||
main.post("/client_span/unlockWorstCastClientPayable", pData).done(function (res) {
|
||
$("#unlock").hide();
|
||
});
|
||
});
|
||
}
|
||
|
||
function Upload() {
|
||
$("#modalFileUpload").modal('show');
|
||
$("#Content").width("680px")
|
||
}
|
||
|
||
function uploadOuterData(Ismargin) {
|
||
if (!$("#uploadfile").get(0).value.length) {
|
||
main.alert("请选择要上传的文件!");
|
||
return;
|
||
}
|
||
var fd = new FormData();
|
||
/*上传的文件file*/
|
||
fd.append("file", $("#uploadfile").get(0).files[0]);
|
||
fd.append("IsMargin", Ismargin);
|
||
$.ajax({
|
||
url: "/clientbalance/ImportClientBalanceGap",
|
||
type: "POST",
|
||
processData: false,
|
||
contentType: false,
|
||
data: fd,
|
||
success: function (res) {
|
||
if (!res.success) {
|
||
main.alert(res.msg);
|
||
} else {
|
||
$("#modalFileUpload").modal('hide');
|
||
main.message(res.msg);
|
||
}
|
||
},
|
||
beforeSend(jqXHR) {
|
||
main.waitMe(true);
|
||
},
|
||
complete(jqXHR, textStatus) {
|
||
main.waitMe(false);
|
||
}
|
||
});
|
||
}
|
||
|
||
function downloadOuterDataTemplate() {
|
||
window.open("../App_Docs/导入模板/结算财务账户状况导入模板.xlsx");
|
||
}
|
||
function downloadOuterMarginTemplate() {
|
||
window.open("../App_Docs/导入模板/结算财务外部预付金导入模板.xlsx");
|
||
}
|
||
|
||
function onkeyupMargin(value) {
|
||
var clientId = parseInt($("#ClientId").val());
|
||
var client = clients.find(y => y.id === clientId);
|
||
if (client && client.MarginOptionType == 1) {
|
||
return value.replace(/[^-0-9.]/g, '');
|
||
} else {
|
||
return value.replace(/[^0-9.]/g, '');
|
||
}
|
||
}
|
||
|
||
function onblurMargin(value) {
|
||
var clientId = parseInt($("#ClientId").val());
|
||
var client = clients.find(y => y.id === clientId);
|
||
if (client && client.MarginOptionType == 1) {
|
||
return /^(0|[-1-9]\d*)(\.\d*)?$/.test(dateVal) ? value : '';
|
||
} else {
|
||
return /^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal) ? value : '';
|
||
}
|
||
} |