From 3b0523e3ac0c855a5b37e2d5f0ccf28938f7a117 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 28 八月 2026 20:47:44 +0800
Subject: [PATCH] feat: 设备维修详情组件

---
 src/views/equipmentManagement/repair/Modal/RepairDetailModal.vue |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 src/views/equipmentManagement/repair/index.vue                   |    9 +++-
 2 files changed, 99 insertions(+), 3 deletions(-)

diff --git a/src/views/equipmentManagement/repair/Modal/RepairDetailModal.vue b/src/views/equipmentManagement/repair/Modal/RepairDetailModal.vue
new file mode 100644
index 0000000..f646ddc
--- /dev/null
+++ b/src/views/equipmentManagement/repair/Modal/RepairDetailModal.vue
@@ -0,0 +1,93 @@
+<template>
+  <el-dialog
+    v-model="visible"
+    title="璁惧鎶ヤ慨璇︽儏"
+    width="800px"
+    destroy-on-close
+    :close-on-click-modal="false"
+    @close="handleClose"
+  >
+    <el-descriptions border :column="2" class="repair-detail">
+      <el-descriptions-item label="璁惧鍚嶇О">{{ form.deviceName }}</el-descriptions-item>
+      <el-descriptions-item label="瑙勬牸鍨嬪彿">{{ form.deviceModel }}</el-descriptions-item>
+      
+      <el-descriptions-item label="鎶ヤ慨鏃ユ湡">{{ form.repairTime }}</el-descriptions-item>
+      <el-descriptions-item label="鎶ヤ慨浜�">{{ form.repairName }}</el-descriptions-item>
+      
+      <el-descriptions-item label="鎶ヤ慨椤圭洰">{{ form.machineryCategory }}</el-descriptions-item>
+      <el-descriptions-item label="缁翠慨浜�">{{ form.maintenanceName }}</el-descriptions-item>
+      
+      <el-descriptions-item label="鎶ヤ慨鐘舵��">
+        <el-tag v-if="form.status === 2" type="danger">澶辫触</el-tag>
+        <el-tag v-else-if="form.status === 1" type="success">宸查獙鏀�</el-tag>
+        <el-tag v-else-if="form.status === 3" type="info">寰呴獙鏀�</el-tag>
+        <el-tag v-else-if="form.status === 0" type="warning">寰呯淮淇�</el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item label="鏁呴殰鐜拌薄">{{ form.remark }}</el-descriptions-item>
+
+      <!-- 楠屾敹淇℃伅 -->
+      <template v-if="form.status === 1 || form.status === 3">
+        <el-descriptions-item label="楠屾敹浜�">{{ form.acceptanceName }}</el-descriptions-item>
+        <el-descriptions-item label="楠屾敹鏃堕棿">{{ form.acceptanceTime }}</el-descriptions-item>
+        <el-descriptions-item label="楠屾敹澶囨敞" :span="2">{{ form.acceptanceRemark }}</el-descriptions-item>
+      </template>
+
+      <!-- 闄勪欢 -->
+      <el-descriptions-item label="闄勪欢" :span="2">
+        <ImageUpload
+          v-if="form.storageBlobDTOs && form.storageBlobDTOs.length > 0"
+          v-model:file-list="form.storageBlobDTOs"
+          :disabled="true"
+        />
+        <span v-else style="color: #999;">鏃犻檮浠�</span>
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="handleClose">鍏抽棴</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup>
+import { ref, nextTick } from "vue";
+import { getRepairById } from "@/api/equipmentManagement/repair";
+import ImageUpload from "@/components/AttachmentUpload/image/index.vue";
+
+const visible = ref(false);
+const form = ref({});
+
+const openView = async (id) => {
+  visible.value = true;
+  await nextTick();
+  try {
+    const { data } = await getRepairById(id);
+    // 纭繚闄勪欢瀛楁鍚嶇О鍖归厤缁勪欢闇�瑕�
+    data.storageBlobDTOs = data.storageBlobVOs || [];
+    form.value = data || {};
+  } catch (error) {
+    console.error("Failed to load repair details:", error);
+  }
+};
+
+const handleClose = () => {
+  visible.value = false;
+  form.value = {};
+};
+
+defineExpose({
+  openView,
+});
+</script>
+
+<style scoped>
+.repair-detail :deep(.el-descriptions__label) {
+  width: 120px;
+  justify-content: flex-end;
+}
+.repair-detail :deep(.el-upload) {
+  display: none !important;
+}
+</style>
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index f1573cb..7cbff88 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -136,6 +136,7 @@
     </div>
     <RepairModal ref="repairModalRef"
                  @ok="getTableData" />
+    <RepairDetailModal ref="repairDetailModalRef" />
     <MaintainModal ref="maintainModalRef"
                    @ok="getTableData" />
     <AcceptanceModal ref="acceptanceModalRef"
@@ -158,6 +159,7 @@
   import { usePaginationApi } from "@/hooks/usePaginationApi";
   import { getRepairPage, delRepair } from "@/api/equipmentManagement/repair";
   import RepairModal from "./Modal/RepairModal.vue";
+  import RepairDetailModal from "./Modal/RepairDetailModal.vue";
   import { ElMessageBox, ElMessage } from "element-plus";
   import dayjs from "dayjs";
   import MaintainModal from "./Modal/MaintainModal.vue";
@@ -174,6 +176,7 @@
 
   // 妯℃�佹瀹炰緥
   const repairModalRef = ref();
+  const repairDetailModalRef = ref();
   const maintainModalRef = ref();
   const acceptanceModalRef = ref();
 
@@ -274,14 +277,14 @@
     return multipleList.value.some(item => item.status === 1);
   });
 
-  // 鏂板鎶ヤ慨
+  // 鏂板璁惧鎶ヤ慨
   const addRepair = () => {
     repairModalRef.value.openAdd();
   };
 
-  // 璇︽儏鏌ョ湅
+  // 鏌ョ湅璇︽儏
   const viewRepair = id => {
-    repairModalRef.value.openView(id);
+    repairDetailModalRef.value.openView(id);
   };
 
   // 缂栬緫鎶ヤ慨

--
Gitblit v1.9.3