From 45574a93cd079e20662dd2717765918a0066984f Mon Sep 17 00:00:00 2001
From: 曹睿 <360930172@qq.com>
Date: 星期四, 03 七月 2025 10:53:46 +0800
Subject: [PATCH] fix: 修复设备,基础数据分页不显示

---
 src/views/equipmentManagement/upkeep/index.vue             |  142 ++++++++-------
 src/views/basicData/supplierManage/index.vue               |    6 
 src/views/basicData/customerFile/index.vue                 |    4 
 src/views/basicData/product/index.vue                      |    5 
 src/views/equipmentManagement/repair/Modal/RepairModal.vue |    9 
 src/views/equipmentManagement/ledger/Modal.vue             |    9 
 src/views/equipmentManagement/repair/index.vue             |  143 ++++++++-------
 src/views/equipmentManagement/repair/Form/RepairForm.vue   |    6 
 src/views/equipmentManagement/ledger/index.vue             |  172 +++++++++++--------
 src/views/equipmentManagement/ledger/Form.vue              |   16 +
 src/views/equipmentManagement/upkeep/Form/PlanForm.vue     |    1 
 11 files changed, 297 insertions(+), 216 deletions(-)

diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue
index c4fa332..89330c6 100644
--- a/src/views/basicData/customerFile/index.vue
+++ b/src/views/basicData/customerFile/index.vue
@@ -34,7 +34,6 @@
         @selection-change="handleSelectionChange"
         :tableLoading="tableLoading"
         @pagination="pagination"
-        :total="total"
       ></PIMTable>
     </div>
     <el-dialog
@@ -312,6 +311,7 @@
 const page = reactive({
   current: 1,
   size: 10,
+  total: 0,
 });
 const total = ref(0);
 
@@ -383,7 +383,7 @@
   listCustomer({ ...searchForm.value, ...page }).then((res) => {
     tableLoading.value = false;
     tableData.value = res.records;
-    total.value = res.total;
+    page.total = res.total;
   });
 };
 // 琛ㄦ牸閫夋嫨鏁版嵁
diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index 6d31b8d..cf83ff4 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -91,7 +91,6 @@
         @selection-change="handleSelectionChange"
         :tableLoading="tableLoading"
         @pagination="pagination"
-        :total="total"
       ></PIMTable>
     </div>
     <el-dialog v-model="productDia" title="浜у搧" width="400px">
@@ -221,11 +220,11 @@
 const tableData = ref([]);
 const tableLoading = ref(false);
 const isShowButton = ref(false);
-const total = ref(0);
 const selectedRows = ref([]);
 const page = reactive({
   current: 1,
   size: 10,
+  total: 0,
 });
 const data = reactive({
   form: {
@@ -382,7 +381,7 @@
   }).then((res) => {
     console.log("res", res);
     tableData.value = res.records;
-    total.value = res.total;
+    page.total = res.total;
     tableLoading.value = false;
   });
 };
diff --git a/src/views/basicData/supplierManage/index.vue b/src/views/basicData/supplierManage/index.vue
index 5aaed78..1412e8e 100644
--- a/src/views/basicData/supplierManage/index.vue
+++ b/src/views/basicData/supplierManage/index.vue
@@ -35,8 +35,6 @@
         :isSelection="true"
         @selection-change="handleSelectionChange"
         :tableLoading="tableLoading"
-        @pagination="pagination"
-        :total="total"
       ></PIMTable>
     </div>
     <el-dialog
@@ -300,8 +298,8 @@
 const page = reactive({
   current: 1,
   size: 10,
+  total: 0,
 });
-const total = ref(0);
 
 // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
 const operationType = ref("");
@@ -359,7 +357,7 @@
   listSupplier({ ...searchForm.value, ...page }).then((res) => {
     tableLoading.value = false;
     tableData.value = res.data.records;
-    total.value = res.data.total;
+    page.total = res.data.total;
   });
 };
 const upload = reactive({
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 4b5308b..cb9f7e3 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -37,7 +37,9 @@
             v-model="form.taxIncludingPriceUnit"
             placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
             type="number"
+            maxlength="10"
             @change="mathNum"
+            @input="handleNumberInput"
           />
         </el-form-item>
       </el-col>
@@ -170,8 +172,22 @@
   }
 };
 
+const handleNumberInput = (value) => {
+  // 绉婚櫎鎵�鏈夐潪鏁板瓧瀛楃
+  let num = value.replace(/[^\d]/g, "");
+
+  // 闄愬埗闀垮害涓�10
+  if (num.length > 10) {
+    num = num.slice(0, 10);
+  }
+
+  // 鏇存柊鍊�
+  form.taxIncludingPriceUnit = num;
+};
+
 defineExpose({
   form,
   loadForm,
+  resetForm,
 });
 </script>
diff --git a/src/views/equipmentManagement/ledger/Modal.vue b/src/views/equipmentManagement/ledger/Modal.vue
index 7bfe46c..e9ed16a 100644
--- a/src/views/equipmentManagement/ledger/Modal.vue
+++ b/src/views/equipmentManagement/ledger/Modal.vue
@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :title="modalOptions.title" v-model="visible">
+  <el-dialog :title="modalOptions.title" v-model="visible" @close="close">
     <Form ref="formRef"></Form>
     <template #footer>
       <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
@@ -41,12 +41,17 @@
   if (code == 200) {
     emits("success");
     ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
-    closeModal();
+    close();
   } else {
     loading.value = false;
   }
 };
 
+const close = () => {
+  closeModal();
+  formRef.value.resetForm();
+};
+
 const loadForm = async (id) => {
   openModal(id);
   await nextTick();
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index 83c416e..fceba64 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -22,10 +22,19 @@
         <div>
           <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
           <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
+          <el-button
+            type="danger"
+            icon="Delete"
+            :disabled="multipleList.length <= 0"
+            @click="deleteRow(multipleList.map((item) => item.id))"
+          >
+            鎵归噺鍒犻櫎
+          </el-button>
         </div>
       </div>
       <PIMTable
         rowKey="id"
+        isSelection
         :column="columns"
         :tableData="dataList"
         :page="{
@@ -33,6 +42,8 @@
           size: pagination.pageSize,
           total: pagination.total,
         }"
+        @selection-change="handleSelectionChange"
+        @pagination="changePage"
       >
         <template #operation="{ row }">
           <el-button type="primary" text @click="edit(row.id)" icon="editPen">
@@ -55,7 +66,7 @@
 
 <script setup>
 import { usePaginationApi } from "@/hooks/usePaginationApi";
-import { Search } from "@element-plus/icons-vue";
+// import { Search } from "@element-plus/icons-vue";
 import { getLedgerPage, delLedger } from "@/api/equipmentManagement/ledger";
 import { onMounted, getCurrentInstance } from "vue";
 import Modal from "./Modal.vue";
@@ -65,80 +76,94 @@
   name: "璁惧鍙拌处",
 });
 
+// 琛ㄦ牸澶氶�夋閫変腑椤�
+const multipleList = ref([]);
 const { proxy } = getCurrentInstance();
 const modalRef = ref();
-const { filters, columns, dataList, pagination, getTableData, resetFilters } =
-  usePaginationApi(
-    getLedgerPage,
+const {
+  filters,
+  columns,
+  dataList,
+  pagination,
+  getTableData,
+  resetFilters,
+  onCurrentChange,
+} = usePaginationApi(
+  getLedgerPage,
+  {
+    searchText: undefined,
+  },
+  [
     {
-      searchText: undefined,
+      label: "璁惧鍚嶇О",
+      align: "center",
+      prop: "deviceName",
     },
-    [
-      {
-        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: "200px",
-      },
-    ]
-  );
+    {
+      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: "200px",
+    },
+  ]
+);
+
+// 澶氶�夊悗鍋氫粈涔�
+const handleSelectionChange = (selectionList) => {
+  multipleList.value = selectionList;
+};
 
 const add = () => {
   modalRef.value.openModal();
@@ -146,7 +171,10 @@
 const edit = (id) => {
   modalRef.value.loadForm(id);
 };
-
+const changePage = ({ page }) => {
+  pagination.currentPage = page;
+  onCurrentChange(page);
+};
 const deleteRow = (id) => {
   ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?", "鎻愮ず", {
     confirmButtonText: "纭畾",
diff --git a/src/views/equipmentManagement/repair/Form/RepairForm.vue b/src/views/equipmentManagement/repair/Form/RepairForm.vue
index 6ded5fe..fdca0af 100644
--- a/src/views/equipmentManagement/repair/Form/RepairForm.vue
+++ b/src/views/equipmentManagement/repair/Form/RepairForm.vue
@@ -97,9 +97,9 @@
   form.remark = data.remark;
 };
 
-onMounted(() => {
-  loadDeviceName();
-});
+// onMounted(() => {
+//   loadDeviceName();
+// });
 
 defineExpose({
   loadDeviceName,
diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index 586960d..3aba5fe 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -51,10 +51,17 @@
   loading.value = false;
 };
 
+const openAdd = async () => {
+  openModal();
+  await nextTick();
+  await repairFormRef.value.loadDeviceName();
+};
+
 const openEdit = async (id) => {
   const { data } = await getRepairById(id);
   openModal(id);
   await nextTick();
+  await repairFormRef.value.loadDeviceName();
   await repairFormRef.value.setForm(data);
 };
 
@@ -64,7 +71,7 @@
 };
 
 defineExpose({
-  openModal,
+  openAdd,
   openEdit,
 });
 </script>
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 2e75914..11679ba 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -36,6 +36,7 @@
           total: pagination.total,
         }"
         @selection-change="handleSelectionChange"
+        @pagination="changePage"
       >
         <template #statusRef="{ row }">
           <el-tag v-if="row.status === 1" type="success">瀹岀粨</el-tag>
@@ -87,72 +88,79 @@
 const multipleList = ref([]);
 
 // 琛ㄦ牸閽╁瓙
-const { filters, columns, dataList, pagination, getTableData, resetFilters } =
-  usePaginationApi(
-    getRepairPage,
+const {
+  filters,
+  columns,
+  dataList,
+  pagination,
+  getTableData,
+  resetFilters,
+  onCurrentChange,
+} = usePaginationApi(
+  getRepairPage,
+  {
+    searchText: undefined,
+  },
+  [
     {
-      searchText: undefined,
+      label: "璁惧鍚嶇О",
+      align: "center",
+      prop: "deviceName",
     },
-    [
-      {
-        label: "璁惧鍚嶇О",
-        align: "center",
-        prop: "deviceName",
-      },
-      {
-        label: "瑙勬牸鍨嬪彿",
-        align: "center",
-        prop: "deviceModel",
-      },
-      {
-        label: "鎶ヤ慨鏃ユ湡",
-        align: "center",
-        prop: "repairTime",
-        formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
-      },
-      {
-        label: "鎶ヤ慨浜�",
-        align: "center",
-        prop: "repairName",
-      },
-      {
-        label: "鏁呴殰鐜拌薄",
-        align: "center",
-        prop: "remark",
-      },
-      {
-        label: "缁翠慨浜�",
-        align: "center",
-        prop: "maintenanceName",
-      },
-      {
-        label: "缁翠慨缁撴灉",
-        align: "center",
-        prop: "maintenanceResult",
-      },
-      {
-        label: "缁翠慨鏃ユ湡",
-        align: "center",
-        prop: "maintenanceTime",
-        formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
-      },
-      {
-        label: "鐘舵��",
-        align: "center",
-        prop: "status",
-        dataType: "slot",
-        slot: "statusRef",
-      },
-      {
-        fixed: "right",
-        label: "鎿嶄綔",
-        dataType: "slot",
-        slot: "operation",
-        align: "center",
-        width: "200px",
-      },
-    ]
-  );
+    {
+      label: "瑙勬牸鍨嬪彿",
+      align: "center",
+      prop: "deviceModel",
+    },
+    {
+      label: "鎶ヤ慨鏃ユ湡",
+      align: "center",
+      prop: "repairTime",
+      formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
+    },
+    {
+      label: "鎶ヤ慨浜�",
+      align: "center",
+      prop: "repairName",
+    },
+    {
+      label: "鏁呴殰鐜拌薄",
+      align: "center",
+      prop: "remark",
+    },
+    {
+      label: "缁翠慨浜�",
+      align: "center",
+      prop: "maintenanceName",
+    },
+    {
+      label: "缁翠慨缁撴灉",
+      align: "center",
+      prop: "maintenanceResult",
+    },
+    {
+      label: "缁翠慨鏃ユ湡",
+      align: "center",
+      prop: "maintenanceTime",
+      formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
+    },
+    {
+      label: "鐘舵��",
+      align: "center",
+      prop: "status",
+      dataType: "slot",
+      slot: "statusRef",
+    },
+    {
+      fixed: "right",
+      label: "鎿嶄綔",
+      dataType: "slot",
+      slot: "operation",
+      align: "center",
+      width: "200px",
+    },
+  ]
+);
 
 // 澶氶�夊悗鍋氫粈涔�
 const handleSelectionChange = (selectionList) => {
@@ -161,7 +169,7 @@
 
 // 鏂板鎶ヤ慨
 const addRepair = () => {
-  repairModalRef.value.openModal();
+  repairModalRef.value.openAdd();
 };
 
 // 缂栬緫鎶ヤ慨
@@ -175,6 +183,11 @@
   maintainModalRef.value.open(row.id, row);
 };
 
+const changePage = ({ page }) => {
+  pagination.currentPage = page;
+  onCurrentChange(page);
+};
+
 // 鍗曡鍒犻櫎
 const delRepairByIds = async (ids) => {
   ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
diff --git a/src/views/equipmentManagement/upkeep/Form/PlanForm.vue b/src/views/equipmentManagement/upkeep/Form/PlanForm.vue
index a2bd2ce..1d94b68 100644
--- a/src/views/equipmentManagement/upkeep/Form/PlanForm.vue
+++ b/src/views/equipmentManagement/upkeep/Form/PlanForm.vue
@@ -39,6 +39,7 @@
 import useFormData from "@/hooks/useFormData";
 import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
 import { onMounted } from "vue";
+import dayjs from "dayjs";
 
 defineOptions({
   name: "璁″垝琛ㄥ崟",
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 5d3dcd2..b40da99 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -35,6 +35,7 @@
           total: pagination.total,
         }"
         @selection-change="handleSelectionChange"
+        @pagination="changePage"
       >
         <template #maintenanceResultRef="{ row }">
           <el-tag v-if="row.maintenanceResult === 1" type="success">
@@ -100,70 +101,78 @@
 };
 
 // 琛ㄦ牸閽╁瓙
-const { filters, columns, dataList, pagination, getTableData, resetFilters } =
-  usePaginationApi(getUpkeepPage, {}, [
-    {
-      label: "璁惧鍚嶇О",
-      align: "center",
-      prop: "deviceName",
-    },
-    {
-      label: "瑙勬牸鍨嬪彿",
-      align: "center",
-      prop: "deviceModel",
-    },
-    {
-      label: "璁″垝淇濆吇鏃ユ湡",
-      align: "center",
-      prop: "maintenancePlanTime",
-      formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
-    },
-    {
-      label: "褰曞叆浜�",
-      align: "center",
-      prop: "createUserName",
-    },
-    {
-      label: "褰曞叆鏃ユ湡",
-      align: "center",
-      prop: "createTime",
-      formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"),
-      width: 200,
-    },
-    {
-      label: "瀹為檯淇濆吇浜�",
-      align: "center",
-      prop: "maintenanceActuallyName",
-    },
-    {
-      label: "瀹為檯淇濆吇鏃ユ湡",
-      align: "center",
-      prop: "maintenanceActuallyTime",
-      formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"),
-    },
-    {
-      label: "淇濆吇缁撴灉",
-      align: "center",
-      prop: "maintenanceResult",
-      dataType: "slot",
-      slot: "maintenanceResultRef",
-    },
-    {
-      label: "鐘舵��",
-      align: "center",
-      prop: "status",
-      dataType: "slot",
-      slot: "statusRef",
-    },
-    {
-      fixed: "right",
-      label: "鎿嶄綔",
-      dataType: "slot",
-      slot: "operation",
-      align: "center",
-      width: "200px",
-    },
-  ]);
+const {
+  filters,
+  columns,
+  dataList,
+  pagination,
+  getTableData,
+  resetFilters,
+  onCurrentChange,
+} = usePaginationApi(getUpkeepPage, {}, [
+  {
+    label: "璁惧鍚嶇О",
+    align: "center",
+    prop: "deviceName",
+  },
+  {
+    label: "瑙勬牸鍨嬪彿",
+    align: "center",
+    prop: "deviceModel",
+  },
+  {
+    label: "璁″垝淇濆吇鏃ユ湡",
+    align: "center",
+    prop: "maintenancePlanTime",
+    formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
+  },
+  {
+    label: "褰曞叆浜�",
+    align: "center",
+    prop: "createUserName",
+  },
+  {
+    label: "褰曞叆鏃ユ湡",
+    align: "center",
+    prop: "createTime",
+    formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"),
+    width: 200,
+  },
+  {
+    label: "瀹為檯淇濆吇浜�",
+    align: "center",
+    prop: "maintenanceActuallyName",
+  },
+  {
+    label: "瀹為檯淇濆吇鏃ユ湡",
+    align: "center",
+    prop: "maintenanceActuallyTime",
+    formatData: (cell) =>
+      cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
+  },
+  {
+    label: "淇濆吇缁撴灉",
+    align: "center",
+    prop: "maintenanceResult",
+    dataType: "slot",
+    slot: "maintenanceResultRef",
+  },
+  {
+    label: "鐘舵��",
+    align: "center",
+    prop: "status",
+    dataType: "slot",
+    slot: "statusRef",
+  },
+  {
+    fixed: "right",
+    label: "鎿嶄綔",
+    dataType: "slot",
+    slot: "operation",
+    align: "center",
+    width: "200px",
+  },
+]);
 
 // 鏂板淇濆吇
 const addMaintain = () => {
@@ -181,6 +190,11 @@
   planModalRef.value.openEdit(id);
 };
 
+const changePage = ({ page }) => {
+  pagination.currentPage = page;
+  onCurrentChange(page);
+};
+
 // 鍗曡鍒犻櫎
 const delRepairByIds = async (ids) => {
   ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {

--
Gitblit v1.9.3