mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-11-08 01:48:56 +08:00
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
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import lazyLoading from "./lazyLoading.js";
|
||||
import lazyLoading from "./lazyLoading.js";
|
||||
import { getRouter } from "./router-holder";
|
||||
import { useAppStore } from "@/stores/app";
|
||||
import Cookies from "js-cookie";
|
||||
|
||||
let util = {};
|
||||
@@ -176,22 +177,21 @@ util.oneOf = function(ele, targetArr) {
|
||||
};
|
||||
|
||||
// 打开新的页面
|
||||
util.openNewPage = function(vm, name, argu, query) {
|
||||
if (!vm.$store) {
|
||||
return;
|
||||
}
|
||||
let pageOpenedList = vm.$store.state.app.pageOpenedList;
|
||||
const currentPath = vm.$route ? vm.$route.path : "";
|
||||
util.openNewPage = function(name, argu, query) {
|
||||
const appStore = useAppStore();
|
||||
let pageOpenedList = appStore.pageOpenedList;
|
||||
const router = getRouter();
|
||||
const currentPath = router ? router.currentRoute.value.path : "";
|
||||
const openedIndex = util.findOpenedPageIndex(pageOpenedList, name, currentPath);
|
||||
if (openedIndex >= 0) {
|
||||
vm.$store.commit("pageOpenedList", {
|
||||
appStore.updateOpenedList({
|
||||
index: openedIndex,
|
||||
argu: argu,
|
||||
query: query
|
||||
});
|
||||
return;
|
||||
}
|
||||
let tag = vm.$store.state.app.tagsList.filter(item => {
|
||||
let tag = appStore.tagsList.filter(item => {
|
||||
if (item.children) {
|
||||
return name == item.children[0].name;
|
||||
} else {
|
||||
@@ -200,7 +200,7 @@ util.openNewPage = function(vm, name, argu, query) {
|
||||
});
|
||||
tag = tag[0];
|
||||
if (!tag) {
|
||||
tag = vm.$store.state.app.tagsList.find((item) => {
|
||||
tag = appStore.tagsList.find((item) => {
|
||||
const candidate = item.children ? item.children[0] : item;
|
||||
return util.isSameRoutePage(candidate, { name, path: currentPath });
|
||||
});
|
||||
@@ -217,7 +217,7 @@ util.openNewPage = function(vm, name, argu, query) {
|
||||
if (query) {
|
||||
tagObj.query = query;
|
||||
}
|
||||
vm.$store.commit("increateTag", tagObj);
|
||||
appStore.increateTag(tagObj);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -245,8 +245,9 @@ util.toDefaultPage = function(routers, name, route, next) {
|
||||
}
|
||||
};
|
||||
|
||||
util.initRouter = function(vm) {
|
||||
util.initRouter = function() {
|
||||
// 初始化路由
|
||||
const appStore = useAppStore();
|
||||
const constRoutes = [];
|
||||
const otherRoutes = [];
|
||||
|
||||
@@ -267,7 +268,7 @@ util.initRouter = function(vm) {
|
||||
// 未登录
|
||||
return;
|
||||
}
|
||||
if (!vm.$store.state.app.added) {
|
||||
if (!appStore.added) {
|
||||
// 第一次加载 读取数据
|
||||
// 加载菜单
|
||||
import("@/api/index").then(({ getCurrentPermissionList }) => {
|
||||
@@ -293,26 +294,25 @@ util.initRouter = function(vm) {
|
||||
}
|
||||
util.initAllMenuData(constRoutes, menuData);
|
||||
util.registerDynamicRoutes(menuData);
|
||||
vm.$store.commit(
|
||||
"updateAppRouter",
|
||||
appStore.updateAppRouter(
|
||||
constRoutes.filter((item) => item.children && item.children.length > 0)
|
||||
);
|
||||
util.initMenuData(vm, menuData);
|
||||
util.initMenuData(menuData);
|
||||
// 缓存数据 修改加载标识
|
||||
window.localStorage.setItem("menuData", JSON.stringify(menuData));
|
||||
vm.$store.commit("setAdded", true);
|
||||
appStore.setAdded(true);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// 读取缓存数据
|
||||
let data = window.localStorage.getItem("menuData");
|
||||
if (!data) {
|
||||
vm.$store.commit("setAdded", false);
|
||||
appStore.setAdded(false);
|
||||
return;
|
||||
}
|
||||
let menuData = JSON.parse(data);
|
||||
util.registerDynamicRoutes(menuData);
|
||||
util.initMenuData(vm, menuData);
|
||||
util.initMenuData(menuData);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -330,7 +330,8 @@ util.initAllMenuData = function(constRoutes, data) {
|
||||
};
|
||||
|
||||
// 生成菜单格式数据
|
||||
util.initMenuData = function(vm, data) {
|
||||
util.initMenuData = function(data) {
|
||||
const appStore = useAppStore();
|
||||
const menuRoutes = [];
|
||||
let menuData = data;
|
||||
// 顶部菜单 —— 首页固定置顶
|
||||
@@ -345,26 +346,26 @@ util.initMenuData = function(vm, data) {
|
||||
if (navList.length < 1) {
|
||||
return;
|
||||
}
|
||||
// 存入vuex
|
||||
vm.$store.commit("setNavList", navList);
|
||||
// 存入pinia
|
||||
appStore.setNavList(navList);
|
||||
let currNav = window.localStorage.getItem("currNav");
|
||||
if (currNav) {
|
||||
// 读取缓存title
|
||||
for (var item of navList) {
|
||||
if (item.name == currNav) {
|
||||
vm.$store.commit("setCurrNavTitle", item.title);
|
||||
appStore.setCurrNavTitle(item.title);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 默认首页
|
||||
currNav = 'home_index';
|
||||
vm.$store.commit("setCurrNavTitle", '首页');
|
||||
appStore.setCurrNavTitle('首页');
|
||||
}
|
||||
vm.$store.commit("setCurrNav", currNav);
|
||||
appStore.setCurrNav(currNav);
|
||||
// 首页不需要二级菜单
|
||||
if (currNav === 'home_index') {
|
||||
vm.$store.commit("updateMenulist", []);
|
||||
appStore.updateMenulist([]);
|
||||
return;
|
||||
}
|
||||
for (let item of menuData) {
|
||||
@@ -376,20 +377,19 @@ util.initMenuData = function(vm, data) {
|
||||
}
|
||||
util.initRouterNode(menuRoutes, menuData);
|
||||
// 刷新界面菜单
|
||||
vm.$store.commit(
|
||||
"updateMenulist",
|
||||
appStore.updateMenulist(
|
||||
menuRoutes.filter(item => item.children.length > 0)
|
||||
);
|
||||
|
||||
let tagsList = [];
|
||||
vm.$store.state.app.routers.map(item => {
|
||||
appStore.routers.map(item => {
|
||||
if (item.children.length <= 1) {
|
||||
tagsList.push(item.children[0]);
|
||||
} else {
|
||||
tagsList.push(...item.children);
|
||||
}
|
||||
});
|
||||
vm.$store.commit("setTagsList", tagsList);
|
||||
appStore.setTagsList(tagsList);
|
||||
};
|
||||
|
||||
// 生成路由节点
|
||||
|
||||
Reference in New Issue
Block a user