first-detail.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div>
  3. <div class="my-title">查看</div>
  4. <div style="margin-left: 20px; margin-right: 20px">
  5. <!-- 工作流 -->
  6. <div v-show="dataForm.workFlowBusinessExt">
  7. <el-steps :active="activeNo" finish-status="success" align-center style="margin-bottom: 20px">
  8. <template v-for="(item, i) in stepList">
  9. <el-step
  10. :icon="item.icon"
  11. :title="item.title"
  12. :description="item.description"
  13. ></el-step>
  14. </template>
  15. </el-steps>
  16. <el-collapse style="margin-bottom: 20px">
  17. <el-collapse-item>
  18. <template slot="title">
  19. <span style="color: red">审批日志(展开查看更多):</span>
  20. </template>
  21. <template v-for="(item, i) in logList">
  22. <div>
  23. {{ ++i }}:{{ item.approverName }} {{ item.createTime }}
  24. {{ item.approvalValue }}
  25. </div>
  26. </template>
  27. </el-collapse-item>
  28. </el-collapse>
  29. </div>
  30. <div v-if="isFlow">
  31. <approve-component ref="approve" @approveFinished="approveFinished" />
  32. </div>
  33. <e-desc title="基本信息" column="3">
  34. <e-desc-item label="首件鉴定编码">{{ dataForm.authenticateCode }}</e-desc-item>
  35. <e-desc-item label="任务单编码">{{ dataForm.orderCode }}</e-desc-item>
  36. <e-desc-item label="物料名称">{{ dataForm.productName }}</e-desc-item>
  37. <e-desc-item label="物料编号">{{ dataForm.productNumber }}</e-desc-item>
  38. <e-desc-item label="批次号">{{ dataForm.batchNumber }}</e-desc-item>
  39. <e-desc-item label="评审状态">{{dataForm.approveState?approveStateOption.find(item => item.value === dataForm.approveState).label:''}}</e-desc-item>
  40. </e-desc>
  41. <e-desc label="首件生产流程记录表">
  42. <e-desc-item span="3" label="首件生产流程记录表">
  43. <div v-for="(item, index) in dataForm.attachList1" style="display: inline">
  44. <span v-if="index > 0">, </span>
  45. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  46. </div>
  47. </e-desc-item>
  48. </e-desc>
  49. <e-desc label="首件生产过程原始记录">
  50. <e-desc-item span="3" label="首件生产过程原始记录">
  51. <div v-for="(item, index) in dataForm.attachList2" style="display: inline">
  52. <span v-if="index > 0">, </span>
  53. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  54. </div>
  55. </e-desc-item>
  56. </e-desc>
  57. <e-desc label="首件鉴定检验报告">
  58. <e-desc-item span="3" label="首件鉴定检验报告">
  59. <div v-for="(item, index) in dataForm.attachList3" style="display: inline">
  60. <span v-if="index > 0">, </span>
  61. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  62. </div>
  63. </e-desc-item>
  64. </e-desc>
  65. <e-desc label="首件鉴定审查报告">
  66. <e-desc-item span="3" label="首件鉴定审查报告">
  67. <div v-for="(item, index) in dataForm.attachList4" style="display: inline">
  68. <span v-if="index > 0">, </span>
  69. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  70. </div>
  71. </e-desc-item>
  72. </e-desc>
  73. <e-desc label="首件鉴定评审结论">
  74. <e-desc-item span="3" label="首件鉴定评审结论">
  75. <div v-for="(item, index) in dataForm.attachList5" style="display: inline">
  76. <span v-if="index > 0">, </span>
  77. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  78. </div>
  79. </e-desc-item>
  80. </e-desc>
  81. </div>
  82. <span slot="footer" class="dialog-footer">
  83. <el-button @click="onChose">返回</el-button>
  84. </span>
  85. <!-- 文件预览 -->
  86. <preview-component v-if="previewVisible" ref="preview"/>
  87. </div>
  88. </template>
  89. <script>
  90. import {getFirstDetail} from '@/api/quality'
  91. import { dealStepData, dealStepLogs } from '@/api/util'
  92. import EDesc from '../common/e-desc'
  93. import EDescItem from '../common/e-desc-item'
  94. import ApproveComponent from '../common/approve-component'
  95. import UploadComponent from '../common/upload-component-v2'
  96. import {approveStateOption} from '@/utils/enums'
  97. import PreviewComponent from '@/views/modules/common/preview-component'
  98. export default {
  99. name: 'first-detail',
  100. components: { PreviewComponent, EDesc, EDescItem, ApproveComponent, UploadComponent },
  101. data () {
  102. return {
  103. visible: false,
  104. isFlow: false,
  105. previewVisible: false,
  106. id: 0,
  107. approveStateOption: approveStateOption,
  108. dataForm: {},
  109. activeNo: 0,
  110. stepList: [],
  111. logList: []
  112. }
  113. },
  114. mounted () {},
  115. methods: {
  116. onChose () {
  117. this.$emit('onChose')
  118. },
  119. async init (id, businessType) {
  120. this.visible = true
  121. this.isFlow = !!(businessType && businessType !== '')
  122. this.id = id || 0
  123. this.dataForm = {
  124. workFlowBusinessExt: null
  125. }
  126. this.stepList = []
  127. this.logList = []
  128. this.getDetails(businessType)
  129. },
  130. getDetails (businessType) {
  131. getFirstDetail(this.id).then(({ data }) => {
  132. if (data && data.code === '200' && data.data) {
  133. this.dataForm = data.data
  134. // 流程图展示
  135. if (data.data.workFlowBusinessExt) {
  136. dealStepData(data.data.workFlowBusinessExt.workFlowProcessStepList, this.stepList)
  137. dealStepLogs(data.data.workFlowBusinessExt.processLogList, this.logList)
  138. }
  139. if (data.data.workFlowProcessStepList) {
  140. this.activeNo = Number(data.data.workFlowProcessStepList.activeNo)
  141. }
  142. // 初始化审批Form
  143. this.showApproveForm(businessType, this.id)
  144. }
  145. })
  146. },
  147. // 初始化审批Form
  148. showApproveForm (businessType, businessId) {
  149. if (this.isFlow) {
  150. this.$nextTick(() => {
  151. this.$refs.approve.init(businessType, businessId)
  152. })
  153. }
  154. },
  155. // 审批完成
  156. approveFinished () {
  157. this.onChose()
  158. this.$emit('approveFinished')
  159. },
  160. // 预览
  161. previewFile (fileName, url) {
  162. this.previewVisible = true
  163. this.$nextTick(() => {
  164. this.$refs.preview.init(fileName, url)
  165. })
  166. }
  167. }
  168. }
  169. </script>
  170. <style lang="scss" scoped>
  171. </style>