` 包裹所有 slot 默认内容
- `
` -> ``
**当前进度**(已完成部分):
- ✅ vendorSelect/single.vue
- ✅ iqcSelect/single.vue
- ✅ noticeSelect/single.vue
- ⏳ noticeSelect/lineSingle.vue (进行中)
- ⏳ itemSelect/single.vue (进行中)
- 🔲 其余 26 个组件待迁移
#### 3a.5 迁移采购入库页面(试点验证)
逐一修改以下 4 个文件,按照通用变更清单做 Element Plus 适配:
| 文件 | 说明 |
| --------------------------------------- | ------- |
| `src/views/mes/wm/itemrecpt/index.vue` | 采购入库列表页 |
| `src/views/mes/wm/itemrecpt/form.vue` | 采购入库表单页 |
| `src/views/mes/wm/itemrecpt/line.vue` | 采购入库明细行 |
| `src/views/mes/wm/itemrecpt/detail.vue` | 采购入库详情页 |
**验收标准**: 启动 `vite dev`,能正常访问采购入库列表、新增、编辑、查看详情,无控制台报错。
---
### Phase 3a-2: 迁移公共布局和非 Dialog 组件(~38 个 Vue 文件)
**目标**: 完成 `src/layout/` 和 `src/components/` 中剩余的非 dialog 组件迁移,确保所有公共组件脱离 Element UI。
#### 需要迁移的文件类型
**Layout 组件** (`src/layout/`):
- Layout 主布局组件
- Navbar, Sidebar, TagsView 等导航组件
- AppMain, Settings 等布局子组件
- 约 10-15 个文件
**非 Dialog 公共组件** (`src/components/`):
- Pagination(分页组件)
- FileUpload(文件上传)
- Editor(富文本编辑器,可能使用 Element UI 依赖)
- Breadcrumb(面包屑)
- SvgIcon(SVG 图标,已迁移)
- Dict 相关组件(数据字典)
- TreeSelect, Cascader 等表单组件
- 其他工具类组件(约 20-25 个文件)
**迁移要点**:
- 替换所有 Element UI 组件为 Element Plus
- 更新 `size="mini"` -> `size="small"`
- 移除 `.native` 修饰符
- 更新图标引用方式
- 检查并修复任何使用 `$message`, `$alert` 等全局方法的调用
**验收标准**: 所有 `src/components/` 和 `src/layout/` 文件中不再有 `element-ui` 导入,项目启动无 Element UI 相关警告。
---
### Phase 3b: 仓库管理模块其余页面(64 个 Vue 文件)
**目标**: 确认试点方案可行后,将整个仓库管理模块(`views/mes/wm/`)全部迁移完成。
需要迁移的子模块(按业务分组):
| 分组 | 子模块 | 文件数 |
| --- | -------------------------------------------------------------------------------------------------------- | --- |
| 入库 | arrivalnotice (到货通知), itemrecpt (采购入库✅已完成), outsourcerecpt (委外入库), productrecpt (产品入库), miscrecpt (其他入库) | ~15 |
| 出库 | issue (生产领料), productsales (销售出库), outsourceissue (委外出库), miscissue (其他出库), itemconsume (物料消耗) | ~15 |
| 退料 | rtissue (生产退料), rtsales (销售退货), rtvendor (供应商退货) | ~9 |
| 库存 | wmstock (库存查询), stocktaking (盘点), stocktakingplan (盘点计划), transfer (调拨) | ~10 |
| 基础 | warehouse (仓库), location (库区), area (库位), barcode (条码), batch (批次), sn (序列号), package (包装) | ~13 |
| 通知 | salesnotice (销售通知), mrnotice (物料需求通知) | ~5 |
**验收标准**: 仓库管理菜单下所有页面(列表/表单/详情)均可正常操作,无控制台 Element 组件报错。
---
### Phase 3c: 其余所有页面(~148 个 Vue 文件)+ 全局样式修正
**目标**: 完成所有剩余页面的迁移,项目彻底脱离 Element UI。
| 分组 | 范围 | 文件数 |
| ------ | ------------------------------------------------------------ | --- |
| MES 其他 | `views/mes/` 除 wm 外 (md, pro, dv, qc, report 等) | ~98 |
| 系统管理 | `views/system/` (user, role, menu, dept, dict 等) | ~19 |
| 监控 | `views/monitor/` (online, job, server, cache 等) | ~8 |
| 工具 | `views/tool/` (gen, build 等) | ~12 |
| 打印 | `views/print/` | ~6 |
| 其他 | `views/login.vue`, `views/register.vue`, `views/index.vue` 等 | ~5 |
#### 3c.1 全局样式文件更新
- 更新 [mom-backend-ui/src/assets/styles/](mom-backend-ui/src/assets/styles/) 下的 SCSS 文件中引用 Element UI 类名的部分
- Element Plus 的 CSS 变量命名有差异(如 `--el-color-primary` 等)
- `el-icon-loading` spinner 等全局引用需更新
**验收标准**: 全站所有页面功能正常,无 Element UI 残留引用,`vite build` 成功。
---
## Phase 4: 更新第三方依赖
以下 Vue 2 专属库需要更新为 Vue 3 兼容版本:
| 当前依赖 | 操作 |
| ------------------------- | ------------------------------------------------- |
| `vue-meta` 2.x | 移除,改用 `@unhead/vue` 或 `document.title` |
| `vuedraggable` 2.x | 升级到 `vuedraggable@next` (4.x) |
| `vue-cropper` 0.5 | 升级到 `vue-cropper@next` |
| `@riophae/vue-treeselect` | 替换为 `vue3-treeselect` 或 Element Plus 的 TreeSelect |
| `vue-count-to` | 替换为 Vue 3 兼容版本或自行实现 |
| `vue-plugin-hiprint` | 确认 Vue 3 兼容性,可能需要替换 |
| `echarts` 4.9 | 升级到 5.x |
| `@dhtmlx/trial-vue-gantt` | 确认 Vue 3 兼容版本 |
| `quill` | 替换为 `@vueup/vue-quill` |
| `axios` 0.24 | 升级到 1.x |
---
## Phase 5: 清理和收尾
### 5.1 移除旧配置文件
- 删除 `vue.config.js`
- 删除 `babel.config.js`
- 删除 `.eslintrc.js`(后续可按需重新配置 ESLint flat config)
- 删除 `build/` 目录(preview 脚本)
### 5.2 移除 @vue/compat
当所有组件和功能正常运行后:
- 在 `vite.config.js` 中移除 `'vue': '@vue/compat'` 别名
- 移除 `compatConfig` 编译器选项
- 卸载 `@vue/compat`
- 修复剩余的 Vue 2 兼容性警告
### 5.3 环境变量迁移
- `VUE_APP_*` 环境变量需改为 `VITE_*` 前缀
- `process.env.VUE_APP_*` 改为 `import.meta.env.VITE_*`
- 创建 `.env.development` 和 `.env.production` 文件
---
## 执行建议
- **Phase 1-2** 是基础,已完成,项目可用 `vite` 启动和构建
- **Phase 3a** 先做依赖切换 + 采购入库试点,验证迁移方案的完整流程和模式
- **Phase 3b** 试点通过后,在仓库管理模块内推广,以模块为单位验证
- **Phase 3c** 最后全面铺开,涵盖剩余 layout/components/views
- **Phase 4** 可以与 Phase 3 并行,按需处理
- **Phase 5** 在所有功能验证通过后进行
- 整个过程中暂保留 JavaScript,不转 TypeScript,后续按需迁移
- 每步完成后都应启动 `vite dev` 实际操作验证,确认无功能回退再进入下一步