repair-detail.vue 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div>
  3. <div class="my-title">查看</div>
  4. <div style="margin-left: 20px;margin-right: 20px">
  5. <e-desc title="基本信息" column="3" labelWidth="160px">
  6. <e-desc-item label="设备名称">{{dataForm.equipmentName}}</e-desc-item>
  7. <e-desc-item label="设备编号">{{dataForm.codeNumber}}</e-desc-item>
  8. <e-desc-item label="状态">{{(state = optionsState.find(t => t.value === dataForm.state))? state.label:""}}</e-desc-item>
  9. <e-desc-item label="报修人">{{dataForm.repairName}}</e-desc-item>
  10. <e-desc-item label="报修时间">{{dataForm.createTime}}</e-desc-item>
  11. <e-desc-item label="报修问题说明">{{dataForm.content}}</e-desc-item>
  12. <e-desc-item label="报修附件" span="3">
  13. <div v-for="(item, index) in dataForm.attachList" style="display: inline">
  14. <span v-if="index > 0">,</span>
  15. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  16. </div>
  17. </e-desc-item>
  18. <e-desc-item label="维修完成时间">{{dataForm.updateTime}}</e-desc-item>
  19. <e-desc-item label="维修记录说明">{{dataForm.maintenanceRecord}}</e-desc-item>
  20. <e-desc-item label="维修记录附件" span="3">
  21. <div v-for="(item, index) in dataForm.attachListRepair" style="display: inline">
  22. <span v-if="index > 0">,</span>
  23. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  24. </div>
  25. </e-desc-item>
  26. </e-desc>
  27. </div>
  28. <span slot="footer" class="dialog-footer">
  29. <el-button @click="onChose">返回</el-button>
  30. </span>
  31. <!-- 文件预览 -->
  32. <preview-component v-if="previewVisible" ref="preview"/>
  33. </div>
  34. </template>
  35. <script>
  36. import EDesc from '../common/e-desc'
  37. import EDescItem from '../common/e-desc-item'
  38. import {getRepairDetail} from '@/api/device'
  39. import {getDate} from '@/utils/date-util'
  40. import PreviewComponent from '@/views/modules/common/preview-component.vue'
  41. import {optionsEquipmentRepairState} from '@/utils/enums'
  42. export default {
  43. name: 'repair-detail',
  44. components: {
  45. PreviewComponent,
  46. EDesc,
  47. EDescItem
  48. },
  49. data () {
  50. return {
  51. visible: false,
  52. id: 0,
  53. dataForm: {},
  54. previewVisible: false,
  55. optionsState: optionsEquipmentRepairState
  56. }
  57. },
  58. methods: {
  59. getDate,
  60. onChose () {
  61. this.$emit('onChose')
  62. },
  63. async init (id) {
  64. this.visible = true
  65. this.id = id || 0
  66. this.dataForm = {}
  67. this.getDetails()
  68. },
  69. getDetails () {
  70. getRepairDetail(this.id).then(({data}) => {
  71. if (data && data.code === '200') {
  72. this.dataForm = data.data
  73. }
  74. })
  75. },
  76. previewFile (fileName, url) {
  77. this.previewVisible = true
  78. this.$nextTick(() => {
  79. this.$refs.preview.init(fileName, url)
  80. })
  81. }
  82. }
  83. }
  84. </script>
  85. <style scoped>
  86. .my-line{
  87. border-bottom: 1px solid #c0c4cc;
  88. margin-bottom: 10px;
  89. }
  90. .title{
  91. padding: 10px 0 ;
  92. }
  93. </style>