#!/usr/bin/env node /** * D5: report-result.vue DAN 测评报告页清理 (debt 120) * * 1) template 6 处 RadarChart 内联色属性(fillColor/gridColor/labelColor x2 组)绑定到 data.chartColors * 2) style 块 7 色映射全局等值令牌 * 3) style 块 15 个专属色(紫罗兰系 + 青/米黄/灰阶)收编为页面级局部 SCSS 变量 */ const fs = require('fs'); const F = 'pages/dan-assessment/report-result.vue'; let src = fs.readFileSync(F, 'utf8'); // ---- 1. template 内联色属性 -> 动态绑定 ---- const TEMPLATE_REPL = [ ['fillColor="#6366F1"', ':fill-color="chartColors.wisdomFill"'], ['gridColor="#EEF0F6"', ':grid-color="chartColors.grid"'], ['labelColor="#1F2937"', ':label-color="chartColors.label"'], ['fillColor="#8B5CF6"', ':fill-color="chartColors.violetFill"'], ['gridColor="#F0ECFA"', ':grid-color="chartColors.gridViolet"'], ['labelColor="#5B21B6"', ':label-color="chartColors.labelViolet"'], ]; for (const [from, to] of TEMPLATE_REPL) { if (!src.includes(from)) console.warn('TPL NOT FOUND:', from); src = src.split(from).join(to); } // ---- 2. script 顶部插入 JS 色板 + import ---- const PALETTE_JS = [ "import { getDanReportDetail } from '../../utils/api.js'", "import RadarChart from '../../components/RadarChart.vue'", "import { BrandColors } from '../../utils/brand-colors.js'", "", "// DAN 报告页专属色板(雷达图填充/网格/标签靛蓝+紫罗兰双主题)", "var REPORT_COLORS = {", " wisdomFill: BrandColors.dimWisdom, // #6366F1 能力雷达填充(靛蓝)", " grid: '#EEF0F6', // 能力雷达网格灰", " label: '#1F2937', // 能力雷达标签深灰", " violetFill: '#8B5CF6', // 大五人格雷达填充(紫罗兰)", " gridViolet: '#F0ECFA', // 大五雷达网格浅紫", " labelViolet: '#5B21B6', // 大五雷达标签深紫", "};", ].join('\n'); src = src.replace( "import { getDanReportDetail } from '../../utils/api.js'\nimport RadarChart from '../../components/RadarChart.vue'", PALETTE_JS ); // data() 注入 chartColors src = src.replace( / return \{\n reportId: null,/, " return {\n chartColors: REPORT_COLORS,\n reportId: null," ); // ---- 3. style 块 ---- const styleIdx = src.indexOf(']*>\s*\n)/, '$1' + palette + '\n'); fs.writeFileSync(F, before + styleBody); console.log('D5 done');