【1. 主题补全】 - pwuniapp/pages/expert/workspace.vue(大神工作台):根节点加 theme class,66 处深色硬编码改为全局主题变量(bg-primary/surface/surface-elevated/text-*/border-subtle/color-brand(-gradient)) - pwuniapp/pages/activity/my-ticket.vue(我的门票):同样接入主题;条码/二维码区域保持黑白(可扫描,不做主题化) - 两页 onShow 刷新 currentThemeKey,切换主题回到页面即时生效 【2. 后台模板 demo 清理】 - 删除模板路由模块:form / list / profile / result / visualization(原本 hideInMenu 不可见) - 删除对应 views 目录、api(form/list/profile/visualization/dashboard)、dashboard/monitor - 删除 src/mock 与全部 views/**/mock.ts,并移除 main.ts 的 `import './mock'` - 可见工作台移除:content-chart(调用不存在的 /api/content-data)、popular-content(写死假活动数据);分类占比卡片改为整行 - 同步清理 zh-CN/en-US locale 中对应导入与展开 【验证】 - 后台 `pnpm build` 通过,产物显著减小(chart 分块 1026KB→576KB) - 新增 theme-and-admin-cleanup.spec.ts;更新 dashboard-reality.spec.ts - 全量 100 套件 / 685 用例全绿
53 行
2.5 KiB
TypeScript
53 行
2.5 KiB
TypeScript
// 已读取AGENTS.md
|
|
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
/**
|
|
* 第八十四批:剩余页面主题补全 + 管理后台模板 demo 清理。
|
|
*/
|
|
describe('第八十四批主题补全与后台清理闸门', () => {
|
|
const root = path.resolve(__dirname, '../../');
|
|
const read = (p: string) => fs.readFileSync(path.join(root, p), 'utf-8');
|
|
const exists = (p: string) => fs.existsSync(path.join(root, p));
|
|
const admin = 'admin/arco-design-pro-vite/src';
|
|
|
|
it('大神工作台/我的门票接入主题(根节点主题类 + 颜色变量)', () => {
|
|
const ws = read('pwuniapp/pages/expert/workspace.vue');
|
|
const mt = read('pwuniapp/pages/activity/my-ticket.vue');
|
|
expect(ws).toContain("'theme-' + currentThemeKey");
|
|
expect(ws).toContain('var(--bg-primary)');
|
|
expect(ws).toContain('var(--bg-surface)');
|
|
expect(ws).toContain('var(--text-primary)');
|
|
expect(ws).toContain('var(--border-subtle)');
|
|
expect(mt).toContain("'theme-' + currentThemeKey");
|
|
expect(mt).toContain('var(--bg-primary)');
|
|
expect(mt).toContain('var(--color-brand');
|
|
// 条码/二维码必须保持黑白(可扫描),不做主题化
|
|
expect(mt).toContain('background-color: #0F172A;');
|
|
expect(mt).toContain('background-color: #FFFFFF;');
|
|
});
|
|
|
|
it('后台模板 demo 路由模块与视图已删除', () => {
|
|
for (const f of ['form.ts', 'list.ts', 'profile.ts', 'result.ts', 'visualization.ts']) {
|
|
expect(exists(`${admin}/router/routes/modules/${f}`)).toBe(false);
|
|
}
|
|
for (const d of ['views/form', 'views/list', 'views/profile', 'views/result', 'views/visualization', 'views/dashboard/monitor', 'mock']) {
|
|
expect(exists(`${admin}/${d}`)).toBe(false);
|
|
}
|
|
for (const f of ['api/form.ts', 'api/list.ts', 'api/profile.ts', 'api/visualization.ts', 'api/dashboard.ts']) {
|
|
expect(exists(`${admin}/${f}`)).toBe(false);
|
|
}
|
|
// 真实业务模块仍在
|
|
for (const f of ['activity.ts', 'banner.ts', 'community.ts', 'companion.ts', 'dashboard.ts', 'finance.ts', 'order.ts', 'safety.ts', 'user.ts']) {
|
|
expect(exists(`${admin}/router/routes/modules/${f}`)).toBe(true);
|
|
}
|
|
});
|
|
|
|
it('可见工作台不再引用失效图表/假活动数据组件,且不再加载 mock', () => {
|
|
const workplace = read(`${admin}/views/dashboard/workplace/index.vue`);
|
|
expect(workplace).not.toContain('ContentChart');
|
|
expect(workplace).not.toContain('PopularContent');
|
|
expect(read(`${admin}/main.ts`)).not.toContain("import './mock'");
|
|
});
|
|
});
|