浏览代码

修复带参页面跳转问题

DESKTOP-NE65RNK\Citrus_limon 1 年之前
父节点
当前提交
0d55fa081e
共有 2 个文件被更改,包括 15 次插入11 次删除
  1. 6 6
      src/components/PageLayout/Side.vue
  2. 9 5
      src/components/PageLayout/Tag.vue

+ 6 - 6
src/components/PageLayout/Side.vue

@@ -2,7 +2,7 @@
   <div class="side-wp">
   <div class="side-wp">
     <lay-menu class="menu-wp" v-model:selected-key="selectedKey" theme="light" v-model:openKeys="openKeys" :tree="true">
     <lay-menu class="menu-wp" v-model:selected-key="selectedKey" theme="light" v-model:openKeys="openKeys" :tree="true">
       <template v-for="item in list">
       <template v-for="item in list">
-        <lay-menu-item :id="item.path" v-if="item.childMenu.length == 0" @click="jumpPage(item.path!)">
+        <lay-menu-item :id="item.path" v-if="item.childMenu.length == 0" @click="jumpPage(item)">
           <template #title>
           <template #title>
             <lay-icon :type="item.icon" />
             <lay-icon :type="item.icon" />
             {{ item.name }}
             {{ item.name }}
@@ -13,7 +13,7 @@
             <lay-icon :type="item.icon" />
             <lay-icon :type="item.icon" />
             {{ item.name }}
             {{ item.name }}
           </template>
           </template>
-          <lay-menu-item :id="items.path" v-for="items in item.childMenu" @click="jumpPage(items.path!)">
+          <lay-menu-item :id="items.path" v-for="items in item.childMenu" @click="jumpPage(items)">
             <span class="child-menu">{{ items.name }}</span>
             <span class="child-menu">{{ items.name }}</span>
           </lay-menu-item>
           </lay-menu-item>
         </lay-sub-menu>
         </lay-sub-menu>
@@ -51,8 +51,8 @@ watchEffect(() => {
   openKeys.value = [`/${route.fullPath.split("/")[1]}`];
   openKeys.value = [`/${route.fullPath.split("/")[1]}`];
 });
 });
 
 
-const jumpPage = (path: string) => {
-  router.push(path);
+const jumpPage = (menu: any) => {
+  router.push({ path: menu.path, query: menu.query });
 };
 };
 
 
 const setSelectedKey = () => {
 const setSelectedKey = () => {
@@ -61,11 +61,11 @@ const setSelectedKey = () => {
   if (Object.keys(selectedMenu).length > 0) {
   if (Object.keys(selectedMenu).length > 0) {
     selectedKey.value = selectedMenu.path;
     selectedKey.value = selectedMenu.path;
     openKeys.value = [`/${selectedMenu.path.split("/")[1]}`];
     openKeys.value = [`/${selectedMenu.path.split("/")[1]}`];
-    jumpPage(selectedMenu.path);
+    jumpPage(selectedMenu);
   } else if (Object.keys(defaultMenu).length > 0) {
   } else if (Object.keys(defaultMenu).length > 0) {
     selectedKey.value = defaultMenu.path;
     selectedKey.value = defaultMenu.path;
     openKeys.value = [`/${defaultMenu.path.split("/")[1]}`];
     openKeys.value = [`/${defaultMenu.path.split("/")[1]}`];
-    jumpPage(defaultMenu.path);
+    jumpPage(defaultMenu);
   }
   }
 };
 };
 setSelectedKey();
 setSelectedKey();

+ 9 - 5
src/components/PageLayout/Tag.vue

@@ -4,7 +4,7 @@
       <!-- <lay-tag class="tag-item" maxWidth="100px" size="lg">
       <!-- <lay-tag class="tag-item" maxWidth="100px" size="lg">
         <lay-icon type="layui-icon-home" @click="jumpPage(homePagePath.path)" />
         <lay-icon type="layui-icon-home" @click="jumpPage(homePagePath.path)" />
       </lay-tag> -->
       </lay-tag> -->
-      <lay-tag class="tag-item" v-for="item in menuList" :closable="menuList.length > 1" maxWidth="100px" size="lg" @click="jumpPage(item.path)" @close="handleClose(item)">
+      <lay-tag class="tag-item" v-for="item in menuList" :closable="menuList.length > 1" maxWidth="100px" size="lg" @click="jumpPage(item)" @close="handleClose(item)">
         <span :class="{ lineheight: route.path == item.path }">{{ item.name }}</span>
         <span :class="{ lineheight: route.path == item.path }">{{ item.name }}</span>
       </lay-tag>
       </lay-tag>
     </div>
     </div>
@@ -27,12 +27,16 @@ interface MenuList {
 const menuList = ref<Array<MenuList>>([]);
 const menuList = ref<Array<MenuList>>([]);
 
 
 watchEffect(() => {
 watchEffect(() => {
-  let routeInfo = { name: route.meta.title, path: route.fullPath, query: route.query };
+  let routeInfo = { name: route.meta.title, path: route.path, query: route.query };
   window.sessionStorage.setItem("_4L_S_MENU_PATH", JSON.stringify(routeInfo));
   window.sessionStorage.setItem("_4L_S_MENU_PATH", JSON.stringify(routeInfo));
   let routeList = window.sessionStorage.getItem("_4L_TAG_LIST");
   let routeList = window.sessionStorage.getItem("_4L_TAG_LIST");
   let tagList = routeList ? JSON.parse(routeList) : [];
   let tagList = routeList ? JSON.parse(routeList) : [];
-  let isTag = tagList.find((item: any) => item.path == routeInfo.path);
+  let isTag = tagList.find((item: any, index: number) => {
+    if (item.path == routeInfo.path) tagList[index].query = routeInfo.query;
+    return item.path == routeInfo.path;
+  });
   if (!isTag) tagList.push(routeInfo);
   if (!isTag) tagList.push(routeInfo);
+
   window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(tagList));
   window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(tagList));
   menuList.value = tagList;
   menuList.value = tagList;
 });
 });
@@ -55,8 +59,8 @@ const handleClose = (menu: any) => {
   window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(menuList.value));
   window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(menuList.value));
 };
 };
 
 
-const jumpPage = (path: string) => {
-  router.push(path);
+const jumpPage = (menu: any) => {
+  router.push({ path: menu.path, query: menu.query });
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>