From e2c871b1be0ff8cfa61e55325095ee1c79932ddd Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期五, 30 一月 2026 17:01:19 +0800
Subject: [PATCH] tms 开发承运商运费结算模块

---
 src/views/inventoryManagement/procurementManagement/procurementInvoiceLedger/indexOld.vue |  313 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 313 insertions(+), 0 deletions(-)

diff --git a/src/views/inventoryManagement/procurementManagement/procurementInvoiceLedger/indexOld.vue b/src/views/inventoryManagement/procurementManagement/procurementInvoiceLedger/indexOld.vue
new file mode 100644
index 0000000..af38ab1
--- /dev/null
+++ b/src/views/inventoryManagement/procurementManagement/procurementInvoiceLedger/indexOld.vue
@@ -0,0 +1,313 @@
+<template>
+  <div class="app-container">
+    <div class="search_form">
+      <div>
+        <span class="search_title">閲囪喘鍚堝悓鍙凤細</span>
+        <el-input
+          v-model="searchForm.purchaseContractNumber"
+          style="width: 240px"
+          placeholder="璇疯緭鍏�"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+        <span class="search_title" style="margin-left: 10px">渚涘簲鍟嗭細</span>
+        <el-input
+          v-model="searchForm.supplierName"
+          style="width: 240px"
+          placeholder="璇疯緭鍏�"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+        <span class="search_title" style="margin-left: 10px">鏉ョエ鏃ユ湡锛�</span>
+        <el-date-picker
+          style="width: 240px"
+          v-model="searchForm.issueDate"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          clearable
+          @change="changeDateRange"
+          @clear="clearRange"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
+          >鎼滅储</el-button
+        >
+      </div>
+      <div>
+        <el-button @click="handleOut">瀵煎嚭</el-button>
+      </div>
+    </div>
+    <div class="table_list">
+      <el-table
+        :data="tableData"
+        border
+        v-loading="tableLoading"
+        :expand-row-keys="expandedRowKeys"
+        :row-key="(row) => row.id"
+        show-summary
+        :summary-method="summarizeMainTable"
+        @expand-change="expandChange"
+        height="calc(100vh - 18.5em)"
+        stripe
+      >
+        <el-table-column align="center" label="搴忓彿" type="index" width="55" />
+        <el-table-column type="expand">
+          <template #default="props">
+            <el-table
+              :data="props.row.children"
+              border
+              show-summary
+              :summary-method="summarizeChildrenTable"
+              stripe
+            >
+              <el-table-column
+                align="center"
+                label="搴忓彿"
+                type="index"
+                width="60"
+              />
+              <el-table-column label="浜у搧澶х被" prop="productCategory" />
+              <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+              <el-table-column label="鍗曚綅" prop="unit" />
+              <el-table-column label="鏁伴噺" prop="quantity" />
+              <el-table-column label="绋庣巼(%)" prop="taxRate" />
+              <el-table-column
+                label="鍚◣鍗曚环(鍏�)"
+                prop="taxInclusiveUnitPrice"
+                :formatter="formattedNumber"
+              />
+              <el-table-column
+                label="鍚◣鎬讳环(鍏�)"
+                prop="taxInclusiveTotalPrice"
+                :formatter="formattedNumber"
+              />
+              <el-table-column
+                label="涓嶅惈绋庢�讳环(鍏�)"
+                prop="taxExclusiveTotalPrice"
+                :formatter="formattedNumber"
+              />
+              <el-table-column label="鏈鏉ョエ鏁�" prop="ticketsNum" />
+              <el-table-column
+                label="鏈鏉ョエ閲戦(鍏�)"
+                prop="ticketsAmount"
+                :formatter="formattedNumber"
+              />
+              <el-table-column label="鏈潵绁ㄦ暟" prop="futureTickets" />
+              <el-table-column
+                label="鏈潵绁ㄩ噾棰�(鍏�)"
+                prop="futureTicketsAmount"
+                :formatter="formattedNumber"
+              />
+            </el-table>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="閲囪喘鍚堝悓鍙�"
+          prop="purchaseContractNumber"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="閿�鍞悎鍚屽彿"
+          prop="salesContractNo"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="渚涘簲鍟嗗悕绉�"
+          prop="supplierName"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="鍙戠エ鍙�"
+          prop="invoiceNumber"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="鍚堝悓閲戦(鍏�)"
+          prop="invoiceAmount"
+          show-overflow-tooltip
+          :formatter="formattedNumber"
+        />
+        <el-table-column label="寮�绁ㄤ汉" prop="issUer" show-overflow-tooltip />
+        <el-table-column
+          label="寮�绁ㄦ棩鏈�"
+          prop="issueDate"
+          show-overflow-tooltip
+        />
+      </el-table>
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        layout="total, sizes, prev, pager, next, jumper"
+        :page="page.current"
+        :limit="page.size"
+        @pagination="paginationChange"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup>
+import pagination from "@/components/PIMTable/Pagination.vue";
+import { ref } from "vue";
+import { Search } from "@element-plus/icons-vue";
+import { ElMessageBox } from "element-plus";
+import {
+  invoiceListPage,
+  productRecordList,
+} from "@/api/procurementManagement/procurementInvoiceLedger.js";
+import dayjs from "dayjs";
+
+const { proxy } = getCurrentInstance();
+const tableData = ref([]);
+const tableLoading = ref(false);
+const page = reactive({
+  current: 1,
+  size: 100,
+});
+const total = ref(0);
+// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
+const data = reactive({
+  searchForm: {
+    purchaseContractNumber: "",
+    supplierName: "",
+    issueDate: [
+      dayjs().startOf("month").format("YYYY-MM-DD"),
+      dayjs().endOf("month").format("YYYY-MM-DD"),
+    ],
+    issueDateStart: dayjs().startOf("month").format("YYYY-MM-DD"),
+    issueDateEnd: dayjs().endOf("month").format("YYYY-MM-DD"),
+  },
+  form: {
+    issueDate: "", // 寮�绁ㄦ棩鏈�
+    purchaseLedgerId: "",
+    purchaseLedgerNo: "",
+    issUerId: "", // 寮�绁ㄤ汉id
+    issUer: "", // 寮�绁ㄤ汉濮撳悕
+  },
+  rules: {
+    purchaseLedgerId: [
+      { required: true, message: "璇烽�夋嫨", trigger: "change" },
+    ],
+  },
+});
+const { searchForm } = toRefs(data);
+
+// 鏌ヨ鍒楄〃
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+const handleQuery = () => {
+  page.current = 1;
+  getList();
+};
+const paginationChange = (obj) => {
+  page.current = obj.page;
+  page.size = obj.limit;
+  getList();
+};
+const getList = () => {
+  tableLoading.value = true;
+  const { issueDate, ...rest } = searchForm.value;
+  invoiceListPage({ ...rest, ...page })
+    .then((res) => {
+      tableLoading.value = false;
+      tableData.value = res.records;
+      tableData.value.map((item) => {
+        item.children = [];
+      });
+      total.value = res.total;
+      expandedRowKeys.value = [];
+    })
+    .catch(() => {
+      tableLoading.value = false;
+    });
+};
+const formattedNumber = (row, column, cellValue) => {
+  return parseFloat(cellValue).toFixed(2);
+};
+// 琛ㄦ牸閫夋嫨鏁版嵁
+const expandedRowKeys = ref([]);
+// 灞曞紑琛�
+const expandChange = (row, expandedRows) => {
+  if (expandedRows.length > 0) {
+    expandedRowKeys.value = [];
+    try {
+      productRecordList({ id: row.id }).then((res) => {
+        const index = tableData.value.findIndex((item) => item.id === row.id);
+        if (index > -1) {
+          tableData.value[index].children = res;
+        }
+        expandedRowKeys.value.push(row.id);
+      });
+    } catch (error) {
+      console.log(error);
+    }
+  } else {
+    expandedRowKeys.value = [];
+  }
+};
+// 涓昏〃鍚堣鏂规硶
+const summarizeMainTable = (param) => {
+  return proxy.summarizeTable(param, ["invoiceAmount"], {
+    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+  });
+};
+// 瀛愯〃鍚堣鏂规硶
+const summarizeChildrenTable = (param) => {
+  return proxy.summarizeTable(
+    param,
+    [
+      "taxInclusiveUnitPrice",
+      "taxInclusiveTotalPrice",
+      "taxExclusiveTotalPrice",
+      "ticketsNum",
+      "ticketsAmount",
+      "futureTickets",
+      "futureTicketsAmount",
+    ],
+    {
+      ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+      futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+    }
+  );
+};
+
+// 瀵煎嚭
+const handleOut = () => {
+  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      proxy.download("/purchase/registration/export", {}, "鏉ョエ鐧昏.xlsx");
+    })
+    .catch(() => {
+      proxy.$modal.msg("宸插彇娑�");
+    });
+};
+
+const changeDateRange = (date) => {
+  if (date) {
+    searchForm.value.receiptPaymentDateStart = date[0];
+    searchForm.value.receiptPaymentDateEnd = date[1];
+    getList();
+  }
+};
+
+const clearRange = () => {
+  searchForm.value.issueDate = [];
+  searchForm.value.issueDateStart = undefined;
+  searchForm.value.issueDateEnd = undefined;
+  getList();
+};
+
+onMounted(() => {
+  getList();
+});
+</script>
+
+<style scoped lang="scss"></style>

--
Gitblit v1.9.3