From 370b32d15f9e36227371df8da0fac975dfac12fa Mon Sep 17 00:00:00 2001 From: "wang.yu" Date: Wed, 19 Aug 2026 14:21:34 +0800 Subject: [PATCH] =?utf8?q?=E9=A2=86=E5=9F=9F=E6=96=B9=E6=A1=88=E5=BA=93?= =?utf8?q?=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=88=9B=E5=BB=BA=E5=A4=B1=E8=B4=A5?= =?utf8?q?=E4=B8=8E=E8=AE=BE=E5=A4=87=E6=A8=A1=E7=89=88=E9=80=89=E6=8B=A9?= =?utf8?q?=E6=8A=96=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - CreateTemplate: domain_id 在 domains 异步加载后自动默认到首个领域, 并加兜底校验,避免提交 domain_id=0 被后端拒(创建失败/列表不显示) - DomainDetail.load 增加 silent 模式;DeviceTemplatePicker 勾选后静默刷新, 不再触发全屏「加载中」导致的页面抖动 --- app/page.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index a5b25c1..fdf6637 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1076,7 +1076,8 @@ function CreateTemplate({doms,notify,onCreated}:{doms:any[];notify:(m:string)=>v const [domain_id,setDomainId]=useState(doms[0]?.id||0); const [name,setName]=useState(""); const [description,setDesc]=useState(""); const [status,setStatus]=useState("available"); const [version,setVersion]=useState("1.0"); const [creator,setCreator]=useState(CURRENT_USER_EMAIL); - const save=async()=>{ try{ const r:any=await fetchDb("/domain-templates",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain_id,name,description,status,version,creator})}); notify("已创建"); onCreated(r.id); }catch(e:any){ notify("创建失败:"+e.message); } }; + useEffect(()=>{ if(doms.length && !domain_id) setDomainId(doms[0].id); },[doms]); + const save=async()=>{ if(!domain_id){ notify("请选择所属领域"); return; } try{ const r:any=await fetchDb("/domain-templates",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain_id,name,description,status,version,creator})}); notify("已创建"); onCreated(r.id); }catch(e:any){ notify("创建失败:"+e.message); } }; return
@@ -1248,7 +1249,7 @@ function DomainDetail({id,go,notify,onBack,onCreated}:{id:number|null;go:(p:Page const [loading,setLoading]=useState(false); const [m,setM]=useState(null); const loadDoms=async()=>{ try{ setDoms(await fetchDb("/domains") as any); }catch{} }; - const load=async()=>{ if(id==null){ setT(null); return; } setLoading(true); try{ setT(await fetchDb(`/domain-templates/${id}`) as any); }catch(e:any){ notify("加载失败:"+e.message); } finally{ setLoading(false); } }; + const load=async(silent=false)=>{ if(id==null){ setT(null); return; } if(!silent) setLoading(true); try{ setT(await fetchDb(`/domain-templates/${id}`) as any); }catch(e:any){ notify("加载失败:"+e.message); } finally{ if(!silent) setLoading(false); } }; useEffect(()=>{ loadDoms(); load(); },[id]); useEffect(()=>{ if(t) setM({domain_id:t.domain_id,name:t.name,description:t.description||"",status:t.status,version:t.version,creator:t.creator||""}); },[t?.id]); if(id==null) return ; @@ -1272,7 +1273,7 @@ function DomainDetail({id,go,notify,onBack,onCreated}:{id:number|null;go:(p:Page
- d.id)} notify={notify} onChange={load}/> + d.id)} notify={notify} onChange={()=>load(true)}/>
{t.pages.map((p:any)=>)} -- 2.43.0