From d8fae2b717641e67ac89d7b72fa59271adcd5fb6 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Sep 2026 11:42:16 +0800 Subject: [PATCH] =?utf8?q?=E8=AE=BE=E5=A4=87=E6=A8=A1=E6=9D=BF=E7=BC=96?= =?utf8?q?=E8=BE=91=E9=A1=B5-=E5=8C=BA=E5=88=86=E6=9D=A5=E6=BA=90=E6=98=BE?= =?utf8?q?=E7=A4=BA=E8=BF=94=E5=9B=9E=E8=AE=BE=E5=A4=87=E6=A8=A1=E6=9D=BF?= =?utf8?q?=E5=88=97=E8=A1=A8=E6=88=96=E8=BF=94=E5=9B=9E=E7=AB=99=E7=82=B9?= =?utf8?q?=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- app/page.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index e9b08ed..036e122 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -690,7 +690,7 @@ export default function Home(){ ? setOpenDomainTemplateId(null)} onCreated={setOpenDomainTemplateId} viewCompletePrompt={viewDtCompletePrompt} viewCompleteAssetsPrompt={viewDtCompleteAssetsPrompt} viewCompleteCubesPrompt={viewDtCompleteCubesPrompt} pageStyles={pageStyles}/> : setOpenDomainTemplateId(id)} domainFilter={domainFilter} domainOptions={domainOptions}/>)} {page==="styleLibrary"&&} - {page==="deviceTemplates"&&} + {page==="deviceTemplates"&&} {page==="toolSettings"&&} {page==="domainSettings"&&} {(page==="basic"||(page==="siteEdit"&&siteEditSection==="basic"))&&} @@ -2648,7 +2648,7 @@ function CompanyDomainLibrary({go,notify,onOpen,domainFilter,domainOptions}:{go: ; } -function CompanyDeviceTemplates({notify,onViewCpPrompt}:{notify:(m:string)=>void;onViewCpPrompt:(id:number)=>void}){ +function CompanyDeviceTemplates({notify,onViewCpPrompt,go,siteId}:{notify:(m:string)=>void;onViewCpPrompt:(id:number)=>void;go:(p:PageKey,sid?:number|"new")=>void;siteId:number}){ const [list,setList]=useState([]); const [loading,setLoading]=useState(true); const [openId,setOpenId]=useState(null); @@ -2657,22 +2657,23 @@ function CompanyDeviceTemplates({notify,onViewCpPrompt}:{notify:(m:string)=>void const [pointFilter,setPointFilter]=useState<""|"configured"|"empty">(""); const [pageIndex,setPageIndex]=useState(1); const [pageSize,setPageSize]=useState(10); + const [fromSite,setFromSite]=useState(false); const {confirm,el:confirmEl}=useConfirm(); const load=async()=>{ try{ setList(await fetchDb("/device-templates") as any[]); }catch(e:any){ notify("加载失败:"+e.message); }finally{ setLoading(false); } }; useEffect(()=>{ load(); },[]); // 支持从外部通过 URL 参数 openTemplate 自动打开指定模板编辑页 - useEffect(()=>{ const p=new URLSearchParams(window.location.search); const tid=p.get("openTemplate"); if(tid){ setOpenId(Number(tid)); window.history.replaceState({}, "", "?page=deviceTemplates"); } },[]); + useEffect(()=>{ const p=new URLSearchParams(window.location.search); const tid=p.get("openTemplate"); if(tid){ setFromSite(true); setOpenId(Number(tid)); window.history.replaceState({}, "", "?page=deviceTemplates"); } },[]); const pointCount=(row:any)=>(row.collection_points||[]).length; const domainNames=(row:any)=>{ try{ return JSON.parse(row.domain_names||"[]") as string[]; }catch{ return []; } }; const remove=async(row:any)=>{ if(!(await confirm(`确定删除设备模板「${row.name}」?`))) return; try{ await fetchDb(`/device-templates/${row.id}`,{method:"DELETE"}); setPreview(null); await load(); notify("设备模板已删除"); }catch(e:any){ notify("删除失败:"+e.message); } }; const counts=useMemo(()=>({all:list.length,configured:list.filter(x=>pointCount(x)>0).length,empty:list.filter(x=>pointCount(x)===0).length}),[list]); const filtered=useMemo(()=>list.filter(row=>(!pointFilter||(pointFilter==="configured"?pointCount(row)>0:pointCount(row)===0))&&(!query.trim()||`${row.name} ${row.description||""}`.toLowerCase().includes(query.trim().toLowerCase()))),[list,pointFilter,query]); useEffect(()=>setPageIndex(1),[pointFilter,query]); - if(openId==="create") return <>
{await load();setOpenId(id);}} onCancel={()=>setOpenId(null)}/>; + if(openId==="create") return <>
{await load();setOpenId(id);}} onCancel={()=>setOpenId(null)}/>; if(typeof openId==="number"){ const dev=list.find(d=>d.id===openId); if(!dev) return
加载中…
; - return <>
setOpenId(null)} onViewCpPrompt={onViewCpPrompt}/>; + return <>
setOpenId(null)} onViewCpPrompt={onViewCpPrompt}/>; } return <>{confirmEl}
{[ -- 2.43.0