From b7ffa7395cddfeb10f88d70a81567371f62021c3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 16:30:17 +0800
Subject: [PATCH] feat(router): 排除AI模块页面并添加访问权限控制

---
 src/views/dashboard/analytics/modules/alert-panel.vue |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/views/dashboard/analytics/modules/alert-panel.vue b/src/views/dashboard/analytics/modules/alert-panel.vue
index 4be1544..0f1bf4d 100644
--- a/src/views/dashboard/analytics/modules/alert-panel.vue
+++ b/src/views/dashboard/analytics/modules/alert-panel.vue
@@ -2,9 +2,10 @@
 import type { MesHomeApi } from '#/api/mes/home';
 import type { EchartsUIType } from '@vben/plugins/echarts';
 
-import { onMounted, ref } from 'vue';
+import { computed, onMounted, ref } from 'vue';
 
 import { CountTo } from '@vben/common-ui';
+import { useAccess } from '@vben/access';
 import { IconifyIcon } from '@vben/icons';
 import { EchartsUI, useEcharts } from '@vben/plugins/echarts';
 
@@ -22,12 +23,17 @@
 const emit = defineEmits<{
   navigate: [name: string];
 }>();
+const { hasAccessByCodes } = useAccess();
+const canViewWorkOrder = computed(() => hasAccessByCodes(['mes:pro-work-order:query']));
+const canViewAndon = computed(() => hasAccessByCodes(['mes:pro-andon-record:query']));
+const canViewRepair = computed(() => hasAccessByCodes(['mes:dv-repair:query']));
 
 const chartRef = ref<EchartsUIType>();
 const { renderEcharts } = useEcharts(chartRef);
 const loading = ref(false);
 
 async function loadStatus() {
+  if (!canViewWorkOrder.value) return;
   loading.value = true;
   try {
     const data = await getWorkOrderStatusDistribution();
@@ -67,10 +73,11 @@
 <template>
   <div class="space-y-4">
     <!-- 棰勮鍗$墖琛� -->
-    <div class="grid grid-cols-2 gap-3">
+    <div v-if="canViewAndon || canViewRepair" class="grid gap-3" :class="canViewAndon && canViewRepair ? 'grid-cols-2' : 'grid-cols-1'">
       <div
+        v-if="canViewAndon"
         class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0 p-4"
-        @click="emit('navigate', 'MesProAndon')"
+        @click="emit('navigate', 'MesProAndonRecord')"
       >
         <div class="relative z-10 flex items-center gap-3">
           <div class="flex size-10 items-center justify-center rounded-lg bg-red-50 text-red-600 shadow-sm dark:bg-red-500/15 dark:text-red-400">
@@ -86,8 +93,9 @@
         </div>
       </div>
       <div
+        v-if="canViewRepair"
         class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0 p-4"
-        @click="emit('navigate', 'MesProRepair')"
+        @click="emit('navigate', 'MesDvRepair')"
       >
         <div class="relative z-10 flex items-center gap-3">
           <div class="flex size-10 items-center justify-center rounded-lg bg-amber-50 text-amber-600 shadow-sm dark:bg-amber-500/15 dark:text-amber-400">
@@ -105,7 +113,7 @@
     </div>
 
     <!-- 宸ュ崟鐘舵�佸浘 -->
-    <div class="glass-tilt rounded-2xl p-5">
+    <div v-if="canViewWorkOrder" class="glass-tilt rounded-2xl p-5">
       <h4 class="mb-3 text-sm font-semibold text-gray-800 dark:text-gray-100">
         宸ュ崟鐘舵�佸垎甯�
       </h4>

--
Gitblit v1.9.3