From a660db06773007b1be690e0674829c00a57aeb7b Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 24 十二月 2025 16:21:23 +0800
Subject: [PATCH] 订单首页流程卡新增楼层编号显示

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue |  122 ++++++++++++++++++++++++++++++++--------
 1 files changed, 97 insertions(+), 25 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
index 610961f..eda7c83 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
@@ -10,7 +10,10 @@
 import request from "@/utils/request";
 import {ElMessage, ElMessageBox} from "element-plus";
 import deepClone from "@/utils/deepClone";
+import {useRouter} from "vue-router";
+import {changeFilterEvent, filterChanged} from "@/hook";
 
+const router = useRouter();
 let projectRow = ref({
   processId:null,
   technologyNumber:null
@@ -55,7 +58,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-    remote: true
+    //remote: true
   },
   customConfig: {
     storage: true
@@ -66,17 +69,17 @@
     showStatus: true
   },
   columns:[
-    {field: 'id',width: 150, title: 'ID',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'projectNumber',width: 150, title: '宸ョ▼鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'project_name',width: 150, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'glass_type',width: 150, title: '鑶滅郴',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'glass_thickness',width: 150, title: '鍘氬害',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'type',width: 150, title: '绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'state',width: 150, title: '鐘舵��',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'glass_total_area',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'process_qty',width: 150, title: '娴佺▼鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'process_cards',width: 150, title: '娴佺▼鍗″彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'id',width: 150, title: 'ID'},
+    {field: 'projectNumber',width: 150, title: '宸ョ▼鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'project_name',width: 150, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'glass_type',width: 150, title: '鑶滅郴',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'glass_thickness',width: 150, title: '鍘氬害',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'type',width: 150, title: '绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'state',width: 150, title: '鐘舵��',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'quantity',width: 150, title: t('order.quantity')},
+    {field: 'glass_total_area',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'process_qty',width: 150, title: '娴佺▼鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'process_cards',width: 150, title: '娴佺▼鍗″彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
 
   ],//琛ㄥご鍙傛暟
   data:null,//琛ㄦ牸鏁版嵁
@@ -95,6 +98,7 @@
       options: [
         [
           {code: 'openProject', name: '鎵撳紑宸ョ▼', prefixIcon: 'vxe-icon-folder-open'},
+          {code: 'updateProject', name: '淇敼宸ョ▼', prefixIcon: 'vxe-icon-folder-open'},
           {code: 'compute', name: '妯℃嫙璁$畻', prefixIcon: 'vxe-icon-subtable'},
           {code: 'delProject', name: '鍒犻櫎宸ョ▼', prefixIcon: 'vxe-icon-delete'},
         ],
@@ -109,21 +113,27 @@
 const operationConfigs = [
   {
     code: 'openProject', // 鎵撳紑宸ョ▼
-    initialState: ['10', '20', '100', '200'], //
+    initialState: ['1'], //
     targetState: null,
     successMsg: '宸叉墦寮�锛�',
     checkMessage: '褰撳墠宸ョ▼鐘舵�佷笉绗﹀悎鏉′欢锛岃纭宸ョ▼鐘舵�佸悗鍐嶆搷浣滐紒',
     requiresRow: true,
     openFile: async ({row}) => {
       const projectNumber = row.projectNumber;
-      const thickness = row.thickness;
-      const glassType = row.glassType;
+      const thickness = row.glass_thickness;
+      const glassType = row.glass_type;
+      const quantity = row.quantity;
+      const area = row.glass_total_area;
+      const optimizeState = row.optimize_state;
       await router.push({
         name: 'optimizeInfo',
         params: {
           projectNo: projectNumber,
           thickNess: thickness,
-          model: glassType
+          model: glassType,
+          quantity: quantity,
+          area: area,
+          optimizeState:optimizeState
         }
       });
     }
@@ -146,6 +156,13 @@
     targetState: null,
     successMsg: '宸ョ▼鍒犻櫎鎴愬姛锛�',
     checkMessage: '褰撳墠宸ョ▼鐘舵�佷笉绗﹀悎鍒犻櫎鏉′欢锛岃纭宸ョ▼鐘舵�佸悗鍐嶆搷浣滐紒',
+  },
+  {
+    code: 'updateProject',
+        initialState: ['1'],
+      targetState: null,
+      successMsg: '',
+      checkMessage: '褰撳墠宸ョ▼鐘舵�佷笉绗﹀悎鍒犻櫎鏉′欢锛岃纭宸ョ▼鐘舵�佸悗鍐嶆搷浣滐紒',
   }
 
 ];
@@ -171,6 +188,48 @@
   })
 }
 
+// 鍏叡澶勭悊鍑芥暟锛屽鐞嗙浉鍚屾暟鎹椂鐨勬搷浣滐紝骞惰繑鍥瀟argetRoute瀵硅薄锛堝彸閿彍鍗曞拰鍙屽嚮鎵撳紑锛�
+const handleSameDataOperation = async ({projectNumber, thickness, glassType,quantity,glass_total_area,optimize_state}) => {
+  const targetRoute = {
+    name: 'optimizeInfo',
+    params: {
+      projectNo: projectNumber,
+      thickNess: thickness,
+      model: glassType,
+      quantity: quantity,
+      area: glass_total_area,
+      optimizeState:optimize_state
+    }
+  };
+  const currentRoute = router.currentRoute.value;
+  const isRoutesEqual = currentRoute.name === targetRoute.name &&
+      currentRoute.params.projectNo === targetRoute.params.projectNo &&
+      currentRoute.params.thickNess === targetRoute.params.thickNess &&
+      currentRoute.params.model === targetRoute.params.model;
+  if (isRoutesEqual) {
+    handleConfirm();
+  }
+  return {isRoutesEqual};
+};
+
+//閫変腑鐩稿悓鏁版嵁鏃跺脊绐楁彁绀�
+const handleConfirm = () => {
+  const currentRoute = router.currentRoute.value;
+  const projectNumber = currentRoute.params.projectNo;
+  ElMessageBox.confirm(`褰撳墠宸ョ▼锛堝伐绋嬪彿锛�${projectNumber}锛夊凡鎵撳紑锛屾槸鍚﹂噸鏂版墦寮�锛焋, '纭鎿嶄綔', {
+    confirmButtonText: '纭畾',
+    cancelButtonText: '鍙栨秷',
+    type: 'warning'
+  })
+      .then(() => {
+        emit('close-detail-page');
+        ElMessage.success('宸叉墦寮�锛�');
+      })
+      .catch(() => {
+        ElMessage.info('宸插彇娑堟搷浣�');
+      });
+};
+
 const gridEvents = {
   menuClick({menu, row}) {
     const $grid = xGrid.value;
@@ -183,6 +242,25 @@
         }
         if (config.code === 'compute') {
           config.actionFunction({row});
+          return;
+        }
+        if (config.code === 'updateProject') {
+          if (!row) {
+            ElMessage.warning(config.checkMessage);
+            return;
+          }
+          nextTick(() => {
+            processCardRef.value.getUpdateFlowCardList(row.projectNumber, row.glass_type, row.glass_thickness);
+          });
+          return;
+        }
+        if (config.code === 'openProject') {
+          handleSameDataOperation(row).then(({isRoutesEqual}) => {
+            if (!isRoutesEqual) {
+              config.openFile({row});
+              ElMessage.success(config.successMsg);
+            }
+          });
           return;
         }
         // 娣诲姞纭鎻愮ず寮圭獥锛岃闂敤鎴锋槸鍚﹁繘琛屽綋鍓嶆搷浣�
@@ -231,8 +309,8 @@
       }
       //鍒锋柊宸ョ▼鍙�
       processCardRef.value.getProjectId();
-      processCardRef.value.selectFlowCardList();
       processCardRef.value.selectGlassType();
+      processCardRef.value.selectFlowCardList();
     } else {
       console.log('res.code 鐨勫��:', res.code, ', 绫诲瀷:', typeof res.code);
       console.log('res.msg 鐨勫��:', res.msg, ', 绫诲瀷:', typeof res.msg);
@@ -266,10 +344,9 @@
 
     <div id="project-list">
       <div style="width: 100%;height: 100%">
-        <h1>宸ョ▼鍒楄〃</h1>
+        <h2>宸ョ▼鍒楄〃</h2>
         <vxe-grid
             size="small"
-            @filter-change="filterChanged"
             height="100%"
             class="mytable-scrollbar"
             ref="xGrid"
@@ -291,12 +368,7 @@
           <template #num1_filter="{ column, $panel }">
             <div>
               <div v-for="(option, index) in column.filters" :key="index">
-                <input
-
-                    type="type"
-                    v-model="option.data"
-                    @keyup.enter.native="$panel.confirmFilter()"
-                    @input="changeFilterEvent($event, option, $panel)"/>
+                <input type="type" v-model="option.data" @keyup.enter.native="$panel.confirmFilter()" @input="changeFilterEvent($event, option, $panel)"/>
               </div>
             </div>
           </template>

--
Gitblit v1.8.0