Newer
Older
GDT_FRONT / src / views / device / repairDetail.vue
wangxitong on 9 Feb 2023 5 KB 0209
<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>