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