<template> <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" append-to-body @close="cancel"> <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="100px"> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="设备号"> <el-input v-model.trim="form.deviceCode" :disabled="dialogStatus!=='create'" type="text" placeholder="必填" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="设备名称"> <el-input v-model.trim="form.deviceName" :disabled="isEditMode" type="text" placeholder="必填" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="设备IP"> <el-input v-model.trim="form.ip" :disabled="isEditMode" type="text" placeholder="设备IP" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="维修总时间"> <el-input v-model.trim="form.totalRepairTime" :disabled="isEditMode" type="text" placeholder="必填"> <template slot="append">时</template> </el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="故障次数"> <el-input v-model.trim="form.failNumber" :disabled="isEditMode" type="text" placeholder="必填" > <template slot="append">次</template> </el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="MTTR"> <el-input v-model.trim="form.mttr" :disabled="isEditMode" type="text" placeholder="必填" > <template slot="append">时/次</template> </el-input> </el-form-item> </el-col> </el-row> <div style="margin: 10px;font-weight: bold;font-size: 15px">设备维修记录</div> <el-table v-loading="listLoading" ref="dataTable" :data="list" size="small" border max-height="300px"> <el-table-column v-for="column in columns" :key="column.value" :label="column.text" :width="column.width" :align="column.align" show-overflow-tooltip> <template slot-scope="scope"> <span>{{ scope.row[column.value] }}</span> </template> </el-table-column> <el-table-column label="操作" align="center" width="70"> <template slot-scope="scope"> <el-button type="text" @click="del(scope.row)" style="font-size: 12px">删除</el-button> </template> </el-table-column> </el-table> </el-form> </el-dialog> </template> <script> import { getRepairDetail, delRepairDetail } from '@/api/device' export default { name: 'RepairDetail', data() { return { dialogFormVisible: false, // 对话框是否显示 dialogStatus: '', // 对话框类型:create,update isEditMode: true, form: { createTime: '', deviceCode: '', deviceName: '', ip: '', failNumber: '', mttr: '', totalRepairTime: '' }, // 表单 list: [], columns: [ { text: '维修设备名称', value: 'deviceName', align: 'center' }, { text: '维修时间', value: 'repairTime', align: 'center', width: 250 }, { text: '维修说明', value: 'repairInstruction', align: 'center' }, { text: '提交人', value: 'submitter', align: 'center', width: 60 }, { text: '提交时间', value: 'createTime', align: 'center', width: 150 }, { text: '备注', value: 'remarks', align: 'center' } ], listLoading: false, textMap: { update: '编辑设备维修记录', create: '新增设备维修记录', detail: '设备维修详情' }, // 表头显示标题 btnLoading: false, // 保存按钮的加载中状态 listQuery: {}, rules: { } // 前端校验规则 } }, computed: { }, created() { }, methods: { // 初始化对话框 initDialog: function(dialogStatus, row = null) { this.dialogStatus = dialogStatus this.dialogFormVisible = true this.btnLoading = false if (dialogStatus === 'detail') { this.form = row this.listLoading = true this.list = [] this.listQuery = { devCode: row.deviceCode, devName: row.deviceName } getRepairDetail(this.listQuery).then(response => { this.list = response.data.map(item => { item.repairTime = item.repairStartTime + '-' + item.repairEndTime return item }) this.listLoading = false }) this.isEditMode = true } }, del(row) { this.$confirm( '确定要删除该条数据吗?', '确认操作', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' } ).then(() => { delRepairDetail(row.id).then(response => { if (response.code === 200) { this.$message.success('删除成功') this.listLoading = true this.list = [] getRepairDetail(this.listQuery).then(response => { this.list = response.data.map(item => { item.repairTime = item.repairStartTime + '-' + item.repairEndTime return item }) this.listLoading = false }) } }) }) }, cancel: function() { this.dialogFormVisible = false this.$emit('watchChild') } } } </script> <style rel="stylesheet/scss" lang="scss" scoped> .el-dialog{ width:700px } .el-select{ width: 100%; } </style>