| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #!/usr/bin/env node
- /**
- * D16: PearlDiagram.vue 珍珠图组件清理 (debt 69)
- * 22 个行业类别色迁移到 utils/brand-colors.js 的 INDUSTRY_COLORS 导出,页面只引用常量
- * template #FFFFFF -> BrandColors.white
- */
- const fs = require('fs');
- const F = 'pages/action-detail/components/PearlDiagram.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 ----
- repl(
- "import { addPearlInteraction, updatePearlPriority } from '@/utils/api.js'",
- "import { addPearlInteraction, updatePearlPriority } from '@/utils/api.js'\nimport { BrandColors, INDUSTRY_COLORS } from '@/utils/brand-colors.js'"
- );
- // ---- 2. 行业色引用 ----
- const MAP = [
- ['#DC2626', 'INDUSTRY_COLORS.PUBLIC_SECURITY'],
- ['#EA580C', 'INDUSTRY_COLORS.AUTO'],
- ['#D97706', 'INDUSTRY_COLORS.REAL_ESTATE'],
- ['#CA8A04', 'INDUSTRY_COLORS.TICKETING'],
- ['#B45309', 'INDUSTRY_COLORS.HANDYMAN'],
- ['#92400E', 'INDUSTRY_COLORS.APPLIANCE'],
- ['#E11D48', 'INDUSTRY_COLORS.CATERING'],
- ['#BE123C', 'INDUSTRY_COLORS.FOOD'],
- ['#B91C1C', 'INDUSTRY_COLORS.LEGAL'],
- ['#FB7185', 'INDUSTRY_COLORS.WEEKEND_EXPERT'],
- ['#8B5CF6', 'INDUSTRY_COLORS.GOVERNMENT'],
- ['#7C3AED', 'INDUSTRY_COLORS.TAX'],
- ['#6D28D9', 'INDUSTRY_COLORS.BUSINESS_ADMIN'],
- ['#2563EB', 'INDUSTRY_COLORS.BANK'],
- ['#1D4ED8', 'INDUSTRY_COLORS.MEDIA'],
- ['#0EA5E9', 'INDUSTRY_COLORS.TRAVEL'],
- ['#0891B2', 'INDUSTRY_COLORS.LEADING_ENTERPRISE'],
- ['#059669', 'INDUSTRY_COLORS.INDUSTRY_BENCHMARK'],
- ['#16A34A', 'INDUSTRY_COLORS.UNIVERSITY'],
- ['#84CC16', 'INDUSTRY_COLORS.FINANCE'],
- ['#65A30D', 'INDUSTRY_COLORS.SENIOR_LOCAL'],
- ['#4D7C0F', 'INDUSTRY_COLORS.KEY_CITY'],
- ];
- // 只在 color: '#XXX' 上下文中替换,避免误伤(原文件这些色仅出现于 color 字段)
- for (const [f, t] of MAP) {
- const pat = "color: '" + f + "'";
- const cnt = src.split(pat).length - 1;
- if (cnt === 0) { console.warn('NOT FOUND color:', f); continue; }
- src = src.split(pat).join("color: " + t);
- replaced += cnt;
- }
- // ---- 3. template #FFFFFF ----
- repl("color: '#FFFFFF'", "color: BrandColors.white");
- fs.writeFileSync(F, src);
- console.log('total replaced:', replaced);
- const lines = src.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)) { console.log('HEX ' + (i + 1) + ': ' + L); n++; }
- }
- console.log('remaining hex lines:', n);
|