From 166a45a9d44e03e63552c6afa975c9ef0cc902e5 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期二, 03 六月 2025 17:50:41 +0800
Subject: [PATCH] 功能,页面更新优化

---
 代码管理/WMS/WIDESEA_WMSClient/src/views/inbound/returnOrder.vue                                      |   30 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs                   |   12 
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/locationInfoRow.vue                                    |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue                                |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs                        |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs                              |    4 
 代码管理/LargeScreen/CP-Screen/src/api/ajax.js                                                        |    2 
 代码管理/LargeScreen/CP-Screen/src/store/modules/setting.js                                           |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue                                    |   77 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs                         |   20 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs                      |    1 
 代码管理/LargeScreen/CP-Screen/src/views/indexs/center-map.vue                                        |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue                             |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs                   |   17 
 代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue                                            |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs                        |   10 
 代码管理/LargeScreen/CP-Screen/src/views/indexs/station-two.vue                                       |  710 +++++++------------
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs |    6 
 代码管理/LargeScreen/CP-Screen/src/router/index.js                                                    |    2 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetOrderMaterielSpec.vue                    |  155 ++++
 代码管理/LargeScreen/CP-Screen/src/views/indexs/index.vue                                             |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs                               |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs                       |   25 
 代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue                                        |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                          |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs                     |   20 
 代码管理/LargeScreen/CP-Screen/src/api/api.js                                                         |    2 
 代码管理/LargeScreen/CP-Screen/src/api/http.js                                                        |   10 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                 |    7 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js                                |   82 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs                      |    6 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/MesOutOrderDetail.vue                    |   15 
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue                                   |   16 
 代码管理/LargeScreen/CP-Screen/src/views/indexs/left-bottom.vue                                       |  703 ++++---------------
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs                           |    5 
 36 files changed, 1,013 insertions(+), 1,028 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/ajax.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/ajax.js"
index e04170d..1c8db17 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/ajax.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/ajax.js"
@@ -3,7 +3,7 @@
 // import { config } from 'vue/types/umd';
 axios.defaults.withCredentials=true;
 axios.defaults.crossDomain=true;
-axios.defaults.baseURL = 'http://10.30.4.92:9283';//'http://192.168.2.51:8099'; //'http://localhost:8099'; //'http://192.168.2.51:8099';//
+axios.defaults.baseURL = 'http://10.30.4.92:7081';//'http://192.168.2.51:8099'; //'http://localhost:8099'; //'http://192.168.2.51:8099';//
 axios.defaults.headers.post["Content-Type"]="application/json;charset=utf-8";
 // 閿欒淇℃伅澶勭悊
 const  errorHandle = (status, other) => {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/api.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/api.js"
index 788026f..07be84f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/api.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/api.js"
@@ -10,7 +10,7 @@
 let baseUrl = UtilVar.baseUrl
 const CancelToken = axios.CancelToken;
 export { baseUrl };
-// axios.defaults.withCredentials = true;
+axios.defaults.withCredentials = true;
 // 娣诲姞璇锋眰鎷︽埅鍣�
 axios.interceptors.request.use(function (config) {
     // 鍦ㄥ彂閫佽姹備箣鍓嶅仛浜涗粈涔� 浼爐oken
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/http.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/http.js"
index bb40ce8..d5784d0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/http.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/api/http.js"
@@ -7,7 +7,7 @@
 export function  ProLocationStatistics (data) {
     return axios.post('/api/Large/ProLocationStatistics?id=7', data)//杩斿洖鐨勬椂promies瀵硅薄锛屾墍浠ョ洿鎺eturn鍑哄幓灏卞ソ浜�
 }
-//鎴愬搧杩戜竷澶╃粺璁�
+//鎴愬搧鍏ュ簱浜ч噺缁熻
 export function  Productions (data) {
     return axios.post('/api/Large/Productions', data)//杩斿洖鐨勬椂promies瀵硅薄锛屾墍浠ョ洿鎺eturn鍑哄幓灏卞ソ浜�
 }
@@ -23,3 +23,11 @@
 export function  ProductionStock (data) {
     return axios.post('/api/Large/ProductionStock', data)//杩斿洖鐨勬椂promies瀵硅薄锛屾墍浠ョ洿鎺eturn鍑哄幓灏卞ソ浜�
 }
+//鎴愬搧浜у搧搴撳瓨鎬绘暟缁熻
+export function  GetCPLargeStockCount (data) {
+    return axios.post('/api/Large/GetCPLargeStockCount', data)//杩斿洖鐨勬椂promies瀵硅薄锛屾墍浠ョ洿鎺eturn鍑哄幓灏卞ソ浜�
+}
+//鎴愬搧杩戜竷澶╀换鍔$粺璁�
+export function  GetProWeekTasks (data) {
+    return axios.post('/api/Large/GetProWeekTasks', data)//杩斿洖鐨勬椂promies瀵硅薄锛屾墍浠ョ洿鎺eturn鍑哄幓灏卞ソ浜�
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/router/index.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/router/index.js"
index 52d9157..87a4813 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/router/index.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/router/index.js"
@@ -29,7 +29,7 @@
 ];
 const router = new VueRouter({
   mode: "hash",
-  // base: process.env.BASE_URL,
+  base: process.env.BASE_URL,
   routes
 });
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/store/modules/setting.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/store/modules/setting.js"
index 8cb31cf..3a4fe56 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/store/modules/setting.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/store/modules/setting.js"
@@ -19,9 +19,9 @@
             limitMoveNum: 4, // 寮�濮嬫棤缂濇粴鍔ㄧ殑鏁版嵁閲� this.dataList.length
             singleHeight: 0, // 鍗曟杩愬姩鍋滄鐨勯珮搴�(榛樿鍊�0鏄棤缂濅笉鍋滄鐨勬粴鍔�) direction => 0/1
             singleWidth: 0, // 鍗曟杩愬姩鍋滄鐨勫搴�(榛樿鍊�0鏄棤缂濅笉鍋滄鐨勬粴鍔�) direction => 2/3
-            waitTime: 3000 // 鍗曟杩愬姩鍋滄鐨勬椂闂�(榛樿鍊�1000ms)
+            waitTime: 8000 // 鍗曟杩愬姩鍋滄鐨勬椂闂�(榛樿鍊�1000ms)
           },
-          echartsAutoTime:3000,//echarts 鍥捐嚜鍔ㄨ姹傛帴鍙f椂闂�
+          echartsAutoTime:8000,//echarts 鍥捐嚜鍔ㄨ姹傛帴鍙f椂闂�
     }),
     getters: {
         //鏍规嵁鑿滃崟璺緞鑾峰彇 鑿滃崟淇℃伅
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/center-map.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/center-map.vue"
index 1898df6..a7de180 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/center-map.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/center-map.vue"
@@ -268,7 +268,7 @@
               color: "#FFF",
               show: true,
             },
-            // colorBy: "data",
+            colorBy: "data",
             itemStyle: {
               color: "rgba(255,255,255,1)",
               borderColor: "rgba(2255,255,255,2)",
@@ -329,7 +329,7 @@
         #00eaff 48.8525390625%,
         #01aaff 100%
       );
-      -webkit-background-clip: text;
+ 
       -webkit-text-fill-color: transparent;
       margin: 0 10px;
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/index.vue"
index 3178c3c..282fadd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/index.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/index.vue"
@@ -17,14 +17,14 @@
 
       <ItemWrap
         class="contetn_left-bottom contetn_lr-item"
-        title="鎴愬搧鎵ц浠诲姟缁熻"
+        title="鎴愬搧褰撴湀鎵ц浠诲姟缁熻"
       >
       <stationone/>
       </ItemWrap>
 
       <ItemWrap
         class="contetn_left-bottom contetn_lr-item"
-        title="鎴愬搧搴撳瓨灞炴�у垎甯�"
+        title="鎴愬搧浠撲骇鍝佸簱瀛樻�绘暟缁熻"
       >
       <stationtwo/>
       </ItemWrap>
@@ -38,7 +38,7 @@
 
     </div>
     <div class="contetn_center">
-      <ItemWrap class="contetn_left-bottom contetn_lr-item" style="height: 66vh;" title="鎴愬搧浠诲姟缁熻">
+      <ItemWrap class="contetn_left-bottom contetn_lr-item" style="height: 66vh;" title="鎴愬搧杩戜節澶╀换鍔$粺璁�">
         <LeftBottom/>
       </ItemWrap>
       <ItemWrap
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/left-bottom.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/left-bottom.vue"
index 4018011..883b65a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/left-bottom.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/left-bottom.vue"
@@ -1,568 +1,187 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-07-20 17:57:11
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
 <template>
   <div id="name" style="width: 100%; height: 100%">
-    <Echart :options="options" style="width: 100%; height: 100%"></Echart>
+    <Echart 
+      :options="options" 
+      style="width: 100%; height: 100%"
+      v-if="!loading"
+    />
+    <div v-else style="color: white; text-align: center; padding-top: 50px">
+      鏁版嵁鍔犺浇涓�...
+    </div>
+    <div v-if="error" style="color: red; text-align: center; padding-top: 50px">
+      鏁版嵁鍔犺浇澶辫触: {{ error }}
+    </div>
   </div>
 </template>
 
 <script>
-import { currentGET } from "api/modules";
-import { ProLocationStatistics } from "@/api/http.js";
+import { GetProWeekTasks } from "@/api/http.js";
 import * as echarts from 'echarts';
-let style = {
-  fontSize: 24,
-};
+
 export default {
   data() {
     return {
-      pageflag: true,
-      myChart: {},
       options: {},
+      loading: false,
+      error: null,
+      timer: null
     };
   },
-  filters: {
-    numsFilter(msg) {
-      return msg || 0;
-    },
-  },
   created() {
-    this.getData();
-  },
-  mounted() {
-    this.init();
+    this.fetchData();
+    this.startAutoRefresh();
   },
   beforeDestroy() {
-    this.clearData();
+    this.stopAutoRefresh();
   },
   methods: {
-    init() {
+    initEmptyChart() {
       this.options = {
-     //娴姩妗�
-     tooltip: {},
-     //鍥句緥
-     legend: {
-         right: '12%',
-         bottom: '4%',
-         textStyle: {
-             color: '#fff',
-             fontSize: '13'
-         },
-         itemGap: 20,
-         itemWidth: 10,
-         itemHeight: 10,
-         icon: 'circle',
-         data: ['PM2.5', 'CO2', 'SO']
-     },
-     grid: {
-         left: '8%',
-         top: '15%',
-         bottom: '14%',
-         width: '86%',
-     },
-     visualMap: [{
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#69dbf7'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'SO',
-         seriesIndex: 2
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#1be57a'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'CO2',
-         seriesIndex: 1
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#feb01e'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'PM2.5',
-         seriesIndex: 0
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#69dbf7'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'SO',
-         seriesIndex: 5
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#1be57a'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'CO2',
-         seriesIndex: 4
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#feb01e'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: 'PM2.5',
-         seriesIndex: 3
-     }],
-     //x杞�
-     xAxis: {
-         axisLine: {
-             lineStyle: {
-                 color: '#132987'
-             }
-         },
-         axisLabel: {
-             textStyle: {
-                 color: '#FFF',
-                 fontSize: 12
-             },
-         },
-         //鍒诲害绾�
-         axisTick: {
-             show: false
-         },
-         //鍧愭爣杞存樉绀哄��
-         data: ["1鏃�", "2鏃�", "3鏃�", "4鏃�", "5鏃�", "6鏃�", "7鏃�", "8鏃�"]
-     },
-     //y杞�
-     yAxis: {
-         min: 0,
-         max: 100,
-         axisLabel: { //  鏀瑰彉y杞村瓧浣撻鑹插拰澶у皬
-             //formatter: '{value} m鲁 ', //  缁檡杞存坊鍔犲崟浣�
-             textStyle: {
-                 color: '#fff',
-                 fontSize: 12,
-             },
-         },
-         //鍧愭爣杞寸嚎
-         axisLine: {
-             show: false,
-         },
-         //鍒诲害绾�
-         axisTick: {
-             show: false
-         },
-         //鍦╣rid鍖哄煙涓殑鍒嗛殧绾�
-         splitLine: {
-             show: true,
-             lineStyle: {
-                 color: '#132987',
-             }
-         },
-     },
-
-     //
-     series: [{
-         name: 'PM2.5',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#feb01e'
-         },
-         data: [43, 50, 41, 18, 28, 25, 26, 40],
-     }, {
-         name: 'CO2',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#1be57a'
-         },
-         data: [21, 30, 37, 39, 23, 37, 5, 50]
-     }, {
-         name: 'SO',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#69dbf7'
-         },
-         data: [76, 58, 60, 38, 49, 59, 78, 60]
-     }, { //姘存尝绾圭偣
-         name: 'PM2.5',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#feb01e'
-             }, {
-                 offset: 1,
-                 color: 'rgba(254,176,30,.3)'
-             }])
-         },
-         data: [43, 50, 41, 18, 28, 25, 26, 40]
-
-     }, { //姘存尝绾圭偣
-         name: 'CO2',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#1be57a'
-             }, {
-                 offset: 1,
-                 color: 'rgba(27,229,122,.3)'
-             }])
-         },
-         data: [21, 30, 37, 39, 23, 37, 5, 50]
-
-     }, { //姘存尝绾圭偣
-         name: 'SO',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#69dbf7'
-             }, {
-                 offset: 1,
-                 color: '#aefbc3'
-             }])
-         },
-         markLine: {
-             symbol: "none",
-             label: {
-                 normal: {
-                     show: false,
-                 }
-             },
-             lineStyle: {
-                 type: "solid",
-                 color: 'rgba(210,56,56,.6)',
-                 width: 2
-             },
-             data: [{
-                 yAxis: 60
-             }]
-         },
-         data: [76, 58, 60, 38, 49, 59, 78, 60]
-
-     }]
- };
-    },
-    clearData() {
-      if (this.timer) {
-        clearInterval(this.timer);
-        this.timer = null;
-      }
-    },
-    async getData() {
-      this.pageflag = true;
-      // currentGET("big2").then((res) => {
-      //     if (!this.timer) {
-      //         console.log("璁惧鎬昏2", res);
-      //     }
-      //     if (res.success) {
-      //         this.userOverview = res.data;
-      //            this.onlineconfig = {
-      //             ...this.onlineconfig,
-      //             number: [1]
-      //         }
-      //         this.config = {
-      //             ...this.config,
-      //             number: [7]
-      //         }
-      //         this.offlineconfig = {
-      //             ...this.offlineconfig,
-      //             number: [4]
-      //         }
-      //         this.laramnumconfig = {
-      //             ...this.laramnumconfig,
-      //             number: [10]
-      //         }
-      //         this.switper();
-      //     } else {
-      //         this.pageflag = false;
-      //         this.$Message.warning(res.msg);
-      //     }
-      // });
-      var rep = await ProLocationStatistics();
-      this.options = {
-     //娴姩妗�
-     tooltip: {},
-     //鍥句緥
-     legend: {
-         right: '12%',
-         bottom: '4%',
-         textStyle: {
-             color: '#fff',
-             fontSize: '13'
-         },
-         itemGap: 20,
-         itemWidth: 10,
-         itemHeight: 10,
-         icon: 'circle',
-         data: ['鎴愬搧鍏ュ簱', '鎴愬搧鍑哄簱', '鎴愬搧鍥炴']
-     },
-     grid: {
-         left: '8%',
-         top: '15%',
-         bottom: '14%',
-         width: '86%',
-     },
-     visualMap: [{
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#69dbf7'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: '鎴愬搧鍏ュ簱',
-         seriesIndex: 2
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#1be57a'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: '鎴愬搧鍑哄簱',
-         seriesIndex: 1
-     }, {
-         type: 'piecewise',
-         show: false,
-         pieces: [{
-             gt: 0,
-             lte: 60,
-             color: '#feb01e'
-         }, {
-             gte: 60,
-             color: '#e5421b'
-         }],
-         seriesName: '鎴愬搧鍥炴',
-         seriesIndex: 0
-     }],
-     //x杞�
-     xAxis: {
-         axisLine: {
-             lineStyle: {
-                 color: '#132987'
-             }
-         },
-         axisLabel: {
-             textStyle: {
-                 color: '#FFF',
-                 fontSize: 12
-             },
-         },
-         //鍒诲害绾�
-         axisTick: {
-             show: false
-         },
-         //鍧愭爣杞存樉绀哄��
-         data: ["04/19", "04/20", "04/21", "04/22", "04/23", "04/24", "04/25"]
-     },
-     //y杞�
-     yAxis: {
-         axisLabel: { //  鏀瑰彉y杞村瓧浣撻鑹插拰澶у皬
-             //formatter: '{value} m鲁 ', //  缁檡杞存坊鍔犲崟浣�
-             textStyle: {
-                 color: '#fff',
-                 fontSize: 12,
-             },
-         },
-         //鍧愭爣杞寸嚎
-         axisLine: {
-             show: false,
-         },
-         //鍒诲害绾�
-         axisTick: {
-             show: false
-         },
-         //鍦╣rid鍖哄煙涓殑鍒嗛殧绾�
-         splitLine: {
-             show: true,
-             lineStyle: {
-                 color: '#132987',
-             }
-         },
-     },
-
-     //
-     series: [{
-         name: '鎴愬搧鍏ュ簱',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#feb01e'
-         },
-         data: [160, 156, 150, 180, 170, 200, 20],
-     }, {
-         name: '鎴愬搧鍑哄簱',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#1be57a'
-         },
-         data: [80, 115, 120, 130, 91, 99,  20]
-     }, {
-         name: '鎴愬搧鍥炴',
-         type: 'line',
-         symbolSize: [0, 0],
-         itemStyle: {
-             color: '#69dbf7'
-         },
-         data: [70, 113, 118, 111, 89, 99,  32]
-     }, { //姘存尝绾圭偣
-         name: '鎴愬搧鍏ュ簱',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#feb01e'
-             }, {
-                 offset: 1,
-                 color: 'rgba(254,176,30,.3)'
-             }])
-         },
-         data: [160, 156, 150, 180, 170, 200,  20]
-
-     }, { //姘存尝绾圭偣
-         name: '鎴愬搧鍑哄簱',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#1be57a'
-             }, {
-                 offset: 1,
-                 color: 'rgba(27,229,122,.3)'
-             }])
-         },
-         data: [80, 115, 120, 130, 91, 99,  20]
-
-     }, { //姘存尝绾圭偣
-         name: '鎴愬搧鍥炴',
-         type: 'effectScatter',
-         symbolSize: [5, 5],
-         rippleEffect: {
-             period: 1,
-             scale: 4,
-             brushType: 'fill'
-         },
-         itemStyle: {
-             color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
-                 offset: 0,
-                 color: '#69dbf7'
-             }, {
-                 offset: 1,
-                 color: '#aefbc3'
-             }])
-         },
-         markLine: {
-             symbol: "none",
-             label: {
-                 normal: {
-                     show: false,
-                 }
-             },
-             lineStyle: {
-                 type: "solid",
-                 color: 'rgba(210,56,56,.6)',
-                 width: 2
-             },
-             data: [{
-                 yAxis: 60
-             }]
-         },
-         data: [70, 113, 118, 111, 89, 99, 32]
-
-     }]
- };
-      this.switper();
-    },
-    //杞
-    switper() {
-      if (this.timer) {
-        return;
-      }
-      let looper = (a) => {
-        this.getData();
+        tooltip: {
+          trigger: 'axis',
+          formatter: params => {
+            let result = `${params[0].axisValue}<br>`;
+            params.forEach(item => {
+              result += `${item.marker} ${item.seriesName}: ${item.value}<br>`;
+            });
+            return result;
+          }
+        },
+        legend: {
+          right: '12%',
+          bottom: '4%',
+          textStyle: {
+            color: '#fff',
+            fontSize: '13'
+          },
+          itemGap: 20,
+          itemWidth: 10,
+          itemHeight: 10,
+          icon: 'circle',
+          data: ['鎴愬搧鍏ュ簱', '鎴愬搧鍑哄簱', '绌烘鍥炴祦', '鎴愬搧鍥炲簱']
+        },
+        grid: {
+          left: '8%',
+          top: '15%',
+          bottom: '14%',
+          width: '86%',
+        },
+        xAxis: {
+          type: 'category',
+          axisLine: {
+            lineStyle: {
+              color: '#132987'
+            }
+          },
+          axisLabel: {
+            textStyle: {
+              color: '#FFF',
+              fontSize: 12
+            },
+          },
+          axisTick: {
+            show: false
+          },
+          data: ['鍔犺浇涓�...']
+        },
+        yAxis: {
+          type: 'value',
+          axisLabel: {
+            textStyle: {
+              color: '#fff',
+              fontSize: 12,
+            },
+          },
+          axisLine: {
+            show: false,
+          },
+          axisTick: {
+            show: false
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              color: '#132987',
+            }
+          },
+        },
+        series: [
+          { name: '鎴愬搧鍏ュ簱', type: 'line', data: [] },
+          { name: '鎴愬搧鍑哄簱', type: 'line', data: [] },
+          { name: '绌烘鍥炴祦', type: 'line', data: [] },
+          { name: '鎴愬搧鍥炲簱', type: 'line', data: [] }
+        ]
       };
-      this.timer = setInterval(
-        looper,
-        this.$store.state.setting.echartsAutoTime
-      );
     },
-  },
+    async fetchData() {
+       this.loading = true;
+      this.error = null;
+      
+      try {
+        console.log('姝e湪璇锋眰鏁版嵁...');
+        const response = await GetProWeekTasks({});
+        console.log('瀹屾暣鍝嶅簲:', response); // 鎵撳嵃瀹屾暣鍝嶅簲鏌ョ湅缁撴瀯
+        
+        // 鐩存帴浣跨敤response浣滀负鏁版嵁锛堟牴鎹疄闄呭搷搴旂粨鏋勮皟鏁达級
+        if (!response || !response.dateRange || !response.dailyStatistics) {
+          throw new Error('鏁版嵁鏍煎紡涓嶆纭�');
+        }
+        
+        this.updateChart(response); // 鐩存帴浼犲叆response锛岃�岄潪response.data
+      } catch (error) {
+        console.error('鑾峰彇鏁版嵁閿欒:', error);
+        this.error = error.message;
+        this.initEmptyChart();
+      } finally {
+        this.loading = false;
+      }
+    },
+    updateChart(data) {
+      
+      
+      const dates = data.dateRange;
+      const stats = data.dailyStatistics;
+      
+      const seriesData = {
+        '鎴愬搧鍏ュ簱': [],
+        '鎴愬搧鍑哄簱': [],
+        '绌烘鍥炴祦': [],
+        '鎴愬搧鍥炲簱': []
+      };
+      
+      // 鏍规嵁瀹為檯鏁版嵁鏍煎紡璋冩暣瀛楁鍚嶏紙灏忓啓寮�澶达級
+      stats.forEach(day => {
+        seriesData['鎴愬搧鍏ュ簱'].push(day.inProduct || 0);
+        seriesData['鎴愬搧鍑哄簱'].push(day.outProduct || 0);
+        seriesData['绌烘鍥炴祦'].push(day.emptyProductBack || 0);
+        seriesData['鎴愬搧鍥炲簱'].push(day.inProductBack || 0);
+      });
+      
+      this.options = {
+        ...this.options,
+        xAxis: {
+          ...this.options.xAxis,
+          data: dates
+        },
+        series: this.options.series.map(series => ({
+          ...series,
+          data: seriesData[series.name] || []
+        }))
+      };
+    },
+    startAutoRefresh() {
+      this.stopAutoRefresh();
+      this.timer = setInterval(() => {
+        this.fetchData();
+      }, this.$store.state.setting.echartsAutoTime || 10000);
+    },
+    stopAutoRefresh() {
+      if (this.timer) clearInterval(this.timer);
+    }
+  }
 };
 </script>
+
 <style lang='scss' scoped>
 .user_Overview {
   li {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/station-two.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/station-two.vue"
index 8c14a2d..d3a1ef8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/station-two.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/LargeScreen/CP-Screen/src/views/indexs/station-two.vue"
@@ -1,463 +1,289 @@
-<!--
- * @Author: daidai
- * @Date: 2022-02-28 16:16:42
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-07-20 17:57:11
- * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
--->
 <template>
-    <div id="name" style="width: 100%; height: 100%">
-      <Echart :options="options" style="width: 100%; height: 100%"></Echart>
-    </div>
-  </template>
-  
-  <script>
-  import { currentGET } from "api/modules";
-  import { ProductionStock } from "@/api/http.js";
-  import * as echarts from 'echarts';
-  let style = {
-    fontSize: 24,
-  };
-  export default {
-    data() {
-      return {
-        pageflag: true,
-        myChart: {},
-        options: {},
-      };
-    },
-    filters: {
-      numsFilter(msg) {
-        return msg || 0;
-      },
-    },
-    created() {
-      this.getData();
-    },
-    mounted() {
-      this.init();
-    },
-    beforeDestroy() {
-      this.clearData();
-    },
-    methods: {
-      init() {
-        let dataPie = [
+  <div class="tech-chart-container">
+    <Echart
+      :options="options"
+      :autoresize="true"
+      style="width: 100%; height: 100%"
+    />
+  </div>
+</template>
 
-    {
-        value: 410,
-        name: '浼佷笟'
-    },
-    {
-        value: 380,
-        name: '鏀垮簻'
-    },
-    {
-        value: 501,
-        name: '涓汉'
-    },
-];
-let colorPie = ['#173852', '#0b2036', '#002e49'];
-let colorWrap = ['#3087d6', '#afe1ff', '#4be1ff'];
-let baseDataPie = [],
-    baseDataWrap = [];
-for (var i = 0; i < dataPie.length; i++) {
-    baseDataPie.push({
-        value: dataPie[i].value,
-        name: dataPie[i].name,
-        itemStyle: {
-            normal: {
-                borderWidth: 50,
+<script>
+import { GetCPLargeStockCount } from "@/api/http.js";
+import * as echarts from 'echarts';
 
-                borderColor: colorPie[i],
-
-            }
-        }
-    });
-    baseDataWrap.push({
-        value: dataPie[i].value,
-        name: dataPie[i].name,
-        itemStyle: {
-            normal: {
-                color: colorWrap[i],
-                borderWidth: 10,
-                borderColor: colorWrap[i],
-                shadowBlur: 50,
-                shadowColor: 'rgba(48, 135, 214, 0.3)',
-            }
-        }
-    }, {
-        value: 10,
-        name: '',
-        itemStyle: {
-            normal: {
-                color: 'transparent',
-                borderWidth: 10,
-                borderColor: 'transparent',
-
-            }
-        }
-    });
-}
-
-
-this.options = {
-    backgroundColor: '#021228',
-    title: {
-        text: '鎶ヨ鎬绘暟',
-        subtext: '10,225',
-        textStyle: {
+export default {
+  data() {
+    return {
+      options: {
+        backgroundColor: 'transparent',
+        title: {
+          text: '鎴愬搧浜у搧搴撳瓨鎬绘暟',
+          subtext: '鍔犺浇涓�...',
+          textStyle: {
             color: '#00b5f3',
-            fontSize: 12,
-            
-        },
-        subtextStyle: {
+            fontSize: 14,
+          },
+          subtextStyle: {
             align: 'center',
-            fontSize: 18,
-            color: ['#85c7e3'],
-            fontWeight:800
+            fontSize: 28,
+            color: '#4be1ff',
+            fontWeight: 'bold',
+            textShadow: '0 0 15px rgba(75, 225, 255, 0.7)'
+          },
+          x: 'center',
+          y: 'center',
         },
-        x: '38%',
-        y: 'center',
-    },
-    tooltip: {
-        show: true,
-        trigger: 'item',
-        formatter: "{a}锛歿b} <br/>鍗犳瘮锛歿d}%"
-    },
-    legend: {
-        data: ['浼佷笟', '鏀垮簻', '涓汉'],
-        icon: 'vertical',
-        right: '1%',
-        top: 'center',
-        orient: 'vertical',
-        itemGap: 20,
-        itemWidth: 15,
-        itemHeight: 8,
-
-        formatter: function(name) {
-            let target;
-            for (let i = 0; i < dataPie.length; i++) {
-                if (dataPie[i].name === name) {
-                    target = dataPie[i].value
-                }
-            }
-            let arr = [name, target];
-            return arr.join("\n")
-
+        tooltip: {
+          show: false // 瀹屽叏绂佺敤tooltip
         },
-        textStyle: {
-            lineHeight: 20,
-            color: '#9ed2f5',
-
-        },
-    },
-    grid: {
-        left: '1%', // 涓庡鍣ㄥ乏渚х殑璺濈
-        right: '1%', // 涓庡鍣ㄥ彸渚х殑璺濈
-        top: '1%', // 涓庡鍣ㄩ《閮ㄧ殑璺濈
-        bottom: '1%', // 涓庡鍣ㄥ簳閮ㄧ殑璺濈
-
-    },
-    series: [
-        {
-            name: '',
+        series: [
+          {
+            name: '搴撳瓨鏁伴噺',
             type: 'pie',
-            clockWise: false, //椤烘椂鍔犺浇
-            hoverAnimation: false, //榧犳爣绉诲叆鍙樺ぇ
-            center: ['40%', '50%'],
-            radius: ['80%', '81%'],
-            tooltip: {
-                show: false
-            },
+            radius: ['65%', '85%'],
+            center: ['50%', '50%'],
+            hoverAnimation: false, // 绂佺敤鎮仠鍔ㄧ敾
+            silent: true, // 绂佺敤鎵�鏈変氦浜�
             label: {
-                normal: {
-                    show: false
-                }
+              show: false
             },
-            data: baseDataWrap
-        },
-        {
-
-            name: '鎶ヨ',
+            labelLine: {
+              show: false
+            },
+            itemStyle: {
+              borderWidth: 0,
+              shadowBlur: 20,
+              shadowColor: 'rgba(0, 150, 255, 0.5)'
+            },
+            data: [{
+              value: 0,
+              name: '',
+              itemStyle: {
+                // 闈掕摑鑹插埌钃濈櫧鑹叉笎鍙橈紝娣诲姞鍔ㄦ�佹晥鏋�
+                color: {
+                  type: 'linear',
+                  x: 0,
+                  y: 0,
+                  x2: 0,
+                  y2: 1,
+                  colorStops: [
+                    { offset: 0, color: '#00ffcc' },
+                    { offset: 0.5, color: '#00b4ff' },
+                    { offset: 1, color: '#0062ff' }
+                  ],
+                  global: false
+                }
+              }
+            }]
+          },
+          // 娣诲姞澶栧彂鍏夊渾鐜�
+          {
             type: 'pie',
-            color: colorPie,
-            selectedMode: 'single',
-            radius: ['55%', '58%'],
-            center: ['40%', '50%'],
+            radius: ['85%', '87%'],
+            center: ['50%', '50%'],
             hoverAnimation: false,
-            label: {
-                normal: {
-                    show: false,
-                }
+            silent: true,
+            label: { show: false },
+            labelLine: { show: false },
+            itemStyle: {
+              // 闈掕摑鑹插埌钃濈櫧鑹叉笎鍙橈紝娣诲姞鍔ㄦ�佹晥鏋�
+              color: {
+                type: 'linear',
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [
+                  { offset: 0, color: '#00ffcc' },
+                  { offset: 0.5, color: '#00b4ff' },
+                  { offset: 1, color: '#0062ff' }
+                ],
+                global: false
+              }
             },
-
-            data: baseDataPie
-        },
-
-    ]
-};
-      },
-      clearData() {
-        if (this.timer) {
-          clearInterval(this.timer);
-          this.timer = null;
-        }
-      },
-      async getData() {
-        this.pageflag = true;
-        // currentGET("big2").then((res) => {
-        //     if (!this.timer) {
-        //         console.log("璁惧鎬昏2", res);
-        //     }
-        //     if (res.success) {
-        //         this.userOverview = res.data;
-        //            this.onlineconfig = {
-        //             ...this.onlineconfig,
-        //             number: [1]
-        //         }
-        //         this.config = {
-        //             ...this.config,
-        //             number: [7]
-        //         }
-        //         this.offlineconfig = {
-        //             ...this.offlineconfig,
-        //             number: [4]
-        //         }
-        //         this.laramnumconfig = {
-        //             ...this.laramnumconfig,
-        //             number: [10]
-        //         }
-        //         this.switper();
-        //     } else {
-        //         this.pageflag = false;
-        //         this.$Message.warning(res.msg);
-        //     }
-        // });
-        // var rep = await ProductionStock();
-        let dataPie = [
-    {
-        value: 430,
-        name: '搴撳瓨浜у搧'
-    },
-];
-let colorPie = ['#173852'];
-let colorWrap = ['#3087d6'];
-let baseDataPie = [],
-    baseDataWrap = [];
-for (var i = 0; i < dataPie.length; i++) {
-    baseDataPie.push({
-        value: dataPie[i].value,
-        name: dataPie[i].name,
-        itemStyle: {
-            normal: {
-                borderWidth: 50,
-
-                borderColor: colorPie[i],
-
-            }
-        }
-    });
-    baseDataWrap.push({
-        value: dataPie[i].value,
-        name: dataPie[i].name,
-        itemStyle: {
-            normal: {
-                color: colorWrap[i],
-                borderWidth: 10,
-                borderColor: colorWrap[i],
-                shadowBlur: 50,
-                shadowColor: 'rgba(48, 135, 214, 0.3)',
-            }
-        }
-    }, {
-        value: 10,
-        name: '',
-        itemStyle: {
-            normal: {
-                color: 'transparent',
-                borderWidth: 10,
-                borderColor: 'transparent',
-
-            }
-        }
-    });
-}
-
-
-this.options = {
-    title: {
-        text: '浜у搧鎬绘暟',
-        subtext: '430',
-        textStyle: {
-            color: '#00b5f3',
-            fontSize: 12,
-            
-        },
-        subtextStyle: {
-            align: 'center',
-            fontSize: 18,
-            color: ['#85c7e3'],
-            fontWeight:800
-        },
-        x: '33%',
-        y: 'center',
-    },
-    tooltip: {
-        show: true,
-        trigger: 'item',
-        formatter: "{a}锛歿b} <br/>鍗犳瘮锛歿d}%"
-    },
-    legend: {
-        data: ['搴撳瓨浜у搧'],
-        icon: 'vertical',
-        right: '1%',
-        top: 'center',
-        orient: 'vertical',
-        itemGap: 20,
-        itemWidth: 15,
-        itemHeight: 8,
-
-        formatter: function(name) {
-            let target;
-            for (let i = 0; i < dataPie.length; i++) {
-                if (dataPie[i].name === name) {
-                    target = dataPie[i].value
-                }
-            }
-            let arr = [name, target];
-            return arr.join("\n")
-
-        },
-        textStyle: {
-            lineHeight: 20,
-            color: '#9ed2f5',
-
-        },
-    },
-    grid: {
-        left: '1%', // 涓庡鍣ㄥ乏渚х殑璺濈
-        right: '1%', // 涓庡鍣ㄥ彸渚х殑璺濈
-        top: '1%', // 涓庡鍣ㄩ《閮ㄧ殑璺濈
-        bottom: '1%', // 涓庡鍣ㄥ簳閮ㄧ殑璺濈
-
-    },
-    series: [
-        {
-            name: '',
+            data: [{
+              value: 1,
+              name: ''
+            }]
+          },
+          // 娣诲姞鍐呭彂鍏夊渾鐜�
+          {
             type: 'pie',
-            clockWise: false, //椤烘椂鍔犺浇
-            hoverAnimation: false, //榧犳爣绉诲叆鍙樺ぇ
-            center: ['40%', '50%'],
-            radius: ['80%', '81%'],
-            tooltip: {
-                show: false
-            },
-            label: {
-                normal: {
-                    show: false
-                }
-            },
-            data: baseDataWrap
-        },
-        {
-
-            name: '绉嶇被',
-            type: 'pie',
-            color: colorPie,
-            selectedMode: 'single',
-            radius: ['55%', '58%'],
-            center: ['40%', '50%'],
+            radius: ['63%', '65%'],
+            center: ['50%', '50%'],
             hoverAnimation: false,
-            label: {
-                normal: {
-                    show: false,
-                }
+            silent: true,
+            label: { show: false },
+            labelLine: { show: false },
+            itemStyle: {
+              // 闈掕摑鑹插埌钃濈櫧鑹叉笎鍙橈紝娣诲姞鍔ㄦ�佹晥鏋�
+              color: {
+                type: 'linear',
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [
+                  { offset: 0, color: '#00ffcc' },
+                  { offset: 0.5, color: '#00b4ff' },
+                  { offset: 1, color: '#0062ff' }
+                ],
+                global: false
+              }
             },
-
-            data: baseDataPie
-        },
-
-    ]
-};
-        this.switper();
+            data: [{
+              value: 1,
+              name: ''
+            }]
+          },
+          // 娣诲姞鍔ㄦ�佺矑瀛愭晥鏋�
+          {
+            type: 'scatter',
+            coordinateSystem: 'none',
+            data: this.generateParticles(30),
+            symbolSize: (val) => {
+              return val[2] * 2;
+            },
+            itemStyle: {
+              color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [
+                { offset: 0, color: 'rgba(0, 255, 255, 0.8)' },
+                { offset: 1, color: 'rgba(0, 255, 255, 0)' }
+              ])
+            },
+            // 娣诲姞绮掑瓙闂儊鏁堟灉
+            effect: {
+              show: true,
+              period: 2,
+              trailLength: 0.1,
+              symbol: 'circle',
+              symbolSize: 0
+            }
+          }
+        ]
       },
-      //杞
-      switper() {
-        if (this.timer) {
-          return;
-        }
-        let looper = (a) => {
-          this.getData();
-        };
-        this.timer = setInterval(
-          looper,
-          this.$store.state.setting.echartsAutoTime
-        );
-      },
+      timer: null,
+      particleTimer: null,
+      gradientTimer: null
+    };
+  },
+  mounted() {
+    this.fetchData();
+    this.startAutoRefresh();
+    this.startParticleAnimation();
+    this.startGradientAnimation();
+  },
+  beforeDestroy() {
+    this.stopAutoRefresh();
+    this.stopParticleAnimation();
+    this.stopGradientAnimation();
+  },
+  methods: {
+    generateParticles(count) {
+      const particles = [];
+      for (let i = 0; i < count; i++) {
+        const angle = Math.random() * Math.PI * 2;
+        const radius = 0.7 + Math.random() * 0.2;
+        particles.push([
+          Math.cos(angle) * radius,
+          Math.sin(angle) * radius,
+          Math.random() * 2 + 1
+        ]);
+      }
+      return particles;
     },
-  };
-  </script>
-  <style lang='scss' scoped>
-  .user_Overview {
-    li {
-      flex: 1;
-  
-      p {
-        text-align: center;
-        height: 16px;
-        font-size: 16px;
+    async fetchData() {
+      try {
+        const response = await GetCPLargeStockCount({});
+        const stockCount = response.stockCount || 0;
+        this.updateChart(stockCount);
+      } catch (error) {
+        console.error('鑾峰彇搴撳瓨鎬绘暟澶辫触:', error);
+        this.options.title.subtext = '鏁版嵁寮傚父';
+        this.options.title.subtextStyle.color = '#ff4d4f';
       }
-  
-      .user_Overview_nums {
-        width: 100px;
-        height: 100px;
-        text-align: center;
-        line-height: 100px;
-        font-size: 22px;
-        margin: 50px auto 30px;
-        background-size: cover;
-        background-position: center center;
-        position: relative;
-  
-        &::before {
-          content: "";
-          position: absolute;
-          width: 100%;
-          height: 100%;
-          top: 0;
-          left: 0;
-        }
-  
-        &.bgdonghua::before {
-          animation: rotating 14s linear infinite;
-        }
-      }
-  
-      .allnum {
-        // background-image: url("../../assets/img/left_top_lan.png");
-        &::before {
-          background-image: url("../../assets/img/left_top_lan.png");
-        }
-      }
-  
-      .online {
-        &::before {
-          background-image: url("../../assets/img/left_top_lv.png");
-        }
-      }
-  
-      .offline {
-        &::before {
-          background-image: url("../../assets/img/left_top_huang.png");
-        }
-      }
-  
-      .laramnum {
-        &::before {
-          background-image: url("../../assets/img/left_top_hong.png");
-        }
-      }
+    },
+    updateChart(count) {
+      this.options.series[0].data[0].value = count;
+      this.options.title.subtext = count + '绉�';
+      this.options.title.subtextStyle.color = count > 0? '#4be1ff' : '#ff4d4f';
+    },
+    startAutoRefresh() {
+      this.stopAutoRefresh();
+      this.timer = setInterval(() => {
+        this.fetchData();
+      }, 3000);
+    },
+    stopAutoRefresh() {
+      if (this.timer) clearInterval(this.timer);
+    },
+    startParticleAnimation() {
+      this.stopParticleAnimation();
+      this.particleTimer = setInterval(() => {
+        this.options.series[3].data = this.generateParticles(30);
+        this.options = {...this.options }; // 瑙﹀彂瑙嗗浘鏇存柊
+      }, 2000);
+    },
+    stopParticleAnimation() {
+      if (this.particleTimer) clearInterval(this.particleTimer);
+    },
+    startGradientAnimation() {
+      this.stopGradientAnimation();
+      this.gradientTimer = setInterval(() => {
+        const offset = Math.random();
+        this.options.series.forEach(series => {
+          if (series.itemStyle.color.type === 'linear') {
+            series.itemStyle.color.colorStops.forEach(stop => {
+              stop.offset = (stop.offset + offset) % 1;
+            });
+          }
+        });
+        this.options = {...this.options }; // 瑙﹀彂瑙嗗浘鏇存柊
+      }, 1000);
+    },
+    stopGradientAnimation() {
+      if (this.gradientTimer) clearInterval(this.gradientTimer);
     }
   }
-  </style>
\ No newline at end of file
+};
+</script>
+
+<style lang="scss" scoped>
+.tech-chart-container {
+  width: 100%;
+  height: 100%;
+  position: relative;
+  background: radial-gradient(circle at center, #021228 0%, #000810 100%);
+  border-radius: 8px;
+  overflow: hidden;
+  box-shadow: 0 0 30px rgba(0, 100, 255, 0.2);
+
+  &::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background:
+      radial-gradient(circle at 20% 30%, rgba(0, 150, 255, 0.1) 0%, transparent 50%),
+      radial-gradient(circle at 80% 70%, rgba(0, 200, 255, 0.1) 0%, transparent 50%);
+    z-index: 0;
+    animation: pulse 8s infinite alternate;
+  }
+}
+
+@keyframes pulse {
+  0% {
+    opacity: 0.3;
+  }
+  100% {
+    opacity: 0.7;
+  }
+}
+
+::v-deep .echarts {
+  position: relative;
+  z-index: 1;
+}
+</style>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue"
index e4bbcd3..21dfb3c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue"
@@ -391,6 +391,15 @@
                   :selectable="detailSelectable"
                 ></vol-table>
               </div>
+
+              <!--鏄庣粏body鑷畾涔夌粍浠�-->
+              <component
+                :is="dynamicComponent.modelSpec"
+                ref="modelSpec"
+                @parentCall="parentCall"
+              ></component>
+
+
               <!--鏄庣粏footer鑷畾涔夌粍浠�-->
               <component
                 :is="dynamicComponent.modelFooter"
@@ -551,7 +560,8 @@
       gridFooter: Empty,
       modelHeader: Empty,
       modelBody: Empty,
-      modelFooter: Empty
+      modelFooter: Empty,
+      modelSpec:Empty
     };
     //鍚堝苟鎵╁睍缁勪欢
     if (props.extend.components) {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetOrderMaterielSpec.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetOrderMaterielSpec.vue"
new file mode 100644
index 0000000..60c17b1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetOrderMaterielSpec.vue"
@@ -0,0 +1,155 @@
+<template>
+    <vol-box
+      :lazy="true"
+      v-model="model"
+      title="閫夋嫨鐗╂枡瑙勬牸"
+      :width="280"
+      :padding="0"
+    >
+      <div>
+        <div>
+          <!-- 鎼滅储閰嶇疆 -->
+          <div class="search-form">
+            <label>鐗╂枡瑙勬牸锛�</label>
+            <el-input style="width: 160px" v-model="MaterialCode"></el-input>
+          </div>
+          <el-table
+            ref="singleTable"
+            :data="filteredData"
+            style="width: 100%; height: 100%"
+            highlight-current-row
+            height="500px"
+            @selection-change="handleSelectionChange"
+          >
+            >
+            <el-table-column type="selection" width="55"> </el-table-column>
+            <el-table-column
+              v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
+              :key="index"
+              :prop="item.prop"
+              :label="item.title"
+              align="center"
+            >
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+      <template #footer>
+        <div><el-button type="primary" @click="onSelect">纭</el-button></div>
+      </template>
+    </vol-box>
+  </template>
+  <script>
+  import VolBox from "@/components/basic/VolBox.vue";
+  
+  /******娉ㄦ剰锛氬鏋滃嚭鐜版彁绀烘病鏈夋潈闄愮殑闂锛岃鍚庡彴寮�鍙戞枃妗d笂鐨勩�愰噸鍐欏悗鍙版潈闄愩��*****/
+  
+  //杩欓噷浣跨敤鐨剉ue2璇硶锛屼篃鍙互鍐欐垚vue3璇硶
+  export default {
+    components: {
+      "vol-box": VolBox,
+    },
+    methods: {},
+    data() {
+      return {
+        model: false, //寮瑰嚭妗�
+        wareId: null,
+        materielSpec:null,
+        showDetialBox: false,
+        MaterialCode:null,
+        selection:null,
+        tableData: [],
+        filteredData: [],
+        tableColumns: [
+          {
+            prop: "materielSpec",
+            title: "鐗╂枡瑙勬牸",
+            type: "string",
+          },
+        ],
+      };
+    },
+    watch: {
+      MaterialCode(newVal) {
+        this.filterLocalData(newVal);
+      }
+    },
+    methods: {
+      open(purchaseOrderNo, materielCode) { // 閲嶅懡鍚嶅弬鏁帮紝璇箟鏇存竻鏅�
+    this.model = true;
+    this.purchaseOrderNo = purchaseOrderNo; // 瀛樺偍閲囪喘鍗曞彿
+    this.materielCode = materielCode; // 瀛樺偍鐗╂枡缂栧彿
+    this.getData(); // 璋冪敤鑾峰彇鏁版嵁鏂规硶
+  },
+      filterLocalData(code) {
+        if (code) {
+          this.filteredData = this.tableData.filter((item) => {
+              return item.materielSpec.includes(code);
+          });
+          console.log(this.filteredData.length);
+          console.log(this.tableData.length);
+        } else {
+          this.filteredData = [...this.tableData]; // 閲嶇疆涓哄畬鏁存暟鎹�
+        }
+      },
+      handleSelectionChange(val,val2) {
+          this.selection = val;
+          this.selection1 = val2;
+          if (this.selection.length > 1) {
+              this.$message.error("浠呴�夋嫨涓�鏉℃暟鎹�");
+              // 娓呯┖閫変腑鐨勭涓�鏉℃暟鎹�
+              this.$refs.singleTable.clearSelection();
+          }
+          if (this.selection1.length > 1) {
+              this.$message.error("浠呴�夋嫨涓�鏉℃暟鎹�");
+              // 娓呯┖閫変腑鐨勭涓�鏉℃暟鎹�
+              this.$refs.singleTable.clearSelection();
+          }
+          console.log(this.selection);
+      },
+      getData() {
+    const url = `/api/PurchaseOrderDetail/GetOrderMaterielSpec?` +
+      `purchaseOrderNo=${encodeURIComponent(this.purchaseOrderNo)}&` +
+      `materielCode=${encodeURIComponent(this.materielCode)}`;
+
+    this.http.post(url, null, "鏌ヨ涓�")
+      .then((x) => {
+        if (!x.status) {
+          return this.$error(x.message);
+        }
+        this.tableData = x.data.map((item) => ({
+          materielSpec: item // 鍋囪鎺ュ彛杩斿洖鐨勮鏍肩洿鎺ユ槸瀛楃涓�
+        }));
+        this.filteredData = [...this.tableData]; // 閲嶇疆杩囨护鏁版嵁
+      })
+      .catch((error) => {
+        console.error("鎺ュ彛璇锋眰澶辫触:", error);
+        this.$message.error("鑾峰彇鐗╂枡瑙勬牸澶辫触锛岃閲嶈瘯");
+      });
+  },
+      onSelect() {
+        if (!this.selection) {
+          return this.$message.error("璇烽�夋嫨鏁版嵁");
+        }
+        this.$emit("parentCall", ($parent) => {
+          //濡傦細鍥炲啓缂栬緫琛ㄥ崟鏁版嵁
+          $parent.editFormFields.materielSpec = this.selection[0].materielSpec;
+          this.model = false;
+        });
+        this.MaterialCode = null;
+        this.tableData = [];
+        this.filteredData = [];
+      },
+    },
+  };
+  </script>
+  <style lang="less" scoped>
+  .search-form {
+    display: flex;
+    padding: 10px;
+    line-height: 34px;
+    button {
+      margin-left: 10px;
+    }
+  }
+  </style>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
index 516fc1d..24cec15 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
@@ -3,6 +3,7 @@
 import modelHeader from './extend/materielcodeSelectView.vue'
 import modelBody from './extend/purchaseOrderNoSelectView.vue'
 import modelFooter from './extend/GetOrderQuantityView.vue'
+import modelSpec from './extend/GetOrderMaterielSpec.vue'
 let extension = {
   components: {
     //鏌ヨ鐣岄潰鎵╁睍缁勪欢
@@ -12,7 +13,8 @@
     //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
     modelHeader: modelHeader,
     modelBody: modelBody,
-    modelFooter: modelFooter
+    modelFooter: modelFooter,
+    modelSpec: modelSpec
   },
   tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
   buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
@@ -87,6 +89,22 @@
             }
           });
         });
+        this.editFormOptions.forEach((option) => {
+          option.forEach((item) => {
+            if (item.field == 'materielSpec') {
+              //鍒濆鍖栧脊鍑烘閫夋嫨鍣ㄩ厤缃�
+              item.extra = {
+                icon: 'el-icon-zoom-out', //鏄剧ず鍥炬爣
+                text: '閫夋嫨鐗╂枡瑙勬牸', //鏄剧ず鏂囨湰
+                style: 'color: #3a8ee6;font-size: 13px;cursor: pointer;',
+                //瑙﹀彂浜嬩欢
+                click: (item) => {
+                  this.$refs.modelSpec.open(this.editFormFields.purchaseOrderNo,this.editFormFields.materielCode);
+                }
+              };
+            }
+          });
+        });
         // warehouseIdOption.onChange = (val, option) => {
         //   this.editFormFields.materielCode = "";
         //   materielCodeOption.data = [];
@@ -124,6 +142,33 @@
         // }
       });
 
+      // 椤甸潰鍔犺浇鏃跺垵濮嬪寲宸查珮浜殑琛�
+      const initHighlightedRows = () => {
+        try {
+          const highlightedRowIds = localStorage.getItem('highlightedRowIds');
+          if (highlightedRowIds) {
+            this.highlightedRowIds = JSON.parse(highlightedRowIds);
+          } else {
+            this.highlightedRowIds = [];
+          }
+        } catch (e) {
+          console.error('Failed to load highlighted rows from localStorage:', e);
+          this.highlightedRowIds = [];
+        }
+      };
+
+      // 淇濆瓨楂樹寒琛孖D鍒版湰鍦板瓨鍌�
+      const saveHighlightedRows = () => {
+        try {
+          localStorage.setItem('highlightedRowIds', JSON.stringify(this.highlightedRowIds));
+        } catch (e) {
+          console.error('Failed to save highlighted rows to localStorage:', e);
+        }
+      };
+
+      // 鍦ㄧ粍浠跺垵濮嬪寲鏃惰皟鐢�
+      initHighlightedRows();
+
       this.columns.push({
         field: '鎿嶄綔',
         title: '鎿嶄綔',
@@ -132,13 +177,46 @@
         align: 'center',
         formatter: (row) => {
           return (
-            '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-printer">鎵撳嵃</i>'
+            '<i style="cursor: pointer;color: #2d8cf0;" class="el-icon-printer">鎵撳嵃</i>'
           );
         },
         click: (row) => {
+          // 鎵撳紑璇︽儏
           this.$refs.gridBody.open(row);
+          // 鑾峰彇琛岀殑鍞竴鏍囪瘑锛堝亣璁緍ow.id鏄敮涓�ID锛�
+          const rowId = row.id;
+          // 娣诲姞鍒板凡楂樹寒鍒楄〃
+          if (!this.highlightedRowIds.includes(rowId)) {
+            this.highlightedRowIds.push(rowId);
+            // 淇濆瓨鍒版湰鍦板瓨鍌�
+            saveHighlightedRows();
+            // 鍒锋柊琛ㄦ牸浠ュ簲鐢ㄦ牱寮�
+            this.$refs.gridBody.refresh();
+          }
         }
       });
+
+      // 閰嶇疆cellStyle
+      this.columns.forEach((column) => {
+        // 淇濆瓨鍘熸湁鐨刢ellStyle鍑芥暟
+        const originalCellStyle = column.cellStyle;
+        
+        column.cellStyle = (row) => {
+          // 鍏堝簲鐢ㄥ師鏈夌殑鏍峰紡閫昏緫
+          let style = originalCellStyle ? originalCellStyle(row) : {};
+          
+          // 濡傛灉琛岃鏍囪涓洪珮浜紝鍒欐坊鍔犵豢鑹茶儗鏅�
+          if (this.highlightedRowIds.includes(row.id)) {
+            style = {
+              ...style,
+              background: '#d4edda', 
+              color: '#155724'
+            };
+          }
+          
+          return style;
+        };
+      });
     },
     onInited() {
       //妗嗘灦鍒濆鍖栭厤缃悗
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/MesOutOrderDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/MesOutOrderDetail.vue"
index 9556fb4..3e5e94d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/MesOutOrderDetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/MesOutOrderDetail.vue"
@@ -160,6 +160,20 @@
           width: 150,
         },
         {
+        prop: "productionDate",
+        title: "鐢熶骇鏃ユ湡",
+        type: "string",
+        width: 160,
+        
+      },
+      {
+        prop: "effectiveDate",
+        title: "鏈夋晥鏈�",
+        type: "string",
+        width: 160,
+  
+      },
+        {
           prop: "locationCode",
           title: "璐т綅缂栧彿",
           type: "string",
@@ -188,7 +202,6 @@
           "鏌ヨ涓�"
         )
         .then((x) => {
-          
           var label=[
               { label: '宸插垎閰�', value: 0 },
               { label: '鍑哄簱涓�', value: 1 },
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfoRow.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfoRow.vue"
index 2f44aea..5060660 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfoRow.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfoRow.vue"
@@ -102,8 +102,8 @@
           <p><strong>璐т綅鍙�:</strong>{{ currentLocation.locationCode }}</p>
           <p>
             <strong>璐т綅鎺掑垪灞�:</strong> {{ currentLocation.row }}鎺抺{
-              currentLocation.layer
-            }}鍒梴{ currentLocation.index }}灞�
+              currentLocation.index
+            }}鍒梴{ currentLocation.layer }}灞�
           </p>
           <p><strong>鐘舵��:</strong> {{ getStatusText(currentLocation) }}</p>
           <p>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
index 528ef98..8a1f871 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
@@ -62,6 +62,13 @@
       ],
       [
         {
+          title: "鐗╂枡瑙勬牸",
+          field: "materielSpec",
+          type: "string",
+        },
+      ],
+      [
+        {
           title: "鎵规鍙�",
           field: "lotNo",
           required: true,
@@ -122,7 +129,14 @@
         field: "materielName",
         title: "鐗╂枡鍚嶇О",
         type: "string",
-        width: 100,
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "materielSpec",
+        title: "鐗╂枡瑙勬牸",
+        type: "string",
+        width: 150,
         align: "left",
       },
       {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/returnOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/returnOrder.vue"
index 9eed63d..a5da780 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/returnOrder.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/returnOrder.vue"
@@ -154,7 +154,7 @@
             field: "pickCode",
             title: "鐢宠鍙戞枡鍗曞彿",
             type: "select",
-            width: 160,
+            width: 180,
             align: "left",
             required: true,
           },
@@ -186,7 +186,31 @@
             field: "mCode",
             title: "鐗╂枡缂栫爜",
             type: "string",
-            width: 90,
+            width: 130,
+            align: "left",
+            required: true,
+          },
+          {
+            field: "qty",
+            title: "鍙��鏁伴噺",
+            type: "float",
+            width: 130,
+            align: "left",
+            required: true,
+          },
+          {
+            field: "returnQty",
+            title: "閫�鍥炴暟閲�",
+            type: "float",
+            width: 130,
+            align: "left",
+            required: true,
+          },
+          {
+            field: "overReturnQty",
+            title: "宸查��鍥炴暟閲�",
+            type: "float",
+            width: 130,
             align: "left",
             required: true,
           },
@@ -201,7 +225,7 @@
             field: "materielSpec",
             title: "鐗╂枡瑙勬牸",
             type: "string",
-            width: 90,
+            width: 120,
             align: "left",
           },
           {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue"
index 48e7735..1bcf0d6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue"
@@ -207,6 +207,20 @@
         align: "left",
       },
       {
+        field: "productionDate",
+        title: "鐢熶骇鏃ユ湡",
+        type: "string",
+        width: 160,
+        align: "left",
+      },
+      {
+        field: "effectiveDate",
+        title: "鏈夋晥鏈�",
+        type: "string",
+        width: 160,
+        align: "left",
+      },
+      {
         field: "taskNum",
         title: "浠诲姟鍙�",
         type: "string",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
index 0b94c04..4129a8d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
@@ -30,27 +30,81 @@
     const editFormOptions = ref([
       [
         {
+          title: "搴撳瓨涓婚敭",
+          readonly:true,
+          field: "stockId",
+          type: "string",
+        },
+        
+        {
           title: "鐗╂枡缂栧彿",
           required: true,
           field: "materielCode",
           type: "string",
         },
         {
-          title: "鍗曟嵁缂栧彿",
+          title: "鐗╂枡鍚嶇О",
           required: true,
           field: "materielName",
           type: "string",
         },
         {
-          title: "鎵规鍙�",
-          required: true,
+          title: "鍗曟嵁缂栧彿",
+          readonly: true,
           field: "orderNo",
           type: "string",
         },
+        
+      ],
+      [
+        {
+          title: "鎵规鍙�",
+          required: true,
+          field: "batchNo",
+          type: "string",
+        },
+        {
+          title: "搴撳瓨鏁伴噺",
+          required: true,
+          field: "stockQuantity",
+          type: "string",
+        },
+        {
+          title: "鐢熶骇鏃ユ湡",
+          required: true,
+          field: "productionDate",
+          type: "string",
+        },
+        {
+          title: "鏈夋晥鏈�",
+          required: true,
+          field: "effectiveDate",
+          type: "string",
+        },
+      ],
+      [
         {
           title: "搴忓垪鍙�",
-          required: true,
+          readonly: true,
           field: "serialNumber",
+          type: "string",
+        },
+        {
+          title: "鍑哄簱鏁伴噺",
+          required: true,
+          field: "outboundQuantity",
+          type: "string",
+        },
+        {
+          title: "搴撳瓨鏄庣粏鐘舵��",
+          readonly: true,
+          field: "status",
+          type: "string",
+        },
+        {
+          title: "鍏ュ簱鍗曟槑缁嗚鍙�",
+          readonly: true,
+          field: "inboundOrderRowNo",
           type: "string",
         },
       ],
@@ -144,6 +198,21 @@
         bind: { key: "stockStatusEmun", data: [] },
       },
       {
+        field: "productionDate",
+        title: "鐢熶骇鏃ユ湡",
+        type: "string",
+        width: 120,
+        align: "left",
+       
+      },
+      {
+        field: "effectiveDate",
+        title: "鏈夋晥鏈�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
         field: "creater",
         title: "鍒涘缓浜�",
         type: "string",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
index b18d604..310b96c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
@@ -225,6 +225,20 @@
         align: "left",
         hidden: true,
       },
+      {
+        field: "materielCode",
+        title: "鐗╂枡缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "quantity",
+        title: "鐗╂枡鏁伴噺",
+        type: "float",
+        width: 100,
+        align: "left",
+      },
     ]);
     const detail = ref({
       cnName: "#detailCnName",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
index 6ab9ba1..937a242 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
@@ -225,6 +225,20 @@
         align: "left",
         hidden: true,
       },
+      {
+        field: "materielCode",
+        title: "鐗╂枡缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "quantity",
+        title: "鐗╂枡鏁伴噺",
+        type: "float",
+        width: 100,
+        align: "left",
+      },
     ]);
     const detail = ref({
       cnName: "#detailCnName",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
index 6595181..18680f9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
@@ -16,5 +16,7 @@
         WebResponseContent GetPurchaseOrderNos(string materielCode);
 
         WebResponseContent GetOrderQuantity(string purchaseOrderNo);
+
+        WebResponseContent GetOrderMaterielSpec(string purchaseOrderNo, string materielCode);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index a608a7f..0bcdcfc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -863,11 +863,17 @@
 
                     stockInfoDetails.Add(stockInfoDetail);
 
-                    notGroupDetail.ReceiptQuantity += model.Quantity;
-                    if (notGroupDetail.ReceiptQuantity>notGroupDetail.OrderQuantity)
+                    decimal decimalReceiptQuantity = Convert.ToDecimal(notGroupDetail.ReceiptQuantity);
+                    decimal decimalModelQuantity = Convert.ToDecimal(model.Quantity);
+                    decimal decimalOrderQuantity = Convert.ToDecimal(notGroupDetail.OrderQuantity);
+                    decimalReceiptQuantity += decimalModelQuantity;
+                    // 妫�鏌ユ槸鍚﹁秴鍑鸿鍗曟暟閲�
+                    if (decimalReceiptQuantity > decimalOrderQuantity)
                     {
-                        return WebResponseContent.Instance.Error($"缁勭洏鏁伴噺婧㈠嚭{notGroupDetail.ReceiptQuantity - notGroupDetail.OrderQuantity}");
+                        return WebResponseContent.Instance.Error($"缁勭洏鏁伴噺婧㈠嚭{decimalReceiptQuantity - decimalOrderQuantity}");
                     }
+                    // 杞洖float绫诲瀷瀛樺偍锛屼絾姣旇緝鍜岃绠楅兘浣跨敤decimal瀹屾垚
+                    notGroupDetail.ReceiptQuantity = Convert.ToSingle(decimalReceiptQuantity);
                     if (notGroupDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                     {
                         notGroupDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
index b0a6a70..2cd6d3a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
@@ -63,5 +63,22 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+
+        public WebResponseContent GetOrderMaterielSpec(string purchaseOrderNo, string materielCode)
+        {
+            try
+            {
+                List<Dt_PurchaseOrder> purchaseOrders = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == purchaseOrderNo).ToList();
+                List<int> purchaseOrderIds = purchaseOrders.Select(x => x.Id).ToList();
+                List<Dt_PurchaseOrderDetail> purchaseOrderDetails = BaseDal.Db.Queryable<Dt_PurchaseOrderDetail>()
+                .Where(x => purchaseOrderIds.Contains(x.PurchaseOrderId)&& x.MaterielCode == materielCode).ToList();
+                List<string> materielSpec = purchaseOrderDetails.Select(x => x.MaterielSpec).ToList();
+                return WebResponseContent.Instance.OK(data: materielSpec);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
index f5193dc..1cadc32 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
@@ -78,5 +78,11 @@
         /// </summary>
         [SugarColumn(IsNullable = false, ColumnDescription = "渚涘簲鍟嗙紪鐮�")]
         public string SupplierCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡瑙勬牸")]
+        public string MaterielSpec { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
index 190c8ae..4ee5363 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
@@ -108,5 +108,17 @@
         /// </summary>
         [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
         public int Status { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐢熶骇鏃ユ湡")]
+        public string ProductionDate { get; set; }
+
+        /// <summary>
+        /// 鏈夋晥鏈�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏈夋晥鏈�")]
+        public string EffectiveDate { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
index 9cefadd..46497d0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
@@ -148,5 +148,19 @@
         [ExporterHeader(DisplayName = "澶囨敞")]
         [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "澶囨敞")]
         public string Remark { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [ImporterHeader(Name = "鐗╂枡缂栧彿")]
+        [ExporterHeader(DisplayName = "鐗╂枡缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+        /// <summary>
+        /// 鐗╂枡鏁伴噺
+        /// </summary>
+        [ImporterHeader(Name = "鐗╂枡鏁伴噺")]
+        [ExporterHeader(DisplayName = "鐗╂枡鏁伴噺")]
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "鐗╂枡鏁伴噺")]
+        public float Quantity { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
index 5da8a45..cba7d6c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
@@ -52,7 +52,10 @@
                     OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
                     Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
                     StockId = item.Id,
-                    TaskNum = taskNum
+                    TaskNum = taskNum,
+                    ProductionDate = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+                    EffectiveDate = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
+
                 };
                 outStockLockInfos.Add(outStockLockInfo);
             }
@@ -80,6 +83,8 @@
                 TaskNum = taskNum,
                 OrderQuantity = outboundOrderDetail.OrderQuantity,
                 Unit = outboundOrderDetail.Unit,
+                ProductionDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+                EffectiveDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
             };
 
             return outStockLockInfo;
@@ -111,7 +116,10 @@
                 StockId = outStock.Id,
                 TaskNum = taskNum,
                 OrderQuantity = mesOutboundOrder.OrderQuantity,
-                Unit = mesOutboundOrder.Unit
+                Unit = mesOutboundOrder.Unit,
+                ProductionDate = outStock.Details.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).FirstOrDefault()?.ProductionDate,
+                EffectiveDate = outStock.Details.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).FirstOrDefault()?.EffectiveDate
+
             };
 
             return outStockLockInfo;
@@ -146,7 +154,9 @@
                     StockId = item.Id,
                     TaskNum = taskNum,
                     OrderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity,
-                    Unit = mesPPCutOutboundOrderDetail.Unit
+                    Unit = mesPPCutOutboundOrderDetail.Unit,
+                    ProductionDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+                    EffectiveDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
                 };
                 outStockLockInfos.Add(outStockLockInfo);
             }
@@ -173,7 +183,9 @@
                 StockId = outStock.Id,
                 TaskNum = taskNum,
                 OrderQuantity = mesPPOutboundOrder.OrderQuantity,
-                Unit = mesPPOutboundOrder.Unit
+                Unit = mesPPOutboundOrder.Unit,
+                ProductionDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.ProductionDate,
+                EffectiveDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.EffectiveDate
             };
 
             return outStockLockInfo;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
index 9a7f842..830712a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -173,7 +173,9 @@
                     StockId = stockInfo.Id,
                     TaskNum = 0,
                     OrderQuantity = outboundOrderDetail.OrderQuantity,
-                    Unit = outboundOrderDetail.Unit
+                    Unit = outboundOrderDetail.Unit,
+                    ProductionDate = stockInfoDetail.ProductionDate,
+                    EffectiveDate = stockInfoDetail.EffectiveDate
                 };
 
                 #region 淇敼鍑哄簱鍗�
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
index 6a41a2b..d6adcc8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs"
@@ -20,6 +20,7 @@
 using System.Text.RegularExpressions;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Core.CodeConfigEnum;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -162,7 +163,9 @@
                     TaskType = TaskTypeEnum.InProduct.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = warehouse.WarehouseId,
-                    PalletType = proStockInfo.PalletType
+                    PalletType = proStockInfo.PalletType,
+                    MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
+                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                 };
                 _unitOfWorkManage.BeginTran();
                 int taskId = BaseDal.AddData(newTask);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
index c6db724..0df30d5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -866,7 +866,9 @@
                     TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
-                    PalletType = stockInfo.PalletType
+                    PalletType = stockInfo.PalletType,
+                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
                 LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                 _unitOfWorkManage.BeginTran();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 4e74fc0..5c6ee66 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -206,7 +206,9 @@
                     TaskType = TaskTypeEnum.OutAllocate.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
-                    PalletType = stockInfo.PalletType
+                    PalletType = stockInfo.PalletType,
+                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
                 _unitOfWorkManage.BeginTran();
                 BaseDal.AddData(newTask);
@@ -374,6 +376,7 @@
                 });
                 //鏇存柊浠诲姟鐘舵��
                 task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                FeedBackWCSTaskCompleted(taskNum);
                 _unitOfWorkManage.BeginTran();
                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
                 _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
@@ -672,6 +675,7 @@
                 }
 
                 task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                FeedBackWCSTaskCompleted(taskNum);
                 _unitOfWorkManage.BeginTran();
 
                 if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
@@ -706,7 +710,6 @@
                 int beforeStatus = locationInfo.LocationStatus;
                 locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                 _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
-
                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
 
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
index 30a4ea6..7c452cc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
@@ -4,6 +4,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.APIEnum;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.OtherEnum;
@@ -110,5 +111,29 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        /// <summary>
+        /// 鍥炶皟wcs鎵嬪姩瀹屾垚浠诲姟
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        public WebResponseContent FeedBackWCSTaskCompleted(int taskNum)
+        {
+            try
+            {
+                Dt_ApiInfo? url = _apiInfoRepository.QueryData(x => x.ApiCode == APIEnum.FeedBackWCSTaskCompleted.ToString()).First();
+                string? apiAddress = url.ApiAddress;
+                if (string.IsNullOrEmpty(apiAddress))
+                {
+                    return WebResponseContent.Instance.Error($"{taskNum},鏈壘鍒癢CS浠诲姟瀹屾垚鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                }
+                string responseStr = HttpHelper.Get(apiAddress + "?taskNum=" + taskNum);
+                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error("鏈壘鍒颁换鍔″畬鎴愯繑鍥炲��");
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index a225003..29c3f68 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -88,7 +88,9 @@
                         TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                         TaskStatus = TaskStatusEnum.New.ObjToInt(),
                         WarehouseId = stockInfo.WarehouseId,
-                        PalletType = stockInfo.PalletType
+                        PalletType = stockInfo.PalletType,
+                        MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                        Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                     };
                     //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
                     Dt_InboundOrder? inboundOrder =  null;
@@ -326,7 +328,9 @@
                     TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
-                    PalletType = stockInfo.PalletType
+                    PalletType = stockInfo.PalletType,
+                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
 
                 //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
@@ -434,7 +438,9 @@
                     TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
-                    PalletType = stockInfo.PalletType
+                    PalletType = stockInfo.PalletType,
+                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
 
 
@@ -533,7 +539,9 @@
                     TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
-                    PalletType = stockInfo.PalletType
+                    PalletType = stockInfo.PalletType,
+                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
 
                 if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
@@ -761,7 +769,9 @@
                     TaskType = TaskTypeEnum.InProductBack.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = warePoint.WarehouseId,
-                    PalletType = proStockInfo.PalletType
+                    PalletType = proStockInfo.PalletType,
+                    MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
+                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                 };
                 _unitOfWorkManage.BeginTran();
                 int taskId = BaseDal.AddData(newTask);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index e295122..2914a7f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -486,7 +486,9 @@
                             TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                             PalletType = stockInfo.PalletType,
                             WarehouseId = stockInfo.WarehouseId,
-                            GroupId= groupId
+                            GroupId= groupId,
+                            MaterielCode = stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).FirstOrDefault()?.ProductCode,
+                            Quantity = (float)stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).Sum(x=> x.StockPcsQty)
                         };
                         tasks.Add(task);
                     }
@@ -525,6 +527,8 @@
                             TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                             PalletType = stockInfo.PalletType,
                             WarehouseId = stockInfo.WarehouseId,
+                            MaterielCode = stockInfo.Details.Where(x =>x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                            Quantity =(float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                         };
                         tasks.Add(task);
                     }
@@ -770,7 +774,9 @@
                                 StockId = x.Id,
                                 TaskNum = 0,
                                 OrderQuantity = OrderDetail.OrderQuantity,
-                                Unit = OrderDetail.Unit
+                                Unit = OrderDetail.Unit,
+                                ProductionDate = v.ProductionDate,
+                                EffectiveDate = v.EffectiveDate
                             };
                             outStockLockInfos.Add(outStockLockInfo);
                         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
index fd55656..cbdf94b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
@@ -149,6 +149,7 @@
                     return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
                 }
                 task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                FeedBackWCSTaskCompleted(task.TaskNum);
                 _unitOfWorkManage.BeginTran();
                 stockInfo.LocationCode = locationInfoEnd.LocationCode;
                 stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
index 2402aa9..dab54ac 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
@@ -34,5 +34,11 @@
         {
             return Service.GetOrderQuantity(purchaseOrderNo);
         }
+        //鑾峰彇鐗╂枡瑙勬牸
+        [HttpPost, HttpGet, Route("GetOrderMaterielSpec"), AllowAnonymous]
+        public WebResponseContent GetOrderMaterielSpec(string purchaseOrderNo, string materielCode)
+        {
+            return Service.GetOrderMaterielSpec(purchaseOrderNo, materielCode);
+        }
     }
 }

--
Gitblit v1.9.3