From 615ee91511afd58de2907afb36d0d1d67652d645 Mon Sep 17 00:00:00 2001 From: "pikachu1995@126.com" Date: Mon, 25 May 2026 10:49:09 +0800 Subject: [PATCH] =?UTF-8?q?manager=20=E5=8D=87=E7=BA=A7=E5=88=B0vue3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/MIGRATION-VUE3.md | 59 + manager/babel.config.js | 11 +- manager/package.json | 48 +- manager/public/index.html | 5 +- manager/src/App.vue | 40 +- manager/src/components/affix-time.vue | 198 +- manager/src/components/editor/index.vue | 2 +- manager/src/components/editor/plugins.js | 2 +- .../src/components/editor/upload-image.vue | 250 +-- .../components/hotzone/components/Zone.vue | 51 +- manager/src/components/hotzone/index.vue | 23 +- .../components/lili-dialog/goods-dialog.vue | 72 +- manager/src/components/lili-dialog/index.vue | 23 +- .../components/lili-dialog/link-dialog.vue | 24 +- manager/src/components/lili-dialog/style.scss | 6 +- .../components/lili-dialog/template/index.js | 31 +- .../lili-dialog/template/marketing.vue | 412 +---- .../components/lili-dialog/template/other.vue | 185 +- .../components/lili-dialog/template/pages.vue | 6 +- .../components/lili-dialog/template/shops.vue | 85 +- .../lili-dialog/template/special.vue | 138 +- .../src/components/lili/circle-loading.vue | 20 +- manager/src/components/lili/config-drawer.vue | 68 +- .../src/components/lili/department-choose.vue | 56 +- .../lili/department-tree-choose.vue | 126 +- manager/src/components/lili/set-password.vue | 156 +- .../src/components/lili/upload-pic-input.vue | 214 +-- .../src/components/lili/upload-pic-thumb.vue | 242 ++- manager/src/components/map/index.vue | 7 +- manager/src/components/map/multiple-map.vue | 117 +- manager/src/components/price-color-scheme.vue | 58 + manager/src/components/region.vue | 237 +-- .../src/components/tree-table/Table/Table.vue | 9 +- .../components/tree-table/Table/TableBody.js | 49 +- .../tree-table/Table/utils/scrollBarWidth.js | 22 +- manager/src/components/verify/index.vue | 160 +- manager/src/libs/axios.js | 2 +- manager/src/libs/util.js | 156 +- manager/src/locale/index.js | 34 +- manager/src/main.js | 154 +- manager/src/plugins/element.js | 11 + manager/src/router/index.js | 74 +- manager/src/store/index.js | 25 +- manager/src/store/modules/app.js | 9 +- manager/src/store/modules/user.js | 3 +- manager/src/styles/common.scss | 47 +- manager/src/styles/element.scss | 97 + manager/src/styles/table-common.scss | 10 +- manager/src/styles/theme.less | 16 +- manager/src/styles/tree-common.scss | 4 +- manager/src/utils/message.js | 74 + manager/src/views/Main.vue | 202 +- .../views/change-password/change-password.vue | 163 +- manager/src/views/custom-words/index.vue | 241 +-- .../src/views/distribution/distribution.vue | 477 ++--- .../views/distribution/distributionApply.vue | 222 +-- .../views/distribution/distributionCash.vue | 394 ++-- .../views/distribution/distributionGoods.vue | 320 ++-- .../views/distribution/distributionOrder.vue | 483 ++--- .../distribution/distributionSetting.vue | 68 +- manager/src/views/error-page/403.vue | 44 +- manager/src/views/error-page/404.vue | 30 +- manager/src/views/error-page/500.vue | 45 +- manager/src/views/goods-unit/index.vue | 259 +-- manager/src/views/goods/goods-info/goods.vue | 707 +++---- .../src/views/goods/goods-info/goodsApply.vue | 361 ++-- .../views/goods/goods-info/goodsDetail.vue | 294 +-- .../src/views/goods/goods-manage/brand.vue | 452 ++--- .../src/views/goods/goods-manage/category.vue | 560 +++--- .../goods/goods-manage/parameter-edit.vue | 218 +-- .../views/goods/goods-manage/parameter.vue | 177 +- .../src/views/goods/goods-review/index.vue | 465 ++--- manager/src/views/goods/group/index.vue | 182 +- .../src/views/goods/virtual-sales/index.vue | 344 ++-- manager/src/views/home/home.scss | 2 +- manager/src/views/home/home.vue | 107 +- manager/src/views/login.vue | 112 +- manager/src/views/logistics/index.vue | 534 +++--- manager/src/views/main-parts/footer.vue | 19 +- manager/src/views/main-parts/header.vue | 52 +- manager/src/views/main-parts/lang-switch.vue | 23 +- manager/src/views/main-parts/message-tip.vue | 133 +- .../src/views/main-parts/page-breadcrumb.vue | 201 ++ .../shrinkable-menu/shrinkable-menu.vue | 139 +- .../src/views/main-parts/tags-page-opened.vue | 275 ++- manager/src/views/main.scss | 89 +- manager/src/views/member/advance/recharge.vue | 291 ++- .../src/views/member/advance/walletLog.vue | 202 +- .../views/member/advance/withdrawApply.vue | 484 +++-- manager/src/views/member/benefit/index.vue | 570 +++--- .../src/views/member/grade/experience-log.vue | 164 +- .../views/member/grade/experience-setting.vue | 618 +++---- manager/src/views/member/grade/index.vue | 426 ++--- manager/src/views/member/group/index.vue | 197 +- manager/src/views/member/list/index.vue | 877 ++++----- .../src/views/member/list/memberDetail.vue | 1639 +++++++---------- .../src/views/member/list/memberRecycle.vue | 464 ++--- .../message-manage/weChatMessageManager.vue | 456 ++--- manager/src/views/member/point/point.vue | 870 ++++----- .../src/views/order/after-order/afterSale.vue | 526 ++---- .../order/after-order/afterSaleOrder.vue | 623 +++---- .../after-order/afterSaleOrderDetail.vue | 60 +- .../order/after-order/orderComplaint.vue | 423 ++--- .../after-order/orderComplaintDetail.vue | 365 ++-- manager/src/views/order/flow/paymentLog.vue | 282 ++- manager/src/views/order/flow/refundLog.vue | 278 ++- .../views/order/order/fictitiousOrderList.vue | 370 ++-- manager/src/views/order/order/orderDetail.vue | 482 ++--- manager/src/views/order/order/orderList.vue | 737 +++----- .../src/views/page-decoration/floorList.vue | 302 +-- .../src/views/page-decoration/modelForm.vue | 184 +- .../views/page-decoration/modelFormItem.vue | 60 +- .../page-decoration/modelList/carousel.vue | 62 +- .../page-decoration/modelList/carousel1.vue | 48 +- .../page-decoration/modelList/carousel2.vue | 98 +- .../modelList/firstPageAdvert.vue | 46 +- .../page-decoration/modelList/forYour.vue | 62 +- .../modelList/goodsAndType.vue | 54 +- .../page-decoration/modelList/mixModel.vue | 74 +- .../modelList/mixs/mix-brand.vue | 4 +- .../modelList/mixs/mix-goods.vue | 2 +- .../modelList/newGoodsSort.vue | 88 +- .../page-decoration/modelList/notEnough.vue | 28 +- .../modelList/oneRowThreeColumns.vue | 32 +- .../modelList/onlyGoodsModel.vue | 28 +- .../page-decoration/modelList/recommend.vue | 88 +- .../modelList/seckill-only-album.vue | 6 +- .../page-decoration/modelList/seckill.vue | 6 +- .../src/views/page-decoration/renovation.vue | 36 +- .../views/page-decoration/wap/advertising.vue | 30 +- .../page-decoration/wap/alertAdvertising.vue | 28 +- .../views/page-decoration/wap/decorate.scss | 4 +- .../views/page-decoration/wap/decorate.vue | 215 +-- .../src/views/page-decoration/wap/index.vue | 38 +- .../src/views/page-decoration/wap/navbar.vue | 42 +- .../src/views/page-decoration/wap/style.scss | 2 +- .../wap/template/tpl_banner.vue | 10 +- .../wap/template/tpl_goods.vue | 13 +- .../wap/template/tpl_search.vue | 4 +- .../src/views/page-decoration/wap/wapList.vue | 264 +-- .../page/article-manage/ArticleCategory.vue | 348 ++-- .../page/article-manage/HOTWORDS_HISTORY.vue | 212 +-- .../page/article-manage/HOTWORDS_TODAY.vue | 144 +- .../page/article-manage/HOTWORD_SETTING.vue | 188 +- .../views/page/article-manage/articleList.vue | 482 ++--- .../views/page/article-manage/hotWords.vue | 60 +- .../src/views/page/article-manage/style.scss | 4 +- .../src/views/page/article-manage/template.js | 8 +- .../template/historyHotWords.vue | 113 +- .../article-manage/template/setupHotWords.vue | 67 +- .../template/statisticsHotWords.vue | 75 +- .../article-manage/template/todayHotWords.vue | 142 +- manager/src/views/page/feedback/feedback.vue | 313 ++-- .../views/personal-center/personal-center.vue | 46 +- manager/src/views/privacy-content/index.vue | 317 ++-- .../coupon-activity/coupon-info.vue | 139 +- .../coupon-activity/coupon-publish.vue | 417 ++--- .../promotions/coupon-activity/coupon.vue | 336 ++-- .../promotions/coupon/coupon-publish.vue | 326 ++-- .../promotions/coupon/coupon-receive.vue | 378 ++-- .../src/views/promotions/coupon/coupon.vue | 623 +++---- .../full-discount/full-discount-detail.vue | 257 ++- .../full-discount/full-discount.vue | 310 ++-- .../gift-card-cash-activity-add.vue | 101 +- .../gift-card-cash-activity.vue | 419 ++--- .../gift-card-cash-batch-credentials.vue | 277 ++- .../gift-card-cash/gift-card-cash-records.vue | 836 ++++----- .../kanjia/kanjia-activity-add-goods.vue | 262 +-- .../kanjia/kanjia-activity-edit-goods.vue | 454 ++--- .../kanjia/kanjia-activity-goods.vue | 476 +++-- .../src/views/promotions/live/live-detail.vue | 255 +-- manager/src/views/promotions/live/live.vue | 249 +-- .../promotions/pintuan/pintuan-goods.vue | 232 ++- .../src/views/promotions/pintuan/pintuan.vue | 261 ++- .../points-goods-category.vue | 289 ++- .../points-goods/points-goods-add.vue | 299 ++- .../points-goods/points-goods-edit.vue | 278 +-- .../promotions/points-goods/points-goods.vue | 476 +++-- .../views/promotions/seckill/seckill-add.vue | 143 +- .../promotions/seckill/seckill-goods.vue | 333 ++-- .../promotions/seckill/seckill-setup.vue | 119 +- .../src/views/promotions/seckill/seckill.vue | 379 ++-- manager/src/views/region/index.vue | 436 +---- .../seller/bill/accountStatementBill.vue | 259 ++- manager/src/views/seller/bill/bill-detail.vue | 859 ++++----- manager/src/views/seller/bill/bill.vue | 257 +-- .../src/views/seller/shop/shopAuditList.vue | 317 ++-- manager/src/views/seller/shop/shopDetail.scss | 4 + manager/src/views/seller/shop/shopDetail.vue | 1605 ++++++++-------- manager/src/views/seller/shop/shopList.vue | 476 ++--- .../src/views/seller/shop/shopOperation.vue | 576 +++--- manager/src/views/sensitive-words/index.vue | 244 +-- manager/src/views/statistics/goods.vue | 87 +- manager/src/views/statistics/member.vue | 137 +- manager/src/views/statistics/order.vue | 372 ++-- .../views/statistics/order/orderDetail.vue | 10 +- .../views/statistics/order/refundOrder.vue | 15 +- manager/src/views/statistics/traffic.vue | 119 +- .../src/views/sys/app-version/appVersion.vue | 447 ++--- .../department-manage/departmentManage.vue | 416 ++--- .../src/views/sys/log-manage/logManage.vue | 323 +--- manager/src/views/sys/menu-manage/menu.vue | 441 +++-- .../src/views/sys/menu-manage/menuManage.vue | 31 +- .../src/views/sys/menu-manage/storeMenu.vue | 441 +++-- .../sys/message/noticeMessageTemplate.vue | 1576 +++++++--------- manager/src/views/sys/message/sms.vue | 1020 +++++----- manager/src/views/sys/message/smsSign.vue | 296 ++- .../src/views/sys/oss-manage/ossManage.vue | 374 ++-- .../src/views/sys/role-manage/roleManage.vue | 673 +++---- .../authLogin/CONNECT_SETTING.vue | 87 +- .../setting-manage/authLogin/QQ_CONNECT.vue | 113 +- .../authLogin/WECHAT_CONNECT.vue | 111 +- .../sys/setting-manage/pay/ALIPAY_PAYMENT.vue | 50 +- .../setting-manage/pay/PAYMENT_SUPPORT.vue | 128 +- .../sys/setting-manage/pay/WECHAT_PAYMENT.vue | 100 +- .../sys/setting-manage/platformSetting.vue | 1090 ++++++----- .../setting-manage/setting/BASE_SETTING.vue | 143 +- .../setting-manage/setting/GOODS_SETTING.vue | 140 +- .../sys/setting-manage/setting/IM_SETTING.vue | 18 +- .../setting/LOGISTICS_SETTING.vue | 111 +- .../setting-manage/setting/ORDER_SETTING.vue | 77 +- .../setting-manage/setting/OSS_SETTING.vue | 130 +- .../setting-manage/setting/POINT_SETTING.vue | 123 +- .../setting-manage/setting/SMS_SETTING.vue | 134 +- .../setting/WITHDRAWAL_SETTING.vue | 62 +- .../sys/setting-manage/setting/style.scss | 12 +- .../sys/setting-manage/settingManage.vue | 41 +- .../sys/setting-manage/smsSettingManage.vue | 251 ++- .../src/views/sys/setting-manage/template.js | 31 +- manager/src/views/sys/slider/slider.vue | 428 ++--- .../src/views/sys/user-manage/userManage.vue | 560 ++---- .../components/WxChannelsCategoryTab.vue | 83 +- .../components/WxChannelsGoodsTab.vue | 138 +- .../components/WxChannelsOrderTab.vue | 163 +- .../components/WxChannelsOverviewTab.vue | 97 +- .../components/WxChannelsRefundTab.vue | 172 +- .../components/WxChannelsSettingTab.vue | 46 +- manager/src/views/wx-channel/wxChannel.vue | 32 +- manager/vue.config.js | 139 +- 239 files changed, 22907 insertions(+), 30841 deletions(-) create mode 100644 manager/MIGRATION-VUE3.md create mode 100644 manager/src/components/price-color-scheme.vue create mode 100644 manager/src/plugins/element.js create mode 100644 manager/src/styles/element.scss create mode 100644 manager/src/utils/message.js create mode 100644 manager/src/views/main-parts/page-breadcrumb.vue diff --git a/manager/MIGRATION-VUE3.md b/manager/MIGRATION-VUE3.md new file mode 100644 index 00000000..4d127bca --- /dev/null +++ b/manager/MIGRATION-VUE3.md @@ -0,0 +1,59 @@ +# manager Vue 3 + Element Plus 迁移说明 + +## 已完成(P1–P3 骨架) + +- 依赖升级:`vue@3`、`vue-router@4`、`vuex@4`、`vue-i18n@9`、`element-plus` +- 入口:`src/main.js`(`createApp`) +- 路由、动态路由、全局 `$Message` / `$Modal` / `$Notice`、`$filters`、`priceColorScheme`、`vue-qr@5` +- TinyMCE:移除已弃用 `template` 插件 + +## P5 批量修复(Table / 过滤器) + +列表页 **60+** 已 `el-table`;过滤器已改为 `$filters.*`;全项目已无 `$set` / `$options.filters`。 + +## P6 表单 / 弹窗(已完成模块) + +| 模块 | 状态 | +|------|------| +| 地区、秒杀设置、分销设置、修改密码、编辑器、链接弹窗 | ✅ | +| 店铺详情 / 店铺编辑 `shopOperation.vue` | ✅ | +| 售后详情 `afterSaleOrderDetail.vue` | ✅ | +| **系统设置** `sys/setting-manage/**`(19 个 vue + template.js) | ✅ | +| **菜单 / 部门** `sys/menu-manage/`、`sys/department-manage/` | ✅ | +| **页面装修** `views/page-decoration/**`(PC + H5 装修、modelList、wap 模板) | ✅ | +| **文章管理** `views/page/article-manage/**` | ✅ | +| **零散页面** 礼品卡、个人中心、热区、促销编辑、视频号、错误页、短信签名等 | ✅ | + +### 系统设置包含 + +- `settingManage.vue`(Tab 壳) +- `platformSetting.vue` +- `setting/`:基础、商品、订单、积分、提现、物流、OSS、短信、客服 +- `pay/`:支付开关、支付宝、微信 +- `authLogin/`:登录、QQ、微信 +- `smsSettingManage.vue` + +`template.js` 中动态组件已 `markRaw`。 + +## 可选后续 + +- `components/tree-table`:旧 JSX 表格,当前路由未引用;`Spin` 已改 `v-loading`,`beforeUnmount` 已对齐 Vue 3 +- 样式文件中残留的 `.ivu-*` 类名可随页面改版逐步清理(不影响运行) + +## 编译告警处理(2026-05) + +- 全项目 `::v-deep` 已改为 Vue 3 推荐的 `:deep(...)` +- `common.scss` 合并 `table-common.scss`,去掉全局 `@import` 注入告警 +- `vue.config.js` 配置 `sassOptions.silenceDeprecations` 抑制 Sass legacy API 提示 +- `common.scss`:`.search > .el-card + .el-card` 恢复列表页双 Card 间距(原 `.ivu-card` 规则已失效) +- `element.scss`:全局 `el-table--border` 去掉列竖线 + +## 本地运行 + +```bash +cd manager +yarn install +yarn run dev +``` + +Node **18+**,包管理统一 **yarn**。 diff --git a/manager/babel.config.js b/manager/babel.config.js index 2ea5d05b..162a3ea9 100644 --- a/manager/babel.config.js +++ b/manager/babel.config.js @@ -1,10 +1,3 @@ module.exports = { - presets: [ - [ - '@vue/app', - { - useBuiltIns: 'entry' - } - ] - ] -} + presets: ["@vue/cli-plugin-babel/preset"], +}; diff --git a/manager/package.json b/manager/package.json index 472bab85..3e89ee27 100644 --- a/manager/package.json +++ b/manager/package.json @@ -10,51 +10,51 @@ "dev": "vue-cli-service serve" }, "engines": { - "node": ">=14" + "node": ">=16" }, "dependencies": { "@amap/amap-jsapi-loader": "0.0.7", "@antv/g2": "^4.1.12", + "@element-plus/icons-vue": "^2.3.1", "axios": "^0.21.1", - "core-js": "^3.6.5", + "core-js": "^3.36.0", "dplayer": "^1.26.0", + "element-plus": "^2.6.3", "js-cookie": "^2.2.1", + "nprogress": "^0.2.0", "price-color": "1.0.2", "sass": "^1.63.6", "sass-loader": "^10.4.1", "sockjs-client": "^1.4.0", "swiper": "^6.3.5", "uuid": "^8.3.2", - "view-design": "^4.7.0", - "vue": "^2.6.10", + "vue": "^3.4.21", "vue-awesome-swiper": "^4.1.1", - "vue-i18n": "^8.15.1", + "vue-i18n": "^9.10.2", "vue-json-excel": "^0.3.0", - "vue-print-nb": "^1.7.5", - "vue-qr": "^2.3.0", - "vue-router": "^3.1.3", - "vuedraggable": "^2.23.2", - "vuex": "^3.4.0", + "vue-qr": "^5.0.3", + "vue-router": "^4.3.0", + "vuedraggable": "^4.1.0", + "vuex": "^4.1.0", "xss": "^1.0.7" }, "devDependencies": { - "@vue/cli-plugin-babel": "^4.4.4", - "@vue/cli-plugin-router": "^4.4.4", - "@vue/cli-plugin-vuex": "^4.4.4", - "@vue/cli-service": "^4.4.4", - "compression-webpack-plugin": "^4.0.0", - "css-loader": "^5.0.1", - "less": "^3.12.2", - "less-loader": "^6.2.0", - "style-loader": "^2.0.0", - "style-resources-loader": "^1.3.2", - "uglifyjs-webpack-plugin": "^2.2.0", - "vue-cli-plugin-style-resources-loader": "^0.1.4", - "vue-template-compiler": "2.6.14" + "webpack": "^5.95.0", + "@vue/cli-plugin-babel": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-service": "^5.0.8", + "@vue/compiler-sfc": "^3.4.21", + "compression-webpack-plugin": "^10.0.0", + "css-loader": "^6.10.0", + "less": "^4.2.0", + "less-loader": "^11.1.4", + "style-loader": "^3.3.4", + "style-resources-loader": "^1.5.0", + "vue-cli-plugin-style-resources-loader": "^0.1.5" }, "resolutions": { "minimatch": "^3.1.2", - "node-sass": "npm:sass@^1.63.6", "@achrinza/node-ipc": "9.2.2" } } diff --git a/manager/public/index.html b/manager/public/index.html index 8841b671..671140da 100644 --- a/manager/public/index.html +++ b/manager/public/index.html @@ -5,7 +5,8 @@ - + + admin @@ -72,7 +73,7 @@ <% } %> - +