- 新增 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) - 删除废弃静态资源文件
2 lines
51 KiB
JavaScript
2 lines
51 KiB
JavaScript
import{r as t,j as e}from"./vendor-codemirror-B1SGo4xl.js";import{J as na,D as ze,a as Be,b as Ge,c as Ue,e as Qe,B as N,t as S,d as ca,f as da}from"./index-lgmWPQDG.js";import{I as p}from"./input-DBDfXZx0.js";import{B as w}from"./badge-Ca5YHtna.js";import{S as Me,a as Ke,b as Ae,c as Pe,d as M}from"./select-Bv_WioDg.js";import{u as $e,q as Ye,b as la}from"./unwrap-D5KlViZc.js";import{u as V}from"./useMutation-Cg265LfF.js";import{c as P}from"./credential-CZ4ju2yy.js";import{F as ia,G as pa,D as ma,i as xa,j as Ze,k as ga,h as ha,ag as z,C as Je,a as We,l as ya,az as Re,aO as va,ak as Xe,x as ea,R as Ca,P as Ve,S as ua,a4 as Da,b as ba,d as ja,T as Na}from"./vendor-icons-BlY7QrxS.js";import{L as i}from"./label-Bzhjv1tR.js";import"./index-5FEebgvX.js";function fa(c={page_size:100}){return $e({queryKey:Ye.credentials(c),queryFn:async()=>{const d=await P.list(c);return la(d)},staleTime:3e4})}function Fa(c,d=!0){return $e({queryKey:Ye.credentialDetail(c),queryFn:()=>P.get(c),enabled:!!c&&d,staleTime:1e4})}function Sa(){const c=na(),d=()=>c.invalidateQueries({queryKey:["credentials"]}),u=V({mutationFn:h=>P.create(h),onSuccess:d}),x=V({mutationFn:({id:h,data:D})=>P.update(h,D),onSuccess:d}),g=V({mutationFn:h=>P.delete(h),onSuccess:d}),v=V({mutationFn:({id:h,isActive:D})=>P.toggleActive(h,D),onSuccess:d});return{createMutation:u,updateMutation:x,deleteMutation:g,toggleActiveMutation:v,invalidate:d}}const H={ssh:{label:"SSH 密钥",icon:ha,color:"text-amber-400",desc:"SSH 私钥/公钥/密码"},docker:{label:"Docker 凭证",icon:ga,color:"text-cyan-400",desc:"Docker Registry 登录凭据"},tls:{label:"TLS 证书",icon:Ze,color:"text-green-400",desc:"TLS/SSL 证书与私钥"},aksk:{label:"AKSK 密钥",icon:xa,color:"text-purple-400",desc:"云服务 AccessKey/SecretKey"},database:{label:"数据库凭证",icon:ma,color:"text-blue-400",desc:"数据库连接信息"},api:{label:"API 密钥",icon:pa,color:"text-orange-400",desc:"API Token/Key + 端点"},generic:{label:"通用凭证",icon:ia,color:"text-gray-400",desc:"自定义 Key/Value 键值对"}},aa={ssh:"bg-amber-500/20 text-amber-400 border-amber-500/30",docker:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",tls:"bg-green-500/20 text-green-400 border-green-500/30",aksk:"bg-purple-500/20 text-purple-400 border-purple-500/30",database:"bg-blue-500/20 text-blue-400 border-blue-500/30",api:"bg-orange-500/20 text-orange-400 border-orange-500/30",generic:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function wa({open:c,onClose:d,credId:u}){const[x,g]=t.useState({}),{data:v,isLoading:h}=Fa(u,c);if(!c||!u)return null;const D=m=>g(y=>({...y,[m]:!y[m]})),k=m=>{navigator.clipboard.writeText(m),S.success("已复制")},s=v?.secret_type,f=H[s],o=v?.content||{},n=({label:m,value:y,sensitive:_,fieldKey:K})=>{if(y==null||y==="")return null;const I=typeof y=="string"&&y.length>80,T=K?x[K]:!1;return e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:40:7",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:41:9",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)] mb-1",children:[e.jsx(va,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:42:11",className:"h-3 w-3"}),m]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:44:9",className:"flex gap-1",children:[I?e.jsx("textarea",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:46:13",readOnly:!0,value:_&&!T?"••••••••":String(y),className:"flex-1 rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-xs font-mono resize-none",rows:4}):e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:50:13",readOnly:!0,value:_&&!T?"••••••••":String(y),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-xs"}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:53:11",className:"flex flex-col gap-0.5 shrink-0",children:[_&&e.jsx(N,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:55:15",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>D(K),children:T?e.jsx(Xe,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:56:25",className:"h-3 w-3"}):e.jsx(ea,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:56:58",className:"h-3 w-3"})}),e.jsx(N,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:59:13",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>k(String(y)),children:e.jsx(Re,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:60:15",className:"h-3 w-3"})})]})]})]})},l=v;return e.jsx(ze,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:71:5",open:c,onOpenChange:d,children:e.jsxs(Be,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:72:7",className:"sm:max-w-[680px] max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(Ge,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:73:9",children:e.jsxs(Ue,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:74:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[f?e.jsx(f.icon,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:75:20",className:`h-5 w-5 ${f.color}`}):e.jsx(z,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:75:70",className:"h-5 w-5 text-[var(--dg-text-muted)]"}),"凭据详情"]})}),h?e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:80:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"加载中..."}):v?e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:82:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:84:13",className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:85:15",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:85:20",className:"text-[var(--dg-text-muted)]",children:"名称:"}),e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:85:76",className:"text-[var(--dg-text-primary)] font-medium",children:l?.name})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:86:15",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:86:20",className:"text-[var(--dg-text-muted)]",children:"类型:"}),e.jsx(w,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:87:17",variant:"outline",className:`text-xs ml-1 ${aa[s]||""}`,children:f?.label||s})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:89:15",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:89:20",className:"text-[var(--dg-text-muted)]",children:"状态:"}),l?.is_active?e.jsxs(w,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:91:21",className:"bg-green-500/20 text-green-400 text-xs ml-1",children:[e.jsx(Je,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:91:84",className:"h-3 w-3 mr-0.5"}),"启用"]}):e.jsxs(w,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:92:21",className:"bg-red-500/20 text-red-400 text-xs ml-1",children:[e.jsx(We,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:92:80",className:"h-3 w-3 mr-0.5"}),"禁用"]}),l?.expires_at&&new Date(l.expires_at)<new Date&&e.jsxs(w,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:94:19",className:"bg-yellow-500/20 text-yellow-400 text-xs ml-1",children:[e.jsx(ya,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:94:84",className:"h-3 w-3 mr-0.5"}),"已过期"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:97:15",className:"col-span-2 cursor-pointer",onClick:()=>k(l?.env_prefix||""),children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:98:17",className:"text-[var(--dg-text-muted)]",children:"引用ID:"}),e.jsx("code",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:99:17",className:"text-[var(--dg-blue)] font-mono text-xs",children:l?.env_prefix||"无"}),e.jsx(Re,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:100:17",className:"h-3 w-3 inline ml-1 text-[var(--dg-text-muted)]"})]}),l?.tags?.length>0&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:103:17",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:104:19",className:"text-[var(--dg-text-muted)]",children:"标签:"}),(l?.tags).map(m=>e.jsx(w,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:106:21",variant:"outline",className:"text-xs ml-1 border-[var(--dg-border)]",children:m},m))]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:110:15",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:110:43",className:"text-[var(--dg-text-muted)]",children:"描述:"}),e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:110:99",className:"text-[var(--dg-text-secondary)]",children:l?.description||"无"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:111:15",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:111:20",className:"text-[var(--dg-text-muted)]",children:"创建:"}),e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:111:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(l?.created_at).toLocaleString()})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:112:15",children:[e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:112:20",className:"text-[var(--dg-text-muted)]",children:"更新:"}),e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:112:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(l?.updated_at).toLocaleString()})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:116:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:117:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)] font-medium mb-3",children:[e.jsx(z,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:118:17",className:"h-4 w-4 text-yellow-500"}),"密钥数据"]}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:120:15",className:"p-3 rounded-md bg-yellow-500/5 border border-yellow-500/20 mb-3",children:e.jsx("p",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:121:17",className:"text-xs text-yellow-400/80",children:"以下内容包含敏感信息,请妥善保管,不要泄露给他人。"})}),s==="ssh"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:125:17",label:"SSH 用户",value:o.ssh_user}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:126:17",label:"SSH 端口",value:o.ssh_port}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:127:17",label:"SSH 密码",value:o.password,sensitive:!0,fieldKey:"ssh_password"}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:128:17",label:"私钥",value:o.private_key,sensitive:!0,fieldKey:"ssh_private_key"}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:129:17",label:"公钥",value:o.public_key,fieldKey:"ssh_public_key"})]}),s==="docker"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:132:17",label:"Registry 地址",value:o.server}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:133:17",label:"用户名",value:o.username}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:134:17",label:"密码",value:o.password,sensitive:!0,fieldKey:"docker_password"})]}),s==="tls"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:137:17",label:"证书",value:o.cert,sensitive:!0,fieldKey:"tls_cert"}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:138:17",label:"私钥",value:o.key,sensitive:!0,fieldKey:"tls_key"}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:139:17",label:"CA 证书",value:o.ca,sensitive:!0,fieldKey:"tls_ca"})]}),s==="aksk"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:142:17",label:"Access Key ID",value:o.access_key}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:143:17",label:"Secret Access Key",value:o.secret_key,sensitive:!0,fieldKey:"aksk_secret_key"})]}),s==="database"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:146:17",label:"数据库类型",value:String(o.db_type||"").toUpperCase()}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:147:17",label:"主机",value:o.host}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:148:17",label:"端口",value:o.port}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:149:17",label:"数据库名",value:o.db_name}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:150:17",label:"用户名",value:o.username}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:151:17",label:"密码",value:o.password,sensitive:!0,fieldKey:"db_password"})]}),s==="api"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:154:17",label:"API Key",value:o.api_key,sensitive:!0,fieldKey:"api_key"}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:155:17",label:"API 端点",value:o.endpoint})]}),s==="generic"&&e.jsxs(e.Fragment,{children:[e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:158:17",label:"Key",value:o.generic_key}),e.jsx(n,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:159:17",label:"Value",value:o.generic_value,sensitive:!0,fieldKey:"generic_value"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:164:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:165:15",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:"在流水线/脚本中引用此凭据:"}),e.jsxs("code",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:166:15",className:"text-xs bg-[var(--dg-bg-tertiary)] px-3 py-1.5 rounded block text-[var(--dg-blue)]",children:["${",String(l?.variable_name||String(l?.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_")),"}"]})]})]}):e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:172:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"未找到凭据数据"}),e.jsx(Qe,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:174:9",children:e.jsx(N,{"code-path":"src/components/deploy/credential-manager/CredDetailDialog.tsx:175:11",variant:"outline",onClick:d,children:"关闭"})})]})})}function ka({open:c,onClose:d,onSaved:u,editData:x}){const g=!!x,[v,h]=t.useState(""),[D,k]=t.useState(""),[s,f]=t.useState("ssh"),[o,n]=t.useState(""),[l,m]=t.useState(""),[y,_]=t.useState(!0),[K,I]=t.useState(!1),[T,O]=t.useState({}),[E,L]=t.useState("root"),[r,b]=t.useState("22"),[A,q]=t.useState(""),[F,B]=t.useState(""),[G,U]=t.useState(""),[Q,$]=t.useState(""),[Y,Z]=t.useState(""),[J,W]=t.useState(""),[X,ee]=t.useState(""),[ae,te]=t.useState(""),[re,se]=t.useState(""),[,Te]=t.useState(""),[oe,ne]=t.useState(""),[ce,de]=t.useState(""),[,Ie]=t.useState(""),[le,ie]=t.useState("mysql"),[pe,me]=t.useState(""),[xe,ge]=t.useState("3306"),[he,ye]=t.useState(""),[ve,Ce]=t.useState(""),[ue,De]=t.useState(""),[be,je]=t.useState(""),[Ne,fe]=t.useState(""),[Fe,Se]=t.useState(""),[we,ke]=t.useState("");t.useEffect(()=>{c&&(x?(h(x.name),k(x.variable_name||""),f(x.secret_type),n(x.description||""),m((x.tags||[]).join(", ")),_(x.is_active),L(""),b("22"),q(""),B(""),U(""),$(""),Z(""),W(""),ee(""),te(""),se(""),Te(""),ne(""),de(""),Ie(""),ie("mysql"),me(""),ge("3306"),ye(""),Ce(""),De(""),je(""),fe(""),Se(""),ke("")):(h(""),k(""),f("ssh"),n(""),m(""),_(!0),L("root"),b("22"),q(""),B(""),U(""),$(""),Z(""),W(""),ee(""),te(""),se(""),Te(""),ne(""),de(""),Ie(""),ie("mysql"),me(""),ge("3306"),ye(""),Ce(""),De(""),je(""),fe(""),Se(""),ke("")),O({}))},[x,c]);const ta=a=>O(C=>({...C,[a]:!C[a]})),ra=async()=>{if(!v.trim()){S.error("请填写凭据名称");return}I(!0);try{const a={name:v.trim(),secret_type:s,description:o.trim(),tags:l.split(",").map(C=>C.trim()).filter(Boolean),is_active:y};D.trim()&&(a.variable_name=D.trim()),s==="ssh"?(E.trim()&&(a.ssh_user=E.trim()),r&&(a.ssh_port=parseInt(r)||22),A.trim()&&(a.ssh_password=A.trim()),F.trim()&&(a.ssh_private_key=F.trim()),G.trim()&&(a.ssh_public_key=G.trim())):s==="docker"?(Q.trim()&&(a.docker_server=Q.trim()),Y.trim()&&(a.docker_username=Y.trim()),J.trim()&&(a.docker_password=J.trim())):s==="tls"?(X.trim()&&(a.tls_cert=X.trim()),ae.trim()&&(a.tls_key=ae.trim()),re.trim()&&(a.tls_ca=re.trim())):s==="aksk"?(oe.trim()&&(a.aksk_access_key=oe.trim()),ce.trim()&&(a.aksk_secret_key=ce.trim())):s==="database"?(le.trim()&&(a.db_type=le.trim()),pe.trim()&&(a.db_host=pe.trim()),xe&&(a.db_port=parseInt(xe)||3306),he.trim()&&(a.db_name=he.trim()),ve.trim()&&(a.db_username=ve.trim()),ue.trim()&&(a.db_password=ue.trim())):s==="api"?(be.trim()&&(a.api_key=be.trim()),Ne.trim()&&(a.api_endpoint=Ne.trim())):s==="generic"&&(Fe.trim()&&(a.generic_key=Fe.trim()),we.trim()&&(a.generic_value=we.trim())),g?(await P.update(x.id,a),S.success("已更新")):(await P.create(a),S.success("已创建")),u(),d()}catch(a){const C=a;S.error(C?.response?.data?.message||"操作失败")}finally{I(!1)}},j=({label:a,value:C,onChange:Le,placeholder:qe,fieldKey:He,required:sa,isLong:oa})=>{const Oe=T[He];return e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:163:7",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:164:9",className:"text-[var(--dg-text-secondary)] text-xs",children:[a,sa&&!g&&e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:164:99",className:"text-red-400",children:" *"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:165:9",className:"relative",children:[oa?e.jsx("textarea",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:167:13",value:C,onChange:_e=>Le(_e.target.value),placeholder:qe,rows:5,className:"w-full rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-sm font-mono placeholder:text-[var(--dg-text-muted)]"}):e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:171:13",value:C,onChange:_e=>Le(_e.target.value),type:Oe?"text":"password",placeholder:qe,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] pr-10 font-mono text-sm"}),e.jsx("button",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:175:11",type:"button",onClick:()=>ta(He),className:"absolute right-2 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)] text-xs",children:Oe?e.jsx(Xe,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:177:21",className:"h-3.5 w-3.5"}):e.jsx(ea,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:177:58",className:"h-3.5 w-3.5"})})]})]})},R=H[s],Ee=R?.icon||z;return e.jsx(ze,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:188:5",open:c,onOpenChange:d,children:e.jsxs(Be,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:189:7",className:"sm:max-w-[620px] max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(Ge,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:190:9",children:[e.jsxs(Ue,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:191:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:192:13",className:`h-5 w-5 ${R?.color||""}`}),g?"编辑凭据":"新增凭据"]}),e.jsx(ca,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:195:11",className:"text-[var(--dg-text-muted)] text-xs",children:R?.desc||"管理敏感凭据信息"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:199:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:201:11",className:"border-b border-[var(--dg-border)] pb-3",children:[e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:202:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2",children:"基本信息"}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:203:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:204:15",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:205:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["凭据名称 ",e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:205:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:206:17",value:v,onChange:a=>h(a.target.value),placeholder:"如:生产环境 SSH",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:209:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:210:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"变量别名"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:211:17",value:D,onChange:a=>k(a.target.value),placeholder:"如:MYSQL_PROD",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:214:15",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:215:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["类型",!g&&e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:215:90",className:"text-red-400",children:" *"})]}),e.jsxs(Me,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:216:17",value:s,onValueChange:a=>f(a),disabled:g,children:[e.jsx(Ke,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:217:19",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:218:21"})}),e.jsx(Pe,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:220:19",className:"max-h-[300px]",children:Object.entries(H).map(([a,C])=>e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:222:23",value:a,children:e.jsxs("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:223:25",className:"flex items-center gap-2",children:[e.jsx(C.icon,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:223:67",className:"h-4 w-4"}),C.label]})},a))})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:229:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:230:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"标签"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:231:17",value:l,onChange:a=>m(a.target.value),placeholder:"生产环境, 阿里云",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:235:13",className:"mt-2 space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:236:15",className:"text-[var(--dg-text-secondary)] text-xs",children:"描述"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:237:15",value:o,onChange:a=>n(a.target.value),placeholder:"可选备注信息",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:243:11",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:244:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:245:15",className:"h-3.5 w-3.5"}),R?.label||s," 配置",g&&e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:246:26",className:"text-[var(--dg-text-muted)]",children:"(仅填写需要修改的字段)"})]}),s==="ssh"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:250:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:251:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:252:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 用户"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:253:19",value:E,onChange:a=>L(a.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:256:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:257:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 端口"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:258:19",value:r,onChange:a=>b(a.target.value),placeholder:"22",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:261:17",className:"col-span-2",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:262:19",label:"SSH 密码",value:A,onChange:q,placeholder:"密码(或留空用密钥)",fieldKey:"ssh_pwd"})}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:265:17",className:"col-span-2",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:266:19",label:"私钥内容",value:F,onChange:B,placeholder:"粘贴 SSH 私钥...",fieldKey:"ssh_pk",isLong:!0})}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:269:17",className:"col-span-2",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:270:19",label:"公钥内容",value:G,onChange:U,placeholder:"粘贴 SSH 公钥...",fieldKey:"ssh_pub",isLong:!0})})]}),s==="docker"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:277:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:278:17",className:"col-span-2 space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:279:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Registry 地址 ",e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:279:90",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:280:19",value:Q,onChange:a=>$(a.target.value),placeholder:"registry.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:283:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:284:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:285:19",value:Y,onChange:a=>Z(a.target.value),placeholder:"admin",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:288:17",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:288:22",label:"密码",value:J,onChange:W,placeholder:"Registry 密码",fieldKey:"docker_pwd",required:!0})})]}),s==="tls"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:294:15",className:"space-y-3",children:[e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:295:17",label:"证书 (PEM)",value:X,onChange:ee,placeholder:"-----BEGIN CERTIFICATE-----",fieldKey:"tls_cert",isLong:!0,required:!0}),e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:297:17",label:"私钥 (PEM)",value:ae,onChange:te,placeholder:"-----BEGIN PRIVATE KEY-----",fieldKey:"tls_key",isLong:!0,required:!0}),e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:299:17",label:"CA 证书",value:re,onChange:se,placeholder:"CA 证书内容...",fieldKey:"tls_ca",isLong:!0})]}),s==="aksk"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:305:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:306:17",className:"col-span-2 space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:307:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Access Key ID ",e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:307:92",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:308:19",value:oe,onChange:a=>ne(a.target.value),placeholder:"AKIDxxxx...",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:311:17",className:"col-span-2",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:312:19",label:"Secret Access Key",value:ce,onChange:de,placeholder:"输入 Secret Key",fieldKey:"aksk_sk",required:!0})})]}),s==="database"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:319:15",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:320:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:321:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库类型"}),e.jsxs(Me,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:322:19",value:le,onValueChange:ie,children:[e.jsx(Ke,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:323:21",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:324:23"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:326:21",children:[e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:327:23",value:"mysql",children:"MySQL"}),e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:328:23",value:"postgres",children:"PostgreSQL"}),e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:329:23",value:"mongodb",children:"MongoDB"}),e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:330:23",value:"redis",children:"Redis"}),e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:331:23",value:"mssql",children:"SQL Server"}),e.jsx(M,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:332:23",value:"oracle",children:"Oracle"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:336:17",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:337:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["主机 ",e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:337:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:338:19",value:pe,onChange:a=>me(a.target.value),placeholder:"10.0.0.1",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:341:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:342:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"端口"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:343:19",value:xe,onChange:a=>ge(a.target.value),placeholder:"3306",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:346:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:347:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库名"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:348:19",value:he,onChange:a=>ye(a.target.value),placeholder:"aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:351:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:352:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:353:19",value:ve,onChange:a=>Ce(a.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:356:17",children:e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:356:22",label:"密码",value:ue,onChange:De,placeholder:"数据库密码",fieldKey:"db_pwd"})})]}),s==="api"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:362:15",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:363:17",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:364:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"API 端点"}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:365:19",value:Ne,onChange:a=>fe(a.target.value),placeholder:"https://api.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:368:17",label:"API Key / Token",value:be,onChange:je,placeholder:"sk-xxxx...",fieldKey:"api_key",required:!0})]}),s==="generic"&&e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:374:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:375:17",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:376:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Key ",e.jsx("span",{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:376:82",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:377:19",value:Fe,onChange:a=>Se(a.target.value),placeholder:"MY_SECRET",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(j,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:380:17",label:"Value",value:we,onChange:ke,placeholder:"密钥值",fieldKey:"generic_val",required:!0})]})]})]}),e.jsxs(Qe,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:386:9",children:[e.jsx(N,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:387:11",variant:"outline",onClick:d,children:"取消"}),e.jsx(N,{"code-path":"src/components/deploy/credential-manager/CredFormDialog.tsx:388:11",onClick:ra,disabled:K,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/80",children:K?"保存中...":g?"更新":"创建"})]})]})})}function Oa(){const c=da(),[d,u]=t.useState(!1),[x,g]=t.useState(null),[v,h]=t.useState(null),[D,k]=t.useState(!1),[s,f]=t.useState("all"),[o,n]=t.useState(""),l={page_size:100,...o?{search:o}:{},...s&&s!=="all"?{secret_type:s}:{}},{data:m=[],isLoading:y,refetch:_}=fa(l),{deleteMutation:K,toggleActiveMutation:I}=Sa(),T=async r=>{if(await c({title:"删除凭据",description:`确定删除凭据「${r.name}」?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await K.mutateAsync(r.id),S.success("已删除")}catch{S.error("删除失败")}},O=async r=>{try{await I.mutateAsync({id:r.id,isActive:!r.is_active}),S.success(r.is_active?"已禁用":"已启用")}catch{S.error("操作失败")}},E=r=>{navigator.clipboard.writeText(r),S.success("引用 ID 已复制")},L=Object.entries(H);return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:68:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:69:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:70:9",children:[e.jsx("h2",{"code-path":"src/components/deploy/CredentialManager.tsx:71:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"凭据管理"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:72:11",className:"text-sm text-[var(--dg-text-muted)] mt-0.5",children:"统一管理 SSH 密钥、Docker 密码、AKSK、数据库等敏感凭据(AES 加密存储)"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:76:9",className:"flex items-center gap-2",children:[e.jsxs(N,{"code-path":"src/components/deploy/CredentialManager.tsx:77:11",variant:"outline",size:"sm",onClick:()=>_(),children:[e.jsx(Ca,{"code-path":"src/components/deploy/CredentialManager.tsx:78:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(N,{"code-path":"src/components/deploy/CredentialManager.tsx:80:11",size:"sm",onClick:()=>{g(null),u(!0)},children:[e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:81:13",className:"w-4 h-4 mr-1"}),"新增凭据"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:87:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs(Me,{"code-path":"src/components/deploy/CredentialManager.tsx:88:9",value:s,onValueChange:f,children:[e.jsx(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:89:11",className:"w-[140px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:90:13",placeholder:"全部类型"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:92:11",children:[e.jsx(M,{"code-path":"src/components/deploy/CredentialManager.tsx:93:13",value:"all",children:"全部类型"}),L.map(([r,b])=>e.jsx(M,{"code-path":"src/components/deploy/CredentialManager.tsx:95:15",value:r,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:96:17",className:"flex items-center gap-2",children:[e.jsx(b.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:96:59",className:"h-3.5 w-3.5"}),b.label]})},r))]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:101:9",className:"relative flex-1 max-w-xs",children:[e.jsx(ua,{"code-path":"src/components/deploy/CredentialManager.tsx:102:11",className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:103:11",value:o,onChange:r=>n(r.target.value),placeholder:"搜索名称、描述...",className:"pl-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm"})]}),e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:107:9",className:"text-xs text-[var(--dg-text-muted)]",children:[m.length," 个凭据"]})]}),y?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:111:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(Da,{"code-path":"src/components/deploy/CredentialManager.tsx:112:11",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-blue)]"}),"加载中..."]}):m.length===0?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:115:9",className:"text-center py-16 border border-dashed border-[var(--dg-border)] rounded-lg",children:[e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:116:11",className:"w-12 h-12 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:117:11",className:"text-[var(--dg-text-secondary)] mb-2",children:"暂无凭据"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:118:11",className:"text-xs text-[var(--dg-text-muted)] mb-4",children:"创建 SSH、Docker、AKSK 等类型的凭据,供流水线和服务器使用"}),e.jsxs(N,{"code-path":"src/components/deploy/CredentialManager.tsx:119:11",onClick:()=>{g(null),u(!0)},children:[e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:120:13",className:"w-4 h-4 mr-1"}),"创建第一个凭据"]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:124:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/CredentialManager.tsx:125:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/CredentialManager.tsx:126:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:127:15",children:[e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:128:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:129:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:130:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"摘要"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:131:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden lg:table-cell",children:"标签"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:132:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden xl:table-cell",children:"引用ID"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:133:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:134:17",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/CredentialManager.tsx:137:13",children:m.map(r=>{const b=r.secret_type,A=H[b],q=r.expires_at&&new Date(r.expires_at)<new Date;return e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:143:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50 cursor-pointer",onClick:()=>{h(r.id),k(!0)},children:[e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:146:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:147:23",className:"flex items-center gap-2",children:[A?e.jsx(A.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:148:32",className:`h-4 w-4 ${A.color} shrink-0`}):e.jsx(z,{"code-path":"src/components/deploy/CredentialManager.tsx:148:91",className:"h-4 w-4 text-[var(--dg-text-muted)] shrink-0"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:149:25",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:150:27",className:"font-medium text-[var(--dg-text-primary)]",children:r.name}),r.variable_name&&e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:152:29",className:"text-xs text-[var(--dg-text-muted)] font-mono",children:r.variable_name})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:157:21",className:"px-3 py-2.5",children:e.jsx(w,{"code-path":"src/components/deploy/CredentialManager.tsx:158:23",variant:"outline",className:`text-xs ${aa[b]||""}`,children:A?.label||b})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:162:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] text-xs hidden md:table-cell max-w-[180px] truncate font-mono",children:r.summary||"-"}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:165:21",className:"px-3 py-2.5 hidden lg:table-cell",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:166:23",className:"flex gap-1 flex-wrap",children:[(r.tags||[]).slice(0,3).map(F=>e.jsx(w,{"code-path":"src/components/deploy/CredentialManager.tsx:168:27",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:F},F)),(r.tags||[]).length>3&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:171:27",className:"text-xs text-[var(--dg-text-muted)]",children:["+",r.tags.length-3]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:175:21",className:"px-3 py-2.5 hidden xl:table-cell",children:e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:176:23",className:"text-xs text-[var(--dg-blue)] cursor-pointer font-mono",onClick:F=>{F.stopPropagation(),E(r.env_prefix)},children:r.env_prefix})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:181:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:182:23",className:"flex items-center gap-1",children:[r.is_active?e.jsx(w,{"code-path":"src/components/deploy/CredentialManager.tsx:184:27",className:"bg-green-500/20 text-green-400 text-xs border-0",children:"启用"}):e.jsx(w,{"code-path":"src/components/deploy/CredentialManager.tsx:186:27",className:"bg-red-500/20 text-red-400 text-xs border-0",children:"禁用"}),q&&e.jsxs(w,{"code-path":"src/components/deploy/CredentialManager.tsx:189:27",className:"bg-yellow-500/20 text-yellow-400 text-xs border-0",children:[e.jsx(ba,{"code-path":"src/components/deploy/CredentialManager.tsx:189:96",className:"h-2.5 w-2.5 mr-0.5"}),"过期"]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:193:21",className:"px-3 py-2.5 text-right",onClick:F=>F.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:194:23",className:"flex justify-end gap-1",children:[e.jsx(N,{"code-path":"src/components/deploy/CredentialManager.tsx:195:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{g(r),u(!0)},title:"编辑",children:e.jsx(ja,{"code-path":"src/components/deploy/CredentialManager.tsx:197:27",className:"w-3.5 h-3.5"})}),e.jsx(N,{"code-path":"src/components/deploy/CredentialManager.tsx:199:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>O(r),title:r.is_active?"禁用":"启用",children:r.is_active?e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:202:45",className:"w-3.5 h-3.5 text-yellow-500"}):e.jsx(Je,{"code-path":"src/components/deploy/CredentialManager.tsx:202:99",className:"w-3.5 h-3.5 text-green-500"})}),e.jsx(N,{"code-path":"src/components/deploy/CredentialManager.tsx:204:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>T(r),title:"删除",children:e.jsx(Na,{"code-path":"src/components/deploy/CredentialManager.tsx:206:27",className:"w-3.5 h-3.5"})})]})})]},r.id)})})]})}),e.jsx(ka,{"code-path":"src/components/deploy/CredentialManager.tsx:218:7",open:d,onClose:()=>u(!1),onSaved:()=>_(),editData:x}),e.jsx(wa,{"code-path":"src/components/deploy/CredentialManager.tsx:219:7",open:D,onClose:()=>k(!1),credId:v})]})}export{Oa as default};
|