index3.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <div>
  3. <el-table :row-class-name="tableClassName" v-loading="loading" highlight-current-row :data="data"
  4. height="370px"
  5. :cell-style="{height:'40px',color:'#666666',fontWeight:'400'}"
  6. :header-cell-style="{height:'40px',color:'#333',fontWeight:'400',fontSize:'14px',background:'#EEEEEE'}" size="mini" @row-click="rowClick" style="width:100%" border>
  7. <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width" :fixed="col.columnname === fixedName?'right':false">
  8. <template slot-scope="scope">
  9. <!-- 自定义表格显示内容 -->
  10. <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
  11. <!-- 否则就是默认 -->
  12. <span v-else>{{scope.row[col.columnname]}}</span>
  13. <!-- 操作结构内容 -->
  14. <slot v-if="col.columnname === 'operation'" name="opreation" :data="scope.row"></slot>
  15. </template>
  16. </el-table-column>
  17. </el-table>
  18. </div>
  19. </template>
  20. <script>
  21. import {mapGetters} from "vuex"
  22. export default {
  23. /*
  24. layout:表结构数据;
  25. data:表渲染数据;
  26. custom:是否启用自定义结构;
  27. opwidth:操作列宽度
  28. */
  29. props:['layout','data','custom','height','fixedName'],
  30. data () {
  31. return {
  32. list:[],
  33. }
  34. },
  35. computed:{
  36. ...mapGetters({
  37. loading:'loading'
  38. })
  39. },
  40. methods:{
  41. rowClick (row) {
  42. this.$emit('rowClick',row)
  43. },
  44. tableClassName ({row,rowIndex}) {
  45. row.index = rowIndex
  46. }
  47. },
  48. mounted () {
  49. // this.listData()
  50. }
  51. }
  52. </script>
  53. <style scoped>
  54. </style>