51948469c2
- Stop ignoring web/app/index.html and web/app/assets/ - Bundle index-DBKIQT7H.js from current vite build (~101MB assets) Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
import{t as e}from"./VDataTable-6oTctqdd.js";import{Dr as t,F as n,Kn as ee,L as r,Lr as i,Lt as a,M as o,N as s,Nr as c,P as l,Q as u,Qn as te,Xn as d,Yn as f,Zn as p,br as m,er as h,fr as g,j as _,rr as ne,t as v,tr as y,ur as re,vr as ie}from"./index-pvdeMyqI.js";import{a as ae}from"./VSelectionControl-BF_TcFC2.js";import{t as b}from"./VSpacer-DBGPrOmG.js";import{t as x}from"./useSnackbar-D7YOfKok.js";import{t as S}from"./VChip-CdbZeSb0.js";import{t as C}from"./VDialog-B8L-RddT.js";import{t as w}from"./VDataTableServer-Cr7i6n_Y.js";import{i as T}from"./validation-DMwOxx4a.js";import{t as E}from"./VTextarea-JzH72Eiu.js";var oe={class:`text-caption text-medium-emphasis`},D=ne({__name:`CredentialsPage`,setup(ne){let D=x();function se(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}let O=t(!1),k=t(`passwords`),A=t(null),j=t(1),M=t(0),N=t(20),P=t([]),F=t(!1),I=t({name:``,password:``}),ce=[{title:`预设名称`,key:`name`},{title:`创建时间`,key:`created_at`,width:180},{title:`操作`,key:`actions`,width:150,align:`end`}],L=t([]),R=t(!1),z=t({name:``,public_key:``,private_key:``}),B=[{title:`名称`,key:`name`},{title:`私钥`,key:`private_key_set`,width:120},{title:`操作`,key:`actions`,width:150,align:`end`}],V=t([]),H=t(!1),U=t({name:``,host:``,port:3306,username:``,password:``,database:``}),W=[{title:`名称`,key:`name`},{title:`主机`,key:`host`},{title:`端口`,key:`port`,width:80},{title:`用户名`,key:`username`},{title:`数据库`,key:`database`},{title:`操作`,key:`actions`,width:150,align:`end`}],G=t(!1),K=t(``),q=t(null);async function J(){O.value=!0;try{let e=await a.getList(`/presets/`);P.value=e.items,M.value=e.total}catch{P.value=[]}finally{O.value=!1}}async function Y(){O.value=!0;try{let e=await a.getList(`/ssh-key-presets/`,{page:j.value,per_page:N.value});L.value=e.items,M.value=e.total}catch{L.value=[]}finally{O.value=!1}}async function X(){O.value=!0;try{let e=await a.getList(`/scripts/credentials`,{page:j.value,per_page:N.value});V.value=e.items,M.value=e.total}catch{V.value=[]}finally{O.value=!1}}function Z(){switch(k.value){case`passwords`:J();break;case`sshkeys`:Y();break;case`db`:X();break}}ie(k,()=>{j.value=1,Z()});function Q(e){A.value=e.id,I.value={name:e.name,password:``},F.value=!0}async function le(){let e=I.value.name.trim(),t=I.value.password;if(!e){D(`请填写预设名称`,`error`);return}if(!A.value&&!t){D(`请填写 SSH 密码`,`error`);return}try{if(A.value){let n={name:e};t&&(n.encrypted_pw=t),await a.put(`/presets/${A.value}`,n)}else await a.post(`/presets/`,{name:e,encrypted_pw:t});F.value=!1,J(),D(`保存成功`)}catch(e){D(e instanceof Error?e.message:`保存失败`,`error`)}}function ue(e){A.value=e.id,z.value={name:e.name,public_key:e.public_key||``,private_key:``},R.value=!0}async function de(){try{A.value?await a.put(`/ssh-key-presets/${A.value}`,z.value):await a.post(`/ssh-key-presets/`,z.value),R.value=!1,Y(),D(`保存成功`)}catch(e){D(e.message||`保存失败`,`error`)}}function fe(e){A.value=e.id,U.value={name:e.name,host:e.host||``,port:e.port||3306,username:e.username||``,password:``,database:e.database||``},H.value=!0}async function pe(){try{A.value?await a.put(`/scripts/credentials/${A.value}`,U.value):await a.post(`/scripts/credentials`,U.value),H.value=!1,X(),D(`保存成功`)}catch(e){D(e.message||`保存失败`,`error`)}}function me(){A.value=null,k.value===`passwords`?(I.value={name:``,password:``},F.value=!0):k.value===`sshkeys`?(z.value={name:``,public_key:``,private_key:``},R.value=!0):(U.value={name:``,host:``,port:3306,username:``,password:``,database:``},H.value=!0)}function $(e,t){K.value=e,q.value=t.id,G.value=!0}async function he(){try{K.value===`password`?await a.delete(`/presets/${q.value}`):K.value===`sshkey`?await a.delete(`/ssh-key-presets/${q.value}`):await a.delete(`/scripts/credentials/${q.value}`),G.value=!1,Z(),D(`已删除`)}catch(e){D(e.message||`删除失败`,`error`)}}return re(()=>{Z()}),(t,a)=>(g(),d(ae,{fluid:``,class:`pa-6`},{default:m(()=>[y(o,{elevation:`0`,border:``,rounded:`lg`},{default:m(()=>[y(l,{class:`d-flex align-center`},{default:m(()=>[a[28]||=h(` 凭据管理 `,-1),y(b),y(u,{modelValue:k.value,"onUpdate:modelValue":a[0]||=e=>k.value=e,mandatory:``,density:`compact`,variant:`outlined`,class:`mr-3`},{default:m(()=>[y(r,{size:`small`,value:`passwords`},{default:m(()=>[...a[24]||=[h(`密码预设`,-1)]]),_:1}),y(r,{size:`small`,value:`sshkeys`},{default:m(()=>[...a[25]||=[h(`SSH 密钥`,-1)]]),_:1}),y(r,{size:`small`,value:`db`},{default:m(()=>[...a[26]||=[h(`数据库凭据`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(r,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:me},{default:m(()=>[...a[27]||=[h(`添加`,-1)]]),_:1})]),_:1}),y(_),k.value===`passwords`?(g(),te(ee,{key:0},[y(s,{class:`text-body-2 text-medium-emphasis pt-0 pb-2`},{default:m(()=>[...a[29]||=[h(` 保存常用 SSH 密码模板;在「服务器」里选择预设后由服务端解密填入。SSH 用户名在每台服务器上单独配置。 `,-1)]]),_:1}),y(e,{items:P.value,headers:ce,loading:O.value,hover:``,density:`comfortable`,"items-per-page":20},{"item.created_at":m(({item:e})=>[f(`span`,oe,i(se(e.created_at)),1)]),"item.actions":m(({item:e})=>[y(r,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>Q(e)},{default:m(()=>[...a[30]||=[h(`编辑`,-1)]]),_:1},8,[`onClick`]),y(r,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`password`,e)},{default:m(()=>[...a[31]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":m(()=>[...a[32]||=[f(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无密码预设`,-1)]]),_:1},8,[`items`,`loading`])],64)):p(``,!0),k.value===`sshkeys`?(g(),d(w,{key:1,items:L.value,headers:B,"items-length":M.value,loading:O.value,page:j.value,"items-per-page":N.value,hover:``,density:`comfortable`,"onUpdate:page":a[1]||=e=>{j.value=e,Y()},"onUpdate:itemsPerPage":a[2]||=e=>{N.value=e,j.value=1,Y()}},{"item.private_key_set":m(({item:e})=>[y(S,{color:e.private_key_set?`success`:`grey`,size:`small`,variant:`tonal`,label:``},{default:m(()=>[h(i(e.private_key_set?`已设置`:`未设置`),1)]),_:2},1032,[`color`])]),"item.actions":m(({item:e})=>[y(r,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>ue(e)},{default:m(()=>[...a[33]||=[h(`编辑`,-1)]]),_:1},8,[`onClick`]),y(r,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`sshkey`,e)},{default:m(()=>[...a[34]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":m(()=>[...a[35]||=[f(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无凭据`,-1)]]),_:1},8,[`items`,`items-length`,`loading`,`page`,`items-per-page`])):p(``,!0),k.value===`db`?(g(),d(w,{key:2,items:V.value,headers:W,"items-length":M.value,loading:O.value,page:j.value,"items-per-page":N.value,hover:``,density:`comfortable`,"onUpdate:page":a[3]||=e=>{j.value=e,X()},"onUpdate:itemsPerPage":a[4]||=e=>{N.value=e,j.value=1,X()}},{"item.actions":m(({item:e})=>[y(r,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>fe(e)},{default:m(()=>[...a[36]||=[h(`编辑`,-1)]]),_:1},8,[`onClick`]),y(r,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`db`,e)},{default:m(()=>[...a[37]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":m(()=>[...a[38]||=[f(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无凭据`,-1)]]),_:1},8,[`items`,`items-length`,`loading`,`page`,`items-per-page`])):p(``,!0)]),_:1}),y(C,{modelValue:F.value,"onUpdate:modelValue":a[8]||=e=>F.value=e,"max-width":`500`},{default:m(()=>[y(o,{border:``},{default:m(()=>[y(l,null,{default:m(()=>[h(i(A.value?`编辑密码预设`:`新建密码预设`),1)]),_:1}),y(s,null,{default:m(()=>[y(v,{modelValue:I.value.name,"onUpdate:modelValue":a[5]||=e=>I.value.name=e,label:`预设名称`,variant:`outlined`,density:`compact`,class:`mb-2`,placeholder:`如:生产环境 root 密码`,rules:[c(T)(`预设名称`)]},null,8,[`modelValue`,`rules`]),y(v,{modelValue:I.value.password,"onUpdate:modelValue":a[6]||=e=>I.value.password=e,label:`SSH 密码`,variant:`outlined`,density:`compact`,type:`password`,placeholder:A.value?`留空表示不修改`:`必填`,rules:A.value?[]:[c(T)(`SSH 密码`)]},null,8,[`modelValue`,`placeholder`,`rules`])]),_:1}),y(n,null,{default:m(()=>[y(b),y(r,{variant:`text`,onClick:a[7]||=e=>F.value=!1},{default:m(()=>[...a[39]||=[h(`取消`,-1)]]),_:1}),y(r,{color:`primary`,variant:`flat`,onClick:le},{default:m(()=>[...a[40]||=[h(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),y(C,{modelValue:R.value,"onUpdate:modelValue":a[13]||=e=>R.value=e,"max-width":`500`},{default:m(()=>[y(o,{border:``},{default:m(()=>[y(l,null,{default:m(()=>[h(i(A.value?`编辑 SSH 密钥`:`新建 SSH 密钥`),1)]),_:1}),y(s,null,{default:m(()=>[y(v,{modelValue:z.value.name,"onUpdate:modelValue":a[9]||=e=>z.value.name=e,label:`名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),y(E,{modelValue:z.value.public_key,"onUpdate:modelValue":a[10]||=e=>z.value.public_key=e,label:`公钥`,variant:`outlined`,density:`compact`,rows:`3`,class:`mb-2`},null,8,[`modelValue`]),y(E,{modelValue:z.value.private_key,"onUpdate:modelValue":a[11]||=e=>z.value.private_key=e,label:`私钥`,variant:`outlined`,density:`compact`,rows:`5`},null,8,[`modelValue`])]),_:1}),y(n,null,{default:m(()=>[y(b),y(r,{variant:`text`,onClick:a[12]||=e=>R.value=!1},{default:m(()=>[...a[41]||=[h(`取消`,-1)]]),_:1}),y(r,{color:`primary`,variant:`flat`,onClick:de},{default:m(()=>[...a[42]||=[h(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),y(C,{modelValue:H.value,"onUpdate:modelValue":a[21]||=e=>H.value=e,"max-width":`500`},{default:m(()=>[y(o,{border:``},{default:m(()=>[y(l,null,{default:m(()=>[h(i(A.value?`编辑数据库凭据`:`新建数据库凭据`),1)]),_:1}),y(s,null,{default:m(()=>[y(v,{modelValue:U.value.name,"onUpdate:modelValue":a[14]||=e=>U.value.name=e,label:`名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),y(v,{modelValue:U.value.host,"onUpdate:modelValue":a[15]||=e=>U.value.host=e,label:`主机`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),y(v,{modelValue:U.value.port,"onUpdate:modelValue":a[16]||=e=>U.value.port=e,label:`端口`,variant:`outlined`,density:`compact`,type:`number`,class:`mb-2`},null,8,[`modelValue`]),y(v,{modelValue:U.value.username,"onUpdate:modelValue":a[17]||=e=>U.value.username=e,label:`用户名`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),y(v,{modelValue:U.value.password,"onUpdate:modelValue":a[18]||=e=>U.value.password=e,label:`密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-2`},null,8,[`modelValue`]),y(v,{modelValue:U.value.database,"onUpdate:modelValue":a[19]||=e=>U.value.database=e,label:`数据库`,variant:`outlined`,density:`compact`},null,8,[`modelValue`])]),_:1}),y(n,null,{default:m(()=>[y(b),y(r,{variant:`text`,onClick:a[20]||=e=>H.value=!1},{default:m(()=>[...a[43]||=[h(`取消`,-1)]]),_:1}),y(r,{color:`primary`,variant:`flat`,onClick:pe},{default:m(()=>[...a[44]||=[h(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),y(C,{modelValue:G.value,"onUpdate:modelValue":a[23]||=e=>G.value=e,"max-width":`400`},{default:m(()=>[y(o,{border:``},{default:m(()=>[y(l,null,{default:m(()=>[...a[45]||=[h(`确认删除`,-1)]]),_:1}),y(s,null,{default:m(()=>[...a[46]||=[h(`确定要删除此凭据吗?`,-1)]]),_:1}),y(n,null,{default:m(()=>[y(b),y(r,{variant:`text`,onClick:a[22]||=e=>G.value=!1},{default:m(()=>[...a[47]||=[h(`取消`,-1)]]),_:1}),y(r,{color:`error`,variant:`flat`,onClick:he},{default:m(()=>[...a[48]||=[h(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{D as default}; |