Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/client/tradeMarketReport.js
T
2025-04-23 10:31:04 +08:00

511 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));
$("#MySideMargin").text(numFormart(data.MySideMargin));
$("#WinLoss").text(numFormart(data.WinLoss));
$("#CashInCashOutChange").text(numFormart(data.NetFundAll));
$("#PositionPnl").text(numFormart(isPvRounded ? data.RoundedPositionPnl : data.PositionPnl));
$("#MaintenanceMargin").text(numFormart(data.MaintenanceMargin));
$("#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));
});
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 : '';
}
}