DetailRepairOut.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <div>
  3. <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
  4. <a-row :gutter="48" slot="extra">
  5. <a-col :md="48" :sm="48">
  6. <span class="table-page-search-submitButtons" style="float: right">
  7. <a-button
  8. v-if="DictCache.VALUE.REPAIR_ENTRUST_STATUS && model.status === 1"
  9. style="margin-left: 8px"
  10. type="primary"
  11. @click="handleFinish()">完成</a-button>
  12. <a-button style="margin-left: 8px" @click="handleCancel">返回</a-button>
  13. </span>
  14. </a-col>
  15. </a-row>
  16. <a-layout>
  17. <a-layout-content style="background-color: rgb(255, 255, 255)">
  18. <a-divider orientation="left">委外基本信息</a-divider>
  19. <detail-list title="" :col="3">
  20. <detail-list-item term="委外单号">{{ model.entrustNo }}</detail-list-item>
  21. <detail-list-item term="工单号">{{ model.repairNo }}</detail-list-item>
  22. <detail-list-item term="委外类别">{{ outTypeMap[model.outType] }}</detail-list-item>
  23. <detail-list-item term="委外申请人">{{ model.entrustUserName }}</detail-list-item>
  24. <detail-list-item term="委外维修人">{{ model.repairUserName }}</detail-list-item>
  25. <detail-list-item term="设备名称">{{ model.sbName }}</detail-list-item>
  26. <detail-list-item term="设备编号">{{ model.sbNo }}</detail-list-item>
  27. <detail-list-item term="委外状态">
  28. <badge :text="entrustStatusMap[model.status]" :status="model.status === 1 ? 'processing' : 'success'"/>
  29. </detail-list-item>
  30. <detail-list-item term="创建时间">{{ model.createdTime }}</detail-list-item>
  31. </detail-list>
  32. <detail-list title="" :col="1">
  33. <detail-list-item term="委外原因">{{ model.reason }}</detail-list-item>
  34. </detail-list>
  35. <a-divider orientation="left" v-if="model.status === 2">完成信息</a-divider>
  36. <detail-list title="" :col="3" v-if="model.status === 2">
  37. <detail-list-item term="完成时间">{{ model.finishTime }}</detail-list-item>
  38. </detail-list>
  39. <detail-list title="" :col="1" v-if="model.status === 2">
  40. <detail-list-item term="维修情况">{{ model.finishRemark }}</detail-list-item>
  41. </detail-list>
  42. <detail-list title="完成图片:" :col="6" v-if="model.status === 2 && model.finishFileList && model.finishFileList.length > 0">
  43. <upload-image-detail :images-list="model.finishFileList"/>
  44. </detail-list>
  45. <div v-if="model.status === 2 && model.finishAttachmentList && model.finishAttachmentList.length > 0" style="margin-bottom: 16px;">
  46. <div style="font-weight: bold; margin-bottom: 8px; color: rgba(0, 0, 0, 0.85);">完成附件:</div>
  47. <div v-for="file in model.finishAttachmentList" :key="file.id" style="margin-bottom: 4px;">
  48. <a-icon type="paper-clip" />
  49. <a @click="handleDownloadFile(file)" style="margin-left: 4px;">{{ file.name }}</a>
  50. </div>
  51. </div>
  52. </a-layout-content>
  53. </a-layout>
  54. </a-card>
  55. <finish-form ref="finishForm" @ok="handleOk" />
  56. </div>
  57. </template>
  58. <script>
  59. import DetailList from '@/components/tools/DetailList'
  60. import { fetchRepairEntrust } from '@/api/repair/entrust'
  61. import FinishForm from './FinishOutForm'
  62. const DetailListItem = DetailList.Item
  63. export default {
  64. name: 'DetailRepairOut',
  65. components: {
  66. DetailList,
  67. DetailListItem,
  68. FinishForm
  69. },
  70. data () {
  71. return {
  72. confirmLoading: false,
  73. modalTitle: '委外详情',
  74. visible: false,
  75. outTypeMap: {},
  76. entrustStatusMap: {
  77. 1: '委外维修中',
  78. 2: '已完成'
  79. },
  80. model: {}
  81. }
  82. },
  83. created () {
  84. this.outTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_OUT_TYPE)
  85. },
  86. methods: {
  87. base (record) {
  88. this.visible = true
  89. this.model = record
  90. this.loadDetail(record.id)
  91. },
  92. loadDetail (id) {
  93. fetchRepairEntrust(id).then(res => {
  94. this.model = res.data
  95. })
  96. },
  97. handleDownloadFile (file) {
  98. const baseUrl = process.env.VUE_APP_API_BASE_URL || ''
  99. const link = document.createElement('a')
  100. link.href = baseUrl + file.url
  101. link.download = file.name || '下载'
  102. link.target = '_blank'
  103. document.body.appendChild(link)
  104. link.click()
  105. document.body.removeChild(link)
  106. },
  107. handleCancel () {
  108. this.visible = false
  109. this.confirmLoading = false
  110. this.$emit('ok')
  111. },
  112. handleFinish () {
  113. const modal = this.$refs.finishForm
  114. modal.base(this.model)
  115. },
  116. handleOk () {
  117. this.loadDetail(this.model.id)
  118. this.$emit('ok')
  119. }
  120. }
  121. }
  122. </script>