feat: 车辆追踪交替行底色(按车牌分组换色)

奇数车牌白底,偶数车牌浅灰底,多人同车保持同色。
车辆信息列用更深的灰色区分。达标/发放等特殊颜色覆盖底色。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
kkfluous
2026-04-02 17:26:40 +08:00
parent 1ca2657f75
commit bdbc3e4273

View File

@@ -364,6 +364,11 @@ def write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_p
WH(ws, headers) WH(ws, headers)
ws.freeze_panes = 'H2' # 冻结车辆信息+业务员列 ws.freeze_panes = 'H2' # 冻结车辆信息+业务员列
# 交替行底色
stripe_a = PatternFill(start_color='FFFFFF', end_color='FFFFFF', fill_type='solid') # 白
stripe_b = PatternFill(start_color='F5F5F5', end_color='F5F5F5', fill_type='solid') # 浅灰
vehicle_idx = 0
rn = 2 rn = 2
for mv in master_vehicles: for mv in master_vehicles:
plate = mv['车牌号'] plate = mv['车牌号']
@@ -389,6 +394,7 @@ def write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_p
if not persons: if not persons:
persons = [''] # 无考核记录也占一行 persons = [''] # 无考核记录也占一行
row_stripe = stripe_b if vehicle_idx % 2 == 1 else stripe_a
start_rn = rn start_rn = rn
for pi, person in enumerate(persons): for pi, person in enumerate(persons):
sd = person_set.get(person,'').replace('业务','') if person else '' sd = person_set.get(person,'').replace('业务','') if person else ''
@@ -456,10 +462,13 @@ def write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_p
WR(ws, rn, row) WR(ws, rn, row)
# 美化 # 美化:先刷底色(交替色),再叠加特殊色
# 车辆信息列灰底 for ci in range(1, len(headers) + 1):
ws.cell(row=rn, column=ci).fill = row_stripe
# 车辆信息列灰底(覆盖条纹)
for ci in range(1, info_cols + 1): for ci in range(1, info_cols + 1):
ws.cell(row=rn, column=ci).fill = grey_fill ws.cell(row=rn, column=ci).fill = grey_fill if vehicle_idx % 2 == 0 else PatternFill(start_color='E8E8E8', end_color='E8E8E8', fill_type='solid')
# 月度达标列着色 # 月度达标列着色
for m in range(1, settle_month + 1): for m in range(1, settle_month + 1):
@@ -507,6 +516,8 @@ def write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_p
ws.merge_cells(start_row=start_rn, start_column=pool_col, ws.merge_cells(start_row=start_rn, start_column=pool_col,
end_row=start_rn + len(persons) - 1, end_column=pool_col) end_row=start_rn + len(persons) - 1, end_column=pool_col)
vehicle_idx += 1
# 列宽 # 列宽
# 隐藏BCD列车架号/归属公司/车型) # 隐藏BCD列车架号/归属公司/车型)
for cl in ['B','C','D']: for cl in ['B','C','D']: