feat: 新增日志中心、功能优化与代码重构
- 新增 log_datasource.go / log_proxy.go / user_api_token.go 后端控制器 - 新增 log_datasource.go model - 新增 monitor/log-center.ts API 模块 - 新增 LogCenter 前端组件及页面 - 重构 deployment 相关组件 (HPDA/UpdateImageModal/bundle-yaml 等) - 新增 ResetPasswordDialog / code-snippet-block / copy-button 等 UI 组件 - 重构多个 k8s 相关组件 (TopologyView/ResourceVisualEditor/PodFileBrowser 等) - 更新多个 API 和工具函数 (auth.ts/monitor/index.ts/request.ts 等) - 更新静态资源 (index.html + 新 JS/CSS bundle) - 删除废弃静态资源文件
This commit is contained in:
1 parent
5ca0e6d83a
commit
8d46e8f352
197 files changed
+5014
-815
No files matched your search
@@ -0,0 +1,11 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BTWzHVSL.js","assets/index-lgmWPQDG.js","assets/vendor-codemirror-B1SGo4xl.js","assets/vendor-icons-BlY7QrxS.js","assets/index-BtYSyZ9j.css","assets/dashboard-CdCPPiIv.js","assets/server-ZRATB3W_.js","assets/region-DOQwdlL7.js","assets/index-BW7A0O1o.js","assets/pipeline-I9TbU9oT.js","assets/config-Cs6VV1df.js","assets/credential-CZ4ju2yy.js","assets/automation-wgh6dAk-.js","assets/alert-CifuiQtF.js","assets/alert-center-DO2P1sQc.js","assets/site-CJPAagdj.js","assets/trace-L8uY5gM3.js","assets/grafana-DTc3taUi.js","assets/datasource-DD2iWaDA.js","assets/log-center-Cyw2AhE7.js","assets/metrics-DGLPyVxu.js","assets/agent-DtywswSX.js","assets/account-BaHb4JrZ.js","assets/platform-7nCAO14T.js","assets/billing-DjU1--Kv.js","assets/audit-CuR-qVu6.js","assets/terminal-D0pTzaSp.js","assets/approval-fdXwZOLM.js","assets/ai-DlszA9HX.js"])))=>i.map(i=>d[i]);
|
||||
import{j as e,r as t}from"./vendor-codemirror-B1SGo4xl.js";import{J as xr,ah as Ar,D as Ie,a as Fe,b as Ke,c as ke,d as Ee,B as y,e as Qe,o as ir,m as ie,t as W,y as $r,w as Or,O as Dr,x as Je,A as Lr,P as zr,z as Hr,Z as Ur,i as Vr,aw as vr,ab as hr,ac as gr,ad as ur,ae as br,af as qe,ag as he,f as Wr}from"./index-lgmWPQDG.js";import{C as fe,a as we}from"./card-CdN7vcLa.js";import{I as V}from"./input-DBDfXZx0.js";import{C as ge}from"./checkbox-Dq3LPO2o.js";import{b as Be,e as Z,T as qr,a as Gr,c as ne,d as Kr}from"./table-DX6kWYMC.js";import{S as $e,a as Oe,b as De,c as Le,d as G}from"./select-Bv_WioDg.js";import{u as Qr,q as Sr,a as Jr,b as Xr}from"./unwrap-D5KlViZc.js";import{u as Me}from"./useMutation-Cg265LfF.js";import{s as ee}from"./server-ZRATB3W_.js";import{S as Yr}from"./stat-strip-2iSVn5Xd.js";import{B as O}from"./badge-Ca5YHtna.js";import{c as ye}from"./account-BaHb4JrZ.js";import{i as jr,ag as Pe,M as We,y as cr,w as ue,f as Ce,R as de,S as Nr,ab as Ae,h as ze,b8 as Xe,at as yr,au as fr,X as be,j as wr,as as Cr,L as He,ah as Ye,b9 as Zr,av as es,aX as nr,m as rs,aY as ss,v as Ze,T as er,ba as Ge,Q as ts,$ as os,N as as,H as cs,r as dr,aP as ns,aJ as ds,P as ls}from"./vendor-icons-BlY7QrxS.js";import{x as ps,a as ms}from"./vendor-xterm-20M9KZE1.js";import{m as xs,a as is,f as vs}from"./xterm-utils-slbfdUHf.js";import{c as rr,s as hs}from"./credential-CZ4ju2yy.js";import{r as gs}from"./region-DOQwdlL7.js";import{L as X}from"./label-Bzhjv1tR.js";import{T as us}from"./textarea-ym7reYBG.js";import"./index-5FEebgvX.js";function bs(r={page:1,page_size:100}){return Qr({queryKey:Sr.servers(r),queryFn:async()=>{const p=await ee.getServers(r);return{list:Xr(p),total:Jr(p)}},staleTime:3e4})}function Ss(){const r=xr(),p=()=>r.invalidateQueries({queryKey:["servers"]}),c=Me({mutationFn:b=>ee.createServer(b),onSuccess:p}),a=Me({mutationFn:({id:b,data:g})=>ee.updateServer(b,g),onSuccess:p}),o=Me({mutationFn:b=>ee.deleteServer(b),onSuccess:p}),v=Me({mutationFn:b=>ee.batchDelete(b),onSuccess:p});return{createMutation:c,updateMutation:a,deleteMutation:o,batchDeleteMutation:v,invalidate:p}}function js({servers:r}){const p=r.filter(o=>o.status==="running").length,c=r.filter(o=>o.status==="maintenance").length,a=r.filter(o=>o.status==="stopped").length;return e.jsx(Yr,{"code-path":"src/components/server/ServerStatsStrip.tsx:14:5",items:[{label:"服务器",value:r.length,color:"blue"},{label:"运行中",value:p,color:"emerald"},{label:"维护中",value:c,color:"amber"},{label:"已停止",value:a,color:"muted"}]})}const Ns=[{id:"aws",name:"AWS",color:"bg-orange-500",icon:"AWS"},{id:"aliyun",name:"阿里云",color:"bg-orange-600",icon:"AL"},{id:"tencent",name:"腾讯云",color:"bg-blue-500",icon:"TX"},{id:"huawei",name:"华为云",color:"bg-red-500",icon:"HW"},{id:"azure",name:"Azure",color:"bg-blue-600",icon:"AZ"}];function ys({open:r,onClose:p}){const[c,a]=t.useState([]),[o,v]=t.useState(1),[b,g]=t.useState(""),[x,_]=t.useState(null),[j,C]=t.useState([]),[u,I]=t.useState([]),[l,N]=t.useState(""),[f,i]=t.useState(!1),[h,F]=t.useState([]),[k,H]=t.useState([]),[D,w]=t.useState(!1),[L,m]=t.useState([]),[S,M]=t.useState(!1),[E,A]=t.useState(null),[Y,U]=t.useState("22"),[re,d]=t.useState([]),[$,K]=t.useState(""),Q=async()=>{try{const s=await ye.getAccounts();a(s?.list||[])}catch(s){console.error("加载云账号失败:",s)}};t.useEffect(()=>{r&&(Q(),Ar(async()=>{const{credentialApi:s}=await import("./index-BTWzHVSL.js");return{credentialApi:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])).then(({credentialApi:s})=>{s.list().then(R=>d(R?.list||[])).catch(()=>d([]))}))},[r]);const B=c.filter(s=>s.provider===b&&s.status==="active"),J=t.useCallback(async s=>{try{return(await ye.getAccountRegions(s))?.list||[]}catch{return[]}},[]),q=t.useCallback(async s=>{i(!0);try{await ye.syncRegions(s);const R=await J(s);C(R)}catch(R){throw console.error("同步区域失败:",R),R}finally{i(!1)}},[J]),P=t.useCallback(async()=>{if(!x)return;const s=await J(x.id);if(C(s),s.length===0)try{await q(x.id)}catch{}},[x,J,q]),me=t.useCallback(async()=>{if(!(!x||u.length===0)){w(!0),m([]),F([]),H([]);try{const s=await ye.discoverInstances(x.id,u);F(s?.list||[]),m(s?.errors||[])}catch(s){console.error("发现主机失败:",s),m([s?.message||"发现主机失败"])}finally{w(!1)}}},[x,u]),se=async()=>{if(!(!x||k.length===0)){M(!0);try{const s=h.filter(ae=>k.includes(ae.instance_id)),R=await ye.importInstances(x.id,s,{default_port:Number(Y)||22,credential_id:$?Number($):void 0});A(R||{imported:0,skipped:0})}catch(s){console.error("导入失败:",s)}finally{M(!1)}}},z=()=>{o===2&&x&&o<4?(v(3),P()):o<4&&v(o+1)},Se=()=>{o>1&&v(o-1)},Te=()=>{u.length===j.length&&j.length>0?I([]):I(j.map(s=>s.code))},Ve=s=>{H(R=>R.includes(s)?R.filter(ae=>ae!==s):[...R,s])},Re=()=>{k.length===h.length&&h.length>0?H([]):H(h.map(s=>s.instance_id))},je=()=>{p(),v(1),g(""),_(null),I([]),C([]),F([]),H([]),N(""),m([]),A(null),U("2Line truncated
|
||||
\x1B[31m[连接已关闭]\x1B[0m\r
|
||||
`)},E.onerror=()=>{w.write(`\r
|
||||
\x1B[31m[连接发生错误]\x1B[0m\r
|
||||
`)},()=>{try{E.close(),w.dispose()}catch{}g.current=null,x.current=null,C(!1)}},[r,c,k]),t.useEffect(()=>{if(!r||!k)return;let w,L=0;const m=()=>{const S=b.current,M=_.current,E=g.current,A=x.current;if(!S||!M||!E){L++<30&&requestAnimationFrame(m);return}w=is(S,M,E,A);try{vs(M,E,A)}catch{}};return m(),()=>w?.()},[r,k,u]),e.jsx(Ie,{"code-path":"src/components/server/TerminalDialog.tsx:184:5",open:r,onOpenChange:p,children:e.jsxs(Fe,{"code-path":"src/components/server/TerminalDialog.tsx:185:7",showCloseButton:!1,className:ie("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",u?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:u?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"960px",width:"92vw"},children:[e.jsxs(ke,{"code-path":"src/components/server/TerminalDialog.tsx:197:9",className:"sr-only",children:["终端 - ",a]}),e.jsx(Ee,{"code-path":"src/components/server/TerminalDialog.tsx:198:9",className:"sr-only",children:"SSH 终端连接"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:200:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:201:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:202:13",className:ie("w-2 h-2 rounded-full",j?"bg-emerald-400":"bg-red-400")}),e.jsx("span",{"code-path":"src/components/server/TerminalDialog.tsx:203:13",className:"text-[var(--dg-text-primary)] font-medium",children:a}),e.jsxs("span",{"code-path":"src/components/server/TerminalDialog.tsx:204:13",className:"text-[var(--dg-text-muted)]",children:["(",o,")"]})]}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:206:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:207:13",onClick:()=>I(!u),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:u?e.jsx(yr,{"code-path":"src/components/server/TerminalDialog.tsx:211:29",className:"h-4 w-4"}):e.jsx(fr,{"code-path":"src/components/server/TerminalDialog.tsx:211:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:213:13",onClick:()=>p(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(be,{"code-path":"src/components/server/TerminalDialog.tsx:217:15",className:"h-4 w-4"})})]})]}),!k&&e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:223:11",className:"p-6 flex flex-col items-center justify-center gap-4",style:{height:"480px"},children:[e.jsx(wr,{"code-path":"src/components/server/TerminalDialog.tsx:224:13",className:"h-12 w-12 text-amber-400"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:225:13",className:"text-center",children:[e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:226:15",className:"text-[var(--dg-text-primary)] font-medium mb-1",children:"服务器未配置认证凭据"}),e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:227:15",className:"text-sm text-[var(--dg-text-muted)]",children:"请选择一个凭据用于 SSH 连接"})]}),l.length===0?e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:230:15",className:"text-xs text-[var(--dg-text-muted)]",children:"暂无可用凭据,请先去「凭证配置」添加"}):e.jsxs("select",{"code-path":"src/components/server/TerminalDialog.tsx:232:15",value:f,onChange:w=>i(w.target.value),className:"w-64 px-3 py-2 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-[var(--dg-text-primary)] text-sm",children:[e.jsx("option",{"code-path":"src/components/server/TerminalDialog.tsx:237:17",value:"",children:"-- 选择凭据 --"}),l.map(w=>e.jsxs("option",{"code-path":"src/components/server/TerminalDialog.tsx:239:19",value:String(w.id),children:[w.type==="ssh_key"?"🔑":"🔒"," ",w.name]},w.id))]}),e.jsx(y,{"code-path":"src/components/server/TerminalDialog.tsx:245:13",onClick:D,disabled:!f||h,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:h?"关联中...":"确认连接"})]}),k&&e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:256:11",ref:b,className:"xterm-terminal-host",style:{height:u?"calc(100vh - 49px)":"520px"}})]})})}const ws=r=>r<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:`${(r/1048576).toFixed(2)} MB`;function Cs({open:r,onOpenChange:p,serverId:c,serverName:a}){const[o,v]=t.useState([]),[b,g]=t.useState([]),[x,_]=t.useState("/"),[j,C]=t.useState(!1),[u,I]=t.useState(""),[l,N]=t.useState(!1),[f,i]=t.useState(!1),h=t.useRef(null),F=t.useCallback(async m=>{if(c){C(!0),I("");try{const S=await ee.listFiles(c,m),M=S?.data||S;v(M.items||[]),g(M.breadcrumbs||[]),_(M.path||m)}catch(S){I(S?.message||"加载目录失败"),v([
Line truncated
|
||||
`).replace(/\r/g,`
|
||||
`).split(`
|
||||
`).filter(o=>o.trim());if(p.length<2)return[];const c=lr(p[0]).map(o=>o.toLowerCase()),a=[];for(let o=1;o<p.length;o++){const v=lr(p[o]),b={};c.forEach((g,x)=>{b[g]=v[x]??""}),a.push(b)}return a}function Fs(r){return/^(\d{1,3}\.){3}\d{1,3}$/.test(r)&&r.split(".").every(p=>Number(p)>=0&&Number(p)<=255)}function ks(){const r=["hostname,ip,port","web-01,192.168.1.10,22","db-01,192.168.1.20,22","cache-01,192.168.1.30,2222"].join(`
|
||||
`),p=new Blob(["\uFEFF"+r],{type:"text/csv;charset=utf-8;"}),c=URL.createObjectURL(p),a=document.createElement("a");a.href=c,a.download="servers-template.csv",a.click(),URL.revokeObjectURL(c)}function Es({open:r,onClose:p}){const[c,a]=t.useState(1),[o,v]=t.useState(""),[,b]=t.useState("password"),[g,x]=t.useState(null),[_,j]=t.useState(!1),[C,u]=t.useState([]),[I,l]=t.useState([]),[N,f]=t.useState(!1),[i,h]=t.useState([]),[F,k]=t.useState(""),[H,D]=t.useState("22");t.useEffect(()=>{if(!r)return;let d=!1;return(async()=>{try{const[$,K]=await Promise.all([gs.list(),rr.list()]);if(d)return;const Q=$?.list??[];l(Q.map(B=>({id:String(B.id??""),name:B.name??"",code:B.code??""}))),h(K?.list??[])}catch{d||(l([]),h([]))}})(),()=>{d=!0}},[r]);const w=async()=>{if(c===2&&g){j(!0);try{const d=await g.text(),$=Is(d);if($.length===0){W.error("文件无有效数据,请使用模板格式(首行为表头)"),j(!1);return}const K=new Set,Q=$.map((B,J)=>{const q=(B.hostname??"").trim(),P=(B.ip??"").trim(),me={row:J+2,hostname:q,ip:P,port:Number(B.port)||22,username:(B.username??"").trim()||"root",os:B.os??"",cpu:Number(B.cpu)||0,memory:Number(B.memory)||0,disk:Number(B.disk)||0,tags:B.tags??"",status:"valid",message:"有效"},se=[];q||se.push("主机名缺失"),P?Fs(P)||se.push("IP格式错误"):se.push("IP缺失");const z=`${q}|${P}`;return q&&P&&K.has(z)?se.push("重复行"):K.add(z),se.length>0&&(me.status="error",me.message=se.join("、")),me});u(Q),a(c+1)}catch{W.error("文件解析失败,请确认是 CSV 格式")}finally{j(!1)}}else a(c+1)},L=()=>{c>1&&a(c-1)},m=d=>{d.target.files&&d.target.files[0]&&x(d.target.files[0])},S=()=>{a(1),v(""),D("22"),k(""),x(null),u([])},M=async()=>{const d=C.filter($=>$.status==="valid");if(d.length!==0){f(!0);try{const $=d.map(P=>({hostname:P.hostname,ip:P.ip,port:P.port,username:P.username,os:P.os,cpu:P.cpu,memory:P.memory,disk:P.disk,tags:P.tags})),Q=await ee.batchCreate({servers:$,region_id:o||void 0,credential_id:F?Number(F):void 0,default_port:Number(H)||22})??{},B=Q.success??0,J=Q.skipped??0,q=Q.failed??0;W.success(`导入完成:成功 ${B},跳过 ${J},失败 ${q}`),S(),p()}catch($){W.error($?.message||"导入失败,请重试")}finally{f(!1)}}},E=()=>{p(),S()},A=C.filter(d=>d.status==="valid").length,Y=C.filter(d=>d.status==="warning").length,U=C.filter(d=>d.status==="error").length,re=[{id:1,title:"配置"},{id:2,title:"上传"},{id:3,title:"确认"}];return e.jsx(Ie,{"code-path":"src/components/server/ExcelServerImport.tsx:278:5",open:r,onOpenChange:E,children:e.jsxs(Fe,{"code-path":"src/components/server/ExcelServerImport.tsx:279:7",className:"max-w-3xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsxs(Ke,{"code-path":"src/components/server/ExcelServerImport.tsx:280:9",children:[e.jsx(ke,{"code-path":"src/components/server/ExcelServerImport.tsx:281:11",className:"text-xl",children:"CSV 批量导入服务器"}),e.jsx(Ee,{"code-path":"src/components/server/ExcelServerImport.tsx:282:11",className:"sr-only",children:"通过 CSV 文件批量导入服务器资产"})]}),e.jsx("div",{"code-path":"src/components/server/ExcelServerImport.tsx:286:9",className:"flex items-center justify-center mb-6",children:re.map((d,$)=>e.jsxs("div",{"code-path":"src/components/server/ExcelServerImport.tsx:288:13",className:"flex items-center",children:[e.jsx("div",{"code-path":"src/components/server/ExcelServerImport.tsx:289:15",className:`flex items-center justify-center w-8 h-8 rounded-full ${c===d.id?"bg-blue-600 text-white":c>d.id?"bg-emerald-600 text-white":"bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]"}`,children:c>d.id?e.jsx(ue,{"code-path":"src/components/server/ExcelServerImport.tsx:296:32",className:"h-4 w-4"}):d.id}),e.jsx("span",{"code-path":"src/components/server/ExcelServerImport.tsx:298:15",className:`ml-2 text-sm ${c===d.id?"text-[var(--dg-text-primary)]":"text-[var(--dg-text-muted)]"}`,children:d.title}),$<re.length-1&&e.jsx("div",{"code-path":"src/components/server/ExcelServerImport.tsx:302:17",className:"w-12 h-0.5 bg-[var(--dg-border)] mx-3"})]},d.id))}),c===1&&e.jsxs("div",{"code-path":"src/components/server/ExcelServerImport.tsx:310:11",className:"space-y-6",children:[e.jsx(fe,{"code-path":"src/components/server/ExcelServerImport.tsx:312:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(we,{"code-path":"src/components/server/ExcelServerImport.tsx:313:15",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/server/ExcelServerImport.tsx:314:17",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/server/ExcelServerImport.tsx:315:19",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/server/ExcelServerImport.tsx:316:21",className:"w-10 h-10 rounded-lg bg-emerald-500/20 flex items-center justify-center",children:e.jsx(Ge,{"code-path":"src/components/server/ExcelServerImport.tsx:317:2
Line truncated
|
||||
`),le=new Blob(["\uFEFF"+_e],{type:"text/csv;charset=utf-8;"}),ce=URL.createObjectURL(le),xe=document.createElement("a");xe.href=ce,xe.download=`servers_${new Date().toISOString().slice(0,10)}.csv`,xe.click(),URL.revokeObjectURL(ce),W.success(`已导出 ${z.length} 台服务器`)},ar=8;return e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:361:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:363:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:364:9",children:[e.jsx("h1",{"code-path":"src/components/server/ServerManager.tsx:365:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"服务器管理"}),e.jsx("p",{"code-path":"src/components/server/ServerManager.tsx:366:11",className:"text-sm text-[var(--dg-text-muted)] mt-1",children:"管理云平台服务器资产"})]}),e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:368:9",className:"flex items-center gap-2",children:[e.jsxs(y,{"code-path":"src/components/server/ServerManager.tsx:369:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",onClick:()=>J(),children:[e.jsx(de,{"code-path":"src/components/server/ServerManager.tsx:374:13",className:ie("h-4 w-4 mr-2",B&&"animate-spin")}),"刷新"]}),e.jsxs(y,{"code-path":"src/components/server/ServerManager.tsx:377:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",onClick:Pr,children:[e.jsx(Ze,{"code-path":"src/components/server/ServerManager.tsx:382:13",className:"h-4 w-4 mr-2"}),"导出"]}),c("server:create")&&e.jsxs(hr,{"code-path":"src/components/server/ServerManager.tsx:386:11",children:[e.jsx(gr,{"code-path":"src/components/server/ServerManager.tsx:387:13",asChild:!0,children:e.jsxs(y,{"code-path":"src/components/server/ServerManager.tsx:388:15",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(Ye,{"code-path":"src/components/server/ServerManager.tsx:389:17",className:"h-4 w-4 mr-2"}),"批量导入"]})}),e.jsxs(ur,{"code-path":"src/components/server/ServerManager.tsx:393:13",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsx(br,{"code-path":"src/components/server/ServerManager.tsx:394:15",children:"选择导入方式"}),e.jsx(qe,{"code-path":"src/components/server/ServerManager.tsx:395:15",className:"bg-[var(--dg-border)]"}),e.jsxs(he,{"code-path":"src/components/server/ServerManager.tsx:396:15",className:"hover:bg-[var(--dg-bg-hover)] cursor-pointer focus:bg-[var(--dg-bg-hover)] focus:text-[var(--dg-text-primary)]",onClick:()=>j(!0),children:[e.jsx(jr,{"code-path":"src/components/server/ServerManager.tsx:400:17",className:"h-4 w-4 mr-2 text-[var(--dg-blue)]"}),"云主机导入",e.jsx("span",{"code-path":"src/components/server/ServerManager.tsx:402:17",className:"ml-2 text-xs text-[var(--dg-text-muted)]",children:"从云平台同步"})]}),e.jsxs(he,{"code-path":"src/components/server/ServerManager.tsx:404:15",className:"hover:bg-[var(--dg-bg-hover)] cursor-pointer focus:bg-[var(--dg-bg-hover)] focus:text-[var(--dg-text-primary)]",onClick:()=>u(!0),children:[e.jsx(Ge,{"code-path":"src/components/server/ServerManager.tsx:408:17",className:"h-4 w-4 mr-2 text-emerald-400"}),"CSV导入",e.jsx("span",{"code-path":"src/components/server/ServerManager.tsx:410:17",className:"ml-2 text-xs text-[var(--dg-text-muted)]",children:"hostname + IP 即可"})]})]})]}),c("server:create")&&e.jsxs(y,{"code-path":"src/components/server/ServerManager.tsx:416:13",className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",onClick:_r,children:[e.jsx(ls,{"code-path":"src/components/server/ServerManager.tsx:420:15",className:"h-4 w-4 mr-2"}),"添加服务器"]})]})]}),e.jsx(js,{"code-path":"src/components/server/ServerManager.tsx:428:7",servers:z}),e.jsx(fe,{"code-path":"src/components/server/ServerManager.tsx:431:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(we,{"code-path":"src/components/server/ServerManager.tsx:432:9",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:434:11",className:"flex items-center justify-between flex-wrap gap-4 p-4",children:[e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:435:13",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/components/server/ServerManager.tsx:436:15",className:"relative w-64",children:[e.jsx(Nr,{"code-path":"src/components/server/ServerManager.tsx:437:17",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(V,{"code-path":"src/components/
Line truncated
|
||||
Reference in new issue
Block a user