var P=(t,a,c)=>new Promise((v,d)=>{var h=i=>{try{s(c.next(i))}catch(f){d(f)}},u=i=>{try{s(c.throw(i))}catch(f){d(f)}},s=i=>i.done?v(i.value):Promise.resolve(i.value).then(h,u);s((c=c.apply(t,a)).next())});import{bo as me,a_ as pe,s as ce,d as $,bn as de,d_ as I,au as ue,aH as fe,T as ge}from"./index-X7Y8jykP.js";import{B as be}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as ve}from"./useForm-D61zovon.js";import{B as _e}from"./index-BDvqZ5j4.js";import{J as R}from"./JVxeTypes-C-gX5UoZ.js";import{a as Ce}from"./useSchemas-BdPtDHjG.js";import Ne from"./CodeFileListModal-QC26EvT4.js";import ye from"./FileSelectModal-M-dowth6.js";import{a as Me,u as A}from"./useModal-DaJ3Bflg.js";import{e as Te,b as E,r as N,c as D,i as k,n as he,C as Se,z as B,f as m,A as l,K as T,F as we,y as H,H as U,E as K,Q as q,B as je}from"./vue-vendor-DNhG1Cve.js";import"./index-DfHu-LAS.js";import{e as Fe,R as Pe}from"./Group-DBzJABA_.js";import{C as Le}from"./index-BwqG9R3y.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./index-BzChaRPg.js";import"./useAppInject-DPZGPcR3.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-DO7ZhK45.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-CuWaQdlK.js";import"./FolderOpenOutlined-SzIPA7z0.js";import"./CodeFileViewModal-yJZr5i9q.js";import"./index-C69VKHba.js";/* empty css */import"./DirectoryTree-nk_YTTIy.js";import"./index-Cl-8Hzo4.js";import"./useMaxLevel-DE205ncc.js";import"./eagerComputed-BTlOruLW.js";import"./index-BuONesFs.js";import"./download-CygB1orH.js";import"./base64Conver-24EVOS6V.js";import"./RadioButton-DRBix2Fq.js";import"./Checkbox-Dbxs4we4.js";const Re=pe(),{notification:Ee}=ce(),ke=Te({name:"CodeGenerator",components:{BasicForm:be,BasicModal:_e,FileSelectModal:ye,CodeFileListModal:Ne},emits:["register"],setup(t){const a="JEECG_ONL_PROJECT_PATH",c="JEECG_ONL_PROJECT_NAME",v=N(!0),d=N(),h=D(()=>v.value?800:1200),u=N("代码生成"),s=N(!1),{prefixCls:i}=me("code-generator-modal"),f=i,y=N(""),S=E({projectPath:"",packageStyle:"service",jspMode:"",jformType:"1",tableName_tmp:"",ftlDescription:"",entityName:"",codeTypes:"controller,service,dao,mapper,entity,vue"}),o=E({}),M=N([]),_=E({dataSource:[],columns:[{title:"子表名",key:"tableName",type:R.input,disabled:!0,validateRules:[{required:!0,message:"请输入${title}"}]},{title:"子表实体",key:"entityName",type:R.input,validateRules:[{required:!0,message:"请输入${title}"}]},{title:"功能说明",key:"ftlDescription",type:R.input,validateRules:[{required:!0,message:"请输入${title}"}]}]}),w=D(()=>_.dataSource.length>0),{formSchemas:C}=Ce(t,{onProjectPathChange:le,onProjectPathSearch:oe,jspModeOptions:M},v),[j,{resetFields:L,setFieldsValue:J,validate:z}]=ve({schemas:C,showActionButtonGroup:!1,labelAlign:"right"}),[Q,{closeModal:O}]=Me(e=>P(null,null,function*(){yield L(),y.value=e.code,s.value=!1,_.dataSource=[],M.value=[],re(),Object.assign(o,S),W()}));function W(){return P(this,null,function*(){let{main:e,sub:r,jspModeList:g,projectPath:p}=yield $.get({url:"/online/cgform/head/tableInfo",params:{code:y.value}}),n=[];for(let b of g){const{code:G,note:ne}=b;G=="many"||n.push({label:ne,value:G})}M.value=n,e.isTree=="Y"?o.jspMode="tree":n.find(b=>b.value===e.themeTemplate)?o.jspMode=e.themeTemplate:o.jspMode=n[0].value,v.value=e.tableType==1,u.value="代码生成【"+e.tableName+"】",o.projectPath||(o.projectPath=p,window.localStorage.setItem(a,p));const F=localStorage.getItem(c);F&&(o.entityPackage=F),o.jformType=e.tableType+"",o.tableName_tmp=e.tableName,o.ftlDescription=e.tableTxt;let V=I(e.tableName);o.entityName=V.substring(0,1).toUpperCase()+V.substring(1),yield he(),J(o),r&&r.length>0&&(_.dataSource=r.map(b=>({tableName:b.tableName,entityName:ie(b.tableName),ftlDescription:b.tableTxt})))})}const[x,{openModal:Y}]=A();function X(){return P(this,null,function*(){try{const e=yield z();let r=Object.assign({},e,{code:y.value,tableName:e.tableName_tmp});if(w.value){if(yield d.value.validateTable())return;r.subList=d.value.getTableData()}s.value=!0;let g=yield Z(r);Y(!0,{codeList:g.codeList,pathKey:g.pathKey,tableName:e.tableName_tmp}),g.codeList.some(n=>n.includes("src/views/")||n.includes("src\\views\\"))?Re.set("code.genenrate.success.msg",`表【${e.tableName_tmp}】代码生成成功!前端代码已自动刷新,Java后台需重启生效!`,15):Ee.success({message:`表【${e.tableName_tmp}】代码生成成功`,description:k("div",["1. 前端代码请迁移到 VUE3项目",k("br"),"2. 菜单SQL放到jeecg-system-start的flyway目录",k("br"),"3. Java 后台需重启生效"]),duration:5}),O(),localStorage.setItem(c,e.entityPackage)}catch(e){}finally{s.value=!1}})}function Z(e){return new Promise((r,g)=>{$.post({url:"/online/cgform/api/codeGenerate",params:e},{isTransformResponse:!1}).then(p=>{if(p.success){let n=p.result,F=p.message;r({codeList:n,pathKey:F})}else de.error(p.message),g(p.message)})})}function ee(){O()}const[te,ae]=A();function oe(){ae.openModal(!0,{})}function se(e){window.localStorage.setItem(a,e),J({projectPath:e})}function ie(e){let r=I(e);return r.substring(0,1).toUpperCase()+r.substring(1)}function re(){let e=window.localStorage.getItem(a);e&&(S.projectPath=e)}function le(e){e.target.value&&window.localStorage.setItem(a,e.target.value)}return{title:u,modalWidth:h,confirmLoading:s,subTable:_,showSubTable:w,onSubmit:X,onCancel:ee,onFileSelect:se,registerFileSelectModal:te,subTableRef:d,registerForm:j,registerModal:Q,registerCodeFileListModal:x,wrapClassName:f}}});function Be(t,a,c,v,d,h){const u=Pe,s=ge,i=Fe,f=T("BasicForm"),y=T("JVxeTable"),S=Le,o=fe,M=T("BasicModal"),_=T("FileSelectModal"),w=T("code-file-list-modal");return B(),Se(we,null,[m(M,{onRegister:t.registerModal,title:t.title,width:t.modalWidth,confirmLoading:t.confirmLoading,okText:"开始生成",cancelText:"取消",onOk:t.onSubmit,onCancel:t.onCancel,wrapClassName:t.wrapClassName},{default:l(()=>[m(o,{spinning:t.confirmLoading},{default:l(()=>[m(f,{onRegister:t.registerForm},{pageCode:l(({model:C,field:j})=>[m(i,{value:C[j],"onUpdate:value":L=>C[j]=L},{default:l(()=>[m(s,{placement:"top"},{title:l(()=>[...a[0]||(a[0]=[q("span",null,"深度封装表单,用户只需定义字段json即可渲染表单,优点简单便捷,缺点扩展有难度",-1)])]),default:l(()=>[m(u,{value:"vue3"},{default:l(()=>[...a[1]||(a[1]=[K("封装表单(BasicForm)",-1)])]),_:1})]),_:1}),m(s,{placement:"top"},{title:l(()=>[...a[2]||(a[2]=[q("span",null,"antd的原生表单,所有字段都需要硬编码,缺点编码繁琐,优点扩展容易",-1)])]),default:l(()=>[C.jspMode=="innerTable"||C.jspMode=="tab"?U("",!0):(B(),H(u,{key:0,value:"vue3Native"},{default:l(()=>[...a[3]||(a[3]=[K("原生表单(a-form)",-1)])]),_:1}))]),_:2},1024)]),_:2},1032,["value","onUpdate:value"])]),_:1},8,["onRegister"]),t.showSubTable?(B(),H(S,{key:0,title:"子表信息",size:"small"},{default:l(()=>[m(y,je({ref:"subTableRef",rowNumber:"",maxHeight:580},t.subTable),null,16)]),_:1})):U("",!0)]),_:1},8,["spinning"])]),_:1},8,["onRegister","title","width","confirmLoading","onOk","onCancel","wrapClassName"]),m(_,{onRegister:t.registerFileSelectModal,onSelect:t.onFileSelect},null,8,["onRegister","onSelect"]),m(w,{onRegister:t.registerCodeFileListModal},null,8,["onRegister"])],64)}const Rt=ue(ke,[["render",Be]]);export{Rt as default};