File: /www/server/panel/BTPanel/static/js/index362.js
import{k as x,jU as X,M as f,cY as F,jV as G,w as Ue,jW as vt,jX as mt,e as V,_ as w,a0 as ht,o as ft,jY as Q,jZ as gt,j_ as _t,dc as J,da as R,R as ee,cT as te,cU as ne,cZ as re,dp as bt}from"./utils-lib.js?v=1777008528";import{aJ as K,r as h,V as D,aI as P,c as Y,aF as ae,e as s,j as Z,C as se,v as E,p as b,T as z,ap as Ee,ag as $e,af as M,x as O,z as xe,aC as Ce,aB as Te,D as Oe,i as Be,o as yt,k as Et}from"./base-lib.js?v=1777008528";import{_ as oe}from"./index118.js?v=1777008528";import{e as le,y as ue,g as ie,w as je,aI as Ne}from"./index3.js?v=1777008528";import{n as S,D as pe,j as ce,p as $t}from"./useController20.js?v=1777008528";import{g as Pe}from"./form-item.js?v=1777008528";import{_ as ke}from"./index119.js?v=1777008528";const xt=K("DOCKER-SITE-ENV-PHP-STORE",()=>{const e=h(!1),t=h(),n=h([]),r=h([]),o=h([]),c=D([]),m=D({}),g=h(!1),p=h(!1),$=()=>{p.value=!0};return{versionOptions:n,extendOptions:r,templateOptions:o,extendsupOptions:c,resetData:()=>{n.value=[],r.value=[],o.value=[],g.value=!1,e.value=!1,t.value={},c.value=[],m.value={}},getExtend:async(C="all")=>{try{const l=await x({loading:"正在获取版本,请稍后...",request:X({version:C}),message:!1});l.status?m.value=l.data:(f.error(l.msg),F(l))}catch(a){}},getTemplate:async C=>{try{const a=await x({loading:"正在获取版本,请稍后...",request:G(C||{p:1,row:100}),message:!1});if(a.status)o.value=a.data.data.map(l=>({label:l.name,name:l.name,value:l.id,ext:l.exts,version:l.version,disabled:!1}));else return f.error(a.msg),F(a),!1}catch(a){}},popoverFocus:g,isEdit:e,rowData:t,allData:m,refreshTemplateTable:p,setRefreshTemplateTable:$,delPhpTemplate:async(C,a,l)=>{try{await Ue({title:"删除【".concat(C.name,"】模板"),content:"删除【".concat(C.name,"】模板,此操作不可逆,是否继续操作?"),icon:"warning-filled"}),await x({loading:"正在删除,请稍后...",request:vt({id:C.id}),message:!0,success:u=>{$(),l&&l(u)}})}catch(u){}},useBatchEventHandle:async(C,a,l,u,j)=>{await Ue({title:"删除模板",content:"删除选中的".concat(l.value.length,"个模板,此操作不可逆,是否继续操作?"),icon:"warning-filled"});const _={ids:l.value.map(y=>y.id).join(",")};await x({loading:"正在删除,请稍后...",request:mt(_),success:async y=>{Array.isArray(y.data.data)?await V({title:"批量删除结果",area:42,component:()=>w(()=>import("./index127.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{resultData:y.data.data.map(Fe=>{const De=l.value.find(dt=>dt.id===Number(Fe.id));return{name:De==null?void 0:De.name,status:Fe.status,msg:Fe.msg}}),resultTitle:"删除扩展模板"}}):f.request(y),$(),j()}})}}});let k=null,ze="";const qe=h(""),gn=e=>{let t=[];k=ht({route:"/sock_shell",onMessage:(n,r)=>{t.push(r.data),t.length>50?qe.value=t==null?void 0:t.slice(t.length-50).join(" "):qe.value=t==null?void 0:t.join(" "),(r.data.includes("bt_successful")||r.data.includes("bt_failed"))&&(k==null||k.close(),t=[]),r.data.includes("bt_successful")&&(e(),f.success("创建成功")),r.data.includes("bt_failed")&&f.error("创建失败")}}),k==null||k.send(ze)},_n=()=>{k==null||k.close(),k=null,ze="",qe.value=""},de=(e,t)=>{ze=e,V({title:"创建日志",area:60,component:()=>w(()=>import("./index363.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{t&&t()}})},Qe=xt(),{getVersion:et,setTypeRefreshTable:Ct}=S(),{versionOptions:q,extendOptions:Ve,allData:ge,extendsupOptions:Tt,isEdit:H,rowData:N,templateOptions:Je}=P(Qe),{resetData:Ot,getExtend:tt,getTemplate:Bt,setRefreshTemplateTable:jt}=Qe;h();const Le=e=>(H.value=!!(e!=null&&e.name),N.value=e||{},new Promise((t,n)=>{V({title:"创建",area:80,btn:["确认","取消"],component:()=>w(()=>import("./php-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{Ot(),t(!1)}})})),Nt=()=>new Promise((e,t)=>{V({title:"扩展模板",area:90,component:()=>w(()=>import("./extend-template.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)})}),bn=e=>(H.value=!!(e!=null&&e.name),N.value=e||{},new Promise((t,n)=>{V({title:"创建",area:60,btn:["确认","取消"],component:()=>w(()=>import("./php-template-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url)})})),yn=async e=>{try{const{data:t}=await x({request:G(e||{p:1,row:100})});return t.status?{data:t.data,total:ft(t.page)}:{data:[],total:0}}catch(t){}},En=async e=>{try{await tt(),await Bt();const t=await et("php");t.status&&(q.value=t.data.php.map(n=>({label:n,value:n})),Ve.value=t.data.repo_urls.map(n=>({label:n.name,value:n.repo})),q.value.length>0&&(H.value||(e.value.version=q.value[0].value),_e(q.value[0].value)),Ve.value.length>0&&!H.value&&(e.value.repo_url=Ve.value[0].value)),H.value&&_e(N.value.version)}catch(t){}},$n=async e=>{try{await tt();const t=await et("php");t.status&&(q.value=t.data.php.map(n=>({label:n,value:n})),q.value.length>0&&(H.value||(e.value.version=q.value[0].value),_e(q.value[0].value))),H.value&&_e(N.value.version)}catch(t){}},_e=e=>{var t;try{e&&(Tt.value=((t=ge.value[e])==null?void 0:t.map(n=>({label:n,value:n})))||[],Je.value=Je.value.map(n=>({...n,label:"".concat(n.name).concat(n.version!==e?"(当前PHP版本不支持)":""),disabled:n.version!==e})))}catch(n){}},xn=(e,t,n,r,o)=>{var c,m,g;try{if(e.includes(",")){if(n==="")return r.value.exts=[],f.error("请先选择PHP版本");t.value=((c=ge.value[n])==null?void 0:c.filter(d=>d.includes(e)).map(d=>({label:d,value:d})))||[];const p=[],$=[];e.split(",").filter(d=>d!==""&&d!==" ").forEach(d=>{ge.value[n].includes(d)?$.push(d):p.push(d)}),r.value.exts=$,(m=o.value)==null||m.blur(),p.length>0?f.success("已选中".concat($.length,"个扩展,当前PHP版本不支持这").concat(p.length,"个扩展:【").concat(p.join(","),"】")):$.length>0&&f.success("已选中".concat($.length,"个扩展"))}else t.value=((g=ge.value[n])==null?void 0:g.filter(p=>p.includes(e)).map(p=>({label:p,value:p})))||[]}catch(p){}},Cn=()=>{try{return H.value?{name:N.value.name,version:N.value.version,repo_url:N.value.repo_url,template:"",exts:N.value.exts.split(","),id:N.value.id}:{name:"",version:"",repo_url:"",template:"",exts:""}}catch(e){}},Tn=()=>{try{return H.value?{name:N.value.name,version:N.value.version,exts:N.value.exts.split(","),id:N.value.id}:{name:"",version:"",exts:""}}catch(e){}},On=async(e,t)=>{try{const n={runtime_name:e.name,runtime_version:e.version,repo_url:e.repo_url,exts:e.exts.join(","),runtime_type:"php",...e.id?{id:e.id}:{}};await x({request:Q(n),success:r=>{r.status?(t(),de("tail -f /www/dk_project/runtime/build/php/".concat(e.name,"/build.log"),()=>{Ct("php")})):f.error(r.msg)}})}catch(n){}},Bn=async(e,t)=>{try{const n={name:e.name,version:e.version,exts:e.exts.join(","),...e.id?{id:e.id}:{}};await x({request:gt(n),message:!0,success:r=>{r.status&&(t(),jt())}})}catch(n){}},nt=K("DOCKER-SITE-LOG-STORE",()=>{const e=h("run"),t=h({compose:"",log_file:""}),n=h("");return{rowData:t,tabActive:e,logContent:n,getEnvLog:async()=>{try{const c={log_type:e.value,...e.value==="run"?{compose_file:t.value.compose}:{log_file:t.value.log_file}},m=f.load("正在获取日志,请稍后..."),{data:g}=await _t(c);m.close(),g.status?n.value=g.data:(f.error(g.msg),n.value="暂无日志内容")}catch(c){}},resteData:()=>{n.value="",t.value.compose_file="",t.value.log_file="",e.value="run"}}}),jn=()=>P(nt()),rt=nt(),{resteData:Pt}=rt,{rowData:Ge}=P(rt),L=(e,t)=>(Ge.value.compose=e.compose,Ge.value.log_file=e.log_file,new Promise((n,r)=>{V({title:"【".concat(e.name,"】日志"),area:65,component:()=>w(()=>import("./index489.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:t||"run",onCancel:()=>{Pt(),n(!1)}})})),kt=Y({__name:"index",setup(e,{expose:t}){const n=S(),{getEnvList:r}=pe(),{refreshEnvTable:o}=P(n),{delDockerEnv:c,useBatchEventHandle:m,cleanCache:g,refreshTemplate:p}=n,{BtOperation:$}=J({options:[{type:"button",label:"创建",active:!0,onClick:()=>{Le()}},{type:"button",label:"扩展模板",onClick:()=>{Nt()}},{type:"button",label:"清理构建缓存",onClick:()=>{g("php")}}]}),{BtOperation:B}=J({options:[{type:"button",label:"更新环境模板",onClick:()=>{p("php")}}]}),d=ne([{label:"删除",value:"delete",event:m}]),{BtTable:v,BtPage:i,BtBatch:T,refresh:C}=R({request:a=>r({p:a.p||1,row:a.limit||20,runtime_type:"php"}),columns:[le(),{label:"名称",prop:"name",minWidth:100},{label:"版本",prop:"version",minWidth:100},ue({function:a=>{let l="异常",u="#ff0000";switch(a.status){case"normal":l="正常",u="var(--el-color-primary)";break;case"initializing":l="构建中",u="#555";break}return ae("span",{style:{color:u},onClick:()=>{a.status!=="normal"&&L(a,"build")},class:a.status!=="normal"?"cursor-pointer":""},s("span",{class:"flex items-center"},[l,s("i",{class:"svgtofont-el-loading !text-small animation-spin",style:a.status==="initializing"?"display:inline-block":"display:none;"},null)]))}}),{label:"创建时间",minWidth:100,prop:"addtime",render:a=>s("span",null,[a.addtime?ee(Number(a.addtime),"yyyy-MM-dd HH:mm:ss"):"--"])},ie([{width:80,isHide:a=>a.status!=="normal",onClick:a=>{ce({type:"runEnv",formData:{type:"php",env:"".concat(a.name,":").concat(a.version)}})},title:"创建网站"},{onClick:a=>{L(a)},title:"日志"},{onClick:a=>{Le(a)},title:"编辑"},{onClick:a=>{c(a,"php")},title:"删除"}])],extension:[d,te(o)]});return t({init:C}),(a,l)=>{const u=oe;return Z(),se(u,null,{"header-left":E(()=>[s(b($))]),"header-right":E(()=>[s(b(B))]),content:E(()=>[s(b(v),{"min-height":300,class:"fix-table"})]),"footer-left":E(()=>[s(b(T))]),"footer-right":E(()=>[s(b(i))]),_:1})}}}),Ft=re(kt,[["__scopeId","data-v-d801478a"]]),Dt=K("DOCKER-SITE-ENV-JAVA-STORE",()=>{const e=h(!1),t=h(),n=h([]),r=h([]),o=h([]),c=D([]),m=D({}),g=h(!1);return{versionOptions:n,extendOptions:r,templateOptions:o,extendsupOptions:c,resetData:()=>{n.value=[],r.value=[],o.value=[],g.value=!1,e.value=!1,t.value={},c.value=[],m.value={}},getExtend:async(d="all")=>{try{const i=await x({loading:"正在获取版本,请稍后...",request:X({version:d}),message:!1});i.status?(m.value=i.data,r.value=i.data.repo_urls.map(T=>({label:T.name,value:T.repo}))):F(i)}catch(v){}},getTemplate:async d=>{try{const v=await x({loading:"正在获取版本,请稍后...",request:G(d||{p:1,row:100}),message:!1});v.status?o.value=v.data.data.map(i=>({label:i.name,value:i.id,ext:i.exts})):F(v)}catch(v){}},popoverFocus:g,isEdit:e,rowData:t,allData:m}}),at=Dt(),{getVersion:Vt,setTypeRefreshTable:wt}=S(),{versionOptions:we,isEdit:Me,rowData:W}=P(at),{resetData:St}=at,Nn=e=>{je({type:"dir",path:e.value.path||"/www/dk_project/wwwroot",change:(t,n)=>{e.value.path=t}})},Ke=e=>(Me.value=!!(e!=null&&e.name),W.value=e||{},new Promise((t,n)=>{V({title:"创建",area:80,btn:["确认","取消"],component:()=>w(()=>import("./java-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{St(),t(!1)}})})),ve=(e,t,n)=>{switch(n){case"server":t.server=e;break;case"con":t.con=e;break;case"protocol":t.protocol=e;break;case"output":t.output=e;break}},Pn=e=>{const{BtTable:t}=R({request:()=>({data:e,total:e.length}),columns:[{label:"本地端口",prop:"server",render:n=>s(z,{modelValue:n.server,"onUpdate:modelValue":r=>n.server=r,placeholder:"如:10080",class:"w-[9rem]",onBlur:r=>ve(r.target.value,n,"server")},null)},{label:"容器端口",prop:"con",render:n=>s(z,{modelValue:n.con,"onUpdate:modelValue":r=>n.con=r,placeholder:"如:80",class:"w-[9rem]",onBlur:r=>ve(r.target.value,n,"con")},null)},{label:"允许外部访问",prop:"output",width:130,cellStyle:"{ textAlign: 'center' }",render:n=>s("div",{class:"h-[3rem]"},[s(Ee,{modelValue:n.output,"onUpdate:modelValue":r=>n.output=r,onChange:r=>ve(r,n,"output")},null)])},{label:"协议",prop:"protocol",width:140,render:n=>s("div",{class:"h-[3rem]"},[s($e,{modelValue:n.protocol,"onUpdate:modelValue":r=>n.protocol=r,onChange:r=>ve(r,n,"protocol")},{default:()=>[s(M,{value:"tcp"},{default:()=>[O("TCP")]}),s(M,{value:"udp"},{default:()=>[O("UDP")]})]})])},{label:" ",prop:"del",width:70,render:n=>s(xe,{type:"default",class:"svgtofont-el-delete",onClick:()=>{if(e.length==1)return f.error("至少保留一条端口映射");e.splice(e.findIndex(r=>r.id===n.id),1)}},null)}]});return Pe("端口",()=>s("div",{class:"w-[90%]"},[s(t,null,null),s("div",{class:"text-tertiary text-small"},[O("请填写映射到服务器本地的端口,例如:本地10080映射容器的80")])]),"port",{attrs:{class:"!w-[52rem]"},rules:[{required:!0,trigger:["blur","change"],validator:(n,r,o)=>{st(r,o)}}]})},st=(e,t)=>{if(e.length==0)return!0;const n={};for(let r=0;r<e.length;r++){const o=e[r];switch(!0){case o.server=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"本地端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"本地端口不能为空")),!1;case(isNaN(Number(o.server))||Number(o.server)<1||Number(o.server)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围")),!1;case o.con=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"容器端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"容器端口不能为空")),!1;case(isNaN(Number(o.con))||Number(o.con)<1||Number(o.con)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围")),!1;case o.protocol.length==0:return!t&&f.error("端口表格第".concat(r+1,"行")+"协议不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"协议不能为空")),!1}n["".concat(o.con,"/").concat(o.protocol.join("/"))]=o.output?o.server:["127.0.0.1",o.server]}return t&&t(),n},kn=async e=>{try{const t=await Vt("java");t.status&&(we.value=t.data.java.map(n=>({label:n,value:n})),we.value.length>0&&!Me.value&&(e.value.version=we.value[0].value))}catch(t){}},Fn=()=>{var e;try{if(Me.value){const t=[];return(e=Object.entries(JSON.parse(W.value.ports||"{}")))==null||e.forEach((n,r)=>{if(n[1]){const[o,...c]=n[0].split("/");t.push({id:Math.random()*1e3,server:n[1][0].HostPort,con:o,protocol:c,output:n[1][0].HostIp==="0.0.0.0"})}}),{name:W.value.name,version:W.value.version,path:W.value.path,command:W.value.command,port:t,id:W.value.id}}return{name:"",version:"",path:"",command:"",port:[{server:"",con:"",output:!1,protocol:["tcp"],id:Math.random()*1e3}]}}catch(t){}},Dn=async(e,t)=>{try{const n=st(e.port);if(!n)return!1;const r={runtime_name:e.name,runtime_version:e.version,site_path:e.path,command:e.command,ports:n===!0?"":JSON.stringify(n),runtime_type:"java",...e.id?{id:e.id}:{}};await x({request:Q(r),success:o=>{o.status?(t(),de("tail -f /www/dk_project/runtime/run/java/".concat(e.name,"/create.log"),()=>{wt("java")})):f.error(o.msg)}})}catch(n){}};function Ht(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Be(e)}const Rt=Y({__name:"index",setup(e,{expose:t}){const n=S(),{getEnvList:r}=pe(),{refreshJavaEnvTable:o}=P(n),{delDockerEnv:c,useBatchEventHandle:m,cleanCache:g,setStatus:p}=n,{BtOperation:$}=J({options:[{type:"button",label:"创建",active:!0,onClick:()=>{Ke()}},{type:"button",label:"清理构建缓存",onClick:()=>{g("java")}}]}),B=ne([{label:"删除",value:"delete",event:m}]);Ce("popupClose",()=>{});const{BtTable:d,BtPage:v,BtBatch:i,BtRefresh:T,refresh:C}=R({request:a=>r({p:a.p||1,row:a.limit||20,runtime_type:"java"}),columns:[le(),{label:"名称",prop:"name",minWidth:100},{label:"版本",prop:"version",minWidth:60},ue({event:()=>{},function:a=>{let l="异常",u="#fc750d";switch(a.status){case"running":l="运行中",u="var(--el-color-primary)";break;case"exited":l="停止",u="#ff0000";break;case"initializing":l="构建中",u="#555";break}return s(Te,{placement:"right",width:"100",disabled:a.status==="initializing","popper-class":"detail-popover","popper-style":"min-width:60px;",trigger:"hover"},{default:()=>s("div",{class:"flex items-center"},[s("span",{class:"bt-link cursor-pointer",onClick:()=>p(a.status==="running"?"stop":"start",a,"java")},[a.status==="running"?"停止":"启动"]),s(ke,null,null),s("span",{class:"bt-link cursor-pointer",onClick:()=>p("restart",a,"java")},[O("重启")])]),reference:()=>ae("span",{class:"cursor-pointer",style:{color:u},onClick:()=>{p(a.status==="running"?"stop":"start",a,"java")}},s("span",{class:"flex items-center"},[l,s("i",{class:"svgtofont-el-loading !text-small animation-spin",style:a.status==="initializing"?"display:inline-block":"display:none;"},null)]))})}}),{label:"端口",prop:"port",minWidth:250,render:a=>{const l=Object.entries(JSON.parse(a.ports||"{}"))||[],u=[];let j=0;for(let _=0;_<l.length;_++){if(j>=10){u.push("......");break}const y=l[_];y[1]&&(u.push("".concat(y[1][0].HostIp||"0.0.0.0",":").concat(y[1][0].HostPort,"-->").concat(y[0]," ")),j++)}return s("span",{key:a.id,class:"whitespace-pre-wrap gap-4 leading-[2.5]"},[u.map(_=>s(Oe,{type:"success",size:"default",class:"mr-1"},Ht(_)?_:{default:()=>[_]}))])}},{label:"创建时间",minWidth:150,prop:"addtime",render:a=>s("span",null,[a.addtime?ee(Number(a.addtime),"yyyy-MM-dd HH:mm:ss"):"--"])},{label:"运行目录",minWidth:200,prop:"path",render:a=>s("span",{class:"btlink truncate inline-block max-w-[20rem] cursor-pointer leading-[3.7rem]",title:a.path,onClick:()=>Ne(a,"path")},[a.path])},ie([{width:80,isHide:a=>a.status!=="running",onClick:a=>{ce({type:"runEnv",formData:{type:"java",env:"".concat(a.name,":").concat(a.version)}})},title:"创建网站"},{onClick:a=>{L(a)},title:"日志"},{onClick:a=>{Ke(a)},title:"编辑"},{onClick:a=>{c(a,"java")},title:"删除"}])],extension:[B,te(o)]});return t({init:C}),(a,l)=>{const u=oe;return Z(),se(u,null,{"header-left":E(()=>[s(b($))]),"header-right":E(()=>[s(b(T))]),content:E(()=>[s(b(d),{class:"fix-table"})]),"footer-left":E(()=>[s(b(i))]),"footer-right":E(()=>[s(b(v))]),_:1})}}}),It=re(Rt,[["__scopeId","data-v-be25f867"]]),At=K("DOCKER-SITE-ENV-PYTHON-STORE",()=>{const e=h(!1),t=h(),n=h([]),r=h([]),o=h([]),c=D([]),m=D({}),g=h(!1);return{versionOptions:n,extendOptions:r,templateOptions:o,extendsupOptions:c,resetData:()=>{n.value=[],r.value=[],o.value=[],g.value=!1,e.value=!1,t.value={},c.value=[],m.value={}},getExtend:async(d="all")=>{try{const i=await x({loading:"正在获取版本,请稍后...",request:X({version:d}),message:!1});i.status?m.value=i.data:F(i)}catch(v){}},getTemplate:async d=>{try{const v=await x({loading:"正在获取版本,请稍后...",request:G(d||{p:1,row:100}),message:!1});v.status?o.value=v.data.data.map(i=>({label:i.name,value:i.id,ext:i.exts})):F(v)}catch(v){}},popoverFocus:g,isEdit:e,rowData:t,allData:m}}),ot=At(),{getVersion:qt,setTypeRefreshTable:zt}=S(),{versionOptions:Se,extendOptions:He,isEdit:be,rowData:I}=P(ot),{resetData:Mt}=ot,Vn=e=>{je({type:"dir",path:e.value.path||"/www/dk_project/wwwroot",change:(t,n)=>{e.value.path=t}})},wn=()=>{var e;try{if(be.value){const t=[];return(e=Object.entries(JSON.parse(I.value.ports||"{}")))==null||e.forEach((n,r)=>{if(n[1]){const[o,...c]=n[0].split("/");t.push({id:Math.random()*1e3,server:n[1][0].HostPort,con:o,protocol:c,output:n[1][0].HostIp==="0.0.0.0"})}}),{name:I.value.name,version:I.value.version,path:I.value.path,repo_url:I.value.repo_url,command:I.value.command,port:t,id:I.value.id}}return{name:"",version:"",repo_url:"mirrors.aliyun.com",path:"",template:"",port:[{server:"",con:"",output:!1,protocol:["tcp"],id:Math.random()*1e3}]}}catch(t){}},Sn=async e=>{try{const t=await qt("python");t.status&&(Se.value=t.data.python.map(n=>({label:n,value:n})),He.value=t.data.repo_urls.map(n=>({label:n.name,value:n.repo})),Se.value.length>0&&!be.value&&(e.value.version=Se.value[0].value),He.value.length>0&&!be.value&&(e.value.repo_url=He.value[0].value))}catch(t){}},Ye=e=>(be.value=!!(e!=null&&e.name),I.value=e||{},new Promise((t,n)=>{V({title:"创建",area:80,btn:["确认","取消"],component:()=>w(()=>import("./python-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{Mt(),t(!1)}})})),me=(e,t,n)=>{switch(n){case"server":t.server=e;break;case"con":t.con=e;break;case"protocol":t.protocol=e;break;case"output":t.output=e;break}},Hn=e=>{const{BtTable:t}=R({request:()=>({data:e,total:e.length}),columns:[{label:"本地端口",prop:"server",render:n=>s(z,{modelValue:n.server,"onUpdate:modelValue":r=>n.server=r,placeholder:"如:10080",class:"w-[9rem]",onBlur:r=>me(r.target.value,n,"server")},null)},{label:"容器端口",prop:"con",render:n=>s(z,{modelValue:n.con,"onUpdate:modelValue":r=>n.con=r,placeholder:"如:80",class:"w-[9rem]",onBlur:r=>me(r.target.value,n,"con")},null)},{label:"允许外部访问",prop:"output",width:130,render:n=>s("div",{class:"h-[3rem]"},[s(Ee,{modelValue:n.output,"onUpdate:modelValue":r=>n.output=r,onChange:r=>me(r,n,"output")},null)])},{label:"协议",prop:"protocol",width:140,render:n=>s("div",{class:"h-[3rem]"},[s($e,{modelValue:n.protocol,"onUpdate:modelValue":r=>n.protocol=r,onChange:r=>me(r,n,"protocol")},{default:()=>[s(M,{value:"tcp"},{default:()=>[O("TCP")]}),s(M,{value:"udp"},{default:()=>[O("UDP")]})]})])},{label:" ",prop:"del",width:70,render:n=>s(xe,{type:"default",class:"svgtofont-el-delete",onClick:()=>{e.splice(e.findIndex(r=>r.id===n.id),1)}},null)}]});return Pe("端口",()=>s("div",{class:"w-[90%]"},[s(t,null,null),s("div",{class:"text-tertiary text-small"},[O("请填写映射到服务器本地的端口,例如:本地10080映射容器的80")])]),"port",{attrs:{class:"!w-[52rem]"},rules:[{required:!0,trigger:"blur",validator:(n,r,o)=>{lt(r,o)}}]})},lt=(e,t)=>{if(e.length==0)return!0;const n={};for(let r=0;r<e.length;r++){const o=e[r];switch(!0){case o.server=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"本地端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"本地端口不能为空")),!1;case(isNaN(Number(o.server))||Number(o.server)<1||Number(o.server)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围")),!1;case o.con=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"容器端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"容器端口不能为空")),!1;case(isNaN(Number(o.con))||Number(o.con)<1||Number(o.con)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围")),!1;case o.protocol.length==0:return!t&&f.error("端口表格第".concat(r+1,"行")+"协议不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"协议不能为空")),!1}n["".concat(o.con,"/").concat(o.protocol.join("/"))]=o.output?o.server:["127.0.0.1",o.server]}return t&&t(),n},Rn=async(e,t)=>{try{const n=lt(e.port);if(!n)return!1;const r={runtime_name:e.name,runtime_version:e.version,site_path:e.path,command:e.command,ports:n===!0?"":JSON.stringify(n),repo_url:e.repo_url,runtime_type:"python",...e.id?{id:e.id}:{}};await x({request:Q(r),success:o=>{o.status?(de("tail -f /www/dk_project/runtime/run/python/".concat(e.name,"/create.log"),()=>{zt("python")}),t()):f.error(o.msg)}})}catch(n){}};function Wt(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Be(e)}const Ut=Y({__name:"index",setup(e,{expose:t}){const n=S(),{getEnvList:r}=pe(),{refreshPythonEnvTable:o}=P(n),{delDockerEnv:c,useBatchEventHandle:m,cleanCache:g,setStatus:p}=n,{BtOperation:$}=J({options:[{type:"button",label:"创建",active:!0,onClick:()=>{Ye()}},{type:"button",label:"清理构建缓存",onClick:()=>{g("python")}}]});Ce("popupClose",()=>{});const B=ne([{label:"删除",value:"delete",event:m}]),{BtTable:d,BtPage:v,BtBatch:i,BtRefresh:T,refresh:C}=R({request:a=>r({p:a.p||1,row:a.limit||20,runtime_type:"python"}),columns:[le(),{label:"名称",prop:"name",minWidth:100},{label:"版本",prop:"version",minWidth:50},ue({event:()=>{},function:a=>{let l="异常",u="#fc750d";switch(a.status){case"running":l="运行中",u="var(--el-color-primary)";break;case"exited":l="停止",u="#ff0000";break;case"initializing":l="构建中",u="#555";break}return s(Te,{placement:"right",width:"100",disabled:a.status==="initializing","popper-class":"detail-popover","popper-style":"min-width:60px;",trigger:"hover"},{default:()=>s("div",{class:"flex items-center"},[s("span",{class:"bt-link cursor-pointer",onClick:()=>p(a.status==="running"?"stop":"start",a,"python")},[a.status==="running"?"停止":"启动"]),s(ke,null,null),s("span",{class:"bt-link cursor-pointer",onClick:()=>p("restart",a,"python")},[O("重启")])]),reference:()=>ae("span",{class:"cursor-pointer",style:{color:u},onClick:()=>{p(a.status==="running"?"stop":"start",a,"python")}},s("span",{class:"flex items-center"},[l,s("i",{class:"svgtofont-el-loading !text-small animation-spin",style:a.status==="initializing"?"display:inline-block":"display:none;"},null)]))})}}),{label:"端口",prop:"port",minWidth:250,render:a=>{const l=Object.entries(JSON.parse(a.ports||"{}"))||[],u=[];let j=0;for(let _=0;_<l.length;_++){if(j>=10){u.push("......");break}const y=l[_];y[1]&&(u.push("".concat(y[1][0].HostIp||"0.0.0.0",":").concat(y[1][0].HostPort,"-->").concat(y[0]," ")),j++)}return s("span",{key:a.id,class:"whitespace-pre-wrap gap-4 leading-[2.5]"},[u.map(_=>s(Oe,{type:"success",size:"default",class:"mr-1"},Wt(_)?_:{default:()=>[_]}))])}},{label:"创建时间",minWidth:150,prop:"addtime",render:a=>s("span",null,[a.addtime?ee(Number(a.addtime),"yyyy-MM-dd HH:mm:ss"):"--"])},{label:"运行目录",minWidth:200,prop:"path",render:a=>s("span",{class:"btlink truncate inline-block max-w-[18rem] leading-[3.7rem] cursor-pointer",title:a.path,onClick:()=>Ne(a,"path")},[a.path])},ie([{width:60,isHide:a=>a.status!=="running",onClick:a=>{ce({type:"runEnv",formData:{type:"python",env:"".concat(a.name,":").concat(a.version)}})},title:"创建网站"},{onClick:a=>{L(a)},title:"日志"},{onClick:a=>{p("stop",a,"python")},isHide:a=>a.status!=="running",title:"停止"},{onClick:a=>{p("restart",a,"python")},isHide:a=>a.status!=="running",title:"重启"},{onClick:a=>{Ye(a)},title:"编辑"},{onClick:a=>{c(a,"python")},title:"删除"}])],extension:[B,te(o)]});return t({init:C}),(a,l)=>{const u=oe;return Z(),se(u,null,{"header-left":E(()=>[s(b($))]),"header-right":E(()=>[s(b(T))]),content:E(()=>[s(b(d),{class:"fix-table"})]),"footer-left":E(()=>[s(b(i))]),"footer-right":E(()=>[s(b(v))]),_:1})}}}),Jt=re(Ut,[["__scopeId","data-v-0c2cf93c"]]),Lt=K("DOCKER-SITE-ENV-GO-STORE",()=>{const e=h(!1),t=h(),n=h([]),r=h([]),o=h([]),c=D([]),m=D({}),g=h(!1);return{versionOptions:n,extendOptions:r,templateOptions:o,extendsupOptions:c,resetData:()=>{n.value=[],r.value=[],o.value=[],g.value=!1,e.value=!1,t.value={},c.value=[],m.value={}},getExtend:async(d="all")=>{try{const i=await x({loading:"正在获取版本,请稍后...",request:X({version:d}),message:!1});i.status?(m.value=i.data,r.value=i.data.repo_urls.map(T=>({label:T.name,value:T.repo}))):F(i)}catch(v){}},getTemplate:async d=>{try{const v=await x({loading:"正在获取版本,请稍后...",request:G(d||{p:1,row:100}),message:!1});v.status?o.value=v.data.data.map(i=>({label:i.name,value:i.id,ext:i.exts})):F(v)}catch(v){}},popoverFocus:g,isEdit:e,rowData:t,allData:m}}),ut=Lt(),{getVersion:Gt,setTypeRefreshTable:Kt}=S(),{versionOptions:Re,isEdit:We,rowData:U}=P(ut),{resetData:Yt}=ut,In=e=>{je({type:"dir",path:e.value.path||"/www/dk_project/wwwroot",change:(t,n)=>{e.value.path=t}})},Ze=e=>(We.value=!!(e!=null&&e.name),U.value=e||{},new Promise((t,n)=>{V({title:"创建",area:80,btn:["确认","取消"],component:()=>w(()=>import("./go-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{Yt(),t(!1)}})})),he=(e,t,n)=>{switch(n){case"server":t.server=e;break;case"con":t.con=e;break;case"protocol":t.protocol=e;break;case"output":t.output=e;break}},An=e=>{const{BtTable:t}=R({request:()=>({data:e,total:e.length}),columns:[{label:"本地端口",prop:"server",render:n=>s(z,{modelValue:n.server,"onUpdate:modelValue":r=>n.server=r,placeholder:"如:10080",class:"w-[9rem]",onBlur:r=>he(r.target.value,n,"server")},null)},{label:"容器端口",prop:"con",render:n=>s(z,{modelValue:n.con,"onUpdate:modelValue":r=>n.con=r,placeholder:"如:80",class:"w-[9rem]",onBlur:r=>he(r.target.value,n,"con")},null)},{label:"允许外部访问",prop:"output",width:130,render:n=>s("div",{class:"h-[3rem]"},[s(Ee,{modelValue:n.output,"onUpdate:modelValue":r=>n.output=r,onChange:r=>he(r,n,"output")},null)])},{label:"协议",prop:"protocol",width:140,render:n=>s("div",{class:"h-[3rem]"},[s($e,{modelValue:n.protocol,"onUpdate:modelValue":r=>n.protocol=r,onChange:r=>he(r,n,"protocol")},{default:()=>[s(M,{value:"tcp"},{default:()=>[O("TCP")]}),s(M,{value:"udp"},{default:()=>[O("UDP")]})]})])},{label:" ",prop:"del",width:70,render:n=>s(xe,{type:"default",class:"svgtofont-el-delete",onClick:()=>{e.splice(e.findIndex(r=>r.id===n.id),1)}},null)}]});return Pe("端口",()=>s("div",{class:"w-[90%]"},[s(t,null,null),s("div",{class:"text-tertiary text-small"},[O("请填写映射到服务器本地的端口,例如:本地10080映射容器的80")])]),"port",{attrs:{class:"!w-[52rem]"},rules:[{required:!0,trigger:"blur",validator:(n,r,o)=>{it(r,o)}}]})},it=(e,t)=>{if(e.length==0)return!0;const n={};for(let r=0;r<e.length;r++){const o=e[r];switch(!0){case o.server=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"本地端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"本地端口不能为空")),!1;case(isNaN(Number(o.server))||Number(o.server)<1||Number(o.server)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围")),!1;case o.con=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"容器端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"容器端口不能为空")),!1;case(isNaN(Number(o.con))||Number(o.con)<1||Number(o.con)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围")),!1;case o.protocol.length==0:return!t&&f.error("端口表格第".concat(r+1,"行")+"协议不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"协议不能为空")),!1}n["".concat(o.con,"/").concat(o.protocol.join("/"))]=o.output?o.server:["127.0.0.1",o.server]}return t&&t(),n},qn=async e=>{try{const t=await Gt("go");t.status&&(Re.value=t.data.go.map(n=>({label:n,value:n})),Re.value.length>0&&!We.value&&(e.value.version=Re.value[0].value))}catch(t){}},zn=()=>{var e;try{if(We.value){const t=[];return(e=Object.entries(JSON.parse(U.value.ports||"{}")))==null||e.forEach((n,r)=>{if(n[1]){const[o,...c]=n[0].split("/");t.push({id:Math.random()*1e3,server:n[1][0].HostPort,con:o,protocol:c,output:n[1][0].HostIp==="0.0.0.0"})}}),{name:U.value.name,version:U.value.version,path:U.value.path,command:U.value.command,port:t,id:U.value.id}}return{name:"",version:"",path:"",command:"",port:[{server:"",con:"",output:!1,protocol:["tcp"],id:Math.random()*1e3}]}}catch(t){}},Mn=async(e,t)=>{try{const n=it(e.port);if(!n)return!1;const r={runtime_name:e.name,runtime_version:e.version,site_path:e.path,command:e.command,ports:n===!0?"":JSON.stringify(n),runtime_type:"go",...e.id?{id:e.id}:{}};await x({request:Q(r),success:o=>{o.status?(t(),de("tail -f /www/dk_project/runtime/run/go/".concat(e.name,"/create.log"),()=>{Kt("go")})):f.error(o.msg)}})}catch(n){}};function Zt(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Be(e)}const Xt=Y({__name:"index",setup(e,{expose:t}){const n=S(),{getEnvList:r}=pe(),{refreshGoEnvTable:o}=P(n),{delDockerEnv:c,useBatchEventHandle:m,cleanCache:g,setStatus:p}=n,{BtOperation:$}=J({options:[{type:"button",label:"创建",active:!0,onClick:()=>{Ze()}},{type:"button",label:"清理构建缓存",onClick:()=>{g("go")}}]}),B=ne([{label:"删除",value:"delete",event:m}]);Ce("popupClose",()=>{});const{BtTable:d,BtPage:v,BtBatch:i,BtRefresh:T,refresh:C}=R({request:a=>r({p:a.p||1,row:a.limit||20,runtime_type:"go"}),columns:[le(),{label:"名称",prop:"name",minWidth:100},{label:"版本",prop:"version",minWidth:60},ue({event:()=>{},function:a=>{let l="异常",u="#fc750d";switch(a.status){case"running":l="运行中",u="var(--el-color-primary)";break;case"exited":l="停止",u="#ff0000";break;case"initializing":l="构建中",u="#555";break}return s(Te,{placement:"right",width:"100",disabled:a.status==="initializing","popper-class":"detail-popover","popper-style":"min-width:60px;",trigger:"hover"},{default:()=>s("div",{class:"flex items-center"},[s("span",{class:"bt-link cursor-pointer",onClick:()=>p(a.status==="running"?"stop":"start",a,"go")},[a.status==="running"?"停止":"启动"]),s(ke,null,null),s("span",{class:"bt-link cursor-pointer",onClick:()=>p("restart",a,"go")},[O("重启")])]),reference:()=>ae("span",{class:"cursor-pointer",style:{color:u},onClick:()=>{p(a.status==="running"?"stop":"start",a,"go")}},s("span",{class:"flex items-center"},[l,s("i",{class:"svgtofont-el-loading !text-medium animation-spin",style:a.status==="initializing"?"display:inline-block":"display:none;"},null)]))})}}),{label:"端口",prop:"ports",minWidth:250,render:a=>{const l=Object.entries(JSON.parse(a.ports||"{}"))||[],u=[];let j=0;for(let _=0;_<l.length;_++){if(j>=10){u.push("......");break}const y=l[_];y[1]&&(u.push("".concat(y[1][0].HostIp||"0.0.0.0",":").concat(y[1][0].HostPort,"-->").concat(y[0]," ")),j++)}return s("span",{key:a.id,class:"whitespace-pre-wrap gap-4 leading-[2.5]"},[u.map(_=>s(Oe,{type:"success",size:"default",class:"mr-1"},Zt(_)?_:{default:()=>[_]}))])}},{label:"创建时间",minWidth:150,prop:"addtime",render:a=>s("span",null,[a.addtime?ee(Number(a.addtime),"yyyy-MM-dd HH:mm:ss"):"--"])},{label:"运行目录",minWidth:200,prop:"path",render:a=>s("span",{class:"btlink truncate inline-block max-w-[20rem] leading-[3.7rem] cursor-pointer",title:a.path,onClick:()=>Ne(a,"path")},[a.path])},ie([{width:80,isHide:a=>a.status!=="running",onClick:a=>{ce({type:"runEnv",formData:{type:"go",env:"".concat(a.name,":").concat(a.version)}})},title:"创建网站"},{onClick:a=>{L(a)},title:"日志"},{onClick:a=>{Ze(a)},title:"编辑"},{onClick:a=>{c(a,"go")},title:"删除"}])],extension:[B,te(o)]});return t({init:C}),(a,l)=>{const u=oe;return Z(),se(u,null,{"header-left":E(()=>[s(b($))]),"header-right":E(()=>[s(b(T))]),content:E(()=>[s(b(d),{class:"fix-table"})]),"footer-left":E(()=>[s(b(i))]),"footer-right":E(()=>[s(b(v))]),_:1})}}}),Qt=re(Xt,[["__scopeId","data-v-9a0dda85"]]),en=K("DOCKER-SITE-ENV-NODE-STORE",()=>{const e=h(!1),t=h(),n=h([]),r=h([]),o=h([]),c=D([]),m=D({}),g=h(!1);return{versionOptions:n,extendOptions:r,templateOptions:o,extendsupOptions:c,resetData:()=>{n.value=[],r.value=[],o.value=[],g.value=!1,e.value=!1,t.value={},c.value=[],m.value={}},getExtend:async(d="all")=>{try{const i=await x({loading:"正在获取版本,请稍后...",request:X({version:d}),message:!1});i.status?m.value=i.data:F(i)}catch(v){}},getTemplate:async d=>{try{const v=await x({loading:"正在获取版本,请稍后...",request:G(d||{p:1,row:100}),message:!1});v.status?o.value=v.data.data.map(i=>({label:i.name,value:i.id,ext:i.exts})):F(v)}catch(v){}},popoverFocus:g,isEdit:e,rowData:t,allData:m}}),pt=en(),{getVersion:tn,setTypeRefreshTable:nn}=S(),{versionOptions:Ie,extendOptions:Ae,isEdit:ye,rowData:A}=P(pt),{resetData:rn}=pt,Wn=e=>{je({type:"dir",path:e.value.path||"/www/dk_project/wwwroot",change:t=>{e.value.path=t}})},Un=()=>{var e,t;try{if(ye.value){const n=[];(e=Object.entries(JSON.parse(A.value.ports||"{}")))==null||e.forEach((o,c)=>{if(o[1]){const[m,...g]=o[0].split("/");n.push({id:Math.random()*1e3,server:o[1][0].HostPort,con:m,protocol:g,output:o[1][0].HostIp==="0.0.0.0"})}});const r=(t=A.value.repo_url)==null?void 0:t.match(/^(\w+)\s+install\s+--registry=(.+)$/);return{name:A.value.name,version:A.value.version,path:A.value.path,package:(r==null?void 0:r[1])||"pnpm",repo_url:(r==null?void 0:r[2])||"https://npm.aliyun.com/",command:A.value.command,port:n,id:A.value.id}}return{name:"",version:"",repo_url:"https://npm.aliyun.com/",path:"",package:"pnpm",template:"",port:[{server:"",con:"",output:!1,protocol:["tcp"],id:Math.random()*1e3}]}}catch(n){}},Jn=async e=>{try{const t=await tn("nodejs");t.status&&(Ie.value=t.data.nodejs.map(n=>({label:n,value:n})),Ae.value=t.data.repo_urls.map(n=>({label:n.name,value:n.repo})),Ie.value.length>0&&!ye.value&&(e.value.version=Ie.value[0].value),Ae.value.length>0&&!ye.value&&(e.value.repo_url=Ae.value[0].value))}catch(t){}},Xe=e=>(ye.value=!!(e!=null&&e.name),A.value=e||{},new Promise((t,n)=>{V({title:"创建",area:80,btn:["确认","取消"],component:()=>w(()=>import("./node-form.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),onCancel:()=>{rn(),t(!1)}})})),fe=(e,t,n)=>{switch(n){case"server":t.server=e;break;case"con":t.con=e;break;case"protocol":t.protocol=e;break;case"output":t.output=e;break}},Ln=e=>{const{BtTable:t}=R({request:()=>({data:e,total:e.length}),columns:[{label:"本地端口",prop:"server",render:n=>s(z,{modelValue:n.server,"onUpdate:modelValue":r=>n.server=r,placeholder:"如:10080",class:"w-[9rem]",onBlur:r=>fe(r.target.value,n,"server")},null)},{label:"容器端口",prop:"con",render:n=>s(z,{modelValue:n.con,"onUpdate:modelValue":r=>n.con=r,placeholder:"如:80",class:"w-[9rem]",onBlur:r=>fe(r.target.value,n,"con")},null)},{label:"允许外部访问",prop:"output",width:130,render:n=>s("div",{class:"h-[3rem]"},[s(Ee,{modelValue:n.output,"onUpdate:modelValue":r=>n.output=r,onChange:r=>fe(r,n,"output")},null)])},{label:"协议",prop:"protocol",width:140,render:n=>s("div",{class:"h-[3rem]"},[s($e,{modelValue:n.protocol,"onUpdate:modelValue":r=>n.protocol=r,onChange:r=>fe(r,n,"protocol")},{default:()=>[s(M,{value:"tcp"},{default:()=>[O("TCP")]}),s(M,{value:"udp"},{default:()=>[O("UDP")]})]})])},{label:" ",prop:"del",width:70,render:n=>s(xe,{type:"default",class:"svgtofont-el-delete",onClick:()=>{e.splice(e.findIndex(r=>r.id===n.id),1)}},null)}]});return Pe("端口",()=>s("div",{class:"w-[90%]"},[s(t,null,null),s("div",{class:"text-tertiary text-small"},[O("请填写映射到服务器本地的端口,例如:本地10080映射容器的80")])]),"port",{attrs:{class:"!w-[52rem]"},rules:[{required:!0,trigger:"blur",validator:(n,r,o)=>{ct(r,o)}}]})},ct=(e,t)=>{if(e.length==0)return!0;const n={};for(let r=0;r<e.length;r++){const o=e[r];switch(!0){case o.server=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"本地端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"本地端口不能为空")),!1;case(isNaN(Number(o.server))||Number(o.server)<1||Number(o.server)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的本地端口范围")),!1;case o.con=="":return!t&&f.error("端口表格第".concat(r+1,"行")+"容器端口不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"容器端口不能为空")),!1;case(isNaN(Number(o.con))||Number(o.con)<1||Number(o.con)>65535):return!t&&f.error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围"),t&&t(new Error("端口表格第".concat(r+1,"行")+"请输入正确的容器端口范围")),!1;case o.protocol.length==0:return!t&&f.error("端口表格第".concat(r+1,"行")+"协议不能为空"),t&&t(new Error("端口表格第".concat(r+1,"行")+"协议不能为空")),!1}n["".concat(o.con,"/").concat(o.protocol.join("/"))]=o.output?o.server:["127.0.0.1",o.server]}return t&&t(),n},Gn=async(e,t)=>{try{const n=ct(e.port);if(!n)return!1;const r={runtime_name:e.name,runtime_version:e.version,site_path:e.path,command:e.command,ports:n===!0?"":JSON.stringify(n),repo_url:"".concat(e.package," install --registry=").concat(e.repo_url),runtime_type:"nodejs",...e.id?{id:e.id}:{}};await x({request:Q(r),success:o=>{o.status?(de("tail -f /www/dk_project/runtime/run/nodejs/".concat(e.name,"/create.log"),()=>{nn("nodejs")}),t()):f.error(o.msg)}})}catch(n){}};function an(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Be(e)}const sn=Y({__name:"index",setup(e,{expose:t}){const n=S(),{getEnvList:r}=pe(),{refreshNodeEnvTable:o}=P(n),{delDockerEnv:c,useBatchEventHandle:m,cleanCache:g,setStatus:p}=n,{BtOperation:$}=J({options:[{type:"button",label:"创建",active:!0,onClick:()=>{Xe()}},{type:"button",label:"清理构建缓存",onClick:()=>{g("nodejs")}}]});Ce("popupClose",()=>{});const B=ne([{label:"删除",value:"delete",event:m}]),{BtTable:d,BtPage:v,BtBatch:i,BtRefresh:T,refresh:C}=R({request:a=>r({p:a.p||1,row:a.limit||20,runtime_type:"nodejs"}),columns:[le(),{label:"名称",prop:"name",minWidth:100},{label:"版本",prop:"version",minWidth:70},ue({event:()=>{},function:a=>{let l="异常",u="#fc750d";switch(a.status){case"running":l="运行中",u="var(--el-color-primary)";break;case"exited":l="停止",u="#ff0000";break;case"initializing":l="构建中",u="#555";break}return s(Te,{placement:"right",width:"100",disabled:a.status==="initializing","popper-class":"detail-popover","popper-style":"min-width:60px;",trigger:"hover"},{default:()=>s("div",{class:"flex items-center"},[s("span",{class:"bt-link cursor-pointer",onClick:()=>p(a.status==="running"?"stop":"start",a,"nodejs")},[a.status==="running"?"停止":"启动"]),s(ke,null,null),s("span",{class:"bt-link cursor-pointer",onClick:()=>p("restart",a,"nodejs")},[O("重启")])]),reference:()=>ae("span",{class:"cursor-pointer",style:{color:u},onClick:()=>{p(a.status==="running"?"stop":"start",a,"nodejs")}},s("span",{class:"flex items-center"},[l,s("i",{class:"svgtofont-el-loading !text-small animation-spin",style:a.status==="initializing"?"display:inline-block":"display:none;"},null)]))})}}),{label:"端口",prop:"port",minWidth:250,render:a=>{const l=Object.entries(JSON.parse(a.ports||"{}"))||[],u=[];let j=0;for(let _=0;_<l.length;_++){if(j>=10){u.push("......");break}const y=l[_];y[1]&&(u.push("".concat(y[1][0].HostIp||"0.0.0.0",":").concat(y[1][0].HostPort,"-->").concat(y[0]," ")),j++)}return s("span",{key:a.id,class:"whitespace-pre-wrap gap-4 leading-[2.5]"},[u.map(_=>s(Oe,{type:"success",size:"default",class:"mr-1"},an(_)?_:{default:()=>[_]}))])}},{label:"创建时间",minWidth:150,prop:"addtime",render:a=>s("span",null,[a.addtime?ee(Number(a.addtime),"yyyy-MM-dd HH:mm:ss"):"--"])},{label:"运行目录",minWidth:200,prop:"path",render:a=>s("span",{class:"btlink truncate inline-block max-w-[18rem] leading-[3.7rem] cursor-pointer",title:a.path,onClick:()=>Ne(a,"path")},[a.path])},ie([{width:60,isHide:a=>a.status!=="running",onClick:a=>{ce({type:"runEnv",formData:{type:"nodejs",env:"".concat(a.name,":").concat(a.version)}})},title:"创建网站"},{onClick:a=>{L(a)},title:"日志"},{onClick:a=>{p("stop",a,"nodejs")},isHide:a=>a.status!=="running",title:"停止"},{onClick:a=>{p("restart",a,"nodejs")},isHide:a=>a.status!=="running",title:"重启"},{onClick:a=>{Xe(a)},title:"编辑"},{onClick:a=>{c(a,"nodejs")},title:"删除"}])],extension:[B,te(o)]});return t({init:C}),(a,l)=>{const u=oe;return Z(),se(u,null,{"header-left":E(()=>[s(b($))]),"header-right":E(()=>[s(b(T))]),content:E(()=>[s(b(d),{class:"fix-table"})]),"footer-left":E(()=>[s(b(i))]),"footer-right":E(()=>[s(b(v))]),_:1})}}}),on=re(sn,[["__scopeId","data-v-8ff8338e"]]),ln={class:"p-[20px]"},un=Y({__name:"index",setup(e){const{tabActive:t}=$t(),{BtTabs:n}=bt({type:"card",value:t,options:[{label:"PHP",name:"php",render:()=>s(Ft,null,null)},{label:"JAVA",name:"java",lazy:!0,render:()=>s(It,null,null)},{label:"Python",name:"python",lazy:!0,render:()=>s(Jt,null,null)},{label:"GO",name:"go",lazy:!0,render:()=>s(Qt,null,null)},{label:"Node",name:"nodejs",lazy:!0,render:()=>s(on,null,null)}]}),r=o=>{};return yt(()=>{}),(o,c)=>(Z(),Et("div",ln,[s(b(n),{onChange:r})]))}}),Kn=Object.freeze(Object.defineProperty({__proto__:null,default:un},Symbol.toStringTag,{value:"Module"}));export{jn as A,At as B,wn as C,Dt as D,Vn as E,Hn as F,Rn as G,Sn as H,en as I,Un as J,Wn as K,Ln as L,Gn as M,Jn as N,Kn as O,Lt as a,zn as b,Dn as c,In as d,An as e,Fn as f,kn as g,Mn as h,qn as i,gn as j,_n as k,qe as l,xt as m,Cn as n,Nn as o,xn as p,On as q,En as r,_e as s,bn as t,Pn as u,yn as v,Tn as w,Bn as x,$n as y,nt as z};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}