美文网首页
自定义element-ui table内容

自定义element-ui table内容

作者: kevision | 来源:发表于2020-07-25 13:26 被阅读0次

    本文参考:https://blog.csdn.net/qq_32610671/article/details/90731672

    cell-style自定义单元格字体样式

    image.png
    <el-table :data="tableData" tooltip-effect="dark"  @selection-change="handleSelectionChange"  :cell-style="cellStyle" border>
          <el-table-column  type="selection" width="55" :selectable="isDisabled"></el-table-column>
          <el-table-column label="确认" align="center" width="80">
            <template slot-scope="scope">
              <el-button  type="success" size="mini" :disabled="scope.row.confirm" 
                @click="confirmHandle(scope.row.pointId)"> 
                {{scope.row.confirm?'已确认':'确认'}}
             </el-button>
            </template>
          </el-table-column>
    <el-table />
    
    methods: {
          cellStyle(row,column,rowIndex,columnIndex){//根据报警级别显示颜色
            // console.log(row);
            // console.log(row.column);
            if(row.column.label==="告警级别"&& row.row.alarmLevel==="紧急告警"){
              return 'color:red'
            }else if(row.column.label==="告警级别"&& row.row.alarmLevel==="一般告警" ){
              return 'color:yellow'
            }
          }
        }
    

    render-header自定义表头

    <el-table-column prop="date" label="日期" sortable width="180" :render-header="renderHeaderDate">
    
    renderHeaderDate(){
            return (<div style="position:relative;top:16px;left:2px;">
              <i class="el-icon-time"></i>
              <span>日期</span>
              </div>)
          },
    

    效果


    image.png

    formatter 表格内容格式化

    <el-table size="small" :data="TableData.lists" :header-cell-style="headerStyle" border style="width: 100%">
          <el-table-column :align="TableData.align" prop="offer_id" label="套餐ID" min-width="200"></el-table-column>
          <el-table-column :align="TableData.align" prop="offer_name" label="套餐名称" min-width="250"></el-table-column>
          <el-table-column :align="TableData.align" prop="price" label="套餐价格" min-width="140"></el-table-column>
          <!--绑定formatter-->
          <el-table-column :align="TableData.align" prop="effect_type" label="类型" :formatter="typeFormatter" 
             min-width="180">
          </el-table-column>
    </el-table>
    
    typeFormatter: function(row, column) {
          switch (row.effect_type) {
            case "0":
              return "当天有效";
              break;
            case "1":
              return "当月有效";
              break;
            case "2":
              return "季度有效";
              break;
          }
    }
    

    slot自定义列模板

    通过 Scoped slot 可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据,用法参考 demo。

    <template>
      <el-table
        :data="tableData"
        style="width: 100%">
        <el-table-column
          label="日期"
          width="180">
          <template slot-scope="scope">
            <i class="el-icon-time"></i>
            <span style="margin-left: 10px">{{ scope.row.date }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="姓名"
          width="180">
          <template slot-scope="scope">
            <el-popover trigger="hover" placement="top">
              <p>姓名: {{ scope.row.name }}</p>
              <p>住址: {{ scope.row.address }}</p>
              <div slot="reference" class="name-wrapper">
                <el-tag size="medium">{{ scope.row.name }}</el-tag>
              </div>
            </el-popover>
          </template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button
              size="mini"
              @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
            <el-button
              size="mini"
              type="danger"
              @click="handleDelete(scope.$index, scope.row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </template>
    

    效果


    image.png

    v-for循环渲染表格内容

          colunmName: ['澳中线-悉尼-仓库', '澳中线-悉尼-仓库1'],
          totalNumber: 100,
          data: [{
            list: [
              {
                name: '澳中线-悉尼-仓库1',
                value: 1
              },
              {
                name: '澳中线-悉尼-仓库1',
                value: 1
              }
            ],
            userName: 'admin'
          }, {
            list: [
              {
                name: '澳中线-悉尼-仓库1',
                value: 1
              },
              {
                name: '澳中线-悉尼-仓库1',
                value: 1
              }
            ],
            userName: 'jason'
          }]
    

    以上是数据,下面遍历数据

        <el-table
            :data="data"
            border
            >
            <el-table-column
              prop="userName"
              :label="$t('user.username')"
            >
            </el-table-column>
            <!-- 自定义列的遍历-->
            <el-table-column v-for="(item, index) in colunmName" :key="index" :label="item" >
              <!-- 数据的遍历  scope.row就代表数据的每一个对象-->
              <template slot-scope="scope">
               <span>{{scope.row.list[index].value}}</span> <!--通过scope.row里面的数据来渲染表格内容-->
              </template>
            </el-table-column>
     
            
            </el-table-column>
            <el-table-column
              prop="Total"
              :label="$t('ad.totalNumber')"
              >
            </el-table-column>
        </el-table>
    

    多级表头

    image.png

    只需要在 el-table-column 里面嵌套 el-table-column,就可以实现多级表头。

    <el-table
        :data="tableData"
        style="width: 100%">
        <el-table-column
          prop="date"
          label="日期"
          width="150">
        </el-table-column>
        <el-table-column label="配送信息">
          <el-table-column
            prop="name"
            label="姓名"
            width="120">
          </el-table-column>
          <el-table-column label="地址">
            <el-table-column
              prop="province"
              label="省份"
              width="120">
            </el-table-column>
            <el-table-column
              prop="city"
              label="市区"
              width="120">
            </el-table-column>
            <el-table-column
              prop="address"
              label="地址"
              width="300">
            </el-table-column>
            <el-table-column
              prop="zip"
              label="邮编"
              width="120">
            </el-table-column>
          </el-table-column>
        </el-table-column>
      </el-table>
    
     tableData: [{
              date: '2016-05-03',
              name: '王小虎',
              province: '上海',
              city: '普陀区',
              address: '上海市普陀区金沙江路 1518 弄',
              zip: 200333
            }, {
              date: '2016-05-02',
              name: '王小虎',
              province: '上海',
              city: '普陀区',
              address: '上海市普陀区金沙江路 1518 弄',
              zip: 200333
            }, {
              date: '2016-05-04',
              name: '王小虎',
              province: '上海',
              city: '普陀区',
              address: '上海市普陀区金沙江路 1518 弄',
              zip: 200333
            }]
    

    相关文章

      网友评论

          本文标题:自定义element-ui table内容

          本文链接:https://www.haomeiwen.com/subject/augplktx.html