库存盘点计算

This commit is contained in:
weiwei committed 2025-03-14 19:32:52 +08:00
1 parent e999023c83
commit c1893adb3c
1 file changed
+66 -22
+66 -22
View File
@@ -99,40 +99,43 @@
</vxe-column>
<vxe-column field="realNumber" title="实际数量" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }" min-width="30">
<template #edit="{ row }">
<el-input size="small" v-model="row.erpUnitVos[index].realNumber" v-for="(item, index) in row.erpUnitVos" :key="index" />
<el-input
size="small"
v-model="row.erpUnitVos[index].realNumber"
v-for="(item, index) in row.erpUnitVos"
:key="index"
@change="handleRealNumberChange(row)"
>
<template #append>{{ item.unit }}</template>
</el-input>
</template>
<template #default="{ row }">
<div v-for="(item, index) in row.erpUnitVos" :key="index">
{{ (item.realNumber ? item.realNumber : "__") + " " + item.unit }}
{{ item.realNumber ? item.realNumber + " " + item.unit : "" }}
</div>
</template>
</vxe-column>
<vxe-column field="profit" title="盈">
<template #default="{ row }">
<div v-for="(item, index) in row.erpUnitVos" :key="index">
{{
(item.realNumber - item.accountNumber) * item.packageNum > 0 ? (item.realNumber - item.accountNumber) * item.packageNum : 0
}}
</div>
<span v-for="(item, index) in computedProfit(row)" :key="index">
{{ item }}
</span>
</template>
</vxe-column>
<vxe-column field="loss" title="亏">
<template #default="{ row }">
<div v-for="(item, index) in row.erpUnitVos" :key="index">
{{
(item.realNumber - item.accountNumber) * item.packageNum < 0
? Math.abs((item.realNumber - item.accountNumber) * item.packageNum)
: 0
}}
</div>
<span v-for="(item, index) in computedLoss(row)" :key="index">
{{ item }}
</span>
</template>
</vxe-column>
<vxe-column field="unitPrice" title="账面进价">
<template #default="{ row }">
{{
row.unitPrice
? displayPrice(row.unitPrice)
: displayPrice(row.erpUnitVos?.find((item: any) => item.id == row.unitId)?.unitPrice)
displayPrice(
row.erpUnitVos.reduce((pre: any, cur: any) => pre + cur.purchasePrice * Number(cur.accountNumber), 0),
"",
)
}}
</template>
</vxe-column>
@@ -142,13 +145,15 @@
</template>
</vxe-column>
<vxe-column field="pdTotalNum" title="盘后总数" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
<template #edit="{ row }">
<el-input v-model="row.pdTotalNum" />
<template #default="{ row }">
{{ row.erpUnitVos.reduce((pre: any, cur: any) => pre + Number(cur.realNumber) * cur.packageNum, 0) || 0 }}
</template>
</vxe-column>
<vxe-column field="pdTotalAmount" title="盘后总金额">
<template #default="{ row }">
{{ parseFloat(row.pdPrice) * parseFloat(row.pdTotalNum) }}
{{
parseFloat(row.pdPrice) * row.erpUnitVos.reduce((pre: any, cur: any) => pre + Number(cur.realNumber) * cur.packageNum, 0) || 0
}}
</template>
</vxe-column>
<vxe-column field="remark" title="备注" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
@@ -286,14 +291,53 @@ const formatterAccountNumber = (row: any) => {
})
.sort((a: any, b: any) => b.packageNum - a.packageNum)
.map((item: any, index: number) => {
item.accountNumber = Math.floor(stock / item.packageNum)
stock = stock % item.packageNum
if (row.erpUnitVos.length - 1 === index) {
item.accountNumber = stock
} else {
item.accountNumber = Math.floor(stock / item.packageNum)
}
stock = (stock % item.packageNum).toFixed(2)
return item
})
.sort((a: any, b: any) => a.oriIndex - b.oriIndex)
}
return row._cachedAccountNumber
}
// 计算盈
const computedProfit = (row: any) => {
if (!row._cachedProfit) {
console.log("cccc")
const diff =
row.erpUnitVos.reduce((pre: any, cur: any) => {
return pre + (Number(cur.realNumber) || 0) * cur.packageNum
}, 0) - (Number(row.stock) || 0)
row._cachedProfit = [diff > 0 ? diff : 0]
}
return row._cachedProfit
}
// 计算亏
const computedLoss = (row: any) => {
if (!row._cachedLoss) {
console.log("cccc")
const diff =
(Number(row.stock) || 0) -
row.erpUnitVos.reduce((pre: any, cur: any) => {
return pre + (Number(cur.realNumber) || 0) * cur.packageNum
}, 0)
row._cachedLoss = [diff > 0 ? diff : 0]
}
return row._cachedLoss
}
// 在编辑实际数量时需要清除缓存使其重新计算
const handleRealNumberChange = (row: any) => {
row._cachedProfit = null
row._cachedLoss = null
}
// 顶部表格行新增
const addEvent = () => {