|
@@ -187,6 +187,26 @@
|
|
|
<span v-else>{{ row.lockQuantity || 0 }}</span>
|
|
<span v-else>{{ row.lockQuantity || 0 }}</span>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
|
|
+ <template v-slot:productStockCountBase="{ row }">
|
|
|
|
|
+ <el-tooltip
|
|
|
|
|
+ v-if="row.productStockCountBase != null"
|
|
|
|
|
+ :content="productStockTooltip(row)"
|
|
|
|
|
+ placement="top"
|
|
|
|
|
+ >
|
|
|
|
|
+ <span>
|
|
|
|
|
+ {{ row.productStockCountBase }}
|
|
|
|
|
+ <el-tag
|
|
|
|
|
+ v-if="isProductStockAbnormal(row)"
|
|
|
|
|
+ type="danger"
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ >
|
|
|
|
|
+ 总账异常,需对账
|
|
|
|
|
+ </el-tag>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+ <span v-else>-</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
<template v-slot:areaName="{ row }">
|
|
<template v-slot:areaName="{ row }">
|
|
|
<el-link type="primary" @click="openUploadDetail(row, 'list')">
|
|
<el-link type="primary" @click="openUploadDetail(row, 'list')">
|
|
|
查看
|
|
查看
|
|
@@ -514,6 +534,15 @@
|
|
|
return Math.round(result * 100) / 100;
|
|
return Math.round(result * 100) / 100;
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ this.selectedDime == 1 || this.selectedDime == 2
|
|
|
|
|
+ ? {
|
|
|
|
|
+ prop: 'productStockCountBase',
|
|
|
|
|
+ label: '物品总账库存',
|
|
|
|
|
+ slot: 'productStockCountBase',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ minWidth: 180
|
|
|
|
|
+ }
|
|
|
|
|
+ : '',
|
|
|
{
|
|
{
|
|
|
prop: 'measureQuantity',
|
|
prop: 'measureQuantity',
|
|
|
label: '计量数量',
|
|
label: '计量数量',
|
|
@@ -776,6 +805,28 @@
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ productStockTooltip(row) {
|
|
|
|
|
+ return `物品总账库存:${row.productStockCountBase},总账可用余额:${
|
|
|
|
|
+ row.productAvailableCountBase ?? '-'
|
|
|
|
|
+ }。总账为物品全部库存,不随当前仓库或批次筛选;出库同时校验总账和批次。`;
|
|
|
|
|
+ },
|
|
|
|
|
+ // 批次余量不能证明总账正常;这里只提示可以明确判断的数量异常。
|
|
|
|
|
+ isProductStockAbnormal(row) {
|
|
|
|
|
+ if (row.productStockCountBase == null) return false;
|
|
|
|
|
+ const stock = Number(row.productStockCountBase);
|
|
|
|
|
+ const available = row.productAvailableCountBase;
|
|
|
|
|
+ if (stock < 0 || (available != null && Number(available) < 0)) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Number(row.preWarehousing) === 1) return false;
|
|
|
|
|
+ const rowStock = row.stockCountBase ?? row.measureQuantity;
|
|
|
|
|
+ return (
|
|
|
|
|
+ (rowStock != null && stock < Number(rowStock)) ||
|
|
|
|
|
+ (available != null &&
|
|
|
|
|
+ row.availableCountBase != null &&
|
|
|
|
|
+ Number(available) < Number(row.availableCountBase))
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
handleUnlock() {
|
|
handleUnlock() {
|
|
|
console.log('this.checkRadioData', this.checkRadioData);
|
|
console.log('this.checkRadioData', this.checkRadioData);
|
|
|
if (this.checkRadioData?.length != 1) {
|
|
if (this.checkRadioData?.length != 1) {
|