el-table实现表格整行选中状态,背景颜色切换

html 复制代码
<el-table :data="tableData" @row-click="handleRowClick" :rowClassName="tableRowClassName" 
    :header-row-style="{color:'#333',fontWeight:'bold',fontSize:'14px'}" style="width: 100%"> 
    <el-table-column
        prop="totalPrice"
        label="现金总额"> 
    </el-table-column>
    <el-table-column
        prop="createTime"
        label="注册时间">
        <template slot-scope="scope">
            <div> 
                <el-switch"
                    v-model="scope.row.experienceFlag"
                    >
                </el-switch>
            </div>
        </template>
    </el-table-column>
    <el-table-column
        prop="address"
        label="消费签名时间">
        <template slot-scope="scope">
            <div>
                {{ scope.row.dateFlag?'限制':'不限制' }}
            </div>
        </template>
    </el-table-column>  
    <el-table-column
        prop="address"
        label="员工">
    </el-table-column> 
    <el-table-column
        prop="categoryName"
        label="获客渠道">
    </el-table-column> 
    <el-table-column 
        label="选择">
        <template slot-scope="scope">
            <div>
                <svg-icon iconClass="praise" v-show="scope.$index!=tableRowIndex" class="icons praise verticalMiddle" ></svg-icon>
                <span class="el-icon-check checkValTable" v-show="scope.$index==tableRowIndex"></span>
            </div>
        </template>
    </el-table-column> 
</el-table>
javascript 复制代码
<script>  
    export default{  
        data(){
            return{
                tableData:[],
                tableRowIndex:'-1'
            }
        },
        methods:{
            //选择行
            handleRowClick(row,rowIndex){ 
                //获取选择行的下标
                console.log(rowIndex);
                this.tableRowIndex=this.getArrayIndex(this.tableData,row)
                console.log('tableRowIndex');
                console.log(this.tableRowIndex);
                this.tableRowClassName(row,this.tableRowIndex);
            },
           //最终与下方获取到的数组下标,与选中的下标对比,若相等则将指定行增加highLight-row类名
            tableRowClassName({row,rowIndex}){
                if(rowIndex==this.tableRowIndex){ 
                    return 'highlight-row'
                }
            },
            getArrayIndex(arr,obj){
                var i=arr.length;
                //循环获取所选行的数据与表格列表数组的某个下标数据是否相等
                //若相等返回下标
                while(i--){
                    if(arr[i]===obj){
                        return i;
                    }
                }
                return -1;
            },
        }
    }
</script>
相关推荐
凯小默2 分钟前
08.with、eval、严格模式、面向对象、属性描述符
javascript
睡不着的可乐3 分钟前
Math对象
javascript
xuankuxiaoyao4 分钟前
Vue.js实践-组件基础上
前端·javascript·vue.js
M ? A34 分钟前
你的 Vue 3 响应式状态,VuReact 如何生成 React Hooks 依赖数组?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
competes1 小时前
React.js JavaScript前端技术脚本运行框架。程序员进行研发组项目现场工作落地的一瞬之间适应性恒强说明可塑性强度达到应用架构师的考核标准
前端·javascript·人工智能·react.js·java-ee·ecmascript
jiayong231 小时前
第 25 课:给学习笔记页加上搜索、标签筛选和 URL 同步
开发语言·前端·javascript·vue.js·学习
jiayong231 小时前
第 12 课:`watch` 和防抖到底该怎么用
前端·javascript·vue.js
im_AMBER2 小时前
Leetcode 158 数组中的第K个最大元素 | 查找和最小的 K 对数字
javascript·数据结构·算法·leetcode·
bug修复工程师2 小时前
Vue 项目高德地图性能优化实战:从卡死到丝滑的完整过程
vue.js
qq_12084093712 小时前
Three.js 场景性能优化实战:首屏、帧率与内存的工程化治理
开发语言·javascript·性能优化·three.js