diff --git a/docs/plans/frontend/2026-06-02-project-analysis-asset-credit-detail-tabs-frontend-implementation.md b/docs/plans/frontend/2026-06-02-project-analysis-asset-credit-detail-tabs-frontend-implementation.md new file mode 100644 index 00000000..01936eeb --- /dev/null +++ b/docs/plans/frontend/2026-06-02-project-analysis-asset-credit-detail-tabs-frontend-implementation.md @@ -0,0 +1,28 @@ +# 结果总览详情弹窗资产与征信页签前端实施计划 + +## 目标 + +在项目详情“结果总览 - 风险总览 - 查看详情”弹窗中,将资产分析和征信页签从占位展示改为真实详情展示。 + +## 实施范围 + +- `资产分析` 页签复用员工家庭资产负债专项核查中的资产详情展示组件。 +- `征信摘要` 页签改名为 `征信详情`,复用征信信息维护中的详情展示结构。 +- 不新增后端接口,不调整后端权限、SQL 或业务口径。 + +## 前端改动 + +- 抽取征信详情展示组件 `CreditInfoDetail`,并在征信信息维护详情弹窗中复用。 +- 新增征信详情标准化 helper,以详情接口返回的 `negativeInfo` 和 `debtList` 计算展示字段,不依赖征信列表行。 +- 在项目分析弹窗中按页签懒加载资产详情和征信详情: + - 资产详情调用 `getFamilyAssetLiabilityDetail(projectId, staffIdCard)`。 + - 征信详情调用 `getCreditInfoDetail(staffIdCard)`。 + - 同一次打开弹窗内已加载页签不重复请求。 + - 缺少项目或人员身份证号时只展示页签内提示,不发起请求。 +- `getCreditInfoDetail` 使用 `encodeURIComponent(personId)` 拼接路径。 + +## 验证计划 + +- 使用 `nvm use` 后运行相关前端静态测试。 +- 运行前端生产构建验证组件引用与模板编译。 +- 启动真实前后端后,用浏览器进入项目详情页,在结果总览风险总览中点击“查看详情”,分别验证资产分析和征信详情页签。 diff --git a/docs/reports/implementation/2026-06-02-project-analysis-asset-credit-detail-tabs-implementation.md b/docs/reports/implementation/2026-06-02-project-analysis-asset-credit-detail-tabs-implementation.md new file mode 100644 index 00000000..de37a312 --- /dev/null +++ b/docs/reports/implementation/2026-06-02-project-analysis-asset-credit-detail-tabs-implementation.md @@ -0,0 +1,40 @@ +# 结果总览详情弹窗资产与征信页签前端实施记录 + +## 修改内容 + +- 新增征信详情展示组件,统一展示征信摘要、负面信息和负债信息。 +- 征信信息维护详情弹窗改为复用征信详情展示组件,列表、上传和删除逻辑保持不变。 +- 项目分析弹窗中: + - `资产分析` 页签改为展示员工家庭资产负债专项核查资产详情。 + - `征信摘要` 页签改名为 `征信详情`,改为展示征信信息维护详情。 + - 资产与征信详情按页签懒加载,并在弹窗关闭、重新打开或人员切换时重置详情状态。 +- 征信详情接口路径拼接改为编码人员标识。 +- 同步更新结果总览弹窗静态页签文案和前端静态测试断言。 + +## 影响范围 + +- 前端页面: + - 结果总览项目分析弹窗 + - 征信信息维护详情弹窗 +- 前端接口: + - `getCreditInfoDetail` + - `getFamilyAssetLiabilityDetail` 仅被结果总览弹窗新增复用 +- 后端接口、数据库和权限未改动。 + +## 验证情况 + +- 已执行前端聚焦静态测试: + - `project-analysis-dialog-*.test.js` + - `credit-info-*.test.js` + - `special-check-detail-*.test.js` + - `special-check-family-asset-liability-api.test.js` + - `special-check-family-table.test.js` +- 已执行 `npm run build:prod`,构建通过;仅保留现有资源体积类提示。 +- 已使用真实浏览器验证项目详情页结果总览风险总览的 `查看详情` 弹窗: + - `资产分析` 页签展示员工家庭资产负债专项核查资产详情组件。 + - `征信详情` 页签展示征信详情组件,包含征信摘要、负面信息和负债信息。 + - 测试结束后已关闭本次启动的前端 dev server。 + +## 备注 + +- 当前仓库中已有的资金图谱相关后端改动不属于本次实施范围,未处理。 diff --git a/ruoyi-ui/src/api/ccdiCreditInfo.js b/ruoyi-ui/src/api/ccdiCreditInfo.js index 0971c9c8..69bcb150 100644 --- a/ruoyi-ui/src/api/ccdiCreditInfo.js +++ b/ruoyi-ui/src/api/ccdiCreditInfo.js @@ -26,7 +26,7 @@ export function listCreditInfo(query) { export function getCreditInfoDetail(personId) { return request({ - url: '/ccdi/creditInfo/' + personId, + url: '/ccdi/creditInfo/' + encodeURIComponent(personId), method: 'get' }) } diff --git a/ruoyi-ui/src/views/ccdiCreditInfo/components/CreditInfoDetail.vue b/ruoyi-ui/src/views/ccdiCreditInfo/components/CreditInfoDetail.vue new file mode 100644 index 00000000..4e06dbe8 --- /dev/null +++ b/ruoyi-ui/src/views/ccdiCreditInfo/components/CreditInfoDetail.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/ruoyi-ui/src/views/ccdiCreditInfo/components/creditDetailViewModel.js b/ruoyi-ui/src/views/ccdiCreditInfo/components/creditDetailViewModel.js new file mode 100644 index 00000000..d88200c8 --- /dev/null +++ b/ruoyi-ui/src/views/ccdiCreditInfo/components/creditDetailViewModel.js @@ -0,0 +1,25 @@ +function sumDebtTotalAmount(debts) { + if (!Array.isArray(debts)) { + return 0; + } + return debts.reduce((total, item) => total + Number(item.debtTotalAmount || 0), 0); +} + +export function normalizeCreditDetail(data = {}, row = {}) { + const negativeInfo = data.negativeInfo || {}; + const debts = Array.isArray(data.debtList) ? data.debtList : []; + return { + personId: data.personId || row.idCard || "", + personName: data.personName || row.name || "", + idCard: data.idCard || data.personId || row.idCard || "", + queryDate: data.queryDate || negativeInfo.queryDate, + debtCount: debts.length, + debtTotalAmount: sumDebtTotalAmount(debts), + negativeInfo, + debts, + }; +} + +export function createEmptyCreditDetail() { + return normalizeCreditDetail(); +} diff --git a/ruoyi-ui/src/views/ccdiCreditInfo/index.vue b/ruoyi-ui/src/views/ccdiCreditInfo/index.vue index 038d364b..be6d17bc 100644 --- a/ruoyi-ui/src/views/ccdiCreditInfo/index.vue +++ b/ruoyi-ui/src/views/ccdiCreditInfo/index.vue @@ -122,35 +122,7 @@ -
征信摘要
- - 征信查询日期:{{ formatQueryDate(detailForm.queryDate) }} - 负债笔数:{{ detailForm.debtCount || 0 }} - 负债总额:{{ detailForm.debtTotalAmount || 0 }} - - -
负面信息
- - 民事案件笔数:{{ detailForm.civilCnt || 0 }} - 强制执行笔数:{{ detailForm.enforceCnt || 0 }} - 行政处罚笔数:{{ detailForm.admCnt || 0 }} - - - 民事案件金额:{{ detailForm.negativeInfo.civilLmt || 0 }} - 强制执行金额:{{ detailForm.negativeInfo.enforceLmt || 0 }} - 行政处罚金额:{{ detailForm.negativeInfo.admLmt || 0 }} - - -
负债信息
- - - - - - - - - +