From 46964bace341e98f238a0a3fd29f6adc643312c7 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期一, 24 十一月 2025 13:14:32 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue |  141 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 106 insertions(+), 35 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue
index 08ecf40..2ed87c4 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue
@@ -4,6 +4,7 @@
 import {useI18n} from "vue-i18n"
 import request from "@/utils/request"
 import {ElMessage} from "element-plus"
+import {copyTableCellValue} from "@/hook/copyTableCellValue";
 const { t } = useI18n()
 const xGrid = ref()
 const gridOptions = reactive({
@@ -20,8 +21,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
   },
@@ -38,14 +39,32 @@
   columns:[
 
   ],
-  mergeCells:[],
   toolbarConfig: {
+    slots:{
+      buttons: "title"
+    },
     zoom: true,
-    /*custom: true*/
+    custom: true
+  },
+  spanMethod ({ row, rowIndex,column, columnIndex}) {
+    const field = column.field
+    if (xGrid.value.isFilter() ) {
+      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){
-        return 'row-green'
+    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
   },
@@ -66,27 +85,25 @@
 const list = ref([])
 
 let props = defineProps({
-  orderId:null
+  orderId:null,
+  row: {},
+  processId:null//鐢ㄤ簬鍚庣鏁版嵁杩斿洖锛岀粨鏋滅瓫閫�
 })
 const columns = [
-  {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"},
-  // {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
   {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
   {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
   {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
   {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-  {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis"},
-  {field: 'child_width', width: 90,title:  t('order.width'),showOverflow:"ellipsis"},
-  {field: 'child_height', width: 90,title:  t('order.height'),showOverflow:"ellipsis"},
-  {field: 'quantity', width: 90,title: t('order.quantity')},
-  {field: 'glassQuantity', width: 90,title: t('order.glassQuantity')},
-  {field: 'gross_area', width: 90,title: t('order.area')},
-  {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')},
-  {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')},
-  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
+  {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+  {field: 'quantity',slots: { default: 'show'}, width: 90,title: t('order.quantity')},
+  {field: 'thisQuantity', width: 90,title: t('order.glassQuantity')},
+  {field: 'gross_area',slots: { default: 'show'}, width: 90,title: t('order.area')},
+  {field: 'inventory',slots: { default: 'show'},width: 120, title: t('report.inventoryNum')},
+  {field: 'inventoryArea',slots: { default: 'show'},width: 120, title: t('report.StorageArea')},
   {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
 ]
-let column = [0,1,3,6,7,8,10,11,12,13]
+//let column = [0,2,3,5,7,8,9]
+let column = ['product_name','order_type','process_id','quantity','gross_area','inventory','inventoryArea']
 
 
 onMounted(()=>{
@@ -96,7 +113,9 @@
 watch(()=>props.orderId,(newValue)=>{
   getWorkOrder()
 })
-
+const show = (row,column ) =>{
+  return row[column.field+'Show']
+}
 
 let mergeCells = ref()
 const getWorkOrder = () => {
@@ -107,23 +126,36 @@
       gridOptions.columns.forEach(item =>{
         item.filterMethod = filterChanged
       })
-      list.value = ['quantity','inventory','inventoryArea','gross_area','shippedQuantity','glassQuantity']
+
+      list.value = ['quantity','thisQuantity','inventory','inventoryArea','gross_area','glassQuantity','broken_num']
+
+      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)
-        item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow)
+         item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow)
       })
-
-      await xGrid.value.loadData(res.data.data)
-      await xGrid.value.setMergeCells(res.data.mergeCells)
+      console.log(res.data.data)
+      if (props.processId!=null && props.processId!=""){
+        const processIdData = res.data.data.filter(item => item.process_id === props.processId)
+        await xGrid.value.loadData(processIdData)
+      }else {
+        await xGrid.value.loadData(res.data.data)
+      }
       mergeCells.value = res.data.mergeCells
       gridOptions.loading = false
 
@@ -135,29 +167,34 @@
 
 const filterChange = () =>{
   if(xGrid.value.isFilter()){
-    xGrid.value.clearMergeCells()
     xGrid.value.clearMergeFooterItems()
   }else{
-    xGrid.value.setMergeCells(mergeCells.value)
     xGrid.value.updateFooter()
   }
 
 
 }
 const footSum =(list, field) => {
-  if(xGrid.value.isFilter()){
-    return
-  }
   let count = 0
   list.forEach(item => {
     if(field.indexOf('.')>-1){
       let  array = field.split('.')
-      count += Number(item[array[0]][array[1]]) || 0
+      //鍒ゆ柇鏄惁涓虹瓫閫夌姸鎬佸拰闈炶鍗曞悎骞剁姸鎬�
+      if(xGrid.value.isFilter() ){
+        count += Number(item[array[0]+'Show'][array[1]]) || 0
+      }else{
+        count += Number(item[array[0]][array[1]]) || 0
+      }
+
     }else {
-      count += Number(item[field])  || 0
+      if(xGrid.value.isFilter() ) {
+        count += Number(item[field+'Show']) || Number(item[field])   || 0
+      } else {
+        count += Number(item[field])  || 0
+      }
     }
   })
-  return count.toFixed(2)
+  return count.toFixed(2).replace(/\.?0+$/, '');
 }
 
 const quantitySum = ( row,column )=>{
@@ -173,6 +210,17 @@
       +')' )
   //return
 }
+
+const gridEvents = {
+  cellDblclick ({row,column}) {
+    copyTableCellValue(row,column)
+  }
+}
+
+let showTitle = ref(false)
+const changeZoom = ()=> {
+  showTitle.value = !showTitle.value
+}
 </script>
 
 <template>
@@ -183,7 +231,9 @@
         size="mini"
         class="mytable-scrollbar"
         ref="xGrid"
+        @zoom="changeZoom"
         v-bind="gridOptions"
+        v-on="gridEvents"
     >
       <template #num1_filter="{ column, $panel }">
         <div>
@@ -200,6 +250,20 @@
       <template #quantitySum="{ row,column }">
         <span>{{ quantitySum(row,column) }} </span>
       </template>
+      <template #show="{ row,column }">
+        <span>{{ show(row,column) }} </span>
+      </template>
+
+      <template #title>
+        <span style="font-weight: bold" v-show="showTitle">
+          {{ row.orderId }}
+          {{ row.project?'--':'' }}
+          {{row.project}}
+          {{ row.batch?'--':'' }}
+          {{row.batch}}
+        </span>
+      </template>
+
 
     </vxe-grid>
   </div>
@@ -209,5 +273,12 @@
 ::v-deep(.vxe-grid .vxe-body--column.row-green) {
   background-color: #D5EAFF;
 }
-
+.vxe-grid {
+  /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  transform: translateZ(0);
+}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0