| | |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 批号多选 --> |
| | | <el-table-column min-width="200"> |
| | | <template #header> |
| | | <span style="color: #f56c6c; margin-right: 4px;">*</span> |
| | | <span>批号</span> |
| | | </template> |
| | | <el-table-column min-width="200" |
| | | label="批号"> |
| | | <template #default="{ row }"> |
| | | <el-select v-model="row.batchNo" |
| | | multiple |
| | |
| | | <span class="dialog-footer"> |
| | | <el-button type="primary" |
| | | :loading="materialSaving" |
| | | :disabled="isSaveDisabled" |
| | | @click="handleMaterialSave">保存</el-button> |
| | | <el-button @click="dialogVisible = false">取消</el-button> |
| | | </span> |
| | |
| | | const materialTableLoading = ref(false); |
| | | const materialSaving = ref(false); |
| | | const materialTableData = ref([]); |
| | | |
| | | const isSaveDisabled = computed(() => { |
| | | if (materialTableData.value.length === 0) return true; |
| | | return !materialTableData.value.some(row => { |
| | | // 检查是否有任何用户输入内容 |
| | | const hasBatch = Array.isArray(row.batchNo) && row.batchNo.length > 0; |
| | | const hasPickQty = |
| | | row.pickQty !== null && row.pickQty !== undefined && row.pickQty !== 0; |
| | | |
| | | if (row.bom) { |
| | | // 对于来自BOM的行,输入框只有“批号”和“领用数量” |
| | | return hasBatch || hasPickQty; |
| | | } else { |
| | | // 对于新增行,输入框包括“工序”、“原料”、“需求数量”、“批号”和“领用数量” |
| | | const hasOperation = !!row.operationName; |
| | | const hasMaterial = !!row.materialName; |
| | | const hasDemanded = |
| | | row.demandedQuantity !== null && |
| | | row.demandedQuantity !== undefined && |
| | | row.demandedQuantity !== 0; |
| | | return ( |
| | | hasBatch || hasPickQty || hasOperation || hasMaterial || hasDemanded |
| | | ); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | const processOptions = ref([]); |
| | | const currentMaterialSelectRowIndex = ref(-1); |
| | | let materialTempId = 0; |
| | |
| | | item => |
| | | !item.operationName || |
| | | !item.materialName || |
| | | !item.batchNo || |
| | | item.batchNo.length === 0 || |
| | | (Number(item.pickQty) > 0 && |
| | | (!item.batchNo || item.batchNo.length === 0)) || |
| | | (item.batchNo && item.batchNo.length > 0 && Number(item.pickQty) <= 0) || |
| | | item.demandedQuantity === null || |
| | | item.demandedQuantity === undefined || |
| | | item.pickQty === null || |
| | | item.pickQty === undefined |
| | | ); |
| | | if (invalidRow) { |
| | | if ( |
| | | invalidRow.batchNo && |
| | | invalidRow.batchNo.length > 0 && |
| | | Number(invalidRow.pickQty) <= 0 |
| | | ) { |
| | | return { valid: false, message: "选择了批号时,领用数量必须大于零" }; |
| | | } |
| | | return { valid: false, message: "请完善工序、原料、批号和数量后再保存" }; |
| | | } |
| | | return { valid: true, message: "" }; |