Files
Nexus/web/app/assets/BtPanelSettingsPage-BBi6ttQm.js
T
2026-07-08 22:31:31 +08:00

1 line
8.3 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{Ar as e,Dr as t,Er as n,I as r,L as i,Nr as a,Or as o,Tr as s,Wr as c,b as l,br as u,jr as d,li as f,qr as p,ri as m,ui as h,v as g,wr as _,xi as v}from"./index-a0fi5f-0.js";import{i as y,n as b,o as x,t as S}from"./VCard-BwwttBcf.js";import{t as C}from"./VTextField-GUQr1tUN.js";import{t as w}from"./VDialog-BFQGuuXw.js";import{t as T}from"./VForm-CAvEgM-c.js";import{t as E}from"./VSwitch-CIruBPax.js";import{C as D,D as O,E as k,T as A,n as j,t as M,w as N}from"./btpanel-BsL25ffd.js";import{n as P,t as F}from"./useBtPanelPageLoad-CV_unS2-.js";var ee={key:0,class:`text-caption text-medium-emphasis mb-3`},te={class:`d-flex flex-wrap align-center ga-2 mb-3`},ne={key:0,class:`text-caption text-error mb-2`},I={key:1,class:`text-caption text-medium-emphasis mb-3`},L=a({name:`BtPanelSettingsPage`,__name:`BtPanelSettingsPage`,setup(a){let L=h(!1),R=h(!1),z=h(!1),B=h(!1),V=h(!1),H=h(!1),U=h(!1),W=h(null),G=h(null),K=h([]),q=f({base_url:``,api_key:``,verify_ssl:!1,auto_bootstrap:!0}),J=f({bt_panel_source_ip:``,bt_panel_auto_bootstrap_enabled:!0}),Y=h(!1),X={pending:`等待获取`,installing:`宝塔安装中`,ready:`已完成`,failed:`SSH 失败(已停止)`,disabled:`已关闭自动获取`},re=_(()=>{let e=W.value?.bootstrap_state;return e?X[e]??e:`未启用`}),ie=_(()=>{let e=W.value?.bt_installed;return e===!0?`已安装宝塔`:e===!1?`未检测到宝塔目录`:`未检测(引导中或手动配置)`}),ae=_(()=>{let e=W.value?.bt_installed;return e===!0?`success`:e===!1?`warning`:`default`}),oe=_(()=>{let e=W.value?.bootstrap_state;return e===`ready`||W.value?.configured?`success`:e===`failed`?`error`:e===`installing`?`warning`:`default`}),Z=_(()=>K.value.filter(e=>!e.configured).map(e=>e.id));async function Q(e,t=!1){L.value=!0;try{W.value=await D(e,{refreshBtInstalled:t}),q.base_url=W.value.base_url??``,q.verify_ssl=W.value.verify_ssl,q.auto_bootstrap=W.value.auto_bootstrap===!0,q.api_key=``}catch(e){window.$snackbar?.(e instanceof Error?e.message:`加载失败`,`error`)}finally{L.value=!1}}F(async e=>{await Q(e)});async function $(e){B.value=!0;try{W.value=await D(e,{refreshBtInstalled:!0})}catch(e){window.$snackbar?.(e instanceof Error?e.message:`检测失败`,`error`)}finally{B.value=!1}}async function se(){try{G.value=await N(),J.bt_panel_source_ip=G.value.bt_panel_source_ip??``,J.bt_panel_auto_bootstrap_enabled=G.value.bt_panel_auto_bootstrap_enabled,K.value=await A()}catch(e){window.$snackbar?.(e instanceof Error?e.message:`加载全局设置失败`,`error`)}finally{Y.value=!0}}c(()=>{se()});async function ce(e){R.value=!0;try{let t={base_url:q.base_url,verify_ssl:q.verify_ssl,auto_bootstrap:q.auto_bootstrap};q.api_key.trim()&&(t.api_key=q.api_key.trim()),W.value=await k(e,t),q.api_key=``,window.$snackbar?.(`已保存`,`success`)}catch(e){window.$snackbar?.(e instanceof Error?e.message:`保存失败`,`error`)}finally{R.value=!1}}async function le(){V.value=!0;try{G.value=await O({bt_panel_source_ip:J.bt_panel_source_ip,bt_panel_auto_bootstrap_enabled:J.bt_panel_auto_bootstrap_enabled}),window.$snackbar?.(`全局设置已保存`,`success`)}catch(e){window.$snackbar?.(e instanceof Error?e.message:`保存失败`,`error`)}finally{V.value=!1}}async function ue(e){z.value=!0;try{W.value=await j(e),W.value.ok?(q.base_url=W.value.base_url??``,window.$snackbar?.(`宝塔 API 已自动配置`,`success`)):window.$snackbar?.(W.value.error??W.value.bootstrap_last_error??`获取失败`,`warning`),await Q(e)}catch(e){window.$snackbar?.(e instanceof Error?e.message:`获取失败`,`error`)}finally{z.value=!1}}async function de(){if(Z.value.length){H.value=!0;try{let e=await M([],{allUnconfigured:!0});U.value=!1,window.$snackbar?.(`已启动批量任务 #${e.job_id}`,`success`)}catch(e){window.$snackbar?.(e instanceof Error?e.message:`批量任务启动失败`,`error`)}finally{H.value=!1}}}return(a,c)=>(p(),n(P,{title:`宝塔 · 连接配置`,subtitle:`SSH 自动获取 API 或手动填写面板地址与密钥`,"require-server":!1},{default:m(({serverId:a})=>[d(S,{"max-width":`720`,variant:`outlined`,rounded:`lg`,class:`mb-4`},{default:m(()=>[d(y,{class:`text-subtitle-1`},{default:m(()=>[...c[9]||=[e(`全局`,-1)]]),_:1}),d(b,null,{default:m(()=>[d(C,{modelValue:J.bt_panel_source_ip,"onUpdate:modelValue":c[0]||=e=>J.bt_panel_source_ip=e,label:`中心调用 IPAPI 白名单)`,hint:`留空则解析系统 api_base_url DNS`,"persistent-hint":``,class:`mb-2`},null,8,[`modelValue`]),d(E,{modelValue:J.bt_panel_auto_bootstrap_enabled,"onUpdate:modelValue":c[1]||=e=>J.bt_panel_auto_bootstrap_enabled=e,label:`新服务器自动 SSH 获取(每 5 分钟重试)`,color:`primary`,"hide-details":``,class:`mb-2`},null,8,[`modelValue`]),G.value?.resolved_center_ip?(p(),o(`div`,ee,` 当前生效白名单 IP`+v(G.value.resolved_center_ip),1)):t(``,!0),d(i,{color:`primary`,variant:`tonal`,loading:V.value,onClick:le},{default:m(()=>[...c[10]||=[e(` 保存全局设置 `,-1)]]),_:1},8,[`loading`]),d(i,{class:`ml-2`,color:`secondary`,variant:`outlined`,disabled:!Z.value.length,onClick:c[2]||=e=>U.value=!0},{default:m(()=>[e(` 批量初始化未配置(`+v(Z.value.length)+` `,1)]),_:1},8,[`disabled`]),Y.value&&!K.value.length?(p(),n(r,{key:1,type:`warning`,variant:`tonal`,class:`mt-4`,title:`暂无服务器`,text:`请先在「服务器」页添加子机,再回到此处配置宝塔连接。`})):t(``,!0)]),_:1})]),_:1}),a?(p(),n(S,{key:1,"max-width":`720`,variant:`outlined`,rounded:`lg`,loading:L.value},{default:m(()=>[d(y,{class:`text-subtitle-1`},{default:m(()=>[...c[11]||=[e(`当前服务器`,-1)]]),_:1}),d(b,null,{default:m(()=>[s(`div`,te,[d(l,{color:ae.value,size:`small`,variant:`tonal`},{default:m(()=>[e(` SSH 检测:`+v(ie.value),1)]),_:1},8,[`color`]),d(i,{icon:`mdi-refresh`,size:`x-small`,variant:`text`,loading:B.value,title:`重新 SSH 检测宝塔`,onClick:e=>$(a)},null,8,[`loading`,`onClick`]),d(l,{color:oe.value,size:`small`,variant:`tonal`},{default:m(()=>[e(` 引导:`+v(re.value),1)]),_:1},8,[`color`])]),W.value?.bootstrap_last_error?(p(),o(`div`,ne,` 上次错误:`+v(W.value.bootstrap_last_error),1)):t(``,!0),W.value?.bootstrap_next_attempt_at?(p(),o(`div`,I,` 下次重试:`+v(W.value.bootstrap_next_attempt_at),1)):t(``,!0),d(i,{color:`primary`,variant:`tonal`,class:`mb-4`,loading:z.value,onClick:e=>ue(a)},{default:m(()=>[...c[12]||=[e(` 立即 SSH 获取 `,-1)]]),_:1},8,[`loading`,`onClick`]),d(T,{onSubmit:u(e=>ce(a),[`prevent`])},{default:m(()=>[d(E,{modelValue:q.auto_bootstrap,"onUpdate:modelValue":c[3]||=e=>q.auto_bootstrap=e,label:`自动获取(每 5 分钟重试,直至成功)`,color:`primary`,"hide-details":``,class:`mb-3`},null,8,[`modelValue`]),d(C,{modelValue:q.base_url,"onUpdate:modelValue":c[4]||=e=>q.base_url=e,label:`面板地址`,hint:`含协议、端口与安全入口,如 https://1.2.3.4:8888/abc123`,"persistent-hint":``,class:`mb-2`},null,8,[`modelValue`]),d(C,{modelValue:q.api_key,"onUpdate:modelValue":c[5]||=e=>q.api_key=e,label:`API 密钥`,type:`password`,placeholder:W.value?.api_key_set?`已设置,留空不修改`:`在面板设置-API接口获取`,class:`mb-2`},null,8,[`modelValue`,`placeholder`]),d(E,{modelValue:q.verify_ssl,"onUpdate:modelValue":c[6]||=e=>q.verify_ssl=e,label:`校验 SSL 证书`,color:`primary`,"hide-details":``,class:`mb-4`},null,8,[`modelValue`]),d(i,{type:`submit`,color:`primary`,loading:R.value},{default:m(()=>[...c[13]||=[e(`保存`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`onSubmit`])]),_:2},1024)]),_:2},1032,[`loading`])):(p(),n(r,{key:0,type:`info`,variant:`tonal`,class:`mb-4`,title:`单机配置`,text:`请在右上角选择服务器,或从「服务器列表」点击「连接配置」进入。`})),d(w,{modelValue:U.value,"onUpdate:modelValue":c[8]||=e=>U.value=e,"max-width":`480`},{default:m(()=>[d(S,{title:`批量 SSH 获取宝塔 API`},{default:m(()=>[d(b,null,{default:m(()=>[c[14]||=e(` 将对 `,-1),s(`strong`,null,v(Z.value.length),1),c[15]||=e(` 台未配置服务器发起 SSH 引导(写入子机 `,-1),c[16]||=s(`code`,null,`api.json`,-1),c[17]||=e(` 并加密保存到 Nexus)。此操作会占用 SSH 连接,建议在低峰执行。 `,-1)]),_:1}),d(x,null,{default:m(()=>[d(g),d(i,{variant:`text`,onClick:c[7]||=e=>U.value=!1},{default:m(()=>[...c[18]||=[e(`取消`,-1)]]),_:1}),d(i,{color:`primary`,loading:H.value,onClick:de},{default:m(()=>[...c[19]||=[e(`确认开始`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{L as default};