UNPKG

goldpankit

Version:

GoldPanKit是一款极速研发套件,可在套件中快速构建各类技术框架和项目。开源作者可发布自己的项目,并为其设定金额,实现开源项目的盈利。

84 lines 58.2 kB
import{C as D}from"./CompilerSelect-6095eebc.js";import{_ as I,r,o as m,h as y,w as a,b as i,c as g,F,j as $,a3 as Y,N as H,a as o,J as U,t as f,a4 as K,T as P,e as V,a5 as se,a6 as M,g as B,E as oe,k as E,a7 as re,B as W,K as ue,a8 as de,p as G,l as L,Q as X,A as Z,$ as me,a9 as Q}from"./index-de119b2f.js";import{g as ce,h as pe,i as ee,e as O,j as he,c as te,k as fe}from"./service-1cd4347d.js";import{c as be,d as _e,i as le,b as j,s as ie,e as ve}from"./plugin-6e9ad49f.js";import{c as ne}from"./QueryModelView-b90d08cd.js";import{p as ge}from"./service.version-03901a66.js";import{O as ye,a as J}from"./ServiceCodeErrorWindow-f4f58216.js";const Ve={name:"InputTypeSelect",props:{withGroup:{default:!1}}};function ke(e,t,l,p,n,s){const u=r("el-option"),d=r("el-select");return m(),y(d,{class:"input-type-select"},{default:a(()=>[i(u,{value:"input",label:"Input"}),i(u,{value:"number_input",label:"Number Input"}),i(u,{value:"textarea",label:"Textarea"}),i(u,{value:"select",label:"Select"}),i(u,{value:"checkbox",label:"Checkbox"}),i(u,{value:"radio",label:"Radio"}),i(u,{value:"switch",label:"Switch"}),l.withGroup?$("",!0):(m(),g(F,{key:0},[i(u,{value:"datasource",label:"Data Source"}),i(u,{value:"table",label:"Table"}),i(u,{value:"query_model",label:"Query Model"})],64))]),_:1})}const x=I(Ve,[["render",ke],["__scopeId","data-v-72eb8421"]]);const Ce={name:"SettingFiles",components:{SortableButton:Y,CompilerSelect:D,InputTypeSelect:x},props:{space:{required:!0},service:{required:!0},plugin:{required:!1}},data(){return{currentNode:null,files:[]}},computed:{isPlugin(){return this.plugin!=null},unique(){return this.isPlugin?{space:this.space,service:this.service,plugin:this.plugin}:{space:this.space,service:this.service}},fetchFilesApi(){return this.isPlugin?be:ce},saveFileSettingApi(){return this.isPlugin?_e:pe}},methods:{fetchFiles(){this.fetchFilesApi(this.unique).then(e=>{this.files=e.map(t=>(t.withoutIfNotExists=t.withoutIfNotExists==null?!1:t.withoutIfNotExists,t)),H(this.files)}).catch(e=>{this.$tip.apiFailed(e)})},saveFileSetting(){this.saveTimeout!=null&&clearTimeout(this.saveTimeout),this.saveTimeout=setTimeout(()=>{this.saveFileSettingApi({...this.unique,type:this.currentNode.type,path:this.currentNode.path,relativePath:this.currentNode.relativePath,compiler:this.currentNode.compiler,withoutIfNotExists:this.currentNode.withoutIfNotExists,enableExpress:this.currentNode.enableExpress,variables:this.currentNode.variables.filter(e=>e.name.trim().length>0)}).then(()=>{}).catch(e=>{this.$tip.apiFailed(e)})},300)},createVariable(){this.currentNode.variables.push({name:"",value:"",compiler:"static",remark:""})},deleteVariable(e){this.currentNode.variables.splice(e,1)},handleNodeClick(e){this.currentNode=e},isFlagFile(e){return e.compiler!=null&&e.compiler!==""||e.withoutIfNotExists!=null&&e.withoutIfNotExists!==!1||e.enableExpress!=null&&e.enableExpress!==""||e.variables.length>0},handleSorted(e){this.currentNode.variables=[],this.$nextTick(()=>{this.currentNode.variables=e,this.saveFileSetting()})}},created(){this.fetchFiles()}},Se={class:"tree"},Te={class:"files-wrap"},Re={class:"search-wrap"},Ie={class:"node-label"},$e={class:"file-setting"},we={class:"content-wrap"},Ne={key:1,class:"setting-holder"},Fe={class:"holder-wrap"};function ze(e,t,l,p,n,s){const u=r("el-input"),d=r("Document"),b=r("el-icon"),k=r("Folder"),R=r("el-tree"),h=r("CompilerSelect"),S=r("el-form-item"),T=r("el-switch"),N=r("el-form");return m(),g("div",Se,[o("div",Te,[o("div",Re,[i(u,{placeholder:e.$t("service.settings.file.filterKeyword")},null,8,["placeholder"])]),i(R,{data:n.files,"highlight-current":!0,"empty-text":e.$t("service.settings.file.noFiles"),onNodeClick:s.handleNodeClick},{default:a(({node:v,data:C})=>[o("span",Ie,[C.type==="FILE"?(m(),y(b,{key:0},{default:a(()=>[i(d)]),_:1})):C.type==="DIRECTORY"?(m(),y(b,{key:1},{default:a(()=>[i(k)]),_:1})):$("",!0),o("span",{class:U(["filename",{"flag-file":s.isFlagFile(C)}])},f(C.label),3)])]),_:1},8,["data","empty-text","onNodeClick"])]),o("div",$e,[o("h4",null,f(e.$t("service.settings.file.fileSetting")),1),o("div",we,[n.currentNode!=null?(m(),y(N,{key:0},{default:a(()=>[i(S,{label:e.$t("service.settings.file.compiler")},{default:a(()=>[i(h,{modelValue:n.currentNode.compiler,"onUpdate:modelValue":t[0]||(t[0]=v=>n.currentNode.compiler=v),"with-follow-service":!0,onChange:s.saveFileSetting},null,8,["modelValue","onChange"])]),_:1},8,["label"]),i(S,{label:"只有文件在项目中存在时才生效"},{default:a(()=>[i(T,{modelValue:n.currentNode.withoutIfNotExists,"onUpdate:modelValue":t[1]||(t[1]=v=>n.currentNode.withoutIfNotExists=v),onChange:s.saveFileSetting},null,8,["modelValue","onChange"])]),_:1}),i(S,{label:e.$t("service.settings.file.enableExpress")},{default:a(()=>[i(u,{modelValue:n.currentNode.enableExpress,"onUpdate:modelValue":t[2]||(t[2]=v=>n.currentNode.enableExpress=v),type:"textarea",rows:8,placeholder:e.$t("service.settings.file.enableExpressHolder"),onInput:s.saveFileSetting},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label"])]),_:1})):(m(),g("div",Ne,[o("div",Fe,[o("h5",null,f(e.$t("service.settings.file.fileSetting")),1),o("p",null,f(e.$t("service.settings.file.fileSettingHolder")),1)])]))])])])}const Ul=I(Ce,[["render",ze],["__scopeId","data-v-7b11a224"]]);const qe={name:"InitializeView",components:{DatabaseTypeSelect:K,CompilerSelect:D,DirectorySelect:P},props:{spaceName:{required:!0},serviceName:{required:!0},serviceLabel:{required:!1},pluginName:{required:!1},pluginLabel:{required:!1}},data(){return{form:{space:this.spaceName,name:null,version:"1.0.0",compiler:"static",supportedDatabases:[],codespace:""}}},computed:{isInitPlugin(){return this.pluginName!=null}},methods:{initialize(){let e;this.isInitPlugin?e=le({...this.form,service:this.serviceName,name:this.pluginName,label:this.pluginLabel}):e=ee({...this.form,name:this.serviceName,label:this.serviceLabel}),e.then(()=>{this.$emit("initialized",this.form)}).catch(t=>{this.$tip.apiFailed(t)})},fetchConfig(e){let t;this.isInitPlugin?(console.log("查询插件配置",e),t=j({codespace:e})):t=O({codespace:e}),t.then(l=>{l!=null&&(this.form.version=l.version||this.form.version,this.form.compiler=l.compiler||this.form.compiler,this.form.supportedDatabases=l.supportedDatabases||this.form.supportedDatabases)}).catch(l=>{this.$tip.apiFailed(l)})}}},De={class:"initialize-wrap"},Ue={class:"tip"},Ee={class:"directory-select-wrap"},Oe={class:"opera-bottom"};function je(e,t,l,p,n,s){const u=r("DirectorySelect"),d=r("el-button");return m(),g("div",De,[o("div",Ue,[o("h3",null,f(e.$t("service.settings.initialize.initializeService")),1),o("p",null,f(e.$t("service.settings.initialize.initializeServiceTip")),1)]),o("div",Ee,[i(u,{modelValue:n.form.codespace,"onUpdate:modelValue":t[0]||(t[0]=b=>n.form.codespace=b),title:e.$t("service.settings.initialize.selectServiceCodespace"),height:"235px",onChange:s.fetchConfig},null,8,["modelValue","title","onChange"])]),o("div",Oe,[i(d,{type:"primary",onClick:s.initialize},{default:a(()=>[V(f(e.$t("service.settings.initialize.initializeService")),1)]),_:1},8,["onClick"])])])}const El=I(qe,[["render",je],["__scopeId","data-v-315f5e85"]]);const xe={name:"BuildCommandTypeSelect"};function Ae(e,t,l,p,n,s){const u=r("el-option"),d=r("el-select");return m(),y(d,{class:"build-command-type-select"},{default:a(()=>[i(u,{value:"Node",label:"Node"}),i(u,{value:"MySQL",label:"MySQL"})]),_:1})}const Me=I(xe,[["render",Ae],["__scopeId","data-v-3b21c3bd"]]);const Be={name:"ServiceFileSelectWindow",props:{title:{default:"Select Service File"},serviceConfig:{required:!0}},data(){return{visible:!1,paths:[],files:[],selectedFilepath:null}},methods:{open(){this.visible=!0,this.paths=[this.__getProjectName()],this.__fetchFiles(),this.selectedFilepath=null},confirmSelect(){this.visible=!1;let e=`${this.paths.slice(1).join("/")}/${this.selectedFilepath}`;e.startsWith("/")||(e="/"+e),this.$emit("change",e)},cancelSelect(){this.visible=!1},changePath(e){if(e===this.paths.length-1)return;const t=this.paths.slice(0,e+1);this.__fetchFiles(t,()=>{this.paths.splice(e+1),this.selectedFilepath=null})},openOrSelectFile(e){if(e.type==="DIRECTORY"){const t=JSON.parse(JSON.stringify(this.paths));t.push(e.path),this.__fetchFiles(t,()=>{this.paths.push(e.path),this.selectedFilepath=null});return}this.selectedFilepath=e.path},__fetchFiles(e,t){se(this.__getAbsolutePath(e)).then(l=>{this.files=l,H(this.files),t&&t()}).catch(l=>{this.$tip.apiFailed(l)})},__getProjectName(){return M.split(this.serviceConfig.codespace).pop()},__getAbsolutePath(e){e==null&&(e=JSON.parse(JSON.stringify(this.paths))),e.shift();let t=M.join([this.serviceConfig.codespace,...e]);return this.serviceConfig.translator.settings.length>0&&(t=M.join([this.serviceConfig.codespace,this.serviceConfig.translator.output,...e])),t}}},Pe=["id"],We={class:"paths"},Ge=["onClick"],Le={class:"files"},Je=["onClick"],Qe={class:"opera"};function Ye(e,t,l,p,n,s){const u=r("el-button"),d=r("Folder"),b=r("Document"),k=r("el-icon"),R=r("el-dialog");return m(),y(R,{modelValue:n.visible,"onUpdate:modelValue":t[0]||(t[0]=h=>n.visible=h),"show-close":!1,class:"service-file-select-window","append-to-body":""},{header:a(({close:h,titleId:S,titleClass:T})=>[o("h4",{id:S,class:U(T)},f(l.title),11,Pe),i(u,{class:"button-icon",icon:"Refresh",onClick:s.__fetchFiles},null,8,["onClick"])]),default:a(()=>[o("ul",We,[(m(!0),g(F,null,B(n.paths,(h,S)=>(m(),g("li",{key:h,onClick:T=>s.changePath(S)},f(h),9,Ge))),128))]),o("div",Le,[o("ul",null,[(m(!0),g(F,null,B(n.files,h=>(m(),g("li",{key:h.path,class:U({"is-file":h.type==="FILE",selected:n.selectedFilepath===h.path}),onClick:S=>s.openOrSelectFile(h)},[i(k,null,{default:a(()=>[h.type==="DIRECTORY"?(m(),y(d,{key:0})):(m(),y(b,{key:1}))]),_:2},1024),o("p",null,f(h.path),1)],10,Je))),128))])]),o("div",Qe,[i(u,{onClick:s.cancelSelect},{default:a(()=>[V("Cancel")]),_:1},8,["onClick"]),i(u,{type:"primary",disabled:n.selectedFilepath==null,onClick:s.confirmSelect},{default:a(()=>[V("Confirm Select")]),_:1},8,["disabled","onClick"])])]),_:1},8,["modelValue"])}const He=I(Be,[["render",Ye]]);const Ke={name:"BuildList",components:{ServiceFileSelectWindow:He,DirectorySelect:P,Empty:oe,BuildCommandTypeSelect:Me},props:{builds:{required:!0,type:Array},withUnbuild:{default:!1},serviceConfig:{required:!0}},data(){return{actives:[],varIndex:1,selectFileData:{currentBuild:null}}},watch:{builds:{immediate:!0,handler(){this.__handleBuildList("builds")}},unbuilds:{immediate:!0,handler(){this.__handleBuildList("unbuilds")}}},methods:{handleFileChange(e){this.selectFileData.currentBuild.__filepath=e,this.handleSave()},create(){const e=""+Math.random();this.builds.push({id:e,name:this.__generateBuildName(),type:"Node",contentType:"string",content:"",__readonly:!1,__filepath:""}),this.actives.push(e)},handleChange(e){for(const t of this.builds){const l=e.find(p=>p===t.id)!=null;t.__readonly=!l}},handleSave(){this.$emit("save")},deleteBuild(e){this.builds.splice(e,1),this.handleSave()},openSelectFileWindow(e){this.selectFileData.currentBuild=e,this.$refs.serviceFileSelectWindow.open()},__generateBuildName(){let e;for(;;)if(e=`${this.withUnbuild?"un":""}build${this.varIndex}`,this.varIndex++,this.builds.findIndex(t=>t.name===e)===-1)return e},__handleBuildList(e){this[e]!=null&&this[e].forEach(t=>{t.id=""+Math.random(),t.contentType==="file"&&(t.__filepath=t.content,t.content=""),t.__readonly=!0})}}},Xe={class:"service-build-list"},Ze={class:"toolbar"},et={key:0},tt={key:1},lt={class:"title-wrap"},it={key:0,class:"view"},nt={class:"name"},at={class:"type"},st={key:1,class:"edit"},ot={class:"opera"},rt=["onClick"],ut={key:0,class:"holder"},dt={key:1};function mt(e,t,l,p,n,s){const u=r("el-button"),d=r("el-input"),b=r("el-form-item"),k=r("BuildCommandTypeSelect"),R=r("el-form"),h=r("el-tab-pane"),S=r("el-tabs"),T=r("el-collapse-item"),N=r("el-collapse"),v=r("Empty"),C=r("ServiceFileSelectWindow");return m(),g("div",Xe,[o("div",Ze,[l.withUnbuild?(m(),g("p",et,f(e.$t("service.settings.build.unBuildTip")),1)):(m(),g("p",tt,f(e.$t("service.settings.build.buildTip")),1)),i(u,{type:"primary",onClick:s.create},{default:a(()=>[V(f(e.$t("common.create")),1)]),_:1},8,["onClick"])]),l.builds.length>0?(m(),y(N,{key:0,modelValue:n.actives,"onUpdate:modelValue":t[2]||(t[2]=c=>n.actives=c),onChange:s.handleChange},{default:a(()=>[(m(!0),g(F,null,B(l.builds,(c,A)=>(m(),y(T,{key:c.id,name:c.id},{title:a(()=>[o("div",lt,[c.__readonly?(m(),g("div",it,[o("p",nt,f(c.name),1),o("p",at,f(c.type),1)])):(m(),g("div",st,[i(R,{model:c},{default:a(()=>[i(b,{label:e.$t("common.name"),required:""},{default:a(()=>[i(d,{class:"name",modelValue:c.name,"onUpdate:modelValue":_=>c.name=_,onClick:t[0]||(t[0]=E(()=>{},["stop"])),onKeypress:t[1]||(t[1]=E(()=>{},["stop"])),onInput:s.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1032,["label"]),i(b,{label:e.$t("common.type"),required:""},{default:a(()=>[i(k,{class:"type",modelValue:c.type,"onUpdate:modelValue":_=>c.type=_,onChange:s.handleSave},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},1032,["label"])]),_:2},1032,["model"])])),o("div",ot,[i(u,{icon:"Delete",onClick:E(_=>s.deleteBuild(A),["stop"])},{default:a(()=>[V(f(e.$t("common.delete")),1)]),_:2},1032,["onClick"])])])]),default:a(()=>[i(S,{modelValue:c.contentType,"onUpdate:modelValue":_=>c.contentType=_},{default:a(()=>[i(h,{name:"string",label:e.$t("service.settings.build.input")},{default:a(()=>[i(d,{modelValue:c.content,"onUpdate:modelValue":_=>c.content=_,type:"textarea",placeholder:e.$t("service.settings.build.buildCommand"),rows:5,onInput:s.handleSave},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"])]),_:2},1032,["label"]),i(h,{name:"file",label:e.$t("service.settings.build.file")},{default:a(()=>[o("div",{class:"select-holder",onClick:_=>s.openSelectFileWindow(c)},[c.__filepath==null||c.__filepath===""?(m(),g("p",ut,f(e.$t("common.clickToSelectFile")),1)):(m(),g("p",dt,f(c.__filepath),1))],8,rt)]),_:2},1032,["label"])]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue","onChange"])):(m(),y(v,{key:1})),i(C,{ref:"serviceFileSelectWindow","service-config":l.serviceConfig,onChange:s.handleFileChange},null,8,["service-config","onChange"])])}const ct=I(Ke,[["render",mt],["__scopeId","data-v-a44c5960"]]);const pt={name:"Translator",props:{data:{required:!0}},data(){return{saveTimeout:null,filepathCodeEditor:{fullscreen:!1},contentCodeEditor:{fullscreen:!1}}},methods:{handleSave(){this.saveTimeout!=null&&clearTimeout(this.saveTimeout),this.saveTimeout=setTimeout(()=>{this.$emit("save")},300)},exitFullScreen(){this.filepathCodeEditor.fullscreen=!1,this.contentCodeEditor.fullscreen=!1},__initEditor(e,t){const l=re.create(document.querySelector(e),{value:this.data[t],language:"javascript",readOnly:!1,automaticLayout:!0,minimap:{enabled:!0}});l.onDidChangeModelContent(p=>{this.data[t]=l.getValue()})}},mounted(){this.__initEditor(".translator .filepath-code-editor","filepath"),this.__initEditor(".translator .content-code-editor","content"),document.addEventListener("keydown",e=>{e.key==="Escape"&&this.exitFullScreen()})}},w=e=>(G("data-v-b76aeb7d"),e=e(),L(),e),ht={class:"translator"},ft={class:"translator-item"},bt=w(()=>o("h3",null,"文件路径翻译函数",-1)),_t={class:"code"},vt=w(()=>o("em",null,"function",-1)),gt=w(()=>o("em",null,"(",-1)),yt=w(()=>o("em",null,")",-1)),Vt=w(()=>o("em",null,"{",-1)),kt=w(()=>o("p",null,"}",-1)),Ct={class:"translator-item"},St=w(()=>o("h3",null,"文件内容翻译函数",-1)),Tt={class:"code"},Rt=w(()=>o("em",null,"function",-1)),It=w(()=>o("em",null,"(",-1)),$t=w(()=>o("em",null,")",-1)),wt=w(()=>o("em",null,"{",-1)),Nt=w(()=>o("p",null,"}",-1)),Ft={class:"toolbar"};function zt(e,t,l,p,n,s){const u=r("el-button");return m(),g("div",ht,[o("div",ft,[bt,o("p",_t,[vt,V(" translate "),gt,V("filepath: 文件路径, filename: 文件名, suffix: 文件后缀"),yt,V(),Vt,i(u,{type:"primary",onClick:t[0]||(t[0]=d=>n.filepathCodeEditor.fullscreen=!n.filepathCodeEditor.fullscreen)},{default:a(()=>[V("全屏")]),_:1})]),o("div",{class:U(["editor filepath-code-editor",{fullscreen:n.filepathCodeEditor.fullscreen}])},null,2),kt]),o("div",Ct,[St,o("p",Tt,[Rt,V(" translate "),It,V("filepath: 文件路径, filename: 文件名, suffix: 文件后缀, content: 文件内容"),$t,V(),wt,i(u,{type:"primary",onClick:t[1]||(t[1]=d=>n.contentCodeEditor.fullscreen=!n.contentCodeEditor.fullscreen)},{default:a(()=>[V("全屏")]),_:1})]),o("div",{class:U(["editor content-code-editor",{fullscreen:n.contentCodeEditor.fullscreen}])},null,2),Nt]),W(o("div",Ft,[o("h3",null,f(n.filepathCodeEditor.fullscreen?"文件路径编译函数":"文件内容编译函数"),1),o("img",{src:de,onClick:t[2]||(t[2]=(...d)=>s.exitFullScreen&&s.exitFullScreen(...d))})],512),[[ue,n.filepathCodeEditor.fullscreen||n.contentCodeEditor.fullscreen]])])}const qt=I(pt,[["render",zt],["__scopeId","data-v-b76aeb7d"]]);const Dt={name:"BasicSetting",components:{Translator:qt,FormItemTip:X,BuildList:ct,DirectorySelect:P,DatabaseTypeSelect:K,CompilerSelect:D},props:{space:{required:!0},service:{required:!0},plugin:{required:!1},serviceConfig:{}},data(){return{isWorking:{clone:!1},newCodespace:{changing:!1,value:""},originForm:null,form:{name:"",label:"",version:"",minServiceVersion:"",private:!1,receivable:!1,compiler:"",introduce:"",repository:"",branch:"",supportedDatabases:[],tableFieldDefinitions:[],builds:[],unbuilds:[],prices:[{type:"free",value:0}],translator:{output:"",settings:[]},codespace:""}}},computed:{isPlugin(){return this.plugin!=null},clonable(){return this.form.repository.trim()!==""&&this.form.branch.trim()!==""}},methods:{initData(){for(const e in this.form)e==="label"&&(this.form.label=this.serviceConfig.label||this.serviceConfig.name||this.form.label),this.form[e]=this.serviceConfig[e]||this.form[e];this.form.translator!=null&&(this.form.translator.filepath=this.form.translator.filepath||"",this.form.translator.content=this.form.translator.content||"",this.form.translator.settings&&delete this.form.translator.settings),this.originForm=JSON.parse(JSON.stringify(this.form))},initialize(){this.form.codespace=this.newCodespace.value;let e;this.isPlugin?e=le({space:this.space,service:this.service,name:this.plugin,...this.form}):e=ee({space:this.space,name:this.service,...this.form}),e.then(()=>{this.newCodespace.changing=!1,this.$emit("initialized",this.form)}).catch(t=>{this.$tip.apiFailed(t)})},handleBranchInput(e){(e.startsWith("v")||e.startsWith("V"))&&(e=e.substring(1)),ne(null,e,t=>{t||(this.form.version=e),this.saveConfig()})},clone(){this.isWorking.clone||this.alert(this.$t("gitClone.cloneTip"),this.$t("common.importantTip"),{showCancelButton:!0,cancelButtonText:this.$t("common.cancel"),confirmButtonText:this.$t("gitClone.confirm"),confirmButtonClass:"danger-button"}).then(()=>{this.isWorking.clone=!0,he({space:this.space,service:this.service,plugin:this.plugin}).then(()=>{this.alert(this.$t("gitClone.cloneSuccess")).then(()=>{window.location.reload()}).catch(()=>{})}).catch(e=>{this.alert(this.$t("gitClone.cloneFailed",{message:e.message}),this.$t("gitClone.cloneFailedTitle")).catch(()=>{})}).finally(()=>{this.isWorking.clone=!1})}).catch(()=>{})},changePriceType(e){e==="free"&&(this.form.prices[0].value=0),this.saveConfig()},changeCodespace(){this.newCodespace.changing=!0,this.newCodespace.value=this.form.codespace},fetchConfig(e){let t;this.isPlugin?t=j({codespace:e}):t=O({codespace:e}),t.then(l=>{l!=null&&(this.form.name=l.name||this.form.name,this.form.label=l.label||l.name||this.form.label,this.form.version=l.version||this.form.version,this.form.minServiceVersion=l.minServiceVersion||this.form.minServiceVersion,this.form.introduce=l.introduce||this.form.introduce,this.form.compiler=l.compiler||this.form.compiler,this.form.prices=l.prices||this.form.prices,this.form.supportedDatabases=l.supportedDatabases||this.form.supportedDatabases,this.form.builds=l.builds||this.form.builds,this.form.unbuilds=l.unbuilds||this.form.unbuilds,this.form.translator=l.translator||this.form.translator)}).catch(l=>{this.$tip.apiFailed(l)})},saveConfig(){if(this.newCodespace.changing)return;let e,t;this.isPlugin?(t=ie,e={space:this.space,service:this.service,plugin:this.plugin}):(t=te,e={space:this.space,service:this.service},delete this.form.minServiceVersion),t({...e,...this.form,builds:this.form.builds.map(l=>({name:l.name,type:l.type,content:l.contentType==="file"?l.__filepath:l.content,contentType:l.contentType})),unbuilds:this.form.unbuilds.map(l=>({name:l.name,type:l.type,content:l.contentType==="file"?l.__filepath:l.content,contentType:l.contentType}))}).then(()=>{this.originForm=JSON.parse(JSON.stringify(this.form))}).catch(l=>{this.$tip.apiFailed(l)})}},created(){this.initData()}},Ut=e=>(G("data-v-7639046f"),e=e(),L(),e),Et={class:"basic-setting"},Ot={class:"wrap"},jt={class:"repository-input-wrap"},xt=Ut(()=>o("span",null,"/",-1)),At={key:0,class:"codespace-wrap"},Mt={key:0,class:"opera-wrap"};function Bt(e,t,l,p,n,s){const u=r("el-input"),d=r("el-form-item"),b=r("FormItemTip"),k=r("CompilerSelect"),R=r("DatabaseTypeSelect"),h=r("el-button"),S=r("el-checkbox"),T=r("Translator"),N=r("BuildList"),v=r("DirectorySelect"),C=r("el-form");return m(),g("div",Et,[o("div",Ot,[i(C,{model:n.form},{default:a(()=>[l.plugin==null?(m(),g(F,{key:0},[i(d,{label:e.$t("service.settings.name"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.name,"onUpdate:modelValue":t[0]||(t[0]=c=>n.form.name=c),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.label"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.label,"onUpdate:modelValue":t[1]||(t[1]=c=>n.form.label=c),onInput:s.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"])],64)):(m(),g(F,{key:1},[i(d,{label:e.$t("plugin.name"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.name,"onUpdate:modelValue":t[2]||(t[2]=c=>n.form.name=c),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),i(d,{label:e.$t("plugin.label"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.label,"onUpdate:modelValue":t[3]||(t[3]=c=>n.form.label=c),onInput:s.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"])],64)),i(d,{label:e.$t("service.settings.version"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.version,"onUpdate:modelValue":t[4]||(t[4]=c=>n.form.version=c),onInput:s.saveConfig},null,8,["modelValue","onInput"]),i(b,{content:"如1.0.0.0,其中最后一个版本号不触发升级提醒!"})]),_:1},8,["label"]),s.isPlugin?(m(),y(d,{key:2,label:"最低兼容的服务版本号",prop:"minServiceVersion"},{default:a(()=>[i(u,{modelValue:n.form.minServiceVersion,"onUpdate:modelValue":t[5]||(t[5]=c=>n.form.minServiceVersion=c),onInput:s.saveConfig},null,8,["modelValue","onInput"])]),_:1})):$("",!0),i(d,{label:e.$t("service.settings.compiler"),prop:"compiler",required:""},{default:a(()=>[i(k,{modelValue:n.form.compiler,"onUpdate:modelValue":t[6]||(t[6]=c=>n.form.compiler=c),onChange:s.saveConfig},null,8,["modelValue","onChange"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.supportedDatabases"),prop:"supportedDatabases"},{default:a(()=>[i(R,{modelValue:n.form.supportedDatabases,"onUpdate:modelValue":t[7]||(t[7]=c=>n.form.supportedDatabases=c),onChange:s.saveConfig},null,8,["modelValue","onChange"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.repository"),prop:"repository"},{default:a(()=>[o("div",jt,[i(u,{class:"repository-input",modelValue:n.form.repository,"onUpdate:modelValue":t[8]||(t[8]=c=>n.form.repository=c),onInput:s.saveConfig},null,8,["modelValue","onInput"]),xt,i(u,{class:"branch-input",modelValue:n.form.branch,"onUpdate:modelValue":t[9]||(t[9]=c=>n.form.branch=c),placeholder:e.$t("gitClone.branch"),onInput:s.handleBranchInput},null,8,["modelValue","placeholder","onInput"]),i(h,{type:"primary",disabled:n.isWorking.clone||!s.clonable,loading:n.isWorking.clone,onClick:s.clone},{default:a(()=>[V(f(e.$t("gitClone.clone")),1)]),_:1},8,["disabled","loading","onClick"])])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.introduce"),prop:"introduce",required:""},{default:a(()=>[i(u,{type:"textarea",rows:5,modelValue:n.form.introduce,"onUpdate:modelValue":t[10]||(t[10]=c=>n.form.introduce=c),onInput:s.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.otherSettings"),class:"item-other-settings"},{default:a(()=>[o("div",null,[i(S,{modelValue:n.form.private,"onUpdate:modelValue":t[11]||(t[11]=c=>n.form.private=c),label:"私有",onChange:s.saveConfig},null,8,["modelValue","onChange"])])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.translator.translator"),prop:"translator"},{default:a(()=>[i(T,{data:n.form.translator,onSave:s.saveConfig},null,8,["data","onSave"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.installBuilds"),prop:"builds"},{default:a(()=>[i(N,{builds:n.form.builds,"service-config":l.serviceConfig,onSave:s.saveConfig},null,8,["builds","service-config","onSave"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.uninstallBuilds"),prop:"unbuilds"},{default:a(()=>[i(N,{builds:n.form.unbuilds,"with-unbuild":!0,"service-config":l.serviceConfig,onSave:s.saveConfig},null,8,["builds","service-config","onSave"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.codespace"),prop:"codespace"},{default:a(()=>[n.newCodespace.changing?(m(),y(v,{key:1,title:e.$t("service.settings.selectNewCodespace"),modelValue:n.newCodespace.value,"onUpdate:modelValue":t[12]||(t[12]=c=>n.newCodespace.value=c),onChange:s.fetchConfig},null,8,["title","modelValue","onChange"])):(m(),g("div",At,[o("p",null,f(n.form.codespace),1),i(h,{type:"primary",onClick:s.changeCodespace},{default:a(()=>[V(f(e.$t("service.settings.changeCodespace")),1)]),_:1},8,["onClick"])]))]),_:1},8,["label"])]),_:1},8,["model"]),n.newCodespace.changing?(m(),g("div",Mt,[i(h,{onClick:t[13]||(t[13]=c=>n.newCodespace.changing=!1)},{default:a(()=>[V(f(e.$t("common.cancel")),1)]),_:1}),i(h,{type:"primary",onClick:s.initialize},{default:a(()=>[V(f(e.$t("service.settings.reinitialize")),1)]),_:1},8,["onClick"])])):$("",!0)])])}const Ol=I(Dt,[["render",Bt],["__scopeId","data-v-7639046f"]]),Pt={name:"PublishWindow",components:{FormItemTip:X},data(){return{visible:!1,isWorking:!1,space:null,service:null,plugin:null,form:{version:"",publishDescription:""}}},computed:{isPlugin(){return this.plugin!=null},unique(){return this.isPlugin?{space:this.space,service:this.service,plugin:this.plugin}:{space:this.space,service:this.service}},fetchConfigApi(){return this.isPlugin?O:j},saveConfigApi(){return this.isPlugin?ie:te}},methods:{open(e,t,l){this.space=e,this.service=t,this.plugin=l,this.visible=!0,this.fetchConfig()},getRules(){return{version:[{required:!0,message:this.$t("form.isRequired",{value:this.$t("service.versionNumber")})},{validator:ne,message:this.$t("form.isIncorrect",{field:this.$t("service.versionNumber")})}],publishDescription:[{required:!0,message:this.$t("form.isRequired",{value:this.$t("service.versionDescription")})}]}},fetchConfig(){this.fetchConfigApi(this.unique).then(e=>{this.form.version=e.version}).catch(e=>{this.$tip.apiFailed(e)})},saveConfig(){this.saveConfigApi({...this.unique,version:this.form.version}).catch(e=>{this.$tip.apiFailed(e)})},publish(){this.$refs.form.validate().then(()=>{this.isWorking||(this.isWorking=!0,ge({...this.unique,publishDescription:this.form.publishDescription}).then(()=>{this.visible=!1,this.$message.success("发布成功")}).catch(e=>{this.$tip.apiFailed(e)}).finally(()=>{this.isWorking=!1}))})}}},Wt={class:"dialog-footer"};function Gt(e,t,l,p,n,s){const u=r("el-input"),d=r("FormItemTip"),b=r("el-form-item"),k=r("el-form"),R=r("el-button"),h=r("el-dialog"),S=Z("loading");return m(),y(h,{modelValue:n.visible,"onUpdate:modelValue":t[3]||(t[3]=T=>n.visible=T),class:"publish-window",title:e.$t("service.settings.publishVersion"),width:"500px",draggable:"","close-on-press-escape":!1,"close-on-click-modal":!1},{footer:a(()=>[o("span",Wt,[i(R,{disabled:n.isWorking,onClick:t[2]||(t[2]=T=>n.visible=!1)},{default:a(()=>[V(f(e.$t("common.cancel")),1)]),_:1},8,["disabled"]),i(R,{type:"primary",disabled:n.isWorking,onClick:s.publish},{default:a(()=>[V(f(e.$t("service.settings.publish")),1)]),_:1},8,["disabled","onClick"])])]),default:a(()=>[W((m(),y(k,{ref:"form",model:n.form,rules:s.getRules()},{default:a(()=>[i(b,{label:e.$t("service.versionNumber"),prop:"version",required:""},{default:a(()=>[i(u,{modelValue:n.form.version,"onUpdate:modelValue":t[0]||(t[0]=T=>n.form.version=T),onInput:s.saveConfig},{prefix:a(()=>[V("v")]),_:1},8,["modelValue","onInput"]),i(d,{content:"如1.0.0.0,其中最后一个版本号不触发升级提醒!"})]),_:1},8,["label"]),i(b,{label:e.$t("service.versionDescription"),prop:"publishDescription",required:""},{default:a(()=>[i(u,{type:"textarea",rows:5,modelValue:n.form.publishDescription,"onUpdate:modelValue":t[1]||(t[1]=T=>n.form.publishDescription=T)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[S,n.isWorking]])]),_:1},8,["modelValue","title"])}const jl=I(Pt,[["render",Gt]]);const Lt={name:"OptionSettingWindow",components:{OptionValueInput:ye},data(){return{visible:!1,option:null}},methods:{open(e){this.option=e,this.visible=!0},add(){this.option.settings.push({label:"",name:"",inputType:"input",required:!0,defaultValue:""})},deleteSetting(e){this.option.settings.splice(e,1),this.emitChange()},emitChange(){this.$emit("change")}}},Jt={class:"toolbar"};function Qt(e,t,l,p,n,s){const u=r("el-button"),d=r("el-input"),b=r("el-table-column"),k=r("el-option"),R=r("el-select"),h=r("el-switch"),S=r("OptionValueInput"),T=r("el-table"),N=r("el-dialog");return m(),y(N,{modelValue:n.visible,"onUpdate:modelValue":t[0]||(t[0]=v=>n.visible=v),title:e.$t("service.settings.variable.optionSettings"),"append-to-body":"",class:"option-setting-window"},{default:a(()=>[o("div",Jt,[i(u,{icon:"Plus",type:"primary",onClick:s.add},{default:a(()=>[V(f(e.$t("common.add")),1)]),_:1},8,["onClick"])]),i(T,{data:n.option.settings},{default:a(()=>[i(b,{prop:"label",label:e.$t("service.settings.variable.label")},{default:a(({row:v})=>[i(d,{modelValue:v.label,"onUpdate:modelValue":C=>v.label=C,onInput:s.emitChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),i(b,{prop:"name",label:e.$t("service.settings.variable.name")},{default:a(({row:v})=>[i(d,{modelValue:v.name,"onUpdate:modelValue":C=>v.name=C,onInput:s.emitChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),i(b,{prop:"inputType",label:e.$t("service.settings.variable.inputType")},{default:a(({row:v})=>[i(R,{modelValue:v.inputType,"onUpdate:modelValue":C=>v.inputType=C,onChange:s.emitChange},{default:a(()=>[i(k,{value:"input",label:"Input"}),i(k,{value:"number_input",label:"Number Input"}),i(k,{value:"textarea",label:"Textarea"})]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]),_:1},8,["label"]),i(b,{prop:"required",label:e.$t("service.settings.variable.required")},{default:a(({row:v})=>[i(h,{modelValue:v.required,"onUpdate:modelValue":C=>v.required=C},null,8,["modelValue","onUpdate:modelValue"])]),_:1},8,["label"]),i(b,{prop:"defaultValue",label:e.$t("service.settings.variable.defaultValue")},{default:a(({row:v})=>[i(S,{"option-setting":v,modelValue:v.defaultValue,"onUpdate:modelValue":C=>v.defaultValue=C,onInput:s.emitChange},null,8,["option-setting","modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),i(b,{width:"60px"},{default:a(({row:v,$index:C})=>[i(u,{icon:"Delete",onClick:c=>s.deleteSetting(C)},null,8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:1},8,["modelValue","title"])}const Yt=I(Lt,[["render",Qt]]),Ht={name:"VariableSettingForm",components:{OptionSettingWindow:Yt,SortableButton:Y,VariableInput:J,CompilerSelect:D,InputTypeSelect:x},props:{variable:{required:!0},rootVariable:{required:!0},variableGroup:{default:!1}},computed:{withGroup(){return this.variableGroup!=null}},watch:{"variable.defaultValue":function(){this.handleFieldVariableValues(),this.handleChange()},"variable.name":function(){this.handleFieldVariableValues(),this.handleChange()}},methods:{handleChange(){this.$emit("change")},handleDefaultValueChange(){this.handleFieldVariableValues(),this.$emit("change")},handleFieldVariableValues(){if(this.rootVariable!==this.variable&&(this.rootVariable.inputType==="query_model"||this.rootVariable.inputType==="table")){for(const e of this.rootVariable.children)if(e.defaultValue!=null)for(const t of e.defaultValue){t[this.variable.name]=this.variable.defaultValue;for(const l in t){if(l==="origin")continue;e.children.find(n=>n.name===l)==null&&!t.origin.hasOwnProperty(l)&&delete t[l]}}}},createOption(){this.variable.options.push({value:"",label:"",remark:"",settings:[]})},deleteOption(e){this.variable.options.splice(e,1)},handleInputTypeChange(){let e=this.variable.defaultValue;if(e!=null&&e.value!=null&&(e=e.value),e instanceof Array&&(e=e[0]),typeof e=="number"&&(e=e+""),this.variable.inputType==="number_input"){let t=Number(parseInt(e));isNaN(t)&&(t=0),this.variable.defaultValue=t}else if(this.variable.inputType==="select"){const t=this.variable.options.find(l=>l.value===e);this.variable.defaultValue={value:t==null?null:e,settings:t==null?[]:t.settings}}else this.variable.inputType==="checkbox"?this.variable.defaultValue=[]:this.variable.inputType==="radio"?this.variable.defaultValue="":this.variable.inputType==="datasource"||this.variable.inputType==="table"||this.variable.inputType==="query_model"?this.variable.defaultValue=null:this.variable.defaultValue=e;this.handleChange()},handleOptionSorted(e){this.variable.options=[],this.$nextTick(()=>{this.variable.options=e,this.handleChange()})}}},Kt=o("label",null,"值选项列表",-1),Xt={class:"opera"};function Zt(e,t,l,p,n,s){const u=r("el-input"),d=r("el-form-item"),b=r("InputTypeSelect"),k=r("el-button"),R=r("SortableButton"),h=r("el-table-column"),S=r("el-table"),T=r("OptionSettingWindow"),N=r("VariableInput"),v=r("el-switch"),C=r("CompilerSelect"),c=r("el-form"),A=Z("sortable");return m(),y(c,{model:l.variable},{default:a(()=>[i(d,{label:"变量提示",required:""},{default:a(()=>[i(u,{modelValue:l.variable.label,"onUpdate:modelValue":t[0]||(t[0]=_=>l.variable.label=_),onInput:s.handleChange},null,8,["modelValue","onInput"])]),_:1}),i(d,{label:"变量名",required:""},{default:a(()=>[i(u,{modelValue:l.variable.name,"onUpdate:modelValue":t[1]||(t[1]=_=>l.variable.name=_),onInput:s.handleChange},null,8,["modelValue","onInput"])]),_:1}),i(d,{label:"输入类型",required:""},{default:a(()=>[i(b,{modelValue:l.variable.inputType,"onUpdate:modelValue":t[2]||(t[2]=_=>l.variable.inputType=_),"with-group":s.withGroup,onChange:s.handleInputTypeChange},null,8,["modelValue","with-group","onChange"])]),_:1}),l.variable.inputType==="select"||l.variable.inputType==="checkbox"||l.variable.inputType==="radio"?(m(),y(d,{key:0,class:"item-options",required:""},{label:a(()=>[o("div",null,[Kt,o("div",Xt,[i(k,{size:"default",type:"primary",onClick:s.createOption},{default:a(()=>[V("添加")]),_:1},8,["onClick"])])])]),default:a(()=>[W((m(),y(S,{data:l.variable.options},{default:a(()=>[i(h,{width:"25px"},{default:a(()=>[i(R)]),_:1}),i(h,{label:"*名称","min-width":"200px"},{default:a(({row:_})=>[i(u,{modelValue:_.label,"onUpdate:modelValue":z=>_.label=z,type:"textarea",rows:1,onInput:s.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1}),i(h,{label:"*"+e.$t("service.settings.variable.optionValue"),"min-width":"120px"},{default:a(({row:_})=>[i(u,{modelValue:_.value,"onUpdate:modelValue":z=>_.value=z,onInput:s.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),i(h,{label:e.$t("common.remark"),"min-width":"150px"},{default:a(({row:_})=>[i(u,{modelValue:_.remark,"onUpdate:modelValue":z=>_.remark=z,type:"textarea",rows:1,onInput:s.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),l.variable.options.length>0?(m(),y(h,{key:0,"min-width":l.variable.inputType==="select"?"120px":"60px",fixed:"right"},{default:a(({row:_,$index:z})=>[l.variable.inputType==="select"?(m(),y(k,{key:0,icon:"Setting",class:"button-icon",onClick:ae=>e.$refs.optionSettingWindow.open(_)},null,8,["onClick"])):$("",!0),i(k,{icon:"Delete",class:"button-icon",onClick:ae=>s.deleteOption(z)},null,8,["onClick"])]),_:1},8,["min-width"])):$("",!0)]),_:1},8,["data"])),[[A,{data:l.variable.options,onChange:s.handleOptionSorted},"config"]]),i(T,{ref:"optionSettingWindow",onChange:s.handleChange},null,8,["onChange"])]),_:1})):$("",!0),i(d,{label:"默认值"},{default:a(()=>[i(N,{variable:l.variable,"value-key":"defaultValue",onChange:s.handleDefaultValueChange},null,8,["variable","onChange"])]),_:1}),i(d,{label:e.$t("service.settings.variable.required")},{default:a(()=>[i(v,{modelValue:l.variable.required,"onUpdate:modelValue":t[3]||(t[3]=_=>l.variable.required=_),onChange:s.handleChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.variable.hidden")},{default:a(()=>[i(v,{modelValue:l.variable.hidden,"onUpdate:modelValue":t[4]||(t[4]=_=>l.variable.hidden=_),onChange:s.handleChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),l.variable.inputType!=="number_input"&&l.variable.inputType!=="table"&&l.variable.inputType!=="query_model"&&l.variable.inputType!=="datasource"&&l.rootVariable.inputType!=="query_model"&&l.rootVariable.inputType!=="table"?(m(),y(d,{key:1,label:"编译器"},{default:a(()=>[i(C,{modelValue:l.variable.compiler,"onUpdate:modelValue":t[5]||(t[5]=_=>l.variable.compiler=_),onChange:s.handleChange},null,8,["modelValue","onChange"])]),_:1})):$("",!0),i(d,{label:e.$t("common.remark")},{default:a(()=>[i(u,{modelValue:l.variable.remark,"onUpdate:modelValue":t[6]||(t[6]=_=>l.variable.remark=_),type:"textarea",rows:3,onInput:s.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"])]),_:1},8,["model"])}const el=I(Ht,[["render",Zt]]),tl={name:"VariableGroupSettingForm",components:{VariableInput:J,CompilerSelect:D,InputTypeSelect:x},props:{variable:{required:!0}},methods:{changeScope(){if(this.variable.type==="group")for(const e of this.variable.children)e.scope=this.variable.scope;this.handleChange()},handleChange(){this.$emit("change")}}};function ll(e,t,l,p,n,s){const u=r("el-input"),d=r("el-form-item"),b=r("el-form");return m(),y(b,{model:l.variable},{default:a(()=>[i(d,{label:e.$t("service.settings.variable.groupLabel"),required:""},{default:a(()=>[i(u,{modelValue:l.variable.label,"onUpdate:modelValue":t[0]||(t[0]=k=>l.variable.label=k),onInput:s.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"]),i(d,{label:e.$t("service.settings.variable.groupName"),required:""},{default:a(()=>[i(u,{modelValue:l.variable.name,"onUpdate:modelValue":t[1]||(t[1]=k=>l.variable.name=k),onInput:s.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"])]),_:1},8,["model"])}const il=I(tl,[["render",ll]]);const nl={name:"Variables",components:{VariableGroupSettingForm:il,VariableSettingForm:el,VariableInput:J,I18nInput:me,InputTypeSelect:x,CompilerSelect:D},props:{space:{required:!0},service:{required:!0},plugin:{required:!1}},data(){return{isWorking:{save:!1},timeout:{save:null},varIndex:1,groupIndex:1,currentVariable:null,currentGroup:null,currentRootVariable:null,variables:[],dragData:{target:null}}},computed:{isPlugin(){return this.plugin!=null},unique(){return this.isPlugin?{space:this.space,service:this.service,plugin:this.plugin}:{space:this.space,service:this.service}},saveVariablesApi(){return this.isPlugin?ve:fe},fetchConfigApi(){return this.isPlugin?j:O}},methods:{selectVariable(e,t){this.currentVariable=null,this.$nextTick(()=>{this.currentVariable=e,this.currentGroup=null,this.currentRootVariable=null,t.level>2?(this.currentRootVariable=t.parent.parent.data,this.currentGroup=t.parent.data):t.level>1?(this.currentRootVariable=t.parent.data,this.currentGroup=t.parent.data):this.currentRootVariable=t.data})},createChild(e){if(e.type==="group"){this.createVariable(e);return}if(e.inputType==="query_model"){this.createGroup(e,[]);return}e.inputType==="table"&&this.createGroup(e,[])},createVariable(e){const t=this.__generateVariableName(e==null?this.variables:e.children),l={id:Q(),type:"variable",name:t,label:t,inputType:"input",required:!1,hidden:!1,defaultValue:"",compiler:"static",remark:"",options:[]};e!=null?e.children.push(l):this.variables.push(l),this.saveVariables()},createGroup(e,t){const l=this.__generateGroupName(),p={id:Q(),type:"group",name:l,label:l,children:[],defaultValue:t};e==null?this.variables.push(p):(e.children==null&&(e.children=[]),e.children.push(p)),this.currentVariable=p,this.saveVariables()},saveVariables(){this.timeout.save!=null&&clearTimeout(this.timeout.save),this.timeout.save=setTimeout(()=>{this.saveVariablesApi({...this.unique,variables:this.getVariables()}).then(()=>{}).catch(e=>{this.$tip.apiFailed(e)}).finally(()=>{this.timeout.save=null})},300)},fetchVariables(){this.fetchConfigApi({...this.unique}).then(e=>{this.variables=e.variables.map(t=>this.__getInitVariable(t))}).catch(e=>{this.$tip.apiFailed(e)})},getVariables(){return this.variables.filter(t=>t.name.trim().length>0&&t.label.trim().length>0).map(t=>this.__getSaveVariable(t))},deleteVariable(){const e=this.currentVariable.type==="variable"?"变量":"变量组";this.deleteConfirm(`确认删除 ${e} 「${this.currentVariable.label}」?删除后无法恢复!`).then(()=>{if(this.currentRootVariable!==this.currentVariable&&(this.currentRootVariable.inputType==="query_model"||this.currentRootVariable.inputType==="table")&&this.currentGroup!=null){const l=this.currentGroup.children.findIndex(p=>p.id===this.currentVariable.id);if(l===-1)return;this.currentGroup.children.splice(l,1);for(const p of this.currentRootVariable.children)for(const n of p.defaultValue)for(const s in n){if(s==="origin")continue;p.children.find(d=>d.name===s)==null&&!n.origin.hasOwnProperty(s)&&delete n[s]}this.currentVariable=null,this.saveVariables();return}if(this.currentGroup!=null){const l=this.currentGroup.children.findIndex(p=>p.id===this.currentVariable.id);if(l===-1)return;this.currentGroup.children.splice(l,1),this.currentVariable=null,this.saveVariables();return}const t=this.variables.findIndex(l=>l.id===this.currentVariable.id);t!==-1&&(this.variables.splice(t,1),this.currentVariable=null,this.saveVariables())}).catch(t=>{if(t!=="cancel")throw new Error(t)})},handleDragStart(e){this.dragData.target=e.data},handleDrop(){this.saveVariables()},allowDrag(){return!0},allowDrop(e,t,l){return e.data.type==="variable"?!(t.data.type==="variable"&&l==="inner"):e.data.type==="group"?t.data.type!=="variable":!1},__getValidOptions(e){return e.filter(t=>t.value.trim().length>0&&t.label.trim().length>0)},__getInitVariable(e){const t=JSON.parse(JSON.stringify(e));return t.type==="group"?(t.children=t.children==null?[]:t.children.map(l=>(l.options=l.options==null?[]:l.options,this.__getInitVariable(l))),t):(t.options=t.options==null?[]:t.options,t.options.forEach(l=>{l.settings=l.settings==null?[]:l.settings}),t.inputType==="select"&&(JSON.stringify(t.defaultValue.settings)==="{}"||t.options.forEach(l=>{l.settings=l.settings.map(p=>({...p,value:t.defaultValue.settings[p.name]}))})),t)},__getSaveVariable(e){const t=JSON.parse(JSON.stringify(e));return t.type==="group"?(t.children=t.children.map(l=>this.__getSaveVariable(l)),t):t.inputType==="number_input"?(t.defaultValue=parseInt(t.defaultValue),t):t.inputType==="query_model"||t.inputType==="table"?(t.children!=null&&t.children.length>0&&(t.children=t.children.map(l=>(l.children=l.children.map(p=>({...this.__getSaveVariable(p),origin:void 0,table:void 0})),l))),delete t.options,t):t.inputType==="select"?(t.options=this.__getValidOptions(t.options),t.options.forEach(l=>{l.settings=l.settings.filter(p=>p.name.trim()!==""&&p.label.trim()!=="")}),t.options.forEach(l=>{l.settings.forEach(p=>{delete p.value})}),t):t.inputType==="radio"||t.inputType==="checkbox"?(t.options=this.__getValidOptions(t.options),t.options.forEach(l=>{delete l.settings}),t):(delete t.options,t)},__generateVariableName(e){let t;for(;;)if(t=`var${this.varIndex}`,this.varIndex++,e.findIndex(l=>l.type==="variable"&&l.name===t)===-1)return t},__generateGroupName(){let e;for(;;)if(e=`group${this.groupIndex}`,this.groupIndex++,this.variables.findIndex(t=>t.type==="group"&&t.name===e)===-1)return e}},created(){this.fetchVariables()}},al={class:"tree"},sl={class:"variables-wrap"},ol={class:"tools"},rl={class:"title"},ul={key:0,class:"opera"},dl={class:"variable-setting"},ml={class:"title"},cl={class:"content-wrap"},pl={key:1,class:"variable-holder"};function hl(e,t,l,p,n,s){const u=r("el-button"),d=r("el-tree"),b=r("VariableSettingForm"),k=r("VariableGroupSettingForm");return m(),g("div",al,[o("div",sl,[o("div",ol,[i(u,{icon:"Plus",type:"primary",onClick:t[0]||(t[0]=R=>s.createVariable())},{default:a(()=>[V(f(e.$t("service.settings.variable.addVariable")),1)]),_:1}),i(u,{icon:"Plus",type:"primary",onClick:t[1]||(t[1]=R=>s.createGroup(null,"service"))},{default:a(()=>[V(f(e.$t("service.settings.variable.addGroup")),1)]),_:1})]),i(d,{ref:"tree",class:"variables","expand-on-click-node":!1,"default-expand-all":!0,"highlight-current":!0,data:n.variables,"node-key":"name",onNodeClick:s.selectVariable,draggable:"","allow-drop":s.allowDrop,"allow-drag":s.allowDrag,"empty-text":e.$t("service.settings.variable.noVariables"),onNodeDragStart:s.handleDragStart,onNodeDrop:s.handleDrop},{default:a(({node:R,data:h})=>[o("div",rl,[o("span",null,f(h.label),1),h.type==="group"||h.inputType==="query_model"||h.inputType==="table"?(m(),g("div",ul,[i(u,{class:"button-icon",icon:"Plus",size:"small",onClick:E(S=>s.createChild(h),["stop"])},null,8,["onClick"])])):$("",!0)])]),_:1},8,["data","onNodeClick","allow-drop","allow-drag","empty-text","onNodeDragStart","onNodeDrop"])]),o("div",dl,[o("div",ml,[o("h4",null,f(e.$t("service.settings.variable.variableSetting")),1),n.currentVariable!=null?(m(),y(u,{key:0,size:"default",type:"danger",link:"",onClick:s.deleteVariable},{default:a(()=>[V("删除变量")]),_:1},8,["onClick"])):$("",!0)]),o("div",cl,[n.currentVariable!=null?(m(),g(F,{key:0},[n.currentVariable.type==="variable"?(m(),y(b,{key:0,variable:n.currentVariable,"variable-group":n.currentGroup,"root-variable":n.currentRootVariable,onChange:s.saveVariables},null,8,["variable","variable-group","root-variable","onChange"])):$("",!0),n.currentVariable.type==="group"?(m(),y(k,{key:1,variable:n.currentVariable,onChange:s.saveVariables},null,8,["variable","onChange"])):$("",!0)],64)):(m(),g("div",pl,[o("h5",null,f(e.$t("service.settings.variable.variableHolderTitle")),1),o("p",null,f(e.$t("service.settings.variable.variableHolderTip")),1)]))])])])}const xl=I(nl,[["render",hl],["__scopeId","data-v-f42859db"]]);const fl={name:"SystemVariableTable",data(){return{variableData:{date:[{name:"_yyyy",enRemark:"",zhRemark:"年(固定4位)",demo:"${_yyyy} => 1993"},{name:"_MM",enRemark:"",zhRemark:"月(固定2位)",demo:"${_MM} => 08"},{name:"_dd",enRemark:"",zhRemark:"日前(固定2位)",demo:"${_dd} => 13"},{name:"_hh",enRemark:"",zhRemark:"时(固定2位)",demo:"${_hh} => 00"},{name:"_mm",enRemark:"",zhRemark:"分(固定2位)",demo:"${_mm} => 00"},{name:"_ss",enRemark:"",zhRemark:"秒(固定2位)",demo:"${_ss} => 00"},{name:"_sss",enRemark:"",zhRemark:"毫秒(固定3位)",demo:"${_sss} => 000"}],mysqlTable:[{name:"name",enRemark:"",zhRemark:"原始表名",demo:"${myTable.name} => MY_TABLE"},{name:"camelCaseName",enRemark:"",zhRemark:"表名(驼峰命名法)",demo:"${myTable.camelCaseName} => myTable"},{name:"kebabCaseName",enRemark:"",zhRemark:"表名(中划线命名法)",demo:"${myTable.kebabCaseName} => my-table"},{name:"pascalCaseName",enRemark:"",zhRemark:"表名(帕斯卡命名法)",demo:"${myTable.pascalCaseName} => MyTable"},{name:"underScoreCaseName",enRemark:"",zhRemark:"表名(下划线命名法)",demo:"${myTable.underScoreCaseName} => my_table"},{name:"alias",enRemark:"",zhRemark:"表别名,默认与表名一致",demo:"${myTable.alias} => MY_ALIAS"},{name:"camelCaseAlias",enRemark:"",zhRemark:"表别名(驼峰命名法)",demo:"${myTable.camelCaseAlias} => myAlias"},{name:"kebabCaseAlias",enRemark:"",zhRemark:"表别名(中划线命名法)",demo:"${myTable.kebabCaseAlias} => my-alias"},{name:"pascalCaseAlias",enRemark:"",zhRemark:"表别名(帕斯卡命名法)",demo:"${myTable.pascalCaseAlias} => MyAlias"},{name:"underScoreCaseAlias",enRemark:"",zhRemark:"表名(下划线命名法)",demo:"${myTable.underScoreCaseAlias} => my_alias"},{name:"comment",enRemark:"",zhRemark:"表注释",demo:"${myTable.comment}"},{name:"pk",enRemark:"",zhRemark:"表字段数组",type:"Array",demo:`<#if myTable.pk??>
\${myTable.pk.name}
</#list>`},{name:"fields",enRemark:"",zhRemark:"表字段数组",type:"Array",demo:`<#list myTable.fields as field>
\${field.name}
</#list>`},{name:"fields.name",enRemark:"",zhRemark:"字段原始名称",type:"String",demo:`<#list myTable.fields as field>
\${field.name}
</#list>`},{name:"fields.camelCaseName",enRemark:"",zhRemark:"字段名称(驼峰命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.camelCaseName}
</#list>`},{name:"fields.kebabCaseName",enRemark:"",zhRemark:"字段名称(中划线命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.kebabCaseName}
</#list>`},{name:"fields.pascalCaseName",enRemark:"",zhRemark:"字段名称(帕斯卡命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.pascalCaseName}
</#list>`},{name:"fields.underScoreCaseName",enRemark:"",zhRemark:"字段名称(下划线命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.underScoreCaseName}
</#list>`},{name:"fields.alias",enRemark:"",zhRemark:"字段别名",type:"String",demo:`<#list myTable.fields as field>
\${field.alias}
</#list>`},{name:"fields.camelCaseAlias",enRemark:"",zhRemark:"字段别名(驼峰命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.camelCaseAlias}
</#list>`},{name:"fields.kebabCaseAlias",enRemark:"",zhRemark:"字段别名(中划线命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.kebabCaseAlias}
</#list>`},{name:"fields.pascalCaseAlias",enRemark:"",zhRemark:"字段别名(帕斯卡命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.pascalCaseAlias}
</#list>`},{name:"fields.underScoreCaseAlias",enRemark:"",zhRemark:"字段别名(下划线命名法)",type:"String",demo:`<#list myTable.fields as field>
\${field.underScoreCaseAlias}
</#list>`},{name:"fields.type",enRemark:"",zhRemark:"数据库字段类型",type:"String",demo:`<#list myTable.fields as field>
\${field.type}
</#list>`},{name:"fields.length",enRemark:"",zhRemark:"数据库字段类型长度",type:"Integer",demo:`<#list myTable.fields as field>
\${field.length}
</#list>`},{name:"fields.decimal",enRemark:"",zhRemark:"数据库字段类型精度",type:"Integer",demo:`<#list myTable.fields as field>
\${field.decimal}
</#list>`},{name:"fields.defaultValue",enRemark:"",zhRemark:"字段默认值",type:"Any",demo:`<#list myTable.fields as field>
\${field.defaultValue}
</#list>`},{name:"fields.required",enRemark:"",zhRemark:"是否必填",type:"Boolean",demo:`<#list myTable.fields as field>
\${field.required}
</#list>`},{name:"fields.isPrimaryKey",enRemark:"",zhRemark:"是否为主键",type:"Boolean",demo:`<#list myTable.fields as field>
\${field.isPrimaryKey}
</#list>`},{name:"fields.isAutoIncrement",enRemark:"",zhRemark:"是否为自增长",type:"Boolean",demo:`<#list myTable.fields as field>
\${field.isAutoIncrement}
</#list>`},{name:"fields.comment",enRemark:"",zhRemark:"字段注释",type:"Boolean",demo:`<#list myTable.fields as field>
\${field.comment}
</#list>`}],mysqlQueryModel:[{name:"name",enRemark:"",zhRemark:"模型原始名称",demo:"${myModel.name}"},{name:"camelCaseName",enRemark:"",zhRemark:"模型名称(驼峰命名法)",demo:"${myModel.camelCaseName}"},{name:"kebabCaseName",enRemark:"",zhRemark:"模型名称(中划线命名)",demo:"${myModel.kebabCaseName}"},{name:"pascalCaseName",enRemark:"",zhRemark:"模型名称(帕斯卡命名)",demo:"${myModel.pascalCaseName}"},{name:"underScoreCaseName",enRemark:"",zhRemark:"模型名称(下划线命名)",demo:"${myModel.underScoreCaseName}"},{name:"comment",enRemark:"",zhRemark:"模型注释",demo:"${myModel.comment}"},{name:"mainTable",enRemark:"",zhRemark:"主表,包含了MySQL表的所有信息",demo:"${myModel.mainTable.name} => 主表名称\n${myModel.mainTable.camelCaseName} => 主表名称(驼峰命名法)"},{name:"mainTable.pk",enRemark:"",zhRemark:"主表主键字段信息",demo:`<#if myModel.mainTable.pk??>
  \${myModel.mainTable.pk.name}
</#if>`},{name:"mainTable.alias",enRemark:"",zhRemark:"主表别名",demo:"${myModel.mainTable.alias}"},{name:"subTables",enRemark:"",zhRemark:"子表,包含了MySQL表的所有信息",type:"Array",demo:`<#list myModel.subTables as subTable>
\${subTable.name}
</#list>`},{name:"subTables.pk",enRemark:"",zhRemark:"子表主键字段信息",type:"Array",demo:`<#list myModel.subTables as subTable>
<#if subTable.pk??>
  \${subTable.pk.name}
</#if>
</#list>`},{name:"subTables.alias",enRemark:"",zhRemark:"子表别名",type:"Array",demo:`<#list myModel.subTables as subTable>
\${subTable.alias}
</#list>`},{name:"statement",enRemark:"",zhRemark:"各个部分的SQL语句",demo:""},{name:"statement.joins",enRemark:"",zhRemark:"查询模型的join语句",demo:"<#list myModel.statement.joins as joinLine>\n${joinLine}\n</#list>\n => INNER JOIN USER `user` ON `user`.`id` = `test.`field`\nINNER JOIN USER `user` ON `test`.`field` = `test2.`field2`"},{name:"statement.from",enRemark:"",zhRemark:"查询模型的from语句",demo:"${myModel.statement.from}\n => FROM USER `user`"},{name:"statement.字段变量组",enRemark:"",zhRemark:"查询模型的字段变量组选中的字段语句",demo:`例如为模型添加了"查询条件"字段变量组"queryFields",则可以使用
<#list myModel.statement.queryFields as statement>
  \${statement}
</#list>
来读取字段语句`},{name:"joins",enRemark:"",zhRemark:"关联信息",demo:`<#list myModel.joins as join>
\${join.joinType}
</#list>`},{name:"joins.joinType",enRemark:"",zhRemark:"JOIN类型",demo:`<#list myModel.joins as join>
\${join.joinType}
</#list>`},{name:"joins.ons",enRemark:"",zhRemark:"JOIN ON条件",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.field.alias} => 字段别名
  </#list>
</#list>`},{name:"joins.ons.table",enRemark:"",zhRemark:"关联表",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.table.name}
  </#list>
</#list>`},{name:"joins.ons.targetTable",enRemark:"",zhRemark:"被关联表",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.targetTable.name}
  </#list>
</#list>`},{name:"joins.ons.field",enRemark:"",zhRemark:"关联字段",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.field.name}
  </#list>
</#list>`},{name:"joins.ons.targetField",enRemark:"",zhRemark:"被关联字段",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.targetField.name}
  </#list>
</#list>`},{name:"joins.ons.relation",enRemark:"",zhRemark:"ON关系,AND或者OR",demo:`<#list myModel.joins as join>
  <#list join.ons as on>
    \${on.relation}
  </#list>
</#list>`}],select:[{name:"mySelect",enRemark:"",zhRemark:"选项值",type:"Any",demo:"${mySelect}"},{name:"mySelectSetting",enRemark:"",zhRemark:"select深度设置内容",type:"Object",demo:"${mySelectSetting.myField}"}]}}}},q=e=>(G("data-v-4b8b88b3"),e=e(),L(),e),bl={class:"variable-block"},_l=q(()=>o("h3",null,"日期相关",-1)),vl={class:"variable-block"},gl=q(()=>o("h3",null,"MySQL表相关",-1)),yl=q(()=>o("p",null,"定义变量且输入类型为Table,则可以通过变量名访问以下信息!",-1)),Vl={class:"variable-block"},kl=q(()=>o("h3",null,"MySQL查询模型相关",-1)),Cl=q(()=>o("p",null,"定义变量且输入类型为Query Model,则可以通过变量名访问以下信息!",-1)),Sl={class:"variable-block"},Tl=q(()=>o("h3",null,"Select输入类型的深度设置",-1)),Rl=q(()=>o("p",null,'定义变量且输入类型为Select,则可以通过变量名添加"Settings"后缀来获取深度设置对象!',-1));function Il(e,t,l,p,n,s){const u=r("el-table-column"),d=r("el-table");return m(),g(F,null,[o("div",bl,[_l,i(d,{data:n.variableData.date},{default:a(()=>[i(u,{label:"变量名",width:"200px",prop:"name"}),i(u,{label:"变量备注",width:"300px",prop:"zhRemark"}),i(u,{label:"示例",prop:"demo"},{default:a(({row:b})=>[o("pre",null,f(b.demo),1)]),_:1})]),_:1},8,["data"])]),o("div",vl,[gl,yl,i(d,{data:n.variableData.mysqlTable},{default:a(()=>[i(u,{label:"变量名",width:"235px",prop:"name"}),i(u,{label:"变量备注",width:"300px",prop:"zhRemark"}),i(u,{label:"示例",prop:"demo"},{default:a(({row:b})=>[o("pre",null,f(b.demo),1)]),_:1})]),_:1},8,["data"])]),o("div",Vl,[kl,Cl,i(d,{data:n.variableData.mysqlQueryModel},{default:a(()=>[i(u,{label:"变量名",width:"235px",prop:"name"}),i(u,{label:"变量备注",width:"300px",prop:"zhRemark"}),i(u,{label:"示例",prop:"demo"},{default:a(({row:b})=>[o("pre",null,f(b.demo),1)]),_:1})]),_:1},8,["data"])]),o("div",Sl,[Tl,Rl,i(d,{data:n.variableData.select},{default:a(()=>[i(u,{label:"变量名",width:"235px",prop:"name"}),i(u,{label:"变量备注",width:"300px",prop:"zhRemark"}),i(u,{label:"示例",prop:"demo"},{default:a(({row:b})=>[o("pre",null,f(b.demo),1)]),_:1})]),_:1},8,["data"])])],64)}const Al=I(fl,[["render",Il],["__scopeId","data-v-4b8b88b3"]]);export{Ol as B,El as I,jl as P,Al as S,xl as V,Ul as a};