const assert = require("assert"); const fs = require("fs"); const path = require("path"); const source = fs.readFileSync( path.resolve(__dirname, "../../src/views/ccdiProject/components/detail/FamilyAssetLiabilityDetail.vue"), "utf8" ); [ "收入明细", "负债明细", "资产明细", "本人收入", "配偶收入", "本人资产小计", "配偶资产小计", "本人负债小计", "配偶负债小计", "el-table", "el-empty", ].forEach((token) => assert(source.includes(token), token)); assert(source.includes("missingSelfAssetInfo"), "资产卡片应支持缺少信息判断"); 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));"), "三个详情卡片应横向均分" ); assert(source.includes("@media (max-width: 1200px)"), "中小屏应保留响应式回落");