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