如何为调度器配置条件匹配规则,实现对应列的自动着色
调度器列校验实现方案
你需要的功能可以按以下逻辑落地:
核心校验规则
每次取单日对应的整列数据做两次校验,只要触发任意一条规则就对该列做着色处理:
- 列内必须同时存在至少1次
F(早班)和S(晚班),缺任意一个就触发着色 - 列内
U(休假)、SCH(培训)、ZA(补休)三个值的总出现次数不能超过3次,超过就触发着色
常见场景实现示例
Excel 条件格式实现
选中所有单日数据列,新建条件格式,选择「使用公式确定要设置格式的单元格」,输入公式:
=OR(COUNTIF(A:A,"F")=0,COUNTIF(A:A,"S")=0,COUNTIF(A:A,"U")+COUNTIF(A:A,"SCH")+COUNTIF(A:A,"ZA")>3)
把公式里的A替换为你选中区域的第一列列标,再设置你需要的高亮填充色,应用到所有单日列即可生效。
前端表格实现(以Element UI 为例)
// 提前按列缓存校验结果 const columnValidMap = {} // 校验单列的方法 function validateSingleColumn(colData) { const hasMorning = colData.some(v => v === 'F') const hasNight = colData.some(v => v === 'S') const restCount = colData.filter(v => ['U', 'SCH', 'ZA'].includes(v)).length return !hasMorning || !hasNight || restCount > 3 } // 表格样式回调 <el-table :cell-style="cellStyleCallback"> // 回调逻辑 const cellStyleCallback = ({ column }) => { // 仅校验标识为单日的列 if (column.prop.startsWith('day_')) { if (columnValidMap[column.prop]) { return { backgroundColor: '#f87171' } } } return {} }
Python 数据处理实现(Pandas 为例)
import pandas as pd def highlight_invalid_column(col): has_f = (col == 'F').any() has_s = (col == 'S').any() special_cnt = col.isin(['U', 'SCH', 'ZA']).sum() # 不符合规则的整列标红 return ['background-color: #fca5a5'] * len(col) if not has_f or not has_s or special_cnt > 3 else [''] * len(col) # 输出带样式的表格 styled_schedule = df.style.apply(highlight_invalid_column, axis=0)
内容的提问来源于stack exchange,提问作者Klaus Koziol
相关产品推荐
相关产品推荐

