调整专项核查详情展示并补充家庭资产负债测试数据

This commit is contained in:
wkc
2026-03-24 21:34:38 +08:00
parent eaea112831
commit adb6b00ed0
19 changed files with 816 additions and 34 deletions

View File

@@ -24,32 +24,6 @@
</div>
</section>
<section class="detail-block">
<div class="block-header">
<div>
<div class="block-title">资产明细</div>
<div class="block-subtitle">展示本人及配偶资产小计与明细列表</div>
</div>
</div>
<div v-if="!assetDetail.missingSelfAssetInfo" class="detail-summary">
<span>本人资产小计{{ formatAmount(assetDetail.selfTotalAsset) }}</span>
<span>配偶资产小计{{ formatAmount(assetDetail.spouseTotalAsset) }}</span>
</div>
<el-table v-if="assetItems.length" :data="assetItems" size="mini" class="detail-table">
<el-table-column prop="assetName" label="资产名称" min-width="140" />
<el-table-column prop="assetMainType" label="资产大类" min-width="100" />
<el-table-column prop="assetSubType" label="资产小类" min-width="120" />
<el-table-column prop="holderName" label="持有人" min-width="100" />
<el-table-column label="当前估值" min-width="120">
<template slot-scope="scope">
<span>{{ formatAmount(scope.row.currentValue) }}</span>
</template>
</el-table-column>
<el-table-column prop="valuationDate" label="估值日期" min-width="120" />
</el-table>
<el-empty v-else :image-size="64" description="暂无资产明细" />
</section>
<section class="detail-block">
<div class="block-header">
<div>
@@ -72,15 +46,51 @@
<span>{{ formatAmount(scope.row.principalBalance) }}</span>
</template>
</el-table-column>
<el-table-column prop="queryDate" label="查询日期" min-width="120" />
<el-table-column label="查询日期" min-width="160">
<template slot-scope="scope">
<span>{{ formatDetailDateTime(scope.row.queryDate) }}</span>
</template>
</el-table-column>
</el-table>
<el-empty v-else :image-size="64" description="暂无负债明细" />
</section>
<section class="detail-block">
<div class="block-header">
<div>
<div class="block-title">资产明细</div>
<div class="block-subtitle">展示本人及配偶资产小计与明细列表</div>
</div>
</div>
<div v-if="!assetDetail.missingSelfAssetInfo" class="detail-summary">
<span>本人资产小计{{ formatAmount(assetDetail.selfTotalAsset) }}</span>
<span>配偶资产小计{{ formatAmount(assetDetail.spouseTotalAsset) }}</span>
</div>
<el-table v-if="assetItems.length" :data="assetItems" size="mini" class="detail-table">
<el-table-column prop="assetName" label="资产名称" min-width="140" />
<el-table-column prop="assetMainType" label="资产大类" min-width="100" />
<el-table-column prop="assetSubType" label="资产小类" min-width="120" />
<el-table-column prop="holderName" label="持有人" min-width="100" />
<el-table-column label="当前估值" min-width="120">
<template slot-scope="scope">
<span>{{ formatAmount(scope.row.currentValue) }}</span>
</template>
</el-table-column>
<el-table-column label="估值日期" min-width="160">
<template slot-scope="scope">
<span>{{ formatDetailDateTime(scope.row.valuationDate) }}</span>
</template>
</el-table-column>
</el-table>
<el-empty v-else :image-size="64" description="暂无资产明细" />
</section>
</div>
</div>
</template>
<script>
import { parseTime } from "@/utils/ruoyi";
export default {
name: "FamilyAssetLiabilityDetail",
props: {
@@ -140,6 +150,17 @@ export default {
maximumFractionDigits: 2,
})} 元`;
},
formatDetailDateTime(value) {
if (!value) {
return "-";
}
const formatted = parseTime(value, "{y}-{m}-{d} {h}:{i}:{s}");
if (!formatted) {
return "-";
}
const hasTime = !formatted.endsWith(" 00:00:00");
return parseTime(value, hasTime ? "{y}-{m}-{d} {h}:{i}:{s}" : "{y}-{m}-{d}") || "-";
},
},
};
</script>

View File

@@ -36,16 +36,16 @@
<span>{{ formatAmount(scope.row.totalIncome) }}</span>
</template>
</el-table-column>
<el-table-column label="家庭总资产" min-width="140">
<template slot-scope="scope">
<span>{{ formatAmount(scope.row.totalAsset) }}</span>
</template>
</el-table-column>
<el-table-column label="家庭总负债" min-width="140">
<template slot-scope="scope">
<span>{{ formatAmount(scope.row.totalDebt) }}</span>
</template>
</el-table-column>
<el-table-column label="家庭总资产" min-width="140">
<template slot-scope="scope">
<span>{{ formatAmount(scope.row.totalAsset) }}</span>
</template>
</el-table-column>
<el-table-column label="风险情况" min-width="120">
<template slot-scope="scope">
<el-tag size="mini" effect="plain" :type="resolveRiskTagType(scope.row.riskLevelCode)">

View File

@@ -20,6 +20,23 @@
:title="sectionTitle"
:subtitle="sectionSubtitle"
/>
<section class="graph-placeholder-card">
<div class="graph-placeholder-header">
<div>
<div class="graph-placeholder-title">图谱外链展示</div>
<div class="graph-placeholder-subtitle">用于后续接入外链图谱页面</div>
</div>
<el-tag size="mini" type="info" effect="plain">占位中</el-tag>
</div>
<div class="graph-placeholder-body">
<div class="graph-placeholder-text">
当前卡片用于预留专项核查图谱入口后续接入外链地址后可在此直接跳转展示
</div>
<el-button type="primary" size="small" disabled>待接入</el-button>
</div>
</section>
</div>
</div>
</template>
@@ -129,4 +146,48 @@ export default {
.special-check-page {
min-height: 400px;
}
.graph-placeholder-card {
margin-top: 16px;
min-height: 500px;
padding: 20px;
background: #fff;
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
}
.graph-placeholder-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
}
.graph-placeholder-title {
font-size: 16px;
font-weight: 600;
color: #1f2937;
}
.graph-placeholder-subtitle {
margin-top: 4px;
font-size: 12px;
color: #94a3b8;
}
.graph-placeholder-body {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
margin-top: 18px;
padding: 16px 18px;
border: 1px dashed #dbeafe;
background: #f8fbff;
}
.graph-placeholder-text {
font-size: 14px;
line-height: 22px;
color: #475569;
}
</style>

View File

@@ -0,0 +1,25 @@
const assert = require("assert");
const fs = require("fs");
const path = require("path");
const componentPath = path.resolve(
__dirname,
"../../src/views/ccdiProject/components/detail/FamilyAssetLiabilityDetail.vue"
);
const source = fs.readFileSync(componentPath, "utf8");
[
"formatDetailDateTime(value)",
'return parseTime(value, hasTime ? "{y}-{m}-{d} {h}:{i}:{s}" : "{y}-{m}-{d}") || "-";',
"{{ formatDetailDateTime(scope.row.valuationDate) }}",
"{{ formatDetailDateTime(scope.row.queryDate) }}",
].forEach((token) => {
assert(source.includes(token), `专项核查详情日期展示缺少关键实现: ${token}`);
});
assert(
source.includes("const hasTime = !formatted.endsWith(\" 00:00:00\");"),
"专项核查详情应隐藏无意义的零点时间"
);
console.log("special-check-detail-date-display test passed");

View File

@@ -9,8 +9,8 @@ const source = fs.readFileSync(
[
"收入明细",
"资产明细",
"负债明细",
"资产明细",
"本人收入",
"配偶收入",
"本人资产小计",
@@ -26,6 +26,15 @@ assert(source.includes("missingSelfDebtInfo"), "负债卡片应支持缺少信
assert(source.includes('v-if="!assetDetail.missingSelfAssetInfo"'), "资产小计应可隐藏");
assert(source.includes('v-if="!debtDetail.missingSelfDebtInfo"'), "负债小计应可隐藏");
const incomeIndex = source.indexOf("收入明细");
const debtIndex = source.indexOf("负债明细");
const assetIndex = source.indexOf("资产明细");
assert(incomeIndex > -1, "缺少收入明细卡片");
assert(debtIndex > -1, "缺少负债明细卡片");
assert(assetIndex > -1, "缺少资产明细卡片");
assert(incomeIndex < debtIndex && debtIndex < assetIndex, "详情卡片顺序应为收入、负债、资产");
assert(
source.includes("grid-template-columns: repeat(3, minmax(0, 1fr));"),
"三个详情卡片应横向均分"

View File

@@ -12,8 +12,8 @@ const source = fs.readFileSync(
"身份证号",
"所属部门",
"家庭总年收入",
"家庭总资产",
"家庭总负债",
"家庭总资产",
"风险情况",
"操作",
"查看详情",
@@ -23,3 +23,15 @@ const source = fs.readFileSync(
assert(source.includes("loading"), "列表区块应接收加载状态");
assert(source.includes("rows"), "列表区块应消费列表数据");
const incomeIndex = source.indexOf('label="家庭总年收入"');
const debtIndex = source.indexOf('label="家庭总负债"');
const assetIndex = source.indexOf('label="家庭总资产"');
assert(incomeIndex > -1, "缺少家庭总年收入列");
assert(debtIndex > -1, "缺少家庭总负债列");
assert(assetIndex > -1, "缺少家庭总资产列");
assert(
incomeIndex < debtIndex && debtIndex < assetIndex,
"汇总列顺序应为家庭总年收入、家庭总负债、家庭总资产"
);