]> acesimba.cloud Git - StationBuilder.git/commitdiff
UI 校验修复(web-ui-builder v1.3.0):消除两处双 primary 按钮堆叠(仪表板管理/报警触发面板,次操作降级为 secondary)...
authorroot <root@localhost.localdomain>
Thu, 17 Sep 2026 09:31:59 +0000 (17:31 +0800)
committerroot <root@localhost.localdomain>
Thu, 17 Sep 2026 09:31:59 +0000 (17:31 +0800)
app/page.tsx

index 7993cf148c6715fdf2293f8e0428cb3ed378ce49..e15164814833b2618283a8320de8a1b7b5e60f76 100644 (file)
@@ -1448,7 +1448,7 @@ function DashboardThumb({siteId, cube, fixedHeight}:{siteId:number; cube:Cube;fi
         inner.current.style.transformOrigin="top left";
         if(outer.current) outer.current.style.height=`${fixedHeight||rh*s}px`;
       }catch(e){
-        if(inner.current) inner.current.innerHTML='<div style="padding:8px;color:#999">预览不可用</div>';
+        if(inner.current) inner.current.innerHTML='<div style="padding:8px;color:var(--ant-color-text-tertiary)">预览不可用</div>';
       }
     })();
     return ()=>{cancelled=true;};
@@ -1798,7 +1798,7 @@ function DeviceTemplateCard({dev,notify,onChange,onBack,onViewCpPrompt}:{dev:any
         <section><h3>基本信息</h3><div className="alarm-form-grid"><label><span><i>*</i> 报警名称</span><UiInput value={alarmDraft.name} onChange={e=>setAlarmDraft({...alarmDraft,name:e.target.value})} placeholder="请输入报警名称"/></label><label><span><i>*</i> 报警等级</span><UiSelect value={alarmDraft.level} onChange={e=>setAlarmDraft({...alarmDraft,level:e.target.value})}><option>紧急</option><option>高</option><option>中</option><option>低</option></UiSelect></label><label className="wide"><span>报警描述</span><UiInput value={alarmDraft.description} onChange={e=>setAlarmDraft({...alarmDraft,description:e.target.value})} placeholder="请输入报警描述"/></label></div></section>
         <section><h3>类别设定</h3><div className="alarm-form-grid"><label><span><i>*</i> 类别名称</span><UiSelect value={alarmDraft.category} onChange={e=>setAlarmDraft({...alarmDraft,category:e.target.value})}><option>报警</option><option>故障</option><option>事件</option><option>通知</option></UiSelect></label><label><span><i>*</i> 类型名称</span><UiSelect value={alarmDraft.typeName} onChange={e=>setAlarmDraft({...alarmDraft,typeName:e.target.value})}><option>阈值报警</option><option>离线报警</option><option>状态报警</option><option>组合报警</option></UiSelect></label></div></section>
         <section><h3>灵敏度设定</h3><div className="alarm-sensitivity"><span><i>*</i> 灵敏度类型</span><label><UiInput type="radio" name="alarm-sensitivity" checked={alarmDraft.sensitivityType==="duration"} onChange={()=>setAlarmDraft({...alarmDraft,sensitivityType:"duration"})}/> 持续时间</label><UiInput type="number" min="1" value={alarmDraft.sensitivityType==="duration"?alarmDraft.sensitivityValue:""} disabled={alarmDraft.sensitivityType!=="duration"} onChange={e=>setAlarmDraft({...alarmDraft,sensitivityValue:e.target.value})}/><em>秒,报警一次</em><label><UiInput type="radio" name="alarm-sensitivity" checked={alarmDraft.sensitivityType==="consecutive"} onChange={()=>setAlarmDraft({...alarmDraft,sensitivityType:"consecutive"})}/> 连续触发</label><UiInput type="number" min="1" value={alarmDraft.sensitivityType==="consecutive"?alarmDraft.sensitivityValue:""} disabled={alarmDraft.sensitivityType!=="consecutive"} onChange={e=>setAlarmDraft({...alarmDraft,sensitivityValue:e.target.value})}/><em>次,报警一次</em></div></section>
-        <section><h3>触发规则设定</h3><div className="alarm-trigger-panel"><header><b>触发规则列表</b><span><Button onClick={()=>notify("规则策略设定将在后续接入")}><ControlOutlined/> 规则策略设定</Button><Button onClick={addAlarmTrigger}><PlusOutlined/> 新增</Button></span></header><UiTable className="data-table alarm-trigger-table"><thead><tr><th>名称</th><th>报警来源</th><th>比较类型</th><th>监测点</th><th>运算符号</th><th>阈值</th><th>操作</th></tr></thead><tbody>{alarmDraft.triggers.map((trigger:any)=><tr key={trigger.id}><td><UiInput value={trigger.name} onChange={e=>updateAlarmTrigger(trigger.id,"name",e.target.value)}/></td><td><UiSelect value={trigger.source} onChange={e=>updateAlarmTrigger(trigger.id,"source",e.target.value)}><option>当前设备</option><option>关联设备</option></UiSelect></td><td><UiSelect value={trigger.compareType} onChange={e=>updateAlarmTrigger(trigger.id,"compareType",e.target.value)}><option>数值</option><option>状态</option><option>字符串</option></UiSelect></td><td><UiSelect value={trigger.point} onChange={e=>updateAlarmTrigger(trigger.id,"point",e.target.value)}><option value="">请选择</option>{cps.map((point:any)=><option key={point.key} value={point.name}>{point.name||"未命名采集点"}</option>)}</UiSelect></td><td><UiSelect value={trigger.operator} onChange={e=>updateAlarmTrigger(trigger.id,"operator",e.target.value)}><option>&gt;</option><option>&gt;=</option><option>&lt;</option><option>&lt;=</option><option>=</option><option>!=</option></UiSelect></td><td><UiInput value={trigger.threshold} onChange={e=>updateAlarmTrigger(trigger.id,"threshold",e.target.value)} placeholder="请输入"/></td><td><AntButton type="text" danger title="删除触发规则" icon={<DeleteOutlined/>} onClick={()=>removeAlarmTrigger(trigger.id)}/></td></tr>)}</tbody></UiTable>{alarmDraft.triggers.length===0&&<div className="alarm-trigger-empty">暂无数据</div>}</div></section>
+        <section><h3>触发规则设定</h3><div className="alarm-trigger-panel"><header><b>触发规则列表</b><span><Button secondary onClick={()=>notify("规则策略设定将在后续接入")}><ControlOutlined/> 规则策略设定</Button><Button onClick={addAlarmTrigger}><PlusOutlined/> 新增</Button></span></header><UiTable className="data-table alarm-trigger-table"><thead><tr><th>名称</th><th>报警来源</th><th>比较类型</th><th>监测点</th><th>运算符号</th><th>阈值</th><th>操作</th></tr></thead><tbody>{alarmDraft.triggers.map((trigger:any)=><tr key={trigger.id}><td><UiInput value={trigger.name} onChange={e=>updateAlarmTrigger(trigger.id,"name",e.target.value)}/></td><td><UiSelect value={trigger.source} onChange={e=>updateAlarmTrigger(trigger.id,"source",e.target.value)}><option>当前设备</option><option>关联设备</option></UiSelect></td><td><UiSelect value={trigger.compareType} onChange={e=>updateAlarmTrigger(trigger.id,"compareType",e.target.value)}><option>数值</option><option>状态</option><option>字符串</option></UiSelect></td><td><UiSelect value={trigger.point} onChange={e=>updateAlarmTrigger(trigger.id,"point",e.target.value)}><option value="">请选择</option>{cps.map((point:any)=><option key={point.key} value={point.name}>{point.name||"未命名采集点"}</option>)}</UiSelect></td><td><UiSelect value={trigger.operator} onChange={e=>updateAlarmTrigger(trigger.id,"operator",e.target.value)}><option>&gt;</option><option>&gt;=</option><option>&lt;</option><option>&lt;=</option><option>=</option><option>!=</option></UiSelect></td><td><UiInput value={trigger.threshold} onChange={e=>updateAlarmTrigger(trigger.id,"threshold",e.target.value)} placeholder="请输入"/></td><td><AntButton type="text" danger title="删除触发规则" icon={<DeleteOutlined/>} onClick={()=>removeAlarmTrigger(trigger.id)}/></td></tr>)}</tbody></UiTable>{alarmDraft.triggers.length===0&&<div className="alarm-trigger-empty">暂无数据</div>}</div></section>
       </div>}
     </Drawer>
     <Drawer title="AI 智能补全" size={440} open={aiOpen} onClose={()=>setAiOpen(false)}>
@@ -2722,7 +2722,7 @@ function DomainCapabilityDetail({id,doms,notify,onBack,onEditAssets,onCreateSite
     <section className="dashboard-manager-panel">
       <header className="dashboard-manager-toolbar">
         <label><span>领域分类</span><UiSelect value={dashboardDomain} onChange={event=>setDashboardDomain(event.target.value)}>{doms.map((domain:any)=><option key={domain.id} value={domain.name}>{friendlyDomainName(domain.name)}</option>)}</UiSelect></label>
-        <UiActions className="dashboard-manager-actions"><Button onClick={()=>notify("导入功能将在后续实现")}><UploadOutlined/> 导入</Button><Button onClick={()=>notify("新增功能将在后续实现")}><PlusOutlined/> 新增</Button><BrandSearchInput value={dashboardQuery} onChange={setDashboardQuery} placeholder="请输入仪表板名称"/></UiActions>
+        <UiActions className="dashboard-manager-actions"><Button secondary onClick={()=>notify("导入功能将在后续实现")}><UploadOutlined/> 导入</Button><Button onClick={()=>notify("新增功能将在后续实现")}><PlusOutlined/> 新增</Button><BrandSearchInput value={dashboardQuery} onChange={setDashboardQuery} placeholder="请输入仪表板名称"/></UiActions>
       </header>
       <div className="dashboard-manager-grid">{visibleDashboards.map((page,index)=><article key={page.id}>
         <UiButton className="dashboard-card-more" type="button" aria-label={`${page.name}更多操作`}><EllipsisOutlined/></UiButton>