From 76a985e3d790e506eef36c4df7442a95db0b29a3 Mon Sep 17 00:00:00 2001
From: 曹睿 <360930172@qq.com>
Date: 星期一, 23 六月 2025 16:48:00 +0800
Subject: [PATCH] feat: 完成设备台账

---
 src/views/salesManagement/receiptPayment/index.vue        |   32 +-
 src/api/monitor/job.js                                    |   65 +++---
 src/hooks/useModal.js                                     |   42 ++++
 src/views/inventoryManagement/issueManagement/index.vue   |    2 
 src/views/procurementManagement/invoiceEntry/index.vue    |   32 ++
 src/views/procurementManagement/paymentEntry/index.vue    |    1 
 src/views/salesManagement/invoiceRegistration/index.vue   |    4 
 src/api/equipmentManagement/ledger.js                     |   37 +++
 src/views/equipmentManagement/ledger/Form.vue             |  137 +++++++++++++
 src/views/salesManagement/invoiceLedger/index.vue         |    2 
 src/views/inventoryManagement/receiptManagement/index.vue |    2 
 src/views/equipmentManagement/ledger/Modal.vue            |   60 ++++++
 src/views/inventoryManagement/stockManagement/index.vue   |    2 
 src/views/equipmentManagement/ledger/index.vue            |  129 +++++++++++-
 14 files changed, 465 insertions(+), 82 deletions(-)

diff --git a/src/api/equipmentManagement/ledger.js b/src/api/equipmentManagement/ledger.js
new file mode 100644
index 0000000..1eac3e7
--- /dev/null
+++ b/src/api/equipmentManagement/ledger.js
@@ -0,0 +1,37 @@
+import request from "@/utils/request";
+
+export const getLedgerPage = (params) => {
+  return request({
+    url: "/device/ledger/page",
+    method: "get",
+    params,
+  });
+};
+export const getLedgerById = (id) => {
+  return request({
+    url: `/device/ledger/${id}`,
+    method: "get",
+  });
+};
+
+export const addLedger = (data) => {
+  return request({
+    url: "/device/ledger",
+    method: "post",
+    data,
+  });
+};
+export const editLedger = (data) => {
+  return request({
+    url: "/device/ledger",
+    method: "put",
+    data,
+  });
+};
+
+export const delLedger = (id) => {
+  return request({
+    url: `/device/ledger/${id}`,
+    method: "delete",
+  });
+};
diff --git a/src/api/monitor/job.js b/src/api/monitor/job.js
index b33ad3d..84b7b5a 100644
--- a/src/api/monitor/job.js
+++ b/src/api/monitor/job.js
@@ -1,71 +1,70 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 鏌ヨ瀹氭椂浠诲姟璋冨害鍒楄〃
 export function listJob(query) {
   return request({
-    url: '/monitor/job/list',
-    method: 'get',
-    params: query
-  })
+    url: "/monitor/job/list",
+    method: "get",
+    params: query,
+  });
 }
 
 // 鏌ヨ瀹氭椂浠诲姟璋冨害璇︾粏
 export function getJob(jobId) {
   return request({
-    url: '/monitor/job/' + jobId,
-    method: 'get'
-  })
+    url: "/monitor/job/" + jobId,
+    method: "get",
+  });
 }
 
 // 鏂板瀹氭椂浠诲姟璋冨害
 export function addJob(data) {
   return request({
-    url: '/monitor/job',
-    method: 'post',
-    data: data
-  })
+    url: "/monitor/job",
+    method: "post",
+    data: data,
+  });
 }
 
 // 淇敼瀹氭椂浠诲姟璋冨害
 export function updateJob(data) {
   return request({
-    url: '/monitor/job',
-    method: 'put',
-    data: data
-  })
+    url: "/monitor/job",
+    method: "put",
+    data: data,
+  });
 }
 
 // 鍒犻櫎瀹氭椂浠诲姟璋冨害
 export function delJob(jobId) {
   return request({
-    url: '/monitor/job/' + jobId,
-    method: 'delete'
-  })
+    url: "/monitor/job/" + jobId,
+    method: "delete",
+  });
 }
 
 // 浠诲姟鐘舵�佷慨鏀�
 export function changeJobStatus(jobId, status) {
   const data = {
     jobId,
-    status
-  }
+    status,
+  };
   return request({
-    url: '/monitor/job/changeStatus',
-    method: 'put',
-    data: data
-  })
+    url: "/monitor/job/changeStatus",
+    method: "put",
+    data: data,
+  });
 }
-
 
 // 瀹氭椂浠诲姟绔嬪嵆鎵ц涓�娆�
 export function runJob(jobId, jobGroup) {
   const data = {
     jobId,
-    jobGroup
-  }
+    jobGroup,
+  };
   return request({
-    url: '/monitor/job/run',
-    method: 'put',
-    data: data
-  })
-}
\ No newline at end of file
+    url: "/monitor/job/run",
+    method: "put",
+    data: data,
+  });
+}
diff --git a/src/hooks/useModal.js b/src/hooks/useModal.js
new file mode 100644
index 0000000..12d945c
--- /dev/null
+++ b/src/hooks/useModal.js
@@ -0,0 +1,42 @@
+import { ref } from "vue";
+export function useModal(options) {
+  const id = ref();
+  const visible = ref(false);
+  const loading = ref(false);
+  const modalOptions = ref({});
+
+  const openModal = (e) => {
+    id.value = e;
+    modalOptions.value = {
+      title: e ? "缂栬緫璁惧鍙拌处" : "鏂板璁惧鍙拌处",
+      content: "纭畾鎵ц姝ゆ搷浣滃悧锛�",
+      confirmText: "纭畾",
+      cancelText: "鍙栨秷",
+      ...options,
+    };
+    visible.value = true;
+  };
+
+  // 鍏抽棴妯℃�佹
+  const closeModal = () => {
+    visible.value = false;
+    loading.value = false;
+  };
+
+  // 纭鎿嶄綔
+  const handleConfirm = async (callback) => {
+    loading.value = true;
+    callback();
+    closeModal();
+  };
+
+  return {
+    id,
+    visible,
+    loading,
+    modalOptions,
+    openModal,
+    closeModal,
+    handleConfirm,
+  };
+}
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
new file mode 100644
index 0000000..f6cc2cb
--- /dev/null
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -0,0 +1,137 @@
+<template>
+  <el-form :model="form" label-width="100px">
+    <el-row :gutter="20">
+      <el-col :span="12">
+        <el-form-item label="璁惧鍚嶇О" prop="deviceName">
+          <el-input v-model="form.deviceName" placeholder="璇疯緭鍏ヨ澶囧悕绉�" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel">
+          <el-input v-model="form.deviceModel" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="渚涘簲鍟�" prop="supplierName">
+          <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="鍗曚綅" prop="unit">
+          <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="鏁伴噺" prop="number">
+          <el-input
+            v-model="form.number"
+            placeholder="璇疯緭鍏ユ暟閲�"
+            type="number"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit">
+          <el-input
+            v-model="form.taxIncludingPriceUnit"
+            placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
+            type="number"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal">
+          <el-input
+            v-model="form.taxIncludingPriceTotal"
+            placeholder="璇疯緭鍏ュ惈绋庢�讳环"
+            type="number"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="绋庣巼" prop="taxRate">
+          <el-input
+            v-model="form.taxRate"
+            placeholder="璇疯緭鍏ョ◣鐜�"
+            type="number"
+          >
+            <template #append> % </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal">
+          <el-input
+            v-model="form.unTaxIncludingPriceTotal"
+            placeholder="璇疯緭鍏ヤ笉鍚◣鎬讳环"
+            type="number"
+          />
+        </el-form-item>
+      </el-col>
+      <!-- <el-col :span="12">
+        <el-form-item label="褰曞叆浜�" prop="createUser">
+          <el-input v-model="form.createUser" placeholder="璇疯緭鍏ュ綍鍏ヤ汉" />
+        </el-form-item>
+      </el-col> -->
+      <el-col :span="12">
+        <el-form-item label="褰曞叆鏃ユ湡" prop="createTime">
+          <el-date-picker
+            style="width: 100%"
+            v-model="form.createTime"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            type="date"
+            placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
+            clearable
+          />
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script setup>
+import useFormData from "@/hooks/useFormData";
+// import useUserStore from "@/store/modules/user";
+import { getLedgerById } from "@/api/equipmentManagement/ledger";
+import dayjs from "dayjs";
+
+defineOptions({
+  name: "璁惧鍙拌处琛ㄥ崟",
+});
+
+const { form, resetForm } = useFormData({
+  deviceName: undefined, // 璁惧鍚嶇О
+  deviceModel: undefined, // 瑙勬牸鍨嬪彿
+  supplierName: undefined, // 渚涘簲鍟�
+  unit: undefined, // 鍗曚綅
+  number: undefined, // 鏁伴噺
+  taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
+  taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
+  taxRate: undefined, // 绋庣巼
+  unTaxIncludingPriceTotal: undefined, // 涓嶅惈绋庢�讳环
+  // createUser: useUserStore().nickName, // 褰曞叆浜�
+  createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 褰曞叆鏃ユ湡
+});
+
+const loadForm = async (id) => {
+  const { code, data } = await getLedgerById(id);
+  if (code == 200) {
+    form.deviceName = data.deviceName;
+    form.deviceModel = data.deviceModel;
+    form.supplierName = data.supplierName;
+    form.unit = data.unit;
+    form.number = data.number;
+    form.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
+    form.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
+    form.taxRate = data.taxRate;
+    form.unTaxIncludingPriceTotal = data.unTaxIncludingPriceTotal;
+    form.createTime = data.createTime;
+  }
+};
+
+defineExpose({
+  form,
+  loadForm,
+});
+</script>
diff --git a/src/views/equipmentManagement/ledger/Modal.vue b/src/views/equipmentManagement/ledger/Modal.vue
new file mode 100644
index 0000000..c5d34c5
--- /dev/null
+++ b/src/views/equipmentManagement/ledger/Modal.vue
@@ -0,0 +1,60 @@
+<template>
+  <el-dialog :title="modalOptions.title" v-model="visible">
+    <Form ref="formRef"></Form>
+    <template #footer>
+      <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
+      <el-button type="primary" @click="sendForm" :loading="loading">
+        {{ modalOptions.confirmText }}
+      </el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup>
+import { useModal } from "@/hooks/useModal";
+import { addLedger, editLedger } from "@/api/equipmentManagement/ledger";
+import Form from "./Form.vue";
+import { ElMessage } from "element-plus";
+
+defineOptions({
+  name: "璁惧鍙拌处鏂板缂栬緫",
+});
+
+const emits = defineEmits(["success"]);
+
+const formRef = ref();
+const {
+  id,
+  visible,
+  loading,
+  openModal,
+  modalOptions,
+  handleConfirm,
+  closeModal,
+} = useModal();
+
+const sendForm = async () => {
+  loading.value = true;
+  const { code } = id
+    ? await editLedger({ id: id.value, ...formRef.value.form })
+    : await addLedger(formRef.value.form);
+  if (code == 200) {
+    emits("success");
+    ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
+    closeModal();
+  } else {
+    loading.value = false;
+  }
+};
+
+const loadForm = async (id) => {
+  openModal(id);
+  await nextTick();
+  formRef.value.loadForm(id);
+};
+
+defineExpose({
+  openModal,
+  loadForm,
+});
+</script>
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index 4327e98..590bc01 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="filters" :inline="true">
+    <!-- <el-form :model="filters" :inline="true">
       <el-form-item label="鎼滅储">
         <el-input
           v-model="filters.searchText"
@@ -15,35 +15,59 @@
         <el-button type="primary" @click="getTableData">鎼滅储</el-button>
         <el-button @click="resetFilters">閲嶇疆</el-button>
       </el-form-item>
-    </el-form>
-    <PIMTable
-      :column="columns"
-      :tableData="dataList"
-      :page="{
-        current: pagination.currentPage,
-        size: pagination.pageSize,
-        total: pagination.total,
-      }"
-    >
-      <template #operation>
-        <el-button type="primary" text>缂栬緫</el-button>
-        <el-button type="danger" text>鍒犻櫎</el-button>
-      </template>
-    </PIMTable>
+    </el-form> -->
+    <div class="table_list">
+      <div class="actions">
+        <div></div>
+        <div>
+          <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
+          <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
+        </div>
+      </div>
+      <PIMTable
+        :column="columns"
+        :tableData="dataList"
+        :page="{
+          current: pagination.currentPage,
+          size: pagination.pageSize,
+          total: pagination.total,
+        }"
+      >
+        <template #operation="{ row }">
+          <el-button type="primary" text @click="edit(row.id)" icon="editPen">
+            缂栬緫
+          </el-button>
+          <el-button
+            type="danger"
+            text
+            icon="delete"
+            @click="deleteRow(row.id)"
+          >
+            鍒犻櫎
+          </el-button>
+        </template>
+      </PIMTable>
+    </div>
+    <Modal ref="modalRef" @success="getTableData"></Modal>
   </div>
 </template>
 
 <script setup>
 import { usePaginationApi } from "@/hooks/usePaginationApi";
 import { Search } from "@element-plus/icons-vue";
+import { getLedgerPage, delLedger } from "@/api/equipmentManagement/ledger";
+import { onMounted } from "vue";
+import Modal from "./Modal.vue";
+import { ElMessageBox } from "element-plus";
 
 defineOptions({
   name: "璁惧鍙拌处",
 });
 
+const modalRef = ref();
 const { filters, columns, dataList, pagination, getTableData, resetFilters } =
   usePaginationApi(
-    () => {},
+    getLedgerPage,
     {
       searchText: undefined,
     },
@@ -51,54 +75,123 @@
       {
         label: "璁惧鍚嶇О",
         align: "center",
+        prop: "deviceName",
       },
       {
         label: "瑙勬牸鍨嬪彿",
         align: "center",
+        prop: "deviceModel",
       },
       {
         label: "渚涘簲鍟�",
         align: "center",
+        prop: "supplierName",
       },
       {
         label: "鍗曚綅",
         align: "center",
+        prop: "unit",
       },
       {
         label: "鏁伴噺",
         align: "center",
+        prop: "number",
       },
       {
         label: "鍚◣鍗曚环",
         align: "center",
+        prop: "taxIncludingPriceUnit",
       },
       {
         label: "鍚◣鎬讳环",
         align: "center",
+        prop: "taxIncludingPriceTotal",
       },
       {
         label: "绋庣巼",
         align: "center",
+        prop: "taxRate",
       },
       {
         label: "涓嶅惈绋庢�讳环",
         align: "center",
+        prop: "unTaxIncludingPriceTotal",
       },
       {
         label: "褰曞叆浜�",
         align: "center",
+        prop: "createUser",
       },
       {
         label: "褰曞叆鏃ユ湡",
         align: "center",
+        prop: "createTime",
       },
       {
+        fixed: "right",
         label: "鎿嶄綔",
         dataType: "slot",
         slot: "operation",
         align: "center",
-        width: "150px",
+        width: "200px",
       },
     ]
   );
+
+const add = () => {
+  modalRef.value.openModal();
+};
+const edit = (id) => {
+  modalRef.value.loadForm(id);
+};
+
+const deleteRow = (id) => {
+  ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?", "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  }).then(async () => {
+    const { code } = await delLedger(id);
+    if (code == 200) {
+      ElMessage({
+        type: "success",
+        message: "鍒犻櫎鎴愬姛",
+      });
+      getTableData();
+    }
+  });
+};
+
+const handleOut = () => {
+  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      proxy.download(
+        `/device/ledger/export?ids=${ids}`,
+        {},
+        "璁惧鍙拌处妗f.xlsx"
+      );
+    })
+    .catch(() => {
+      proxy.$modal.msg("宸插彇娑�");
+    });
+};
+
+onMounted(() => {
+  getTableData();
+});
 </script>
+
+<style lang="scss" scoped>
+.table_list {
+  margin-top: unset;
+}
+.actions {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 10px;
+}
+</style>
diff --git a/src/views/inventoryManagement/issueManagement/index.vue b/src/views/inventoryManagement/issueManagement/index.vue
index 50b44fd..ef38d41 100644
--- a/src/views/inventoryManagement/issueManagement/index.vue
+++ b/src/views/inventoryManagement/issueManagement/index.vue
@@ -28,7 +28,7 @@
         <el-table-column label="鍏ュ簱鏁伴噺" prop="entryPersonName" width="90" show-overflow-tooltip />
         <el-table-column label="鍚◣鍗曚环" prop="entryDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍚◣鎬讳环" prop="executionDate" width="100" show-overflow-tooltip />
-        <el-table-column label="绋庣巼" prop="executionDate" width="80" show-overflow-tooltip />
+        <el-table-column label="绋庣巼(%)" prop="executionDate" width="80" show-overflow-tooltip />
         <el-table-column label="涓嶅惈绋庢�讳环" prop="executionDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍏ュ簱浜�" prop="executionDate" width="80" show-overflow-tooltip />
         <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center">
diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue
index bfe6200..7d5caec 100644
--- a/src/views/inventoryManagement/receiptManagement/index.vue
+++ b/src/views/inventoryManagement/receiptManagement/index.vue
@@ -28,7 +28,7 @@
         <el-table-column label="鍏ュ簱鏁伴噺" prop="entryPersonName" width="90" show-overflow-tooltip />
         <el-table-column label="鍚◣鍗曚环" prop="entryDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍚◣鎬讳环" prop="executionDate" width="100" show-overflow-tooltip />
-        <el-table-column label="绋庣巼" prop="executionDate" width="80" show-overflow-tooltip />
+        <el-table-column label="绋庣巼(%)" prop="executionDate" width="80" show-overflow-tooltip />
         <el-table-column label="涓嶅惈绋庢�讳环" prop="executionDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍏ュ簱浜�" prop="executionDate" width="80" show-overflow-tooltip />
         <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center">
diff --git a/src/views/inventoryManagement/stockManagement/index.vue b/src/views/inventoryManagement/stockManagement/index.vue
index f128717..cc7df7d 100644
--- a/src/views/inventoryManagement/stockManagement/index.vue
+++ b/src/views/inventoryManagement/stockManagement/index.vue
@@ -28,7 +28,7 @@
         <el-table-column label="鍑哄簱鏁伴噺" prop="entryPersonName" width="100" show-overflow-tooltip />
         <el-table-column label="鍚◣鍗曚环" prop="entryDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍚◣鎬讳环" prop="executionDate" width="100" show-overflow-tooltip />
-        <el-table-column label="绋庣巼" prop="executionDate" width="100" show-overflow-tooltip />
+        <el-table-column label="绋庣巼(%)" prop="executionDate" width="100" show-overflow-tooltip />
         <el-table-column label="涓嶅惈绋庢�讳环" prop="executionDate" width="100" show-overflow-tooltip />
         <el-table-column label="鍏ュ簱浜�" prop="executionDate" width="80" show-overflow-tooltip />
         <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center">
diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue
index d30d2d0..d9c9231 100644
--- a/src/views/procurementManagement/invoiceEntry/index.vue
+++ b/src/views/procurementManagement/invoiceEntry/index.vue
@@ -11,9 +11,13 @@
           clearable
           prefix-icon="Search"
         />
-        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
-          >鎼滅储</el-button
+        <el-button
+          type="primary"
+          @click="handleQuery"
+          style="margin-left: 10px"
         >
+          鎼滅储
+        </el-button>
       </div>
       <div>
         <el-button type="primary" @click="handleAdd">鏂板鐧昏</el-button>
@@ -108,6 +112,18 @@
         <el-table-column
           label="鍚堝悓閲戦(鍏�)"
           prop="contractAmount"
+          show-overflow-tooltip
+          :formatter="formattedNumber"
+        />
+        <el-table-column
+          label="宸插紑绁ㄩ噾棰�(鍏�)"
+          prop="receiptPaymentAmount"
+          show-overflow-tooltip
+          :formatter="formattedNumber"
+        />
+        <el-table-column
+          label="寰呭紑绁ㄩ噾棰�(鍏�)"
+          prop="unReceiptPaymentAmount"
           show-overflow-tooltip
           :formatter="formattedNumber"
         />
@@ -472,10 +488,14 @@
 };
 // 涓昏〃鍚堣鏂规硶
 const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(param, ["contractAmount"], {
-    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-  });
+  return proxy.summarizeTable(
+    param,
+    ["contractAmount", "receiptPaymentAmount", "unReceiptPaymentAmount"],
+    {
+      ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+      futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+    }
+  );
 };
 // 瀛愯〃鍚堣鏂规硶
 const summarizeChildrenTable = (param) => {
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
index 38a305e..59faa6d 100644
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ b/src/views/procurementManagement/paymentEntry/index.vue
@@ -184,7 +184,6 @@
           <el-col :span="12">
             <el-form-item label="浠樻鏃ユ湡锛�" prop="paymentDate">
               <el-date-picker
-                disabled
                 style="width: 100%"
                 v-model="form.paymentDate"
                 value-format="YYYY-MM-DD"
diff --git a/src/views/salesManagement/invoiceLedger/index.vue b/src/views/salesManagement/invoiceLedger/index.vue
index 98f28f3..7eae9dd 100644
--- a/src/views/salesManagement/invoiceLedger/index.vue
+++ b/src/views/salesManagement/invoiceLedger/index.vue
@@ -77,7 +77,7 @@
           show-overflow-tooltip
           :formatter="formattedNumber"
         />
-        <el-table-column label="绋庣巼%" prop="taxRate" show-overflow-tooltip />
+        <el-table-column label="绋庣巼(%)" prop="taxRate" show-overflow-tooltip />
         <el-table-column
           label="褰曞叆浜�"
           prop="invoicePerson"
diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
index a555b9d..402e93c 100644
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ b/src/views/salesManagement/invoiceRegistration/index.vue
@@ -77,7 +77,7 @@
               <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
               <el-table-column label="鍗曚綅" prop="unit" width="70" />
               <el-table-column label="鏁伴噺" prop="quantity" width="70" />
-              <el-table-column label="绋庣巼" prop="taxRate" width="70" />
+              <el-table-column label="绋庣巼(%)" prop="taxRate" width="70" />
               <el-table-column
                 label="鍚◣鍗曚环(鍏�)"
                 prop="taxInclusiveUnitPrice"
@@ -275,7 +275,7 @@
           <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
           <el-table-column label="鍗曚綅" prop="unit" />
           <el-table-column label="鏁伴噺" prop="quantity" width="70" />
-          <el-table-column label="绋庣巼" prop="taxRate" width="70" />
+          <el-table-column label="绋庣巼(%)" prop="taxRate" width="70" />
           <el-table-column
             label="鍚◣鍗曚环(鍏�)"
             prop="taxInclusiveUnitPrice"
diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue
index 0ed5d22..f1e4531 100644
--- a/src/views/salesManagement/receiptPayment/index.vue
+++ b/src/views/salesManagement/receiptPayment/index.vue
@@ -4,22 +4,6 @@
       <el-form :inline="true" :model="searchForm" style="width: 100%">
         <el-row justify="space-between">
           <el-col :span="24">
-            <el-form-item label="鍥炴鐧昏">
-              <el-input
-                v-model="searchForm.searchText"
-                placeholder="杈撳叆瀹㈡埛鍚嶇О/鍚堝悓鍙锋悳绱�"
-                clearable
-                prefix-icon="Search"
-                @change="handleQuery"
-              />
-            </el-form-item>
-            <el-form-item>
-              <el-checkbox
-                v-model="searchForm.status"
-                label="涓嶆樉绀哄緟鍥炴涓�0"
-                @change="handleQuery"
-              />
-            </el-form-item>
             <el-form-item label="瀹㈡埛鍚嶇О">
               <el-input
                 v-model="searchForm.customerName"
@@ -45,6 +29,13 @@
                 @change="handleQuery"
                 clearable
                 prefix-icon="Search"
+              />
+            </el-form-item>
+            <el-form-item>
+              <el-checkbox
+                v-model="searchForm.status"
+                label="涓嶆樉绀哄緟鍥炴涓�0"
+                @change="handleQuery"
               />
             </el-form-item>
             <el-form-item>
@@ -186,7 +177,7 @@
           show-overflow-tooltip
           :formatter="formattedNumber"
         />
-        <el-table-column label="绋庣巼" prop="taxRate" show-overflow-tooltip />
+        <el-table-column label="绋庣巼(%)" prop="taxRate" show-overflow-tooltip />
         <el-table-column
           label="鍥炴閲戦(鍏�)"
           prop="receiptPaymentAmountTotal"
@@ -582,7 +573,12 @@
     type: "warning",
   })
     .then(() => {
-      proxy.download("/receiptPayment/export", {}, "鍥炴鐧昏妗f.xlsx");
+      const ids = selectedRows.value.map((item) => item.id);
+      proxy.download(
+        `/receiptPayment/export`,
+        { ids: `${ids}` },
+        "鍥炴鐧昏妗f.xlsx"
+      );
     })
     .catch(() => {
       proxy.$modal.msg("宸插彇娑�");

--
Gitblit v1.9.3