feat: 明细表优化 — 6项全量+类型列+计划开工+未审批高亮

This commit is contained in:
大师 2026-06-09 03:00:03 +08:00
parent db3d19f30d
commit 3ac09fa635
4 changed files with 38 additions and 25 deletions

View File

@ -57,6 +57,10 @@ body{background:#fff;color:#333;padding:0}
.detail-table td{padding:2px 8px;border-bottom:1px solid var(--border);font-size:11px}
.detail-table .num{text-align:right}
/* warning row highlight */
tr.warn-row{background:#FFF3E0!important}
tr.warn-row td{font-weight:600}
/* Slide 2 */
table.main{width:100%;border-collapse:collapse;font-size:12px}
th.main{background:var(--blue);color:#fff;padding:8px 12px;text-align:left;font-size:11px;font-weight:600}
@ -99,9 +103,9 @@ tr:nth-child(even) td{background:var(--bg)}
<div class="panel"><div class="panel-head">4. 审批进度 &amp; 三色预警信号</div><div class="panel-body" style="display:flex;flex-direction:column;gap:14px">
<!-- Row 1: 预警信号 -->
<div style="display:flex;align-items:center;gap:16px">
<div class="card"><div class="n" style="color:var(--red);font-size:44px">5</div><div class="l">预警总计</div></div>
<div class="card"><div class="n" style="color:var(--red);font-size:44px">6</div><div class="l">预警总计</div></div>
<div class="card"><div class="ico" style="font-size:22px;line-height:1">🔴</div><div class="n" style="color:var(--red)">0</div><div class="l">红色</div></div>
<div class="card"><div class="ico" style="font-size:22px;line-height:1">🟠</div><div class="n" style="color:var(--red)">1</div><div class="l">橙色</div></div>
<div class="card"><div class="ico" style="font-size:22px;line-height:1">🟠</div><div class="n" style="color:var(--red)">2</div><div class="l">橙色</div></div>
<div class="card"><div class="ico" style="font-size:22px;line-height:1">🟡</div><div class="n" style="color:var(--gold)">4</div><div class="l">黄色</div></div>
<div class="card"><div class="n" style="color:var(--gray);font-size:36px">23</div><div class="l">未完成审批</div></div>
<div style="font-size:11px;color:var(--gray);margin-left:auto;text-align:right;line-height:1.6;display:flex;flex-direction:column;gap:4px"><span>🔴 在实施未审批</span><span>🟠 ≤30天</span><span>🟡 ≤45天</span></div>
@ -129,8 +133,15 @@ tr:nth-child(even) td{background:var(--bg)}
<div class="slide">
<div class="nav"><span>关键指标</span><span>国别分布</span><span class="cur">预警明细</span></div>
<div class="title-area"><div class="line"></div><h1>预警信号明细清单</h1><span class="date">共 5 项预警</span></div>
<div style="margin:0 48px 20px"><div class="panel" style="flex:1"><div class="panel-body" style="padding:0"><table class="main"><tr><th class="main">信号</th><th class="main">项目名称</th><th class="main">方案名称</th><th class="main">当前状态</th><th class="main num">距开工</th></tr><tr><td class="wicon">🟠</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程</td><td class="fs">BHS/GSE隧道现浇板(4包)</td><td class="fs">已添加未实施</td><td class="num r">2天</td></tr><tr><td class="wicon">🟡</td><td class="fs">阿联酋阿布扎比汽车基地房建项目</td><td class="fs">模板支立工程</td><td class="fs">未审批未实施</td><td class="num r">32天</td></tr><tr><td class="wicon">🟡</td><td class="fs">阿联酋阿布扎比汽车基地房建项目</td><td class="fs">深基坑开挖方案</td><td class="fs">未审批未实施</td><td class="num r">37天</td></tr><tr><td class="wicon">🟡</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程</td><td class="fs">现浇倒T梁(4包)</td><td class="fs">审批中未实施</td><td class="num r">42天</td></tr><tr><td class="wicon">🟡</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程</td><td class="fs">T梁预制运输安装(4包)</td><td class="fs">已添加未实施</td><td class="num r">42天</td></tr></table></div></div></div>
<div class="title-area"><div class="line"></div><h1>预警信号明细清单</h1><span class="date">共 6 项预警</span></div>
<div style="margin:0 48px 20px"><div class="panel" style="flex:1"><div class="panel-body" style="padding:0"><table class="main"><tr><th class="main">信号</th><th class="main">类型</th><th class="main">项目名称</th><th class="main">方案名称</th><th class="main">当前状态</th><th class="main" style="text-align:right">计划开工</th><th class="main num">距开工</th></tr>
<tr class="warn-row"><td class="wicon">🟠</td><td class="fs">超规类</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程项目</td><td class="fs">BHS处理中心/GSE隧道现浇板专项施工方案4包</td><td class="fs">已添加、未实施</td><td class="num">2026-06-10</td><td class="num r">2天</td></tr>
<tr><td class="wicon">🟠</td><td class="fs">一般类</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程项目</td><td class="fs">钢筋加工厂桥式起重机安装专项施工方案2包</td><td class="fs">已审批、未实施</td><td class="num">2026-06-30</td><td class="num r">22天</td></tr>
<tr class="warn-row"><td class="wicon">🟡</td><td class="fs">超规类</td><td class="fs">阿联酋阿布扎比汽车基地房建项目</td><td class="fs">模板支立工程专项方案</td><td class="fs">未审批、未实施</td><td class="num">2026-07-10</td><td class="num r">32天</td></tr>
<tr class="warn-row"><td class="wicon">🟡</td><td class="fs">超规类</td><td class="fs">阿联酋阿布扎比汽车基地房建项目</td><td class="fs">深基坑开挖方案</td><td class="fs">未审批、未实施</td><td class="num">2026-07-15</td><td class="num r">37天</td></tr>
<tr><td class="wicon">🟡</td><td class="fs">超规类</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程项目</td><td class="fs">处理中心现浇倒T梁专项施工方案4包</td><td class="fs">审批中、未实施</td><td class="num">2026-07-20</td><td class="num r">42天</td></tr>
<tr><td class="wicon">🟡</td><td class="fs">一般类</td><td class="fs">阿联酋迪拜马克图姆国际机场地下结构工程项目</td><td class="fs">T梁预制、运输和安装专项施工方案4包</td><td class="fs">已添加、未实施</td><td class="num">2026-07-20</td><td class="num r">42天</td></tr>
</table></div></div></div>
<div class="rule">📐 <b>预警规则</b>:🟠 橙色 ≤30天未审批 · 🟡 黄色 ≤45天未审批 · 🔴 红色 在实施未审批本月0项</div>
<div class="foot"><span>中国港湾中东区域公司 技术部</span><span>2 / 2</span></div>
</div>

View File

@ -142,9 +142,9 @@ CARD_W=Inches(0.85); CARD_H=Inches(0.7); CARD_GAP=Inches(0.08)
CY=RY2+Inches(0.48)
warn_data=[
('5', '预警总计', RED, 36, None),
('6', '预警总计', RED, 36, None),
('0', '红色', RED, 28, RED),
('1', '橙色', RED, 28, RGBColor(0xF0,0x80,0x00)),
('2', '橙色', RED, 28, RGBColor(0xF0,0x80,0x00)),
('4', '黄色', GOLD, 28, GOLD),
('23', '未完成审批', GRAY, 28, None),
]
@ -209,41 +209,43 @@ T(Inches(4.5),Inches(0.07),Inches(2),Inches(0.28),'★ 预警明细',sz=11,clr=G
R(Inches(0.5),Inches(0.58),Inches(0.06),Inches(0.28),fill=GOLD)
T(Inches(0.7),Inches(0.55),Inches(8),Inches(0.36),'预警信号明细清单',sz=22,clr=BLUE,b=True)
T(Inches(8.5),Inches(0.62),Inches(4.5),Inches(0.28),'5 项预警',sz=10,clr=GRAY,al=PP_ALIGN.RIGHT)
T(Inches(8.5),Inches(0.62),Inches(4.5),Inches(0.28),'6 项预警',sz=10,clr=GRAY,al=PP_ALIGN.RIGHT)
warnings=[
('🟠','阿联酋迪拜马克图姆国际机场地下结构工程','BHS/GSE隧道现浇板(4包)','已添加未实施','2天'),
('🟡','阿联酋阿布扎比汽车基地房建项目','模板支立工程','未审批未实施','32天'),
('🟡','阿联酋阿布扎比汽车基地房建项目','深基坑开挖方案','未审批未实施','37天'),
('🟡','阿联酋迪拜马克图姆国际机场地下结构工程','现浇倒T梁(4包)','审批中未实施','42天'),
('🟡','阿联酋迪拜马克图姆国际机场地下结构工程','T梁预制运输安装(4包)','已添加未实施','42天'),
('🟠','超规类','阿联酋迪拜马克图姆国际机场地下结构工程项目','BHS处理中心/GSE隧道现浇板专项施工方案4包','已添加、未实施','2026-06-10','2天'),
('🟠','一般类','阿联酋迪拜马克图姆国际机场地下结构工程项目','钢筋加工厂桥式起重机安装专项施工方案2包','已审批、未实施','2026-06-30','22天'),
('🟡','超规类','阿联酋阿布扎比汽车基地房建项目','模板支立工程专项方案','未审批、未实施','2026-07-10','32天'),
('🟡','超规类','阿联酋阿布扎比汽车基地房建项目','深基坑开挖方案','未审批、未实施','2026-07-15','37天'),
('🟡','超规类','阿联酋迪拜马克图姆国际机场地下结构工程项目','处理中心现浇倒T梁专项施工方案4包','审批中、未实施','2026-07-20','42天'),
('🟡','一般类','阿联酋迪拜马克图姆国际机场地下结构工程项目','T梁预制、运输和安装专项施工方案4包','已添加、未实施','2026-07-20','42天'),
]
# Native table: 6 rows × 5 cols (1 header + 5 data)
# Native table: 7 rows × 7 cols (1 header + 6 data)
TY=Inches(1.1)
CW=[Inches(0.6),Inches(3.8),Inches(3.0),Inches(2.2),Inches(1.0)]
HDS=['信号','项目名称','方案名称','当前状态','距开工']
CW=[Inches(0.5),Inches(0.7),Inches(3.2),Inches(2.8),Inches(1.6),Inches(1.0),Inches(0.7)]
HDS=['信号','类型','项目名称','方案名称','当前状态','计划开工','距开工']
x_off=Inches(0.5)
tbl2=s2.shapes.add_table(6,5,x_off,TY,sum(CW),Inches(6*0.38))
tbl2=s2.shapes.add_table(7,7,x_off,TY,sum(CW),Inches(7*0.32))
for i,w in enumerate(CW): tbl2.table.columns[i].width=w
for i,h in enumerate(HDS):
c=tbl2.table.cell(0,i); c.text=h
c.fill.solid(); c.fill.fore_color.rgb=BLUE
for p in c.text_frame.paragraphs: p.font.size=Pt(10); p.font.bold=True; p.font.color.rgb=WHITE
for j,(icon,proj,scheme,status,days) in enumerate(warnings):
row=j+1; vals=[icon,proj,scheme,status,days]
bg_c=BG if j%2==0 else WHITE
for p in c.text_frame.paragraphs: p.font.size=Pt(8); p.font.bold=True; p.font.color.rgb=WHITE
for j,(icon,typ,proj,scheme,status,pdate,days) in enumerate(warnings):
row=j+1; vals=[icon,typ,proj,scheme,status,pdate,days]
is_warn='未审批' in status
bg_c=RGBColor(0xFF,0xF3,0xE0) if is_warn else (BG if j%2==0 else WHITE)
for i,val in enumerate(vals):
c=tbl2.table.cell(row,i); c.text=val
c.fill.solid(); c.fill.fore_color.rgb=bg_c
for p in c.text_frame.paragraphs:
p.font.size=Pt({0:16,1:9,4:11}.get(i,10))
p.font.color.rgb=RED if i==4 else BLACK
p.font.bold=(i==4)
p.alignment=PP_ALIGN.CENTER if i in (0,4) else PP_ALIGN.LEFT
p.font.size=Pt({0:14,6:9}.get(i,8))
p.font.color.rgb=RED if i==6 else BLACK
p.font.bold=(i==6 or is_warn)
p.alignment=PP_ALIGN.CENTER if i in (0,1,6) else PP_ALIGN.LEFT
# Rule
RY=TY+Inches(6*0.38+0.15)
RY=TY+Inches(7*0.32+0.15)
R(x_off,RY,sum(CW),Inches(0.45),fill=BG)
R(x_off,RY,Inches(0.06),Inches(0.45),fill=GOLD)
T(x_off+Inches(0.2),RY+Inches(0.05),Inches(11),Inches(0.35),