阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
6.3 KiB

4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
  1. <template>
  2. <!-- 详情 -->
  3. <el-dialog :title="detialTitle" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="detialVisible" @opened="opened">
  4. <div class="setting-dialog">
  5. <ul v-if="inventType!==7" class="hitch-info">
  6. <li><span>标题</span>{{ rowCurrent && rowCurrent.title }}</li>
  7. <li><span>申请时间</span>{{ rowCurrent && rowCurrent.createTime }}</li>
  8. <li><span>申请人</span>{{ rowCurrent && rowCurrent.applicant }}</li>
  9. <li><span>申请部门</span>{{ rowCurrent && rowCurrent.deptsName }}</li>
  10. <li><span>申请理由</span>{{ rowCurrent && rowCurrent.reason }}</li>
  11. <li v-if="inventType===6"><span>移交类型</span>内部移交</li>
  12. <li><span>完成时间</span>{{ rowCurrent && rowCurrent.completeTime }}</li>
  13. <li><span>审批意见</span>{{ rowCurrent && rowCurrent.opinion }}</li>
  14. <li class="state-list">
  15. <span v-if="rowCurrent && rowCurrent.status === 1" class="row-state ing-state">进行中</span>
  16. <span v-if="rowCurrent && rowCurrent.status === 2" class="row-state case-cancel">已取消</span>
  17. <span v-if="rowCurrent && rowCurrent.status === 3" class="row-state end-state">已完成</span>
  18. <span v-if="rowCurrent && rowCurrent.status === 4" class="row-state cancel-state">不通过</span>
  19. </li>
  20. </ul>
  21. <ul v-else class="hitch-info">
  22. <li><span>包名</span>{{ rowCurrent && rowCurrent.title }}</li>
  23. <li><span>操作时间</span>{{ rowCurrent && rowCurrent.createTime }}</li>
  24. <li><span>操作人</span>{{ rowCurrent && rowCurrent.applicant }}</li>
  25. <li><span>导出方式</span>离线移交</li>
  26. <li><span>完成时间</span>{{ rowCurrent && rowCurrent.completeTime }}</li>
  27. <li><span>审批意见</span>{{ rowCurrent && rowCurrent.opinion }}</li>
  28. <li class="state-list">
  29. <span class="row-state end-state">导出成功</span>
  30. </li>
  31. </ul>
  32. <div v-if="inventType===7" style="display: flex; justify-content: flex-end; margin-bottom: 12px;">
  33. <el-button class="task-btn" @click="downloadFile"><i class="iconfont icon-xiazai" />下载文件</el-button>
  34. </div>
  35. <el-table ref="table" :data="tableData" style="width: 100%;" height="calc(100vh - 420px)">
  36. <el-table-column type="index" align="center" width="55" label="序号" />
  37. <el-table-column prop="fondsName" label="所属全宗" min-width="120" />
  38. <el-table-column prop="categoryName" label="门类名称" min-width="120" />
  39. <el-table-column prop="categoryLevel" label="整理方式">
  40. <template slot-scope="scope">
  41. <span>{{ scope.row.categoryLevel === 2 ? '案卷整理' : '按件整理' }}</span>
  42. </template>
  43. </el-table-column>
  44. <el-table-column prop="archiveNo" label="项目号/档号" min-width="280" show-overflow-tooltip />
  45. <el-table-column prop="maintitle" label="题名" min-width="160" show-overflow-tooltip />
  46. <el-table-column v-if="inventType===4" prop="reason2" label="成文日期" min-width="140" />
  47. <el-table-column v-if="inventType===4" prop="reason2" label="保管期限" min-width="120" />
  48. </el-table>
  49. </div>
  50. </el-dialog>
  51. </template>
  52. <script>
  53. import { FetchBusinessFlowDetails } from '@/api/archivesManage/library'
  54. import { downloadFile } from '@/utils/index'
  55. import { mapGetters } from 'vuex'
  56. import { getToken } from '@/utils/auth'
  57. export default {
  58. name: 'Detail',
  59. components: { },
  60. props: {
  61. inventType: {
  62. type: Number,
  63. default: 3
  64. }
  65. },
  66. data() {
  67. return {
  68. rowCurrent: null,
  69. detialVisible: false,
  70. baseInfo: null,
  71. tableData: []
  72. }
  73. },
  74. computed: {
  75. ...mapGetters([
  76. 'baseApi'
  77. ]),
  78. detialTitle() {
  79. if (this.inventType === 3) {
  80. return '开放清册详情'
  81. } else if (this.inventType === 4) {
  82. return '销毁清册详情'
  83. } else if (this.inventType === 6) {
  84. return '移交清册详情'
  85. } else if (this.inventType === 7) {
  86. return '导出任务详情'
  87. }
  88. return '开放清册详情'
  89. }
  90. },
  91. created() {
  92. },
  93. mounted() {
  94. },
  95. methods: {
  96. opened() {
  97. this.getBusinessFlowDetails()
  98. },
  99. getBusinessFlowDetails() {
  100. const params = {
  101. 'businessId': this.rowCurrent.id
  102. }
  103. FetchBusinessFlowDetails(params).then((res) => {
  104. if (res.code !== 500) {
  105. console.log(res)
  106. this.baseInfo = res.businessFlow
  107. this.tableData = res.details.content
  108. } else {
  109. this.$message({ message: '获取数据失败', type: 'error', offset: 8 })
  110. }
  111. }).catch(err => {
  112. console.log(err)
  113. })
  114. },
  115. // downloadFile() {
  116. // if (this.rowCurrent.zip_path) {
  117. // const url = this.baseApi + '/downloadFile' + this.rowCurrent.zip_path
  118. // fetch(url).then(res => res.blob()).then(blob => {
  119. // downloadFile(blob, this.rowCurrent.title, 'zip')
  120. // }).catch(() => {
  121. // this.$message({ message: '下载文件失败', type: 'error', offset: 8 })
  122. // })
  123. // } else {
  124. // this.$message({ message: '下载文件路径获取失败', type: 'error', offset: 8 })
  125. // }
  126. // }
  127. downloadFile() {
  128. // bucketType = 3 离线下载
  129. if (this.rowCurrent.zip_path) {
  130. const url = this.baseApi + '/api/minioUpload/getFile?filePath=' + this.rowCurrent.zip_path + '&bucketType=3'
  131. const fetchOptions = {
  132. method: 'GET',
  133. headers: {
  134. 'Authorization': getToken()
  135. }
  136. }
  137. fetch(url, fetchOptions).then(res => res.blob()).then(blob => {
  138. downloadFile(blob, this.rowCurrent.title, 'zip')
  139. this.downloading = false
  140. }).catch(() => {
  141. this.$message({ message: '下载文件失败', type: 'error', offset: 8 })
  142. this.downloading = false
  143. })
  144. } else {
  145. this.$message({ message: '下载文件路径获取失败', type: 'error', offset: 8 })
  146. }
  147. }
  148. }
  149. }
  150. </script>
  151. <style lang='scss' scoped>
  152. @import "~@/assets/styles/collect-reorganizi.scss";
  153. .row-state{
  154. font-style: normal;
  155. padding: 0 8px;
  156. }
  157. </style>