From: root Date: Mon, 14 Sep 2026 03:42:16 +0000 (+0800) Subject: 设备模板编辑页-区分来源显示返回设备模板列表或返回站点编辑 X-Git-Url: http://acesimba.cloud/gitweb/?a=commitdiff_plain;h=d8fae2b717641e67ac89d7b72fa59271adcd5fb6;p=StationBuilder.git 设备模板编辑页-区分来源显示返回设备模板列表或返回站点编辑 --- 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}
{[