From a617ed6d93c14ae2b8b25a2ca6f3b5dbd34e3e75 Mon Sep 17 00:00:00 2001 From: hjhan Date: Wed, 8 Jul 2026 08:56:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(valuation):=20=E4=BA=92=E6=8D=A2=E4=BC=B0?= =?UTF-8?q?=E5=80=BCTab=20=E6=8E=A5=E5=85=A5=E5=88=86=E7=BB=84=E6=8A=98?= =?UTF-8?q?=E5=8F=A0=20+=20=E7=B0=BF=E8=AE=B0=E7=AD=9B=E9=80=89=20+=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对应需求《估值模块V1》模块二:每日估值报告 - 互换估值Tab 改动: 1. 新增 eodSwapValuationGroupConfig 分组配置(4组:基本信息/利率与规模/价格/收益) 现有列顺序已天然满足分组连续性,无需重排,风险最低 2. gridComplete 在 setcolumnChooser 完成后初始化可折叠分组表头 保留原有异常行标红(dataError)逻辑 3. 新增簿记账户筛选(需求3.1):cshtml 加 BookId 下拉,searchPositionDetials 传 BookId 未选择时传空,后端返回该对手方下全部账户合约 4. 新增「导出互换估值」按钮(需求3.2+4.2),走通用 exportVisibleColumnsToExcel 文件名:{对手方}_每日估值报告_互换估值_{估值日}.xls 与现有 DownLoadReport(整份报告)独立,互不影响 缺失字段(TODO,待后端确认):期间分红、预付金系列(利率/利息/期初/追加)、TRS估值 测试要点:簿记筛选生效、分组表头显示、折叠交互、异常行标红不受影响、导出可用 --- .../TradeMarketReport_EodPosition.cshtml | 2 ++ .../TradeMarketReport_EodPosition.js | 32 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/YLErpWeb/Views/SwapTrade2/TradeMarketReport_EodPosition.cshtml b/YLErpWeb/Views/SwapTrade2/TradeMarketReport_EodPosition.cshtml index 551ef10d..1429aaec 100644 --- a/YLErpWeb/Views/SwapTrade2/TradeMarketReport_EodPosition.cshtml +++ b/YLErpWeb/Views/SwapTrade2/TradeMarketReport_EodPosition.cshtml @@ -51,6 +51,7 @@
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient(), false, true, null, false) + @Html.MyAceDropdownInput("BookId", "簿记账户", AssetunitController.GetClientassetunit(), false, true, null, false) @Html.CheckBox("ParentFlag", false) @Html.Label(null,"包含子级", new { @style = "font-size:12px;" }) @Html.ShortInput("ValueDateFrom", "起始日期:") @Html.ShortInput("ValueDate", "结束日期:") @@ -60,6 +61,7 @@ @MyControls.Btn("配置报告", "PopDesc()") @MyControls.Btn("发送报告", "SendReport()") } +

diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/TradeMarketReport_EodPosition.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/TradeMarketReport_EodPosition.js index 15284100..9a6deb23 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/TradeMarketReport_EodPosition.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/TradeMarketReport_EodPosition.js @@ -91,6 +91,8 @@ function SearchTable(isSearchclick) { function searchPositionDetials(isSearchclick) { var listGrid = $('#listGrid'); listGrid.appendPostData({ ClientId: $("#ClientId").val() }); + //簿记账户筛选(需求3.1):未选择时传空,后端返回该对手方下全部账户的合约 + listGrid.appendPostData({ BookId: $("#BookId").val() }); listGrid.appendPostData({ ValueDate: $("#ValueDate").val() }); if ($("#ParentFlag").prop("checked")) listGrid.appendPostData({ ParentFlag: true }); @@ -132,6 +134,7 @@ function onSortCol(index, icol, sortorder) { var i = 0; var colModelGrid = [ + //隐藏列(不参与分组) { name: 'position.EncryptId', label: 'EncryptId', @@ -326,6 +329,19 @@ var colModelGrid = [ formatter: StockEqvNotionalFormat, sortable: false, } + //TODO(估值模块V1-缺失字段): 以下需求字段本轮未实现,待后端确认数据来源后补充: + // - 期间分红(ETF适用,利率与规模分组) + // - 预付金利率、预付金利息、期初预付金、追加预付金(预付金分组) + // - TRS估值(汇总分组) +]; + +//互换估值分组配置(对应需求《估值模块V1》3.2.2 字段定义) +//columns 使用 colModel.name;现有列顺序已天然满足分组连续性,无需重排 +var eodSwapValuationGroupConfig = [ + { title: '基本信息', columns: ['TradeNumber', 'ConfrimNo', 'ClientName', 'position.PosiStartDate', 'position.ValueDate', 'position.UnderlyingCode'] }, + { title: '利率与规模', columns: ['InterestRate', 'position.FloatRateUnderlyingCode', 'position.FloatRate', 'position.PosiNotionalValue', 'position.PosiQuantity', 'PeriodAmount'] }, + { title: '价格', columns: ['position.PosiGrossPrice', 'InitYtm', 'position.UnderlyingPrice', 'DayCount'] }, + { title: '收益', columns: ['FloatRateAbs', 'InterestAmount', 'position.PosiFeePending', 'position.PosiProfitSum', 'NetSettmentAmount'] } ]; function formatter6(cellvalue, options, rowObject) { @@ -356,11 +372,25 @@ function gridComplete() { } } //jgrid.sortGrid(g_sort.name, g_sort.order); - main.setcolumnChooser(jgrid, page.configcolumn); + //在列设置应用完成后初始化可折叠分组表头(setcolumnChooser 会 remapColumns,须在其 done 回调后建表头) + var defer = main.setcolumnChooser(jgrid, page.configcolumn); + $.when(defer).done(function () { + main.initCollapsibleGroupHeaders(jgrid, eodSwapValuationGroupConfig); + }); $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" }); $(window).off('resize.jqGrid'); } +//导出互换估值当前可见列(需求《估值模块V1》3.2 + 4.2) +//与现有 DownLoadReport(整份PDF/Excel报告)独立,互不影响 +function exportSwapValuationVisibleColumns() { + var jgrid = jQuery('#listGrid'); + var clientName = $("#ClientId :selected").text() || ''; + var dateStr = $("#ValueDate").val() || ''; + var fileName = (clientName ? clientName + '_' : '') + '每日估值报告_互换估值' + (dateStr ? '_' + dateStr : ''); + main.exportVisibleColumnsToExcel(jgrid, fileName); +} + function reloadTradeMarketReport() { //重新加载