|
|
@@ -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) => {
|