From 13450f431faf60cb2a7cef7bba2c758df39d906e Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期三, 10 十二月 2025 14:40:13 +0800
Subject: [PATCH] 提交报表

---
 north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
index 55ac32e..4396c4a 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -23,8 +23,8 @@
   printConfig: {},
   importConfig: {},
   exportConfig: {},
-  scrollY:{ enabled: true,gt:13 },//寮�鍚櫄鎷熸粴鍔�
-  scrollX:{ enabled: true,gt:15 },//寮�鍚櫄鎷熸粴鍔�
+  // scrollY:{ enabled: true,gt:13 },//寮�鍚櫄鎷熸粴鍔�
+  // scrollX:{ enabled: true,gt:15 },//寮�鍚櫄鎷熸粴鍔�
   filterConfig: {   //绛涢�夐厤缃」
     // remote: true
   },
@@ -39,17 +39,32 @@
   },
 
 
-  mergeCells:[],
   toolbarConfig: {
     slots:{
       buttons: "title",
       tools: 'type'
     },
     zoom: true,
-    // custom: true
+    custom: true
+  },
+  spanMethod ({ row, rowIndex,column, columnIndex}) {
+    const field = column.field
+    if (xGrid.value.isFilter() || orderType.value!==1) {
+      return { rowspan: 1, colspan: 1 }
+    }
+    if(mergeCells.value!==undefined){
+      if(mergeCells.value[field] !== undefined && mergeCells.value[field][rowIndex+"_"+field] !== undefined){
+        return mergeCells.value[field][rowIndex+"_"+field]
+      }
+    }
+
+    return { rowspan: 1, colspan: 1 }
   },
   cellClassName ({ row, column,columnIndex})  {
-    if (columnIndex>10 && row.thisQuantity*1 === row.reportWorkQuantity[column.title]*1){
+    if(column.field === undefined){
+      return null
+    }
+    if (column?.field.indexOf('reportWorkQuantity.')>-1 && row.thisQuantity*1 === row.reportWorkQuantity[column.title]*1){
         return 'row-green'
     }
     return null
@@ -75,7 +90,6 @@
     }else{
       copyTableCellValueShow(row,column)
     }
-
   }
 }
 
@@ -83,7 +97,8 @@
 
 let props = defineProps({
   orderId:null,
-  row: {}
+  row: {},
+  processId:null//鐢ㄤ簬鍚庣鏁版嵁杩斿洖锛岀粨鏋滅瓫閫�
 })
 const columns = [
   {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -98,14 +113,14 @@
   {field: 'quantity',slots: { default: 'show'}, width: 90,title: t('order.quantity')},
   {field: 'glassQuantity', width: 90,title: t('order.glassQuantity')},
   {field: 'grossArea',slots: { default: 'show'}, width: 90,title: t('order.area')},
-  {field: 'shippedQuantity',slots: { default: 'show'},width: 120, title: t('delivery.deliveryQuantity')},
-  {field: 'shippedArea',slots: { default: 'show'},width: 120, title: t('report.shippedArea')},
+  // {field: 'shippedQuantity',slots: { default: 'show'},width: 120, title: t('delivery.deliveryQuantity'),visible:false},
+  // {field: 'shippedArea',slots: { default: 'show'},width: 120, title: t('report.shippedArea'),visible:false},
   {field: 'Storage',slots: { default: 'show'},width: 120, title: t('report.inventoryNum')},
   // {field: 'inventoryArea',slots: { default: 'show'},width: 120, title: t('report.inventoryArea')},
   {field: 'StorageArea',slots: { default: 'show'},width: 120, title: t('report.StorageArea')},
   {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
 ]
-let column = [0,1,3,8,10,11,12,13,14]
+let column = ['order_number','product_name','order_type','quantity','grossArea','Storage','StorageArea']
 let orderType = ref(1)
 
 onMounted(()=>{
@@ -122,20 +137,17 @@
   switch (orderType.value)  {
     case 1 :{
       xGrid.value.loadData(data.value)
-      xGrid.value.setMergeCells(mergeCells.value)
       xGrid.value.updateFooter()
       break
     }
     case 2 :{
       xGrid.value.loadData(data.value)
-      xGrid.value.clearMergeCells()
       xGrid.value.clearMergeFooterItems()
       xGrid.value.updateFooter()
 
       break
     }
     case 3:{
-      xGrid.value.clearMergeCells()
       xGrid.value.clearMergeFooterItems()
       xGrid.value.updateFooter()
       const lastProcess = title.value[title.value.length-1].process
@@ -144,7 +156,6 @@
         const allFinish = item.glassQuantity*1
         return allFinish>lastFinish
       })
-      // console.log(filter)
       xGrid.value.loadData(filter)
       break
     }
@@ -163,16 +174,25 @@
       gridOptions.columns.forEach(item =>{
         item.filterMethod = filterChanged
       })
-      list.value = ['quantity','Storage','gross_area','shippedQuantity','shippedArea','glassQuantity','StorageArea']
+      list.value = ['quantity','Storage','grossArea','shippedQuantity','shippedArea','glassQuantity','StorageArea','broken_num']
       title.value = res.data.title
+
+      const processList = {
+        title:t('report.workingProcedure'),
+        field:'process',
+        children:[]
+      }
+
       res.data.title.forEach((item,index) =>{
         list.value.push('reportWorkQuantity.'+item.process)
         let column = {slots: { default: 'quantitySum'},
           width: 90,
           title: item.process,
           field:'reportWorkQuantity.'+item.process}
-        gridOptions.columns.push(column)
+        processList.children.push(column)
+
       })
+      gridOptions.columns.push(processList)
       res.data.data.forEach(item => {
         item.reportWorkQuantity=JSON.parse(item.reportWorkQuantity)
         item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount)
@@ -180,11 +200,9 @@
       })
       orderType.value = 1
       await xGrid.value.loadData(res.data.data)
-      await xGrid.value.setMergeCells(res.data.mergeCells)
       mergeCells.value = res.data.mergeCells
       data.value = res.data.data
       gridOptions.loading = false
-      xGrid.value.commitProxy('reset_custom')
 
     } else {
       ElMessage.warning(res.msg)
@@ -195,10 +213,9 @@
 const filterChange = () =>{
   if(orderType.value === 1) {
     if (xGrid.value.isFilter()) {
-      xGrid.value.clearMergeCells()
+      //xGrid.value.clearMergeCells()
       xGrid.value.clearMergeFooterItems()
     } else {
-      xGrid.value.setMergeCells(mergeCells.value)
       xGrid.value.updateFooter()
     }
   }
@@ -218,7 +235,12 @@
       }
 
     }else {
-      count += Number(item[field])  || 0
+      if(xGrid.value.isFilter() || orderType.value!==1) {
+        count += Number(item[field+'Show']) || Number(item[field])   || 0
+      } else {
+        count += Number(item[field])  || 0
+      }
+
     }
   })
   return count.toFixed(2).replace(/\.?0+$/, '');
@@ -245,6 +267,16 @@
 const changeZoom = ()=> {
   showTitle.value = !showTitle.value
 }
+
+const rowStyle = ({ row,rowIndex  }) => {
+    if(row.termination_status==1){
+      return {
+        backgroundColor: 'rgb(186 188 192)'
+      }
+    }
+
+
+}
 </script>
 
 <template>
@@ -258,6 +290,7 @@
         ref="xGrid"
         v-bind="gridOptions"
         v-on="gridEvents"
+        :row-style="rowStyle"
     >
       <template #num1_filter="{ column, $panel }">
         <div>
@@ -282,6 +315,8 @@
       <template #title>
         <span style="font-weight: bold" v-show="showTitle">
           {{ row.orderId }}
+          {{ row.customerName?'--':'' }}
+          {{ row.customerName}}
           {{ row.project?'--':'' }}
           {{row.project}}
           {{ row.batch?'--':'' }}

--
Gitblit v1.8.0