IStreamTable.vue 2.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
<template>
  <div class="eContainer-table-block">
    <el-table :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)" style="width: 100%" class="eContainer-table" :header-cell-style="{background: 'eef1f6', color: '#606266'}">
      <el-table-column
        v-for="(item, key) in tableColumns"
        :key="key"
				:prop="item.prop"
        :label="item.label"
        :width="item.width"
      ></el-table-column>
    </el-table>
		<el-pagination
      class="eContainer-pagination"
      layout="prev, pager, next, jumper"
      :page-sizes="pageSizes"
      :page-size="pageSize"
      :current-page="currentPage"
      :total="tableData.length"
			@size-change="sizeChange"
			@current-change="currentChange"
    ></el-pagination>
    <div class="paginationLable">当前显示第 {{(currentPage - 1) * pageSize + 1}}-{{currentPage * pageSize > tableData.length ? tableData.length : currentPage * pageSize}} 条,共 {{tableData.length}}</div>
  </div>
</template>

<script>
export default {
  props: {
    columns: {
      type: Array,
      default: () => {
        return [];
      },
    },
    list: {
      type: Array,
      default: () => {
        return [];
      },
    },
  },
  computed: {
    tableColumns() {
      const arr = [];
      for (let i = 0; i < this.columns.length; i++) {
        const column = this.columns[i];				
				const label = column.split("\"")[1]
				const newStr = column.replace(`\"${label}\"`, "label")
				const vals = newStr.split(" ")
				// "P VERTLINES TRUE"
潘际乾 committed
51
        if (vals.length <= 3) continue;
52 53 54
        arr.push({
          prop: vals[0],
          label: label,
潘际乾 committed
55 56
          // width: vals[3],
          width: "auto",
57 58 59 60 61 62 63 64 65
        });
      }
			return arr;
    },
    tableData() {
      return this.list.map((row) => {
				const res = {}
        const vals = row.split("\t");
				for (let i = 0; i < vals.length; i++) {
fukai committed
66
					res[`${i}`] = vals[i];
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
				}
				return res;
      });
    },
  },
  data() {
    return {
			currentPage: 1,
			pageSizes: [5, 10, 20, 30, 40, 50, 100],
			pageSize: 5
		};
  },
  methods: {
		sizeChange(size) {
			this.pageSize = size;
		},
		currentChange(currentPage) {
			this.currentPage = currentPage;
		}
	}
};
</script>

<style>
.eContainer-table-block .paginationLable{
 font-size: 12px;
 color: #808080;
 height: 26px;
 line-height: 26px;
 float:right;
 margin-top:20px;
}
.eContainer-table-block .el-table__body-wrapper {
  overflow: auto;
}
.el-table .warning-row {
  background: oldlace;
}
.el-table .success-row {
  background: #f0f9eb;
}
</style>