From fdd158306bf6dc3584f5110a385323f4a8dfb463 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 02 九月 2026 14:25:10 +0800
Subject: [PATCH] feat(wms): 重构仓库管理系统并优化图表显示

---
 src/views/dashboard/bagCodeHome/modules/shortcuts.vue |   98 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 81 insertions(+), 17 deletions(-)

diff --git a/src/views/dashboard/bagCodeHome/modules/shortcuts.vue b/src/views/dashboard/bagCodeHome/modules/shortcuts.vue
index bac404f..e257af2 100644
--- a/src/views/dashboard/bagCodeHome/modules/shortcuts.vue
+++ b/src/views/dashboard/bagCodeHome/modules/shortcuts.vue
@@ -9,12 +9,74 @@
 
 const router = useRouter();
 
-/** 蹇嵎鍏ュ彛鍒楄〃锛屾寜涓氬姟鍩熺簿绠�涓� 4 涓牳蹇冨叆鍙� */
-const shortcuts = [
-  { bgColor: '#409EFF', icon: 'lucide:package', name: '鍝佺绠$悊', routeName: 'MdmItem' },
-  { bgColor: '#E6A23C', icon: 'lucide:folder-tree', name: '鍝佺鍒嗙被', routeName: 'MesMdItemType' },
-  { bgColor: '#f59e0b', icon: 'lucide:layers', name: '鎵规鐢熶骇', routeName: 'MesProBatch' },
-  { bgColor: '#ec4899', icon: 'lucide:scan-barcode', name: '璧嬬爜绠$悊', routeName: 'MesProBagCode' },
+interface Shortcut {
+  icon: string;
+  name: string;
+  routeName: string;
+}
+
+interface ShortcutGroup {
+  title: string;
+  items: Shortcut[];
+}
+
+/** 鎸変笟鍔″煙鍒嗙粍鐨勫揩鎹峰叆鍙� */
+const groups: ShortcutGroup[] = [
+  {
+    title: '鍩虹鏁版嵁',
+    items: [
+      { icon: 'lucide:package', name: '鍝佺绠$悊', routeName: 'MdmItem' },
+      { icon: 'lucide:folder-tree', name: '鍝佺鍒嗙被', routeName: 'MesMdItemType' },
+      { icon: 'lucide:ruler', name: '璁¢噺鍗曚綅', routeName: 'MdmUnit' },
+    ],
+  },
+  {
+    title: '涓�琚嬩竴鐮佺敓浜�',
+    items: [
+      { icon: 'lucide:factory', name: '浜х嚎缁存姢', routeName: 'MesProLine' },
+      { icon: 'lucide:layers', name: '鎵规鐢熶骇', routeName: 'MesProBatch' },
+      { icon: 'lucide:scan-barcode', name: '璧嬬爜绠$悊', routeName: 'MesProBagCode' },
+      { icon: 'lucide:grid-2x2', name: '鎵樼洏鐮�', routeName: 'MesProPallet' },
+      { icon: 'lucide:scan-line', name: '鎵爜鍏ュ簱', routeName: 'MesProScanIn' },
+    ],
+  },
+  {
+    title: '鍑哄簱娴侀��',
+    items: [
+      { icon: 'lucide:send', name: '鍙戣揣閫氱煡', routeName: 'MesWmSalesNotice' },
+      { icon: 'lucide:truck', name: '閿�鍞嚭搴�', routeName: 'MesWmProductSales' },
+      { icon: 'lucide:rotate-ccw', name: '閿�鍞��璐�', routeName: 'MesWmReturnSales' },
+    ],
+  },
+  {
+    title: '闃蹭吉闃茬獪璐�',
+    items: [
+      { icon: 'lucide:shield-alert', name: '绐滆揣棰勮', routeName: 'MesTraceCrossRegion' },
+      { icon: 'lucide:map-pin', name: '鎵爜鍦扮悊鍒嗗竷', routeName: 'MesConsumerScanDistribution' },
+      { icon: 'lucide:database-check', name: '瀹屾暣鎬ф牎楠�', routeName: 'MesTraceIntegrity' },
+    ],
+  },
+  {
+    title: '婧簮鍒嗘瀽',
+    items: [{ icon: 'lucide:scan-line', name: '娑堣垂鑰呮壂鐮佺粺璁�', routeName: 'MesConsumerScanStatistics' }],
+  },
+  {
+    title: '浠撳偍鐗╂祦',
+    items: [
+      { icon: 'lucide:warehouse', name: '浠撳簱璁剧疆', routeName: 'MesWmWarehouse' },
+      { icon: 'lucide:boxes', name: '搴撳瓨鐜版湁閲�', routeName: 'MesWmMaterialStock' },
+      { icon: 'lucide:bell-alert', name: '搴撳瓨棰勮', routeName: 'MesWmStockWarning' },
+      { icon: 'lucide:move-right', name: '杞Щ璋冩嫧', routeName: 'MesWmTransfer' },
+    ],
+  },
+  {
+    title: '璐ㄩ噺绠$悊',
+    items: [
+      { icon: 'lucide:list-tree', name: '鎵规杩芥函', routeName: 'BatchTrace' },
+      { icon: 'lucide:shield-x', name: '涓嶅悎鏍煎搧', routeName: 'MesQcNcr' },
+      { icon: 'lucide:bean', name: '绉嶅瓙璐ㄦ', routeName: 'MesQcSeedQuality' },
+    ],
+  },
 ];
 
 /** 璺宠浆鍒扮洰鏍囬〉闈紙鎸夎矾鐢� name锛屾湭鍔犺浇鏃舵彁绀猴級 */
@@ -30,18 +92,20 @@
 <template>
   <Card title="蹇嵎鍏ュ彛" class="h-full">
     <Row :gutter="16">
-      <Col v-for="item in shortcuts" :key="item.name" :lg="6" :md="8" :sm="12" :xs="12" class="mb-4">
-        <div
-          class="hover:bg-accent flex cursor-pointer flex-col items-center gap-2 rounded-lg py-3 transition-all hover:-translate-y-0.5"
-          @click="handleNavigate(item.routeName)"
-        >
-          <div
-            class="flex size-12 items-center justify-center rounded-xl text-white"
-            :style="{ background: item.bgColor }"
-          >
-            <IconifyIcon class="size-6" :icon="item.icon" />
+      <Col v-for="group in groups" :key="group.title" :lg="8" :md="12" :sm="24" :xs="24" class="mb-4">
+        <div class="rounded-xl border border-[rgba(16,185,129,0.16)] bg-[rgba(255,255,255,0.55)] p-3 backdrop-blur">
+          <div class="text-muted-foreground mb-2 text-xs font-medium">{{ group.title }}</div>
+          <div class="flex flex-wrap gap-2">
+            <div
+              v-for="item in group.items"
+              :key="item.name"
+              class="flex cursor-pointer items-center gap-1.5 rounded-lg border border-[rgba(16,185,129,0.22)] px-2 py-1.5 text-sm transition-colors hover:bg-[rgba(16,185,129,0.12)]"
+              @click="handleNavigate(item.routeName)"
+            >
+              <IconifyIcon class="size-4 text-[#0d9488]" :icon="item.icon" />
+              <span>{{ item.name }}</span>
+            </div>
           </div>
-          <span class="text-sm">{{ item.name }}</span>
         </div>
       </Col>
     </Row>

--
Gitblit v1.9.3