Files
lilishop-ui/seller/MIGRATION-VUE3.md
lifenlong 88fc1b0b2a refactor: 四端完成 Options API → script setup + vuex → pinia 迁移
- buyer(95) / seller(169) / im(53) / manager(280) 共 597 个组件全部从 Options API 转换为 <script setup>
- 四端 vuex 全部移除,状态管理统一迁移至 pinia 4(stores/ 目录)
- util.js 等基础设施去除 vm 首参依赖;全局属性($Message/$filters 等)在 script 内改为具名导入
- 被外部 ref 访问的公共组件均已补齐 defineExpose(清单见各端 MIGRATION-VUE3.md)
- 各端 eslint 启用 vue/component-api-style 防止新代码回退 Options API
- 四端 yarn build 全部通过;迁移约定与注意事项已更新至各端 MIGRATION-VUE3.md
2026-10-13 07:06:59 +08:00

67 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# seller Vue 3 + Element Plus 迁移说明
## 已完成
- 依赖升级:`vue@3`、`vue-router@4`、`element-plus`、`vue-lazyload@3`、`pinia@4`
- 入口:`src/main.js`(`createApp` + `createPinia`)
- 路由、动态路由、全局 `$Message` / `$Modal` / `$Notice`、`$filters`
- 移除 `view-design`,`axios` 已改用 `@/utils/message`
- 页面装修模块从 manager 同步(`shop/wap`、`shop/modelList` 等)
- 订单、促销、分销、统计等业务页从 manager 迁移并适配商家 API
- `yarn run build` 编译通过
## 组合式 API 迁移(2026-10 完成)
全部 169 个 `.vue` 组件已从 Options API 转换为 `<script setup>`,并完成 vuex → pinia:
- **状态管理**:`src/stores/` 下 4 个 store(`app` / `user` / `setting` / `dict`),原 `src/store/`(vuex)已删除,package.json 不再依赖 vuex。原 mutation 全部转为同名 action,两个例外:`storeOpenedList` mutation 改名 `updateOpenedList`(避免与 state 同名);`clearOtherTags` 改收路由 name 字符串(不再传组件实例 vm)。
- **util.js 去 vm 化**:`src/libs/util.js` 所有函数的 `vm` 首参已删除,内部直接用 `useAppStore()`。调用方式从 `util.openNewPage(this, name)` 变为 `util.openNewPage(name)`。
- **defineExpose 清单**(被外部通过 ref 访问的公共组件,改动其内部成员时注意保持暴露面):
- `lili-dialog/index.vue`:`open` / `goodsData` / `goodsFlag` / `flag` / `clearGoodsSelected` / `singleGoods`
- `lili-dialog/goods-dialog.vue`:`type`
- `sys/oss-manage/ossManage.vue`:`selectImage`
- `my-components/verify/index.vue`:`show` / `init`
- `my-components/map/multiple-map.vue`:`open`
- `lili-components/editor/index.vue`(Tinymce):`getEditor` / `setContent` / `getContent`
- `my-components/lili/department-tree-choose.vue`:`setData` / `clearSelect`
- `lili-components/multiple-region.vue`:`clear` / `open`
- `main-components/config-drawer.vue`:`open` / `close`
- `shop/hotzone/index.vue`:`open` / `close`;`shop/hotzone/components/Zone.vue`:`showModalFn` / `delItem`;`shop/hotzone/components/Hotzone.vue`:`addItem` / `isOverRange` / `overRange` / `changeItem` / `eraseItem` / `zones`(被自定义指令经 `binding.instance` 访问)
- `shop/modelForm.vue`:`navList` / `topAdvert`;`goods-seller/goodsOperation.vue`:`activestep`;`goods-seller/goodsOperationFirst.vue`:`selectGoodsType`;`goods-seller/components/AppointmentPublishPanel.vue`:全部 20 个方法
- **保留 `export default` 普通 script 块的文件**(统计 Options API 残留时需排除):`shop/wap/template/` 下 3 个 `tpl_*` 组件(保留自定义 `title` 选项)。
- **修复的历史笔误**:多处 `this.$message`(小写)修正为 `Message`(全局只注册了 `$Message`,原写法运行时会抛 TypeError)——appointment 模块 4 处、goods.vue 1 处等。
- **其余两端(manager / im)仍为 Options API + vuex**,迁移时参照本端与 buyer 端模式。
## 本地运行
```bash
cd seller
yarn install
yarn run dev
```
Node **16+**,包管理统一 **yarn**。商家后台默认端口见 `src/config/index.js`(10002)。
## 本轮补充(样式 / 商品发布)
- `goodsOperation.vue`:`el-steps` 步骤条
- `goodsOperationFirst.vue` / `goodsOperationSec.vue`:去除 iView 图标、`ButtonGroup`
- `shop/hotzone/index.vue`:`el-dialog` 热区弹窗
- `common.scss` / `table-common.scss`:列表页双 Card 间距、`el-form-item` 对齐
- `addGoods.scss` / `home.scss` 等:`:deep()` 语法修复
## 可选后续
- 业务代码中仍可使用 `this.$Message` / `this.$Modal`(兼容层映射到 Element Plus)
- 样式文件中残留的 `.ivu-*` 类名可逐步清理
- 商品发布三步流程建议上线前重点回归测试
## 迁移脚本
- `scripts/migrate-iview-to-element.js` — 从 manager 复制装修模板 + 批量替换
- `scripts/copy-manager-migrations.js` — 从 manager 复制已迁移业务页
## 上线前检查
四端统一清单(认证、axios、Element Plus、分端专项):[../MIGRATION-VUE3.md](../MIGRATION-VUE3.md)