This commit is contained in:
dzc committed 2025-08-15 17:28:01 +08:00
commit 2b8a1f0755
20 files changed
+1362 -486

No files matched your search

@@ -69,8 +69,16 @@
:data="vxeTableData"
:edit-rules="validRules"
show-footer
:footer-data="[{ seq: '合计', totalAmount }]"
:merge-footer-items="[{ row: 0, col: 2, rowspan: 1, colspan: 7 }]"
:footer-data="[
{
seq: '合计',
quantity: total.quantity,
purchasePrice: total.purchasePrice,
realPrice: `${total.realPrice}元`,
totalAmount: total.totalAmount,
},
]"
:merge-footer-items="[{ row: 0, col: 2, rowspan: 1, colspan: 4 }]"
@checkbox-all=""
@checkbox-change=""
size="mini"
@@ -148,7 +156,7 @@
<el-input-number v-if="row.selectedUnitObj" v-model="row.selectedUnitObj.totalAmount" :min="0" :precision="2" />
</template>
<template #footer="{ row }">
<span style="color: #2e5cf6; font-weight: bold">{{ totalAmount }} 元</span>
<span style="color: #2e5cf6; font-weight: bold">{{ total.totalAmount }}元</span>
</template>
</vxe-column>
<vxe-column field="remark" title="备注" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
@@ -235,9 +243,15 @@ const validRules = ref<VxeTablePropTypes.EditRules<any>>({
})
// 合计总金额
const totalAmount = computed(() =>
vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.totalAmount || 0), 0).toFixed(2),
)
const total = computed(() => {
const quantity = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.quantity || 0), 0).toFixed(2)
const purchasePrice = displayPrice(
vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.purchasePrice || 0), 0),
)
const realPrice = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.realPrice || 0), 0)
const totalAmount = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.totalAmount || 0), 0).toFixed(2)
return { quantity, purchasePrice, realPrice, totalAmount }
})
onMounted(async () => {
await getInitData()
@@ -97,8 +97,16 @@
:data="vxeTableData"
:edit-rules="validRules"
show-footer
:footer-data="[{ seq: '合计', totalAmount }]"
:merge-footer-items="[{ row: 0, col: 2, rowspan: 1, colspan: 7 }]"
:footer-data="[
{
seq: '合计',
quantity: total.quantity,
purchasePrice: total.purchasePrice,
realPrice: `${total.realPrice}元`,
totalAmount: total.totalAmount,
},
]"
:merge-footer-items="[{ row: 0, col: 2, rowspan: 1, colspan: 4 }]"
@checkbox-all=""
@checkbox-change=""
size="mini"
@@ -144,9 +152,9 @@
v-model="row.quantity"
:min="0"
:precision="0"
@change="onRowValueChange(row, $rowIndex)"
@change="onQuantityChange(row, $rowIndex)"
/>
<el-input-number v-else v-model="row.quantity" :min="0" :precision="2" @change="onRowValueChange(row, $rowIndex)" />
<el-input-number v-else v-model="row.quantity" :min="0" :precision="2" @change="onQuantityChange(row, $rowIndex)" />
</template>
</vxe-column>
<vxe-column field="purchasePrice" title="原进价">
@@ -154,11 +162,11 @@
{{ displayPrice(row.selectedUnitObj?.purchasePrice || 0) }}
</template>
</vxe-column>
<vxe-column field="realPrice" title="实际进价" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
<vxe-column field="realPrice" title="实际进价">
<template #default="{ row }">
{{ row?.selectedUnitObj?.realPrice || 0 }}
</template>
<template #edit="{ row, $rowIndex }">
<!-- <template #edit="{ row, $rowIndex }">
<el-input-number
v-if="row.selectedUnitObj"
v-model="row.selectedUnitObj.realPrice"
@@ -166,17 +174,23 @@
:precision="2"
@change="onRowValueChange(row, $rowIndex)"
/>
</template>
</template> -->
</vxe-column>
<vxe-column field="totalAmount" title="累计总金额" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
<template #default="{ row }">
{{ row?.selectedUnitObj?.totalAmount }}
</template>
<template #edit="{ row, $rowIndex }">
<el-input-number v-if="row.selectedUnitObj" v-model="row.selectedUnitObj.totalAmount" :min="0" :precision="2" />
<el-input-number
v-if="row.selectedUnitObj"
v-model="row.selectedUnitObj.totalAmount"
:min="0"
:precision="2"
@change="onTotalAmountChange(row, $rowIndex)"
/>
</template>
<template #footer="{ row }">
<span style="color: #2e5cf6; font-weight: bold">{{ totalAmount }} 元</span>
<span style="color: #2e5cf6; font-weight: bold">{{ total.totalAmount }}元</span>
</template>
</vxe-column>
<vxe-column field="remark" title="备注" :edit-render="{ autoFocus: 'input', placeholder: '请输入' }">
@@ -263,9 +277,15 @@ const validRules = ref<VxeTablePropTypes.EditRules<any>>({
})
// 合计总金额
const totalAmount = computed(() =>
vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.totalAmount || 0), 0).toFixed(2),
)
const total = computed(() => {
const quantity = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.quantity || 0), 0).toFixed(2)
const purchasePrice = displayPrice(
vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.purchasePrice || 0), 0),
)
const realPrice = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.realPrice || 0), 0).toFixed(2)
const totalAmount = vxeTableData.value.reduce((sum: any, row: any) => sum + Number(row.selectedUnitObj?.totalAmount || 0), 0).toFixed(2)
return { quantity, purchasePrice, realPrice, totalAmount }
})
onMounted(async () => {
await getInitData()
@@ -364,9 +384,15 @@ const onUnitChange = (row: any) => {
row.selectedUnitObj.totalAmount = Number((row.quantity * Number(row.selectedUnitObj.realPrice || 0)).toFixed(2))
}
// 数量、进价变动联动
const onRowValueChange = (row: any, $rowIndex: number) => {
row.selectedUnitObj.totalAmount = Number((row.quantity * Number(row.selectedUnitObj.realPrice || 0)).toFixed(2))
// 数量变动
const onQuantityChange = (row: any, $rowIndex: number) => {
row.selectedUnitObj.totalAmount = Number(displayPrice(row.quantity * Number(row.selectedUnitObj.purchasePrice || 0), ""))
row.selectedUnitObj.realPrice = row.selectedUnitObj.totalAmount / row.quantity
}
// 累计总金额变动
const onTotalAmountChange = (row: any, $rowIndex: number) => {
row.selectedUnitObj.realPrice = (row.selectedUnitObj.totalAmount / row.quantity).toFixed(2)
}
// 整理table数据
@@ -15,9 +15,6 @@
value-format="YYYY-MM-DD"
/>
</el-form-item>
<!-- <el-form-item label="经办人" prop="handlerUserId">
<SelectHandlerUser v-model.trim="state.queryForm.handlerUserId" placeholder="请选择经办人" style="width: 200px" />
</el-form-item> -->
<el-form-item>
<el-button icon="search" type="primary" @click="getDataList">查询</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -51,8 +48,7 @@
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="inventoryCode" label="单据编号" show-overflow-tooltip />
<el-table-column prop="inventoryDate" label="单据日期" show-overflow-tooltip />
<!-- <el-table-column prop="productName" label="入库商品" show-overflow-tooltip /> -->
<!-- <el-table-column prop="handlerUserName" label="经办人" show-overflow-tooltip /> -->
<el-table-column prop="productName" label="入库商品" show-overflow-tooltip />
<el-table-column prop="supplierId" label="货商" show-overflow-tooltip />
<el-table-column prop="remark" label="备注" show-overflow-tooltip />
<el-table-column label="操作" width="150">