| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/usr/bin/env node
- /**
- * D15: traditional.vue 传统天盘页清理 (debt 72)
- * script 五行/数字/五维色板全部收编 BrandColors(含 import)
- * template 头像 fallback 绑定 data
- * style #FFF8F0 -> $dim-body-tint
- */
- const fs = require('fs');
- const F = 'pages/tianpan/traditional.vue';
- let src = fs.readFileSync(F, 'utf8');
- let replaced = 0;
- function repl(from, to) {
- const cnt = src.split(from).length - 1;
- if (cnt === 0) { console.warn('NOT FOUND:', from.slice(0, 90)); return; }
- src = src.split(from).join(to);
- replaced += cnt;
- }
- // ---- 1. import(接在首个 import 后)----
- const m = src.match(/<script>([\s\S]{0,200})/);
- console.log('script head:', JSON.stringify(m[1].slice(0, 120)));
- if (!src.includes('utils/brand-colors.js')) {
- src = src.replace('<script>', "<script>\nimport { BrandColors } from '../../utils/brand-colors.js'");
- }
- // ---- 2. template fallback ----
- repl("backgroundColor: member.colorHex || '#6B7280'", "backgroundColor: member.colorHex || memberColorFallback");
- repl(" currentUser: null,", " currentUser: null,\n memberColorFallback: BrandColors.textSlate,");
- // ---- 3. 五行色板 ----
- repl("var colorMap = { wood: '#10B981', fire: '#FF6B9D', earth: '#FF8C42', metal: '#6366F1', water: '#3B82F6' }",
- "var colorMap = { wood: BrandColors.success, fire: BrandColors.mind, earth: BrandColors.body, metal: BrandColors.wisdom, water: BrandColors.infoBlue }");
- repl("colorMap[key] || '#94A3B8'", "colorMap[key] || BrandColors.appTextSubtle");
- // ---- 4. 数字色板 + 五维色板 ----
- repl("var colors = { 1: '#F97316', 2: '#EC4899', 3: '#8B5CF6', 4: '#F59E0B', 5: '#3B82F6', 6: '#10B981', 7: '#6366F1",
- "var colors = { 1: BrandColors.primary, 2: BrandColors.pink, 3: BrandColors.violet, 4: BrandColors.wealth, 5: BrandColors.infoBlue, 6: BrandColors.success, 7: BrandColors.wisdom");
- repl("return colors[num] || '#6B7280'", "return colors[num] || BrandColors.textSlate");
- repl("var colors = { body: '#FF8C42', mind: '#FF6B9D', wisdom: '#6366F1', action: '#10B981', wealth: '#F59E0B' }",
- "var colors = { body: BrandColors.body, mind: BrandColors.mind, wisdom: BrandColors.wisdom, action: BrandColors.action, wealth: BrandColors.wealth }");
- repl("return colors[key] || '#6B7280'", "return colors[key] || BrandColors.textSlate");
- // ---- 5. style ----
- const styleIdx = src.indexOf('<style');
- const before = src.slice(0, styleIdx);
- let styleBody = src.slice(styleIdx);
- styleBody = styleBody.replace(/#FFF8F0(?![0-9a-fA-F])/gi, '$dim-body-tint');
- fs.writeFileSync(F, before + styleBody);
- console.log('total replaced:', replaced);
|