File: /www/server/panel/BTPanel/static/js/traditional-project.js
import{c as e,r as l,ay as a,g as t,w as o,q as r,M as s,A as d,e as n,y as i,x as u,v as c,b0 as p,F as m,B as _,C as v,z as f,P as w,m as j,ai as g,a9 as y,aQ as x,T as b,ax as h,aj as V,K as k,D as U,J as C,ah as D,af as I,al as N}from"./base-lib.js?v=1777008528";import{B as O}from"./index479.js?v=1777008528";import{G as q,l as B,_ as F,bU as P,K as M,bL as S,c as W,H as z,d as R,fc as E,gt as G}from"./utils-lib.js?v=1777008528";import{_ as J}from"./index102.js?v=1777008528";import{u as K}from"./useStore4.js?v=1777008528";import{f as A}from"./validator.js?v=1777008528";import{n as H,g as L,i as Q,o as T,u as $,s as X}from"./index71.js?v=1777008528";import{checkPathStatus as Y,getRunList as Z}from"./site.js?v=1777008528";import{B as ee}from"./index146.js?v=1777008528";const le={class:"flex items-center"},ae={class:"flex items-center"},te={key:0,class:"text-1.2rem ml-[0.8rem] text-[#999]"},oe={key:0,class:"text-danger text-[1.2rem]"},re=F(e({__name:"advanced-config",props:{ps:{type:String,required:!1},rowData:{type:null,required:!1}},setup(e,{expose:k}){var U;const C=e,D=l(),I=l((null==(U=C.rowData)?void 0:U.project_name)||!1),N=l(!1),O=a("nodeData",{user_list:[]}),{BtForm:F,param:P}=q({data:()=>{var e,l,a,t,o;const r=(null==(l=null==(e=O.value)?void 0:e.user_list)?void 0:l.length)&&-1===(null==(a=O.value.user_list)?void 0:a.findIndex((e=>"www"===e)));return{run_user:I.value?(null==(t=C.rowData)?void 0:t.run_user)||"":r?O.value.user_list[0]:"www",port:(null==(o=C.rowData)?void 0:o.port)||"",release_firewall:!1,project_ps:(null==C?void 0:C.ps)||"",domains:""}},options:()=>t((()=>[{type:"slots",key:"custom",rules:{run_user:[{required:!0,message:"请选择运行用户",trigger:"change"}]}}]))});return o((()=>C.ps),(e=>{P.value.project_ps=e||""}),{immediate:!0}),k({formData:P,popover:D}),(e,l)=>{const a=V,t=g,o=y,k=B,U=x,q=b,M=h;return r(),s(u(F),j({class:"mt-2rem"},e.$attrs),{custom:d((()=>[n(o,{label:"运行用户",prop:"run_user"},{default:d((()=>[i("div",le,[n(t,{modelValue:u(P).run_user,"onUpdate:modelValue":l[0]||(l[0]=e=>u(P).run_user=e),class:"mr-8px !w-[16rem]"},{default:d((()=>[(r(!0),c(m,null,p(u(O).user_list,((e,l)=>(r(),s(a,{key:l,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),l[7]||(l[7]=i("span",{class:"text-[1.2rem] text-[#666]"},"* 无特殊需求请选择www用户",-1))])])),_:1}),n(o,{label:"项目端口"},{default:d((()=>{var e,a,t,o,p,w;return[i("div",ae,[n(k,{width:"20rem",type:"number",class:"mr-12px !w-[20rem]",min:1,max:65535,modelValue:u(P).port,"onUpdate:modelValue":l[1]||(l[1]=e=>u(P).port=e),placeholder:"请输入项目的真实端口"},null,8,["modelValue"]),u(I)?v("v-if",!0):(r(),c(m,{key:0},[""===u(P).port?(r(),c("span",te,"* 若不清楚端口可不填写")):(r(),s(q,{key:1,modelValue:u(P).release_firewall,"onUpdate:modelValue":l[2]||(l[2]=e=>u(P).release_firewall=e)},{default:d((()=>[l[9]||(l[9]=_(" 放行端口 ")),n(U,{class:"item",effect:"dark",content:"选中将在防火墙安全组放行监听端口,放行后该项目可在外网访问",placement:"right"},{default:d((()=>l[8]||(l[8]=[i("i",{class:"svgtofont-el-question text-warning"},null,-1)]))),_:1})])),_:1},8,["modelValue"]))],64))]),u(I)&&(null==(a=null==(e=C.rowData)?void 0:e.listen)?void 0:a.length)&&!(null==(o=null==(t=C.rowData)?void 0:t.listen)?void 0:o.includes(u(P).port))?(r(),c("span",oe," 项目端口可能有误,检测到当前项目监听了以下端口[ "+f(null==(w=null==(p=C.rowData)?void 0:p.listen)?void 0:w.join(","))+" ]",1)):v("v-if",!0)]})),_:1}),v(" 备注 "),n(o,{label:"项目备注"},{default:d((()=>[n(k,{modelValue:u(P).project_ps,"onUpdate:modelValue":l[3]||(l[3]=e=>u(P).project_ps=e),placeholder:"请输入项目备注",width:"24rem"},null,8,["modelValue"])])),_:1}),v(" 绑定域名 "),u(I)?v("v-if",!0):(r(),s(o,{key:0,label:"绑定域名"},{default:d((()=>[n(M,{ref_key:"popover",ref:D,placement:"top-start","popper-class":"green-tips-popover !p-0",title:"",width:"400",visible:u(N),"onUpdate:visible":l[6]||(l[6]=e=>w(N)?N.value=e:null),"trigger-keys":[],trigger:"focus"},{reference:d((()=>[n(k,{rows:6,resize:"none",width:"40rem",modelValue:u(P).domains,"onUpdate:modelValue":l[4]||(l[4]=e=>u(P).domains=e),onFocus:l[5]||(l[5]=e=>N.value=!0),type:"textarea",placeholder:"如需填写多个域名,请换行填写,每行一个域名,默认为80端口\nIP地址格式:192.168.1.199\n泛解析添加方法 *.domain.com\n如另加端口格式为 www.domain.com:88"},null,8,["modelValue"])])),default:d((()=>[l[10]||(l[10]=i("div",{class:"!p-[12px] bg-[#20a53a] text-white"},[_(" 如需填写多个域名,请换行填写,每行一个域名,默认为80端口"),i("br"),_(" IP地址格式:192.168.1.199"),i("br"),_(" 泛解析添加方法 *.domain.com"),i("br"),_(" 如另加端口格式为 www.domain.com:88 ")],-1))])),_:1},8,["visible"])])),_:1}))])),_:1},16)}}}),[["__file","/Users/chudong/project/linux-10/src/views/site/views/node-model/add-node/advanced-config.vue"]]),se={key:0,class:"ml-8px text-[1.2rem] text-danger leading-[2rem]"},de={class:"flex items-center"},ne={class:"flex items-center"},ie={class:"flex items-center custom-refresh-select"},ue={class:"el-input-group__append !h-3rem !flex items-center"},ce={class:"flex items-center"},pe={key:0,class:"pl-[12rem]"},me=F(e({__name:"node-project",setup(e,{expose:o}){const{siteInfo:f}=K(),w=l(!1),j=l([]),x=l(""),h=l(H.value.nodejs_versions),C=l(H.value.package_managers),D=l(),I=a("getNodeData",(e=>{})),N=async()=>{const e=await I(!0);h.value=e.nodejs_versions},F=()=>{A({type:"dir",path:oe.value.project_cwd,change:async e=>{var l;if(oe.value.project_cwd=e,!Q.value){let a=null==(l=e.substring(e.lastIndexOf("/")+1))?void 0:l.replace(/\W/g,"_");oe.value.project_name||(oe.value.project_name=a),x.value=a;const t=await le(oe.value.project_cwd);Object.assign(oe.value,t);const o=await E(e);o.node_modules&&(oe.value.not_install_pkg=!0),w.value=!o.package_json}}})},E=async e=>{const{data:l}=await M({request:Y({path:e})});return l},G=()=>{A({type:"file",path:oe.value.project_cwd,change:e=>{oe.value.userCmd=e}})},ee=async e=>{const l=await $(e);C.value=l,oe.value.pkg_manager=l[0]||""},le=async e=>{let l={};try{const a=await Z({data:JSON.stringify({project_cwd:e})}),t=S(a.data,"object",{});if(0===Object.keys(t).length)l.project_script="0";else{let e=Object.keys(t);j.value=e.map((e=>({label:e+":"+t[e],value:e}))),l.project_script=e[0]||""}if(Q.value){let e=f.value.project_config.project_script;l.project_script=e,l.userCmd=e,!j.value.find((l=>l.value===e))&&(l.project_script="0")}return l}catch(a){return l}},{BtForm:ae,submit:te,param:oe}=q({data:async()=>{var e,l;if(await L(),C.value=H.value.package_managers,h.value=H.value.nodejs_versions,Q.value){const{project_config:e,ps:l}=f.value,a=await le(e.project_cwd);return x.value=l,{...e,project_type:e.project_type||"nodejs",userCmd:"",...a}}return{project_name:"",project_script:"",project_cwd:"/www/wwwroot",project_type:"nodejs",pkg_manager:(null==(e=C.value)?void 0:e.at(0))||"",not_install_pkg:!1,run_user:"www",nodejs_version:(null==(l=h.value)?void 0:l.at(0))||"",userCmd:""}},options:e=>t((()=>[{type:"slots",key:"custom",rules:{project_cwd:[P({message:"请输入项目启动目录"})],project_name:[P({message:"请输入项目名称"})],nodejs_version:[{required:!0,message:"请选择Node版本",trigger:["blur","change"]}],project_script:[P({message:"请选择项目启动脚本"})]}}])),submit:async(e,l)=>{await l();const a=D.value.formData;return{...e.value,project_script:"0"===e.value.project_script?e.value.userCmd:e.value.project_script,...a,domains:a.domains?a.domains.split("\n"):[]}}}),me=async()=>{const e=await te();X(e)};return o({submit:te}),(e,l)=>{const a=J,t=y,o=B,I=V,q=g,P=W,M=z,S=R,E=b,K=O,A=U;return r(),c("div",{class:"overflow-auto",style:k({"max-height":u(Q)?"76rem":"50rem"})},[n(u(ae),{"label-width":"80px"},{custom:d((()=>[n(t,{label:"项目目录",prop:"project_cwd"},{default:d((()=>[i("div",null,[n(a,{modelValue:u(oe).project_cwd,"onUpdate:modelValue":l[0]||(l[0]=e=>u(oe).project_cwd=e),readOnly:"",icon:"el-folder-opened",placeholder:"请选择Node项目目录",onIconClick:F,width:"32rem"},null,8,["modelValue"]),u(w)?(r(),c("div",se,"* 文件夹中未检测到package.json文件,建议前往传统项目进行项目添加")):v("v-if",!0)])])),_:1}),n(t,{label:"项目名称",prop:"project_name"},{default:d((()=>[n(o,{disabled:u(Q),modelValue:u(oe).project_name,"onUpdate:modelValue":l[1]||(l[1]=e=>u(oe).project_name=e),width:"32rem",placeholder:"请输入Node项目名称"},null,8,["disabled","modelValue"])])),_:1}),n(t,{label:"启动选项",prop:"project_script"},{default:d((()=>[i("div",de,[n(q,{placeholder:"请选择项目目录进行操作",modelValue:u(oe).project_script,"onUpdate:modelValue":l[2]||(l[2]=e=>u(oe).project_script=e),class:"!w-[30rem]",disabled:"/www/wwwroot/"===u(oe).project_cwd||"/www/wwwroot"===u(oe).project_cwd},{default:d((()=>[n(I,{label:"自定义启动命令",value:"0"}),(r(!0),c(m,null,p(u(j),(e=>(r(),s(I,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])))),128))])),_:1},8,["modelValue","disabled"]),l[7]||(l[7]=i("span",{class:"ml-8px text-[1.2rem]"},"* 自动获取package.json文件中的启动模式",-1))])])),_:1}),"0"===u(oe).project_script?(r(),s(t,{key:0,label:" "},{default:d((()=>[n(a,{modelValue:u(oe).userCmd,"onUpdate:modelValue":l[3]||(l[3]=e=>u(oe).userCmd=e),placeholder:"请输入自定义启动命令",icon:"el-folder-opened",onIconClick:G,width:"32rem"},null,8,["modelValue"])])),_:1})):v("v-if",!0),n(t,{label:"Node版本",prop:"nodejs_version"},{default:d((()=>[i("div",ne,[i("div",ie,[n(q,{modelValue:u(oe).nodejs_version,"onUpdate:modelValue":l[4]||(l[4]=e=>u(oe).nodejs_version=e),class:"!w-[16rem]",onChange:ee},{default:d((()=>[(r(!0),c(m,null,p(u(h),(e=>(r(),s(I,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),i("div",ue,[n(M,{title:"刷新Node版本",class:"!flex",onClick:N},{default:d((()=>[n(P,{icon:"el-refresh",class:"!text-[14px]"})])),_:1})])]),l[9]||(l[9]=i("span",{class:"ml-8px text-[1.2rem] text-[#666]"},"* 请根据项目选择合适的Node版本,",-1)),n(S,{onClick:u(T)},{default:d((()=>l[8]||(l[8]=[_("安装其他版本")]))),_:1},8,["onClick"])])])),_:1}),n(t,{label:"包管理器"},{default:d((()=>[i("div",ce,[n(q,{modelValue:u(oe).pkg_manager,"onUpdate:modelValue":l[5]||(l[5]=e=>u(oe).pkg_manager=e),class:"!w-[16rem]"},{default:d((()=>[(r(!0),c(m,null,p(u(C),((e,l)=>(r(),s(I,{key:l,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),l[11]||(l[11]=i("span",{class:"text-[1.2rem] text-[#666 mx-8px"},"* 请选择项目的包管理器",-1)),u(Q)?v("v-if",!0):(r(),s(E,{key:0,modelValue:u(oe).not_install_pkg,"onUpdate:modelValue":l[6]||(l[6]=e=>u(oe).not_install_pkg=e)},{default:d((()=>l[10]||(l[10]=[_(" 不安装node_module ")]))),_:1},8,["modelValue"]))])])),_:1})])),_:1}),n(K,{isShowDivider:!u(Q)},{config:d((()=>{var e,l;return[n(re,{ref_key:"advancedConfigRef",ref:D,"label-width":"80px",type:"node",rowData:{...null==(e=u(f))?void 0:e.project_config,listen:null==(l=u(f))?void 0:l.listen},ps:u(x)},null,8,["rowData","ps"])]})),_:1},8,["isShowDivider"]),u(Q)?(r(),c("div",pe,[n(A,{type:"primary",onClick:me},{default:d((()=>l[12]||(l[12]=[_("保存修改")]))),_:1})])):v("v-if",!0),l[13]||(l[13]=i("ul",{class:"mt-[8px] leading-8 text-[1.2rem] list-disc ml-32px"},[i("li",null,"【启动选项】:默认读取package.json中的scripts列表,也可以选择[自定义启动命令]选项来手动输入启动命令"),i("li",null,"【自定义启动命令】:可以选择启动文件,或直接输入启动命令,支持的启动方式:例:npm/node/pm2/yarn"),i("li",null,"【项目端口】:错误的端口会导致访问502,若不知道端口,可先随意填写,启动项目后再改为正确端口"),i("li",null,"【运行用户】:为了安全考虑,默认使用www用户运行,root用户运行可能带来安全风险")],-1))],4)}}}),[["__file","/Users/chudong/project/linux-10/src/views/site/views/node-model/add-node/node-project.vue"]]),_e={class:"flex items-center"},ve={class:"flex items-center custom-refresh-select"},fe={class:"el-input-group__append !h-3rem !flex items-center"},we={key:2,class:"mt-2rem"},je={class:"flex items-center"},ge={class:"flex items-center"},ye={class:"text-[1.2rem] text-[#666] ml-[0.8rem]"},xe={class:"flex items-center"},be={key:3,class:"mt-2rem"},he={class:"flex items-center"},Ve={key:0,class:"mb-[2rem]"},ke=F(e({__name:"pm-project",props:{compData:{type:null,required:!1,default:()=>({isEdit:!1})}},setup(e,{expose:o}){const{siteInfo:w}=K(),j=l(H.value.nodejs_versions),x=l(H.value.package_managers),h=t((()=>Q.value?w.value.ps:te.value.project_name)),F=l(),M=a("getNodeData",(e=>{})),S=(e,l)=>{A({type:l,path:"file"===e?te.value.project_file:te.value.project_cwd,change:async l=>{var a,t;const o=te.value.project_name;if("cwd"===e){te.value.project_cwd=l;let e=null==(a=l.substring(l.lastIndexOf("/")+1))?void 0:a.replace(/\W/g,"_");o||(te.value.project_name=e)}else{te.value.project_cwd=l.substring(0,l.lastIndexOf("/"));let a=null==(t=te.value.project_cwd.substring(te.value.project_cwd.lastIndexOf("/")+1))?void 0:t.replace(/\W/g,"_");if(o||(te.value.project_name=a),"file"===e&&(te.value.project_file=l),"config_file"===e){te.value.config_file=l;const e=await(async e=>{try{const{data:l}=await G({path:e});return l.data}catch(l){}})(l);te.value.config_body=e}}}})},Y=e=>{oe()},Z=async e=>{const l=await $(e);x.value=l,te.value.pkg_manager=l[0]||""},{BtForm:le,submit:ae,param:te,clearValidate:oe}=q({data:async()=>{var e,l;if(await L(),x.value=H.value.package_managers,j.value=H.value.nodejs_versions,Q.value){const{project_config:e,ps:l}=w.value;return{...e,project_ps:E(l),watch:"true"===e.watch}}return{add_type:0,project_name:"",project_type:"pm2",project_cwd:"",project_file:"",pkg_manager:(null==(e=x.value)?void 0:e.at(0))||"yarn",not_install_pkg:!1,nodejs_version:(null==(l=j.value)?void 0:l.at(0))||"",cluster:1,max_memory_limit:1024,watch:!1,config_file:"",config_body:"",project_args:"",env:""}},options:()=>t((()=>[{type:"slots",key:"custom",rules:{project_name:[P({message:"请输入项目名称"})],project_file:[{required:!0,message:"请输入项目启动文件",trigger:["blur","change"]}],nodejs_version:[{required:!0,message:"请选择Node版本",trigger:["blur","change"]}],project_cwd:[P({message:"请输入项目启动目录"})],cluster:[{required:!0,message:"请输入负载实例数量",trigger:["blur","change"]}],max_memory_limit:[{required:!0,message:"请输入内存上限",trigger:["blur","change"]}]}}])),submit:async(e,l)=>{let a;await l();let t=F.value.formData;return a={...e.value,...t,domains:t.domains?t.domains.split("\n"):[]},0===a.add_type&&(delete a.config_file,delete a.config_body),delete a.add_type,a}}),se=async()=>{const e=await ae();X(e)};return o({submit:ae}),(e,l)=>{const a=B,t=y,o=V,q=g,P=W,E=z,G=R,K=D,A=I,L=J,$=N,X=b,ae=ee,oe=O,de=U;return r(),c("div",{class:"overflow-auto",style:k({"max-height":u(Q)?"68rem":"50rem"})},[n(u(le),{"label-width":"90px"},{custom:d((()=>[n(t,{label:"项目名称",prop:"project_name"},{default:d((()=>[n(a,{modelValue:u(te).project_name,"onUpdate:modelValue":l[0]||(l[0]=e=>u(te).project_name=e),width:"32rem",disabled:u(Q),placeholder:"请输入Node项目名称"},null,8,["modelValue","disabled"])])),_:1}),u(Q)&&u(te).pm2_name?(r(),s(t,{key:0,label:"PM2服务名"},{default:d((()=>[n(a,{modelValue:u(te).pm2_name,"onUpdate:modelValue":l[1]||(l[1]=e=>u(te).pm2_name=e),width:"32rem",disabled:""},null,8,["modelValue"])])),_:1})):v("v-if",!0),n(t,{label:"Node版本",prop:"nodejs_version"},{default:d((()=>[i("div",_e,[i("div",ve,[n(q,{onChange:Z,modelValue:u(te).nodejs_version,"onUpdate:modelValue":l[2]||(l[2]=e=>u(te).nodejs_version=e),class:"!w-[16rem]"},{default:d((()=>[(r(!0),c(m,null,p(u(j),(e=>(r(),s(o,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),i("div",fe,[n(E,{title:"刷新Node版本",class:"!flex",onClick:l[3]||(l[3]=e=>u(M)(!0))},{default:d((()=>[n(P,{icon:"el-refresh",class:"!text-[14px]"})])),_:1})])]),l[22]||(l[22]=i("span",{class:"ml-8px text-[1.2rem] text-[#666]"},"* 请根据项目选择合适的Node版本,",-1)),n(G,{onClick:u(T)},{default:d((()=>l[21]||(l[21]=[_("安装其他版本")]))),_:1},8,["onClick"])])])),_:1}),u(Q)?v("v-if",!0):(r(),s(t,{key:1,label:"添加方式",prop:"add_type"},{default:d((()=>[n(A,{modelValue:u(te).add_type,"onUpdate:modelValue":l[4]||(l[4]=e=>u(te).add_type=e),onChange:Y},{default:d((()=>[n(K,{label:0},{default:d((()=>l[23]||(l[23]=[_("自定义添加")]))),_:1}),n(K,{label:1},{default:d((()=>l[24]||(l[24]=[_("从文件/内容添加")]))),_:1})])),_:1},8,["modelValue"])])),_:1})),0===u(te).add_type?(r(),c("div",we,[n(t,{label:"启动文件",prop:"project_file"},{default:d((()=>[n(L,{modelValue:u(te).project_file,"onUpdate:modelValue":l[5]||(l[5]=e=>u(te).project_file=e),readOnly:"",icon:"el-folder-opened",placeholder:"请选择项目启动文件",onIconClick:l[6]||(l[6]=e=>S("file","file")),width:"32rem"},null,8,["modelValue"])])),_:1}),n(t,{label:"运行目录",prop:"project_cwd"},{default:d((()=>[n(L,{modelValue:u(te).project_cwd,"onUpdate:modelValue":l[7]||(l[7]=e=>u(te).project_cwd=e),readOnly:"",icon:"el-folder-opened",placeholder:"请选择项目运行目录",onIconClick:l[8]||(l[8]=e=>S("cwd","dir")),width:"32rem"},null,8,["modelValue"])])),_:1}),n(t,{label:"负载实例数量",prop:"cluster"},{default:d((()=>[i("div",je,[n(a,{width:"10rem",class:"!w-[10rem]",type:"number",modelValue:u(te).cluster,"onUpdate:modelValue":l[9]||(l[9]=e=>u(te).cluster=e),min:1},null,8,["modelValue"]),l[25]||(l[25]=i("span",{class:"text-[1.2rem] text-[#666] ml-[0.8rem]"},"* 若实例数量大于1,则开启集群模式",-1))])])),_:1}),n(t,{label:"内存上限",prop:"max_memory_limit"},{default:d((()=>[i("div",ge,[n(a,{width:"16rem",class:"!w-[16rem]",type:"number","text-type":"MB",min:1,modelValue:u(te).max_memory_limit,"onUpdate:modelValue":l[10]||(l[10]=e=>u(te).max_memory_limit=e)},null,8,["modelValue"]),i("span",ye,"* 超过上限PM2会自动重启项目,系统最大可用内存为["+f(u(H).maximum_memory)+"MB]",1)])])),_:1}),n(t,{label:"自动重载"},{default:d((()=>[n($,{modelValue:u(te).watch,"onUpdate:modelValue":l[11]||(l[11]=e=>u(te).watch=e)},null,8,["modelValue"])])),_:1}),n(t,{label:"包管理器"},{default:d((()=>[i("div",xe,[n(q,{modelValue:u(te).pkg_manager,"onUpdate:modelValue":l[12]||(l[12]=e=>u(te).pkg_manager=e),class:"!w-[16rem]"},{default:d((()=>[(r(!0),c(m,null,p(u(x),((e,l)=>(r(),s(o,{key:l,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),l[27]||(l[27]=i("span",{class:"text-[1.2rem] text-[#666 mx-8px"},"* 请选择项目的包管理器",-1)),u(Q)?v("v-if",!0):(r(),s(X,{key:0,modelValue:u(te).not_install_pkg,"onUpdate:modelValue":l[13]||(l[13]=e=>u(te).not_install_pkg=e)},{default:d((()=>l[26]||(l[26]=[_(" 不安装node_module ")]))),_:1},8,["modelValue"]))])])),_:1})])):(r(),c("div",be,[n(t,{label:"配置文件"},{default:d((()=>[i("div",he,[n(L,{modelValue:u(te).config_file,"onUpdate:modelValue":l[14]||(l[14]=e=>u(te).config_file=e),readOnly:"",icon:"el-folder-opened",placeholder:"请选择项目配置文件",onIconClick:l[15]||(l[15]=e=>S("config_file","file")),width:"32rem"},null,8,["modelValue"]),l[28]||(l[28]=i("span",{class:"text-1.2rem text-#999 leading-[18px] ml-4px"},"* 请选择pm2的ecosystem配置文件或粘贴内容",-1))])])),_:1}),n(t,{label:"运行目录",prop:"project_cwd"},{default:d((()=>[n(L,{modelValue:u(te).project_cwd,"onUpdate:modelValue":l[16]||(l[16]=e=>u(te).project_cwd=e),readOnly:"",icon:"el-folder-opened",placeholder:"请选择项目运行目录",onIconClick:l[17]||(l[17]=e=>S("cwd","dir")),width:"30rem"},null,8,["modelValue"])])),_:1}),n(t,{label:"内容",prop:"config_body"},{default:d((()=>[n(ae,{modelValue:u(te).config_body,"onUpdate:modelValue":l[18]||(l[18]=e=>u(te).config_body=e),style:{height:"24rem"},class:"!h-[24rem] w-[58rem]"},null,8,["modelValue"])])),_:1})])),n(oe,{"is-show-divider":!u(Q)},{config:d((()=>{var e;return[v(" 自定义添加特殊配置 "),0===u(te).add_type?(r(),c("div",Ve,[n(t,{label:"参数"},{default:d((()=>[n(a,{width:"32rem ",placeholder:"请输入项目参数",modelValue:u(te).project_args,"onUpdate:modelValue":l[19]||(l[19]=e=>u(te).project_args=e)},null,8,["modelValue"])])),_:1}),n(t,{label:"环境变量"},{default:d((()=>[n(a,{width:"32rem",placeholder:"请输入项目环境变量,一行一个",resize:"none",rows:3,modelValue:u(te).env,"onUpdate:modelValue":l[20]||(l[20]=e=>u(te).env=e),type:"textarea"},null,8,["modelValue"])])),_:1})])):v("v-if",!0),v(" 其他通用高级配置 "),n(re,{ref_key:"advanceConfigRef",ref:F,"label-width":"90px",rowData:null==(e=u(w))?void 0:e.project_config,ps:u(h)},null,8,["rowData","ps"])]})),_:1},8,["is-show-divider"])])),_:1}),u(Q)?(r(),s(de,{key:0,type:"primary",class:"!mt-[1.2rem] !ml-10rem",onClick:se},{default:d((()=>l[29]||(l[29]=[_(" 保存修改 ")]))),_:1})):v("v-if",!0),i("ul",{class:C(["mt-[8px] leading-8 text-[1.2rem] list-disc ml-32px",{"mb-[20px]":u(Q)}])},l[30]||(l[30]=[i("li",null,"【启动文件】用于启动nodejs项目的启动文件,通常是一个js文件",-1),i("li",null,"【配置文件】用于pm2直接启动服务的文件,通常是名为ecosystem.config.cjs",-1),i("li",null,"【运行目录】运行项目时默认的运行目录,通常为启动文件或配置文件所在目录",-1),i("li",null,"【负载实例数】集群模式,有些项目可能不支持,实例数量>1时为开启集群模式",-1),i("li",null,"【负载均衡】开启集群模式后将根据实例数自动负载均衡",-1)]),2)],4)}}}),[["__file","/Users/chudong/project/linux-10/src/views/site/views/node-model/add-node/pm-project.vue"]]),Ue={class:"flex items-center"},Ce={class:"flex items-center custom-refresh-select"},De={class:"el-input-group__append !h-3rem !flex items-center"},Ie=F(e({__name:"traditional-project",props:{compData:{type:null,required:!1,default:()=>({isEdit:!1})}},setup(e,{expose:o}){const{siteInfo:f}=K(),w=l(H.value.nodejs_versions);l(H.value.package_managers);const j=l(),x=a("getNodeData",(e=>{})),b=async(e,l)=>{A({type:l,path:"file"===e?D.value.project_file:D.value.project_cwd,change:async l=>{var a,t;"file"===e?D.value.project_file=l:D.value.project_cwd=l;const o=D.value.project_name;if("cwd"===e&&""===o){let e=null==(a=l.substring(l.lastIndexOf("/")+1))?void 0:a.replace(/\W/g,"_");D.value.project_name=e}if("file"===e){D.value.project_cwd=l.substring(0,l.lastIndexOf("/"));let e=null==(t=D.value.project_cwd.substring(D.value.project_cwd.lastIndexOf("/")+1))?void 0:t.replace(/\W/g,"_");""===o&&(D.value.project_name=e)}}})},{BtForm:h,submit:C,param:D}=q({data:async()=>{var e,l;return await L(),w.value=H.value.nodejs_versions,Q.value?null==(e=f.value)?void 0:e.project_config:{project_name:"",nodejs_version:(null==(l=w.value)?void 0:l.at(0))||"",project_file:"",project_cwd:"",project_type:"general",project_args:"",env:""}},options:()=>t((()=>[{type:"slots",key:"custom",rules:{project_name:[P({message:"请输入项目名称"})],nodejs_version:[{required:!0,message:"请选择Node版本",trigger:["blur","change"]}],project_file:[{required:!0,message:"请输入项目启动文件",trigger:["blur","change"]}],project_cwd:[P({message:"请输入项目启动目录"})]}}])),submit:async(e,l)=>{let a=!1;await l();let t=j.value.formData;return a={...e.value,...t,domains:t.domains?t.domains.split("\n"):[]},a}}),I=async()=>{const e=await C();X(e)};return o({submit:C}),(e,l)=>{const a=B,t=y,o=V,C=g,N=W,q=z,F=R,P=J,M=O,S=U;return r(),c("div",{class:"overflow-auto",style:k({"max-height":u(Q)?"76rem":"52rem"})},[n(u(h),{"label-width":"80px"},{custom:d((()=>[n(t,{label:"项目名称",prop:"project_name"},{default:d((()=>[n(a,{modelValue:u(D).project_name,"onUpdate:modelValue":l[0]||(l[0]=e=>u(D).project_name=e),width:"32rem",disabled:u(Q),placeholder:"请输入项目名称"},null,8,["modelValue","disabled"])])),_:1}),n(t,{label:"Node版本",prop:"nodejs_version"},{default:d((()=>[i("div",Ue,[i("div",Ce,[n(C,{modelValue:u(D).nodejs_version,"onUpdate:modelValue":l[1]||(l[1]=e=>u(D).nodejs_version=e),class:"!w-[16rem]"},{default:d((()=>[(r(!0),c(m,null,p(u(w),(e=>(r(),s(o,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),i("div",De,[n(q,{title:"刷新Node版本",class:"!flex",onClick:l[2]||(l[2]=e=>u(x)(!0))},{default:d((()=>[n(N,{icon:"el-refresh",class:"!text-[14px]"})])),_:1})])]),l[10]||(l[10]=i("span",{class:"ml-8px text-[1.2rem] text-[#666]"},"* 请根据项目选择合适的Node版本,",-1)),n(F,{onClick:u(T)},{default:d((()=>l[9]||(l[9]=[_("安装其他版本")]))),_:1},8,["onClick"])])])),_:1}),n(t,{label:"启动文件",prop:"project_file"},{default:d((()=>[n(P,{modelValue:u(D).project_file,"onUpdate:modelValue":l[3]||(l[3]=e=>u(D).project_file=e),readOnly:"",placeholder:"请选择项目启动文件",icon:"el-folder-opened",onIconClick:l[4]||(l[4]=e=>b("file","file")),width:"32rem"},null,8,["modelValue"])])),_:1}),n(t,{label:"运行目录",prop:"project_cwd"},{default:d((()=>[n(P,{modelValue:u(D).project_cwd,"onUpdate:modelValue":l[5]||(l[5]=e=>u(D).project_cwd=e),readOnly:"",placeholder:"请选择项目运行目录",icon:"el-folder-opened",onIconClick:l[6]||(l[6]=e=>b("cwd","dir")),width:"32rem"},null,8,["modelValue"])])),_:1}),n(t,{label:"参数"},{default:d((()=>[n(a,{width:"32rem ",placeholder:"请输入项目参数",modelValue:u(D).project_args,"onUpdate:modelValue":l[7]||(l[7]=e=>u(D).project_args=e)},null,8,["modelValue"])])),_:1}),n(t,{label:"环境变量"},{default:d((()=>[n(a,{width:"32rem",placeholder:"请输入项目环境变量,一行一个,格式参照key=value",resize:"none",rows:3,modelValue:u(D).env,"onUpdate:modelValue":l[8]||(l[8]=e=>u(D).env=e),type:"textarea"},null,8,["modelValue"])])),_:1})])),_:1}),v(" 高级配置 "),n(M,{"is-show-divider":!u(Q)},{config:d((()=>{var e,l;return[n(re,{ref_key:"advanceConfigRef",ref:j,"label-width":"80px",rowData:{...null==(e=u(f))?void 0:e.project_config,listen:null==(l=u(f))?void 0:l.listen},ps:u(D).project_name},null,8,["rowData","ps"])]})),_:1},8,["is-show-divider"]),u(Q)?(r(),s(S,{key:0,type:"primary",class:"!mt-[1.2rem] !ml-10rem",onClick:I},{default:d((()=>l[11]||(l[11]=[_(" 保存修改 ")]))),_:1})):v("v-if",!0),l[12]||(l[12]=i("ul",{class:"mt-8px leading-8 text-[1.2rem] list-disc ml-32px"},[i("li",null,"【启动文件】用于启动nodejs项目的启动文件,通常是一个js文件"),i("li",null,"【运行目录】运行项目时默认的运行目录,通常为启动文件或配置文件所在目录")],-1))],4)}}}),[["__file","/Users/chudong/project/linux-10/src/views/site/views/node-model/add-node/traditional-project.vue"]]);export{Ie as G,me as N,ke as P};