| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="defect-management"> |
| | | <!-- æä½æé® --> |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="showRegisterDialog = true">ç»è®°ç¼ºé·</el-button> |
| | | </div> |
| | | |
| | | <!-- 缺é·å表 --> |
| | | <el-table :data="defectList" style="width: 100%; margin-top: 10px;" border> |
| | | <el-table-column prop="deviceName" label="设å¤åç§°" width="180"></el-table-column> |
| | | <el-table-column prop="defectDescription" label="ç¼ºé·æè¿°" win-width="300"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" width="220"> |
| | | <template #default="{ row }"> |
| | | <el-tag :type="row.status === '严é缺é·' ? 'danger' : 'success'"> |
| | | {{ row.status }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" width="220"> |
| | | <template #default="{ row }"> |
| | | <el-button |
| | | v-if="row.status === '严é缺é·' || row.status === 'ä¸è¬ç¼ºé·'" |
| | | type="text" |
| | | @click="eliminateDefect(row)" |
| | | > |
| | | æ¶é¤ç¼ºé· |
| | | </el-button> |
| | | <!-- <el-button |
| | | v-if="row.status === '严é缺é·'" |
| | | type="text" |
| | | @click="transferToRepairOrder(row.id)" |
| | | > |
| | | 转维修å |
| | | </el-button> --> |
| | | <el-button type="text" @click="getLedger(row.deviceLedgerId)"> |
| | | æ¥çå°è´¦ |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- 缺é·ç»è®°å¯¹è¯æ¡ --> |
| | | <el-dialog title="ç»è®°è®¾å¤ç¼ºé·" v-model="showRegisterDialog" width="50%"> |
| | | <el-form :model="defectForm" :rules="defectRules" ref="defectFormRef" label-width="100px"> |
| | | <el-form-item label="设å¤åç§°" prop="deviceName"> |
| | | <el-select v-model="defectForm.deviceLedgerId" @change="setDeviceModel"> |
| | | <el-option |
| | | v-for="(item, index) in deviceOptions" |
| | | :key="index" |
| | | :label="item.deviceName" |
| | | :value="item.id" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç¼ºé·æè¿°" prop="defectDescription"> |
| | | <el-input type="textarea" v-model="defectForm.defectDescription"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç¶æ" prop="status"> |
| | | <el-radio-group v-model="defectForm.status"> |
| | | <el-radio label="æ£å¸¸">æ£å¸¸</el-radio> |
| | | <el-radio label="ä¸è¬ç¼ºé·">ä¸è¬ç¼ºé·</el-radio> |
| | | <el-radio label="严é缺é·">严é缺é·</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="showRegisterDialog = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="submitDefectForm">ç¡®å®</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 缺é·è®¾å¤å°è´¦å¯¹è¯æ¡ --> |
| | | <el-dialog title="缺é·è®¾å¤å°è´¦" v-model="showLedgerDialog" width="80%"> |
| | | <el-table :data="ledgerList" style="width: 100%; margin-top: 10px;" border> |
| | | <el-table-column prop="deviceName" label="设å¤åç§°"></el-table-column> |
| | | <el-table-column prop="defectDescription" label="ç¼ºé·æè¿°"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ"></el-table-column> |
| | | <el-table-column prop="eliminateTime" label="æ¶ç¼ºæ¶é´"></el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, reactive } from 'vue'; |
| | | import { ElMessage } from 'element-plus'; |
| | | import { getDeviceLedger } from "@/api/equipmentManagement/ledger"; |
| | | // åè®¾ä»¥ä¸æ¯å端æ¥å£ |
| | | import { |
| | | registerDefect, |
| | | getDefectList, |
| | | eliminateDefect as apiEliminateDefect, |
| | | getDefectLedger, |
| | | deleteDefect |
| | | } from '@/api/equipmentManagement/defectManagement'; |
| | | |
| | | // 缺é·å表 |
| | | const defectList = ref([]); |
| | | // ç»è®°å¯¹è¯æ¡æ¾ç¤ºç¶æ |
| | | const showRegisterDialog = ref(false); |
| | | // å°è´¦å¯¹è¯æ¡æ¾ç¤ºç¶æ |
| | | const showLedgerDialog = ref(false); |
| | | // 缺é·è¡¨å |
| | | const defectForm = reactive({ |
| | | deviceLedgerId: '', |
| | | defectDescription: '', |
| | | status: '', |
| | | }); |
| | | const deviceOptions = ref([]); |
| | | // 表åéªè¯è§å |
| | | const defectRules = reactive({ |
| | | deviceLedgerId: [{ required: true, message: '请è¾å
¥è®¾å¤åç§°', trigger: 'blur' }], |
| | | defectDescription: [{ required: true, message: '请è¾å
¥ç¼ºé·æè¿°', trigger: 'blur' }] |
| | | }); |
| | | // 表åå¼ç¨ |
| | | const defectFormRef = ref(null); |
| | | // å°è´¦å表 |
| | | const ledgerList = ref([]); |
| | | |
| | | const loadDeviceName = async () => { |
| | | const { data } = await getDeviceLedger(); |
| | | // console.log(data); |
| | | deviceOptions.value = data; |
| | | }; |
| | | |
| | | // è·å缺é·å表 |
| | | const fetchDefectList = async () => { |
| | | try { |
| | | const res = await getDefectList(); |
| | | if (res.code === 200) { |
| | | defectList.value = res.data.records; |
| | | } else { |
| | | ElMessage.error(res.message || 'è·å缺é·å表失败'); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('è·å缺é·å表失败'); |
| | | } |
| | | }; |
| | | |
| | | // æäº¤ç¼ºé·ç»è®°è¡¨å |
| | | const submitDefectForm = async () => { |
| | | if (!defectFormRef.value) return; |
| | | try { |
| | | await defectFormRef.value.validate(); |
| | | const res = await registerDefect(defectForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success('缺é·ç»è®°æå'); |
| | | showRegisterDialog.value = false; |
| | | fetchDefectList(); |
| | | } else { |
| | | ElMessage.error(res.message || '缺é·ç»è®°å¤±è´¥'); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('请填å宿´è¡¨åä¿¡æ¯'); |
| | | } |
| | | }; |
| | | |
| | | // æ¶é¤ç¼ºé· |
| | | const eliminateDefect = async (row) => { |
| | | |
| | | try { |
| | | const res = await apiEliminateDefect(row); |
| | | if (res.code === 200) { |
| | | ElMessage.success('ç¼ºé·æ¶é¤æå'); |
| | | fetchDefectList(); |
| | | } else { |
| | | ElMessage.error(res.message || 'ç¼ºé·æ¶é¤å¤±è´¥'); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('ç¼ºé·æ¶é¤å¤±è´¥'); |
| | | } |
| | | }; |
| | | |
| | | // // 转维修工å |
| | | // const transferToRepairOrder = async (id) => { |
| | | // try { |
| | | // const res = await transferToRepair(id); |
| | | // if (res.code === 200) { |
| | | // ElMessage.success('转维修工åæå'); |
| | | // } else { |
| | | // ElMessage.error(res.message || '转维修工å失败'); |
| | | // } |
| | | // } catch (error) { |
| | | // ElMessage.error('转维修工å失败'); |
| | | // } |
| | | // }; |
| | | |
| | | // è·å缺é·è®¾å¤å°è´¦ |
| | | const getLedger = async (deviceLedgerId) => { |
| | | try { |
| | | const res = await getDefectLedger(deviceLedgerId); |
| | | if (res.code === 200) { |
| | | ledgerList.value = res.data.records; |
| | | showLedgerDialog.value = true; |
| | | } else { |
| | | ElMessage.error(res.message || 'è·å缺é·è®¾å¤å°è´¦å¤±è´¥'); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('è·å缺é·è®¾å¤å°è´¦å¤±è´¥'); |
| | | } |
| | | }; |
| | | |
| | | // ç»ä»¶æè½½æ¶è·å缺é·å表 |
| | | const onMounted = () => { |
| | | fetchDefectList(); |
| | | loadDeviceName(); |
| | | }; |
| | | onMounted(); |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .defect-management { |
| | | padding: 20px; |
| | | } |
| | | |
| | | .actions { |
| | | margin-bottom: 10px; |
| | | } |
| | | </style> |