goldpankit
Version:
GoldPanKit是一款极速研发套件,可在套件中快速构建各类技术框架和项目。开源作者可发布自己的项目,并为其设定金额,实现开源项目的盈利。
1 lines • 60.4 kB
JavaScript
import{C as U}from"./CompilerSelect-1e988064.js";import{_ as $,r as o,o as m,h as k,w as n,b as a,c as V,F as N,j as w,a3 as J,N as Q,a as r,J as B,t as h,a4 as K,T as E,e as S,a5 as oe,a6 as x,g as D,E as Y,k as F,p as P,l as W,Q as H,A as X,B as Z,$ as re,a7 as G}from"./index-3a85fcea.js";import{g as ue,h as de,i as ee,e as O,j as me,c as te,k as ce}from"./service-5dbad4df.js";import{c as pe,d as he,i as le,b as M,s as ae,e as fe}from"./plugin-21df9511.js";import{c as ne}from"./QueryModelView-090ecbd6.js";import{p as be}from"./service.version-e8d6f0a2.js";import{O as _e,a as L}from"./ServiceCodeErrorWindow-063cf82d.js";const ve={name:"InputTypeSelect",props:{withGroup:{default:!1}}};function ge(e,t,l,f,s,i){const u=o("el-option"),d=o("el-select");return m(),k(d,{class:"input-type-select"},{default:n(()=>[a(u,{value:"input",label:"Input"}),a(u,{value:"number_input",label:"Number Input"}),a(u,{value:"textarea",label:"Textarea"}),a(u,{value:"select",label:"Select"}),a(u,{value:"checkbox",label:"Checkbox"}),a(u,{value:"radio",label:"Radio"}),a(u,{value:"switch",label:"Switch"}),l.withGroup?w("",!0):(m(),V(N,{key:0},[a(u,{value:"datasource",label:"Data Source"}),a(u,{value:"table",label:"Table"}),a(u,{value:"query_model",label:"Query Model"})],64))]),_:1})}const j=$(ve,[["render",ge],["__scopeId","data-v-72eb8421"]]);const ye={name:"SettingFiles",components:{SortableButton:J,CompilerSelect:U,InputTypeSelect:j},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?pe:ue},saveFileSettingApi(){return this.isPlugin?he:de}},methods:{fetchFiles(){this.fetchFilesApi(this.unique).then(e=>{this.files=e.map(t=>(t.withoutIfNotExists=t.withoutIfNotExists==null?!1:t.withoutIfNotExists,t)),Q(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()}},Ve={class:"tree"},ke={class:"files-wrap"},Ce={class:"search-wrap"},Se={class:"node-label"},Te={class:"file-setting"},Re={class:"content-wrap"},Ie={key:1,class:"setting-holder"},$e={class:"holder-wrap"};function we(e,t,l,f,s,i){const u=o("el-input"),d=o("Document"),p=o("el-icon"),C=o("Folder"),I=o("el-tree"),b=o("CompilerSelect"),T=o("el-form-item"),R=o("el-switch"),v=o("el-form");return m(),V("div",Ve,[r("div",ke,[r("div",Ce,[a(u,{placeholder:e.$t("service.settings.file.filterKeyword")},null,8,["placeholder"])]),a(I,{data:s.files,"highlight-current":!0,"empty-text":e.$t("service.settings.file.noFiles"),onNodeClick:i.handleNodeClick},{default:n(({node:g,data:_})=>[r("span",Se,[_.type==="FILE"?(m(),k(p,{key:0},{default:n(()=>[a(d)]),_:1})):_.type==="DIRECTORY"?(m(),k(p,{key:1},{default:n(()=>[a(C)]),_:1})):w("",!0),r("span",{class:B(["filename",{"flag-file":i.isFlagFile(_)}])},h(_.label),3)])]),_:1},8,["data","empty-text","onNodeClick"])]),r("div",Te,[r("h4",null,h(e.$t("service.settings.file.fileSetting")),1),r("div",Re,[s.currentNode!=null?(m(),k(v,{key:0},{default:n(()=>[a(T,{label:e.$t("service.settings.file.compiler")},{default:n(()=>[a(b,{modelValue:s.currentNode.compiler,"onUpdate:modelValue":t[0]||(t[0]=g=>s.currentNode.compiler=g),"with-follow-service":!0,onChange:i.saveFileSetting},null,8,["modelValue","onChange"])]),_:1},8,["label"]),a(T,{label:"只有文件在项目中存在时才生效"},{default:n(()=>[a(R,{modelValue:s.currentNode.withoutIfNotExists,"onUpdate:modelValue":t[1]||(t[1]=g=>s.currentNode.withoutIfNotExists=g),onChange:i.saveFileSetting},null,8,["modelValue","onChange"])]),_:1}),a(T,{label:e.$t("service.settings.file.enableExpress")},{default:n(()=>[a(u,{modelValue:s.currentNode.enableExpress,"onUpdate:modelValue":t[2]||(t[2]=g=>s.currentNode.enableExpress=g),type:"textarea",rows:8,placeholder:e.$t("service.settings.file.enableExpressHolder"),onInput:i.saveFileSetting},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label"])]),_:1})):(m(),V("div",Ie,[r("div",$e,[r("h5",null,h(e.$t("service.settings.file.fileSetting")),1),r("p",null,h(e.$t("service.settings.file.fileSettingHolder")),1)])]))])])])}const wl=$(ye,[["render",we],["__scopeId","data-v-7b11a224"]]);const Ne={name:"InitializeView",components:{DatabaseTypeSelect:K,CompilerSelect:U,DirectorySelect:E},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=M({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)})}}},Fe={class:"initialize-wrap"},ze={class:"tip"},qe={class:"directory-select-wrap"},Ue={class:"opera-bottom"};function De(e,t,l,f,s,i){const u=o("DirectorySelect"),d=o("el-button");return m(),V("div",Fe,[r("div",ze,[r("h3",null,h(e.$t("service.settings.initialize.initializeService")),1),r("p",null,h(e.$t("service.settings.initialize.initializeServiceTip")),1)]),r("div",qe,[a(u,{modelValue:s.form.codespace,"onUpdate:modelValue":t[0]||(t[0]=p=>s.form.codespace=p),title:e.$t("service.settings.initialize.selectServiceCodespace"),height:"235px",onChange:i.fetchConfig},null,8,["modelValue","title","onChange"])]),r("div",Ue,[a(d,{type:"primary",onClick:i.initialize},{default:n(()=>[S(h(e.$t("service.settings.initialize.initializeService")),1)]),_:1},8,["onClick"])])])}const Nl=$(Ne,[["render",De],["__scopeId","data-v-315f5e85"]]);const Oe={name:"BuildCommandTypeSelect"};function Me(e,t,l,f,s,i){const u=o("el-option"),d=o("el-select");return m(),k(d,{class:"build-command-type-select"},{default:n(()=>[a(u,{value:"Node",label:"Node"}),a(u,{value:"MySQL",label:"MySQL"})]),_:1})}const je=$(Oe,[["render",Me],["__scopeId","data-v-3b21c3bd"]]);const Ae={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){oe(this.__getAbsolutePath(e)).then(l=>{this.files=l,Q(this.files),t&&t()}).catch(l=>{this.$tip.apiFailed(l)})},__getProjectName(){return x.split(this.serviceConfig.codespace).pop()},__getAbsolutePath(e){e==null&&(e=JSON.parse(JSON.stringify(this.paths))),e.shift();let t=x.join([this.serviceConfig.codespace,...e]);return this.serviceConfig.translator.settings.length>0&&(t=x.join([this.serviceConfig.codespace,this.serviceConfig.translator.output,...e])),t}}},xe=["id"],Be={class:"paths"},Ee=["onClick"],Pe={class:"files"},We=["onClick"],Le={class:"opera"};function Ge(e,t,l,f,s,i){const u=o("el-button"),d=o("Folder"),p=o("Document"),C=o("el-icon"),I=o("el-dialog");return m(),k(I,{modelValue:s.visible,"onUpdate:modelValue":t[0]||(t[0]=b=>s.visible=b),"show-close":!1,class:"service-file-select-window","append-to-body":""},{header:n(({close:b,titleId:T,titleClass:R})=>[r("h4",{id:T,class:B(R)},h(l.title),11,xe),a(u,{class:"button-icon",icon:"Refresh",onClick:i.__fetchFiles},null,8,["onClick"])]),default:n(()=>[r("ul",Be,[(m(!0),V(N,null,D(s.paths,(b,T)=>(m(),V("li",{key:b,onClick:R=>i.changePath(T)},h(b),9,Ee))),128))]),r("div",Pe,[r("ul",null,[(m(!0),V(N,null,D(s.files,b=>(m(),V("li",{key:b.path,class:B({"is-file":b.type==="FILE",selected:s.selectedFilepath===b.path}),onClick:T=>i.openOrSelectFile(b)},[a(C,null,{default:n(()=>[b.type==="DIRECTORY"?(m(),k(d,{key:0})):(m(),k(p,{key:1}))]),_:2},1024),r("p",null,h(b.path),1)],10,We))),128))])]),r("div",Le,[a(u,{onClick:i.cancelSelect},{default:n(()=>[S("Cancel")]),_:1},8,["onClick"]),a(u,{type:"primary",disabled:s.selectedFilepath==null,onClick:i.confirmSelect},{default:n(()=>[S("Confirm Select")]),_:1},8,["disabled","onClick"])])]),_:1},8,["modelValue"])}const Je=$(Ae,[["render",Ge]]);const Qe={name:"BuildList",components:{ServiceFileSelectWindow:Je,DirectorySelect:E,Empty:Y,BuildCommandTypeSelect:je},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(f=>f===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})}}},Ke={class:"service-build-list"},Ye={class:"toolbar"},He={key:0},Xe={key:1},Ze={class:"title-wrap"},et={key:0,class:"view"},tt={class:"name"},lt={class:"type"},at={key:1,class:"edit"},nt={class:"opera"},it=["onClick"],st={key:0,class:"holder"},ot={key:1};function rt(e,t,l,f,s,i){const u=o("el-button"),d=o("el-input"),p=o("el-form-item"),C=o("BuildCommandTypeSelect"),I=o("el-form"),b=o("el-tab-pane"),T=o("el-tabs"),R=o("el-collapse-item"),v=o("el-collapse"),g=o("Empty"),_=o("ServiceFileSelectWindow");return m(),V("div",Ke,[r("div",Ye,[l.withUnbuild?(m(),V("p",He,h(e.$t("service.settings.build.unBuildTip")),1)):(m(),V("p",Xe,h(e.$t("service.settings.build.buildTip")),1)),a(u,{type:"primary",onClick:i.create},{default:n(()=>[S(h(e.$t("common.create")),1)]),_:1},8,["onClick"])]),l.builds.length>0?(m(),k(v,{key:0,modelValue:s.actives,"onUpdate:modelValue":t[2]||(t[2]=c=>s.actives=c),onChange:i.handleChange},{default:n(()=>[(m(!0),V(N,null,D(l.builds,(c,A)=>(m(),k(R,{key:c.id,name:c.id},{title:n(()=>[r("div",Ze,[c.__readonly?(m(),V("div",et,[r("p",tt,h(c.name),1),r("p",lt,h(c.type),1)])):(m(),V("div",at,[a(I,{model:c},{default:n(()=>[a(p,{label:e.$t("common.name"),required:""},{default:n(()=>[a(d,{class:"name",modelValue:c.name,"onUpdate:modelValue":y=>c.name=y,onClick:t[0]||(t[0]=F(()=>{},["stop"])),onKeypress:t[1]||(t[1]=F(()=>{},["stop"])),onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1032,["label"]),a(p,{label:e.$t("common.type"),required:""},{default:n(()=>[a(C,{class:"type",modelValue:c.type,"onUpdate:modelValue":y=>c.type=y,onChange:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},1032,["label"])]),_:2},1032,["model"])])),r("div",nt,[a(u,{icon:"Delete",onClick:F(y=>i.deleteBuild(A),["stop"])},{default:n(()=>[S(h(e.$t("common.delete")),1)]),_:2},1032,["onClick"])])])]),default:n(()=>[a(T,{modelValue:c.contentType,"onUpdate:modelValue":y=>c.contentType=y},{default:n(()=>[a(b,{name:"string",label:e.$t("service.settings.build.input")},{default:n(()=>[a(d,{modelValue:c.content,"onUpdate:modelValue":y=>c.content=y,type:"textarea",placeholder:e.$t("service.settings.build.buildCommand"),rows:5,onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"])]),_:2},1032,["label"]),a(b,{name:"file",label:e.$t("service.settings.build.file")},{default:n(()=>[r("div",{class:"select-holder",onClick:y=>i.openSelectFileWindow(c)},[c.__filepath==null||c.__filepath===""?(m(),V("p",st,h(e.$t("common.clickToSelectFile")),1)):(m(),V("p",ot,h(c.__filepath),1))],8,it)]),_:2},1032,["label"])]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue","onChange"])):(m(),k(g,{key:1})),a(_,{ref:"serviceFileSelectWindow","service-config":l.serviceConfig,onChange:i.handleFileChange},null,8,["service-config","onChange"])])}const ut=$(Qe,[["render",rt],["__scopeId","data-v-a44c5960"]]);const dt={name:"TranslatorTypeSelect"};function mt(e,t,l,f,s,i){const u=o("el-option"),d=o("el-select");return m(),k(d,{class:"translator-type-select"},{default:n(()=>[a(u,{value:"pattern",label:e.$t("service.settings.translator.pattern")},null,8,["label"]),a(u,{value:"code",label:e.$t("service.settings.translator.code")},null,8,["label"])]),_:1})}const ct=$(dt,[["render",mt],["__scopeId","data-v-f6d00470"]]);const pt={name:"TranslatorList",components:{TranslatorTypeSelect:ct,Empty:Y},props:{space:{required:!0},service:{required:!0},plugin:{required:!0},translator:{required:!0}},data(){return{actives:[],varIndex:1}},computed:{translators(){return this.translator.settings}},watch:{translators:{immediate:!0,handler(){this.translators.forEach(e=>{e.id=""+Math.random(),e.__readonly=!0})}}},methods:{add(){const e=""+Math.random();this.translator.settings.push({id:e,name:this.__generateTranslatorName(),type:"pattern",path:".*",source:"",target:"",code:" return {filepath: filepath, content: content};",__readonly:!1}),this.actives.push(e)},deleteTranslator(e){this.translator.settings.splice(e,1),this.handleSave()},handleChange(e){for(const t of this.translators){const l=e.find(f=>f===t.id)!=null;t.__readonly=!l}},handleSave(){this.$emit("save")},__generateTranslatorName(){let e;for(;;)if(e=`translator${this.varIndex}`,this.varIndex++,this.translators.findIndex(t=>t.name===e)===-1)return e}}},ie=e=>(P("data-v-6ba15df0"),e=e(),W(),e),ht={class:"translator-setting"},ft={class:"toolbar"},bt={class:"opera"},_t={class:"title-wrap"},vt={key:0,class:"view"},gt={class:"name"},yt={class:"path"},Vt={class:"type"},kt={key:1,class:"edit"},Ct={class:"opera"},St=ie(()=>r("p",{class:"code"},[r("em",{class:"keyword"},"function"),S(),r("em",null,"translate"),S(" ("),r("em",null,"filepath"),S(", "),r("em",null,"content"),S(", "),r("em",null,"fileSetting"),S(") {")],-1)),Tt=ie(()=>r("p",null,"}",-1));function Rt(e,t,l,f,s,i){const u=o("el-button"),d=o("el-input"),p=o("el-form-item"),C=o("TranslatorTypeSelect"),I=o("el-form"),b=o("el-collapse-item"),T=o("el-collapse"),R=o("Empty");return m(),V("div",ht,[r("div",ft,[r("p",null,h(e.$t("service.settings.translator.translatorTip")),1),r("div",bt,[a(u,{type:"primary",onClick:i.add},{default:n(()=>[S(h(e.$t("common.add")),1)]),_:1},8,["onClick"])])]),i.translators.length>0?(m(),k(T,{key:0,modelValue:s.actives,"onUpdate:modelValue":t[4]||(t[4]=v=>s.actives=v),onChange:i.handleChange},{default:n(()=>[(m(!0),V(N,null,D(i.translators,(v,g)=>(m(),k(b,{key:v.id,name:v.id},{title:n(()=>[r("div",_t,[v.__readonly?(m(),V("div",vt,[r("p",gt,h(v.name),1),r("p",yt,h(v.path),1),r("p",Vt,h(v.type),1)])):(m(),V("div",kt,[a(I,{model:v},{default:n(()=>[a(p,{label:e.$t("common.name"),required:""},{default:n(()=>[a(d,{class:"name",modelValue:v.name,"onUpdate:modelValue":_=>v.name=_,onClick:t[0]||(t[0]=F(()=>{},["stop"])),onKeypress:t[1]||(t[1]=F(()=>{},["stop"])),onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1032,["label"]),a(p,{label:e.$t("service.settings.translator.path"),required:""},{default:n(()=>[a(d,{class:"path",modelValue:v.path,"onUpdate:modelValue":_=>v.path=_,onClick:t[2]||(t[2]=F(()=>{},["stop"])),onKeypress:t[3]||(t[3]=F(()=>{},["stop"])),onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1032,["label"]),a(p,{label:e.$t("service.settings.translator.type"),required:""},{default:n(()=>[a(C,{class:"type",modelValue:v.type,"onUpdate:modelValue":_=>v.type=_,onChange:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},1032,["label"])]),_:2},1032,["model"])])),r("div",Ct,[a(u,{icon:"Delete",onClick:F(_=>i.deleteTranslator(g),["stop"])},{default:n(()=>[S("Delete")]),_:2},1032,["onClick"])])])]),default:n(()=>[v.type==="pattern"?(m(),k(I,{key:0},{default:n(()=>[a(p,{label:"Source",required:""},{default:n(()=>[a(d,{modelValue:v.source,"onUpdate:modelValue":_=>v.source=_,type:"textarea",rows:1,onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1024),a(p,{label:"Target",required:""},{default:n(()=>[a(d,{modelValue:v.target,"onUpdate:modelValue":_=>v.target=_,type:"textarea",rows:1,onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:2},1024)]),_:2},1024)):v.type==="code"?(m(),V(N,{key:1},[St,a(d,{modelValue:v.code,"onUpdate:modelValue":_=>v.code=_,type:"textarea",rows:5,onInput:i.handleSave},null,8,["modelValue","onUpdate:modelValue","onInput"]),Tt],64)):w("",!0)]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue","onChange"])):(m(),k(R,{key:1}))])}const It=$(pt,[["render",Rt],["__scopeId","data-v-6ba15df0"]]);const $t={name:"BasicSetting",components:{FormItemTip:H,TranslatorList:It,BuildList:ut,DirectorySelect:E,DatabaseTypeSelect:K,CompilerSelect:U},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.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,me({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=M({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=ae,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,translator:{...this.form.translator,settings:this.form.translator.settings.filter(l=>l.type==="code"&&l.code.trim().length>0||l.type==="pattern"&&l.source.trim()!==""&&l.target.trim()!=="").map(l=>({name:l.name,path:l.path.trim().length===0?".*":l.path,type:l.type,source:l.type==="pattern"?l.source:"",target:l.type==="pattern"?l.target:"",code:l.type==="code"?l.code:""}))},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()}},wt=e=>(P("data-v-4cbe7ace"),e=e(),W(),e),Nt={class:"basic-setting"},Ft={class:"wrap"},zt={class:"repository-input-wrap"},qt=wt(()=>r("span",null,"/",-1)),Ut={key:0,class:"codespace-wrap"},Dt={key:0,class:"opera-wrap"};function Ot(e,t,l,f,s,i){const u=o("el-input"),d=o("el-form-item"),p=o("FormItemTip"),C=o("CompilerSelect"),I=o("DatabaseTypeSelect"),b=o("el-button"),T=o("el-checkbox"),R=o("TranslatorList"),v=o("BuildList"),g=o("DirectorySelect"),_=o("el-form");return m(),V("div",Nt,[r("div",Ft,[a(_,{model:s.form},{default:n(()=>[l.plugin==null?(m(),V(N,{key:0},[a(d,{label:e.$t("service.settings.name"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.name,"onUpdate:modelValue":t[0]||(t[0]=c=>s.form.name=c),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.label"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.label,"onUpdate:modelValue":t[1]||(t[1]=c=>s.form.label=c),onInput:i.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"])],64)):(m(),V(N,{key:1},[a(d,{label:e.$t("plugin.name"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.name,"onUpdate:modelValue":t[2]||(t[2]=c=>s.form.name=c),disabled:""},null,8,["modelValue"])]),_:1},8,["label"]),a(d,{label:e.$t("plugin.label"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.label,"onUpdate:modelValue":t[3]||(t[3]=c=>s.form.label=c),onInput:i.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"])],64)),a(d,{label:e.$t("service.settings.version"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.version,"onUpdate:modelValue":t[4]||(t[4]=c=>s.form.version=c),onInput:i.saveConfig},null,8,["modelValue","onInput"]),a(p,{content:"如1.0.0.0,其中最后一个版本号不触发升级提醒!"})]),_:1},8,["label"]),i.isPlugin?(m(),k(d,{key:2,label:"最低兼容的服务版本号",prop:"minServiceVersion"},{default:n(()=>[a(u,{modelValue:s.form.minServiceVersion,"onUpdate:modelValue":t[5]||(t[5]=c=>s.form.minServiceVersion=c),onInput:i.saveConfig},null,8,["modelValue","onInput"])]),_:1})):w("",!0),a(d,{label:e.$t("service.settings.compiler"),prop:"compiler",required:""},{default:n(()=>[a(C,{modelValue:s.form.compiler,"onUpdate:modelValue":t[6]||(t[6]=c=>s.form.compiler=c),onChange:i.saveConfig},null,8,["modelValue","onChange"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.supportedDatabases"),prop:"supportedDatabases"},{default:n(()=>[a(I,{modelValue:s.form.supportedDatabases,"onUpdate:modelValue":t[7]||(t[7]=c=>s.form.supportedDatabases=c),onChange:i.saveConfig},null,8,["modelValue","onChange"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.repository"),prop:"repository"},{default:n(()=>[r("div",zt,[a(u,{class:"repository-input",modelValue:s.form.repository,"onUpdate:modelValue":t[8]||(t[8]=c=>s.form.repository=c),onInput:i.saveConfig},null,8,["modelValue","onInput"]),qt,a(u,{class:"branch-input",modelValue:s.form.branch,"onUpdate:modelValue":t[9]||(t[9]=c=>s.form.branch=c),placeholder:e.$t("gitClone.branch"),onInput:i.handleBranchInput},null,8,["modelValue","placeholder","onInput"]),a(b,{type:"primary",disabled:s.isWorking.clone||!i.clonable,loading:s.isWorking.clone,onClick:i.clone},{default:n(()=>[S(h(e.$t("gitClone.clone")),1)]),_:1},8,["disabled","loading","onClick"])])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.introduce"),prop:"introduce",required:""},{default:n(()=>[a(u,{type:"textarea",rows:5,modelValue:s.form.introduce,"onUpdate:modelValue":t[10]||(t[10]=c=>s.form.introduce=c),onInput:i.saveConfig},null,8,["modelValue","onInput"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.otherSettings"),class:"item-other-settings"},{default:n(()=>[r("div",null,[a(T,{modelValue:s.form.private,"onUpdate:modelValue":t[11]||(t[11]=c=>s.form.private=c),label:"私有",onChange:i.saveConfig},null,8,["modelValue","onChange"])])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.translator.translator"),prop:"translator"},{default:n(()=>[a(R,{space:l.space,service:l.service,plugin:l.plugin,translator:s.form.translator,onSave:i.saveConfig},null,8,["space","service","plugin","translator","onSave"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.installBuilds"),prop:"builds"},{default:n(()=>[a(v,{builds:s.form.builds,"service-config":l.serviceConfig,onSave:i.saveConfig},null,8,["builds","service-config","onSave"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.uninstallBuilds"),prop:"unbuilds"},{default:n(()=>[a(v,{builds:s.form.unbuilds,"with-unbuild":!0,"service-config":l.serviceConfig,onSave:i.saveConfig},null,8,["builds","service-config","onSave"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.codespace"),prop:"codespace"},{default:n(()=>[s.newCodespace.changing?(m(),k(g,{key:1,title:e.$t("service.settings.selectNewCodespace"),modelValue:s.newCodespace.value,"onUpdate:modelValue":t[12]||(t[12]=c=>s.newCodespace.value=c),onChange:i.fetchConfig},null,8,["title","modelValue","onChange"])):(m(),V("div",Ut,[r("p",null,h(s.form.codespace),1),a(b,{type:"primary",onClick:i.changeCodespace},{default:n(()=>[S(h(e.$t("service.settings.changeCodespace")),1)]),_:1},8,["onClick"])]))]),_:1},8,["label"])]),_:1},8,["model"]),s.newCodespace.changing?(m(),V("div",Dt,[a(b,{onClick:t[13]||(t[13]=c=>s.newCodespace.changing=!1)},{default:n(()=>[S(h(e.$t("common.cancel")),1)]),_:1}),a(b,{type:"primary",onClick:i.initialize},{default:n(()=>[S(h(e.$t("service.settings.reinitialize")),1)]),_:1},8,["onClick"])])):w("",!0)])])}const Fl=$($t,[["render",Ot],["__scopeId","data-v-4cbe7ace"]]),Mt={name:"PublishWindow",components:{FormItemTip:H},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:M},saveConfigApi(){return this.isPlugin?ae: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,be({...this.unique,publishDescription:this.form.publishDescription}).then(()=>{this.visible=!1,this.$message.success("发布成功")}).catch(e=>{this.$tip.apiFailed(e)}).finally(()=>{this.isWorking=!1}))})}}},jt={class:"dialog-footer"};function At(e,t,l,f,s,i){const u=o("el-input"),d=o("FormItemTip"),p=o("el-form-item"),C=o("el-form"),I=o("el-button"),b=o("el-dialog"),T=X("loading");return m(),k(b,{modelValue:s.visible,"onUpdate:modelValue":t[3]||(t[3]=R=>s.visible=R),class:"publish-window",title:e.$t("service.settings.publishVersion"),width:"500px",draggable:"","close-on-press-escape":!1,"close-on-click-modal":!1},{footer:n(()=>[r("span",jt,[a(I,{disabled:s.isWorking,onClick:t[2]||(t[2]=R=>s.visible=!1)},{default:n(()=>[S(h(e.$t("common.cancel")),1)]),_:1},8,["disabled"]),a(I,{type:"primary",disabled:s.isWorking,onClick:i.publish},{default:n(()=>[S(h(e.$t("service.settings.publish")),1)]),_:1},8,["disabled","onClick"])])]),default:n(()=>[Z((m(),k(C,{ref:"form",model:s.form,rules:i.getRules()},{default:n(()=>[a(p,{label:e.$t("service.versionNumber"),prop:"version",required:""},{default:n(()=>[a(u,{modelValue:s.form.version,"onUpdate:modelValue":t[0]||(t[0]=R=>s.form.version=R),onInput:i.saveConfig},{prefix:n(()=>[S("v")]),_:1},8,["modelValue","onInput"]),a(d,{content:"如1.0.0.0,其中最后一个版本号不触发升级提醒!"})]),_:1},8,["label"]),a(p,{label:e.$t("service.versionDescription"),prop:"publishDescription",required:""},{default:n(()=>[a(u,{type:"textarea",rows:5,modelValue:s.form.publishDescription,"onUpdate:modelValue":t[1]||(t[1]=R=>s.form.publishDescription=R)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[T,s.isWorking]])]),_:1},8,["modelValue","title"])}const zl=$(Mt,[["render",At]]);const xt={name:"OptionSettingWindow",components:{OptionValueInput:_e},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")}}},Bt={class:"toolbar"};function Et(e,t,l,f,s,i){const u=o("el-button"),d=o("el-input"),p=o("el-table-column"),C=o("el-option"),I=o("el-select"),b=o("el-switch"),T=o("OptionValueInput"),R=o("el-table"),v=o("el-dialog");return m(),k(v,{modelValue:s.visible,"onUpdate:modelValue":t[0]||(t[0]=g=>s.visible=g),title:e.$t("service.settings.variable.optionSettings"),"append-to-body":"",class:"option-setting-window"},{default:n(()=>[r("div",Bt,[a(u,{icon:"Plus",type:"primary",onClick:i.add},{default:n(()=>[S(h(e.$t("common.add")),1)]),_:1},8,["onClick"])]),a(R,{data:s.option.settings},{default:n(()=>[a(p,{prop:"label",label:e.$t("service.settings.variable.label")},{default:n(({row:g})=>[a(d,{modelValue:g.label,"onUpdate:modelValue":_=>g.label=_,onInput:i.emitChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),a(p,{prop:"name",label:e.$t("service.settings.variable.name")},{default:n(({row:g})=>[a(d,{modelValue:g.name,"onUpdate:modelValue":_=>g.name=_,onInput:i.emitChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),a(p,{prop:"inputType",label:e.$t("service.settings.variable.inputType")},{default:n(({row:g})=>[a(I,{modelValue:g.inputType,"onUpdate:modelValue":_=>g.inputType=_,onChange:i.emitChange},{default:n(()=>[a(C,{value:"input",label:"Input"}),a(C,{value:"number_input",label:"Number Input"}),a(C,{value:"textarea",label:"Textarea"})]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]),_:1},8,["label"]),a(p,{prop:"required",label:e.$t("service.settings.variable.required")},{default:n(({row:g})=>[a(b,{modelValue:g.required,"onUpdate:modelValue":_=>g.required=_},null,8,["modelValue","onUpdate:modelValue"])]),_:1},8,["label"]),a(p,{prop:"defaultValue",label:e.$t("service.settings.variable.defaultValue")},{default:n(({row:g})=>[a(T,{"option-setting":g,modelValue:g.defaultValue,"onUpdate:modelValue":_=>g.defaultValue=_,onInput:i.emitChange},null,8,["option-setting","modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),a(p,{width:"60px"},{default:n(({row:g,$index:_})=>[a(u,{icon:"Delete",onClick:c=>i.deleteSetting(_)},null,8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:1},8,["modelValue","title"])}const Pt=$(xt,[["render",Et]]),Wt={name:"VariableSettingForm",components:{OptionSettingWindow:Pt,SortableButton:J,VariableInput:L,CompilerSelect:U,InputTypeSelect:j},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(s=>s.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()})}}},Lt=r("label",null,"值选项列表",-1),Gt={class:"opera"};function Jt(e,t,l,f,s,i){const u=o("el-input"),d=o("el-form-item"),p=o("InputTypeSelect"),C=o("el-button"),I=o("SortableButton"),b=o("el-table-column"),T=o("el-table"),R=o("OptionSettingWindow"),v=o("VariableInput"),g=o("el-switch"),_=o("CompilerSelect"),c=o("el-form"),A=X("sortable");return m(),k(c,{model:l.variable},{default:n(()=>[a(d,{label:"变量提示",required:""},{default:n(()=>[a(u,{modelValue:l.variable.label,"onUpdate:modelValue":t[0]||(t[0]=y=>l.variable.label=y),onInput:i.handleChange},null,8,["modelValue","onInput"])]),_:1}),a(d,{label:"变量名",required:""},{default:n(()=>[a(u,{modelValue:l.variable.name,"onUpdate:modelValue":t[1]||(t[1]=y=>l.variable.name=y),onInput:i.handleChange},null,8,["modelValue","onInput"])]),_:1}),a(d,{label:"输入类型",required:""},{default:n(()=>[a(p,{modelValue:l.variable.inputType,"onUpdate:modelValue":t[2]||(t[2]=y=>l.variable.inputType=y),"with-group":i.withGroup,onChange:i.handleInputTypeChange},null,8,["modelValue","with-group","onChange"])]),_:1}),l.variable.inputType==="select"||l.variable.inputType==="checkbox"||l.variable.inputType==="radio"?(m(),k(d,{key:0,class:"item-options",required:""},{label:n(()=>[r("div",null,[Lt,r("div",Gt,[a(C,{size:"default",type:"primary",onClick:i.createOption},{default:n(()=>[S("添加")]),_:1},8,["onClick"])])])]),default:n(()=>[Z((m(),k(T,{data:l.variable.options},{default:n(()=>[a(b,{width:"25px"},{default:n(()=>[a(I)]),_:1}),a(b,{label:"*名称","min-width":"200px"},{default:n(({row:y})=>[a(u,{modelValue:y.label,"onUpdate:modelValue":z=>y.label=z,type:"textarea",rows:1,onInput:i.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1}),a(b,{label:"*"+e.$t("service.settings.variable.optionValue"),"min-width":"120px"},{default:n(({row:y})=>[a(u,{modelValue:y.value,"onUpdate:modelValue":z=>y.value=z,onInput:i.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),a(b,{label:e.$t("common.remark"),"min-width":"150px"},{default:n(({row:y})=>[a(u,{modelValue:y.remark,"onUpdate:modelValue":z=>y.remark=z,type:"textarea",rows:1,onInput:i.handleChange},null,8,["modelValue","onUpdate:modelValue","onInput"])]),_:1},8,["label"]),l.variable.options.length>0?(m(),k(b,{key:0,"min-width":l.variable.inputType==="select"?"120px":"60px",fixed:"right"},{default:n(({row:y,$index:z})=>[l.variable.inputType==="select"?(m(),k(C,{key:0,icon:"Setting",class:"button-icon",onClick:se=>e.$refs.optionSettingWindow.open(y)},null,8,["onClick"])):w("",!0),a(C,{icon:"Delete",class:"button-icon",onClick:se=>i.deleteOption(z)},null,8,["onClick"])]),_:1},8,["min-width"])):w("",!0)]),_:1},8,["data"])),[[A,{data:l.variable.options,onChange:i.handleOptionSorted},"config"]]),a(R,{ref:"optionSettingWindow",onChange:i.handleChange},null,8,["onChange"])]),_:1})):w("",!0),a(d,{label:"默认值"},{default:n(()=>[a(v,{variable:l.variable,"value-key":"defaultValue",onChange:i.handleDefaultValueChange},null,8,["variable","onChange"])]),_:1}),a(d,{label:e.$t("service.settings.variable.required")},{default:n(()=>[a(g,{modelValue:l.variable.required,"onUpdate:modelValue":t[3]||(t[3]=y=>l.variable.required=y),onChange:i.handleChange},null,8,["modelValue","onChange"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.variable.hidden")},{default:n(()=>[a(g,{modelValue:l.variable.hidden,"onUpdate:modelValue":t[4]||(t[4]=y=>l.variable.hidden=y),onChange:i.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(),k(d,{key:1,label:"编译器"},{default:n(()=>[a(_,{modelValue:l.variable.compiler,"onUpdate:modelValue":t[5]||(t[5]=y=>l.variable.compiler=y),onChange:i.handleChange},null,8,["modelValue","onChange"])]),_:1})):w("",!0),a(d,{label:e.$t("common.remark")},{default:n(()=>[a(u,{modelValue:l.variable.remark,"onUpdate:modelValue":t[6]||(t[6]=y=>l.variable.remark=y),type:"textarea",rows:3,onInput:i.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"])]),_:1},8,["model"])}const Qt=$(Wt,[["render",Jt]]),Kt={name:"VariableGroupSettingForm",components:{VariableInput:L,CompilerSelect:U,InputTypeSelect:j},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 Yt(e,t,l,f,s,i){const u=o("el-input"),d=o("el-form-item"),p=o("el-form");return m(),k(p,{model:l.variable},{default:n(()=>[a(d,{label:e.$t("service.settings.variable.groupLabel"),required:""},{default:n(()=>[a(u,{modelValue:l.variable.label,"onUpdate:modelValue":t[0]||(t[0]=C=>l.variable.label=C),onInput:i.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"]),a(d,{label:e.$t("service.settings.variable.groupName"),required:""},{default:n(()=>[a(u,{modelValue:l.variable.name,"onUpdate:modelValue":t[1]||(t[1]=C=>l.variable.name=C),onInput:i.handleChange},null,8,["modelValue","onInput"])]),_:1},8,["label"])]),_:1},8,["model"])}const Ht=$(Kt,[["render",Yt]]);const Xt={name:"Variables",components:{VariableGroupSettingForm:Ht,VariableSettingForm:Qt,VariableInput:L,I18nInput:re,InputTypeSelect:j,CompilerSelect:U},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?fe:ce},fetchConfigApi(){return this.isPlugin?M: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:G(),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(),f={id:G(),type:"group",name:l,label:l,children:[],defaultValue:t};e==null?this.variables.push(f):(e.children==null&&(e.children=[]),e.children.push(f)),this.currentVariable=f,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(f=>f.id===this.currentVariable.id);if(l===-1)return;this.currentGroup.children.splice(l,1);for(const f of this.currentRootVariable.children)for(const s of f.defaultValue)for(const i in s){if(i==="origin")continue;f.children.find(d=>d.name===i)==null&&!s.origin.hasOwnProperty(i)&&delete s[i]}this.currentVariable=null,this.saveVariables();return}if(this.currentGroup!=null){const l=this.currentGroup.children.findIndex(f=>f.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(f=>({...f,value:t.defaultValue.settings[f.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(f=>({...this.__getSaveVariable(f),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(f=>f.name.trim()!==""&&f.label.trim()!=="")}),t.options.forEach(l=>{l.settings.forEach(f=>{delete f.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()}},Zt={class:"tree"},el={class:"variables-wrap"},tl={class:"tools"},ll={class:"title"},al={key:0,class:"opera"},nl={class:"variable-setting"},il={class:"title"},sl={class:"content-wrap"},ol={key:1,class:"variable-holder"};function rl(e,t,l,f,s,i){const u=o("el-button"),d=o("el-tree"),p=o("VariableSettingForm"),C=o("VariableGroupSettingForm");return m(),V("div",Zt,[r("div",el,[r("div",tl,[a(u,{icon:"Plus",type:"primary",onClick:t[0]||(t[0]=I=>i.createVariable())},{default:n(()=>[S(h(e.$t("service.settings.variable.addVariable")),1)]),_:1}),a(u,{icon:"Plus",type:"primary",onClick:t[1]||(t[1]=I=>i.createGroup(null,"service"))},{default:n(()=>[S(h(e.$t("service.settings.variable.addGroup")),1)]),_:1})]),a(d,{ref:"tree",class:"variables","expand-on-click-node":!1,"default-expand-all":!0,"highlight-current":!0,data:s.variables,"node-key":"name",onNodeClick:i.selectVariable,draggable:"","allow-drop":i.allowDrop,"allow-drag":i.allowDrag,"empty-text":e.$t("service.settings.variable.noVariables"),onNodeDragStart:i.handleDragStart,onNodeDrop:i.handleDrop},{default:n(({node:I,data:b})=>[r("div",ll,[r("span",null,h(b.label),1),b.type==="group"||b.inputType==="query_model"||b.inputType==="table"?(m(),V("div",al,[a(u,{class:"button-icon",icon:"Plus",size:"small",onClick:F(T=>i.createChild(b),["stop"])},null,8,["onClick"])])):w("",!0)])]),_:1},8,["data","onNodeClick","allow-drop","allow-drag","empty-text","onNodeDragStart","onNodeDrop"])]),r("div",nl,[r("div",il,[r("h4",null,h(e.$t("service.settings.variable.variableSetting")),1),s.currentVariable!=null?(m(),k(u,{key:0,size:"default",type:"danger",link:"",onClick:i.deleteVariable},{default:n(()=>[S("删除变量")]),_:1},8,["onClick"])):w("",!0)]),r("div",sl,[s.currentVariable!=null?(m(),V(N,{key:0},[s.currentVariable.type==="variable"?(m(),k(p,{key:0,variable:s.currentVariable,"variable-group":s.currentGroup,"root-variable":s.currentRootVariable,onChange:i.saveVariables},null,8,["variable","variable-group","root-variable","onChange"])):w("",!0),s.currentVariable.type==="group"?(m(),k(C,{key:1,variable:s.currentVariable,onChange:i.saveVariables},null,8,["variable","onChange"])):w("",!0)],64)):(m(),V("div",ol,[r("h5",null,h(e.$t("service.settings.variable.variableHolderTitle")),1),r("p",null,h(e.$t("service.settings.variable.variableHolderTip")),1)]))])])])}const ql=$(Xt,[["render",rl],["__scopeId","data-v-f42859db"]]);const ul={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