| src/views/equipmentManagement/upkeep/Form/RecordDetailDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/upkeep/Form/detailDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/upkeep/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/equipmentManagement/upkeep/Form/RecordDetailDia.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,99 @@ <template> <FormDialog v-model="dialogVisitable" title="ä¿å »è®°å½è¯¦æ " width="800px" operation-type="detail" @close="cancel" > <el-descriptions border :column="2"> <el-descriptions-item label="设å¤åç§°"> {{ detailData.deviceName || '--' }} </el-descriptions-item> <el-descriptions-item label="è§æ ¼åå·"> {{ detailData.deviceModel || '--' }} </el-descriptions-item> <el-descriptions-item label="计åä¿å »æ¥æ"> {{ formatDate(detailData.maintenancePlanTime) }} </el-descriptions-item> <el-descriptions-item label="å½å ¥äºº"> {{ detailData.createUserName || '--' }} </el-descriptions-item> <el-descriptions-item label="ä¿å »é¡¹ç®" :span="2"> {{ detailData.machineryCategory || '--' }} </el-descriptions-item> <el-descriptions-item label="å®é ä¿å »äºº"> {{ detailData.maintenanceActuallyName || '--' }} </el-descriptions-item> <el-descriptions-item label="å®é ä¿å »æ¥æ"> {{ formatDate(detailData.maintenanceActuallyTime) }} </el-descriptions-item> <el-descriptions-item label="ä¿å »ç»æ" :span="2"> {{ detailData.maintenanceResult || '--' }} </el-descriptions-item> <el-descriptions-item label="ç¶æ" :span="2"> <el-tag v-if="detailData.status === 2" type="danger">失败</el-tag> <el-tag v-else-if="detailData.status === 1" type="success">å®ç»</el-tag> <el-tag v-else type="warning">å¾ ä¿å »</el-tag> </el-descriptions-item> </el-descriptions> <div v-if="fileList && fileList.length > 0" class="image-section"> <div class="image-title">ä¿å »éä»¶(å¾ç)ï¼</div> <AttachmentUploadImage v-model:fileList="fileList" :disabled="true" /> </div> </FormDialog> </template> <script setup> import FormDialog from "@/components/Dialog/FormDialog.vue"; import { ref } from "vue"; import dayjs from "dayjs"; import { attachmentList } from "@/api/basicData/storageAttachment.js"; import AttachmentUploadImage from '@/components/AttachmentUpload/image/index.vue'; const dialogVisitable = ref(false); const detailData = ref({}); const fileList = ref([]); const formatDate = (date) => { return date ? dayjs(date).format("YYYY-MM-DD") : "--"; }; const openDialog = (row) => { dialogVisitable.value = true; detailData.value = { ...row }; fileList.value = []; if (row.id) { attachmentList({ recordType: 'device_maintenance', recordId: row.id, }).then(res => { if (res && res.data) { fileList.value = res.data || []; } }); } }; const cancel = () => { dialogVisitable.value = false; }; defineExpose({ openDialog }); </script> <style scoped> .image-section { margin-top: 20px; } .image-title { font-weight: bold; margin-bottom: 10px; color: #606266; } </style> src/views/equipmentManagement/upkeep/Form/detailDia.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,118 @@ <template> <FormDialog v-model="dialogVisitable" title="ä¿å »ä»»å¡è¯¦æ " width="800px" operation-type="detail" @close="cancel" > <el-descriptions border :column="2"> <el-descriptions-item label="设å¤åç§°"> {{ detailData.taskName || '--' }} </el-descriptions-item> <el-descriptions-item label="è§æ ¼åå·"> {{ detailData.deviceModel || '--' }} </el-descriptions-item> <el-descriptions-item label="å½å ¥äºº"> {{ detailData.registrant || '--' }} </el-descriptions-item> <el-descriptions-item label="ç»è®°æ¶é´"> {{ detailData.registrationDate || '--' }} </el-descriptions-item> <el-descriptions-item label="ä¿å »é¡¹ç®" :span="2"> {{ detailData.machineryCategory || '--' }} </el-descriptions-item> <el-descriptions-item label="ä¿å »äºº"> {{ detailData.maintenancePerson || '--' }} </el-descriptions-item> <el-descriptions-item label="ä»»å¡é¢ç"> {{ formatFrequencyType(detailData.frequencyType) }} </el-descriptions-item> <el-descriptions-item label="æ§è¡æ¶é´"> {{ formatFrequencyDetail(detailData.frequencyDetail) }} </el-descriptions-item> <el-descriptions-item label="宿¶ä»»å¡"> <el-tag :type="detailData.isActive === 1 ? 'success' : 'info'"> {{ detailData.isActive === 1 ? 'å¼å¯' : 'å ³é' }} </el-tag> </el-descriptions-item> <el-descriptions-item label="夿³¨" :span="2"> {{ detailData.remarks || '--' }} </el-descriptions-item> </el-descriptions> <div v-if="fileList && fileList.length > 0" class="image-section"> <div class="image-title">设å¤å¾çï¼</div> <AttachmentUploadImage v-model:fileList="fileList" :disabled="true" /> </div> </FormDialog> </template> <script setup> import FormDialog from "@/components/Dialog/FormDialog.vue"; import { ref } from "vue"; import { getLedgerById } from "@/api/equipmentManagement/ledger"; import AttachmentUploadImage from '@/components/AttachmentUpload/image/index.vue'; const dialogVisitable = ref(false); const detailData = ref({}); const fileList = ref([]); const formatFrequencyType = (type) => { const map = { DAILY: "æ¯æ¥", WEEKLY: "æ¯å¨", MONTHLY: "æ¯æ", QUARTERLY: "å£åº¦", }; return map[type] || "--"; }; const formatFrequencyDetail = (detail) => { if (!detail) return "--"; const replacements = { MON: "å¨ä¸", TUE: "å¨äº", WED: "å¨ä¸", THU: "å¨å", FRI: "å¨äº", SAT: "å¨å ", SUN: "卿¥", }; return detail.replace(/MON|TUE|WED|THU|FRI|SAT|SUN/g, match => replacements[match]); }; const openDialog = (row) => { dialogVisitable.value = true; detailData.value = { ...row }; fileList.value = []; if (row.taskId) { getLedgerById(row.taskId).then(res => { if (res.code === 200 && res.data) { fileList.value = res.data.storageBlobVOs || []; } }); } }; const cancel = () => { dialogVisitable.value = false; }; defineExpose({ openDialog }); </script> <style scoped> .image-section { margin-top: 20px; } .image-title { font-weight: bold; margin-bottom: 10px; color: #606266; } </style> src/views/equipmentManagement/upkeep/index.vue
@@ -78,6 +78,11 @@ <template #operation="{ row }"> <el-button type="primary" link @click="handleDetail(row)"> 详æ </el-button> <el-button type="primary" link @click="editScheduledTask(row)"> ç¼è¾ </el-button> @@ -177,6 +182,11 @@ type="warning">å¾ ä¿å »</el-tag> </template> <template #operation="{ row }"> <el-button type="primary" link @click="handleRecordDetail(row)"> 详æ </el-button> <!-- è¿ä¸ªåè½è·æ°å¢ä¿å »åè½ä¸æ¨¡ä¸æ ·ï¼æå¥æä¹ï¼ --> <!-- <el-button type="primary" @@ -219,6 +229,8 @@ @ok="getTableData" /> <FormDia ref="formDiaRef" @closeDia="getScheduledTableData" /> <DetailDia ref="detailDiaRef" /> <RecordDetailDia ref="recordDetailDiaRef" /> <FileList v-if="fileDialogVisible" v-model:visible="fileDialogVisible" :record-type="'device_maintenance'" @@ -241,6 +253,8 @@ import PlanModal from "./Form/PlanModal.vue"; import MaintenanceModal from "./Form/MaintenanceModal.vue"; import FormDia from "./Form/formDia.vue"; import DetailDia from "./Form/detailDia.vue"; import RecordDetailDia from "./Form/RecordDetailDia.vue"; import { getUpkeepPage, delUpkeep, @@ -263,6 +277,10 @@ const maintainModalRef = ref(); // 宿¶ä»»å¡å¼¹çªæ§å¶å¨ const formDiaRef = ref(); // 宿¶ä»»å¡è¯¦æ å¼¹çªæ§å¶å¨ const detailDiaRef = ref(); // ä¿å »è®°å½è¯¦æ å¼¹çªæ§å¶å¨ const recordDetailDiaRef = ref(); // éä»¶å¼¹çª const fileListDialogRef = ref(null); const fileDialogVisible = ref(false); @@ -314,7 +332,7 @@ { prop: "frequencyType", label: "颿¬¡", minWidth: 50, minWidth: 80, // PIMTable 使ç¨çæ¯ formatDataï¼è䏿¯ Element-Plus ç formatter formatData: cell => ({ @@ -371,7 +389,7 @@ dataType: "slot", slot: "operation", align: "center", width: "150px", width: "160px", }, ]); @@ -445,7 +463,7 @@ dataType: "slot", slot: "operation", align: "center", width: "350px", width: "250px", }, ]); @@ -503,6 +521,14 @@ if (row) { nextTick(() => { formDiaRef.value?.openDialog("edit", row); }); } }; const handleDetail = row => { if (row) { nextTick(() => { detailDiaRef.value?.openDialog(row); }); } }; @@ -578,6 +604,14 @@ maintainModalRef.value.open(row.id, row); }; const handleRecordDetail = row => { if (row) { nextTick(() => { recordDetailDiaRef.value?.openDialog(row); }); } }; const addPlan = () => { planModalRef.value.openModal(); };