From d4368b3559bb0d1e733d84339e5be3771d7ebcce Mon Sep 17 00:00:00 2001 From: zxy Date: Mon, 12 Jan 2026 16:48:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E4=BB=98=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes-ui-admin-vue3/src/utils/formatter.ts | 2 +- .../src/views/heli/orderyf/index.vue | 97 +++++++++++++++++-- 2 files changed, 92 insertions(+), 7 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/formatter.ts b/mes-ui/mes-ui-admin-vue3/src/utils/formatter.ts index de07ec28..fad5af91 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/formatter.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/formatter.ts @@ -9,7 +9,7 @@ export const fenToYuanFormat = (_, __, cellValue: any, ___) => { /** 数字格式化为两位小数 */ // 格式化金额:保留两位小数,加千分位逗号 export const formatAmount = (row, column, cellValue) => { - if (cellValue == null || cellValue === '') return '' + if (cellValue == null || cellValue === '') return '0.00' // 转为数字 const num = Number(cellValue) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue index 7c207201..5f412c0e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/orderyf/index.vue @@ -90,7 +90,7 @@ - + - - - + + + + + + - - + + + + + + + @@ -181,6 +203,9 @@ import download from '@/utils/download' import * as OrderYfApi from '@/api/heli/orderyf' import OrderYfForm from './OrderYfForm.vue' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' +import {ElTable} from "element-plus"; +import type { SummaryMethodProps } from 'element-plus' +import {formatAmount} from '@/utils/formatter' defineOptions({ name: 'orderyf' }) const message = useMessage() // 消息弹窗 @@ -262,6 +287,66 @@ const handleExport = async () => { } } +const getSummaries = (param: SummaryMethodProps) => { + const { columns, data } = param; + const sums = []; + + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = '合计'; + return; + } + console.log(index); + console.log(column); + console.log(column.content); + // 通过column获取value + + + // 计算剩余金额(应付金额 - 已付金额) + if (column.label.includes('剩余金额')) { + const remainingAmounts = data.map(item => Math.max(0, (Number(item.cgYf) || 0) - (Number(item.cgYifu) || 0))); + sums[index] = remainingAmounts.reduce((sum, amount) => sum + amount, 0).toFixed(2); + return; } + + // 计算剩余开票金额(应付金额 - 已开票金额) + if (column.label.includes('剩余开票金额')) { + const yfSum = data.reduce((sum, item) => sum + (Number(item.cgYf) || 0), 0); + const amountSum = data.reduce((sum, item) => sum + (Number(item.amount) || 0), 0); + sums[index] = Number(yfSum - amountSum).toFixed(2); + return; + } + + // 需要直接汇总的字段 + const summaryFields = { + 'cgYf': '应付金额', + 'cgYifu': '已付金额', + 'amount': '已开票金额' + }; + + if (!summaryFields[column.property]) { + sums[index] = ''; + return; + } + + const values = data.map(item => Number(item[column.property])); + if (!values.every(value => isNaN(value))) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return prev + curr; + } else { + return prev; + } + }, 0); + sums[index] = Number(sums[index]).toFixed(2); + } else { + sums[index] = ''; + } + }); + + return sums; +} + /** 初始化 **/ onMounted(() => { getList()