• el-table表格样式设置方法 :cell-class-name


    需求:依据筛选条件,动态渲染table

        ① 表格字段是不固定的,其中间的字段是依据用户选取的关键字来展示的

        ② 根据后台返回数据状态来显示字段对应的图标

     1、依据字段状态显示图标

    <template>
        <!-- 搜索结果表 -->
        <div class="rt_wrapper" ref="crWrapper">
            <el-table 
                border
                v-loading="loading"
                class="table-fixed"
                :height="tableHeight" 
                :data="tableData" 
                :row-style="{height:0+'px'}"
                :cell-class-name="cellClassName"
                :header-cell-style="{'backgroundColor':'#17B3A3', 'color': '#fff'}"
                @sort-change="changeSort"
                @selection-change="handleSelectionChange"
                :key="tableKey">
                <el-table-column
                    type="selection"
                    width="55"
                    align="center"
                    v-if="isShowSelection && tableData.length > 0">
                </el-table-column>
                <el-table-column v-for="(item, index) in theadParams"
                                 :class="isNaN(tableParams[index]) ? '' : keyWordStatus[tableParams[index]]"
                                 :key="index" 
                                 :label="item"
                                 :sortable="sortable[index]"
                                 :prop="tableParams[index]"
                                 :fixed="needFixedColumn[index] == undefined ? false : needFixedColumn[index]"
                                 align="center">
                </el-table-column>
                <el-table-column label="操作" align="center" v-if="operateData.length">
                    <template slot-scope="scope">
                        <el-button type="text" v-for="(item, index) in operateData[scope.$index]"
                                   :key="'an_' + index"
                                   :data-text="item"
                                   @click="operateBtn(scope.row, $event)">{{item}}</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </div>
    </template>

      设置表格样式可以使用 :cell-class-name="cellClassName",cellClassName代码如下:

      (注:cellClassName中不能使用循环

    methods: {
            // 为关键字的三种状态:匹配成功、未找到关键字、参考值不一致设置颜色
            cellClassName({ row, column, rowIndex, columnIndex }) {
                if(this.isSetSpecialColor) { // 这个是flag字段,标识是否显示特殊颜色,true,false
                    if(column.property != "filetypeName" && column.property != "fileName" && column.property != "updateTime") { // filetypeName...这些都是表格字段
                        let columnProperty = this.tableData[rowIndex][column.property];
                        if(columnProperty == 0) {
                            return 'greenClass'; // class名称
                        } else if(columnProperty == 1) {
                            return 'orangeClass'; // class名称
                        } else if(columnProperty == 2) {
                            return 'redClass';  // class名称
                        } else if(columnProperty == '' || columnProperty == null) {
                            return 'emptyClass';  // class名称
                        }
                    }
                }
            },
    }
    

      图标样式如下:

    .orangeClass, .greenClass, .redClass {
            position: relative;
            font-size: 0;
            &::before {
                content: '!';
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                 20px;
                height: 20px;
                line-height: 16px;
                font-size: 14px;
                font-weight: bold;
                text-align: center;
                color: orange;
                border: 2px solid orange;
                border-radius: 50%;
            }
        }
        .greenClass {
            &::before {
                content: '√';
                color: green;
                border: 2px solid green;
            }
        }
        .redClass {
            &::before {
                content: '×';
                line-height: 14px;
                color: red;
                border: 2px solid red;
            }
        }
        .emptyClass {
            background-color: #f8f8f8;
        }
  • 相关阅读:
    Vue对象提供的属性功能
    Vue快速入门
    Django-DRF(路由与扩展功能)
    Django-DRF(视图相关)
    Django-DRF(1)
    Django-Xadmin
    python 列表的append()和extend()
    map apply applymap
    pd.merge(), pd.concat()
    描述性分析与数据清洗 笔记
  • 原文地址:https://www.cnblogs.com/carriezhao/p/12956697.html
Copyright © 2020-2023  润新知