• el-table表格变更前后根据数据值改变背景颜色


    需求:

    1.左侧变更前表格数据不可以编辑,并且背景色加灰

    2.右侧变更后表格数据可被编辑,编辑后变更前与变更后行数据不一致,添加背景色区分

    3.点击删除的时候,给变更后表格当前行,添加背景色和删除的中横线

    1. <el-table
    2. ref="table"
    3. :data="tableDataList"
    4. style="width: 100%; margin: 0 auto; font-size: 14px;"
    5. height="100%"
    6. align="center"
    7. row-key="node_code"
    8. :row-class-name="tableRowClassName"
    9. :cell-class-name="tableCellClassName"
    10. @cell-click="handleCellClick"
    11. >
    12. <el-table-column align="center" label="操作" min-width="90" fixed="right">
    13. <template slot-scope="scope">
    14. <div>
    15. <a class="mc" title="删除" @click="handleDel(scope.row)"><em slot="reference" class="el-icon-delete mc" style="cursor: pointer" />a>
    16. div>
    17. template>
    18. el-table-column>
    19. <el-table-column label="变更前">
    20. <el-table-column v-for="(item, index) in viewColumns" :key="index" :fixed="item.fixed" :prop="item.prop" :align="item.align" :label="item.label" :min-width="item.width" :show-overflow-tooltip="true">
    21. <template slot-scope="scope">
    22. <div class="item__txt">{{ scope.row[item.prop] }}div>
    23. template>
    24. el-table-column>
    25. el-table-column>
    26. <el-table-column label="变更后" class="after_class">
    27. <el-table-column v-for="(item, index) in viewColumnsTwo" :key="index" :fixed="item.fixed" :prop="item.prop" :align="item.align" :label="item.label" :min-width="item.width" :show-overflow-tooltip="true" class="after_class">
    28. <template slot-scope="scope" class="after_class">
    29. <el-input v-if="scope.row.index == rowIndex && scope.column.index == columnIndex" v-model="scope.row[item.prop]" class="item__input" placeholder="请输入" @blur="handleBlur" />
    30. <div v-else class="item__txt after_class">{{ scope.row[item.prop] }}div>
    31. template>
    32. el-table-column>
    33. el-table-column>
    34. el-table>

    数据值:

    添加背景色处理:

    1. tableCellClassName({ row, column, columnIndex }) {
    2. // 把每一列的索引放到column里
    3. column.index = columnIndex
    4. if (row.colorFlag) {
    5. if ((column.property == 'topSymptomAfter' || column.property == 'controlItemAfter' || column.property == 'controlStandardAfter' || column.property == 'remarkAfter')) {
    6. return 'warning-row' // 返回被点击行的样式
    7. }
    8. }
    9. if (column.property == 'topSymptomBefore' || column.property == 'controlItemBefore' || column.property == 'controlStandardBefore' || column.property == 'remarkBefore') {
    10. return 'success-row' // 返回被点击行的样式
    11. }
    12. // 对比后的数据 不等于 对比前的数据,那么添加背景色
    13. if (column.property == 'topSymptomAfter' && (row.topSymptomAfter.toString() !== row.topSymptomBefore.toString())) {
    14. return 'fill-row'
    15. }
    16. if (column.property == 'controlItemAfter' && (row.controlItemAfter.toString() !== row.controlItemBefore.toString())) {
    17. return 'fill-row'
    18. }
    19. if (column.property == 'controlStandardAfter' && (row.controlStandardAfter.toString() !== row.controlStandardBefore.toString())) {
    20. return 'fill-row'
    21. }
    22. if (column.property == 'remarkAfter' && (row.remarkAfter.toString() !== row.remarkBefore.toString())) {
    23. return 'fill-row'
    24. }
    25. return '' // 返回其他行的默认样式
    26. },
    27. //删除行
    28. handleDel(row) {
    29. this.handleIdentification(row)
    30. // this.tableDataList = this.tableDataList.filter(item => item.index !== row.index)
    31. if (!(row.topSymptomBefore && row.controlItemBefore && row.controlStandardBefore && row.remarkBefore)) {
    32. row.colorFlag = false
    33. // 如果左侧没有数据值,只有右侧有数据值,点击删除 是删除整条数据
    34. this.tableDataList = this.tableDataList.filter(item => item.index !== row.index)
    35. }
    36. if ((row.topSymptomAfter || row.controlItemAfter || row.controlStandardAfter || row.remarkAfter)) {
    37. row.colorFlag = true
    38. updateMqs(this.addForm).then(res => {
    39. this.$message.success(res.msg)
    40. }).catch(res => {
    41. this.$message.error(res.msg)
    42. })
    43. }
    44. },

    成果:

  • 相关阅读:
    基于51单片机交通灯仿真_紧急开关+黄灯倒计时+可调时间(proteus+代码+报告+讲解视频)
    redis-plus-plus--github中文翻译--2
    什么是Jmeter ?Jmeter使用的原理步骤是什么?
    JS手写章节(1)—手写实现call、apply、bind
    解决Netty那些事儿之Reactor在Netty中的实现(创建篇)-上
    GMV远超预期背后,快手电商做对了什么?
    深入理解Go语言中的sync.Cond
    pdf文件损坏打不开了怎么办
    Java语言程序设计实践考试
    【算法|动态规划No.26】leetcode1745. 分割回文串 IV
  • 原文地址:https://blog.csdn.net/dy1717/article/details/139749189