从 Simple-FR 拆出 Platform.Server 并重命名为 MiGu.Server;frontends 源码与构建脚本迁入本仓库。地图监控在 projection/cars 失败或为空时回退 reflection 车辆列表;Simple 仓库已移除旧 Platform.Server。 Co-authored-by: Cursor <cursoragent@cursor.com>
2 lines
5.5 KiB
JavaScript
2 lines
5.5 KiB
JavaScript
import{aQ as T,f as J,aH as K,aG as L,bb as g,bA as R,b1 as V,aA as O,bB as i,b3 as k,aF as c,aC as j,bj as u,aB as w,az as p,a2 as D,x as G,u as I,be as H,aE as f,ad as Q,s as U,bm as z,bc as W,as as Y,av as E,Y as y,al as q}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{P as X}from"./PermissionGuard-BxagL6-4.js";import{r as C,a as Z}from"./reflection-Dr3WM5Rz.js";async function tt(t){const{data:e}=await T.get(`/config/${t}`);return e}async function et(t,e){const{data:a}=await T.put(`/config/${t}`,e);return a}function S(){return JSON.parse(JSON.stringify(J.monitor))}function h(t){const e=JSON.parse(JSON.stringify(J));if(!t)return e;const a={...S(),...t.monitor??{},car:{...S().car,...t.monitor?.car??{}},site:{...S().site,...t.monitor?.site??{}},track:{...S().track,...t.monitor?.track??{}},carActionByType:{...t.monitor?.carActionByType??{}}};return{...e,...t,playback:{...e.playback,...t.playback??{}},logRetention:{...e.logRetention,...t.logRetention??{}},version:{...e.version,...t.version??{}},monitor:a}}function at(t){return{carActionByType:{...t.carActionByType??{}},siteActionKeys:[...t.site?.methods??[]],trackActionKeys:[...t.track?.methods??[]]}}async function ht(t){const e=h(t);try{const a=await C.getMonitorConfig(),r=at(a.config);e.monitor.carActionByType=r.carActionByType,e.monitor.site.actionKeys=r.siteActionKeys,e.monitor.track.actionKeys=r.trackActionKeys}catch{}return e}async function bt(t){const e=h(t).monitor;let a=Z();try{a=(await C.getMonitorConfig()).config}catch{}await C.saveMonitorConfig({car:{fields:[...a.car?.fields??[]],status:[...a.car?.status??[]],methods:[...a.car?.methods??[]]},site:{fields:[...a.site?.fields??[]],status:[...a.site?.status??[]],methods:[...e.site.actionKeys]},track:{fields:[...a.track?.fields??[]],status:[...a.track?.status??[]],methods:[...e.track.actionKeys]},carActionByType:{...e.carActionByType}})}const ot=K("config",{state:()=>({cache:{},loading:{}}),actions:{async load(t,e=!1){if(!e&&this.cache[t])return this.cache[t];this.loading[t]=!0;try{const a=await tt(t);return t==="ops"&&a.payload&&(a.payload=h(a.payload)),this.cache[t]=a,a}finally{this.loading[t]=!1}},async save(t,e){this.loading[t]=!0;try{const a=t==="ops"?h(e):e,r=await et(t,a);return this.cache[t]=r,r}finally{this.loading[t]=!1}}}}),nt={class:"cpb-header"},st={class:"cpb-title"},it={key:0,class:"cpb-desc"},rt={class:"cpb-body"},ct={class:"cpb-json"},lt=L({__name:"ConfigPageBase",props:{section:{},title:{},description:{},defaults:{},normalizePayload:{type:Function},afterLoad:{type:Function},beforeSave:{type:Function},afterSave:{type:Function}},setup(t){const e=t,a=ot(),r=g(null),l=g(JSON.parse(JSON.stringify(e.defaults))),b=g(!1),m=g(!1),P=E(()=>JSON.stringify(l.value,null,2)),M=E(()=>r.value?.updatedAt?new Date(r.value.updatedAt).toLocaleString("zh-CN"):"—");function A(s){l.value=s}function $(s){let o=JSON.parse(JSON.stringify(s||e.defaults));e.normalizePayload&&(o=e.normalizePayload(o)),l.value=o}async function B(s,o){b.value=!0;try{const n=await a.load(e.section,s);r.value=n,$(n.payload),e.afterLoad&&await e.afterLoad(l.value,A),o&&y.success("已重载")}catch(n){y.error(`加载失败:${n instanceof Error?n.message:String(n)}`)}finally{b.value=!1}}async function _(s=!1){await B(s,s)}async function x(){m.value=!0;let s=l.value;if(e.normalizePayload&&(s=e.normalizePayload(s)),e.beforeSave)try{await e.beforeSave(s)}catch(n){y.error(`地图监控配置保存失败:${n instanceof Error?n.message:String(n)}`),m.value=!1;return}let o="";try{const n=await a.save(e.section,s);if(r.value=n,l.value=s,e.afterSave)try{await e.afterSave(s)}catch(d){o=`(平台配置已保存,但 SimpleLite 同步失败:${d instanceof Error?d.message:String(d)})`}await B(!0,!1);const v=e.beforeSave||e.afterSave?",地图监控配置已写入 SimpleLite":"";y.success(`已保存 v${n.version}${v}${o}`)}catch(n){y.error(`保存失败:${n instanceof Error?n.message:String(n)}`)}finally{m.value=!1}}return R(()=>e.section,()=>_()),V(()=>_()),(s,o)=>{const n=Q,v=U,d=I,N=G,F=D;return k(),O(X,{"widget-id":"ConfigCenter"},{default:i(()=>[c(d,{shadow:"never"},{header:i(()=>[p("div",nt,[p("span",st,u(t.title),1),c(n,{size:"small",effect:"plain"},{default:i(()=>[f("section="+u(t.section),1)]),_:1}),c(n,{size:"small",type:"info",effect:"plain"},{default:i(()=>[f("v"+u(r.value?.version??"-"),1)]),_:1}),r.value?.updatedAt?(k(),O(n,{key:0,size:"small",type:"success",effect:"plain"},{default:i(()=>[f(u(M.value),1)]),_:1})):w("",!0),o[3]||(o[3]=p("div",{class:"spacer"},null,-1)),c(v,{size:"small",icon:z(W),loading:b.value,onClick:o[0]||(o[0]=dt=>_(!0))},{default:i(()=>[...o[1]||(o[1]=[f("重载",-1)])]),_:1},8,["icon","loading"]),c(v,{size:"small",type:"primary",icon:z(Y),loading:m.value,onClick:x},{default:i(()=>[...o[2]||(o[2]=[f("保存",-1)])]),_:1},8,["icon","loading"])])]),default:i(()=>[t.description?(k(),j("p",it,u(t.description),1)):w("",!0),p("div",rt,[c(F,{gutter:12},{default:i(()=>[c(N,{span:14},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 12px"},{header:i(()=>[...o[4]||(o[4]=[f("表单",-1)])]),default:i(()=>[H(s.$slots,"default",{payload:l.value,update:A},void 0,!0)]),_:3})]),_:3}),c(N,{span:10},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 0"},{header:i(()=>[...o[5]||(o[5]=[f("JSON 预览(保存即下发占位)",-1)])]),default:i(()=>[p("pre",ct,u(P.value),1)]),_:1})]),_:1})]),_:3})])]),_:3})]),_:3})}}}),_t=q(lt,[["__scopeId","data-v-83b90685"]]);export{_t as C,ht as l,h as n,bt as s};
|