zouyu
6 天以前 1c0863efe062af3ebcdecb8c10568d779f5c8295
src/views/reportAnalysis/projectProfit/index.vue
@@ -2,11 +2,12 @@
  <div class="app-container">
    <el-form :model="filters" :inline="true" label-width="80px">
      <el-form-item label="客户名称">
        <el-input v-model="filters.customerName" placeholder="请输入客户名称" />
            <el-input v-model="filters.customerName" placeholder="请输入客户名称" clearable style="width: 240px"/>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="getTableData"> 搜索 </el-button>
        <el-button @click="resetFilters"> 重置 </el-button>
            <el-button @click="handleOut"> 导出 </el-button>
      </el-form-item>
    </el-form>
    <div class="table_list">
@@ -18,10 +19,10 @@
        :page="{
          current: pagination.currentPage,
          size: pagination.pageSize,
          total: pagination.total,
          total: pagination.total
        }"
        :isShowSummary="true"
        :summaryMethod="summaryMethod"
            :summaryMethod="summarizeMainTable"
        @pagination="changePage"
      ></PIMTable>
    </div>
@@ -31,8 +32,10 @@
<script setup>
import { usePaginationApi } from "@/hooks/usePaginationApi";
import { getPurchaseList } from "@/api/procurementManagement/projectProfit";
import { onMounted } from "vue";
import { summarizeTable } from "@/utils/summarizeTable";
import { onMounted, getCurrentInstance } from "vue";
import { ElMessageBox } from "element-plus";
const { proxy } = getCurrentInstance();
defineOptions({
  name: "项目利润",
@@ -64,11 +67,6 @@
      prop: "customerName",
    },
    {
      label: "项目名称",
      align: "center",
      prop: "projectName",
    },
    {
      label: "合同金额",
      align: "center",
      prop: "contractAmount",
@@ -88,25 +86,33 @@
      align: "center",
      prop: "balanceRatio",
    },
    {
      label: "增值税",
      align: "center",
      prop: "balanceAmount",
    },
  ]
);
const changePage = ({ page }) => {
const changePage = ({ page, limit }) => {
  pagination.currentPage = page;
   pagination.pageSize = limit;
  onCurrentChange(page);
};
// 合计方法
const summaryMethod = (param) => {
  return summarizeTable(
    param,
    ['contractAmount', 'purchaseAmount', 'balance', 'balanceAmount', 'balanceRatio'],
  );
// 主表合计方法
const summarizeMainTable = (param) => {
   return proxy.summarizeTable(param, ["contractAmount", "purchaseAmount", "balance"]);
};
// 导出
const handleOut = () => {
   ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
   })
      .then(() => {
         proxy.download("/purchase/report/export", {}, "项目利润.xlsx");
      })
      .catch(() => {
         proxy.$modal.msg("已取消");
      });
};
onMounted(() => {