From f7a2fcdda7f1120498c5c5f75c5a99955fc54b43 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期二, 16 十二月 2025 16:54:09 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue |   82 ++++++++++++++++++++++++++++++++--------
 1 files changed, 65 insertions(+), 17 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
index d324de7..53b9c1d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -57,10 +57,10 @@
     {field: 'thickness', width: 50, title: '鍘氬害',},
     {field: 'type', width: 50, title: '绫诲瀷',},
     {field: 'state', width: 50, title: '鐘舵��',},
-    {field: 'temperingState', width: 50, title: '閽㈠寲妯℃嫙',filters: [{data: ''}], slots: {filter: 'num1_filter'},
+    {field: 'temperingState', width: 50, title: '閽㈠寲妯℃嫙', filters: [{data: ''}], slots: {filter: 'select_filter1'},
       filterMethod:filterChanged, formatter: ({ cellValue }) => cellValue === 1 ? '鏄�' : (cellValue === 0 ? '鍚�' : cellValue)},
-    {field: 'optimizeState', width: 50, title: '浼樺寲璁$畻',filters: [{data: ''}], slots: {filter: 'num1_filter'},
-      filterMethod:filterChanged,formatter: ({ cellValue }) => cellValue === 1 ? '鏄�' : (cellValue === 0 ? '鍚�' : cellValue)},
+    {field: 'optimizeState', width: 50, title: '浼樺寲璁$畻', filters: [{data: ''}], slots: {filter: 'select_filter1'},
+      filterMethod:filterChanged, formatter: ({ cellValue }) => cellValue === 1 ? '鏄�' : (cellValue === 0 ? '鍚�' : cellValue)},
     {field: 'quantity', width: 50, title: '鏁伴噺',},
     {field: 'area', width: 50, title: '闈㈢Н',},
     {field: 'processCardQuantity', width: 100, title: '娴佺▼鍗℃暟閲�',},
@@ -72,7 +72,7 @@
     {field: 'effectiveCuttingRate', width: 100, title: '鏈夋晥鍒囪鐜�',},
     {field: 'residueGlassCuttingRate', width: 100, title: '灏剧墖鍒囪鐜�',},
     {field: 'amountOfOriginalGlassUsage1', width: 100, title: '鍘熸枡浣跨敤鏁�',},
-    {field: 'averageCuttingRate1', width: 100, title: '骞冲潎鍒囪鐜�',},
+    // {field: 'averageCuttingRate1', width: 100, title: '骞冲潎鍒囪鐜�',},
     {field: 'notes', width: 50, title: '澶囨敞',},
     {field: 'creator', width: 100, title: '鍒涘缓浜�',},
     {field: 'createTime', width: 100, title: '鍒涘缓鏃堕棿',},
@@ -96,8 +96,8 @@
           {code: 'openProject', name: '鎵撳紑宸ョ▼', prefixIcon: 'vxe-icon-folder-open'},
           {code: 'compute', name: '妯℃嫙璁$畻', prefixIcon: 'vxe-icon-subtable'},
           //{code: 'optimizeTypography', name: '浼樺寲鎺掔増', prefixIcon: 'vxe-icon-menu'},
-          {code: 'production', name: '鍏佽鐢熶骇', prefixIcon: 'vxe-icon-square-checked'},
-          {code: 'novisible', name: '鐢熶骇涓嶅彲瑙�', prefixIcon: 'vxe-icon-eye-fill-close'},
+          {code: 'production', name: '纭鐢熶骇', prefixIcon: 'vxe-icon-square-checked'},
+          {code: 'novisible', name: '鍙栨秷鐢熶骇', prefixIcon: 'vxe-icon-eye-fill-close'},
           {code: 'copyproject', name: '澶嶅埢宸ョ▼', prefixIcon: 'vxe-icon-copy'},
           {code: 'undoOptimize', name: '鎾ら攢浼樺寲', prefixIcon: 'vxe-icon-error-circle-fill'},
           {code: 'undoCompute', name: '鎾ら攢妯℃嫙璁$畻', prefixIcon: 'vxe-icon-error-circle-fill'},
@@ -235,7 +235,7 @@
   {
     code: 'production',
     initialState: 1,
-    temperingState: 1,
+    // temperingState: 1,
     optimizeState: 1,
     targetState: 100,
     targetStates: 0,
@@ -246,7 +246,7 @@
   {
     code: 'novisible',
     initialState: 100,
-    temperingState: 1,
+    // temperingState: 1,
     optimizeState: 1,
     targetState: 1,
     targetStates: 0,
@@ -283,6 +283,7 @@
     targetState: null,
     successMsg: '閽㈠寲鐗堝浘宸叉墦寮�锛�',
     failureMsg: '宸ョ▼鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛橈紒',
+    requiresRow: true,
   },
   {
     code: 'viewOptimize',
@@ -290,6 +291,7 @@
     targetState: null,
     successMsg: '浼樺寲鐗堝浘宸叉墦寮�锛�',
     failureMsg: '宸ョ▼鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛橈紒',
+    requiresRow: true,
   }
 ];
 
@@ -330,6 +332,11 @@
           return;
         }
         if (config.code === 'compute') {
+          // 澧炲姞閫昏緫锛氭鏌ラ挗鍖栨ā鎷熷垪鏄惁宸茬粡鏄�"鏄�"
+          if (row.temperingState === 1) {
+            ElMessage.warning('璇ラ」鐩凡妯℃嫙璁$畻');
+            return;
+          }
           if(row.state===1 && row.temperingState===0){
             config.actionFunction({row});
           }else{
@@ -376,9 +383,36 @@
             return;
           }
           if (config.code === 'viewOptimize') {
-            ElMessageBox.alert('褰撳墠鐐瑰嚮鐨勬槸鏌ョ湅閽㈠寲鐗堝浘鍔熻兘锛岀洰鍓嶆殏鏃朵粎鍋氭彁绀猴紝鏆傛棤瀹為檯鏌ョ湅鎿嶄綔!', '鍔熻兘鎻愮ず', {
-              confirmButtonText: '鎴戠煡閬撲簡'
-            });
+            (async () => {
+              if (!row) {
+                ElMessage.warning('璇烽�夋嫨瑕佹煡鐪嬬殑宸ョ▼');
+                return;
+              }
+
+              try {
+                await router.push({
+                  name: 'optimizeInfo',
+                  params: {
+                    projectNo: row.projectNumber,
+                    thickNess: row.thickness,
+                    model: row.glassType,
+                    quantity: row.quantity,
+                    area: row.area,
+                    optimizeState: row.optimizeState
+                  },
+                  query: {
+                    redirect: 'optimizeControl' // 娣诲姞璺宠浆鏍囪瘑
+                  }
+                });
+
+                // 鍚屾椂淇濆瓨 projectNo 鍒� localStorage 渚涘悗缁〉闈娇鐢�
+                localStorage.setItem('projectNo', row.projectNumber);
+                console.log("projectNo:", row.projectNumber);
+              } catch (error) {
+                console.error('璺敱璺宠浆澶辫触:', error);
+                ElMessage.error('椤甸潰璺宠浆澶辫触');
+              }
+            })();
             return;
           }
           if (config.code === 'delProject') {
@@ -426,15 +460,13 @@
                     xGrid.value.reloadData(produceList.value);
                   }
 
-                  // 鏄剧ず鎴愬姛娑堟伅
-                  ElMessage.success(config.successMsg);
                 }else{
                   ElMessage.warning(config.checkMessage);
                   return;
                 }
               }
               else if(config.code === 'production'){
-                if(row.temperingState==1&&row.optimizeState===1&&row.state===1){
+                if(row.optimizeState===1&&row.state===1){
                   row.state = config.targetState;
                   code=3
                 }else{
@@ -537,7 +569,7 @@
   }
 }
 
-function updateProjectStateAndHandleResponse(row, projectNumber, targetState,targetStates,code, successMsg) {
+function updateProjectStateAndHandleResponse(row, projectNumber, targetState, targetStates, code, successMsg) {
   const updateParams = {
     projectNumber: projectNumber,
     stateToUpdate: targetState,
@@ -548,6 +580,11 @@
       'Content-Type': 'application/json'
     }
   }).then((res) => {
+    // 妫�鏌ヤ笟鍔$姸鎬佺爜锛屽鏋滄槸201鍒欐姏鍑洪敊璇互鍦╟atch涓鐞�
+    if (Number(res.code) === 201) {
+      // 鎶涘嚭鑷畾涔夐敊璇璞★紝鍖呭惈鍚庣杩斿洖鐨刴sg淇℃伅
+      throw new Error(res.msg || '鎿嶄綔澶辫触');
+    }
     if (Number(res.code) === 200 && (res.msg === "" || res.msg === null)) {
       ElMessage.success(successMsg);
     } else {
@@ -559,8 +596,8 @@
     }
   }).catch((error) => {
     console.error('璇锋眰鍑洪敊锛屾搷浣滄湭瀹屾垚锛岃缁嗛敊璇俊鎭�:', error);
-    const errorMsg = (res.data && res.data.errorMessage) ? res.data.errorMessage : '鎿嶄綔澶辫触锛屾湭鑾峰彇鍒板叿浣撳師鍥狅紝璇疯仈绯荤鐞嗗憳';
-    ElMessage.error(`璇锋眰鍑洪敊锛屾搷浣滄湭瀹屾垚锛屽師鍥�: ${errorMsg}`);
+    //const errorMsg = (res.data && res.data.errorMessage) ? res.data.errorMessage : '鎿嶄綔澶辫触锛屾湭鑾峰彇鍒板叿浣撳師鍥狅紝璇疯仈绯荤鐞嗗憳';
+    ElMessage.error(`璇锋眰鍑洪敊锛屾搷浣滄湭瀹屾垚  `+error);
     rollbackStateAndReloadGrid(row, targetState); // 璋冪敤鍥炴粴鍑芥暟
   });
 }
@@ -880,6 +917,17 @@
         </div>
       </template>
 
+      <template #select_filter1="{ column, $panel }">
+        <div>
+          <div v-for="(option, index) in column.filters" :key="index">
+            <vxe-select v-model="option.data" @change="changeFilterEvent($event, option, $panel)">
+              <vxe-option value="1" label="鏄�"></vxe-option>
+              <vxe-option value="0" label="鍚�"></vxe-option>
+            </vxe-select>
+          </div>
+        </div>
+      </template>
+
       <template #num1_filter="{ column, $panel }">
         <div>
           <div v-for="(option, index) in column.filters" :key="index">

--
Gitblit v1.8.0