库存盘点计算
This commit is contained in:
1 parent
e999023c83
commit
c1893adb3c
1 file changed
+66
-22
@@ -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 = () => {
|
||||
|
||||
Reference in new issue
Block a user