File: /www/server/panel/BTPanel/static/js/useMethods.js
import{L as O,k as D,N as $,e as g,_ as f,O as R,n as L,M as N,P as W,Q as q,R as H,S as M,U as z,V as U,W as J}from"./utils-lib.js?v=1777008528";import{J as Q,I as G,e as t,aF as b,r as F,$ as K,aW as C,ar as w,x as d,at as T,as as P,aX as I,aB as X,D as B,i as Y,T as v,ap as Z,ag as ee,af as V,z as S}from"./base-lib.js?v=1777008528";import{b as te,e as j,f as ae,g as se}from"./index3.js?v=1777008528";function x(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Y(e)}const{refreshActiveTable:ne,refs:{cpuAndMemData:re}}=O(),le=(e,n,a)=>t("div",{class:"flex items-center"},[t("span",null,[e]),t(C,{content:n,placement:"top"},{default:()=>[t("span",{class:"ml-4px bt-ico-ask"},["?"])]})]),_e=e=>{const n=(e.p-1)*e.limit,a=n+e.limit;return W(n,a,e.list)},oe=e=>{const n=e.prop||"ps";return{label:"备注",prop:n,width:e.width?e.width:200,isCustom:!e.noCustom,render:a=>{if(a[n]===void 0)return Q(t("div",{class:"loading"},null),[[G("bt-loading"),!0]]);const s={lt:"<",gt:">",nbsp:" ",amp:"&",quot:'"'};return a[n]=a[n].replace(/&(lt|gt|nbsp|amp|quot);/gi,(l,m)=>s[m]),b("input",{type:"text",value:a[n],class:"bt-table-input w-full",title:"点击修改备注,失去焦点后自动保存",placeholder:e.noPlace?"":"点击编辑备注",onBlur:l=>{if(a[n]===l.target.value)return!1;a[n]=l.target.value,e.edit?e.edit(a):ie(a,e.table)}})}}},ie=async({id:e,ps:n,remark:a},s)=>{await D({loading:"正在修改备注信息,请稍后...",request:$({id:e,table:s,ps:n||a||""}),message:!0})},ke=e=>g({component:()=>f(()=>import("./index146.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:e,title:"创建容器",area:74,btn:"创建"}),ve=e=>g({component:()=>f(()=>import("./real-monitor-dialog.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"【".concat(e.name,"】实时监控"),area:100,compData:{row:e}}),ye=e=>g({component:()=>f(()=>import("./container-rename.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{row:e,type:"dialog"},title:"重命名容器【".concat(e.name,"】"),area:40,btn:"保存"}),xe=async()=>{D({request:R({version:-1,product_type:10}),success:({data:e})=>{g({component:()=>f(()=>import("./index147.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),area:52,compData:{name:"Docker",type:10,id:e.msg[0].id,description:e.msg[0].question}})}})},Ce=(e,n)=>(L(n)||(n=""),g({component:()=>f(()=>import("./index148.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"容器【".concat(e.name,"】详情"),area:[90,64],compData:{row:e,type:n}})),ue=e=>g({component:()=>f(()=>import("./container-terminal-dialog.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"宝塔终端",area:[80,50],compData:{cmd:e}}),De=async e=>{if(e.status!=="running")return N.error("容器未运行");g({title:"shell类型",area:40,component:()=>f(()=>import("./shell-type-select.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{row:e,openTerminalLog:ue},btn:["确认"]})},Ee=e=>g({component:()=>f(()=>import("./pull-mirror-dialog.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"日志",area:64,compData:{isOther:e}}),we=e=>g({component:()=>f(()=>import("./index149.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"添加Yaml模板",area:64,btn:"添加",compData:{callback:e}}),Te=async(e,n,a,s)=>{const{label:l,value:m}=s,u=async(h,y)=>{const{id:k}=h;switch(m){case"delete":return await U({data:JSON.stringify({id:k})});default:return await z({data:JSON.stringify({id:k,status:m})})}};await e({title:"批量".concat(l,"容器"),content:"批量".concat(l,"已选的容器,是否继续操作!"),column:[{label:"容器名",prop:"name"},te()],onConfirm:async()=>(await n(u),ne(),!1)})},Pe=({terminalEvent:e,logDataEvent:n,deleteDataEvent:a,conDetailEvent:s,setStatusEvent:l,setStatusTitle:m,openContainerBackups:u,changeTaskTopEvent:h,statusFilterKey:y,moreEvent:k})=>[j(),ae({event:(r,o)=>h(r,o),param:"is_top"}),{label:"容器名",prop:"name",render:r=>t("span",{class:"bt-link",onClick:()=>s(r)},[r.name])},{label:"容器ID",isCustom:!0,prop:"id",width:120,render:r=>t(C,{placement:"top"},{default:()=>t("div",{class:"w-[100px] h-full",onClick:()=>q({value:r.id})},[r.id.slice(0,12)]),content:()=>t("div",null,[r.id])})},{label:"备份",isCustom:!1,width:60,render:r=>r.hasOwnProperty("backup_count")?t("span",{class:"bt-link ".concat(r.backup_count>0?"":"!text-warning"),onClick:()=>u(r)},[r.backup_count>0?"有(".concat(r.backup_count,")"):"无备份"]):t("span",{class:"bt-link !text-warning",onClick:()=>u(r)},["无备份"])},{label:"状态",renderHeader(){const r=[{title:"全部",key:"all"},{title:"正在运行",key:"running"},{title:"暂停",key:"paused"},{title:"停止",key:"exited"}];return b("div",{class:"flex items-center flex-nowrap"},["",b(w,{onCommand:o=>m(o)},{default:()=>b("span",{class:"text-small flex items-center"},[[t("span",{class:"status-header-text"},[d("状态"),y.value==="all"?"":"(".concat(r.find(o=>o.key===y.value).title,")")])],b("i",{class:"svgtofont-el-arrow-down "})]),dropdown:()=>{let o;return t(P,null,x(o=r.map(i=>t(T,{command:i.key},{default:()=>[i.title]})))?o:{default:()=>[o]})}})])},prop:"status",isCustom:!0,width:120,render:r=>{let o=[],i=[];return r.status==="running"?(i=["运行中",b("span",{class:"svgtofont-icon-start text-primary"})],o=[{title:"停止",key:"stop"},{title:"重启",key:"restart"},{title:"强制停止",key:"kill"},{title:"暂停",key:"pause"}]):r.status==="exited"?(i=["已停止",b("span",{class:"svgtofont-icon-stop text-danger"},{})],o=[{title:"启动",key:"start"},{title:"重启",key:"restart"}]):(i=["已暂停",b("span",{class:"svgtofont-icon-stop text-danger"},{})],o=[{title:"重启",key:"restart"},{title:"恢复",key:"unpause"},{title:"强制停止",key:"kill"}]),b(w,{onCommand:p=>l(r,p)},{default:()=>t("span",{class:(r.status==="running"?"text-primary":"text-danger")+" flex items-center"},[i]),dropdown:()=>{let p;return t(P,null,x(p=o.map(c=>t(T,{key:c.key,command:c.key},{default:()=>[c.title]})))?p:{default:()=>[p]})}})}},{label:"镜像",isCustom:!0,prop:"image",minWidth:100},{label:"IP",isCustom:!1,prop:"ip",minWidth:60,render:r=>r.ip.length>0?r.ip[0]:""},{label:"IPV6",isCustom:!1,prop:"ipv6",minWidth:60,render:r=>r.ipv6.length>0?r.ipv6[0]:""},{label:"CPU / 内存",isCustom:!1,prop:"cpu_mem",columnKey:"cpu_mem",showOverflowTooltip:!1,render:r=>{const o=re.value[r.id];let i=Number(o.cpu_usage),p=Number(o.mem_percent);return i&&i>100&&(i=100),p&&p>100&&(p=100),r.status==="running"?o.cpu_usage===void 0||o.mem_percent===void 0?t("div",{class:"loading h-[4.6rem] flex items-center"},[d("正在获取中...")]):t(C,{placement:"top"},{default:()=>t("div",{class:"w-[100px]"},[t("div",{class:"flex items-center justify-between"},[t("span",{class:"w-[3rem] inline-block whitespace-nowrap"},[d("cpu:")]),t(I,{class:"w-[7rem] ml-[1rem]",percentage:i||0,"show-text":!1},null)]),t("div",{class:"flex items-center justify-between"},[t("span",{class:"w-[3rem] inline-block whitespace-nowrap"},[d("内存:")]),t(I,{class:"w-[7rem] ml-[1rem]",percentage:p||0,"show-text":!1},null)])]),content:()=>t("div",null,[d("CPU:"),i,d("%"),t("br",null,null),d("内存:"),p,d("%")])}):t("div",{class:"h-[4.6rem] flex items-center"},[d("--")])}},{label:"端口(主机-->容器)",prop:"ports",isCustom:!0,minWidth:130,columnKey:"ports",showOverflowTooltip:!1,render:r=>{const o=Object.entries(r.ports)||[],i=[];let p=0;for(let c=0;c<o.length;c++){if(p>=10){i.push("......");break}const _=o[c];_[1]&&(i.push("".concat(_[1][0].HostIp||"0.0.0.0",":").concat(_[1][0].HostPort,"-->").concat(_[0]," ")),p++)}return t("span",{key:r.id,class:"flex items-center whitespace-pre-wrap gap-4 min-h-[3rem]",title:i.join(" ")},[i.map((c,_)=>c.startsWith("0.0.0.0:")?t(X,{trigger:"hover",placement:"bottom",width:"12.5rem","popper-class":"!min-w-[12.5rem]"},{reference:()=>t(B,{type:"primary",size:"default",class:"mr-1 cursor-pointer bt-link"},{default:()=>[t("span",{class:"inline-flex items-center gap-x-1"},[t("i",{class:"svgtofont-el-link !text-base !text-primary"},null),c])]}),default:()=>t("div",{class:"-m-[12px] text-small"},[t("div",{class:"px-[16px] py-[8px] cursor-pointer text-center hover:bg-light",onClick:()=>A(c,"http")},[d("HTTP协议访问")]),t("div",{class:"px-[16px] py-[8px] cursor-pointer text-center hover:bg-light",onClick:()=>A(c,"https")},[d("HTTPS协议访问")])])}):t(B,{type:"primary",size:"default",class:"mr-1",title:"本机内部访问"},x(c)?c:{default:()=>[c]}))])}},{label:"创建时间",isCustom:!1,prop:"created_time",width:150,render:r=>H(r.created_time)},oe({edit:async r=>{try{D({request:M({data:JSON.stringify({id:r.id,remark:r.remark})}),message:!0})}catch(o){}},noPlace:!0,noCustom:!0,prop:"remark",table:"containers",width:200}),se([{onClick:s,title:"管理"},{onClick:e,title:"终端"},{onClick:a,title:"删除"},{width:50,onClick:k,isMore:!0,menu:[{key:"log",title:"日志"},{key:"reName",title:"重命名"},{key:"realMonitor",title:"实时监控"},{key:"dir",title:"目录"}]}])],Ie=()=>[j({key:"project_name"}),{label:"Compose模板名",prop:"project_name",minWidth:100},{label:"路径",prop:"conf_file",showOverflowTooltip:!0,minWidth:100},{label:"备注",prop:"remark",minWidth:100}],Be=({setPort:e,delPort:n})=>[{label:"本地端口",prop:"server",render:a=>t(v,{size:"small",modelValue:a.server,onInput:s=>e(s,a,"server"),placeholder:"例如:80"},null)},{label:"容器",prop:"con",render:a=>t(v,{size:"small",modelValue:a.con,onInput:s=>e(s,a,"con"),placeholder:"例如:80"},null)},{label:"对外暴露",prop:"output",width:100,render:a=>t(Z,{size:"small",modelValue:a.output,onChange:s=>e(s,a,"output")},null),renderHeader:()=>le("对外暴露","允许外部访问会将端口映射出去,所有人都可以访问这个端口(不建议)")},{label:"协议",prop:"protocol ",width:220,render:a=>t("div",{class:"flex items-center"},[t(ee,{modelValue:a.protocol,onChange:s=>e(s,a,"protocol")},{default:()=>[t(V,{value:"tcp"},{default:()=>[d("TCP")]}),t(V,{value:"udp"},{default:()=>[d("UDP")]})]}),t(S,{class:"!ml-[1rem] h-[2.8]",onClick:()=>n(a)},{default:()=>[t("i",{class:"svgtofont-el-delete"},null)]})])}],Ve=({changeNet:e,delNet:n,netOptions:a})=>[{label:"网络名称",prop:"network",minWidth:110,render:s=>t("div",{class:"h-[3rem]"},[t(J,{modelValue:s.network,class:"!w-[20rem]",options:a.value,onChange:l=>e(s,l,"network")},null)])},{label:"IPV4地址",prop:"con",width:150,render:s=>t(v,{size:"default",modelValue:s.ip4,"onUpdate:modelValue":l=>s.ip4=l,disabled:s.network=="bridge"||s.network=="none"||s.network=="host",onBlur:l=>e(s,l.target.value,"ip4"),placeholder:s.network==="bridge"||s.network==="none"||s.network==="host"?"非自定义网卡":"例如:172.20.x.x"},null)},{label:"IPV6地址",prop:"protocol ",minWidth:100,render:s=>t("div",{class:"flex items-center"},[t(v,{size:"default",modelValue:s.ip6,"onUpdate:modelValue":l=>s.ip6=l,disabled:s.network=="bridge"||s.network=="none"||s.network=="host",onBlur:l=>e(s,l.target.value,"ip6"),placeholder:s.network==="bridge"||s.network==="none"||s.network==="host"?"自定义网卡可以设置":"例如:2001:0db8::1"},null),t(S,{class:"!ml-[1rem] h-[2.8]",onClick:()=>n(s)},{default:()=>[t("i",{class:"svgtofont-el-delete"},null)]})])}],ce=async e=>{const n=await fetch(e),a=n.headers.get("content-type");if(!a||!a.startsWith("image/"))return"/static/img/soft_ico/icon_plug.svg";const s=await n.blob();return new Promise((l,m)=>{const u=new FileReader;u.onloadend=()=>l(u.result),u.onerror=()=>l("/static/img/soft_ico/icon_plug.svg"),u.readAsDataURL(s)})},E=()=>new Promise((e,n)=>{const a=indexedDB.open("ImageCacheDB",1);a.onupgradeneeded=s=>{s.target.result.createObjectStore("images",{keyPath:"url"})},a.onsuccess=()=>e(a.result),a.onerror=()=>n(a.error)}),pe=async e=>{const n=await E();return new Promise((a,s)=>{const u=n.transaction("images","readonly").objectStore("images").get(e);u.onsuccess=()=>a(u.result?u.result.data:null),u.onerror=()=>s(u.error)})},me=async(e,n)=>{const a=await E();return new Promise((s,l)=>{const h=a.transaction("images","readwrite").objectStore("images").put({url:e,data:n});h.onsuccess=()=>s(),h.onerror=()=>l(h.error)})},Ae=async()=>{const e=await E();return new Promise((n,a)=>{const m=e.transaction("images","readwrite").objectStore("images").clear();m.onsuccess=()=>n(),m.onerror=()=>a(m.error)})},Oe=async e=>{let n=await pe(e);if(n)return n;{const a=await ce(e);return await me(e,a),a}},Fe=F(!1),Se=F("docker-appstore"),{getDockerState:de,refs:{settingData:je}}=O();K(de,1e3);const $e=async()=>{g({component:()=>f(()=>import("./index150.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),title:"安装",area:64,btn:"确定"})},A=(e,n)=>{const a=window.vite_public_ip,s=e.split("-->")[0].split(":")[1],l="".concat(n,"://").concat(a,":").concat(s);window.open(l,"_blank")};export{ve as C,xe as N,Ve as a,we as b,_e as c,Fe as d,Ce as e,Te as f,Pe as g,oe as h,Ie as i,$e as j,Ae as k,Oe as l,Se as m,ke as o,Ee as p,ye as r,De as t,Be as u};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}