| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/usr/bin/env node
- /**
- * D17: report-confirm.vue 报告确认页清理 (debt 69)
- * 与 report-detail 同色板:全局令牌 6 色 + 局部 $c-rpcf-* 8 色
- */
- const fs = require('fs');
- const F = 'pages/health/report-confirm.vue';
- let src = fs.readFileSync(F, 'utf8');
- const styleIdx = src.indexOf('<style');
- const before = src.slice(0, styleIdx);
- let styleBody = src.slice(styleIdx);
- const GLOBAL = [
- ['#D32F2F', '$fortune-0-ink'],
- ['#FFF8E1', '$mat-amber-tint'],
- ['#F57F17', '$mat-amber-strong'],
- ['#66BB6A', '$mat-green-light-2'],
- ['#43A047', '$mat-green-base-2'],
- ['#FFD54F', '$uni-warning-light'],
- ];
- for (const [f, t] of GLOBAL) {
- const esc = f.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
- styleBody = styleBody.replace(new RegExp(esc + '(?![0-9a-fA-F])', 'gi'), t);
- }
- const PAL = [
- ['#E8EDF2', '$c-rpcf-line'],
- ['#F8FAFB', '$c-rpcf-card'],
- ['#FFF0F0', '$c-rpcf-red-bg'],
- ['#FFC107', '$c-rpcf-amber-deep'],
- ['#FF8A65', '$c-rpcf-orange-1'],
- ['#FF5722', '$c-rpcf-orange-2'],
- ['#EF9A9A', '$c-rpcf-red-1'],
- ['#E53935', '$c-rpcf-red-2'],
- ];
- for (const [f, t] of PAL) {
- const esc = f.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
- styleBody = styleBody.replace(new RegExp(esc + '(?![0-9a-fA-F])', 'gi'), t);
- }
- const palette = [
- '// ===== 报告确认页专属色阶(与 report-detail 同族 Material 渐变;单页专用,约定见 uni.scss §14)=====',
- '$c-rpcf-line: #E8EDF2; // 浅灰分隔线',
- '$c-rpcf-card: #F8FAFB; // 卡片底(浅灰白)',
- '$c-rpcf-red-bg: #FFF0F0; // 警示浅红底',
- '$c-rpcf-amber-deep:#FFC107; // Material 琥珀深档',
- '$c-rpcf-orange-1: #FF8A65; // 低档渐变起',
- '$c-rpcf-orange-2: #FF5722; // 低档渐变终',
- '$c-rpcf-red-1: #EF9A9A; // 无档渐变起',
- '$c-rpcf-red-2: #E53935; // 无档渐变终',
- ''
- ].join('\n');
- styleBody = styleBody.replace(/(<style[^>]*>\s*\n)/, '$1' + palette + '\n');
- fs.writeFileSync(F, before + styleBody);
- console.log('D17 done');
- // 重读校验
- const out = fs.readFileSync(F, 'utf8');
- const lines = out.split('\n');
- let n = 0;
- for (let i = 0; i < lines.length; i++) {
- const L = lines[i].trim();
- if (/#[0-9a-fA-F]{3,8}\b/.test(L) && L.charAt(0) !== '$') { console.log('HEX ' + (i + 1) + ': ' + L); n++; }
- }
- console.log('remaining non-palette hex:', n);
|