var g_grid = {}; var quotaSettings = {}; var underlyingId = 0; var disabledQuotaIndexs = ["止损金额", "Delta金额", "浮动盈亏"]; var quotaMonitorMultiple = 10000; $(function () { FastVue.numberInput(document.getElementById('QuotaRange-PercentDays'), { precision: 0 }); var postData = GetPostData(); var obj = { datatype: 'local', multiselect: false, height: 'auto', width: '90%', autowidth: false, shrinkToFit: false, viewrecords: true, colModel: colModel, jsonReader: { repeatitems: false }, caption: '', mtype: 'POST', postData: postData, afterInsertRow: AfterInsertRow, onSelectRow: rowclick, ondblClickRow: rowdblclick, footerrow: false, loadComplete: gridComplete, onPaging: onJqgridPaging }; g_grid = jQuery('#listGrid1').jqGrid(obj); $.ajax({ type: "Post", async: false, url: "/risk/QuotaSettingQuery", contentType: false, processData: false, success: function (res) { $("#BusinessTotalScale").val(res.BusinessTotalScale); $("#BusinessAvailableFunds").val(res.BusinessAvailableFunds); $("#SingleUnderlyingRate").val(res.SingleUnderlyingRate); quotaSettings = res.QuotaSettings; _.forEach(quotaSettings, (item) => { if (item.QuotaIndex.indexOf("名义本金") != -1) { item.QuotaIndex = item.QuotaIndex + "(万)"; } if (item.Percent) { item.QuotaUpperLimit = item.QuotaUpperLimit == null || item.QuotaUpperLimit == undefined || item.QuotaUpperLimit == "NaN" || item.QuotaUpperLimit === "" ? "" : (Number.parseFloat(item.QuotaUpperLimit) * 100).toFixed(2); item.QuotaLowerLimit = item.QuotaLowerLimit == null || item.QuotaLowerLimit == undefined || item.QuotaLowerLimit == "NaN" || item.QuotaLowerLimit === "" ? "" : (Number.parseFloat(item.QuotaLowerLimit) * 100).toFixed(2); item.WarningUpperLimit = item.WarningUpperLimit == null || item.WarningUpperLimit == undefined || item.WarningUpperLimit == "NaN" || item.WarningUpperLimit === "" ? "" : (Number.parseFloat(item.WarningUpperLimit) * 100).toFixed(2); item.WarningLowerLimit = item.WarningLowerLimit == null || item.WarningLowerLimit == undefined || item.WarningLowerLimit == "NaN" || item.WarningLowerLimit === "" ? "" : (Number.parseFloat(item.WarningLowerLimit) * 100).toFixed(2); } else { item.QuotaUpperLimit = item.QuotaUpperLimit == null || item.QuotaUpperLimit == undefined || item.QuotaUpperLimit == "NaN" || item.QuotaUpperLimit === "" ? "" : Number.parseFloat(item.QuotaUpperLimit).toFixed(2); item.QuotaLowerLimit = item.QuotaLowerLimit == null || item.QuotaLowerLimit == undefined || item.QuotaLowerLimit == "NaN" || item.QuotaLowerLimit === "" ? "" : Number.parseFloat(item.QuotaLowerLimit).toFixed(2); item.WarningUpperLimit = item.WarningUpperLimit == null || item.WarningUpperLimit == undefined || item.WarningUpperLimit == "NaN" || item.WarningUpperLimit === "" ? "" : Number.parseFloat(item.WarningUpperLimit).toFixed(2); item.WarningLowerLimit = item.WarningLowerLimit == null || item.WarningLowerLimit == undefined || item.WarningLowerLimit == "NaN" || item.WarningLowerLimit === "" ? "" : Number.parseFloat(item.WarningLowerLimit).toFixed(2); } }); setRows(res) }, beforeSend(jqXHR) { main.waitMe(true); }, complete(jqXHR, textStatus) { main.waitMe(false); } }); var defaultValue = { Name: '全部', Code: '全部', id: '0' }; pageData.clients.unshift(defaultValue); var width = 152; for (var i = 0; i < pageData.clients.length; i++) { let ele = document.createElement('span') ele.innerText = pageData.clients[i].Name; ele.style.fontSize = '14px'; document.documentElement.append(ele); var charLength = ele.offsetWidth + 28;//滚动条 document.documentElement.removeChild(ele); if (charLength > width) { width = charLength } } FastVue.autocomplete('QuotaRange-ClienetId', { nameField: 'Name', valueField: 'id', searchField: ['Name', 'PinYin'],//如果不设置则只搜索nameField lookup: pageData.clients, width: width, onSelect: (data) => { setRows(); } }).setData(defaultValue) //簿记 pageData.assetUnits.unshift(defaultValue); var width = 152; for (var i = 0; i < pageData.assetUnits.length; i++) { let ele = document.createElement('span') ele.innerText = pageData.assetUnits[i].Name; ele.style.fontSize = '14px'; document.documentElement.append(ele); var charLength = ele.offsetWidth + 28;//滚动条 document.documentElement.removeChild(ele); if (charLength > width) { width = charLength } } FastVue.autocomplete('QuotaRange-AssetUnitId', { nameField: 'Name', valueField: 'id', searchField: ['Name', 'PinYin'],//如果不设置则只搜索nameField lookup: pageData.assetUnits, width: width, onSelect: (data) => { setRows(); } }).setData(defaultValue) //标的资产 var selFlag = tradeHelper.UnderlyingSelectFlag; var underlyingCtrl = tradeHelper.UnderlyingAutoComplete('QuotaRange-UnderlyingId', { UseAll:true, SelectFlag: selFlag.UsePinYinFilter | selFlag.UseForTrading | selFlag.IncludeSynthetic | selFlag.IncludeMatured | selFlag.IncludeBasket | selFlag.CheckLaunch, BlackLimit: 2, }); underlyingCtrl.setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade); underlyingCtrl.onSelect((data) => { underlyingId = data.id; setRows(); }); underlyingCtrl.setData(defaultValue); $("#QuotaType").on("change", function (e) { setRows(); $("#listGrid1").jqGrid('setGridWidth', $('#remark').width()); }); }); function GetPostData() { var postData = {}; postData.TradeNumber = $("#TradeNumber").val(); postData.ClientId = $("#ClientId").val(); postData.ClientNumber = $("#ClientNumber").val(); postData.UnderlyingId = $("#UnderlyingId").val(); postData.SummaryType = $("#myTab .active a").text(); return postData; } function setRows() { $("#QuotaRange-UnderlyingId").parents(".search-group").hide(); $("#QuotaRange-ClienetId").parents(".search-group").hide(); $("#QuotaRange-PercentDays").parents(".search-group").hide(); $("#QuotaRange-AssetUnitId").parents(".search-group").hide(); var quotaType = $("#QuotaType").val(); var rows = quotaSettings; var range = 0; switch (quotaType) { case "3": $("#QuotaRange-UnderlyingId").parents(".search-group").show(); range = underlyingId; break; case "5": $("#QuotaRange-ClienetId").parents(".search-group").show(); range = $("#QuotaRange-ClienetId").val() | 0; break; case "18": $("#QuotaRange-AssetUnitId").parents(".search-group").show(); range = $("#QuotaRange-AssetUnitId").val() | 0; break; case "15": $("#QuotaRange-PercentDays").parents(".search-group").show(); //range = $("#QuotaRange-PercentDays").val() | 0; break; } if (range != 0) { var exist = false; _.forEach(rows, (item) => { if (item.QuotaRange == range && item.QuotaType == $("#QuotaType").val()) { exist = true; return; } }); if (!exist) { range = 0; } } g_grid.jqGrid("clearGridData"); for (var i = 0; i < rows.length; i++) { if (rows[i].QuotaType != quotaType) { continue; } if (rows[i].QuotaType == "15") { $("#QuotaRange-PercentDays").val(rows[i].QuotaRange); } else if (rows[i].QuotaRange != range) { continue; } g_grid.jqGrid('addRowData', rows[i].id, rows[i]); g_grid.jqGrid('editRow', rows[i].id, false); } $(".editable").on("input", function () { var inputValue = $(this).val(); var showValue = toThousands(inputValue, false); $(this).val(showValue); }); } function changePercent(obj) { if (obj.text === "%") { obj.text = "¥"; obj.title = '点击后切换成百分比'; } else { obj.text = "%"; obj.title = '点击后切换成数值'; } } function gridComplete(obj) { $("#listGrid1_QuotaIndex").css("background", "#BBF8F9"); $("#listGrid1_QuotaLowerLimit,#listGrid1_QuotaUpperLimit").css("background", "#EE7280"); $("#listGrid1_WarningLowerLimit,#listGrid1_WarningUpperLimit").css("background", "#F4F262"); $("#listGrid1").jqGrid('setGridWidth', $('#remark').width() - 20); } function save() { var arr = []; var quotaType = $("#QuotaType").val(); var remark = $("#remark").val(); var quotaRange = 0; switch (quotaType) { case "3": quotaRange = underlyingId; break; case "5": quotaRange = $("#QuotaRange-ClienetId").val(); break; case "15": quotaRange = $("#QuotaRange-PercentDays").val(); break; case "18": quotaRange = $("#QuotaRange-AssetUnitId").val(); break; default: break; } var ids = g_grid.getDataIDs(); _.forEach(ids, (v) => { var item = g_grid.getRowData(v); item.QuotaType = quotaType; item.Precheck = $("#Precheck_" + v).prop("checked"); item.QuotaRange = quotaRange; var index = item.QuotaIndex.indexOf('<'); if (index > 0) { item.QuotaIndex = item.QuotaIndex.substring(0, index) } item.Percent = item.Percent.indexOf("%") >= 0; if (item.Percent) { item.QuotaUpperLimit = $("#" + v + "_QuotaUpperLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_QuotaUpperLimit").val()) / 100; item.QuotaLowerLimit = $("#" + v + "_QuotaLowerLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_QuotaLowerLimit").val()) / 100; item.WarningUpperLimit = $("#" + v + "_WarningUpperLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_WarningUpperLimit").val()) / 100; item.WarningLowerLimit = $("#" + v + "_WarningLowerLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_WarningLowerLimit").val()) / 100; } else { item.QuotaUpperLimit = $("#" + v + "_QuotaUpperLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_QuotaUpperLimit").val()); item.QuotaLowerLimit = $("#" + v + "_QuotaLowerLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_QuotaLowerLimit").val()); item.WarningUpperLimit = $("#" + v + "_WarningUpperLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_WarningUpperLimit").val()); item.WarningLowerLimit = $("#" + v + "_WarningLowerLimit").val() === "" ? "NaN" : removeThousands($("#" + v + "_WarningLowerLimit").val()); if (item.QuotaIndex.indexOf("名义本金") != -1) { item.QuotaIndex = item.QuotaIndex.replace("(万)", ""); item.QuotaUpperLimit = item.QuotaUpperLimi == "NaN" ?"NaN": item.QuotaUpperLimit * quotaMonitorMultiple; item.QuotaLowerLimit = item.QuotaLowerLimit == "NaN" ? "NaN" : item.QuotaLowerLimit * quotaMonitorMultiple; item.WarningUpperLimit = item.WarningUpperLimit == "NaN" ? "NaN" : item.WarningUpperLimit * quotaMonitorMultiple; item.WarningLowerLimit = item.WarningLowerLimit == "NaN" ? "NaN" : item.WarningLowerLimit * quotaMonitorMultiple; } } arr.push(item); }) var res = { BusinessTotalScale: $("#BusinessTotalScale").val(), BusinessAvailableFunds: $("#BusinessAvailableFunds").val(), SingleUnderlyingRate: $("#SingleUnderlyingRate").val(), QuotaSettings: arr, Remark: remark, }; $.ajax({ type: "Post", url: "/risk/SaveQuotaSetting", data: res, dataType: "json", success: function (res) { if (res && res.msg) { main.alert(res.msg, function () { layer.closeMe(); }); } }, beforeSend(jqXHR) { main.waitMe(true); }, complete(jqXHR, textStatus) { main.waitMe(false); } }); } // 千分位展示 function toThousands(num, percent) { if (percent) { return num; } num = num.toString().replace(/,/g, ""); var parts = num.split('.'); let integerPart = parts[0]; const regex = /(\d+)(\d{3})/; while (regex.test(integerPart)) { integerPart = integerPart.replace(regex, '$1,$2'); } // 返回处理后的整数部分和小数部分(如果有) return parts.length === 2 ? integerPart + '.' + parts[1] : integerPart; } // 移除千分位 function removeThousands(num) { return Number(num.replace(/,/g, "")); } const tipObj = { "Delta敞口(多空比)": "单一合约品种所有合约(含现货)多头合计Delta与空头合计Delta的比值", Delta净敞口比例: "场内场外的净敞口/场外期权应对冲delta\r\ndelta多空相加的时候要轧差\r\n场外期权应对冲delta约等于-场外期权delta", 产品占用资金限额: "主体为“产品”的对手方购买场外期权支付的期权费及缴纳的初始预付金合计", 轧差集中度: "(本次交易的挂钩标的券面+所有存续合约中该券的券面)/该券的发行量" }; var colModel = [ { name: 'id', label: '', index: 'id', width: 120, align: 'left', sortable: false, hidden: true }, { name: 'QuotaIndex', label: '限额指标', index: 'QuotaIndex', width: 150, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { var html = cellvalue; if (tipObj[cellvalue]) { html += '