zck 1 день назад
Родитель
Сommit
777dab93cc
1 измененных файлов с 65 добавлено и 45 удалено
  1. 65 45
      src/view/yunyin/shengchanguanli/gongdanziliao.vue

+ 65 - 45
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -880,11 +880,8 @@
 						  @keydown="add_gdzlent($event, '粘衬', '生产款号', '订单数量')" />
 					  </el-form-item>
 					  <el-form-item label="款式">
-						<el-select v-model="add_gdscgdformData['款式']" id="款式"
-						  filterable allow-create default-first-option
-						  @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')" placeholder="请选择或输入款式">
-						  <el-option v-for="style in productStyleList" :key="style" :label="style" :value="style" />
-						</el-select>
+						<el-input v-model="add_gdscgdformData['款式']" id="款式"
+						  @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')" />
 					  </el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12">
@@ -1253,11 +1250,8 @@
 						/>
 					  </el-form-item>
 					  <el-form-item label="款式">
-						<el-select v-model="edit_ddformData['款式']" id="款式"
-						  filterable allow-create default-first-option
-						  @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')" placeholder="请选择款式">
-						  <el-option v-for="style in productStyleList" :key="style" :label="style" :value="style" />
-						</el-select>
+						<el-input v-model="edit_ddformData['款式']" id="款式"
+						  @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')" />
 					  </el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12">
@@ -5335,20 +5329,29 @@ const sortTableData = ref([])
       }
     }
     
-    if (editingField === '定额分') {
-      // 只有非拆分状态的工序才检查总工分限制
-      if (!isGyDetailRowSplit(row)) {
-        const totalScore = parseFloat(sumGyDetailDisplayField('定额分')) || 0
-        const planManufactureScore = parseFloat(gyDetailFormData.计划制造工分) || 0
-        
-        if (totalScore > planManufactureScore) {
-          ElMessage.warning('总工分不能大于计划制造工分')
-          row.定额分 = row._gyDetailOrigin?.定额分 ?? row.定额分
-          refreshGyDetailTableFooter()
-          return
-        }
-      }
-    }
+	if (editingField === '定额分') {
+  // 获取所有未拆分的数据
+  const unsplitData = gyDetailDisplayProcessList.value.filter(
+    row => !isGyDetailRowSplit(row)
+  );
+  
+  // 计算未拆分工序的总工分
+  const unsplitTotalScore = unsplitData.reduce(
+    (sum, row) => sum + (parseFloat(row.定额分) || 0), 
+    0
+  );
+  
+  // 获取计划制造工分
+  const planManufactureScore = parseFloat(gyDetailFormData.计划制造工分) || 0;
+  
+  // 如果未拆分工序的总工分超过计划制造工分,回退并提示
+  if (unsplitTotalScore > planManufactureScore) {
+    ElMessage.warning(`未拆分工序总工分(${unsplitTotalScore.toFixed(2)})不能大于计划制造工分(${planManufactureScore.toFixed(2)})`);
+    row.定额分 = row._gyDetailOrigin?.定额分 ?? row.定额分;
+    refreshGyDetailTableFooter();
+    return;
+  }
+}
     
     await handleUpdateProcess(row)
   }
@@ -5627,26 +5630,41 @@ const sortTableData = ref([])
   }))
 
   const gyDetailFooterMethod = () => {
-    const sums = gyDetailFooterSums.value
-    return [
-      [
-        '合计',
-        '',
-        '',
-        '',
-        '',
-        '',
-        sums.秒,
-        sums.分,
-        sums.定额分,
-        sums.金额,
-        '',
-        '',
-        '',
-        '',
-      ],
-    ]
-  }
+  // 状态为 '0' 表示正常,'1' 表示已删除或其他
+  const normalData = gyDetailDisplayProcessList.value.filter(
+    row => row.状态 === '0'
+  );
+  
+  // 如果没有正常数据,合计全部为0
+  if (normalData.length === 0) {
+    return [['合计', '', '', '', '', '', '0.00', '0.00', '0.00', '0.00', '', '', '', '']];
+  }
+  
+  // 计算各项合计
+  const sums = {
+    秒: normalData.reduce((sum, row) => sum + (Number(row.秒) || 0), 0),
+    分: normalData.reduce((sum, row) => sum + (Number(row.分) || 0), 0),
+    定额分: normalData.reduce((sum, row) => sum + (Number(row.定额分) || 0), 0),
+    金额: normalData.reduce((sum, row) => sum + (Number(row.金额) || 0), 0),
+  };
+  
+  return [[
+    '合计',
+    '',
+    '',
+    '',
+    '',
+    '',
+    sums.秒.toFixed(2),
+    sums.分.toFixed(2),
+    sums.定额分.toFixed(2),
+    sums.金额.toFixed(2),
+    '',
+    '',
+    '',
+    '',
+  ]];
+};
 
   const refreshGyDetailTableFooter = () => {
     nextTick(() => {
@@ -7328,6 +7346,8 @@ const sortTableData = ref([])
 
 	//工艺资料合计
 	const gySummaries = ({ columns, data }) => {  
+	  // 只合计状态为0(正常)的行
+	  const normalData = data.filter(item => String(item.状态) === '0');
 	  const sums = [];  
 	  columns.forEach((column, index) => {  
 		  if (index === 1) {  
@@ -7336,7 +7356,7 @@ const sortTableData = ref([])
 		  }  
 
 		  if (column.label === '工分') {  
-			  const values = data.map(item => Number(item[column.property]));  
+			  const values = normalData.map(item => Number(item[column.property]));  
 
 			  if (!values.every(value => isNaN(value))) {  
 				  const total = values.reduce((prev, curr) => {