从 Simple-FR 拆出 Platform.Server 并重命名为 MiGu.Server;frontends 源码与构建脚本迁入本仓库。地图监控在 projection/cars 失败或为空时回退 reflection 车辆列表;Simple 仓库已移除旧 Platform.Server。 Co-authored-by: Cursor <cursoragent@cursor.com>
5 lines
26 KiB
JavaScript
5 lines
26 KiB
JavaScript
import{aG as xe,bA as Ce,b1 as Ve,b3 as o,aA as r,bB as a,aC as v,M as Ne,bC as Se,bt as ze,aa as Be,aF as n,ab as Te,ad as De,aE as p,bj as w,ag as Pe,s as Le,aB as _,az as c,bm as Z,am as fl,bc as Ee,av as j,bb as f,Y as m,Z as Y,u as Fe,al as Ae,S as yl,R as bl,bh as gl,ai as T,b6 as $e,ar as _l,L as kl,bd as ae,K as hl,aw as wl,bE as ne,G as $l,a8 as xl,A as Cl,T as Vl,F as Nl,aZ as Sl,H as zl,O as Bl,a1 as Tl,a0 as Dl,P as Pl,ba as Ll,J as El}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import{r as C}from"./reflection-Dr3WM5Rz.js";import{u as Fl}from"./useMapEditStream-DPAdbySW.js";const Al={class:"plg-header"},Ul={class:"plg-title"},Kl={key:0},Il=xe({__name:"PluginListPanel",props:{visible:{type:Boolean}},emits:["changed"],setup($,{expose:ie,emit:g}){const U=$,q=g,D=j(()=>U.visible!==!1),K=f([]),P=f(!1),S=f(!0),W=f(null);async function L(){P.value=!0;try{K.value=await C.listPlugins()}catch(y){m.warning(`插件列表加载失败:${y.message}(旧版 SimpleLite 可能未带 /plugins 接口,请重启)`)}finally{P.value=!1}}async function J(y){try{await Y.confirm(`确认卸载插件 ${y.name}?
|
||
|
||
此插件贡献了 ${y.missionTypes} 个进程类型 / ${y.carTypes} 个车/脚本类型;如果当前还有这些类型的实例存在,卸载会失败(请先在管理面板里删除)。`,"卸载插件",{type:"warning",confirmButtonText:"卸载",cancelButtonText:"取消"})}catch{return}W.value=y.name;try{const k=await C.unloadPlugin(y.name);m.success(k.message??`已卸载 ${y.name}`),q("changed"),await L()}catch(k){m.error(`卸载失败:${k.message}`)}finally{W.value=null}}return Ce(()=>U.visible,y=>{y&&L()}),Ve(()=>{D.value&&L()}),ie({refresh:L}),(y,k)=>{const E=Le,Q=Ne,B=Te,I=De,R=Pe,G=Be,u=Fe,F=ze;return D.value?(o(),r(u,{key:0,shadow:"never",class:"plugin-list-card"},{header:a(()=>[c("div",Al,[c("span",Ul,"已加载插件 ("+w(K.value.length)+")",1),n(E,{text:"",size:"small",icon:Z(fl),class:"plg-collapse",onClick:k[0]||(k[0]=x=>S.value=!S.value)},{default:a(()=>[p(w(S.value?"展开":"折叠"),1)]),_:1},8,["icon"]),n(E,{size:"small",loading:P.value,icon:Z(Ee),onClick:L},{default:a(()=>[...k[1]||(k[1]=[p("刷新",-1)])]),_:1},8,["loading","icon"])])]),default:a(()=>[S.value?_("",!0):(o(),v("div",Kl,[!P.value&&K.value.length===0?(o(),r(Q,{key:0,description:"尚未通过 PluginManager 加载任何插件 (重启 SimpleLite 后会自动迁移现有 plugins/ 内的 dll)"})):Se((o(),r(G,{key:1,data:K.value,size:"small",stripe:"",border:"",class:"plg-table"},{default:a(()=>[n(B,{prop:"name",label:"插件名",width:"200","show-overflow-tooltip":""}),n(B,{prop:"assemblyVersion",label:"版本",width:"120"}),n(B,{label:"类型贡献",width:"200"},{default:a(({row:x})=>[n(I,{size:"small",type:"success",effect:"plain",class:"plg-tag"},{default:a(()=>[p(" 进程 "+w(x.missionTypes),1)]),_:2},1024),n(I,{size:"small",type:"primary",effect:"plain",class:"plg-tag"},{default:a(()=>[p(" 车/脚本 "+w(x.carTypes),1)]),_:2},1024),n(I,{size:"small",type:"info",effect:"plain",class:"plg-tag"},{default:a(()=>[p(" 共 "+w(x.loadedTypes)+" type ",1)]),_:2},1024)]),_:1}),n(B,{prop:"dllPath",label:"路径","min-width":"240","show-overflow-tooltip":""}),n(B,{label:"状态",width:"120"},{default:a(({row:x})=>[x.collectible?(o(),r(I,{key:0,size:"small",type:"success"},{default:a(()=>[...k[2]||(k[2]=[p("可卸载",-1)])]),_:1})):(o(),r(R,{key:1,content:"此插件被加到 default ALC(旧路径加载),重启 SimpleLite 后会自动迁移到 collectible",placement:"top"},{default:a(()=>[n(I,{size:"small",type:"warning"},{default:a(()=>[...k[3]||(k[3]=[p("不可卸载",-1)])]),_:1})]),_:1}))]),_:1}),n(B,{label:"操作",width:"100"},{default:a(({row:x})=>[n(E,{text:"",size:"small",type:"danger",disabled:!x.collectible,loading:W.value===x.name,onClick:M=>J(x)},{default:a(()=>[...k[4]||(k[4]=[p(" 卸载 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1},8,["data"])),[[F,P.value]])]))]),_:1})):_("",!0)}}}),Rl=Ae(Il,[["__scopeId","data-v-fc091dff"]]),Ml={class:"ref-mgr-page"},Ol={class:"ref-mgr-header"},jl={class:"ref-mgr-title"},Zl={class:"ref-mgr-actions"},Wl={class:"ref-type-asm"},Gl={class:"ref-mgr-body"},Yl={class:"detail-header"},Hl={class:"detail-title"},Xl={class:"detail-id"},ql={class:"detail-name"},Jl={class:"detail-actions"},Ql={class:"field-section"},et={class:"field-section-title"},lt={key:1,class:"field-empty"},tt={class:"field-section"},at={class:"field-section-title"},nt={class:"dyn-row"},ot={key:1,class:"field-empty"},st={key:0,class:"field-section"},it={class:"field-section-title"},ut=["title"],dt={class:"field-section"},rt={class:"field-section-title"},ct={key:0,class:"field-empty"},mt={key:0,class:"method-grid script-method-grid"},pt=["disabled"],vt={key:0,class:"method-btn-spin"},ft={key:1,class:"method-btn-icon"},yt=["disabled"],bt={key:0,class:"method-btn-spin"},gt={key:1,class:"method-btn-icon"},_t={key:1,class:"field-empty"},kt={key:2,class:"method-grid"},ht=["disabled","onClick"],wt={key:0,class:"method-btn-spin"},$t={key:1,class:"method-btn-icon"},xt={class:"method-btn-label"},Ct={key:2,class:"method-btn-tag"},Vt=xe({__name:"ReflectionManagerPanel",props:{kind:{},kindLabel:{},title:{},emptyText:{},disableCreate:{type:Boolean},disableDelete:{type:Boolean},showSummaryColumn:{type:Boolean},summaryLabel:{},showStatusColumn:{type:Boolean},statusLabel:{},showScriptActions:{type:Boolean}},setup($,{expose:ie}){const g=$,U=f(!1),q=f(!1),D=f(null),K=f(null),P=f(null),S=f(null),W=f(!1),L=f(!1),J=f(""),y=f(null),k=f(null),E=f(!1),Q=f(""),B=f(""),I=f(null),R=f([]),G=f([]),u=f(null),F=f([]),x=f([]),M=f([]),ue=j(()=>F.value.filter(l=>l.source!=="dynamic")),de=j(()=>F.value.filter(l=>l.source==="dynamic")),re=j(()=>!!g.showScriptActions&&g.kind==="script"&&!!u.value),Ue=j(()=>M.value.length+(re.value?2:0)),Ke=j(()=>{let l=110;return g.showScriptActions&&g.kind==="script"&&(l+=130),g.disableDelete||(l+=60),l}),pe=j(()=>{const l=J.value.trim().toLowerCase();return l?R.value.filter(e=>String(e.id).includes(l)||(e.name??"").toLowerCase().includes(l)||(e.typeName??"").toLowerCase().includes(l)):R.value}),Ie=new Set(["process","mission","car","vehicle"]),Re=j(()=>Ie.has(g.kind));async function z(){U.value=!0;try{const[l,e]=await Promise.all([C.listObjects(g.kind),C.listCreatableTypes(g.kind).catch(()=>[])]);R.value=l,G.value=e,u.value&&!R.value.find(i=>i.id===u.value.id)&&(u.value=null,F.value=[],M.value=[],x.value=[])}catch(l){m.error(`加载 ${g.kindLabel} 失败:${l.message}`)}finally{U.value=!1}}async function A(l){if(u.value=l,F.value=[],M.value=[],x.value=[],!!l){q.value=!0;try{const e=l.subKind??g.kind,i=await C.getBundle(e,l.id);i.fieldList&&i.fieldList.length>0?F.value=i.fieldList.map(d=>({...d})):F.value=Object.entries(i.fields??{}).map(([d,b])=>({key:d,value:String(b),source:"dynamic"})),M.value=i.methods??[],x.value=i.status??[]}catch(e){m.error(`加载详情失败:${e.message}`)}finally{q.value=!1}}}function ee(l){return l?.subKind??g.kind}async function Me(){W.value=!0;try{const l=await C.reloadPlugins();m.success(`已扫描 plugins/ 目录:发现 ${l.totalDlls} dll,新加载 ${l.newlyLoaded};进程类型 ${l.missionTypes}、车辆/脚本类型 ${l.carTypes}`),await z(),I.value?.refresh()}catch(l){m.error(`刷新插件失败:${l.message}`)}finally{W.value=!1}}const le=f(!1),V=f(""),s=Ll({name:"",layer:"",x:0,y:0,z:0,siteA:0,siteB:0,trackKind:"line",imagePath:"",modelPath:"",content:"Text"});function Oe(l){switch(l){case"site":return"站点";case"track":return"路径";case"image":return"图片";case"text":return"文本";case"model":return"模型";case"car":return"车辆";default:return l}}function ve(l){const e=l??(g.kind==="special"?"image":g.kind==="scene"?"site":g.kind==="vehicle"?"car":g.kind);V.value=e,s.name="",s.layer="",s.x=0,s.y=0,s.z=0,s.siteA=0,s.siteB=0,s.trackKind="line",s.imagePath="",s.modelPath="",s.content="Text",le.value=!0}ie({openCreateForm:ve,refresh:z});async function fe(){L.value=!0;try{const l=V.value;let e=l;const i={name:s.name||void 0,layer:s.layer||void 0};l==="site"?(i.x=s.x,i.y=s.y,i.z=s.z):l==="track"?(e=s.trackKind==="line"?"track":s.trackKind,i.siteA=s.siteA,i.siteB=s.siteB):l==="image"?(i.x=s.x,i.y=s.y,i.imagePath=s.imagePath):l==="text"?(i.x=s.x,i.y=s.y,i.content=s.content):l==="model"?(i.x=s.x,i.y=s.y,i.modelPath=s.modelPath):l==="car"&&(i.x=s.x,i.y=s.y);const d=await C.createObject(e,"",i);m.success(`已创建 ${d.typeName??l} #${d.id}`),le.value=!1,await z();const b=R.value.find(oe=>oe.id===d.id);b&&await A(b)}catch(l){m.error(`创建失败:${l.message}`)}finally{L.value=!1}}async function je(l){try{let e;try{e=(await Y.prompt(`为新${g.kindLabel}指定名称(可空,留空使用默认名)`,`新建${g.kindLabel}`,{inputValue:"",confirmButtonText:"创建",cancelButtonText:"取消"})).value||void 0}catch{return}const i=await C.createObject(g.kind,l,{name:e});m.success(`已创建 ${i.typeName} #${i.id}`),await z();const d=R.value.find(b=>b.id===i.id);d&&await A(d)}catch(e){m.error(`创建失败:${e.message}`)}}async function Ze(l){try{await Y.confirm(`确认删除 ${l.typeName} #${l.id} (${l.name})?该操作无法撤销。`,`删除${g.kindLabel}`,{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"})}catch{return}K.value=l.id;try{const e=ee(l);await C.deleteObject(e,l.id),m.success(`已删除 ${l.typeName} #${l.id}`),u.value?.id===l.id&&(u.value=null),await z()}catch(e){m.error(`删除失败:${e.message}`)}finally{K.value=null}}async function H(l,e){if(u.value){S.value=l;try{const i=ee(u.value);await C.setField(i,u.value.id,l,e),m.success(`已更新 ${l}`)}catch(i){m.error(`更新 ${l} 失败:${i.message}`),await A(u.value)}finally{S.value=null}}}async function We(l){if(u.value){try{await Y.confirm(`确认删除动态字段 "${l}"?`,"删除字段",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"})}catch{return}P.value=l;try{const e=ee(u.value);await C.deleteField(e,u.value.id,l),m.success(`已删除字段 ${l}`),await A(u.value)}catch(e){m.error(`删除字段失败:${e.message}`)}finally{P.value=null}}}async function Ge(){if(!u.value)return;let l="";try{l=(await Y.prompt("字段名(key)","添加动态字段",{inputValidator:d=>!!d&&/^[A-Za-z_][A-Za-z0-9_\-]*$/.test(d)||"只允许字母/数字/下划线/横线,且首字符非数字",confirmButtonText:"下一步",cancelButtonText:"取消"})).value}catch{return}let e="";try{e=(await Y.prompt(`字段 "${l}" 的初始值(可空)`,"添加动态字段",{inputValue:"",confirmButtonText:"保存",cancelButtonText:"取消"})).value}catch{return}if(F.value.find(i=>i.key===l)){m.warning(`字段 ${l} 已存在,请直接编辑`);return}await H(l,e),await A(u.value)}async function ye(l){if(l)try{const e=ee(l);await C.setSelection(e,l.id),m.success(`已在 3D 视口高亮 ${l.typeName??e} #${l.id}`)}catch(e){m.error(`高亮失败:${e.message}`)}}async function be(l){if(l){y.value="source",k.value=l.id;try{const e=await C.getScriptSource(l.id);Q.value=`脚本 ${e.name||e.typeName}(#${e.id}) 内容`,B.value=e.script||"(无脚本)",E.value=!0}catch(e){m.error(`查看脚本失败:${e.message}`)}finally{y.value=null,k.value=null}}}async function ge(l){if(l){y.value="status",k.value=l.id;try{const e=await C.getScriptExceptionStatus(l.id);Q.value=`脚本 ${e.name||e.typeName}(#${e.id}) 异常状态`,B.value=e.report||"(无异常状态)",E.value=!0}catch(e){m.error(`查看异常状态失败:${e.message}`)}finally{y.value=null,k.value=null}}}function Ye(){u.value&&be(u.value)}function He(){u.value&&ge(u.value)}function _e(l,e){return k.value===l.id&&y.value===e}async function Xe(){try{await navigator.clipboard.writeText(B.value),m.success("已复制到剪贴板")}catch{m.warning("复制失败,请手动选择文本复制")}}async function qe(l){if(!u.value)return;const e=ee(u.value);if(l.hasParams){const i={};for(const d of l.params)try{const b=await Y.prompt(`参数 ${d.name} (${d.typeName})`+(d.hasDefault?`
|
||
默认: ${d.defaultValue}`:""),`调用 ${l.label??l.methodName}`,{inputValue:d.defaultValue??""});i[d.name]=b.value}catch{return}D.value=l.methodName;try{const d=await C.execute(e,u.value.id,l.methodName,i);m.success(`${l.label??l.methodName} 完成${d.returnValue?`:${d.returnValue}`:""}`),await A(u.value)}catch(d){m.error(`执行失败:${d.message}`)}finally{D.value=null}return}D.value=l.methodName;try{const i=await C.execute(e,u.value.id,l.methodName);m.success(`${l.label??l.methodName} 完成${i.returnValue?`:${i.returnValue}`:""}`),await A(u.value)}catch(i){m.error(`执行失败:${i.message}`)}finally{D.value=null}}function Je(l){return l.typeName==="Boolean"?!0:l.value==="true"||l.value==="false"||l.value==="True"||l.value==="False"}function Qe(l){return l.key==="color"||l.key==="textColor"?!0:/^#[0-9a-fA-F]{3,8}$/.test(l.value)}function el(l){return l.typeName?["Int32","Int64","Single","Double","Decimal","UInt32","UInt64"].includes(l.typeName):!1}function ll(l){return l==="true"||l==="True"||l==="1"}function tl(l){if(l==null||l==="")return;const e=Number(l);return Number.isFinite(e)?e:void 0}function al(l){const e=l.typeName?.trim();return e&&e!=="String"?`${l.key} (${e})`:l.key}function nl(l){const e=(l.value??"").trim();return e||(l.typeName?`(空 · ${l.typeName})`:"(空)")}function ol(l){if((l.typeName??"").endsWith("[]"))return!0;const i=(l.value??"").trim();return i.startsWith("[")||i.startsWith("{")}return Fl({onObjectCreated:()=>z(),onObjectDeleted:()=>z(),onObjectPatched:()=>{u.value&&A(u.value)},onObjectBatchChanged:()=>z()}),Ce(()=>g.kind,z),Ve(z),(l,e)=>{const i=bl,d=yl,b=Le,oe=hl,sl=kl,il=El,te=Pe,X=Te,ul=Be,ke=Ne,he=Fe,dl=De,rl=xl,cl=Cl,O=Vl,ce=$l,me=Nl,se=Dl,ml=Tl,N=Pl,pl=Bl,we=zl,vl=ze;return o(),v("div",Ml,[n(Rl,{ref_key:"pluginPanelRef",ref:I,visible:!0,onChanged:z},null,512),c("div",Ol,[c("h2",jl,w($.title),1),c("div",Zl,[n(d,{modelValue:J.value,"onUpdate:modelValue":e[0]||(e[0]=t=>J.value=t),placeholder:`搜索 ${$.kindLabel} (id / 名称 / 类型)`,size:"small",clearable:"",class:"ref-mgr-search"},{prefix:a(()=>[n(i,null,{default:a(()=>[n(Z(gl))]),_:1})]),_:1},8,["modelValue","placeholder"]),$.disableCreate?_("",!0):(o(),v(T,{key:0},[Re.value?(o(),r(il,{key:0,trigger:"click",disabled:G.value.length===0,onCommand:je},{dropdown:a(()=>[n(sl,null,{default:a(()=>[(o(!0),v(T,null,ae(G.value,t=>(o(),r(oe,{key:t.typeName,command:t.typeName},{default:a(()=>[p(w(t.label)+" ",1),c("span",Wl,"· "+w(t.shortName),1)]),_:2},1032,["command"]))),128)),G.value.length===0?(o(),r(oe,{key:0,disabled:""},{default:a(()=>[...e[20]||(e[20]=[p(" 未发现可创建的子类型 ",-1)])]),_:1})):_("",!0)]),_:1})]),default:a(()=>[n(b,{type:"primary",size:"small",icon:Z($e),disabled:G.value.length===0},{default:a(()=>[p(" 新建"+w($.kindLabel),1),n(i,{class:"el-icon--right"},{default:a(()=>[n(Z(_l))]),_:1})]),_:1},8,["icon","disabled"])]),_:1},8,["disabled"])):(o(),r(b,{key:1,type:"primary",size:"small",icon:Z($e),onClick:e[1]||(e[1]=t=>ve())},{default:a(()=>[p(" 新建"+w($.kindLabel),1)]),_:1},8,["icon"]))],64)),n(te,{content:"重新扫描 ./plugins 目录加载新增 .dll,并重建可创建类型列表",placement:"bottom"},{default:a(()=>[n(b,{size:"small",loading:W.value,icon:Z(wl),onClick:Me},{default:a(()=>[...e[21]||(e[21]=[p(" 刷新插件 ",-1)])]),_:1},8,["loading","icon"])]),_:1}),n(b,{size:"small",loading:U.value,icon:Z(Ee),onClick:z},{default:a(()=>[...e[22]||(e[22]=[p("刷新",-1)])]),_:1},8,["loading","icon"])])]),c("div",Gl,[n(he,{shadow:"never",class:"ref-mgr-list-card"},{default:a(()=>[Se((o(),r(ul,{data:pe.value,stripe:"",border:"",size:"small","highlight-current-row":"",class:"ref-mgr-table",onCurrentChange:A},{default:a(()=>[n(X,{prop:"id",label:"ID",width:"70"}),n(X,{prop:"name",label:"名称","min-width":"160"}),n(X,{prop:"typeName",label:"类型",width:"160","show-overflow-tooltip":""}),$.showSummaryColumn?(o(),r(X,{key:0,prop:"summary",label:$.summaryLabel??"概况","min-width":"160","show-overflow-tooltip":""},null,8,["label"])):_("",!0),$.showStatusColumn?(o(),r(X,{key:1,prop:"status",label:$.statusLabel??"状态",width:"120","show-overflow-tooltip":""},null,8,["label"])):_("",!0),n(X,{label:"操作",width:Ke.value},{default:a(({row:t})=>[n(b,{text:"",size:"small",onClick:ne(h=>ye(t),["stop"])},{default:a(()=>[...e[23]||(e[23]=[p(" 3D 高亮 ",-1)])]),_:1},8,["onClick"]),$.showScriptActions&&$.kind==="script"?(o(),v(T,{key:0},[n(b,{text:"",size:"small",loading:_e(t,"source"),disabled:y.value!==null,onClick:ne(h=>be(t),["stop"])},{default:a(()=>[...e[24]||(e[24]=[p(" 查看脚本 ",-1)])]),_:1},8,["loading","disabled","onClick"]),n(b,{text:"",size:"small",loading:_e(t,"status"),disabled:y.value!==null,onClick:ne(h=>ge(t),["stop"])},{default:a(()=>[...e[25]||(e[25]=[p(" 异常状态 ",-1)])]),_:1},8,["loading","disabled","onClick"])],64)):_("",!0),$.disableDelete?_("",!0):(o(),r(b,{key:1,text:"",size:"small",type:"danger",loading:K.value===t.id,onClick:ne(h=>Ze(t),["stop"])},{default:a(()=>[...e[26]||(e[26]=[p(" 删除 ",-1)])]),_:1},8,["loading","onClick"]))]),_:1},8,["width"])]),_:1},8,["data"])),[[vl,U.value]]),!U.value&&pe.value.length===0?(o(),r(ke,{key:0,description:$.emptyText},null,8,["description"])):_("",!0)]),_:1}),n(he,{shadow:"never",class:"ref-mgr-detail-card"},{default:a(()=>[u.value?(o(),v(T,{key:1},[c("div",Yl,[c("div",Hl,[n(dl,{size:"small",type:"info"},{default:a(()=>[p(w(u.value.typeName),1)]),_:1}),c("span",Xl,"#"+w(u.value.id),1),c("span",ql,w(u.value.name),1)]),c("div",Jl,[c("button",{class:"header-action-btn",onClick:e[2]||(e[2]=t=>ye(u.value))},"在 3D 中高亮")])]),c("div",Ql,[c("div",et,"强类型字段 ("+w(ue.value.length)+")",1),ue.value.length>0?(o(),r(me,{key:0,column:2,border:"",size:"small"},{default:a(()=>[(o(!0),v(T,null,ae(ue.value,t=>(o(),r(ce,{key:t.key,label:t.key,"label-style":t.locked?{color:"#aaa"}:void 0},{default:a(()=>[Je(t)?(o(),r(rl,{key:0,"model-value":ll(t.value),disabled:!!t.locked||S.value===t.key,size:"small",onChange:h=>H(t.key,h?"true":"false")},null,8,["model-value","disabled","onChange"])):Qe(t)?(o(),r(cl,{key:1,"model-value":t.value||"#ffffff",disabled:!!t.locked||S.value===t.key,"show-alpha":"",size:"small",onChange:h=>H(t.key,h??"")},null,8,["model-value","disabled","onChange"])):el(t)?(o(),r(O,{key:2,"model-value":tl(t.value),controls:!1,disabled:!!t.locked||S.value===t.key,size:"small",class:"field-num",onChange:h=>H(t.key,h==null?"":String(h))},null,8,["model-value","disabled","onChange"])):(o(),r(d,{key:3,modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,size:"small",disabled:!!t.locked||S.value===t.key,onChange:h=>H(t.key,h)},null,8,["modelValue","onUpdate:modelValue","disabled","onChange"]))]),_:2},1032,["label","label-style"]))),128))]),_:1})):(o(),v("div",lt,"该对象未声明任何 [FieldMember]"))]),c("div",tt,[c("div",at,[c("span",null,"动态字段 ("+w(de.value.length)+")",1),c("button",{class:"add-field-btn",onClick:Ge},"+ 添加字段")]),de.value.length>0?(o(),r(me,{key:0,column:1,border:"",size:"small"},{default:a(()=>[(o(!0),v(T,null,ae(de.value,t=>(o(),r(ce,{key:t.key,label:t.key},{default:a(()=>[c("div",nt,[n(d,{modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,size:"small",disabled:S.value===t.key,onChange:h=>H(t.key,h)},null,8,["modelValue","onUpdate:modelValue","disabled","onChange"]),n(te,{content:"删除该字段",placement:"top"},{default:a(()=>[n(b,{size:"small",text:"",type:"danger",loading:P.value===t.key,onClick:h=>We(t.key)},{default:a(()=>[...e[27]||(e[27]=[p(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)])]),_:2},1032,["label"]))),128))]),_:1})):(o(),v("div",ot,"尚无动态字段;点击右上角「+ 添加字段」"))]),x.value.length>0?(o(),v("div",st,[c("div",it,"运行状态 (只读, "+w(x.value.length)+")",1),n(me,{column:1,border:"",size:"small"},{default:a(()=>[(o(!0),v(T,null,ae(x.value,t=>(o(),r(ce,{key:t.key,label:al(t)},{default:a(()=>[c("span",{class:Sl(["status-value",{"status-value--array":ol(t)}]),title:t.typeName},w(nl(t)),11,ut)]),_:2},1032,["label"]))),128))]),_:1})])):_("",!0),c("div",dt,[c("div",rt,"动作 / 方法 ("+w(Ue.value)+")",1),q.value?(o(),v("div",ct,"加载方法中…")):(o(),v(T,{key:1},[re.value?(o(),v("div",mt,[n(te,{content:"弹窗展示当前 CarProgram 的完整 script 内容",placement:"top"},{default:a(()=>[c("button",{class:"method-btn",disabled:y.value!==null,onClick:Ye},[y.value==="source"?(o(),v("span",vt,"⟳")):(o(),v("span",ft,"▶")),e[28]||(e[28]=c("span",{class:"method-btn-label"},"查看脚本",-1))],8,pt)]),_:1}),n(te,{content:"弹窗展示 state、exception、notifies 等异常状态报告",placement:"top"},{default:a(()=>[c("button",{class:"method-btn",disabled:y.value!==null,onClick:He},[y.value==="status"?(o(),v("span",bt,"⟳")):(o(),v("span",gt,"▶")),e[29]||(e[29]=c("span",{class:"method-btn-label"},"查看异常状态",-1))],8,yt)]),_:1})])):_("",!0),M.value.length===0&&!re.value?(o(),v("div",_t,"该类型未暴露 [MethodMember]")):M.value.length>0?(o(),v("div",kt,[(o(!0),v(T,null,ae(M.value,t=>(o(),r(te,{key:t.methodName,content:t.description??t.hint??"",disabled:!t.description&&!t.hint,placement:"top"},{default:a(()=>[c("button",{class:"method-btn",disabled:D.value===t.methodName,onClick:h=>qe(t)},[D.value===t.methodName?(o(),v("span",wt,"⟳")):(o(),v("span",$t,"▶")),c("span",xt,w(t.label??t.methodName),1),t.hasParams?(o(),v("span",Ct,"带参")):_("",!0)],8,ht)]),_:2},1032,["content","disabled"]))),128))])):_("",!0)],64))])],64)):(o(),r(ke,{key:0,description:"左侧选中一行查看 / 编辑详情"}))]),_:1})]),n(we,{modelValue:le.value,"onUpdate:modelValue":e[17]||(e[17]=t=>le.value=t),title:`新建 ${$.kindLabel}${V.value?" · "+Oe(V.value):""}`,width:"480px","append-to-body":""},{footer:a(()=>[n(b,{onClick:e[16]||(e[16]=t=>le.value=!1)},{default:a(()=>[...e[34]||(e[34]=[p("取消",-1)])]),_:1}),n(b,{type:"primary",loading:L.value,onClick:fe},{default:a(()=>[...e[35]||(e[35]=[p("创建",-1)])]),_:1},8,["loading"])]),default:a(()=>[n(pl,{model:s,size:"small","label-width":"100px",onSubmit:ne(fe,["prevent"])},{default:a(()=>[V.value==="track"?(o(),r(N,{key:0,label:"路径类型"},{default:a(()=>[n(ml,{modelValue:s.trackKind,"onUpdate:modelValue":e[3]||(e[3]=t=>s.trackKind=t)},{default:a(()=>[n(se,{value:"line"},{default:a(()=>[...e[30]||(e[30]=[p("直线",-1)])]),_:1}),n(se,{value:"bezier"},{default:a(()=>[...e[31]||(e[31]=[p("贝塞尔",-1)])]),_:1}),n(se,{value:"arc"},{default:a(()=>[...e[32]||(e[32]=[p("圆弧",-1)])]),_:1}),n(se,{value:"nurbs"},{default:a(()=>[...e[33]||(e[33]=[p("NURBS",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})):_("",!0),n(N,{label:"名称"},{default:a(()=>[n(d,{modelValue:s.name,"onUpdate:modelValue":e[4]||(e[4]=t=>s.name=t),placeholder:"(可空,留空走默认名)"},null,8,["modelValue"])]),_:1}),n(N,{label:"图层"},{default:a(()=>[n(d,{modelValue:s.layer,"onUpdate:modelValue":e[5]||(e[5]=t=>s.layer=t),placeholder:"g / main / ..."},null,8,["modelValue"])]),_:1}),["site","image","text","model"].includes(V.value)?(o(),v(T,{key:1},[n(N,{label:"X (mm)"},{default:a(()=>[n(O,{modelValue:s.x,"onUpdate:modelValue":e[6]||(e[6]=t=>s.x=t),controls:!1},null,8,["modelValue"])]),_:1}),n(N,{label:"Y (mm)"},{default:a(()=>[n(O,{modelValue:s.y,"onUpdate:modelValue":e[7]||(e[7]=t=>s.y=t),controls:!1},null,8,["modelValue"])]),_:1}),V.value==="site"?(o(),r(N,{key:0,label:"Z (mm)"},{default:a(()=>[n(O,{modelValue:s.z,"onUpdate:modelValue":e[8]||(e[8]=t=>s.z=t),controls:!1},null,8,["modelValue"])]),_:1})):_("",!0)],64)):_("",!0),V.value==="track"?(o(),v(T,{key:2},[n(N,{label:"起点站 ID"},{default:a(()=>[n(O,{modelValue:s.siteA,"onUpdate:modelValue":e[9]||(e[9]=t=>s.siteA=t),controls:!1,min:1},null,8,["modelValue"])]),_:1}),n(N,{label:"终点站 ID"},{default:a(()=>[n(O,{modelValue:s.siteB,"onUpdate:modelValue":e[10]||(e[10]=t=>s.siteB=t),controls:!1,min:1},null,8,["modelValue"])]),_:1})],64)):_("",!0),V.value==="image"?(o(),r(N,{key:3,label:"图片路径"},{default:a(()=>[n(d,{modelValue:s.imagePath,"onUpdate:modelValue":e[11]||(e[11]=t=>s.imagePath=t),placeholder:"/uploads/xxxxx.png"},null,8,["modelValue"])]),_:1})):_("",!0),V.value==="model"?(o(),r(N,{key:4,label:"模型路径"},{default:a(()=>[n(d,{modelValue:s.modelPath,"onUpdate:modelValue":e[12]||(e[12]=t=>s.modelPath=t),placeholder:"/uploads/xxxxx.glb"},null,8,["modelValue"])]),_:1})):_("",!0),V.value==="text"?(o(),r(N,{key:5,label:"文本"},{default:a(()=>[n(d,{modelValue:s.content,"onUpdate:modelValue":e[13]||(e[13]=t=>s.content=t),placeholder:"Text"},null,8,["modelValue"])]),_:1})):_("",!0),V.value==="car"?(o(),r(N,{key:6,label:"X (mm)"},{default:a(()=>[n(O,{modelValue:s.x,"onUpdate:modelValue":e[14]||(e[14]=t=>s.x=t),controls:!1},null,8,["modelValue"])]),_:1})):_("",!0),V.value==="car"?(o(),r(N,{key:7,label:"Y (mm)"},{default:a(()=>[n(O,{modelValue:s.y,"onUpdate:modelValue":e[15]||(e[15]=t=>s.y=t),controls:!1},null,8,["modelValue"])]),_:1})):_("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),n(we,{modelValue:E.value,"onUpdate:modelValue":e[19]||(e[19]=t=>E.value=t),title:Q.value,width:"720px","append-to-body":""},{footer:a(()=>[n(b,{onClick:Xe},{default:a(()=>[...e[36]||(e[36]=[p("复制",-1)])]),_:1}),n(b,{type:"primary",onClick:e[18]||(e[18]=t=>E.value=!1)},{default:a(()=>[...e[37]||(e[37]=[p("关闭",-1)])]),_:1})]),default:a(()=>[n(d,{"model-value":B.value,type:"textarea",autosize:{minRows:16,maxRows:26},readonly:"",class:"script-dialog-textarea"},null,8,["model-value"])]),_:1},8,["modelValue","title"])])}}}),qt=Ae(Vt,[["__scopeId","data-v-07b20134"]]);export{qt as R};
|