• vue二次封装Element的table组件


                    

       欢迎扫码加群,一起讨论,共同学习成长!

    效果图:

     

    通过父子组件传值的方式

    父组件:

    <template>
      <div class='test'>
        <material :list="list" :columns="columns" :operates="operates"/>
      </div>
    </template>
      
    <script>
    import material from './table'
    export default {
      components:{
        material
      },
      data() {
        return {
          // 操作按钮
          operates:[
            {
              id:1,
              label:'管理',
              type:'info',
              method:(index,row)=>{
                this.handleManage(index, row)
              }
            },
            {
              id:1,
              label:'发布',
              type:'primary',
              method:(index,row)=>{
                this.handleRelease(index, row)
              }
            },
            {
              id:2,
              label:'编辑',
              type:'warning',
              method:(index,row)=>{
                this.handleEdit(index, row)
              }
            },
            {
              id:3,
              label:'删除',
              type:'danger',
              method:(index,row)=>{
                this.handleDel(index, row)
              }
            }
          ],
          columns:[
            {
              prop:'index',
              label:'序号',
              '80',
              align: 'center'
            },
            {
              prop:'code',
              '300',
              label:'产品编号',
              align: 'center'
            },
            {
              prop:'type',
              '200',
              label:'产品类型',
              align: 'center'
            },
            {
              prop:'name',
              '300',
              label:'产品名称',
              align: 'center'
            },
            {
              prop:'address',
              '200',
              label:'地区',
              align: 'center'
            },
            {
              prop:'status',
              '200',
              label:'状态',
              align: 'center'
            }
          ],
          list:[
            {
              name: "三房112901",
              address: "广东省",
              code: "zxj_3_f_n1129",
              type:'整装',
              status: '无效'
            },
            {
              name: "三房112901",
              address: "广东省",
              code: "zxj_3_f_n1129",
              type:'整装',
              status: '无效'
            },
            {
              name: "三房112901",
              address: "广东省",
              code: "zxj_3_f_n1129",
              type:'整装',
              status: '无效'
            },
            {
              name: "三房112901",
              address: "广东省",
              code: "zxj_3_f_n1129",
              type:'整装',
              status: '无效'
            },
            {
              name: "三房112901",
              address: "广东省",
              code: "zxj_3_f_n1129",
              type:'整装',
              status: '无效'
            }
          ]
        }
      },
      methods:{
        handleManage:(index,row)=>{
          console.log('管理index:'+index, row)
        },
        handleRelease:(index,row)=>{
          console.log('发布index:'+index, row)
        },
        handleEdit:(index,row)=>{
          console.log('编辑index:'+index, row)
        },
        handleDel:(index,row)=>{
          console.log('删除index:'+index, row)
        }
      }
    }
    </script>

    子组件:

     1 <template>
     2   <div class=''>
     3     <el-table :data="list" style=" 100%" border>
     4       <template v-for="(item,index) in columns">
     5         <el-table-column :prop="item.prop" :key='item.label' :label="item.label" :align="item.align" :width="item.width"></el-table-column>
     6       </template>
     7       <el-table-column label="操作" align="center">
     8         <template slot-scope="scope">
     9           <el-button size="mini" v-for="(btn,index) in operates" :type="btn.type" :key="index" @click.native.prevent="btn.method(index,scope.row)">{{btn.label}}</el-button>
    10         </template>
    11       </el-table-column>
    12     </el-table>
    13   </div>
    14 </template>
    15   
    16 <script>
    17 export default {
    18   props:{
    19     list:{
    20       type:Array,
    21       default:[]
    22     },
    23     columns:{
    24       type:Array,
    25       default:[]
    26     },
    27     operates:{}
    28   }
    29 }
    30 </script>
  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/CinderellaStory/p/11958677.html
Copyright © 2020-2023  润新知