From 2c2413760b6467bf62402dba7338bd3bbcbd7341 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 20 五月 2025 14:20:38 +0800
Subject: [PATCH] 添加产量报表功能页面

---
 UI-Project/src/views/KanbanData/kanbanData.vue |  206 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 183 insertions(+), 23 deletions(-)

diff --git a/UI-Project/src/views/KanbanData/kanbanData.vue b/UI-Project/src/views/KanbanData/kanbanData.vue
index da17064..87a17e9 100644
--- a/UI-Project/src/views/KanbanData/kanbanData.vue
+++ b/UI-Project/src/views/KanbanData/kanbanData.vue
@@ -2,9 +2,25 @@
 import { ref, onMounted, onBeforeUnmount } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import request from '@/utils/request'
+import { useRoute, useRouter } from 'vue-router'
+
+const router = useRouter()
+const route = useRoute()
 
 // 鍔犺浇鍒濆鏁版嵁
 onMounted(() => {
+  // 浠巐ocalStorage鑾峰彇瀛樺偍鐨勭洰鏍囧��
+  yieldTargetValue1.value = localStorage.getItem('yieldTarget1') ? Number(localStorage.getItem('yieldTarget1')) : 0
+  yieldTargetValue2.value = localStorage.getItem('yieldTarget2') ? Number(localStorage.getItem('yieldTarget2')) : 0
+  
+  utilizationTargetValue1.value = localStorage.getItem('utilizationTarget1') ? Number(localStorage.getItem('utilizationTarget1')) : 0
+  utilizationTargetValue2.value = localStorage.getItem('utilizationTarget2') ? Number(localStorage.getItem('utilizationTarget2')) : 0
+  
+  quantityTargetValue1.value = localStorage.getItem('quantityTarget1') ? Number(localStorage.getItem('quantityTarget1')) : 0
+  quantityTargetValue2.value = localStorage.getItem('quantityTarget2') ? Number(localStorage.getItem('quantityTarget2')) : 0
+  quantityTargetValue3.value = localStorage.getItem('quantityTarget3') ? Number(localStorage.getItem('quantityTarget3')) : 0
+  
+  // 鍔犺浇鍏朵粬鏁版嵁
   loadYieldData()
   loadUtilizationData()
   loadQuantityData()
@@ -54,6 +70,8 @@
   lineNo: '',
   yieldvalue: null
 })
+const yieldTargetValue1 = ref() // 涓�绾跨洰鏍囧��
+const yieldTargetValue2 = ref() // 浜岀嚎鐩爣鍊�
 const yieldData = ref([])
 const yieldLoading = ref(false)
 
@@ -63,6 +81,8 @@
   lineNo: '',
   utilizationRate: null
 })
+const utilizationTargetValue1 = ref() // 鏍囧噯绾跨洰鏍囧��
+const utilizationTargetValue2 = ref() // 瀹氬埗绾跨洰鏍囧��
 const utilizationData = ref([])
 const utilizationLoading = ref(false)
 
@@ -79,6 +99,9 @@
   locationCode: '',
   quantity: null
 })
+const quantityTargetValue1 = ref(4000) // 鍗婃垚鍝佺洰鏍囧��
+const quantityTargetValue2 = ref(4000) // 7014鐩爣鍊�
+const quantityTargetValue3 = ref(4000) // 7016鐩爣鍊�
 const quantityData = ref([])
 const quantityLoading = ref(false)
 
@@ -235,9 +258,9 @@
   }
 
   try {
-    const recordTimeStr = `${yieldFormData.value.recordDate} 00:00:00`;
+    const recordTimeStr = `${yieldFormData.value.recordDate} 00:00:00`
     
-    await request({
+    const res = await request({
       url: '/deviceInteraction/yield/addYield',
       method: 'post',
       data: {
@@ -245,9 +268,14 @@
         recordTime: recordTimeStr
       }
     })
-    ElMessage.success('娣诲姞鎴愬姛')
-    resetYieldForm()
-    loadYieldData() // 鍒锋柊鏁版嵁
+    
+    if (res.code === 200) {
+      ElMessage.success('娣诲姞鎴愬姛')
+      resetYieldForm()
+      loadYieldData() // 鍒锋柊鏁版嵁
+    } else {
+      ElMessage.error(res.message || '娣诲姞澶辫触')
+    }
   } catch (error) {
     ElMessage.error('娣诲姞澶辫触')
     console.error(error)
@@ -266,9 +294,9 @@
   }
 
   try {
-    const recordTimeStr = `${utilizationFormData.value.recordDate} 00:00:00`;
+    const recordTimeStr = `${utilizationFormData.value.recordDate} 00:00:00`
     
-    await request({
+    const res = await request({
       url: '/deviceInteraction/utilization/addUtilization',
       method: 'post',
       data: {
@@ -276,9 +304,14 @@
         recordTime: recordTimeStr
       }
     })
-    ElMessage.success('娣诲姞鎴愬姛')
-    resetUtilizationForm()
-    loadUtilizationData() // 鍒锋柊鏁版嵁
+    
+    if (res.code === 200) {
+      ElMessage.success('娣诲姞鎴愬姛')
+      resetUtilizationForm()
+      loadUtilizationData() // 鍒锋柊鏁版嵁
+    } else {
+      ElMessage.error(res.message || '娣诲姞澶辫触')
+    }
   } catch (error) {
     ElMessage.error('娣诲姞澶辫触')
     console.error(error)
@@ -297,14 +330,9 @@
   }
 
   try {
-    // 鎷兼帴鏃ユ湡鏃堕棿瀛楃涓诧紝纭繚鏄綋澶╃殑00:00:00
-    const dateStr = quantityFormData.value.recordDate;
-    const recordTimeStr = `${dateStr} 00:00:00`;
+    const recordTimeStr = `${quantityFormData.value.recordDate} 00:00:00`
     
-
-    const locationCode = quantityFormData.value.locationCode;
-    
-    await request({
+    const res = await request({
       url: '/deviceInteraction/quantity/addQuantity',
       method: 'post',
       data: {
@@ -312,9 +340,14 @@
         recordTime: recordTimeStr
       }
     })
-    ElMessage.success('娣诲姞鎴愬姛')
-    resetQuantityForm()
-    loadQuantityData() // 鍒锋柊鏁版嵁
+    
+    if (res.code === 200) {
+      ElMessage.success('娣诲姞鎴愬姛')
+      resetQuantityForm()
+      loadQuantityData() // 鍒锋柊鏁版嵁
+    } else {
+      ElMessage.error(res.message || '娣诲姞澶辫触')
+    }
   } catch (error) {
     ElMessage.error('娣诲姞澶辫触')
     console.error(error)
@@ -358,7 +391,7 @@
 // 閲嶇疆琛ㄥ崟
 const resetYieldForm = () => {
   yieldFormData.value = {
-    recordDate: yieldFormData.value.recordDate, // 淇濇寔褰撳墠閫夋嫨鐨勬棩鏈�
+    recordDate: yieldFormData.value.recordDate,
     lineNo: '',
     yieldvalue: null
   }
@@ -366,7 +399,7 @@
 
 const resetUtilizationForm = () => {
   utilizationFormData.value = {
-    recordDate: utilizationFormData.value.recordDate, // 淇濇寔褰撳墠閫夋嫨鐨勬棩鏈�
+    recordDate: utilizationFormData.value.recordDate,
     lineNo: '',
     utilizationRate: null
   }
@@ -374,7 +407,7 @@
 
 const resetQuantityForm = () => {
   quantityFormData.value = {
-    recordDate: quantityFormData.value.recordDate, // 淇濇寔褰撳墠閫夋嫨鐨勬棩鏈�
+    recordDate: quantityFormData.value.recordDate,
     locationCode: '',
     quantity: null
   }
@@ -621,6 +654,30 @@
     }
   }
 }
+
+
+// 淇敼璁剧疆鐩爣鍊肩殑鏂规硶
+const setYieldTarget = () => {
+  // 鏇存柊浜ч噺鐩爣鍊煎苟淇濆瓨鍒發ocalStorage
+  localStorage.setItem('yieldTarget1', yieldTargetValue1.value.toString())
+  localStorage.setItem('yieldTarget2', yieldTargetValue2.value.toString())
+  ElMessage.success('鐩爣鍊艰缃垚鍔�')
+}
+
+const setUtilizationTarget = () => {
+  // 鏇存柊鍒╃敤鐜囩洰鏍囧�煎苟淇濆瓨鍒發ocalStorage
+  localStorage.setItem('utilizationTarget1', utilizationTargetValue1.value.toString())
+  localStorage.setItem('utilizationTarget2', utilizationTargetValue2.value.toString())
+  ElMessage.success('鐩爣鍊艰缃垚鍔�')
+}
+
+const setQuantityTarget = () => {
+  // 鏇存柊鍦ㄥ埗閲忕洰鏍囧�煎苟淇濆瓨鍒發ocalStorage
+  localStorage.setItem('quantityTarget1', quantityTargetValue1.value.toString())
+  localStorage.setItem('quantityTarget2', quantityTargetValue2.value.toString())
+  localStorage.setItem('quantityTarget3', quantityTargetValue3.value.toString())
+  ElMessage.success('鐩爣鍊艰缃垚鍔�')
+}
 </script>
 
 <template>
@@ -629,6 +686,34 @@
       <el-tabs v-model="activeTab">
         <!-- 鍗曞皬鏃朵骇閲忔爣绛鹃〉 -->
         <el-tab-pane label="鍗曞皬鏃朵骇閲�" name="yield">
+          <!-- 娣诲姞鐩爣鍊艰缃儴鍒� -->
+          <div class="target-setting">
+            <el-form :inline="true" label-width="100px">
+              <el-form-item label="涓�绾跨洰鏍囧��">
+                <el-input-number
+                  v-model="yieldTargetValue1"
+                  :precision="0"
+                  :step="100"
+                  :min="0"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item label="浜岀嚎鐩爣鍊�">
+                <el-input-number
+                  v-model="yieldTargetValue2"
+                  :precision="0"
+                  :step="100"
+                  :min="0"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="setYieldTarget">璁剧疆鐩爣鍊�</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
           <el-form :inline="true" :model="yieldFormData" label-width="100px" class="form-container">
             <el-form-item label="鏃ユ湡">
               <el-date-picker
@@ -732,6 +817,36 @@
 
         <!-- 鍒╃敤鐜囨爣绛鹃〉 -->
         <el-tab-pane label="鍒╃敤鐜�" name="utilization">
+          <!-- 娣诲姞鐩爣鍊艰缃儴鍒� -->
+          <div class="target-setting">
+            <el-form :inline="true" label-width="100px">
+              <el-form-item label="鏍囧噯绾跨洰鏍囧��">
+                <el-input-number
+                  v-model="utilizationTargetValue1"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0"
+                  :max="100"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item label="瀹氬埗绾跨洰鏍囧��">
+                <el-input-number
+                  v-model="utilizationTargetValue2"
+                  :precision="2"
+                  :step="0.1"
+                  :min="0"
+                  :max="100"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="setUtilizationTarget">璁剧疆鐩爣鍊�</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
           <el-form :inline="true" :model="utilizationFormData" label-width="100px" class="form-container">
             <el-form-item label="鏃ユ湡">
               <el-date-picker
@@ -835,6 +950,44 @@
 
         <!-- 鍦ㄥ埗閲忔爣绛鹃〉 -->
         <el-tab-pane label="鍦ㄥ埗閲�" name="quantity">
+          <!-- 娣诲姞鐩爣鍊艰缃儴鍒� -->
+          <div class="target-setting">
+            <el-form :inline="true" label-width="100px">
+              <el-form-item label="鍗婃垚鍝佺洰鏍囧��">
+                <el-input-number
+                  v-model="quantityTargetValue1"
+                  :precision="0"
+                  :step="100"
+                  :min="0"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item label="7014鐩爣鍊�">
+                <el-input-number
+                  v-model="quantityTargetValue2"
+                  :precision="0"
+                  :step="100"
+                  :min="0"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item label="7016鐩爣鍊�">
+                <el-input-number
+                  v-model="quantityTargetValue3"
+                  :precision="0"
+                  :step="100"
+                  :min="0"
+                  controls-position="right"
+                  style="width: 180px"
+                />
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="setQuantityTarget">璁剧疆鐩爣鍊�</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
           <el-form :inline="true" :model="quantityFormData" label-width="100px" class="form-container">
             <el-form-item label="鏃ユ湡">
               <el-date-picker
@@ -1047,6 +1200,13 @@
 </template>
 
 <style scoped>
+.target-setting {
+  margin-bottom: 20px;
+  background-color: #f5f7fa;
+  padding: 20px;
+  border-radius: 4px;
+}
+
 .form-container {
   margin-bottom: 20px;
   background-color: #f5f7fa;

--
Gitblit v1.8.0