From 26ec28bc8764a48b029a301effa4c7f7345b1d6b Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期六, 12 七月 2025 14:32:02 +0800
Subject: [PATCH] 1、删除无用模块并配置个性化新增方案 2、完善领用记录的查看功能等功能

---
 src/views/equipment/management/index.vue |  131 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 116 insertions(+), 15 deletions(-)

diff --git a/src/views/equipment/management/index.vue b/src/views/equipment/management/index.vue
index 2ceb04b..8c9d8be 100644
--- a/src/views/equipment/management/index.vue
+++ b/src/views/equipment/management/index.vue
@@ -30,8 +30,11 @@
 
       <!-- 鎿嶄綔鎸夐挳鍖� -->
       <el-row :gutter="24" class="table-toolbar">
-        <el-button :icon="Plus" type="primary" @click="handleAdd"
-          >鏂板缓</el-button
+        <el-button :icon="Plus" type="primary" v-show="activeTab === 'management'" @click="handleAdd"
+          >璁惧鏂板</el-button
+        >
+        <el-button :icon="Plus" type="primary" v-show="activeTab === 'equipmentRequisition'" @click="handleAdd"
+          >棰嗙敤</el-button
         >
         <el-button :icon="Delete" type="danger" @click="handleDelete"
           >鍒犻櫎</el-button
@@ -40,6 +43,7 @@
       <!-- 琛ㄦ牸缁勪欢 -->
       <div>
         <data-table
+          :showOverflowTooltip="false"
           :border="true"
           :columns="columns"
           :loading="loading"
@@ -51,6 +55,7 @@
           @selection-change="handleSelectionChange"
           :operations="['edit', 'viewRow']"
           :operationsWidth="200"
+          
         >
           <!-- 瀛楁鍚嶇О鍒楃殑鑷畾涔夋彃妲� - 鏄剧ず涓烘爣绛� -->
           <template
@@ -87,12 +92,29 @@
         @pagination="handPagination"
       />
       <managementDialog
+      v-if="activeTab == 'management'"
         v-model:copyForm="copyForm"
         v-model:managementFormDialog="manaDialog"
         :addOrEdit="addOrEdit"
         :form="form"
         @submit="getList"
       ></managementDialog>
+      <EquipmentRequisition
+        v-if="activeTab == 'equipmentRequisition'"
+        v-model="equipmentRequisitionDialog"
+        :formData="form"
+        :maxQuantity="getMaxQuantity()"
+        :addOrEdit="addOrEdit"
+        @submit="onEquipmentRequisitionSubmit"
+      />
+      <!-- <UsageRecord
+        v-if="activeTab == 'usageRecord'"
+        v-model:copyForm="copyForm"
+        v-model:usageRecordDialog="usageRecordDialog"
+        :addOrEdit="addOrEdit"
+        :form="form"
+        @submit="getList"
+      /> -->
     </el-card>
   </div>
 </template>
@@ -106,10 +128,13 @@
 import DataTable from "@/components/Table/ETable.vue";
 import Pagination from "@/components/Pagination";
 import managementDialog from "./mould/managementDialog.vue";
+import EquipmentRequisition from "./mould/equipmentRequisitionDialog.vue";
+import UsageRecord from "./mould/usageRecord.vue";
 
 // API 鏈嶅姟瀵煎叆
 import { useDelete } from "@/hooks/useDelete.js";
 import { getManagementList, delEquipment } from "@/api/equipment/management/index.js";
+import { getUsageRecordList } from "@/api/equipment/requisition/index.js";
 
 // 鍝嶅簲寮忕姸鎬佺鐞�
 const form = ref({});
@@ -117,6 +142,8 @@
 const copyForm = ref({});
 const addOrEdit = ref("add");
 const manaDialog = ref(false);
+const equipmentRequisitionDialog = ref(false);
+const usageRecordDialog = ref(false);
 const loading = ref(false);
 const activeTab = ref("management");
 const selectedRows = ref([]);
@@ -141,21 +168,59 @@
     api: getManagementList,
     deleteApi: delEquipment,
     columns: [
-      { prop: "equipmentId", label: "璁惧缂栧彿", minWidth: 100 },
+      { prop: "equipmentNo", label: "璁惧缂栧彿", minWidth: 100 },
       { prop: "equipmentName", label: "璁惧鍚嶇О", minWidth: 100 },
-      { prop: "quantity", label: "鏁伴噺", minWidth: 100 },
+      { prop: "quantity", label: "鎬绘暟閲�", minWidth: 100 },
+      { prop: "usedNo", label: "宸蹭娇鐢ㄦ暟閲�", minWidth: 100 },
       { prop: "specification", label: "瑙勬牸鍨嬪彿", minWidth: 100 },
-      { 
-        prop: "usageStatus", 
-        label: "浣跨敤鐘舵��", 
-        minWidth: 100,
-        formatter: (row) => row.usageStatus == 1 ? "鍚敤" : "绂佺敤"
-      },
-      { prop: "usingDepartment", label: "浣跨敤閮ㄩ棬", minWidth: 100 },
       { prop: "purchaseDate", label: "閲囪喘鏃ユ湡", minWidth: 100 },
       { prop: "purchasePrice", label: "閲囪喘浠锋牸", minWidth: 100 },
     ]
-  }
+  },
+  equipmentRequisition:{
+    label: "璁惧棰嗙敤",
+    searchPlaceholder: "璁惧缂栧彿/璁惧鍚嶇О/瑙勬牸鍨嬪彿",
+    showSearch: true,
+    api: getUsageRecordList,
+    deleteApi: null,
+    columns: [
+      { prop: "userName", label: "棰嗙敤浜�", minWidth: 100 },
+      { prop: "equipmentNo", label: "璁惧缂栧彿", minWidth: 100 },
+      { prop: "equipmentName", label: "璁惧鍚嶇О", minWidth: 100 },
+      { prop: "usageQuantity", label: "棰嗙敤鏁伴噺", minWidth: 100 },
+      { 
+        prop: "equipmentStatus", 
+        label: "浣跨敤鐘舵��", 
+        minWidth: 100,
+        formatter: (row) => row.usageStatus == 1 ? "浣跨敤涓�" : "宸插綊杩�"
+      },
+      { prop: "usageStartTime", label: "浣跨敤寮�濮嬫椂闂�", minWidth: 100 },
+      { prop: "usageEndTime", label: "浣跨敤缁撴潫鏃堕棿", minWidth: 100 },
+      { prop: "remarks", label: "澶囨敞", minWidth: 100 },
+    ]
+  },
+  // usageRecord:{
+  //   label: "棰嗙敤璁板綍",
+  //   searchPlaceholder: "璁惧缂栧彿/璁惧鍚嶇О/瑙勬牸鍨嬪彿",
+  //   showSearch: true,
+  //   api: getManagementList,
+  //   deleteApi: delEquipment,
+  //   columns: [
+  //     { prop: "equipmentId", label: "璁惧缂栧彿", minWidth: 100 },
+  //     { prop: "equipmentName", label: "璁惧鍚嶇О", minWidth: 100 },
+  //     { prop: "quantity", label: "鏁伴噺", minWidth: 100 },
+  //     { prop: "specification", label: "瑙勬牸鍨嬪彿", minWidth: 100 },
+  //     { 
+  //       prop: "usageStatus", 
+  //       label: "浣跨敤鐘舵��", 
+  //       minWidth: 100,
+  //       formatter: (row) => row.usageStatus == 1 ? "鍚敤" : "绂佺敤"
+  //     },
+  //     { prop: "purchaseDate", label: "閲囪喘鏃ユ湡", minWidth: 100 },
+  //     { prop: "purchasePrice", label: "閲囪喘浠锋牸", minWidth: 100 },
+  //   ]
+  // },
+
   // 鍚庣画鍙互鍦ㄨ繖閲屾坊鍔犳柊鐨勬爣绛鹃〉閰嶇疆
 };
 
@@ -209,7 +274,15 @@
   addOrEdit.value = "add";
   form.value = {};
   title.value = `鏂板${currentTabConfig.value.label}`;
-  manaDialog.value = true;
+  // 閫氱敤鐨�
+  copyForm.value = {};
+  if (activeTab.value === "equipmentRequisition") {
+    equipmentRequisitionDialog.value = true;
+  } else if (activeTab.value === "usageRecord") {
+    usageRecordDialog.value = true;
+  } else {
+    manaDialog.value = true;
+  }
 };
 
 const handleEdit = (row) => {
@@ -217,7 +290,13 @@
   addOrEdit.value = "edit";
   title.value = `缂栬緫${currentTabConfig.value.label}`;
   copyForm.value = { ...row };
-  manaDialog.value = true;
+  if (activeTab.value === "equipmentRequisition") {
+    equipmentRequisitionDialog.value = true;
+  } else if (activeTab.value === "usageRecord") {
+    usageRecordDialog.value = true;
+  } else {
+    manaDialog.value = true;
+  }
 };
 
 const handleView = (row) => {
@@ -225,7 +304,13 @@
   addOrEdit.value = "viewRow";
   title.value = `鏌ョ湅${currentTabConfig.value.label}`;
   copyForm.value = { ...row };
-  manaDialog.value = true;
+  if (activeTab.value === "equipmentRequisition") {
+    equipmentRequisitionDialog.value = true;
+  } else if (activeTab.value === "usageRecord") {
+    usageRecordDialog.value = true;
+  } else {
+    manaDialog.value = true;
+  }
 };
 
 const handPagination = (val) => {
@@ -250,6 +335,22 @@
   successText: "鍒犻櫎鎴愬姛",
 });
 
+// 鑾峰彇璁惧鏈�澶у彲棰嗙敤鏁伴噺
+const getMaxQuantity = () => {
+  if (form.value.equipmentId) {
+    const equipment = tableData.value.find(item => item.equipmentId === form.value.equipmentId);
+    return equipment ? equipment.quantity : null;
+  }
+  return null;
+};
+
+// 璁惧棰嗙敤寮圭獥鎻愪氦澶勭悊
+const onEquipmentRequisitionSubmit = (formData) => {
+  ElMessage.success('璁惧棰嗙敤鎴愬姛');
+  equipmentRequisitionDialog.value = false;
+  getList();
+};
+
 // 鏁版嵁鑾峰彇
 const getList = async () => {
   try {

--
Gitblit v1.9.3