From 1e1c416c6aa6596feb333b75d882ffeede73d3c9 Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期二, 08 四月 2025 17:37:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue |  191 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 172 insertions(+), 19 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
index 69cc8d3..e0a7005 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
@@ -1,8 +1,8 @@
 <script setup>
-import {onMounted, reactive, ref} from "vue";
+import {nextTick, onMounted, reactive, ref, watch} from "vue";
 import {useI18n} from "vue-i18n";
 import request from "@/utils/request";
-import {ElMessage} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
 import {useRoute} from "vue-router";
 const { t } = useI18n()
 
@@ -45,14 +45,26 @@
     {field: 'model', title: t('warehouseBasicData.type'),},
     {field: 'leftTrim', title: '宸︿慨杈�',},
     {field: 'downTrim', title: '涓嬩慨杈�',},
-    {field: 'rigthTrim', title: '鍙充慨杈�',},
+    {field: 'rightTrim', title: '鍙充慨杈�',},
     {field: 'upTrim', title: '涓婁慨杈�',},
     {field: 'available_quantity', title: '搴撳瓨鏁伴噺',},
-    {field: '', title: '鍔犲伐鏁伴噺',},
+    {field: 'processingQuantity', title: '鍔犲伐鏁伴噺',},
     {field: 'name', title: '鍚嶇О',},
     {field: 'producer', title: '渚涘簲鍟�',}
   ],//琛ㄥご鍙傛暟
   data:null,//琛ㄦ牸鏁版嵁
+  //鍙抽敭鑿滃崟
+  menuConfig: {
+    body: {
+      options: [
+        [
+          {code: 'selectTrimming', name: '璁剧疆缁熶竴淇竟',},
+          {code: 'Exports', name: '鏁版嵁瀵煎嚭', prefixIcon: 'vxe-icon-download', visible: true, disabled: false},
+        ],
+        []
+      ]
+    },
+  },
   toolbarConfig: {
     buttons: [],
     slots:{
@@ -61,16 +73,71 @@
   },
 })
 
+const emit = defineEmits(['select-trimming']);
+// 鍙抽敭鑿滃崟
+const operationConfigs = [
+  {
+    code: 'selectTrimming', // 璁剧疆缁熶竴淇竟
+    successMsg: '宸叉墦寮�锛�',
+    gridRef: xGrid,
+    requiresRow: false,
+    openTrimming: async () => {
+     emit ( 'select-trimming', true)
+    }
+  },
+  {
+    code: 'Exports', // 瀵煎嚭鏂囦欢鎿嶄綔鐨勯厤缃�
+    successMsg: '鏂囦欢瀵煎嚭鎴愬姛锛�',
+    gridRef: xGrid,
+    requiresRow: false,
+  },
+]
+
+// 鍙抽敭鑿滃崟鐐瑰嚮閫昏緫
+const gridEvents = {
+  menuClick({menu}) {
+    const $grid = xGrid.value;
+    if ($grid) {
+      const config = operationConfigs.find(c => c.code === menu.code);
+      if (config) {
+        if (config.code === 'Exports') {
+          config.gridRef.value.exportData();
+          ElMessage.success(config.successMsg);
+          return;
+        }
+        // 娣诲姞纭鎻愮ず寮圭獥锛岃闂敤鎴锋槸鍚﹁繘琛屽綋鍓嶆搷浣�
+        ElMessageBox.confirm('鏄惁杩涜褰撳墠鎿嶄綔锛�', '纭鎿嶄綔', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          if (config.code === 'selectTrimming') {
+            config.openTrimming();
+            ElMessage.success(config.successMsg);
+          }
+        }).catch(() => {
+          // 鐢ㄦ埛鐐瑰嚮鍙栨秷鍚庢墽琛岀殑閫昏緫
+          ElMessage.info('宸插彇娑堟搷浣�');
+        });
+      } else {
+        console.error(`鏈壘鍒版搷浣滈�夐」 ${menu.code} 瀵瑰簲鐨勯厤缃紝璇锋鏌ラ厤缃」`);
+      }
+    }
+  },
+};
+
+
 const route = useRoute();
 
-const thickness = ref(route.query.thickNess);
-const model = ref(route.query.model);
+const thickness = ref(route.params.thickNess);
+const model = ref(route.params.model);
+let projectNo = ref(null);
 
-
-const selectMaterialStore = () =>{
-  request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}`).then((res) => {
+const selectMaterialStore = async () =>{
+  request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo}`).then((res) => {
     if (Number(res.code) === 200) {
       const rawData = res.data.data;
+      const edgeTrimming = res.data.edgeTrimming;
       if (Array.isArray(rawData) && rawData.length > 0) {
         const formattedData = rawData.map(item => {
           const formattedItem = {};
@@ -84,16 +151,31 @@
           }
           return formattedItem;
         });
-        const data = formattedData;
-        data.forEach(item => {
-          item.leftTrim = 0;
-          item.downTrim = 0;
-          item.rigthTrim = 0;
-          item.upTrim = 0;
-        });
+        if(edgeTrimming!=null){
+          const edgeTrimmingData = edgeTrimming.map(item => {
+            const edgeTrimmingItem = {};
+            for (const key in item) {
+              if (typeof item[key] === 'string') {
+                //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
+                edgeTrimmingItem[key] = item[key].replace(/^\"|\"$/g, '');
+              } else {
+                edgeTrimmingItem[key] = item[key];
+              }
+            }
+            return edgeTrimmingItem;
+          });
+          console.log(edgeTrimmingData)
+          formattedData.forEach(item => {
+            item.leftTrim = edgeTrimmingData[0].leftTrim;
+            item.downTrim = edgeTrimmingData[0].downTrim;
+            item.rightTrim = edgeTrimmingData[0].rightTrim;
+            item.upTrim = edgeTrimmingData[0].upTrim;
+          });
+        }
+
         xGrid.value.loadData(formattedData);
+        gridOptions.data = formattedData;
       } else {
-        console.error('杩斿洖鏁版嵁鏍煎紡涓嶇鍚堥鏈燂紝涓嶆槸鏈夋晥鐨勫璞℃暟缁勬牸寮�');
       }
     } else {
       ElMessage.warning(res.msg);
@@ -103,15 +185,86 @@
 };
 
 onMounted(() => {
-  selectMaterialStore();
+  if(route.params.projectNo!=null){
+    projectNo=route.params.projectNo
+    selectMaterialStore();
+  }
+
 });
+
+watch(() => props.receivedData, (newData) => {
+  if (newData) {
+    Trimming(newData);
+  }
+}, { immediate: true });
+
+watch(() => props.InventoryData, (newInventoryData) => {
+  if (newInventoryData) {
+    thickness.value = newInventoryData.selectedLabel1;
+    model.value = newInventoryData.selectedLabel2;
+    // 鐢变簬 thickness 鍜� model 鐨勫�兼敼鍙樹簡锛屾洿鏂拌〃鏍硷紝璋冪敤 selectMaterialStore 閲嶆柊鑾峰彇鏁版嵁
+    selectMaterialStore();
+  }
+});
+
+const props = defineProps({
+  receivedData : {
+    type: Object,
+    required: false,
+    properties: {
+      quicksetLeft: { type: Number },
+      quicksetBottom: { type: Number },
+      quicksetRight: { type: Number },
+      quicksetTop: { type: Number }
+    }
+  },
+  InventoryData : {
+    type: Object,
+    required: false,
+    properties: {
+      selectedLabel1: { type: String },
+      selectedLabel2: { type: String },
+    }
+  }
+});
+
+//鎺ュ彈SetTrimming鐨勫�� 锛堜慨杈癸級
+const Trimming = (receivedData) => {
+  nextTick(() => {
+    const data = gridOptions.data;
+    if (data) {
+      try {
+        const updatedData = [];
+        for (let i = 0; i < data.length; i++) {
+          const item = data[i];
+          const updatedItem = {
+            ...item,
+            // 浠� receivedData 涓幏鍙栧搴旂殑鍊兼潵鏇存柊琛ㄦ牸鏁版嵁椤�
+            leftTrim: Number(receivedData.quicksetLeft),
+            downTrim: Number(receivedData.quicksetBottom),
+            rightTrim: Number(receivedData.quicksetRight),
+            upTrim: Number(receivedData.quicksetTop),
+          };
+          updatedData.push(updatedItem);
+        }
+        gridOptions.data = updatedData;
+        xGrid.value.loadData(updatedData);
+      } catch (error) {
+        console.error('鏇存柊琛ㄦ牸鏁版嵁鏃跺嚭閿�:', error);
+        ElMessage.error('鏇存柊琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝璇锋鏌ヨ緭鍏ユ垨鑱旂郴绠$悊鍛�');
+      }
+    } else {
+      console.warn('琛ㄦ牸鏁版嵁涓虹┖锛屾棤娉曟洿鏂扮(閲忓��');
+    }
+  });
+};
+
 
 </script>
 
 <template>
   <div style="width: 100%;height: 100%">
     <vxe-grid
-        @filter-change="filterChanged"
         height="100%"
         class="mytable-scrollbar"
         ref="xGrid"

--
Gitblit v1.8.0