zlwu 4 ماه پیش
والد
کامیت
9a1656505d

+ 1 - 1
web-admin/graphify-out/GRAPH_REPORT.md

@@ -1,7 +1,7 @@
 # Graph Report - src  (2026-06-18)
 
 ## Corpus Check
-- Large corpus: 784 files · ~522,068 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
+- Large corpus: 784 files · ~522,172 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
 
 ## Summary
 - 2602 nodes · 3621 edges · 54 communities detected

+ 2 - 2
web-admin/graphify-out/manifest.json

@@ -17,7 +17,7 @@
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
-  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1781765750.9582481,
+  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1781765857.154092,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1781765714.1730351,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1781272556.364766,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1781272556.3652694,
@@ -408,7 +408,7 @@
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskResultPanel.vue": 1781589482.0890527,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSingleCard.vue": 1781699027.2649422,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderFeeSummaryBar.vue": 1781585388.7152023,
-  "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSampleGroup.vue": 1781691146.652663,
+  "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSampleGroup.vue": 1781766463.2300944,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskSubList.vue": 1781590356.5447705,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderCardList.vue": 1781595924.5325,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolPaymentPanel.vue": 1781588255.9076052,

+ 67 - 24
web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSampleGroup.vue

@@ -10,18 +10,18 @@
       </span>
     </div>
 
-    <div
-      v-if="group.workOrders.length > 1"
-      class="panel-pill-tabs panel-pill-tabs--lg panel-pill-tabs--start qc-wo-pill-tabs"
-    >
-      <div class="panel-pill-tabs__track" role="tablist" aria-label="同样本质检工单">
+    <div v-if="group.workOrders.length > 1" class="qc-wo-indep-tabs">
+      <div class="qc-wo-indep-tabs__row" role="tablist" aria-label="同样本质检工单">
         <button
           v-for="(wo, tabIndex) in group.workOrders"
           :key="wo.id"
           type="button"
           role="tab"
-          class="panel-pill-tabs__btn qc-wo-pill-tabs__btn"
-          :class="{ 'is-active': wo.id === activeWorkOrderId }"
+          class="qc-wo-indep-tabs__btn"
+          :class="[
+            { 'is-active': wo.id === activeWorkOrderId },
+            triggerSourcePillClass(wo.triggerSource)
+          ]"
           :aria-selected="wo.id === activeWorkOrderId"
           @click="activeWorkOrderId = wo.id"
         >
@@ -141,6 +141,12 @@
     return 'qc-wo-tab__source--reception'
   }
 
+  function triggerSourcePillClass(source?: string) {
+    const ts = source || 'reception'
+    if (ts === 'production') return 'qc-wo-indep-tabs__btn--production'
+    return 'qc-wo-indep-tabs__btn--reception'
+  }
+
   const contextSubtitle = computed(() => {
     const row = contextRow.value
     if (!row) return '—'
@@ -217,35 +223,44 @@
     border: 1px solid #d1fae5;
   }
 
-  .qc-wo-pill-tabs:not(.el-tabs) {
-    margin: 0;
-    padding: 8px 16px;
+  .qc-wo-indep-tabs {
+    padding: 12px 16px;
     border-bottom: 1px solid #e2e8f0;
     background: #f8fafc;
   }
 
-  .qc-wo-pill-tabs:not(.el-tabs) :deep(.panel-pill-tabs__track) {
+  .qc-wo-indep-tabs__row {
+    display: flex;
     flex-wrap: wrap;
+    align-items: center;
+    gap: 24px;
     max-width: 100%;
-    gap: 10px;
-    padding: 6px;
   }
 
-  .qc-wo-pill-tabs:not(.el-tabs) :deep(.panel-pill-tabs__btn.qc-wo-pill-tabs__btn) {
+  .qc-wo-indep-tabs__btn {
+    display: inline-flex;
+    align-items: center;
+    gap: 6px;
     min-width: 0;
     min-height: 34px;
     padding: 8px 16px;
+    border: 2px solid #e2e8f0;
+    border-radius: 10px;
+    background: #fff;
     font-size: 12px;
-    gap: 6px;
     color: #1e293b;
-
-    &:hover:not(.is-active) {
-      color: #0f172a;
-    }
+    cursor: pointer;
+    white-space: nowrap;
+    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
+    transition:
+      background 0.15s ease,
+      color 0.15s ease,
+      border-color 0.15s ease,
+      box-shadow 0.15s ease;
 
     &:focus-visible {
       outline: 2px solid #10b981;
-      outline-offset: 1px;
+      outline-offset: 2px;
     }
 
     &:not(.is-active) {
@@ -254,12 +269,15 @@
         background: #e2e8f0;
       }
 
-      .qc-wo-tab__source,
       .qc-wo-tab__source--reception,
-      .qc-wo-tab__source--schedule,
+      .qc-wo-tab__source--schedule {
+        color: #047857;
+        background: #ecfdf5;
+      }
+
       .qc-wo-tab__source--production {
-        color: #1e293b;
-        background: #f1f5f9;
+        color: #b45309;
+        background: #fffbeb;
       }
 
       .qc-wo-tab__no {
@@ -280,8 +298,33 @@
       }
     }
 
+    &:not(.is-active):hover {
+      box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
+    }
+
+    &--reception:not(.is-active) {
+      border-color: #a7f3d0;
+
+      &:hover {
+        border-color: #047857;
+        background: #ecfdf5;
+      }
+    }
+
+    &--production:not(.is-active) {
+      border-color: #fcd34d;
+
+      &:hover {
+        border-color: #b45309;
+        background: #fffbeb;
+      }
+    }
+
     &.is-active {
       color: #fff;
+      background: var(--primary, #10b981);
+      border-color: var(--primary, #10b981);
+      box-shadow: 0 2px 6px rgba(16, 185, 129, 0.28);
 
       .qc-wo-tab__index {
         color: #fff;