vue表格遍历根据表头里的类型和每行的状态来判断


bash 复制代码
<el-table class="mt-10" :data="weldingdataList"  style="width: 100%"   height="330">
                                <el-table-column 
                                    v-for="(column) in weldingcolumnList"
                                    header-align="center"
                                    :sortable="false"
                                    :key="column.prop + column.propName"
                                    :prop="column.prop"
                                    :label="column.propName"
                                    align="center"
                                    :show-overflow-tooltip="true"
                                >
                                    <!-- 作用域插槽自定义单元格内容 -->
                                    <template slot-scope="scope">
                                        <!-- 根据displayType渲染不同内容 -->
                                        <span 
                                            v-if="['switch', 'remind'].includes(column.displayType)"
                                            :class="getCellStyle(column.displayType, scope.row[column.prop])"
                                            class="status-dot" >
                                        </span>
                                        <span 
                                            v-else
                                            :class="getCellStyle(column.displayType, scope.row[column.prop])">
                                            {{ formatCellValue(column.displayType, scope.row[column.prop]) }}
                                        </span>
                                    </template>
                                </el-table-column>
                            </el-table>
bash 复制代码
getdevicewelding(){
            devicewelding().then(response => {
                this.weldingcolumnList=response.data.columnList
                this.weldingdataList=response.data.dataList
            });
        },
         // 根据displayType和值获取单元格样式类名
        getCellStyle(displayType, value) {
            // 统一转换为字符串比较
            const val = String(value)
            
            switch(displayType) {
                // 模拟量 - 数值展示,无特殊颜色
                case 'analog':
                return 'cell-analog';
                
                // 开关状态 - 1=开启(绿色),0=关闭(灰色)
                case 'switch':
                return val === '1' ? 'cell-switch-on' : 'cell-switch-off';
                
                // 提醒状态 - 1=异常(红色),0=正常(绿色)
                case 'remind':
                return val === '1' ? 'cell-remind-warning' : 'cell-remind-normal';
                
                // 模式状态 - 1=自动(蓝色),0=手动(橙色)
                case 'mode':
                return val === '1' ? 'cell-mode-auto' : 'cell-mode-manual';
                
                // 默认样式
                default:
                return 'cell-default';
            }
        },
        formatCellValue(displayType, value) {
            const val = String(value);
            switch(displayType) {
                case 'mode':
                return val === '1' ? '自动' : '手动';
                default:
                return value; // analog类型显示数值,switch/remind已用图标替代
            }
        },
bash 复制代码
 /* 模拟量样式 */
  .cell-analog {
  color: #333;
}

/* 开关状态样式 - 圆形 */
.cell-switch-on {
  background-color: #67c23a; /* 绿色-开启 */
}
.cell-switch-off {
  background-color: #909399; /* 灰色-关闭 */
}

/* 提醒状态样式 - 圆形 */
.cell-remind-warning {
  background-color: #f56c6c; /* 红色-异常 */
}
.cell-remind-normal {
  background-color: #67c23a; /* 绿色-正常 */
}

/* 模式状态样式 */
.cell-mode-auto {
  color: #409eff; /* 蓝色-自动 */
  font-weight: bold;
}
.cell-mode-manual {
  color: #e6a23c; /* 橙色-手动 */
  font-weight: bold;
}

/* 圆形样式统一设置 */
.status-dot {
  display: inline-block;
  width: 12px;   /* 圆形大小 */
  height: 12px;  /* 宽高一致才是正圆 */
  border-radius: 50%; /* 圆角50%实现圆形 */
}

/* 默认样式 */
.cell-default {
  color: #333;
}
相关推荐
Frag0ut5 小时前
Chrome四大版本获取及共存指南:Stable/Beta/Dev/Canary
前端·chrome·浏览器·dev·beta·canary·共存版
默_笙8 小时前
🚦 请三个 AI 考官给 RAG 打分:量化评估实战(下)
前端·javascript
阿坨8 小时前
灵感闪存卡:一款 Tampermonkey用户脚本
javascript·tampermonkey
朝朝辞暮i9 小时前
C++ 第 25 课:getter / setter + this
java·javascript·c++
蜗牛互联网10 小时前
Python接入Gemini 3.8 Flash实现票据视觉抽取与规则校验
java·javascript·网络·人工智能·python
易朵朵11 小时前
CSS 格式化上下文
css·vue.js
xieter11 小时前
【技术精选】深入浅出现代前端渲染与性能优化实践指南 (2026-10-04)
前端·javascript
xieter11 小时前
【硬核实战】TypeScript Compiler API: Preserving Child Node Narrowing in Reusable Type Guards 🔧 (2026-10-03)
前端·javascript
xieter11 小时前
【硬核实战】React 19 useFormStatus Returning False? I Built a SubmitButton That Fixes It (2026-10-03)
前端·javascript
Helix25012 小时前
Chrome 性能优化实战:内存节省、硬件加速与 Flags 设置,让浏览器更流畅
chrome·google·性能优化·内存占用·硬件加速·设置技巧·浏览器优化