From 84e3953ec23a393fdfdadb21463ed502a494e27f Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 31 十月 2025 16:22:28 +0800
Subject: [PATCH] 采购管理-添加导出功能
---
src/views/procurementManagement/paymentHistory/index.vue | 203 ++++++++++++++++++++++++++++++++++----------------
1 files changed, 137 insertions(+), 66 deletions(-)
diff --git a/src/views/procurementManagement/paymentHistory/index.vue b/src/views/procurementManagement/paymentHistory/index.vue
index 842cace..62ac579 100644
--- a/src/views/procurementManagement/paymentHistory/index.vue
+++ b/src/views/procurementManagement/paymentHistory/index.vue
@@ -1,106 +1,177 @@
<template>
<div class="app-container">
- <div class="search_form">
- <div>
- <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>
- <el-input v-model="searchForm.searchText" style="width: 240px" placeholder="杈撳叆渚涘簲鍟嗗悕绉版悳绱�"
- @change="handleQuery" clearable :prefix-icon="Search" />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- </div>
+ <el-form :model="searchForm" :inline="true">
+ <el-form-item label="渚涘簲鍟嗗悕绉�">
+ <el-input
+ v-model="searchForm.searchText"
+ style="width: 240px"
+ placeholder="杈撳叆渚涘簲鍟嗗悕绉版悳绱�"
+ @change="handleQuery"
+ clearable
+ :prefix-icon="Search"
+ />
+ </el-form-item>
+ <el-form-item label="浠樻鏃ユ湡">
+ <el-date-picker
+ v-model="searchForm.paymentDate"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ clearable
+ @change="changeDateRange"
+ @clear="clearRange"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ type="primary"
+ @click="handleQuery"
+ style="margin-left: 10px"
+ >
+ 鎼滅储
+ </el-button>
+ <el-button @click="handleExport">瀵煎嚭</el-button>
+ </el-form-item>
+ </el-form>
<div class="table_list">
- <PIMTable :column="tableColumn" :tableData="tableData" :page="page" :isSelection="true"
- :isShowSummary="isShowSummarySon"
- :summaryMethod="summarizeMainTable1"
- :handleSelectionChange="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination"
- :total="total"></PIMTable>
+ <PIMTable
+ rowKey="id"
+ :column="tableColumn"
+ :tableData="tableData"
+ :page="page"
+ :isSelection="true"
+ :isShowSummary="isShowSummarySon"
+ :summaryMethod="summarizeMainTable1"
+ @selection-change="handleSelectionChange"
+ :tableLoading="tableLoading"
+ @pagination="pagination"
+ :total="page.total"
+ ></PIMTable>
</div>
</div>
</template>
<script setup>
-import { ref } from 'vue'
+import { ref, reactive, getCurrentInstance, onMounted } from "vue";
import { Search } from "@element-plus/icons-vue";
-import {
- paymentHistoryList
-} from "@/api/procurementManagement/paymentEntry.js";
-const { proxy } = getCurrentInstance()
+import { paymentHistoryListPage } from "@/api/procurementManagement/paymentEntry.js";
+import useFormData from "@/hooks/useFormData";
+import dayjs from "dayjs";
+
+const { proxy } = getCurrentInstance();
const isShowSummarySon = ref(true);
const tableColumn = ref([
{
- label: '浠樻鏃ユ湡',
- prop: 'paymentDate',
+ label: "閲囪喘鍚堝悓鍙�",
+ prop: "purchaseContractNumber",
},
{
- label: '渚涘簲鍟嗗悕绉�',
- prop: 'supplierName',
+ label: "浠樻鏃ユ湡",
+ prop: "paymentDate",
},
{
- label: '浠樻閲戦',
- prop: 'currentPaymentAmount',
+ label: "渚涘簲鍟嗗悕绉�",
+ prop: "supplierName",
+ width:240
+ },
+ {
+ label: "浠樻閲戦",
+ prop: "currentPaymentAmount",
formatData: (params) => {
- return parseFloat(params).toFixed(2);
- }
+ return params ? parseFloat(params).toFixed(2) : 0;
+ },
},
{
- label: '浠樻鏂瑰紡',
- prop: 'paymentMethod'
+ label: "浠樻鏂瑰紡",
+ prop: "paymentMethod",
},
{
- label: '鐧昏浜�',
- prop: 'registrant'
+ label: "鐧昏浜�",
+ prop: "registrant",
},
{
- label: '鐧昏鏃ユ湡',
- prop: 'registrationtDate'
- }
-])
-const tableData = ref([])
-const selectedRows = ref([])
-const tableLoading = ref(false)
+ label: "鐧昏鏃ユ湡",
+ prop: "registrationtDate",
+ },
+]);
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
const page = reactive({
current: 1,
- size: 10,
-})
-const total = ref(0)
-const data = reactive({
- searchForm: {
- searchText: '',
- },
-})
-const { searchForm } = toRefs(data)
+ size: 100,
+ total: 0,
+});
+const total = ref(0);
+const { form: searchForm } = useFormData({
+ searchText: undefined,
+ paymentDate: [],
+ paymentDateStart: undefined,
+ paymentDateEnd: undefined,
+});
// 鏌ヨ鍒楄〃
/** 鎼滅储鎸夐挳鎿嶄綔 */
const handleQuery = () => {
- page.current = 1
- getList()
-}
-const pagination = ({ current, limit }) => {
- page.current = current;
- page.size = limit;
- getList()
-}
+ page.current = 1;
+ getList();
+};
+const pagination = (obj) => {
+ page.current = obj.page;
+ page.size = obj.limit;
+ getList();
+};
const getList = () => {
- tableLoading.value = true
- paymentHistoryList({ ...searchForm.value, ...page }).then(res => {
- tableLoading.value = false
- tableData.value = res.rows
- total.value = res.total
- })
-}
+ tableLoading.value = true;
+ const { paymentDate, ...rest } = searchForm;
+ paymentHistoryListPage({ ...rest, ...page }).then((res) => {
+ tableLoading.value = false;
+ tableData.value = res.records;
+ page.total = res.total;
+ });
+};
// 瀛愯〃鍚堣鏂规硶
const summarizeMainTable1 = (param) => {
- return proxy.summarizeTable(param, ['currentPaymentAmount'], {
+ return proxy.summarizeTable(param, ["currentPaymentAmount"], {
ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
});
};
// 琛ㄦ牸閫夋嫨鏁版嵁
const handleSelectionChange = (selection) => {
- selectedRows.value = selection
-}
-getList()
+ selectedRows.value = selection;
+};
+
+const changeDateRange = (date) => {
+ if (date) {
+ searchForm.paymentDateStart = date[0];
+ searchForm.paymentDateEnd = date[1];
+ getList();
+ }
+};
+
+const clearRange = () => {
+ searchForm.paymentDate = [];
+ searchForm.paymentDateStart = undefined;
+ searchForm.paymentDateEnd = undefined;
+ getList();
+};
+
+// 瀵煎嚭
+const handleExport = () => {
+ const { paymentDate, ...rest } = searchForm;
+ proxy.download("/purchase/paymentRegistration/export", { ...rest, ...page }, "浠樻娴佹按.xlsx");
+};
+
+onMounted(() => {
+ getList();
+});
</script>
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.table_list {
+ margin-top: unset;
+}
+</style>
--
Gitblit v1.9.3