From ed381604d4cb6b186ed4bacb9eceb4908b857de2 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 12 十二月 2025 10:02:34 +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/OrderProcess.vue | 101 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 81 insertions(+), 20 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 7700cc5..f488d93 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
@@ -1,9 +1,12 @@
<script setup>
import {computed, onMounted, reactive, ref, watch} from "vue";
+import {addListener,destroyAreaBox} from "@/hook/mouseMoveHomePage";
import {changeFilterEvent, filterChanged} from "@/hook"
import {useI18n} from "vue-i18n"
import request from "@/utils/request"
import {ElMessage} from "element-plus"
+import VxeUI from "vxe-pc-ui";
+import {copyTableCellValue,copyTableCellValueShow} from "@/hook/copyTableCellValue";
const { t } = useI18n()
const xGrid = ref()
const gridOptions = reactive({
@@ -20,11 +23,12 @@
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
},
+ mouseConfig:{selected: true},
columnConfig: {
resizable: true,
useKey: true
@@ -35,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
@@ -64,11 +83,22 @@
]
}
})
+const gridEvents = {
+ cellDblclick ({row,column}) {
+ if(orderType.value===1){
+ copyTableCellValue(row,column)
+ }else{
+ copyTableCellValueShow(row,column)
+ }
+ }
+}
+
const list = ref([])
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' }},
@@ -83,17 +113,19 @@
{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: '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,14]
+let column = ['order_number','product_name','order_type','quantity','grossArea','Storage','StorageArea']
let orderType = ref(1)
onMounted(()=>{
getWorkOrder()
+ //addListener(xGrid.value,gridOptions)
})
watch(()=>props.orderId,(newValue)=>{
@@ -105,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
@@ -127,7 +156,6 @@
const allFinish = item.glassQuantity*1
return allFinish>lastFinish
})
- // console.log(filter)
xGrid.value.loadData(filter)
break
}
@@ -146,16 +174,25 @@
gridOptions.columns.forEach(item =>{
item.filterMethod = filterChanged
})
- list.value = ['quantity','Storage','gross_area','shippedQuantity','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)
@@ -163,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)
@@ -178,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()
}
}
@@ -201,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+$/, '');
@@ -228,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>
@@ -240,6 +289,8 @@
class="mytable-scrollbar"
ref="xGrid"
v-bind="gridOptions"
+ v-on="gridEvents"
+ :row-style="rowStyle"
>
<template #num1_filter="{ column, $panel }">
<div>
@@ -264,7 +315,9 @@
<template #title>
<span style="font-weight: bold" v-show="showTitle">
{{ row.orderId }}
- {{ row.project?'--':'' }}
+ {{ row.customerName?'--':'' }}
+ {{ row.customerName}}
+ {{row.project?'--':'' }}
{{row.project}}
{{ row.batch?'--':'' }}
{{row.batch}}
@@ -286,5 +339,13 @@
::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