Layui表格需用templet渲染圆点指示灯,通过内联样式控制宽高相等、border-radius:50%及vertical-align:middle确保正圆;颜色逻辑应抽离为独立函数并处理边界值与状态映射兜底。
templet 渲染自定义单元格内容Layui 表格不支持直接在单元格里画圆点,必须靠 templet 手动拼 HTML。它本质是把原始数据传进去,由你返回任意字符串——所以圆形指示灯得自己写 <span> + CSS 样式。
field 里直接塞 HTML 字符串,Layui 默认会转义,显示为纯文本templet 函数参数是 data 对象,比如库存字段叫 stock,就用 data.stock 判断数值display: inline-block 是关键,不然 width/height 不生效templet: function(data) { let color = data.stock > 0 ? '#5FB878' : '#FF5722'; return '<span style="display:inline-block;width:12px;height:12px;border-radius:50%;background:' + color + '"></span>';}
templet
把颜色判断逻辑塞进 templet 函数里看着省事,但一改全改、复用困难。实际项目里库存状态往往不止“有/无”,还可能有“临界”“缺货中”“已售罄”等语义。
getStockStatusColor(val),输入数字,返回颜色值status: 1),别在前端用 if (data.status === 1) 硬匹配,优先查映射表:{1: '#5FB878', 2: '#FF5722', 3: '#FFB800'}
null、undefined、空字符串这些边界值,没处理会导致 NaN 或白点(默认背景色)border-radius: 50% 有时不是正圆?常见原因是宽高不相等,或者父容器有 line-height / vertical-align 干扰导致视觉偏移。Layui 单元格默认是 td,自带 padding 和对齐方式。
width 和 height 相同,比如 12px,别只设一个vertical-align: middle 防止上下错位;必要时包裹一层 <div style="text-align:center"> 居中em 或百分比单位,字体缩放或表格响应式时容易失真12px 在高清屏上可能看不清,可考虑 14px 起步templet 里做复杂计算表格滚动或重绘时,templet 会被高频调用。如果里面包含循环、正则、DOM 查询或格式化函数(比如把数字转带逗号的字符串),卡顿会很明显。
stock + preOrder + lockQty),先在 parseData 或请求后端返回预计算字段更稳妥templet 中调用 laydate.render()、layer.open() 这类重型 APIFunction Call 是否集中在 templet 回调里templet 里堆 || 和三元嵌套,不如统一兜底到“未知状态”色,并加个 console.warn 提示。