|
|
|
@ -133,16 +133,16 @@
|
|
|
|
<el-table-column label="已分包数量" align="center" prop="printedNum" />
|
|
|
|
<el-table-column label="已分包数量" align="center" prop="printedNum" />
|
|
|
|
<el-table-column label="物料规格" align="center" prop="materialSpe"/>
|
|
|
|
<el-table-column label="物料规格" align="center" prop="materialSpe"/>
|
|
|
|
<el-table-column label="计量单位名称" align="center" prop="unitName"/>
|
|
|
|
<el-table-column label="计量单位名称" align="center" prop="unitName"/>
|
|
|
|
<el-table-column label="是否有条码" align="center" prop="codeYesNo">
|
|
|
|
<!-- <el-table-column label="是否有条码" align="center" prop="codeYesNo">-->
|
|
|
|
<template #default="scope">
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
<dict-tag :options="wms_barcode_if" :value="scope.row.codeYesNo"/>
|
|
|
|
<!-- <dict-tag :options="wms_barcode_if" :value="scope.row.codeYesNo"/>-->
|
|
|
|
</template>
|
|
|
|
<!-- </template>-->
|
|
|
|
</el-table-column>
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
<!-- <el-table-column label="物料大类" align="center" prop="materialCategoryName">-->
|
|
|
|
<!-- <el-table-column label="物料大类" align="center" prop="materialCategoryName">-->
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
<el-table-column label="操作" fixed="right" width="200">
|
|
|
|
<el-table-column label="操作" fixed="right" width="200">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-button size="small" @click="childrenTableUpdate( scope.row)" v-if="auditStatusLoad && partntTableSelectCell.instockType !== '6'">
|
|
|
|
<el-button size="small" @click="childrenTableUpdate( scope.row)" v-if="auditStatusLoad && partntTableSelectCell.instockType !== '6' && isRowPrintable(scope.row)">
|
|
|
|
打印
|
|
|
|
打印
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
<el-button
|
|
|
|
<el-button
|
|
|
|
@ -163,15 +163,15 @@
|
|
|
|
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="80%">
|
|
|
|
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="80%">
|
|
|
|
<el-card shadow="never">
|
|
|
|
<el-card shadow="never">
|
|
|
|
<el-form :model="dialogForm" :inline="true" label-width="120px" :disabled="isView" ref="dialogFormRef" :rules="dialogFormRules">
|
|
|
|
<el-form :model="dialogForm" :inline="true" label-width="120px" :disabled="isView" ref="dialogFormRef" :rules="dialogFormRules">
|
|
|
|
<el-form-item label="物料大类" prop="materialCategoryId">
|
|
|
|
<!-- <el-form-item label="物料大类" prop="materialCategoryId">-->
|
|
|
|
<el-select v-model="dialogForm.materialCategoryId" placeholder="请选择物料大类" @change="setMaterialList">
|
|
|
|
<!-- <el-select v-model="dialogForm.materialCategoryId" placeholder="请选择物料大类" @change="setMaterialList">-->
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
<!-- <el-option v-for="item in mategoryOptions"-->
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
<!-- :key="item.materialCategoryId"-->
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
<!-- :label="item.materialCategoryName"-->
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
<!-- :value="item.materialCategoryId"-->
|
|
|
|
/>
|
|
|
|
<!-- />-->
|
|
|
|
</el-select>
|
|
|
|
<!-- </el-select>-->
|
|
|
|
</el-form-item>
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
<el-select v-model="dialogForm.instockType" placeholder="请选择工单类型">
|
|
|
|
<el-select v-model="dialogForm.instockType" placeholder="请选择工单类型">
|
|
|
|
<el-option
|
|
|
|
<el-option
|
|
|
|
@ -275,10 +275,10 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
|
|
<el-table-column label="物料单位" prop="materialUnit">
|
|
|
|
<el-table-column label="物料单位" prop="unitName">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-select
|
|
|
|
<el-select
|
|
|
|
v-model="scope.row.materialUnit"
|
|
|
|
v-model="scope.row.unitName"
|
|
|
|
placeholder="选择物料"
|
|
|
|
placeholder="选择物料"
|
|
|
|
style="width: 240px"
|
|
|
|
style="width: 240px"
|
|
|
|
:disabled="true"
|
|
|
|
:disabled="true"
|
|
|
|
@ -418,15 +418,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
<el-dialog v-model="parentTableInfoVisible" title="修改父表格" width="40%">
|
|
|
|
<el-dialog v-model="parentTableInfoVisible" title="修改父表格" width="40%">
|
|
|
|
<el-form :model="parentTableInfoForm" label-width="120px">
|
|
|
|
<el-form :model="parentTableInfoForm" label-width="120px">
|
|
|
|
<el-form-item label="物料大类" prop="materialCategoryId">
|
|
|
|
<!-- <el-form-item label="物料大类" prop="materialCategoryId">-->
|
|
|
|
<el-select v-model="parentTableInfoForm.materialCategoryId" placeholder="请选择物料大类" :disabled="true">
|
|
|
|
<!-- <el-select v-model="parentTableInfoForm.materialCategoryId" placeholder="请选择物料大类" :disabled="true">-->
|
|
|
|
<el-option v-for="item in mategoryOptions"
|
|
|
|
<!-- <el-option v-for="item in mategoryOptions"-->
|
|
|
|
:key="item.materialCategoryId"
|
|
|
|
<!-- :key="item.materialCategoryId"-->
|
|
|
|
:label="item.materialCategoryName"
|
|
|
|
<!-- :label="item.materialCategoryName"-->
|
|
|
|
:value="item.materialCategoryId"
|
|
|
|
<!-- :value="item.materialCategoryId"-->
|
|
|
|
/>
|
|
|
|
<!-- />-->
|
|
|
|
</el-select>
|
|
|
|
<!-- </el-select>-->
|
|
|
|
</el-form-item>
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
<el-form-item label="工单类型" prop="instockType">
|
|
|
|
<el-select v-model="parentTableInfoForm.instockType" placeholder="请选择工单类型">
|
|
|
|
<el-select v-model="parentTableInfoForm.instockType" placeholder="请选择工单类型">
|
|
|
|
<el-option
|
|
|
|
<el-option
|
|
|
|
@ -525,15 +525,15 @@
|
|
|
|
<el-form-item label="入库数量" prop="instockQty">
|
|
|
|
<el-form-item label="入库数量" prop="instockQty">
|
|
|
|
<el-input v-model="childrenTableInfoForm.instockQty" placeholder="请输入入库数量" :disabled="true"/>
|
|
|
|
<el-input v-model="childrenTableInfoForm.instockQty" placeholder="请输入入库数量" :disabled="true"/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="有无条码" prop="codeYesNo">
|
|
|
|
<!-- <el-form-item label="有无条码" prop="codeYesNo">-->
|
|
|
|
<el-radio-group v-model="childrenTableInfoForm.codeYesNo" :disabled="true">
|
|
|
|
<!-- <el-radio-group v-model="childrenTableInfoForm.codeYesNo" :disabled="true">-->
|
|
|
|
<el-radio
|
|
|
|
<!-- <el-radio-->
|
|
|
|
v-for="dict in wms_barcode_if"
|
|
|
|
<!-- v-for="dict in wms_barcode_if"-->
|
|
|
|
:key="dict.value"
|
|
|
|
<!-- :key="dict.value"-->
|
|
|
|
:value="dict.value"
|
|
|
|
<!-- :value="dict.value"-->
|
|
|
|
>{{dict.label}}</el-radio>
|
|
|
|
<!-- >{{dict.label}}</el-radio>-->
|
|
|
|
</el-radio-group>
|
|
|
|
<!-- </el-radio-group>-->
|
|
|
|
</el-form-item>
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<el-form-item>
|
|
|
|
<el-form-item>
|
|
|
|
@ -545,7 +545,7 @@
|
|
|
|
<el-input v-model="childrenTableInfoForm.printedNum" placeholder="" :disabled="true"/>
|
|
|
|
<el-input v-model="childrenTableInfoForm.printedNum" placeholder="" :disabled="true"/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="分包数量" prop="splitPackageCount">
|
|
|
|
<el-form-item label="分包数量" prop="splitPackageCount">
|
|
|
|
<el-input-number v-model="childrenTableInfoForm.splitPackageCount" :min="1" :max="remainingQty" placeholder="请输入分包数量" @change="onSplitPackageCountChange" />
|
|
|
|
<el-input-number v-model="childrenTableInfoForm.splitPackageCount" :min="1" :max="instockQty" placeholder="请输入分包数量" @change="onSplitPackageCountChange" />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 当分包数量大于1时显示分包模式选择和每包数量配置 -->
|
|
|
|
<!-- 当分包数量大于1时显示分包模式选择和每包数量配置 -->
|
|
|
|
@ -564,7 +564,8 @@
|
|
|
|
<span class="package-qty">{{qty}}个</span>
|
|
|
|
<span class="package-qty">{{qty}}个</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="total-qty-info">
|
|
|
|
<div class="total-qty-info">
|
|
|
|
<span>总计:{{averageTotal}} / {{remainingQty}}</span>
|
|
|
|
<span :class="{'error-text': averageTotal !== instockQty}">总计:{{averageTotal}} / {{instockQty}}</span>
|
|
|
|
|
|
|
|
<span v-if="averageTotal !== instockQty" class="error-text"> - 必须分配完所有入库数量</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
@ -577,7 +578,7 @@
|
|
|
|
<el-input-number
|
|
|
|
<el-input-number
|
|
|
|
v-model="packageQtyList[index]"
|
|
|
|
v-model="packageQtyList[index]"
|
|
|
|
:min="1"
|
|
|
|
:min="1"
|
|
|
|
:max="remainingQty"
|
|
|
|
:max="instockQty"
|
|
|
|
placeholder="请输入数量"
|
|
|
|
placeholder="请输入数量"
|
|
|
|
@change="validateTotalQty"
|
|
|
|
@change="validateTotalQty"
|
|
|
|
size="small"
|
|
|
|
size="small"
|
|
|
|
@ -585,7 +586,8 @@
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="total-qty-info">
|
|
|
|
<div class="total-qty-info">
|
|
|
|
<span :class="{'error-text': totalPackageQty > remainingQty}">总计:{{totalPackageQty}} / {{remainingQty}}</span>
|
|
|
|
<span :class="{'error-text': totalPackageQty !== instockQty}">总计:{{totalPackageQty}} / {{instockQty}}</span>
|
|
|
|
|
|
|
|
<span v-if="totalPackageQty !== instockQty" class="error-text"> - 必须分配完所有入库数量</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
@ -783,23 +785,30 @@ listUser({ pageNum: 1, pageSize: 99999 }).then(e => {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
/** 提交按钮 */
|
|
|
|
/** 提交按钮 */
|
|
|
|
const submitForm = async() => {
|
|
|
|
const submitForm = async() => {
|
|
|
|
if (!childrenTableInfoForm.value.instockQty || !childrenTableInfoForm.value.printedNum) {
|
|
|
|
if (!childrenTableInfoForm.value.instockQty || childrenTableInfoForm.value.printedNum === undefined) {
|
|
|
|
ElMessage.error('物料数据未加载完成,请重试')
|
|
|
|
ElMessage.error('物料数据未加载完成,请重试')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否已经打印过
|
|
|
|
|
|
|
|
if (Number(childrenTableInfoForm.value.printedNum) > 0) {
|
|
|
|
|
|
|
|
ElMessage.error('该入库单已经打印过,不允许重复打印')
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const split = Number(childrenTableInfoForm.value.splitPackageCount) || 1
|
|
|
|
const split = Number(childrenTableInfoForm.value.splitPackageCount) || 1
|
|
|
|
const copies = Number(childrenTableInfoForm.value.printCopies) || 1
|
|
|
|
const copies = Number(childrenTableInfoForm.value.printCopies) || 1
|
|
|
|
const remaining = remainingQty.value
|
|
|
|
const totalInstockQty = instockQty.value // 使用完整的入库数量
|
|
|
|
|
|
|
|
|
|
|
|
if (split > 1) {
|
|
|
|
if (split > 1) {
|
|
|
|
// 分包逻辑:根据模式选择数据源
|
|
|
|
// 分包逻辑:统一使用packageQtyList
|
|
|
|
let finalPackageList = []
|
|
|
|
let finalPackageList = []
|
|
|
|
if (packageMode.value === 'average') {
|
|
|
|
if (packageMode.value === 'average') {
|
|
|
|
// 平均分包模式:使用平均分包的结果
|
|
|
|
// 平均分包模式:使用平均分包的结果
|
|
|
|
finalPackageList = averagePackageList.value
|
|
|
|
finalPackageList = averagePackageList.value
|
|
|
|
const total = averageTotal.value
|
|
|
|
const total = averageTotal.value
|
|
|
|
if (total > remaining) {
|
|
|
|
if (total !== totalInstockQty) {
|
|
|
|
ElMessage.error('平均分包总计不能超过剩余物料量')
|
|
|
|
ElMessage.error(`分包数量大于1时,必须一次性分配完所有入库数量 ${totalInstockQty},当前总计:${total}`)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (total <= 0) {
|
|
|
|
if (total <= 0) {
|
|
|
|
@ -810,8 +819,8 @@ const submitForm = async() => {
|
|
|
|
// 自定义模式:使用用户输入的数量
|
|
|
|
// 自定义模式:使用用户输入的数量
|
|
|
|
finalPackageList = packageQtyList.value
|
|
|
|
finalPackageList = packageQtyList.value
|
|
|
|
const total = totalPackageQty.value
|
|
|
|
const total = totalPackageQty.value
|
|
|
|
if (total > remaining) {
|
|
|
|
if (total !== totalInstockQty) {
|
|
|
|
ElMessage.error('每包数量总计不能超过剩余物料量')
|
|
|
|
ElMessage.error(`分包数量大于1时,每包数量总计必须等于入库数量 ${totalInstockQty},当前总计:${total}`)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (total <= 0) {
|
|
|
|
if (total <= 0) {
|
|
|
|
@ -825,13 +834,12 @@ const submitForm = async() => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 将最终的分包数量传递给后端
|
|
|
|
// 无论什么模式,都传递分包数量列表给后端
|
|
|
|
childrenTableInfoForm.value.packageQtyList = finalPackageList
|
|
|
|
childrenTableInfoForm.value.packageQtyList = finalPackageList
|
|
|
|
childrenTableInfoForm.value.packageMode = packageMode.value // 传递模式信息
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// 不分包逻辑
|
|
|
|
// 不分包逻辑(单包打印)
|
|
|
|
if (split > remaining) {
|
|
|
|
if (split > totalInstockQty) {
|
|
|
|
ElMessage.error('分包数量不能超过剩余物料量')
|
|
|
|
ElMessage.error('分包数量不能超过入库数量')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (copies < 1) {
|
|
|
|
if (copies < 1) {
|
|
|
|
@ -1137,9 +1145,11 @@ const parentTableInfoSubmit = () =>{
|
|
|
|
// 子表格修改
|
|
|
|
// 子表格修改
|
|
|
|
const childrenTableUpdate = async (e) => {
|
|
|
|
const childrenTableUpdate = async (e) => {
|
|
|
|
const detail = (await getInstockDetail(e.instockDetailId)).data
|
|
|
|
const detail = (await getInstockDetail(e.instockDetailId)).data
|
|
|
|
const remaining = Number(detail.instockQty) - Number(detail.printedNum || 0)
|
|
|
|
const printed = Number(detail.printedNum || 0)
|
|
|
|
if(remaining < 1){
|
|
|
|
|
|
|
|
ElMessage.error('无剩余数量可打印')
|
|
|
|
// 检查是否已经打印过
|
|
|
|
|
|
|
|
if(printed > 0){
|
|
|
|
|
|
|
|
ElMessage.error('该入库单已经打印过,不允许重复打印')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1282,7 +1292,7 @@ const handleAssociatePurchaseOrder = async () => {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
dialogtable.value = res.data.map(item => ({
|
|
|
|
dialogtable.value = res.data.map(item => ({
|
|
|
|
poDId: item.poDId, // 添加采购订单物料主键
|
|
|
|
poDId: item.poDId, // 添加采购订单物料主键
|
|
|
|
materialId: item.materialCode, // 修正字段名
|
|
|
|
// materialId: item.materialId,
|
|
|
|
materialCode: item.materialCode,
|
|
|
|
materialCode: item.materialCode,
|
|
|
|
materialName: item.materialName,
|
|
|
|
materialName: item.materialName,
|
|
|
|
materialSpe: item.materialSpe,
|
|
|
|
materialSpe: item.materialSpe,
|
|
|
|
@ -1337,18 +1347,25 @@ const validateQty = (row, val) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 对于其他类型,验证不超过交付数量(如果有)
|
|
|
|
// 对于其他类型,验证不超过交付数量(如果有)
|
|
|
|
if (row.deliveryQty !== undefined && intVal > row.deliveryQty) {
|
|
|
|
// if (row.deliveryQty !== undefined && intVal > row.deliveryQty) {
|
|
|
|
row.instockQty = row.deliveryQty;
|
|
|
|
// row.instockQty = row.deliveryQty;
|
|
|
|
ElMessage.warning(`入库数量不能大于交付数量 ${row.deliveryQty}`);
|
|
|
|
// ElMessage.warning(`入库数量不能大于交付数量 ${row.deliveryQty}`);
|
|
|
|
} else {
|
|
|
|
// } else {
|
|
|
|
row.instockQty = Math.max(0, intVal);
|
|
|
|
// row.instockQty = Math.max(0, intVal);
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const remainingQty = computed(() => {
|
|
|
|
const remainingQty = computed(() => {
|
|
|
|
|
|
|
|
// 注意:这里的remainingQty实际上是用于显示剩余可打印数量
|
|
|
|
|
|
|
|
// 但分包时应该基于完整的instockQty
|
|
|
|
const instock = Number(childrenTableInfoForm.value.instockQty) || 0
|
|
|
|
const instock = Number(childrenTableInfoForm.value.instockQty) || 0
|
|
|
|
const printed = Number(childrenTableInfoForm.value.printedNum) || 0
|
|
|
|
const printed = Number(childrenTableInfoForm.value.printedNum) || 0
|
|
|
|
return Math.max(0, instock - printed) // 添加 Math.max 防护负值
|
|
|
|
return Math.max(0, instock - printed) // 显示剩余可打印数量
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 入库数量(用于分包计算)
|
|
|
|
|
|
|
|
const instockQty = computed(() => {
|
|
|
|
|
|
|
|
return Number(childrenTableInfoForm.value.instockQty) || 0
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// 分包相关的响应式数据
|
|
|
|
// 分包相关的响应式数据
|
|
|
|
@ -1388,12 +1405,14 @@ const onSplitPackageCountChange = (count) => {
|
|
|
|
|
|
|
|
|
|
|
|
// 计算平均分包数量
|
|
|
|
// 计算平均分包数量
|
|
|
|
const calculateAveragePackage = (count) => {
|
|
|
|
const calculateAveragePackage = (count) => {
|
|
|
|
const remaining = remainingQty.value
|
|
|
|
const totalQty = instockQty.value // 使用完整的入库数量
|
|
|
|
if (remaining > 0 && count > 0) {
|
|
|
|
if (totalQty > 0 && count > 0) {
|
|
|
|
const avgQty = Math.floor(remaining / count)
|
|
|
|
const avgQty = Math.floor(totalQty / count)
|
|
|
|
const remainder = remaining % count
|
|
|
|
const remainder = totalQty % count
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
averagePackageList.value = []
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
|
|
|
|
|
|
// 前面的包分配 avgQty + 1(如果有余数),后面的包分配 avgQty
|
|
|
|
averagePackageList.value[i] = avgQty + (i < remainder ? 1 : 0)
|
|
|
|
averagePackageList.value[i] = avgQty + (i < remainder ? 1 : 0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1411,10 +1430,15 @@ const onPackageModeChange = (mode) => {
|
|
|
|
// 验证总数量是否超出限制
|
|
|
|
// 验证总数量是否超出限制
|
|
|
|
const validateTotalQty = () => {
|
|
|
|
const validateTotalQty = () => {
|
|
|
|
const total = totalPackageQty.value
|
|
|
|
const total = totalPackageQty.value
|
|
|
|
const remaining = remainingQty.value
|
|
|
|
const totalQty = instockQty.value // 使用完整的入库数量
|
|
|
|
|
|
|
|
|
|
|
|
if (total > remaining) {
|
|
|
|
if (total > totalQty) {
|
|
|
|
ElMessage.warning(`每包数量总计不能超过剩余数量 ${remaining}`)
|
|
|
|
ElMessage.warning(`每包数量总计不能超过入库数量 ${totalQty}`)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 分包数量大于1时,必须分配完所有入库数量
|
|
|
|
|
|
|
|
if (childrenTableInfoForm.value.splitPackageCount > 1 && total !== totalQty) {
|
|
|
|
|
|
|
|
ElMessage.warning(`分包数量大于1时,每包数量总计必须等于入库数量 ${totalQty}`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1428,6 +1452,17 @@ const isAddDisabled = computed(() => {
|
|
|
|
return dialogForm.value.instockType === '1';
|
|
|
|
return dialogForm.value.instockType === '1';
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 判断行是否可以打印
|
|
|
|
|
|
|
|
const isRowPrintable = (row) => {
|
|
|
|
|
|
|
|
const printed = Number(row.printedNum || 0)
|
|
|
|
|
|
|
|
// 如果已经有打印记录,不允许再次打印
|
|
|
|
|
|
|
|
if (printed > 0) {
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
<style scoped>
|
|
|
|
.demo-form-inline .el-input {
|
|
|
|
.demo-form-inline .el-input {
|
|
|
|
|