DataRequirementsTab.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <div>
  3. <el-button
  4. type="primary"
  5. :disabled="isViewMode"
  6. @click="$emit('handleAddMaterial')"
  7. >
  8. 补充材料
  9. </el-button>
  10. <el-table
  11. style="margin-top: 20px"
  12. border
  13. :data="dataRequirements"
  14. size="mini"
  15. :show-header="true"
  16. :row-class-name="getRowClassName"
  17. >
  18. <el-table-column prop="seq" label="序号" width="80" align="center">
  19. <template slot-scope="scope">
  20. <span v-if="!scope.row.isCategoryHeader">
  21. {{ scope.row.seq || scope.row.index }}
  22. </span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column prop="informationName" label="报送资料" min-width="280">
  26. <template slot-scope="scope">
  27. <div v-if="scope.row.isCategoryHeader" class="category-header-cell">
  28. {{ scope.row.categoryName }}
  29. </div>
  30. <span v-else>{{ scope.row.informationName || '-' }}</span>
  31. </template>
  32. </el-table-column>
  33. <el-table-column
  34. prop="formatRequired"
  35. label="资料类型"
  36. width="130"
  37. align="center"
  38. >
  39. <template slot-scope="scope">
  40. <span v-if="!scope.row.isCategoryHeader">
  41. <span
  42. v-if="
  43. scope.row.formatRequired !== null &&
  44. scope.row.formatRequired !== undefined
  45. "
  46. >
  47. {{
  48. getDictName('formatAsk', String(scope.row.formatRequired)) ||
  49. scope.row.formatRequired
  50. }}
  51. </span>
  52. <span v-else>-</span>
  53. </span>
  54. </template>
  55. </el-table-column>
  56. <el-table-column
  57. prop="isRequired"
  58. label="是否必填"
  59. width="110"
  60. align="center"
  61. >
  62. <template slot-scope="scope">
  63. <span v-if="!scope.row.isCategoryHeader">
  64. {{ scope.row.isRequired === '1' ? '是' : '否' }}
  65. </span>
  66. </template>
  67. </el-table-column>
  68. <el-table-column
  69. prop="isUploaded"
  70. label="是否上传"
  71. width="110"
  72. align="center"
  73. >
  74. <template slot-scope="scope">
  75. <span v-if="!scope.row.isCategoryHeader">
  76. <span v-if="scope.row.isUploaded === true">已上传</span>
  77. <span v-else class="text-danger">未上传</span>
  78. </span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. prop="isRequired"
  83. label="审核状态"
  84. width="110"
  85. align="center"
  86. >
  87. <template slot-scope="scope">
  88. <span v-if="!scope.row.isCategoryHeader">
  89. <span
  90. v-if="
  91. scope.row.auditedStatus !== null &&
  92. scope.row.auditedStatus !== undefined
  93. "
  94. >
  95. {{
  96. getDictName('clshzt', String(scope.row.auditedStatus)) ||
  97. scope.row.auditedStatus
  98. }}
  99. </span>
  100. <span v-else>-</span>
  101. </span>
  102. </template>
  103. </el-table-column>
  104. <el-table-column prop="operation" label="操作" width="220" align="center">
  105. <template slot-scope="scope">
  106. <template v-if="!scope.row.isCategoryHeader">
  107. <template v-if="scope.row.formatRequired !== '3'">
  108. <el-button
  109. v-if="scope.row.isUploaded === true"
  110. type="text"
  111. size="small"
  112. @click="$emit('handleFileView', scope.row)"
  113. >
  114. 查看
  115. </el-button>
  116. <el-button
  117. v-if="scope.row.isUploaded === true"
  118. type="text"
  119. size="small"
  120. @click="$emit('handleFileDownload', scope.row)"
  121. >
  122. 下载
  123. </el-button>
  124. <el-button
  125. v-if="scope.row.isUploaded === false"
  126. type="text"
  127. size="small"
  128. :disabled="isViewMode"
  129. @click="$emit('handleFileUpload', scope.row)"
  130. >
  131. 上传
  132. </el-button>
  133. </template>
  134. <template v-if="scope.row.formatRequired == '3'">
  135. <el-button
  136. v-if="scope.row.isUploaded === true"
  137. type="text"
  138. size="small"
  139. @click="$emit('handleTemplateDownload', scope.row)"
  140. >
  141. 模版下载
  142. </el-button>
  143. <el-button
  144. v-if="scope.row.isUploaded === false"
  145. type="text"
  146. size="small"
  147. :disabled="isViewMode"
  148. @click="$emit('handleDataUpload', scope.row)"
  149. >
  150. 数据上传
  151. </el-button>
  152. </template>
  153. </template>
  154. </template>
  155. </el-table-column>
  156. </el-table>
  157. </div>
  158. </template>
  159. <script>
  160. export default {
  161. name: 'DataRequirementsTab',
  162. props: {
  163. dataRequirements: {
  164. type: Array,
  165. default: () => [],
  166. },
  167. isViewMode: {
  168. type: Boolean,
  169. default: false,
  170. },
  171. dictData: {
  172. type: Object,
  173. default: () => ({}),
  174. },
  175. },
  176. methods: {
  177. getRowClassName(data) {
  178. if (data.row.isCategoryHeader) {
  179. return 'category-header-row'
  180. }
  181. return ''
  182. },
  183. getDictName(dictType, dictKey) {
  184. const list = (this.dictData && this.dictData[dictType]) || []
  185. if (!Array.isArray(list) || dictKey === undefined || dictKey === null) {
  186. return ''
  187. }
  188. const item = list.find(
  189. (it) =>
  190. String(it.key) === String(dictKey) ||
  191. String(it.value) === String(dictKey)
  192. )
  193. return item ? item.name : ''
  194. },
  195. },
  196. }
  197. </script>
  198. <style scoped>
  199. .text-danger {
  200. color: #d9001b;
  201. }
  202. /* 类别头行样式 */
  203. .category-header-row {
  204. background-color: #f5f7fa !important;
  205. }
  206. .category-header-row td {
  207. background-color: #f5f7fa !important;
  208. padding: 12px 16px !important;
  209. }
  210. .category-header-cell {
  211. font-weight: 700;
  212. color: #303133;
  213. padding-left: 16px;
  214. }
  215. </style>