Browse Source

修改路由配置

乐菲 1 month ago
parent
commit
89624b7f2a

+ 14 - 2
src/permission.js

@@ -54,10 +54,22 @@ function routerAction(to, from, next) {
         });
     } else {
       if (!!to.meta.queryManageId) {
+        const { queryManageId, ...metaWithoutQueryId } = to.meta;
+        const targetPath = `/querymanage/queryFormNew?id=${queryManageId}`;
+
+        // 防止死循环:如果当前路径已经是目标路径,就不再跳转
+        if (to.path === targetPath) {
+          next();
+          return;
+        }
+
         next({
-          ...to,
-          path: `/querymanage/queryFormNew?id=${to.meta?.queryManageId}`,
+          path: targetPath,
+          query: { id: queryManageId },
+          meta: metaWithoutQueryId,
+          replace: true, // 使用 replace 避免历史栈堆积
         });
+        return; // 必须 return,防止继续执行后面的 next()
       } else {
         next();
       }

+ 2 - 4
src/views/mes/queryManage/queryNew.vue

@@ -2,7 +2,7 @@
   <!-- 唯一根节点:el-card -->
   <el-card class="el-content-wrap mb-3px" shadow="never">
     <!-- 标题 + 提示 -->
-    <template v-if="title" slot="header">
+    <!-- <template v-if="title" slot="header">
       <div class="flex items-center">
         <span class="text-16px font-700">{{ title }}</span>
         <el-tooltip v-if="message" effect="dark" placement="right">
@@ -12,7 +12,7 @@
           <i class="el-icon-question ml-5px" style="font-size: 14px" />
         </el-tooltip>
       </div>
-    </template>
+    </template> -->
 
     <!-- 原 content-wrap 的 slot 内容 -->
     <el-row class="mb-10px">
@@ -62,7 +62,6 @@
       :data="list"
       stripe
       border
-      size="small"
       show-overflow-tooltip
       @selection-change="handleSelectionChange"
       @header-dragend="handleResize"
@@ -813,7 +812,6 @@ export default {
 /* ---------- ContentWrap 原样式 ---------- */
 .el-content-wrap {
   /* 自定义 */
-  height: 100vh;
   overflow-y: auto;
 }
 .text-16px {

+ 36 - 25
src/views/system/menu/component/QueryManage.vue

@@ -1,60 +1,71 @@
 <template>
-  <el-select v-model="selected" v-bind="$attrs" :loading="loading" v-on="$listeners">
-    <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id">
+  <el-select
+    v-model="selected"
+    v-bind="$attrs"
+    :loading="loading"
+    v-on="$listeners"
+  >
+    <el-option
+      v-for="item in options"
+      :key="item.id"
+      :label="item.name"
+      :value="item.id"
+    >
       <!-- <el-row :gutter="20">
         <el-col :span="12">{{ item.id }}</el-col>
         <el-col :span="12" class="text-right">{{ item.name }}</el-col>
       </el-row> -->
     </el-option>
   </el-select>
-
 </template>
 
 <script>
-import { getQueryManage } from '@/api/system/menu'
+import { getQueryManage } from "@/api/system/menu";
 
 export default {
   props: {
     value: {
       type: Array,
-      default: () => []
-    }
+      default: () => [],
+    },
   },
   data() {
     return {
       options: [],
-      loading: false
-    }
+      loading: false,
+    };
   },
   computed: {
     selected: {
       get() {
-        return this.value
+        return this.value;
       },
       set(v) {
-        this.$emit('input', v)
-      }
-    }
+        this.$emit("input", v);
+      },
+    },
   },
   created() {
-    this.fetchReportList()
+    this.fetchReportList();
   },
   methods: {
     fetchReportList() {
-      this.loading = true
+      this.loading = true;
       const params = {
         pageNo: 1,
-        pageSize: 100
-      }
-      getQueryManage(params).then(res => {
-        const list = res.data.list || {}
-        this.options = list
-      }).finally(() => {
-        this.loading = false
-      })
-    }
-  }
-}
+        pageSize: 100,
+      };
+      getQueryManage(params)
+        .then((res) => {
+          const list = res.data.list || {};
+          this.options = [{ id: "", name: "不选择查询页面" }, ...list];
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+  },
+};
 </script>
 
 <style></style>