# 2026-09-18 ## cleaning.vue 组件拆分(Phase 0 完成) - 方案文档:`cleaning-refactor-plan.md`(仓库根),已获用户确认。 - 用户拍板的决策: 1. 模块间通信走 **方案 B:provide/inject + 领域 composable**(不用 props/emits 爆炸式传递) 2. **路由不动** → `cleaning.vue` 保留为入口文件,子模块放同级 `cleaning/` 目录 3. **每阶段停下来给用户 review**,确认后才进下一阶段 4. 样式保持**全局 less(非 scoped)**,不用 `` 两个包裹标签,样式内容全量进了 `styles/*.less` ## ✅ lint / 格式化收口(已做) 用户要求:清未使用 import + 修 `ESLint: Insert ·· (prettier/prettier)`。最优路径就是**用项目自己的 eslint --fix**, 因为 `prettier/prettier` 是 eslint 规则,一把就能把格式和未使用 import 都修掉: ```bash cd ai-frontend pnpm exec eslint --fix "src/case/views/data/cleaning.vue" "src/case/views/data/cleaning/**/*.{ts,vue}" pnpm exec prettier --write "src/case/views/data/cleaning/**/*.less" ``` - `eslint`(不带 --fix)复检:**0 problems**;`prettier --check`(less):**通过** - 未使用 import:我自己写脚本又清了一遍 `cleaning.vue` 里残留的 **24 个绑定** (nextTick / DownOutlined / UpOutlined / Checkbox / InputNumber / Popover / Radio / Select / Switch / Tooltip / EmptyState / BasicTree / FileInfo / tplCategoryList / tplCheckTableName / tplPage / rawPreview / FileStatusEnum / getVisibleOriginOptionList / scrollSelectedTreeNodeIntoView / loadStoredFileList / mockFileList / mockTemplateList / OriginFieldPopover) —— composables 与 components 都是按需生成的,一个多余的都没有 - 最终:`type:check` cleaning 0 报错(89 条既有);`pnpm build` exit 0 ### 两个要知道的副作用 1. **`cleaning.vue` 行数 944 → 1431**:prettier 按 printWidth 把 12 行「接线管线」折成了每行一个名字 (6 条 `const api = useXxx({ ...80 个依赖... })` + 6 条 `const { ...80 个名字... } = api;`)≈ +490 行。 **不是代码变多,是格式化的必然结果**。想让行数回落要把这种大解构改掉(比如让 composable 返回分组对象),属于设计变更。 2. **`styles/*.less` 需要 dedent**:从 `.vue` 的 `