From 7726b6cdab80596d2e2f7dd3fe1ec3dfbdeee155 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 12 六月 2026 09:42:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁

---
 src/views/index.vue |   73 ++++++++++++++++++------------------
 1 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/src/views/index.vue b/src/views/index.vue
index 0d71970..c6fa35e 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -113,11 +113,11 @@
           <div class="panel-title-row">
             <div class="panel-title">鐢熶骇璁㈠崟杩涘害</div>
             <el-radio-group v-model="orderFilter" size="small">
-              <el-radio-button label="all">鍏ㄩ儴({{ orderProgressMeta.total }})</el-radio-button>
-              <el-radio-button label="waiting">寰呭紑濮�({{ orderProgressMeta.waitingCount }})</el-radio-button>
-              <el-radio-button label="inProgress">杩涜涓�({{ orderProgressMeta.inProgressCount }})</el-radio-button>
-              <el-radio-button label="completed">宸插畬鎴�({{ orderProgressMeta.completedCount }})</el-radio-button>
-              <el-radio-button label="paused">宸叉殏鍋�({{ orderProgressMeta.pausedCount }})</el-radio-button>
+              <el-radio-button :value="'all'">鍏ㄩ儴({{ orderProgressMeta.total }})</el-radio-button>
+              <el-radio-button :value="'waiting'">寰呭紑濮�({{ orderProgressMeta.waitingCount }})</el-radio-button>
+              <el-radio-button :value="'inProgress'">杩涜涓�({{ orderProgressMeta.inProgressCount }})</el-radio-button>
+              <el-radio-button :value="'completed'">宸插畬鎴�({{ orderProgressMeta.completedCount }})</el-radio-button>
+              <el-radio-button :value="'paused'">宸叉殏鍋�({{ orderProgressMeta.pausedCount }})</el-radio-button>
             </el-radio-group>
           </div>
           <el-table :data="filteredOrders" stripe>
@@ -214,7 +214,7 @@
         <div v-if="visiblePanels.todo" class="cockpit-panel todo-panel">
           <div class="panel-title-row">
             <div class="panel-title">寰呭姙浜嬮」</div>
-            <span class="panel-more">鏇村</span>
+            <span class="panel-more" @click="goToApprovalProcess">鏇村</span>
           </div>
           <ul class="todo-list" v-if="todoList.length > 0">
             <li v-for="item in todoList" :key="item.id" class="todo-item">
@@ -232,7 +232,7 @@
         <div v-if="visiblePanels.realtime" class="cockpit-panel realtime-panel">
           <div class="panel-title-row">
             <div class="panel-title">鐢熶骇瀹炴椂鐪嬫澘</div>
-            <span class="panel-more">鏇村</span>
+            <span class="panel-more" @click="goToProductionOrder">鏇村</span>
           </div>
           <div class="realtime-grid">
             <div class="realtime-item" v-for="item in realtimeBoard" :key="item.key">
@@ -278,7 +278,7 @@
         <div v-if="visiblePanels.plan" class="cockpit-panel plan-panel">
           <div class="panel-title-row">
             <div class="panel-title">浠婃棩鐢熶骇璁″垝</div>
-            <span class="panel-more">{{ todayPlanTotal }}椤�</span>
+            <span class="panel-more" @click="goToProductionPlan">{{ todayPlanTotal }}椤�</span>
           </div>
           <ul class="plan-list">
             <li v-for="item in todayPlanList" :key="item.orderNo" class="plan-item">
@@ -320,7 +320,7 @@
       <div class="process-selection-wrapper">
         <el-checkbox-group v-model="tempProcessIds">
           <div class="process-grid">
-            <el-checkbox v-for="item in processOptions" :key="item.id" :label="item.id" border>
+            <el-checkbox v-for="item in processOptions" :key="item.id" :value="item.id" border>
               {{ item.name }}
             </el-checkbox>
           </div>
@@ -449,7 +449,6 @@
 });
 
 const realtimeBoardData = ref({
-  deviceOee: { value: 0, compareYesterday: 0 },
   orderAchievementRate: { value: 0, compareYesterday: 0 },
   defectRate: { value: 0, compareYesterday: 0 },
 });
@@ -883,22 +882,11 @@
 };
 
 const realtimeBoard = computed(() => {
-  const oee = Number(realtimeBoardData.value.deviceOee?.value || 0);
   const orderAchievement = Number(realtimeBoardData.value.orderAchievementRate?.value || 0);
   const defectRate = Number(realtimeBoardData.value.defectRate?.value || 0);
-  const oeeCompare = Number(realtimeBoardData.value.deviceOee?.compareYesterday || 0);
   const orderCompare = Number(realtimeBoardData.value.orderAchievementRate?.compareYesterday || 0);
   const defectCompare = Number(realtimeBoardData.value.defectRate?.compareYesterday || 0);
   return [
-    {
-      key: "oee",
-      label: "璁惧 OEE",
-      percent: clampPercent(oee),
-      display: `${oee.toFixed(2)}%`,
-      delta: getCompareText(oeeCompare),
-      trend: getCompareTrend(oeeCompare),
-      color: "#2d8cff",
-    },
     {
       key: "order",
       label: "璁㈠崟杈炬垚鐜�",
@@ -906,7 +894,7 @@
       display: `${orderAchievement.toFixed(2)}%`,
       delta: getCompareText(orderCompare),
       trend: getCompareTrend(orderCompare),
-      color: "#31d2ff",
+      color: "#2d8cff",
     },
     {
       key: "defect",
@@ -1205,10 +1193,6 @@
     const res = await productionRealtimeBoard();
     const data = res?.data || {};
     realtimeBoardData.value = {
-      deviceOee: {
-        value: Number(data.deviceOee?.value || 0),
-        compareYesterday: Number(data.deviceOee?.compareYesterday || 0),
-      },
       orderAchievementRate: {
         value: Number(data.orderAchievementRate?.value || 0),
         compareYesterday: Number(data.orderAchievementRate?.compareYesterday || 0),
@@ -1220,7 +1204,6 @@
     };
   } catch {
     realtimeBoardData.value = {
-      deviceOee: { value: 0, compareYesterday: 0 },
       orderAchievementRate: { value: 0, compareYesterday: 0 },
       defectRate: { value: 0, compareYesterday: 0 },
     };
@@ -1307,9 +1290,12 @@
 
 const statisticsReceivable = async () => {
   const res = await statisticsReceivablePayable({ type: 1 });
+  const data = res?.data || {};
+  const payableMoney = Number(data.payableMoney ?? 0);
+  const receivableMoney = Number(data.receivableMoney ?? 0);
   barSeries.value[0].data = [
-    { value: res.data.payableMoney, itemStyle: { color: barColors2[0] } },
-    { value: res.data.receivableMoney, itemStyle: { color: barColors2[1] } },
+    { value: payableMoney, itemStyle: { color: barColors2[0] } },
+    { value: receivableMoney, itemStyle: { color: barColors2[1] } },
   ];
 };
 
@@ -1319,15 +1305,16 @@
   barSeries1.value[0].data = [];
   barSeries1.value[1].data = [];
   barSeries1.value[2].data = [];
-  (res.data.item || []).forEach((item) => {
+  const data = res.data || {};
+  (data.item || []).forEach((item) => {
     xAxis1.value[0].data.push(item.date);
     barSeries1.value[0].data.push(item.supplierNum);
     barSeries1.value[1].data.push(item.processNum);
     barSeries1.value[2].data.push(item.factoryNum);
   });
-  qualityStatisticsObject.value.supplierNum = res.data.supplierNum;
-  qualityStatisticsObject.value.processNum = res.data.processNum;
-  qualityStatisticsObject.value.factoryNum = res.data.factoryNum;
+  qualityStatisticsObject.value.supplierNum = data.supplierNum || 0;
+  qualityStatisticsObject.value.processNum = data.processNum || 0;
+  qualityStatisticsObject.value.factoryNum = data.factoryNum || 0;
 };
 
 const getAmountHalfYearNum = async () => {
@@ -1392,6 +1379,18 @@
 const goToQuick = (path) => {
   if (!path) return;
   router.push(path).catch(() => {});
+};
+
+const goToProductionOrder = () => {
+  router.push('/productionManagement/productionOrder').catch(() => {});
+};
+
+const goToApprovalProcess = () => {
+  router.push('/collaborativeApproval/approvalProcess').catch(() => {});
+};
+
+const goToProductionPlan = () => {
+  router.push('/productionManagement/productionPlan').catch(() => {});
 };
 
 watch(orderFilter, () => {
@@ -2090,7 +2089,7 @@
 .realtime-grid {
   margin-top: 10px;
   display: grid;
-  grid-template-columns: repeat(3, minmax(0, 1fr));
+  grid-template-columns: repeat(2, minmax(0, 1fr));
   gap: 10px;
 }
 
@@ -2098,12 +2097,12 @@
   border: 1px solid rgba(148, 163, 184, 0.2);
   border-radius: 12px;
   background: #f8fbff;
-  padding: 10px 8px;
+  padding: 16px 12px;
   text-align: center;
 }
 
 .realtime-value {
-  font-size: 26px;
+  font-size: 32px;
   color: #0f172a;
   font-weight: 700;
 }
@@ -2428,7 +2427,7 @@
   }
 
   .realtime-grid {
-    grid-template-columns: repeat(3, minmax(0, 1fr));
+    grid-template-columns: repeat(2, minmax(0, 1fr));
   }
 
   .quality-cards {

--
Gitblit v1.9.3