import{_ as Fe,a as Le}from"./vueFile.vue_vue_type_script_setup_true_lang-db7b0571.js";import{d as he,I as ve,a as r,c as b,b as V,F as $,f as z,x as _,t as de,k as Ve,j as C,r as te,e as le,G as Re,u as c,g as k,w as n,l as o,J as Be,L as xe,m as T,M as Pe,q as pe,D as Y,N as qe,O as Ae,P as Ue,Q as ze,R as ye,S as Z,v as je,h as Ke,p as He,o as Me,z as We,U as Ne,V as ke,W as ee,X as fe,E as Qe,C as Ge,Y as $e,Z as Te,$ as Je}from"./index-ea7eee8a.js";import{_ as Xe}from"./aceDrawer.vue_vue_type_script_setup_true_lang-74ddf302.js";const _e=[],be={optionsType:0},Oe=[{title:"基础字段",children:[{type:"input",label:"单行文本",icon:"input",control:{modelValue:""},config:{}},{type:"textarea",label:"多行文本",icon:"textarea",control:{modelValue:""},config:{}},{type:"radio",label:"单选框组",icon:"radio",control:{modelValue:""},options:_e,config:be},{type:"checkbox",label:"多选框组",icon:"checkbox",control:{modelValue:[]},options:_e,config:be},{type:"select",label:"下拉选择框",icon:"select",control:{modelValue:"",appendToBody:!0},options:_e,config:be},{type:"datePicker",label:"日期选择器",icon:"date",control:{modelValue:"",type:"date"},config:{}},{type:"timePicker",label:"时间选择器",icon:"time",control:{modelValue:""},config:{}},{type:"colorPicker",label:"取色器",icon:"color",control:{modelValue:""},config:{}},{type:"switch",label:"开关",icon:"switch",control:{modelValue:!1},config:{}},{type:"inputNumber",label:"计数器",icon:"number",control:{modelValue:0},config:{}},{type:"cascader",label:"级联选择器",icon:"cascader",control:{modelValue:[]},options:[],config:be},{type:"rate",label:"评分",icon:"rate",control:{modelValue:0},config:{}},{type:"slider",label:"滑块",icon:"slider",control:{modelValue:0},config:{}},{type:"treeSelect",label:"树形控件",icon:"tree2",control:{modelValue:"",data:[],renderAfterExpand:!1},config:{optionsType:0}},{type:"txt",label:"文字",icon:"text",control:{modelValue:""},config:{}},{type:"title",label:"标题",icon:"title",control:{modelValue:"标题"},config:{}},{type:"button",label:"按钮",icon:"button",control:{label:"保存"},config:{}}]},{title:"高级字段",children:[{type:"table",label:"子表",icon:"table",list:[],tableData:[],control:{border:!0},config:{addBtnText:"添加一行"}},{type:"component",label:"自定义组件",icon:"component",control:{modelValue:""},config:{}},{type:"upload",label:"图片/文件",icon:"image",control:{modelValue:""},config:{}},{type:"tinymce",label:"tinymce富文本",icon:"tinymce",control:{modelValue:""},config:{}}]},{title:"布局字段",children:[{type:"grid",label:"格栅布局",icon:"grid",columns:[{attr:{span:12},list:[]},{attr:{span:12},list:[]}],control:{},config:{}},{type:"tabs",label:"标签页",icon:"tabs",columns:[{label:"Tab1",list:[]}],control:{},config:{}},{type:"card",label:"卡片布局",icon:"card",list:[],control:{},config:{},item:{}},{type:"flex",label:"弹性布局",icon:"flex",list:[],tableData:[],control:{},config:{addBtnText:"添加一行"}},{type:"divider",label:"分割线",icon:"divider",control:{},config:{}},{type:"div",label:"div容器",icon:"div",control:{},config:{},list:[]}]},{title:"扩展组件",children:[{type:"expand-user",label:"选择用户",icon:"user",control:{modelValue:""},config:{}}]}],Ye=""+new URL("test-c644ce60.png",import.meta.url).href,Ze=Ye,el="演示test",ll={list:[{type:"input",control:{modelValue:""},config:{},name:"input1663920706618",item:{label:"单行文本"}}],form:{size:"default"},config:{}},tl=Object.freeze(Object.defineProperty({__proto__:null,formData:ll,imgPath:Ze,title:el},Symbol.toStringTag,{value:"Module"})),al=""+new URL("test2-ab129ef2.png",import.meta.url).href,ol=al,nl="演示test2",sl={list:[{type:"input",control:{modelValue:""},config:{},name:"input",item:{label:"单行文本"}},{type:"radio",control:{modelValue:""},options:[{label:"标签1",value:"value1"},{label:"标签2",value:"value2"},{label:"标签3",value:"value3"}],config:{optionsType:0},name:"radio1667180102980",item:{label:"单选框组"}},{type:"checkbox",control:{modelValue:[]},options:[{label:"标签1",value:"value1"},{label:"标签2",value:"value2"},{label:"标签3",value:"value3"}],config:{optionsType:0},name:"checkbox1667180107698",item:{label:"多选框组",showLabel:!1}},{type:"select",control:{modelValue:"",appendToBody:!0},options:[{label:"标签1",value:"value1"},{label:"标签2",value:"value2"},{label:"标签3",value:"value3"}],config:{optionsType:0},name:"select1667180110029",item:{label:"下拉选择框"}},{type:"datePicker",control:{modelValue:"",type:"date"},config:{},name:"datePicker1667180115571",item:{label:"日期选择器"}},{type:"switch",control:{modelValue:!1},config:{},name:"switch1667180126483",item:{label:"开关"}}],form:{labelWidth:"",class:"",size:"default",name:"form1663920704871"},config:{}},rl=Object.freeze(Object.defineProperty({__proto__:null,formData:sl,imgPath:ol,title:nl},Symbol.toStringTag,{value:"Module"})),il={key:0,class:"no-date"},cl={key:1,class:"list"},ul=["onClick"],dl=["src"],pl=he({__name:"template",emits:["click"],setup(ae,{expose:J,emit:O}){const N=ve({visible:!1,list:[]}),y=()=>{N.visible=!0,s()},s=()=>{const t=Object.assign({"./template/test.ts":tl,"./template/test2.ts":rl});console.log(t),N.list=[],Object.keys(t).forEach(A=>{const I=t[A];N.list.push({imgPath:I.imgPath,title:I.title,formData:I.formData})})},f=t=>{O("click",t.formData),N.visible=!1};return J({open:y}),(t,A)=>N.visible?(r(),b("div",{key:0,class:Ve(["use-template",{active:N.visible}])},[V("span",{class:"close icon-close",onClick:A[0]||(A[0]=I=>N.visible=!1)}),N.list.length===0?(r(),b("div",il,"暂无可用模板")):(r(),b("div",cl,[(r(!0),b($,null,z(N.list,(I,X)=>(r(),b("div",{class:"item",key:X,onClick:H=>f(I)},[V("img",{src:I.imgPath,alt:""},null,8,dl),_(de(I.title),1)],8,ul))),128))]))],2)):C("",!0)}}),ml={class:"components-list"},fl={key:0},bl=V("div",{class:"title"},"快速选择表单字段",-1),vl={class:"content"},hl={class:"title"},gl=["title"],yl=he({__name:"dragControl",props:{formId:null},emits:["clickCheck","click"],setup(ae,{emit:J}){const O=ae,N=Pe("formDesignType"),y=te([]),s=["input","radio","checkbox","select","datePicker","timePicker","inputNumber","cascader","component","button"],f=le(()=>N==="search"),t=le(()=>{if(N==="search"){const D=[];return Oe.forEach(S=>{if(S.children){const x=S.children.filter(W=>s.includes(W.type));x&&x.length&&D.push({title:S.title,children:x})}}),D}else return Oe}),A=D=>xe(D);Re(()=>O.formId,D=>{D&&f.value&&I(D)});const I=D=>{pe("designById",{id:D}).then(S=>{const x=Y(S.data.data);x&&x.list&&H(x.list)})},X=(D,S)=>{if(S){const x=xe(D);delete x.rules,delete x.customRules,J("clickCheck",x)}},H=D=>{D.forEach(S=>{S.type==="grid"||S.type==="tabs"?S.columns.forEach(x=>{H(x.list)}):S.type==="card"?H(S.list):s.includes(S.type)&&S.type!=="button"&&y.value.push(S)})},v=te(),M=()=>{v.value.open()},oe=D=>{J("click",D)};return(D,S)=>{var W;const x=T("el-checkbox");return r(),b("div",ml,[c(f)&&((W=y.value)!=null&&W.length)?(r(),b("div",fl,[bl,V("div",vl,[(r(!0),b($,null,z(y.value,q=>(r(),k(x,{key:q.name,onChange:m=>X(q,m)},{default:n(()=>{var m;return[_(de((m=q.item)==null?void 0:m.label),1)]}),_:2},1032,["onChange"]))),128))])])):C("",!0),(r(!0),b($,null,z(c(t),(q,m)=>(r(),b("div",{key:m},[V("div",hl,[_(de(q.title)+" ",1),m===0&&!c(f)?(r(),b("div",{key:0,class:"template",onClick:M},"使用模板")):C("",!0)]),o(c(Be),{itemKey:"key123",tag:"ul",modelValue:q.children,"onUpdate:modelValue":p=>q.children=p,group:{name:"form",pull:"clone",put:!1},"ghost-class":"ghost",sort:!1,clone:A},{item:n(({element:p})=>[V("li",{class:Ve([p.type])},[V("i",{class:Ve(`icon-${p.icon}`)},null,2),V("span",{title:p.label},de(p.label),9,gl)],2)]),_:2},1032,["modelValue","onUpdate:modelValue"])]))),128)),c(f)?C("",!0):(r(),k(pl,{key:1,ref_key:"useTemplateEl",ref:v,onClick:oe},null,512))])}}}),kl={class:"sidebar-tools"},_l=V("div",{class:"h3"},[V("h3",null,"通用属性")],-1),Vl=V("div",{class:"h3"},[V("h3",null,"标签配置项")],-1),wl=["onClick"],Sl={key:2},Cl=V("div",{class:"h3"},[V("h3",null,"选项配置")],-1),Dl={key:0},xl=["onClick"],Ul=V("div",{class:"h3"},[V("h3",null,"校验设置")],-1),Nl={key:0},$l=["onClick"],Tl={key:4},Ol=V("div",{class:"h3"},[V("h3",null,"其他属性")],-1),Rl=V("div",{class:"h3"},[V("h3",null,"接口数据事件")],-1),Pl=he({__name:"formControlAttr",props:{formData:null,formConfig:{default:()=>({})},formOtherData:{default:()=>({})}},emits:["openDialog","update:formOtherData"],setup(ae,{expose:J,emit:O}){const N=ae,{formConfig:y,formData:s}=qe(N),f=Ae(),t=le(()=>f.controlAttr),A=te([]),I=le(()=>{var l;const a=v.isSearch;return[{label:"表单名称",placeholder:"用于保存的表单名称",value:N.formOtherData.formName,key:"formName",hide:a},{label:"数据源",placeholder:"请选择数据源",value:ye(N.formOtherData.source),type:"select",options:A.value,key:"source",hide:a||!((l=A.value)!=null&&l.length),clearable:!0},{label:"表单标识",value:s.value.name,placeholder:"表单唯一标识,可为空",key:"name",hide:a},{label:"表单标签宽度",value:s.value.labelWidth,placeholder:"表单label宽,如180px",key:"labelWidth"},{label:"表单样式名称",value:s.value.class,placeholder:"额外添加的表单class类名",key:"class",type:"select",options:[{label:"无样式",value:""},{label:"每行两列",value:"form-row-2"},{label:"每行三列",value:"form-row-3"},{label:"每行四列",value:"form-row-4"}],hide:a,clearable:!0},{label:"字段名后添加冒号",value:s.value.showColon,key:"showColon",type:"switch"},{label:"组件尺寸",value:s.value.size,type:"select",key:"size",options:[{label:"large",value:"large"},{label:"default",value:"default"},{label:"small",value:"small"}]}]}),X=le(()=>{if(Object.keys(t.value).length){const{control:a={},type:l,name:u,config:d={},item:w={},attr:h={}}=t.value;let g=!1;if(l==="table"){const P=t.value&&t.value.list;P&&P.length>0&&(g=P[0].type==="index")}return[{label:"自定义Class",value:d.className,placeholder:"样式类名",path:"config.className"},{label:"字段标识",value:u,type:Object.keys(v.dataSourceList).length>0?"select":"text",placeholder:"字段唯一标识,对应数据库",dict:v.dataSourceList,path:"name",vHide:["grid","tabs","card","title","gridChild","tableColumn","divider","txt","div","button"],eventName:"filedNameKey"},{label:"占位内容",value:a.placeholder,placeholder:"placeholder",path:"control.placeholder",vShow:["password","input","textarea","select","date","number","datePicker","tinymce","timePicker","treeSelect"]},{label:"按钮类型",value:a.type,path:"control.type",type:"select",dict:{primary:"primary",success:"success",info:"info",warning:"warning",danger:"danger"},vShow:["button"],clearable:!0},{label:"按钮名称",value:a.label,path:"control.label",vShow:["button"]},{label:"按钮事件",value:a.key,path:"control.key",type:"select",dict:{submit:"提交表单",reset:"重置表单",cancel:"取消返回",none:"无动作(自定义)"},vShow:["button"]},{label:"对齐方式",value:d.textAlign,path:"config.textAlign",type:"select",dict:{left:"left",right:"right",center:"center"},vShow:["button","div"]},{label:"label值",value:w.label,path:"item.label",vHide:["table","grid","tabs","title","gridChild","div","inputSlot","flex","button","txt"]},{label:"隐藏label",value:w.showLabel,path:"item.showLabel",type:"switch",vHide:["table","grid","tabs","title","gridChild","divider","card","div","inputSlot","flex","button","txt"]},{label:"帮助信息",value:d.help,path:"config.help",vHide:["table","grid","tabs","gridChild","divider","div","inputSlot","flex","button","txt"]},{label:"表单栅格",value:d.span,placeholder:"表单区域栅格宽,0为自动宽",path:"config.span",vHide:["gridChild"],isNum:!0},{label:"文本值",value:a.modelValue,placeholder:"支持html",path:"control.modelValue",vShow:["txt"],inputStyle:"textarea"},{label:"设为密码",value:l,type:"select",dict:{input:"文本",password:"密码"},path:"type",vShow:["input","password"],vIf:v.isSearch},{label:"文本域高度",value:a.rows,placeholder:"输入框行数",path:"control.rows",vShow:["textarea"],isNum:!0},{label:"前缀",value:d.prepend,placeholder:"文本前缀",path:"config.prepend",vShow:["input","password"]},{label:"后缀",value:d.append,placeholder:"文本后缀",path:"config.append",vShow:["input","password"]},{label:"状态打开时的值",value:a.activeValue,placeholder:"状态打开时的值",path:"control.activeValue",vShow:["switch"],isNum:!0},{label:"状态关闭时的值",value:a.inactiveValue,placeholder:"状态关闭时的值",path:"control.inactiveValue",vShow:["switch"],isNum:!0},{label:"增加按钮文案",value:d.addBtnText,path:"config.addBtnText",type:"text",vShow:["flex","table"]},{label:"删除按钮文案",value:d.delBtnText,path:"config.delBtnText",type:"text",vShow:["flex","table"]},{label:"是否多选",value:a.multiple,path:"control.multiple",type:"switch",vShow:["select","treeSelect"],eventName:"selectMultiple"},{label:"可清空",value:a.clearable,path:"control.clearable",type:"switch",vShow:["select"]},{label:"是否禁用",value:a.disabled,path:"control.disabled",type:"switch",vShow:["input","password","textarea","radio","checkbox","select","date","switch","number","cascader","upload","rate","tinymce","treeSelect"],vIf:v.isSearch},{label:"是否禁用编辑",value:d.editDisabled,path:"config.editDisabled",type:"switch",vShow:["input","password","textarea","radio","checkbox","select","date","switch","number","cascader","upload","treeSelect","table","flex"],vIf:v.isSearch},{label:"添加页隐藏",value:d.disabledAdd,path:"config.disabledAdd",type:"switch",vIf:v.isSearch,vHide:["inputSlot"]},{label:"编辑页隐藏",value:d.disabledEdit,path:"config.disabledEdit",type:"switch",vIf:v.isSearch,vHide:["inputSlot"]},{label:"详情页隐藏",value:d.disabledDetail,path:"config.disabledDetail",type:"switch",vIf:v.isSearch,vHide:["inputSlot"]},{label:"设为Input输入框的前/后缀",value:l==="inputSlot",path:"",type:"switch",vShow:["select","inputSlot"],eventName:"setInputSlot"},{label:"标题",value:a.modelValue,path:"control.modelValue",vShow:["title"]},{label:"占据的列数span",value:h.span,path:"attr.span",vShow:["gridChild"],eventName:"formatNumber",isNum:!0},{label:"左侧的间隔格数offset",value:h.offset,path:"attr.offset",vShow:["gridChild"],eventName:"formatNumber",isNum:!0},{label:"向右移动格数push",value:h.push,path:"attr.push",vShow:["gridChild"],eventName:"formatNumber",isNum:!0},{label:"向左移动格数pull",value:h.pull,path:"attr.pull",vShow:["gridChild"],eventName:"formatNumber",isNum:!0},{label:"序号列",value:g,type:"switch",vShow:["table"],eventName:"tableColumn1"},{label:"组件名",value:d.componentName,placeholder:"全局注册的组件名称",path:"config.componentName",vShow:["component"]},{label:"上传地址",value:a.action,placeholder:"图片/文件上传地址,可不填有默认值",path:"control.action",vShow:["upload"]},{label:"文件字段名",value:a.name,placeholder:"上传的文件字段名,默认file",path:"control.name",vShow:["upload"]},{label:"列表类型",value:a.listType,type:"select",dict:{text:"text",picture:"picture","picture-card":"picture-card"},path:"control.listType",vShow:["upload"]},{label:"提示文字",value:d.tip,placeholder:"提示说明文字",path:"config.tip",vShow:["upload"]},{label:"按钮文本",value:d.btnText,placeholder:"上传按钮文本",path:"config.btnText",vShow:["upload"]},{label:"direction",type:"select",dict:{horizontal:"horizontal",vertical:"vertical"},placeholder:"分割线方向,默认horizontal",value:a.direction,path:"control.direction",vShow:["divider"]},{label:"border-style",placeholder:"分隔符样式,默认solid",value:a.borderStyle,path:"control.borderStyle",vShow:["divider"]},{label:"content-position",type:"select",dict:{left:"left",right:"right",center:"center"},value:a.contentPosition,path:"control.contentPosition",vShow:["divider"]},{label:"最小值",value:a.min,path:"control.min",vShow:["slider"],eventName:"formatNumber",isNum:!0},{label:"最大值",value:a.max,path:"control.max",vShow:["rate","slider"],eventName:"formatNumber",isNum:!0},{label:"步长",value:a.step,path:"control.step",vShow:["slider"],eventName:"formatNumber",isNum:!0},{label:"type",value:a.type,path:"control.type",vShow:["datePicker"],type:"select",placeholder:"显示类型",dict:{year:"year",month:"month",date:"date",datetime:"datetime",week:"week",datetimerange:"datetimerange",daterange:"daterange",monthrange:"monthrange"}},{label:"format",value:a.format,path:"control.format",vShow:["datePicker","timePicker"],placeholder:"显示在输入框中的格式"},{label:"color-format",value:a.colorFormat,path:"control.colorFormat",type:"select",placeholder:"写入 v-model 的颜色的格式",dict:{hsl:"hsl",hsv:"hsv",hex:"hex",rgb:"rgb"},vShow:["colorPicker"]},{label:"文本高度",value:a.height,path:"control.height",placeholder:"文本高度(预览查看效果)",vShow:["tinymce"]},{label:"文本宽度",value:a.width,path:"control.width",placeholder:"文本宽度(预览查看效果)",vShow:["tinymce"]},{label:"图片上传地址",value:a.imgUrl,path:"control.imgUrl",placeholder:"图片上传地址",vShow:["tinymce"]},{label:"附件上传地址",value:a.blobUrl,path:"control.blobUrl",placeholder:"附件上传地址",vShow:["tinymce"]},{label:"显示模式",value:d.style,path:"config.style",placeholder:"显示风格(预览查看效果)",type:"select",dict:{default:"default",simple:"simple"},vShow:["tinymce"]}].filter(P=>{let j=!0;return P.vShow&&(j=P.vShow.includes(l)),P.vHide&&(j=!P.vHide.includes(l)),P.vIf&&(j=!1),j})}else return[]}),H=Pe("formDesignType"),v=ve({dataSourceList:{},customRulesList:[...Ue,{type:"rules",label:"自定义正则"},{type:"methods",label:"自定义方法"}],isSearch:H==="search",tooltip:{css:"当前表单应用页的样式,类似于.vue文件中的style scoped中的样式",dict:'数据字典,用于匹配多选组、下拉选择等,提供动态获取Options接口字典数据,一般不设置,从接口dict获取。json格式:"sex":{"0":"男","1":"女"}',rules:"可参考UI组件表单校验,详情点击",props:"可添加当前组件所有prop属性及事件方法"},tabsName:"second"});Re(()=>f.activeKey,a=>{a&&(v.tabsName="first")});const M=(a,l)=>{switch(a.eventName){case"selectMultiple":l?t.value.control.modelValue=[]:t.value.control.modelValue="";break;case"tableColumn1":p(l);break;case"formatNumber":break;case"filedNameKey":a.type==="select"&&v.dataSourceList.forEach(u=>{u.name===l&&(t.value.item&&(t.value.item.label=u.label),t.value.name=u.label)});break;case"setInputSlot":l?(t.value.type="inputSlot",Z.success(`请在对应的Input输入框属性前后缀设置key:${t.value.name}`)):t.value.type="select";break}if(a.path){console.log(a,l),console.log("controlData.value",t.value);const u=a.isNum?ye(l):l;a.path&&oe(t.value,a.path,u)}},oe=(a,l,u)=>{let d=a;const w=l.split(".");let h=0;for(h;h{l==="tabs"?t.value.columns.splice(a,1):t.value.options.splice(a,1)},S=a=>{t.value.type==="cascader"?x("cascader"):t.value.type==="treeSelect"?x("treeSelect","编辑组件下拉选项数据"):a==="tabs"?t.value.columns.push({label:"标签名称",list:[]}):t.value.options.push({label:"",value:""})},x=(a,l)=>{let u=t.value.control;switch(t.value.type==="button"&&(u=t.value.config,a="button"),a){case"treeSelect":u=t.value.control.data;break;case"cascader":u=t.value.options;break;case"optionsParams":u=t.value.config.beforeRequest;break;case"optionsResult":u=t.value.config.afterResponse;break}O("openDialog",{content:u,title:l,type:a,direction:"ltr",callback:w=>{switch(a){case"treeSelect":t.value.control.data=w;break;case"cascader":t.value.options=w;break;case"optionsParams":t.value.config.beforeRequest=w;break;case"optionsResult":t.value.config.afterResponse=w;break;case"button":t.value.config=w;break;default:t.value.control={},Object.assign(t.value.control,w)}}})},W=a=>{var l;(l=t.value.item)!=null&&l.rules||(t.value.item.rules=[]),a?t.value.item.rules.push({required:!0,message:"必填项",trigger:"change"}):t.value.item.rules.splice(0,1)},q=a=>{var u,d;(u=t.value.item)!=null&&u.rules||(t.value.item.rules=[]);const l={content:(d=t.value.item)==null?void 0:d.rules,title:a,direction:"ltr",callback:w=>{Object.assign(t.value.item.rules,w)}};O("openDialog",l)},m=(a,l)=>{if(a&&a.length===0||Object.keys(t.value).length===0)return!1;const u=a.indexOf(t.value.type);return l?u!==-1:u===-1},p=a=>{const l={name:"index",type:"index",item:{label:"序号"},control:{},config:{}};a?t.value.list.unshift(l):t.value.list.splice(0,1)},U=le(()=>{var l;const a=t.value&&((l=t.value.item)==null?void 0:l.rules);return a&&a.length>0}),B=()=>{t.value.customRules||(t.value.customRules=[]),t.value.customRules.push({type:"required",message:"必填项",trigger:"blur"})},K=a=>{t.value.customRules&&t.value.customRules.splice(a,1)},E=a=>{O("openDialog",{codeType:"css",direction:"ltr",type:"css",title:a})},Q=a=>{O("openDialog",{type:"dict",direction:"ltr",codeType:"json",title:a})},R=a=>{if(v.isSearch)return;const l=a;l&&pe("sourceById",{id:l}).then(u=>{var w;const d=(w=u.data.result)==null?void 0:w.tableData;d&&d.length&&(v.dataSourceList=d.filter(h=>h.enterable))}).catch(u=>{console.log(u)})},ne=()=>{v.isSearch||pe("sourceList").then(a=>{A.value=a.data.list})},G=(a,l)=>{if(a.key==="source"&&(R(a.value),f.setActiveKey(""),f.setControlAttr({})),["formName","source"].includes(a.key)){O("update:formOtherData",Object.assign(N.formOtherData,{[a.key]:a.value}));return}a.path==="config"?y.value[a.key]=a.value||l:s.value[a.key]=a.value},ge=a=>{switch(a){case 1:return"数据源接口URL,可带参数";case 2:return"字典key,默认为字段标识"}return""},me=(a,l)=>{const u=Ue.filter(d=>d.type===l);u&&u.length&&(a.message=u[0].message)},we=(a,l)=>{x(a,l)},se=(a,l)=>{O("openDialog",{type:a,title:l,direction:"ltr"})};return ne(),J({getFormFieldBySource:R}),(a,l)=>{const u=T("el-option"),d=T("el-select"),w=T("el-switch"),h=T("el-input"),g=T("el-form-item"),re=T("el-radio"),P=T("el-radio-group"),j=T("el-col"),F=T("el-button"),ie=T("QuestionFilled"),ce=T("el-icon"),ue=T("el-tooltip"),Ie=T("el-checkbox"),Se=T("el-form"),Ce=T("el-tab-pane"),Ee=T("el-tabs");return r(),b("div",kl,[o(Ee,{modelValue:v.tabsName,"onUpdate:modelValue":l[29]||(l[29]=e=>v.tabsName=e)},{default:n(()=>[o(Ce,{label:"字段配置",name:"first"},{default:n(()=>[o(Se,{size:"small",class:"form"},{default:n(()=>[_l,(r(!0),b($,null,z(c(X),(e,L)=>(r(),k(g,{key:L,label:e.label},{default:n(()=>[e.type==="select"?(r(),k(d,{key:0,placeholder:e.placeholder,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,filterable:e.path==="name","allow-create":e.path==="name",clearable:e.clearable,onChange:i=>M(e,i)},{default:n(()=>[(r(!0),b($,null,z(e.dict,(i,De)=>(r(),k(u,{key:De,value:e.path==="name"?i.name:De,label:e.path==="name"?`${i.label}(${i.name})`:i},null,8,["value","label"]))),128))]),_:2},1032,["placeholder","modelValue","onUpdate:modelValue","filterable","allow-create","clearable","onChange"])):e.type==="switch"?(r(),k(w,{key:1,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,onChange:i=>M(e,i)},null,8,["modelValue","onUpdate:modelValue","onChange"])):(r(),k(h,{key:2,type:e.inputStyle,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,placeholder:e.placeholder,onInput:i=>M(e,i)},null,8,["type","modelValue","onUpdate:modelValue","placeholder","onInput"]))]),_:2},1032,["label"]))),128)),c(t).config?(r(),b($,{key:0},[o(g,{label:"联动条件"},{default:n(()=>[o(w,{modelValue:c(t).config.linkKey,"onUpdate:modelValue":l[0]||(l[0]=e=>c(t).config.linkKey=e)},null,8,["modelValue"])]),_:1}),c(t).config.linkKey?(r(),b($,{key:0},[o(g,null,{default:n(()=>[o(h,{type:"textarea",modelValue:c(t).config.linkValue,"onUpdate:modelValue":l[1]||(l[1]=e=>c(t).config.linkValue=e),placeholder:"表达式如: $.input>1 $表示为当前表单数据,input为字段标识"},null,8,["modelValue"])]),_:1}),m(["input","textarea","radio","checkbox","select","date","switch","number","cascader","slider","datePicker","timePicker","colorPicker","inputNumber","rate","treeSelect"],!0)?(r(),k(g,{key:0,label:"联动结果"},{default:n(()=>[o(P,{class:"option-radio",modelValue:c(t).config.linkResult,"onUpdate:modelValue":l[2]||(l[2]=e=>c(t).config.linkResult=e)},{default:n(()=>[o(re,{label:"hidden"},{default:n(()=>[_("隐藏(默认)")]),_:1}),o(re,{label:"disabled"},{default:n(()=>[_("禁用")]),_:1})]),_:1},8,["modelValue"])]),_:1})):C("",!0)],64)):C("",!0)],64)):C("",!0),m(["tabs"],!0)?(r(),b($,{key:1},[Vl,(r(!0),b($,null,z(c(t).columns,(e,L)=>(r(),k(g,{key:L},{default:n(()=>[o(j,{span:12},{default:n(()=>[o(h,{placeholder:"标签配置项",modelValue:e.label,"onUpdate:modelValue":i=>e.label=i},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(j,{span:2,offset:1},{default:n(()=>[V("i",{class:"icon-del",onClick:i=>D(L,"tabs")},null,8,wl)]),_:2},1024)]),_:2},1024))),128)),o(g,null,{default:n(()=>[o(F,{onClick:l[3]||(l[3]=e=>S("tabs"))},{default:n(()=>[_("增加标签")]),_:1})]),_:1})],64)):C("",!0),m(["radio","select","checkbox","cascader","inputSlot","treeSelect"],!0)?(r(),b("div",Sl,[Cl,m(["select"],!0)?(r(),k(g,{key:0,label:"添加全部项"},{default:n(()=>[o(h,{placeholder:"请输入全部项文案",modelValue:c(t).config.addAll,"onUpdate:modelValue":l[4]||(l[4]=e=>c(t).config.addAll=e)},null,8,["modelValue"])]),_:1})):C("",!0),o(g,{label:"选项数据源"},{default:n(()=>[o(d,{modelValue:c(t).config.optionsType,"onUpdate:modelValue":l[5]||(l[5]=e=>c(t).config.optionsType=e),onChange:l[6]||(l[6]=e=>c(t).config.optionsFun="")},{default:n(()=>[o(u,{value:0,label:"固定选项"}),o(u,{value:1,label:"数据源"}),o(u,{value:2,label:"接口字典"})]),_:1},8,["modelValue"])]),_:1}),c(t).config.optionsType===0?(r(),b($,{key:1},[c(t).type!=="cascader"?(r(),b("div",Dl,[(r(!0),b($,null,z(c(t).options,(e,L)=>(r(),k(g,{key:L},{default:n(()=>[o(j,{span:10},{default:n(()=>[o(h,{placeholder:"选项标签",modelValue:e.label,"onUpdate:modelValue":i=>e.label=i},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(j,{span:10,offset:1},{default:n(()=>[o(h,{placeholder:"选项值",modelValue:e.value,"onUpdate:modelValue":i=>e.value=i},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(j,{span:2,offset:1},{default:n(()=>[V("i",{class:"icon-del",onClick:i=>D(L)},null,8,xl)]),_:2},1024)]),_:2},1024))),128))])):C("",!0),o(g,null,{default:n(()=>[o(F,{onClick:S},{default:n(()=>[_(de(c(t).type==="cascader"?"编辑":"新增"),1)]),_:1})]),_:1})],64)):(r(),b($,{key:2},[o(g,null,{default:n(()=>[o(h,{modelValue:c(t).config.optionsFun,"onUpdate:modelValue":l[8]||(l[8]=e=>c(t).config.optionsFun=e),placeholder:ge(c(t).config.optionsType)},ze({_:2},[c(t).config.optionsType===1?{name:"prepend",fn:n(()=>[o(d,{modelValue:c(t).config.method,"onUpdate:modelValue":l[7]||(l[7]=e=>c(t).config.method=e),style:{width:"80px"}},{default:n(()=>[o(u,{label:"get",value:"get"}),o(u,{label:"post",value:"post"})]),_:1},8,["modelValue"])]),key:"0"}:void 0]),1032,["modelValue","placeholder"])]),_:1}),c(t).config.optionsType===1?(r(),b($,{key:0},[o(g,{label:"指定label属性值"},{default:n(()=>[o(h,{modelValue:c(t).config.label,"onUpdate:modelValue":l[9]||(l[9]=e=>c(t).config.label=e),placeholder:"返回数据中没有label时可设置"},null,8,["modelValue"])]),_:1}),o(g,{label:"指定value属性值"},{default:n(()=>[o(h,{modelValue:c(t).config.value,"onUpdate:modelValue":l[10]||(l[10]=e=>c(t).config.value=e),placeholder:"返回数据中没有value时可设置"},null,8,["modelValue"])]),_:1})],64)):C("",!0),c(t).config.optionsType===1?(r(),k(g,{key:1},{default:n(()=>[o(F,{onClick:l[11]||(l[11]=e=>we("optionsParams","请求前处理事件,参数(data,route,form) data请求参数,route页面路由,form表单值"))},{default:n(()=>[_("beforeRequest ")]),_:1}),o(F,{onClick:l[12]||(l[12]=e=>we("optionsResult","请求返回结束处理;,也可为字符串,如opt=formatTest"))},{default:n(()=>[_("afterResponse ")]),_:1})]),_:1})):C("",!0)],64)),o(g,{label:"尝试转换value值为"},{default:n(()=>[o(d,{modelValue:c(t).config.transformData,"onUpdate:modelValue":l[13]||(l[13]=e=>c(t).config.transformData=e),placeholder:"默认为number"},{default:n(()=>[o(u,{value:"none"},{default:n(()=>[_("不转换")]),_:1}),o(u,{value:"number"},{default:n(()=>[_("number")]),_:1}),o(u,{value:"string"},{default:n(()=>[_("string")]),_:1})]),_:1},8,["modelValue"])]),_:1})])):C("",!0),!v.isSearch&&m(["txt","title","table","grid","tabs","card","switch","gridChild","tableColumn","divider","div","button"])?(r(),b($,{key:3},[Ul,m(["input","password","component"],!0)?(r(),b("div",Nl,[(r(!0),b($,null,z(c(t).customRules,(e,L)=>(r(),k(g,{key:e.type},{default:n(()=>[o(h,{modelValue:e.message,"onUpdate:modelValue":i=>e.message=i,placeholder:"校验提示信息"},{prepend:n(()=>[o(d,{modelValue:e.type,"onUpdate:modelValue":i=>e.type=i,style:{width:"80px"},onChange:i=>me(e,i)},{default:n(()=>[(r(!0),b($,null,z(v.customRulesList,i=>(r(),k(u,{key:i.type,label:i.label,value:i.type},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]),append:n(()=>[V("i",{class:"icon-del",onClick:i=>K(L)},null,8,$l)]),_:2},1032,["modelValue","onUpdate:modelValue"]),e.type==="rules"?(r(),k(h,{key:0,placeholder:"正则表达式",modelValue:e.rules,"onUpdate:modelValue":i=>e.rules=i},null,8,["modelValue","onUpdate:modelValue"])):C("",!0),e.type==="methods"?(r(),k(h,{key:1,placeholder:"方法名称,此方法仅适用于导出vue文件",modelValue:e.methods,"onUpdate:modelValue":i=>e.methods=i},null,8,["modelValue","onUpdate:modelValue"])):C("",!0)]),_:2},1024))),128)),o(g,null,{default:n(()=>[o(F,{onClick:B},{default:n(()=>[_("快速添加")]),_:1}),o(F,{onClick:l[14]||(l[14]=e=>q(v.tooltip.rules))},{default:n(()=>[_("编写校验规则 "),o(ue,{content:v.tooltip.rules,placement:"top","raw-content":""},{default:n(()=>[o(ce,null,{default:n(()=>[o(ie)]),_:1})]),_:1},8,["content"])]),_:1})]),_:1})])):(r(),k(g,{key:1},{default:n(()=>{var e,L;return[o(Ie,{modelValue:c(U),onChange:W},{default:n(()=>[_("必填 ")]),_:1},8,["modelValue"]),(e=c(t).item)!=null&&e.rules&&((L=c(t).item)!=null&&L.rules[0])?(r(),k(h,{key:0,placeholder:"自定义必填错误提示",modelValue:c(t).item.rules[0].message,"onUpdate:modelValue":l[15]||(l[15]=i=>c(t).item.rules[0].message=i)},null,8,["modelValue"])):C("",!0)]}),_:1}))],64)):C("",!0),m(["grid","card","gridChild","divider","div"])?(r(),b("div",Tl,[Ol,o(F,{size:"small",onClick:l[16]||(l[16]=e=>x("",v.tooltip.props))},{default:n(()=>[_("编辑属性 "),o(ue,{content:v.tooltip.props,placement:"top"},{default:n(()=>[o(ce,null,{default:n(()=>[o(ie)]),_:1})]),_:1},8,["content"])]),_:1})])):C("",!0)]),_:1})]),_:1}),o(Ce,{label:"表单配置",name:"second"},{default:n(()=>[o(Se,{size:"small",class:"form"},{default:n(()=>[(r(!0),b($,null,z(c(I).filter(e=>!e.hide),(e,L)=>(r(),k(g,{label:e.label,key:L},{default:n(()=>[e.type==="select"?(r(),k(d,{key:0,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,filterable:e.key==="class","allow-create":e.key==="class",placeholder:e.placeholder,clearable:e.clearable,onChange:i=>G(e)},{default:n(()=>[(r(!0),b($,null,z(e.options,i=>(r(),k(u,{label:i.label||i.name,key:i.label||i.name,value:c(ye)(i.value??i.id)},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","filterable","allow-create","placeholder","clearable","onChange"])):e.type==="switch"?(r(),k(w,{key:1,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,onInput:i=>G(e)},null,8,["modelValue","onUpdate:modelValue","onInput"])):(r(),k(h,{key:2,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,placeholder:e.placeholder,onInput:i=>G(e)},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"]))]),_:2},1032,["label"]))),128)),v.isSearch?C("",!0):(r(),k(g,{key:0},{label:n(()=>[_("添加时获取请求 "),o(ue,{content:"新增表单数据时,从接口获取新增初始数据",placement:"top"},{default:n(()=>[o(ce,null,{default:n(()=>[o(ie)]),_:1})]),_:1})]),default:n(()=>[o(w,{modelValue:c(y).addLoad,"onUpdate:modelValue":l[17]||(l[17]=e=>c(y).addLoad=e),onChange:l[18]||(l[18]=e=>G({key:"addLoad",path:"config"},e))},null,8,["modelValue"])]),_:1})),o(g,null,{default:n(()=>[o(F,{onClick:l[19]||(l[19]=e=>E(v.tooltip.css))},{default:n(()=>[_("编辑表单样式 "),o(ue,{content:v.tooltip.css,placement:"top"},{default:n(()=>[o(ce,null,{default:n(()=>[o(ie)]),_:1})]),_:1},8,["content"])]),_:1}),o(F,{onClick:l[20]||(l[20]=e=>Q(v.tooltip.dict))},{default:n(()=>[_("设置数据字典 "),o(ue,{content:v.tooltip.dict,placement:"top"},{default:n(()=>[o(ce,null,{default:n(()=>[o(ie)]),_:1})]),_:1},8,["content"])]),_:1})]),_:1}),v.isSearch?C("",!0):(r(),b($,{key:1},[Rl,o(g,{label:"新增数据保存url"},{default:n(()=>[o(h,{placeholder:"表单提交的url,非特殊不需要设置",modelValue:c(y).addUrl,"onUpdate:modelValue":l[21]||(l[21]=e=>c(y).addUrl=e)},null,8,["modelValue"])]),_:1}),o(g,{label:"修改数据保存url"},{default:n(()=>[o(h,{placeholder:"修改提交的url,非特殊不需要设置",modelValue:c(y).editUrl,"onUpdate:modelValue":l[22]||(l[22]=e=>c(y).editUrl=e)},null,8,["modelValue"])]),_:1}),o(g,{label:"获取表单数据url"},{default:n(()=>[o(h,{placeholder:"获取表单数据url,非特殊不需要设置",modelValue:c(y).requestUrl,"onUpdate:modelValue":l[23]||(l[23]=e=>c(y).requestUrl=e)},null,8,["modelValue"])]),_:1}),o(g,{class:"event-btn"},{default:n(()=>[o(F,{onClick:l[24]||(l[24]=e=>se("beforeRequest","获取表单初始数据前事件,可修改请求参数"))},{default:n(()=>[_("beforeRequest ")]),_:1}),o(F,{onClick:l[25]||(l[25]=e=>se("afterResponse","获取表单初始数据后事件,可对请求返回数据进行处理;也可为字符串,如opt=formatTest"))},{default:n(()=>[_("afterResponse ")]),_:1}),o(F,{onClick:l[26]||(l[26]=e=>se("beforeSubmit","表单数据提交前事件,可对提交数据进行处理;也可为字符串,如opt=formatTest"))},{default:n(()=>[_("beforeSubmit ")]),_:1}),o(F,{onClick:l[27]||(l[27]=e=>se("afterSubmit","表单数据提交成功事件"))},{default:n(()=>[_("afterSubmit ")]),_:1}),o(F,{onClick:l[28]||(l[28]=e=>se("change","表单组件值改变事件。当表单某值改变时,可修改其他组件的值;也可为字符串,如opt=formChange,字符串即为/utils/formChangeValue(name,model,key)中的key值"))},{default:n(()=>[_("表单组件改变事件change ")]),_:1})]),_:1})],64))]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}}),Al={class:"design-container"},Il={class:"main-body"},El={class:"main-form"},Fl={key:0,class:"empty-tips"},Ll={class:"dialog-footer"},jl=he({__name:"index",setup(ae){je().changeBreadcrumb([{label:"系统工具"},{label:"表单设计"}]);const O=Ae(),N=Ge(),y=Ke().query||{},s=ve({formData:{list:[],form:{size:"default"},config:{}},editor:{},loading:!1,formDataPreview:{},previewVisible:!1,designType:y.type,formDict:{},formOtherData:{source:y.source||"",formName:"未命名表单"}}),f=ve({visible:!1,type:"",title:"",codeType:"",direction:void 0,callback:""}),t=te(),A=te();He("formDesignType",s.designType);const I=()=>{const m=y.id;m&&(s.loading=!0,pe("designById",{id:m}).then(p=>{const U=p.data;U.data&&(s.formData=Y(U.data)),s.formDict=ke(U.dict),s.formOtherData.source=U.source,s.formOtherData.formName=U.name,U.source&&s.designType!=="search"&&A.value.getFormFieldBySource(U.source),s.loading=!1}).catch(p=>{Z.error(p.message||"加载异常"),s.loading=!1}))},X=m=>{switch(m){case"del":s.formData.list=[],O.setActiveKey(""),O.setControlAttr({});break;case"eye":O.setActiveKey(""),O.setControlAttr({}),s.previewVisible=!0;let p=ee(s.formData);const U=s.formData.form.name,B=new RegExp(`get${U}ControlByName`,"g");p=p.replace(B,`getPreview${U}ControlByName`),s.formDataPreview=Y(p),s.formDataPreview.form.name=`Preview${U}`;break;case"json":M({direction:"rtl",content:s.formData,title:"可编辑修改或将已生成的脚本粘贴进来"});break;case"save":v();break;case"vue":t.value.open(s.formData);break}},H=m=>{try{if(typeof f.callback=="function"){const p=f.codeType==="json"?ke(m):Y(m);f.callback(p)}else switch(f.type){case"css":s.formData.config||(s.formData.config={}),s.formData.config.style=m;break;case"dict":s.formDict=ke(m);break;case"beforeRequest":case"beforeSubmit":case"afterResponse":case"afterSubmit":case"change":s.formData.events||(s.formData.events={}),s.formData.events[f.type]=Y(m);break;default:s.formData=Y(m)}D()}catch{}},v=()=>{const{addUrl:m,editUrl:p,requestUrl:U}=s.formData.config;if(!s.formOtherData.source&&(!m||!p||!U)&&s.designType!=="search"){Z.error("请选择数据源或配置接口url地址,否则表单无法提交保存");return}let B={data:ee(s.formData),source:s.formOtherData.source,name:s.formOtherData.formName,type:1,dict:fe(s.formDict)},K="designSave";y.id&&(Object.assign(B,{id:y.id}),K="designEdit"),s.designType==="search"&&(B={data:ee(s.formData),dict:fe(s.formDict),id:y.id}),s.loading=!0,pe(K,B).then(E=>{Z({message:E.message||"保存成功!",type:"success"});const Q=y.redirect||"/design/form/list";let R={};y.redirect&&y.redirect.indexOf("?")!==-1&&y.redirect.split("?")[1].split("&").forEach(ge=>{const me=ge.split("=");R[me[0]]=me[1]}),N.push({path:Q,query:R}),s.loading=!1}).catch(E=>{Z.error(E.message||"保存异常"),s.loading=!1}),y.id||window.sessionStorage.removeItem("formMenuList"),O.setActiveKey(""),O.setControlAttr({})},M=m=>{var ne;const{type:p,direction:U,codeType:B,title:K,callback:E,content:Q}=m;f.direction=U,f.type=p,f.codeType=B||"",f.title=K?`提示:${K}`:"",f.visible=!0,f.callback=E;let R=B==="json"?fe(Q,!0):ee(Q,!0);switch(p){case"css":R=((ne=s.formData.config)==null?void 0:ne.style)||"";break;case"dict":R=fe(s.formDict,!0);break;case"beforeRequest":case"beforeSubmit":case"afterResponse":case"afterSubmit":case"change":const G=s.formData.events||{};G[p]?R=ee(G[p],!0):["afterResponse","afterSubmit"].includes(p)?R=$e:p==="change"?R=Je:R=Te;break;case"optionsParams":Q||(R=Te);break;case"optionsResult":Q||(R=$e);break}f.content=R},oe=()=>{D()},D=()=>{f.visible=!1,f.type="",f.title="",f.codeType="",f.callback="",f.content=""},S=te(),x=()=>{S.value.validate((m,p)=>{if(m)Z.success("校验通过"),console.log(p);else return Z.error("校验不通过"),!1})},W=m=>{s.formData=Y(ee(m))},q=m=>{s.formData.list.push(m)};return I(),Me(()=>{y.source&&A.value.getFormFieldBySource(y.source)}),(m,p)=>{const U=T("el-button"),B=T("el-dialog"),K=Qe("loading");return r(),b("div",Al,[o(yl,{formId:s.formOtherData.source,onClickCheck:q,onClick:W},null,8,["formId"]),V("div",Il,[o(Fe,{onClick:X}),We((r(),b("div",El,[s.formData.list.length===0?(r(),b("div",Fl," 从左侧拖拽来添加字段 ")):C("",!0),o(Ne,{type:5,formData:s.formData,dict:s.formDict},null,8,["formData","dict"])])),[[K,s.loading]])]),o(Pl,{ref_key:"formControlAttrEl",ref:A,formData:s.formData.form,formConfig:s.formData.config,formOtherData:s.formOtherData,"onUpdate:formOtherData":p[0]||(p[0]=E=>s.formOtherData=E),onOpenDialog:M},null,8,["formData","formConfig","formOtherData"]),o(Xe,{modelValue:f.visible,"onUpdate:modelValue":p[1]||(p[1]=E=>f.visible=E),title:f.title,direction:f.direction,content:f.content,"code-type":f.codeType,onBeforeClose:oe,onConfirm:H},null,8,["modelValue","title","direction","content","code-type"]),["search"].includes(s.designType)?C("",!0):(r(),k(Le,{key:0,ref_key:"vueFileEl",ref:t},null,512)),o(B,{modelValue:s.previewVisible,"onUpdate:modelValue":p[3]||(p[3]=E=>s.previewVisible=E),title:"预览",fullscreen:!0},{footer:n(()=>[V("div",Ll,[o(U,{size:"small",type:"primary",onClick:x},{default:n(()=>[_(" 提交 ")]),_:1}),o(U,{size:"small",onClick:p[2]||(p[2]=E=>s.previewVisible=!1)},{default:n(()=>[_(" 取消 ")]),_:1})])]),default:n(()=>[s.previewVisible?(r(),k(Ne,{key:0,"form-data":s.formDataPreview,dict:s.formDict,type:1,ref_key:"previewForm",ref:S},null,8,["form-data","dict"])):C("",!0)]),_:1},8,["modelValue"])])}}});export{jl as default};