FileTable.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div class="left-wrapper">
  3. <div class="nb-table nb-table--bgc" style="height: calc(100vh - 150px);border-right: none;">
  4. <el-tabs v-model="activeName" @tab-click="handleClick">
  5. <el-tab-pane label="原始文件" name="first">1</el-tab-pane>
  6. <el-tab-pane label="生成文件" name="second">2</el-tab-pane>
  7. </el-tabs>
  8. <el-table element-loading-text="数据加载中" element-loading-spinner="el-icon-loading"
  9. :data="fileLists.result" border size="mini" :height="tableHeight" highlight-current-row
  10. tooltip-effect="dark" ref="fileListsTable" @row-click="loadTableHeader" style="width: 100%">
  11. <el-table-column prop="count" label="序号" width="50"></el-table-column>
  12. <el-table-column prop="filename" label="文件名称" :show-overflow-tooltip="true" min-width="120"></el-table-column>
  13. <el-table-column prop="generatedStr" label="类型" min-width="50"> </el-table-column>
  14. </el-table>
  15. <pagination :dataList="fileLists" :simple="true" :upParam="beforePayload" @loadMethod="loadFLTable"></pagination>
  16. </div>
  17. </div>
  18. </template>
  19. <script>
  20. import pagination from "@/components/Pagination.vue";
  21. export default {
  22. components: {
  23. pagination
  24. },
  25. data() {
  26. return {
  27. beforePayload:{
  28. page:1,
  29. pageSize:20,
  30. generated:'false'
  31. },
  32. tableHeight:680,
  33. activeName: 'second'
  34. };
  35. },
  36. computed: {
  37. fileLists: {
  38. get() {
  39. let fileLists = this.$store.getters.getFilesList;
  40. return fileLists;
  41. }
  42. }
  43. },
  44. mounted() {
  45. this.init()
  46. this.getTableHeight()
  47. window.addEventListener('resize', this.getTableHeight, false)
  48. },
  49. methods: {
  50. handleClick(tab) {
  51. let payload = {
  52. page: 1,
  53. pageSize: 20,
  54. generated: 'false'
  55. }
  56. if(this.activeName === 'first'){
  57. payload.generated = 'false'
  58. } else {
  59. payload.generated = 'true'
  60. }
  61. this.loadFLTable(payload)
  62. },
  63. getTableHeight(){
  64. this.tableHeight = document.documentElement.clientHeight - 200
  65. },
  66. filterTag(value, row) {
  67. return row.tag === value;
  68. },
  69. init(){
  70. let payload = {
  71. page:1,
  72. pageSize:20,
  73. generated:'false'
  74. }
  75. this.loadFLTable(payload)
  76. },
  77. loadFLTable(payload){
  78. const loading = this.$loading({
  79. lock: true,
  80. text: "请耐心等待,正在加载数据。。",
  81. spinner: "el-icon-loading",
  82. background: "rgba(0, 0, 0, 0.7)"
  83. });
  84. this.beforePayload = payload
  85. this.$store.dispatch("view_files_list", this.setModelId(payload)).then(data => {
  86. loading.close();
  87. if (data.code == 200) {
  88. this.$store.commit("set_files_list", data);
  89. } else {
  90. this.$message({ type: "error", message: data.message ? data.message : "加载失败" });
  91. }
  92. });
  93. },
  94. loadTableHeader(row, column, cell, event) {
  95. this.$store.commit('set_current_fileobj', row)
  96. let payload = {
  97. page:1,
  98. pageSize:20,
  99. fileId:row.id
  100. }
  101. this.$store.commit('set_up_search_sort_params', payload); // 保存文件基础信心
  102. this.loadSearchSortData(payload) // 加载文件内容
  103. this.loadTableHeaderDataById(payload) // 加载文件headers
  104. },
  105. // 搜索排序加载文件
  106. loadSearchSortData(payload){
  107. const loading = this.$loading({
  108. lock: true,
  109. text: "请耐心等待,正在加载数据。。",
  110. spinner: "el-icon-loading",
  111. background: "rgba(0, 0, 0, 0.7)"
  112. });
  113. let upSearchSortParams = this.$store.getters.getUpSearchSortParams;
  114. let currentFile = this.$store.getters.getCurrentFile;
  115. payload.fileId = currentFile.id;
  116. payload.orders = upSearchSortParams.orders;
  117. payload.values = upSearchSortParams.values;
  118. payload.mode = upSearchSortParams.mode;
  119. this.beforePayload = payload
  120. this.$store.dispatch('view_data_by_query', this.setModelId(payload)).then(data => {
  121. loading.close()
  122. if (data.code == 200) {
  123. this.$store.commit("set_file_content_by_id", data);
  124. } else {
  125. this.$message({ type: "error", message: data.message ? data.message : "加载失败" });
  126. }
  127. });
  128. },
  129. loadTableHeaderDataById(payload){
  130. const loading = this.$loading({
  131. lock: true,
  132. text: "请耐心等待。。",
  133. spinner: "el-icon-loading",
  134. background: "rgba(0, 0, 0, 0.7)"
  135. });
  136. let params = { fileId: payload.fileId }
  137. this.$store.commit('set_table_header', {})
  138. this.$store.dispatch("get_headers_by_id", this.setModelId(params)).then(data => {
  139. loading.close();
  140. if (data.code == 200) {
  141. this.$store.commit('set_table_header', data.result.fields)
  142. } else {
  143. this.$message({ type: "error", message: data.message ? data.message : "失败" });
  144. }
  145. });
  146. }
  147. }
  148. };
  149. </script>
  150. <style scoped>
  151. .left-wrapper {
  152. padding-top: 0px;
  153. }
  154. .clear-hint {
  155. float: right;
  156. color: #e33f3f;
  157. font-size: 14px;
  158. line-height: 56px;
  159. margin-right: 180px;
  160. }
  161. </style>