Files
Migu2.0/MiGu.Server/wwwroot/assets/ProjectPropertiesView-wJsYQ6C1.js
T

3 lines
8.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{aN as R,c7 as se,bp as ie,bs as l,aG as C,aD as j,bL as h,aE as i,c8 as o,ai as re,bE as ce,C as ue,aF as F,aK as n,R as de,Q as pe,bS as O,bI as me,r as fe,bD as _e,aQ as ve,aJ as x,c9 as ye,b$ as be,aa as ge,ab as ke,a8 as he,S as Ee,ad as Ce,L as we,bC as d,ay as M,X as P,Y as Se,B as Le,t as Ve,bA as je,ak as q,ac as Fe,a9 as $e}from"./index-D5GfLbIx.js";/* 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 *//* empty css *//* empty css *//* empty css *//* empty css */import{r as E}from"./reflection-BwOBPyb9.js";const Be={class:"fme-root"},Ie={class:"fme-header"},Ne={class:"fme-desc"},xe={key:0,class:"fme-path"},Pe={key:1,class:"fme-path-empty"},ze={class:"fme-toolbar"},De={class:"fme-btn-text"},Te={key:0,class:"fme-locked"},Ue=R({__name:"FieldMemberEditor",props:{targetLabel:{},description:{},loader:{type:Function},onSet:{type:Function},onSave:{type:Function}},setup($,{expose:f}){const _=$,v=d(!1),y=d(!1),w=d(""),p=d([]),S=d([]),B=d("保存"),c=je({}),z=d(!1),s=M(()=>{const e=w.value.trim().toLowerCase();return e?p.value.filter(t=>t.key.toLowerCase().includes(e)||t.label.toLowerCase().includes(e)):p.value}),m=M(()=>p.value.reduce((e,t)=>t.locked?e:c[t.key]!==t.value?e+1:e,0)),g=M(()=>m.value>0);function D(e){return e==="Boolean"}function T(e){return e==="Int32"||e==="Int64"||e==="Int16"||e==="Byte"}function G(e){return e==="Single"||e==="Double"||e==="Decimal"}function K(e){const t=(e??"").trim().toLowerCase();return t==="true"||t==="1"||t==="yes"}function X(e){const t=parseInt(e,10);return Number.isFinite(t)?t:0}function Y(e){const t=parseFloat(e);return Number.isFinite(t)?t:0}function I(e){return c[e.key]??e.value}function N(e,t){c[e.key]=t}function W(e){if(e.locked)return!1;const t=c[e.key];return t!==void 0&&t!==e.value}async function k(){v.value=!0;try{const e=await _.loader();p.value=e.fields,S.value=e.pathInfos??[],e.saveButtonLabel&&(B.value=e.saveButtonLabel);for(const t of e.fields)c[t.key]=t.value;for(const t of Object.keys(c))e.fields.find(u=>u.key===t)||delete c[t]}catch(e){P.error(`加载${_.targetLabel}失败:${e.message}`)}finally{v.value=!1}}function Z(){for(const e of p.value)c[e.key]=e.value}async function ee(){const e=p.value.filter(r=>!r.locked&&c[r.key]!==r.value);y.value=!0;let t=0;const u=[];for(const r of e)try{await _.onSet(r.key,c[r.key]??""),t+=1}catch(L){u.push({key:r.key,reason:L.message})}if(u.length>0){y.value=!1;try{await Se.confirm(`共 ${e.length} 项改动:成功 ${t},失败 ${u.length}(首项: ${u[0].key}${u[0].reason})。
是否仍要把已成功应用的改动持久化到磁盘?`,"部分字段写入失败",{confirmButtonText:"仍然保存",cancelButtonText:"取消",type:"warning"})}catch{P.warning(`已取消保存(${t} 项已写入内存,${u.length} 项未生效)`),await k();return}y.value=!0}try{const r=await _.onSave();P.success(`已保存到:${r.path}(应用 ${t} 项改动${u.length>0?`${u.length} 项失败已忽略`:""}`),await k()}catch(r){P.error(`保存失败:${r.message}`)}finally{y.value=!1}}return se(()=>_.loader,()=>{k()}),ie(k),f({refresh:k}),(e,t)=>{const u=ue,r=Le,L=pe,H=de,U=fe,V=ke,te=he,J=Ee,A=Ce,ae=ge,le=we,oe=Ve,ne=be;return l(),C("div",Be,[j("div",Ie,[j("p",Ne,h($.description),1),S.value.length>0?(l(),i(r,{key:0,column:1,size:"small",border:"",class:"fme-paths"},{default:o(()=>[(l(!0),C(re,null,ce(S.value,a=>(l(),i(u,{key:a.label,label:a.label},{default:o(()=>[a.value?(l(),C("code",xe,h(a.value),1)):(l(),C("span",Pe,"("+h(a.emptyHint??"空")+")",1))]),_:2},1032,["label"]))),128))]),_:1})):F("",!0),j("div",ze,[n(H,{modelValue:w.value,"onUpdate:modelValue":t[0]||(t[0]=a=>w.value=a),placeholder:"按中文/英文键过滤",size:"small",clearable:"",class:"fme-search"},{prefix:o(()=>[n(L,null,{default:o(()=>[n(O(me))]),_:1})]),_:1},8,["modelValue"]),n(U,{size:"small",loading:v.value,onClick:k},{default:o(()=>[n(L,null,{default:o(()=>[n(O(_e))]),_:1}),t[1]||(t[1]=j("span",{class:"fme-btn-text"},"刷新",-1))]),_:1},8,["loading"]),n(U,{size:"small",type:"primary",disabled:!g.value&&!z.value,loading:y.value,onClick:ee},{default:o(()=>[n(L,null,{default:o(()=>[n(O(ve))]),_:1}),j("span",De,h(B.value)+h(g.value?`${m.value} 项未应用)`:""),1)]),_:1},8,["disabled","loading"]),g.value?(l(),i(U,{key:0,size:"small",link:"",type:"warning",onClick:Z},{default:o(()=>[...t[2]||(t[2]=[x(" 放弃未应用的改动 ",-1)])]),_:1})):F("",!0)])]),ye((l(),i(oe,{shadow:"never",class:"fme-table-card"},{default:o(()=>[n(ae,{data:s.value,stripe:"",border:"",size:"small",height:"100%",class:"fme-table","row-key":"key"},{default:o(()=>[n(V,{label:"中文说明",prop:"label","min-width":"240","show-overflow-tooltip":""}),n(V,{label:"英文键",prop:"key",width:"240","show-overflow-tooltip":""}),n(V,{label:"类型",prop:"typeName",width:"100"}),n(V,{label:"当前值(可编辑)","min-width":"260"},{default:o(({row:a})=>[a.locked?(l(),C("span",Te,h(a.value)+"(🔒 锁定)",1)):D(a.typeName)?(l(),i(te,{key:1,"model-value":K(I(a)),"onUpdate:modelValue":b=>N(a,String(!!b))},null,8,["model-value","onUpdate:modelValue"])):T(a.typeName)?(l(),i(J,{key:2,"model-value":X(I(a)),controls:!1,step:1,precision:0,size:"small",class:"fme-input","onUpdate:modelValue":b=>N(a,String(b??0))},null,8,["model-value","onUpdate:modelValue"])):G(a.typeName)?(l(),i(J,{key:3,"model-value":Y(I(a)),controls:!1,step:.1,size:"small",class:"fme-input","onUpdate:modelValue":b=>N(a,String(b??0))},null,8,["model-value","onUpdate:modelValue"])):(l(),i(H,{key:4,"model-value":I(a),size:"small",class:"fme-input","onUpdate:modelValue":b=>N(a,b)},null,8,["model-value","onUpdate:modelValue"]))]),_:1}),n(V,{label:"状态",width:"100",align:"center"},{default:o(({row:a})=>[a.locked?(l(),i(A,{key:0,size:"small",type:"info",effect:"plain"},{default:o(()=>[...t[3]||(t[3]=[x("只读",-1)])]),_:1})):W(a)?(l(),i(A,{key:1,size:"small",type:"warning",effect:"dark"},{default:o(()=>[...t[4]||(t[4]=[x("已修改",-1)])]),_:1})):(l(),i(A,{key:2,size:"small",type:"success",effect:"plain"},{default:o(()=>[...t[5]||(t[5]=[x("同步",-1)])]),_:1}))]),_:1})]),_:1},8,["data"]),!v.value&&p.value.length===0?(l(),i(le,{key:0,description:`未发现可编辑的 [FieldMember] 字段(target: ${$.targetLabel}`},null,8,["description"])):F("",!0)]),_:1})),[[ne,v.value]])])}}}),Q=q(Ue,[["__scopeId","data-v-708f3ec1"]]),Ae={class:"pp-page"},Oe=R({__name:"ProjectPropertiesView",setup($){const f=d("project"),_=d(null),v=d(null);function y(s){f.value=s}async function w(){const s=await E.getProjectFields();return{fields:s.fields,pathInfos:[{label:"最近加载/保存的项目 JSON",value:s.lastLoadedPath,emptyHint:"尚未通过 SimpleLite 加载或保存过项目"},{label:"simple.json autoload",value:s.autoloadPath,emptyHint:"未配置"}],saveButtonLabel:"保存(写回项目 JSON"}}function p(s,m){return E.setProjectField(s,m)}async function S(){return{path:(await E.saveProject()).path}}async function B(){const s=await E.getAppConfigFields();return{fields:s.fields,pathInfos:[{label:"保存目标",value:s.savePath,emptyHint:"simple.json"}],saveButtonLabel:"保存(写入 simple.json"}}function c(s,m){return E.setAppConfigField(s,m)}async function z(){return{path:(await E.saveAppConfig()).path}}return(s,m)=>{const g=$e,D=Fe;return l(),C("div",Ae,[n(D,{modelValue:f.value,"onUpdate:modelValue":m[0]||(m[0]=T=>f.value=T),type:"border-card",class:"pp-tabs admin-tabs",onTabChange:y},{default:o(()=>[n(g,{label:"项目属性 (Scene.conf)",name:"project"},{default:o(()=>[f.value==="project"?(l(),i(Q,{key:0,ref_key:"projectEditor",ref:_,"target-label":"项目属性",description:"对应 SimpleLite 桌面端主菜单「项目属性…」。编辑字段后点「保存」即可一次完成内存生效 + 写回项目 JSON 文件(含全部场景/车辆/路径/属性)。",loader:w,"on-set":p,"on-save":S},null,512)):F("",!0)]),_:1}),n(g,{label:"核心配置 (simple.json)",name:"app-config"},{default:o(()=>[f.value==="app-config"?(l(),i(Q,{key:0,ref_key:"appConfigEditor",ref:v,"target-label":"核心配置",description:"对应 SimpleLite 桌面端主菜单「核心配置 → 编辑配置…」。修改后点「保存」即可一次完成内存生效 + 写入可执行目录下的 simple.json。",loader:B,"on-set":c,"on-save":z},null,512)):F("",!0)]),_:1})]),_:1},8,["modelValue"])])}}}),st=q(Oe,[["__scopeId","data-v-b5a5a932"]]);export{st as default};