From 65b830e69aa82b69b318695f65c3b8fcf972cca5 Mon Sep 17 00:00:00 2001
From: "1378012178@qq.com" <1378012178@qq.com>
Date: Mon, 24 Nov 2025 15:14:36 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E9=94=80=E5=AD=98-=E4=BB=98=E6=AC=BE?=
=?UTF-8?q?=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../invoicing/cgd/NuInvoicingCgdMain.api.ts | 7 ++
.../invoicing/fkd/NuInvoicingFkdMain.data.ts | 49 ++++++----
.../invoicing/fkd/NuInvoicingFkdMainList.vue | 2 +-
.../invoicing/fkd/components/CgdTableList.vue | 50 +++++++++-
.../fkd/components/NuInvoicingFkdMainForm.vue | 29 ++++--
.../fkd/components/NuInvoicingScfkdList.vue | 97 ++++++++++++++++---
.../invoicing/fkd/components/cgd.data.ts | 63 ++++++++++--
7 files changed, 247 insertions(+), 50 deletions(-)
diff --git a/src/views/invoicing/cgd/NuInvoicingCgdMain.api.ts b/src/views/invoicing/cgd/NuInvoicingCgdMain.api.ts
index c522af9..d8c211a 100644
--- a/src/views/invoicing/cgd/NuInvoicingCgdMain.api.ts
+++ b/src/views/invoicing/cgd/NuInvoicingCgdMain.api.ts
@@ -5,6 +5,7 @@ const { createConfirm } = useMessage();
enum Api {
list = '/cgd/nuInvoicingCgdMain/list',
+ calcList = '/cgd/nuInvoicingCgdMain/calcList',
save='/cgd/nuInvoicingCgdMain/add',
edit='/cgd/nuInvoicingCgdMain/edit',
deleteOne = '/cgd/nuInvoicingCgdMain/delete',
@@ -32,6 +33,12 @@ export const getImportUrl = Api.importExcel;
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
+/**
+ * 列表接口 包含每个采购单应付金额
+ * @param params
+ */
+export const calcList = (params) => defHttp.get({ url: Api.calcList, params });
+
/**
* 删除单个
* @param params
diff --git a/src/views/invoicing/fkd/NuInvoicingFkdMain.data.ts b/src/views/invoicing/fkd/NuInvoicingFkdMain.data.ts
index 309c2c4..93b3845 100644
--- a/src/views/invoicing/fkd/NuInvoicingFkdMain.data.ts
+++ b/src/views/invoicing/fkd/NuInvoicingFkdMain.data.ts
@@ -1,42 +1,53 @@
-import {BasicColumn} from '/@/components/Table';
-import {FormSchema} from '/@/components/Table';
-import { rules} from '/@/utils/helper/validator';
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '付款单单号',
- align: "center",
- dataIndex: 'fkdNo'
+ align: 'center',
+ dataIndex: 'fkdNo',
+ width: 200,
},
{
title: '供应商名称',
- align: "center",
- dataIndex: 'gysName'
+ align: 'center',
+ dataIndex: 'gysName',
+ width: 400,
},
{
- title: '总金额',
- align: "center",
- dataIndex: 'totalPrice'
+ title: '总金额(元)',
+ align: 'center',
+ dataIndex: 'totalPrice',
+ customRender: ({ text }) => {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ },
},
{
title: '付款状态',
- align: "center",
- dataIndex: 'status_dictText'
+ align: 'center',
+ dataIndex: 'status_dictText',
},
{
title: '付款时间',
- align: "center",
- dataIndex: 'fksj'
+ align: 'center',
+ dataIndex: 'fksj',
},
];
// 高级查询数据
export const superQuerySchema = {
- fkdNo: {title: '付款单单号',order: 0,view: 'text', type: 'string',},
- gysName: {title: '供应商名称',order: 2,view: 'text', type: 'string',},
- totalPrice: {title: '总金额',order: 5,view: 'number', type: 'number',},
- status: {title: '付款状态 0待付款 1作废 2已付款',order: 6,view: 'list', type: 'string',dictCode: 'invoicing_payment_status',},
- fksj: {title: '付款时间',order: 7,view: 'datetime', type: 'string',},
+ fkdNo: { title: '付款单单号', order: 0, view: 'text', type: 'string' },
+ gysName: { title: '供应商名称', order: 2, view: 'text', type: 'string' },
+ totalPrice: { title: '总金额', order: 5, view: 'number', type: 'number' },
+ status: { title: '付款状态 0待付款 1作废 2已付款', order: 6, view: 'list', type: 'string', dictCode: 'invoicing_payment_status' },
+ fksj: { title: '付款时间', order: 7, view: 'datetime', type: 'string' },
};
diff --git a/src/views/invoicing/fkd/NuInvoicingFkdMainList.vue b/src/views/invoicing/fkd/NuInvoicingFkdMainList.vue
index 87a5046..aab71af 100644
--- a/src/views/invoicing/fkd/NuInvoicingFkdMainList.vue
+++ b/src/views/invoicing/fkd/NuInvoicingFkdMainList.vue
@@ -178,7 +178,7 @@ function getTableAction(record) {
{
label: '详情',
onClick: handleDetail.bind(null, record),
- ifShow: record.status != '1'
+ // ifShow: record.status != '1'
},
{
label: '付款',
diff --git a/src/views/invoicing/fkd/components/CgdTableList.vue b/src/views/invoicing/fkd/components/CgdTableList.vue
index b91e736..0a2257f 100644
--- a/src/views/invoicing/fkd/components/CgdTableList.vue
+++ b/src/views/invoicing/fkd/components/CgdTableList.vue
@@ -1,6 +1,17 @@
+
+
+
+
+
+
+ 总金额:{{ handlePriceFormat(zongJinE || zongJinECalc) }} 元
+
+ 单位:元
+
+
@@ -16,15 +27,22 @@ import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { listAndJh } from '../../cgd/NuInvoicingCgdInfo.api';
import { wlColumns } from './cgd.data';
+import { any } from 'vue-types';
// 定义props
const props = defineProps({
cgdId: {
type: String,
default: ''
+ },
+ zongJinE: {
+ type: any,
+ default: null
}
});
+const zongJinECalc = ref()
+
// 定义事件
const emit = defineEmits(['total-amount-change']);
@@ -39,8 +57,10 @@ const { tableContext } = useListPage({
canResize: false,
useSearchForm: false,
showActionColumn: false,
+ showTableSetting: false,
immediate: false,
showIndexColumn: true,
+ scroll: { y: '50vh' },
actionColumn: {
width: 120,
fixed: 'right',
@@ -53,6 +73,7 @@ const { tableContext } = useListPage({
// 获取总金额并传递给父组件
if (data && data.length > 0) {
const totalAmount = data[0].zongJinE || '';
+ zongJinECalc.value = totalAmount
emit('total-amount-change', totalAmount);
}
return data;
@@ -69,8 +90,35 @@ watch(() => props.cgdId, (newCgdId) => {
}
});
+function handlePriceFormat(text) {
+ {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ }
+}
+
// 暴露方法给父组件
defineExpose({
reload
});
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/src/views/invoicing/fkd/components/NuInvoicingFkdMainForm.vue b/src/views/invoicing/fkd/components/NuInvoicingFkdMainForm.vue
index e607817..90f23ec 100644
--- a/src/views/invoicing/fkd/components/NuInvoicingFkdMainForm.vue
+++ b/src/views/invoicing/fkd/components/NuInvoicingFkdMainForm.vue
@@ -2,7 +2,7 @@
-
@@ -14,6 +14,15 @@
+
+
+
+
+
+
+
+
@@ -26,18 +35,18 @@
-
-
-
-
-
+
+
+
+
+
@@ -52,12 +61,12 @@
-
+
-
+
@@ -82,7 +91,7 @@
-
+
diff --git a/src/views/invoicing/fkd/components/NuInvoicingScfkdList.vue b/src/views/invoicing/fkd/components/NuInvoicingScfkdList.vue
index e218c83..eed0189 100644
--- a/src/views/invoicing/fkd/components/NuInvoicingScfkdList.vue
+++ b/src/views/invoicing/fkd/components/NuInvoicingScfkdList.vue
@@ -2,14 +2,14 @@
@@ -57,6 +56,8 @@
+ 已勾选总金额: {{ formatPrice(selectedTotalAmount) }}
+ 元
@@ -84,7 +85,7 @@ import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns } from './cgd.data';
import { saveOrUpdate } from '../NuInvoicingFkdMain.api';
-import { list } from '../../cgd/NuInvoicingCgdMain.api'
+import { calcList } from '../../cgd/NuInvoicingCgdMain.api'
import { calcTotalPrice } from '../../cgd/NuInvoicingCgdInfo.api'
import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user';
@@ -108,15 +109,17 @@ const currentDateRange = ref([]);
const visible = ref(false)
const registerForm = ref()
const zongJiaGeValue = ref(null)//总价格
+const selectedTotalAmount = ref(0);//已勾选总金额
//注册table数据
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '进销存-付款单主信息',
- api: list,
+ api: calcList,
columns,
canResize: false,
useSearchForm: false,
pagination: false,
+ scroll: { y: '50vh' },
actionColumn: {
width: 120,
fixed: 'right',
@@ -134,6 +137,8 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
//清空已计算总价格
zongJiaGeValue.value = null
selectedRows.value = selectedRows_;
+ // 计算已勾选行的xiaoJi总和
+ calculateSelectedTotal();
},
},
},
@@ -182,6 +187,16 @@ function getTableAction(record) {
];
}
+/**
+ * 变更供应商
+ */
+function changeGysFunc() {
+ // 清除已勾选数据
+ selectedRows.value = [];
+ selectedRowKeys.value = [];
+ selectedTotalAmount.value = 0;
+ searchQuery()
+}
/**
* 查询
@@ -196,6 +211,14 @@ function searchQuery() {
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
+ // 清空之前的日期字段值
+ ['qgDate', 'jhTime', 'wjTime'].forEach(field => {
+ queryParam[field + '_begin'] = '';
+ queryParam[field + '_end'] = '';
+ queryParam['[]'] = '';
+ queryParam[field] = undefined;
+ });
+ currentDateRange.value = [];
//刷新数据
reload();
}
@@ -267,7 +290,7 @@ async function scfkd() {
const handleTimeSearchChange = (value) => {
// 清空之前的日期字段值
- ['qgDate', 'jhTime_', 'wjTime_'].forEach(field => {
+ ['qgDate', 'jhTime', 'wjTime'].forEach(field => {
if (field !== value) {
queryParam[field + '_begin'] = '';
queryParam[field + '_end'] = '';
@@ -279,9 +302,57 @@ const handleTimeSearchChange = (value) => {
};
const handleDateRangeChange = (dates) => {
- queryParam[timeSearchValue.value] = dates;
+ if (dates && dates.length === 2) {
+ // 对于jhTime和wjTime字段,拼接时分秒
+ if (timeSearchValue.value === 'jhTime' || timeSearchValue.value === 'wjTime') {
+ queryParam[timeSearchValue.value + '_begin'] = dates[0] + ' 00:00:00';
+ queryParam[timeSearchValue.value + '_end'] = dates[1] + ' 23:59:59';
+ } else {
+ // 其他字段保持原样
+ queryParam[timeSearchValue.value + '_begin'] = dates[0];
+ queryParam[timeSearchValue.value + '_end'] = dates[1];
+ }
+ } else {
+ delete queryParam[timeSearchValue.value + '_begin'];
+ delete queryParam[timeSearchValue.value + '_end'];
+ }
};
+
+/**
+ * 计算已勾选行的总金额
+ */
+function calculateSelectedTotal() {
+ if (!selectedRows.value || selectedRows.value.length === 0) {
+ selectedTotalAmount.value = 0;
+ return;
+ }
+
+ // 将xiaoJi字段从字符串转换为数字并求和
+ selectedTotalAmount.value = selectedRows.value.reduce((total, row) => {
+ // 确保xiaoJi字段存在且是有效数字
+ const amount = parseFloat(row.xiaoJi) || 0;
+ return total + amount;
+ }, 0);
+}
+
+/**
+ * 金额格式化函数
+ */
+function formatPrice(value) {
+ if (value == null || value === '') {
+ return '0.00';
+ }
+
+ const num = parseFloat(value);
+ if (isNaN(num)) {
+ return '0.00';
+ }
+
+ // 格式化为两位小数
+ return num.toFixed(2);
+}
+
defineExpose({
scfkd
});
diff --git a/src/views/invoicing/fkd/components/cgd.data.ts b/src/views/invoicing/fkd/components/cgd.data.ts
index 3bcd2cb..762ba23 100644
--- a/src/views/invoicing/fkd/components/cgd.data.ts
+++ b/src/views/invoicing/fkd/components/cgd.data.ts
@@ -14,6 +14,21 @@ export const columns: BasicColumn[] = [
title: '供应商',
align: 'center',
dataIndex: 'gysName',
+ width: 400,
+ },
+ {
+ title: '付款金额(元)',
+ align: 'center',
+ dataIndex: 'xiaoJi',
+ customRender: ({ text }) => {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ },
},
{
title: '采购日期',
@@ -48,9 +63,9 @@ export const wlColumns: BasicColumn[] = [
dataIndex: 'wlName',
},
{
- title: '到货单价',
+ title: '规格型号',
align: 'center',
- dataIndex: 'arrivalPrice',
+ dataIndex: 'wlSpecificationModel',
},
{
title: '采购单位',
@@ -58,14 +73,50 @@ export const wlColumns: BasicColumn[] = [
dataIndex: 'wlUnits',
},
{
- title: '入库数量',
+ title: '采购单价',
align: 'center',
- dataIndex: 'rksl',
+ dataIndex: 'procurementPrice',
+ customRender: ({ text }) => {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ },
},
{
- title: '小计(元)',
+ title: '到货单价',
+ align: 'center',
+ dataIndex: 'crkje',
+ customRender: ({ text }) => {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ },
+ },
+ {
+ title: '入库数量',
+ align: 'center',
+ dataIndex: 'crksl',
+ },
+ {
+ title: '小计',
align: 'center',
dataIndex: 'xiaoJi',
-
+ customRender: ({ text }) => {
+ const num = parseFloat(text);
+ // 处理无效值
+ if (isNaN(num)) {
+ return '0.00';
+ }
+ // 格式化为两位小数
+ return num.toFixed(2);
+ },
},
];