@form-create/element-ui 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/dist/form-create.esm.js +856 -836
- package/dist/form-create.js +3 -3
- package/dist/form-create.min.js +3 -3
- package/package.json +15 -14
- package/types/config.d.ts +18 -18
package/dist/form-create.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* FormCreate 低代码表单渲染器
|
|
3
|
-
* @form-create/element-ui v2.6.
|
|
3
|
+
* @form-create/element-ui v2.6.1
|
|
4
4
|
* (c) 2018-2024 xaboy
|
|
5
5
|
* Github https://github.com/xaboy/form-create
|
|
6
6
|
* Site https://form-create.com/
|
|
7
7
|
* Released under the MIT License.
|
|
8
8
|
*/
|
|
9
9
|
(function(){"use strict";try{if(typeof document!="undefined"){var o=document.createElement("style");o.appendChild(document.createTextNode('._fc-frame .fc-files img{width:100%;height:100%;display:inline-block;vertical-align:top}._fc-frame .fc-upload-btn{border:1px dashed #c0ccda;cursor:pointer}._fc-frame .fc-upload-cover{opacity:0;position:absolute;inset:0;background:#0009;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}._fc-frame .fc-upload-cover i{color:#fff;font-size:20px;cursor:pointer;margin:0 2px}._fc-frame .fc-files:hover .fc-upload-cover{opacity:1}._fc-frame .el-upload{display:block}._fc-frame .fc-upload-btn,.fc-files{display:inline-block;width:58px;height:58px;text-align:center;line-height:58px;border:1px solid #c0ccda;border-radius:4px;overflow:hidden;background:#fff;position:relative;-webkit-box-shadow:2px 2px 5px rgba(0,0,0,.1);box-shadow:2px 2px 5px #0000001a;margin-right:4px;-webkit-box-sizing:border-box;box-sizing:border-box}._fc-upload .fc-files img{width:100%;height:100%;display:inline-block;vertical-align:top}._fc-upload .fc-upload-btn{border:1px dashed #c0ccda;cursor:pointer}._fc-upload .fc-upload-cover{opacity:0;position:absolute;inset:0;background:#0009;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}._fc-upload .fc-upload-cover i{color:#fff;font-size:20px;cursor:pointer;margin:0 2px}._fc-upload .fc-files:hover .fc-upload-cover{opacity:1}._fc-upload .el-upload{display:block}._fc-upload .fc-upload-btn,._fc-upload .fc-files{display:inline-block;width:58px;height:58px;text-align:center;line-height:58px;border:1px solid #c0ccda;border-radius:4px;overflow:hidden;background:#fff;position:relative;-webkit-box-shadow:2px 2px 5px rgba(0,0,0,.1);box-shadow:2px 2px 5px #0000001a;margin-right:4px;-webkit-box-sizing:border-box;box-sizing:border-box}._fc-group{display:flex;min-height:42px;justify-content:center;flex-direction:column}._fc-group-disabled ._fc-group-btn,._fc-group-disabled ._fc-group-add{cursor:not-allowed}._fc-group-handle{display:flex;flex-direction:row;position:absolute;bottom:-15px;right:30px;border-radius:15px;border:1px dashed #d9d9d9;padding:3px 8px;background-color:#fff}._fc-group-btn{cursor:pointer}._fc-group-idx{position:absolute;bottom:-15px;left:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#eee;border-radius:15px;font-weight:700}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{position:relative;display:flex;flex-direction:column;border:1px dashed #d9d9d9;padding:20px 20px 25px;margin:5px 5px 25px;border-radius:5px}._fc-group-arrow{position:relative;width:20px;height:20px}._fc-group-arrow:before{content:"";position:absolute;top:8px;left:5px;width:9px;height:9px;border-left:2px solid #999;border-top:2px solid #999}._fc-group-arrow:before{transform:rotate(45deg)}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{width:20px;height:20px;position:relative;cursor:pointer}._fc-group-plus-minus:before,._fc-group-plus-minus:after{content:"";position:absolute;top:50%;left:50%;width:60%;height:2px;background-color:#409eff;transform:translate(-50%,-50%)}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{cursor:pointer;width:25px;height:25px;border:1px solid rgb(64 158 255 / 50%);border-radius:15px}._fc-group-add._fc-group-plus-minus:before,._fc-group-add._fc-group-plus-minus:after{width:50%}.form-create .form-create .el-form-item{margin-bottom:22px}.form-create .form-create .el-form-item .el-form-item{margin-bottom:0}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
10
|
-
(function(F,d){typeof exports=="object"&&typeof module!="undefined"?d(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],d):(F=typeof globalThis!="undefined"?globalThis:F||self,d(F.formCreate={},F.Vue))})(this,function(F,d){"use strict";var xr=Object.defineProperty,Jr=Object.defineProperties;var Kr=Object.getOwnPropertyDescriptors;var dt=Object.getOwnPropertySymbols;var Wr=Object.prototype.hasOwnProperty,Gr=Object.prototype.propertyIsEnumerable;var pt=(F,d,I)=>d in F?xr(F,d,{enumerable:!0,configurable:!0,writable:!0,value:I}):F[d]=I,y=(F,d)=>{for(var I in d||(d={}))Wr.call(d,I)&&pt(F,I,d[I]);if(dt)for(var I of dt(d))Gr.call(d,I)&&pt(F,I,d[I]);return F},J=(F,d)=>Jr(F,Kr(d));function I(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function se(){return se=Object.assign?Object.assign.bind():function(t){for(var e,r=1;r<arguments.length;r++)for(var i in e=arguments[r],e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},se.apply(this,arguments)}var mt=["attrs","props","domProps"],yt=["class","style","directives"],gt=["on","nativeOn"],$t=function(t){return t.reduce(function(e,r){for(var i in r)if(!e[i])e[i]=r[i];else if(mt.indexOf(i)!==-1)e[i]=se({},e[i],r[i]);else if(yt.indexOf(i)!==-1){var s=e[i]instanceof Array?e[i]:[e[i]],n=r[i]instanceof Array?r[i]:[r[i]];e[i]=[].concat(s,n)}else if(gt.indexOf(i)!==-1)for(var o in r[i])if(e[i][o]){var a=e[i][o]instanceof Array?e[i][o]:[e[i][o]],u=r[i][o]instanceof Array?r[i][o]:[r[i][o]];e[i][o]=[].concat(a,u)}else e[i][o]=r[i][o];else if(i==="hook")for(var l in r[i])e[i][l]=e[i][l]?vt(e[i][l],r[i][l]):r[i][l];else e[i]=r[i];return e},{})},vt=function(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}},bt=$t;const S=I(bt);function z(t,e){return Object.keys(t).reduce((r,i)=>((!e||e.indexOf(i)===-1)&&r.push(t[i]),r),[])}const Ct={name:"fcCheckbox",props:{formCreateInject:{type:Object,required:!0},value:{type:Array,default:()=>[]},type:String},watch:{"formCreateInject.options":{handler(){this.update()},deep:!0},value(){this.update()}},data(){return{trueValue:[]}},methods:{options(){const t=this.formCreateInject.options;return Array.isArray(t)?t:[]},onInput(t){this.$emit("input",this.options().filter(e=>t.indexOf(e.label)!==-1).map(e=>e.value).filter(e=>e!==void 0))},update(){const t=Array.isArray(this.value)?this.value:[this.value];this.trueValue=this.options().filter(e=>t.indexOf(e.value)!==-1).map(e=>e.label)}},created(){this.update()},render(){return d.h("ElCheckboxGroup",S([{},this.formCreateInject.prop,{},{props:{value:this.trueValue}},{ref:"el",on:{input:this.onInput}}]),[this.options().map((t,e)=>{const r=y({},t),i=this.type==="button"?"ElCheckboxButton":"ElCheckbox";return delete r.value,d.h(i,S([{},{props:r},{key:i+e+"-"+t.value}]))}),z(this.$slots)])},mounted(){this.$emit("fc.el",this.$refs.el)}};function P(t){return Array.isArray(t)?t:[null,void 0,""].indexOf(t)>-1?[]:[t]}const _t={name:"fcFrame",props:{formCreateInject:{type:Object,required:!0},type:{type:String,default:"input"},field:String,helper:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},src:{type:String,required:!0},icon:{type:String,default:"el-icon-upload2"},width:{type:String,default:"500px"},height:{type:String,default:"370px"},maxLength:{type:Number,default:0},okBtnText:{type:String,default:"确定"},closeBtnText:{type:String,default:"关闭"},modalTitle:String,handleIcon:{type:[String,Boolean],default:void 0},title:String,allowRemove:{type:Boolean,default:!0},onOpen:{type:Function,default:()=>{}},onOk:{type:Function,default:()=>{}},onCancel:{type:Function,default:()=>{}},onLoad:{type:Function,default:()=>{}},onBeforeRemove:{type:Function,default:()=>{}},onRemove:{type:Function,default:()=>{}},onHandle:{type:Function,default(t){this.previewImage=this.getSrc(t),this.previewVisible=!0}},modal:{type:Object,default:()=>({})},srcKey:{type:[String,Number]},value:[Array,String,Number,Object],previewMask:void 0,footer:{type:Boolean,default:!0},reload:{type:Boolean,default:!0},closeBtn:{type:Boolean,default:!0},okBtn:{type:Boolean,default:!0}},data(){return{fileList:P(this.value),previewVisible:!1,frameVisible:!1,previewImage:""}},watch:{value(t){this.fileList=P(t)},fileList(t){const e=this.maxLength===1?t[0]||"":t;this.$emit("input",e),this.$emit("change",e)},src(t){this.modalVm&&(this.modalVm.src=t)}},methods:{key(t){return t},closeModel(t){this.$emit(t?"$close":"$ok"),this.reload&&(this.$off("$ok"),this.$off("$close")),this.frameVisible=!1},handleCancel(){this.previewVisible=!1},showModel(){this.disabled||this.onOpen()===!1||(this.frameVisible=!0)},makeInput(){const t={type:"text",value:this.fileList.map(e=>this.getSrc(e)).toString(),readonly:!0};return d.h("ElInput",S([{},{props:t},{key:this.key("input")}]),[this.fileList.length?d.h("i",{slot:"suffix",class:"el-input__icon el-icon-circle-close",on:{click:()=>this.fileList=[]}}):null,d.h("ElButton",S([{attrs:{icon:this.icon}},{on:{click:()=>this.showModel()}},{slot:"append"}]))])},makeGroup(t){return(!this.maxLength||this.fileList.length<this.maxLength)&&t.push(this.makeBtn()),d.h("div",{key:this.key("group")},[...t])},makeItem(t,e){return d.h("div",{class:"fc-files",key:this.key("file"+t)},[...e])},valid(t){const e=this.formCreateInject.field||this.field;if(e&&t!==e)throw new Error("[frame]无效的字段值")},makeIcons(t,e){if(this.handleIcon!==!1||this.allowRemove===!0){const r=[];return(this.type!=="file"&&this.handleIcon!==!1||this.type==="file"&&this.handleIcon)&&r.push(this.makeHandleIcon(t,e)),this.allowRemove&&r.push(this.makeRemoveIcon(t,e)),d.h("div",{class:"fc-upload-cover",key:this.key("uc")},[r])}},makeHandleIcon(t,e){return d.h("i",{class:this.handleIcon===!0||this.handleIcon===void 0?"el-icon-view":this.handleIcon,on:{click:()=>this.handleClick(t)},key:this.key("hi"+e)})},makeRemoveIcon(t,e){return d.h("i",{class:"el-icon-delete",on:{click:()=>this.handleRemove(t)},key:this.key("ri"+e)})},makeFiles(){return this.makeGroup(this.fileList.map((t,e)=>this.makeItem(e,[d.h("i",{class:"el-icon-tickets",on:{click:()=>this.handleClick(t)}}),this.makeIcons(t,e)])))},makeImages(){return this.makeGroup(this.fileList.map((t,e)=>this.makeItem(e,[d.h("img",{attrs:{src:this.getSrc(t)}}),this.makeIcons(t,e)])))},makeBtn(){return d.h("div",{class:"fc-upload-btn",on:{click:()=>this.showModel()},key:this.key("btn")},[d.h("i",{class:this.icon})])},handleClick(t){return this.onHandle(t)},handleRemove(t){this.disabled||this.onBeforeRemove(t)!==!1&&(this.fileList.splice(this.fileList.indexOf(t),1),this.onRemove(t))},getSrc(t){return this.srcKey?t[this.srcKey]:t},frameLoad(t){this.onLoad(t);try{this.helper===!0&&(t.form_create_helper={api:this.formCreateInject.api,close:e=>{this.valid(e),this.closeModel()},set:(e,r)=>{this.valid(e),this.disabled||this.$emit("input",r)},get:e=>(this.valid(e),this.value),onOk:e=>this.$on("$ok",e),onClose:e=>this.$on("$close",e)})}catch(e){console.log(e)}},makeFooter(){const{okBtnText:t,closeBtnText:e,closeBtn:r,okBtn:i,footer:s}=this.$props;if(s)return d.h("div",{slot:"footer"},[r?d.h("ElButton",{on:{click:()=>this.onCancel()!==!1&&(this.frameVisible=!1)}},[e]):null,i?d.h("ElButton",{attrs:{type:"primary"},on:{click:()=>this.onOk()!==!1&&this.closeModel()}},[t]):null])}},render(){const t=this.type;let e;t==="input"?e=this.makeInput():t==="image"?e=this.makeImages():e=this.makeFiles();const{width:r="30%",height:i,src:s,title:n,modalTitle:o}=this.$props;return this.$nextTick(()=>{this.$refs.frame&&this.frameLoad(this.$refs.frame.contentWindow||{})}),d.h("div",{class:"_fc-frame"},[e,d.h("el-dialog",S([{},{props:{appendToBody:!0,modal:this.previewMask,title:o,visible:this.previewVisible}},{on:{close:this.handleCancel}}]),[d.h("img",{style:"width: 100%",attrs:{src:this.previewImage}})]),d.h("el-dialog",S([{},{props:J(y({width:r,title:n,appendToBody:!0},this.modal),{visible:this.frameVisible})},{on:{close:()=>this.closeModel(!0)}}]),[this.frameVisible||!this.reload?d.h("iframe",{ref:"frame",attrs:{src:s,frameBorder:"0"},style:{height:i,border:"0 none",width:"100%"}}):null,this.makeFooter()])])},mounted(){this.$on("fc.closeModal",this.closeModal)}},kt={name:"fcRadio",props:{formCreateInject:{type:Object,required:!0},value:{},type:String},watch:{"formCreateInject.options":{handler(){this.update()},deep:!0},value(){this.update()}},data(){return{trueValue:[]}},methods:{options(){const t=this.formCreateInject.options;return Array.isArray(t)?t:[]},onInput(t){this.$emit("input",this.options().filter(e=>e.label===t).reduce((e,r)=>r.value,""))},update(){this.trueValue=this.options().filter(t=>t.value===this.value).reduce((t,e)=>e.label,"")}},created(){this.update()},render(){return d.h("ElRadioGroup",S([{},this.formCreateInject.prop,{ref:"el"},{props:{value:this.trueValue}},{on:{input:this.onInput}}]),[this.options().map((t,e)=>{const r=y({},t),i=this.type==="button"?"ElRadioButton":"ElRadio";return delete r.value,d.h(i,S([{},{props:r},{key:i+e+"-"+t.value}]))}),z(this.$slots)])},mounted(){this.$emit("fc.el",this.$refs.el)}},c={type(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"},Undef(t){return t==null},Element(t){return typeof t=="object"&&t!==null&&t.nodeType===1&&!c.Object(t)},trueArray(t){return Array.isArray(t)&&t.length>0},Function(t){const e=this.getType(t);return e==="Function"||e==="AsyncFunction"},getType(t){const e=Object.prototype.toString.call(t);return/^\[object (.*)\]$/.exec(e)[1]},empty(t){return t==null||Array.isArray(t)&&Array.isArray(t)&&!t.length?!0:typeof t=="string"&&!t}};["Date","Object","String","Boolean","Array","Number"].forEach(t=>{c[t]=function(e){return c.type(e,t)}});function k(t,e){return{}.hasOwnProperty.call(t,e)}const Ot={name:"fcSelect",functional:!0,props:{formCreateInject:{type:Object,required:!0}},render(t,e){const r=(n,o)=>{const a=n.slot;return t("ElOption",S([{},{props:n},{key:""+o+"-"+n.value}]),[a?t("template",{slot:n.slotName||"default"},[c.Function(a)?n.slot(t):a]):null])},i=(n,o)=>t("ElOptionGroup",{attrs:{label:n.label},key:""+o+"-"+n.label},[c.trueArray(n.options)&&n.options.map((a,u)=>r(a,u))]),s=e.props.formCreateInject.options;return t("ElSelect",S([{},e.data,{ref:"el"}]),[(Array.isArray(s)?s:[]).map((n,o)=>k(n||"","options")?i(n,o):r(n,o)),e.children])},mounted(){this.$emit("fc.el",this.$refs.el)}},wt={name:"fcTree",formCreateParser:{mergeProp(t){const e=t.prop.props;e.nodeKey||(e.nodeKey="id"),e.props||(e.props={label:"title"})}},props:{formCreateInject:{type:Object,required:!0},type:{type:String,default:"checked"},value:{type:[Array,String,Number],default:()=>[]}},watch:{value(){this.setValue()}},methods:{onChange(){this.updateValue()},updateValue(){if(!this.$refs.tree)return;const t=this.type.toLocaleLowerCase();let e;t==="selected"?e=this.$refs.tree.getCurrentKey():e=this.$refs.tree.getCheckedKeys(),this.$emit("input",e)},setValue(){this.type.toLocaleLowerCase()==="selected"?this.$refs.tree.setCurrentKey(this.value):this.$refs.tree.setCheckedKeys(P(this.value))}},render(){return d.h("ElTree",S([{},this.formCreateInject.prop,{ref:"tree",on:{check:()=>this.updateValue(),"node-click":()=>this.updateValue()}}]),[z(this.$slots)])},mounted(){this.setValue(),this.$emit("fc.el",this.$refs.tree)}};function _e(t,e){return{url:t,name:Ft(t),uid:e}}function Ft(t){return(""+t).split("/").pop()}const St={name:"fcUpload",props:{formCreateInject:{type:Object,required:!0},onHandle:{type:Function,default(t){this.previewImage=t.url,this.previewVisible=!0}},uploadType:{type:String,default:"file"},limit:{type:Number,default:0},allowRemove:{type:Boolean,default:!0},previewMask:void 0,modalTitle:String,handleIcon:{type:[String,Boolean],default:()=>{}},value:[Array,String]},data(){return{uploadList:[],previewVisible:!1,previewImage:"",cacheFiles:[]}},created(){this.formCreateInject.prop.props.showFileList===void 0&&(this.formCreateInject.prop.props.showFileList=!1),this.formCreateInject.prop.props.fileList=P(this.value).map(_e)},watch:{value(t){this.$refs.upload.uploadFiles.every(e=>!e.status||e.status==="success")&&(this.$refs.upload.uploadFiles=P(t).map(_e),this.uploadList=this.$refs.upload.uploadFiles)},limit(t,e){(e===1||t===1)&&this.update()}},methods:{key(t){return t},isDisabled(){return this.formCreateInject.prop.props.disabled===!0},onRemove(t){this.isDisabled()||this.$refs.upload.handleRemove(t)},handleClick(t){this.onHandle(t)},makeItem(t,e){return this.uploadType==="image"?d.h("img",{attrs:{src:t.url},key:this.key("img"+e)}):d.h("i",{class:"el-icon-tickets",key:this.key("i"+e)})},makeRemoveIcon(t,e){return d.h("i",{class:"el-icon-delete",on:{click:()=>this.onRemove(t)},key:this.key("ri"+e)})},makeHandleIcon(t,e){return d.h("i",{class:this.handleIcon===!0||this.handleIcon===void 0?"el-icon-view":this.handleIcon,on:{click:()=>this.handleClick(t)},key:this.key("hi"+e)})},makeProgress(t,e){return d.h("ElProgress",S([{},{props:{percentage:t.percentage,type:"circle",width:52}},{style:"margin-top:2px;",key:this.key("pg"+e)}]))},makeIcons(t,e){const r=[];if(this.allowRemove||this.handleIcon!==!1)return(this.uploadType!=="file"&&this.handleIcon!==!1||this.uploadType==="file"&&this.handleIcon)&&r.push(this.makeHandleIcon(t,e)),this.allowRemove&&r.push(this.makeRemoveIcon(t,e)),d.h("div",{class:"fc-upload-cover"},[r])},makeFiles(){return this.uploadList.map((t,e)=>this.$scopedSlots.fileList?this.$scopedSlots.fileList({file:t,index:e,vm:this}):d.h("div",{key:this.key(e),class:"fc-files"},[t.percentage!==void 0&&t.status!=="success"?this.makeProgress(t,e):[this.makeItem(t,e),this.makeIcons(t,e)]]))},makeUpload(){const t=!this.limit||this.limit>this.uploadList.length;return d.h("ElUpload",S([{},this.formCreateInject.prop,{},{style:{display:"inline-block"},key:this.key("upload"),ref:"upload"}]),[t?d.h("template",{slot:"default"},[this.$slots.default||d.h("div",{class:"fc-upload-btn"},[d.h("i",{class:"el-icon-upload2"})])]):null,z(this.$slots,["default"])])},update(){let t=this.$refs.upload.uploadFiles.map(e=>e.url).filter(e=>e!==void 0);(this.cacheFiles.length!==t.length||!t.length)&&(this.cacheFiles=[...t],this.$emit("input",this.limit===1?t[0]||"":t))},handleCancel(){this.previewVisible=!1}},render(){return this.$refs.upload&&(this.formCreateInject.prop.props.showFileList===void 0&&(this.formCreateInject.prop.props.showFileList=this.$refs.upload.showFileList),this.formCreateInject.prop.props.fileList=this.$refs.upload.fileList),d.h("div",{class:"_fc-upload"},[[this.formCreateInject.prop.props.showFileList?[]:this.makeFiles(),this.makeUpload()],d.h("el-dialog",S([{},{props:{appendToBody:!0,modal:this.previewMask,title:this.modalTitle,visible:this.previewVisible}},{on:{close:this.handleCancel}}]),[d.h("img",{attrs:{alt:"example",src:this.previewImage},style:"width: 100%"})])])},mounted(){this.uploadList=this.$refs.upload.uploadFiles,this.$watch(()=>this.$refs.upload.uploadFiles,()=>{this.update()},{deep:!0}),this.$emit("fc.el",this.$refs.upload)}};function E(t,e,r){d.set(t,e,r)}function N(t,e){d.delete(t,e)}function K(t,e={},r){let i=!1;for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)){let n=e[s];if((i=Array.isArray(n))||c.Object(n)){let o=t[s]===void 0;if(i)i=!1,o&&E(t,s,[]);else if(n._clone&&r!==void 0)if(r)n=n.getRule(),o&&E(t,s,{});else{E(t,s,n._clone());continue}else o&&E(t,s,{});t[s]=K(t[s],n,r)}else E(t,s,n),c.Undef(n)||(c.Undef(n.__json)||(t[s].__json=n.__json),c.Undef(n.__origin)||(t[s].__origin=n.__origin))}return r!==void 0&&Array.isArray(t)?t.filter(s=>!s||!s.__ctrl):t}function L(t){return K({},{value:t}).value}const Et=Object.assign||function(t){for(let e,r=1;r<arguments.length;r++)for(let i in e=arguments[r],e)Object.prototype.hasOwnProperty.call(e,i)&&E(t,i,e[i]);return t};function m(){return Et.apply(this,arguments)}const Rt=[Ct,_t,kt,Ot,wt,St,{name:"fcGroup",props:{field:String,rule:[Array,Object],rules:Array,expand:Number,options:Object,formCreateInject:{type:Object,required:!0},button:{type:Boolean,default:!0},max:{type:Number,default:0},min:{type:Number,default:0},value:{type:Array,default:()=>[]},sortBtn:{type:Boolean,default:!0},defaultValue:Object,disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},onBeforeRemove:{type:Function,default:()=>{}},onBeforeAdd:{type:Function,default:()=>{}},parse:Function},data(){return{len:0,cacheRule:{},cacheValue:{},sort:[],type:void 0}},computed:{formRule(){return this.rules?this.rules:this.rule?Array.isArray(this.rule)?this.rule:[this.rule]:[]}},watch:{cacheRule:{handler(t){this.sort=Object.keys(t)},immediate:!0},formRule:{handler(t,e){Object.keys(this.cacheRule).forEach(r=>{const i=this.cacheRule[r];if(i.$f){const s=i.$f.formData();if(t===e)i.$f.deferSyncValue(()=>{K(i.rule,t),i.$f.setValue(s)},!0);else{const n=i.$f.formData();i.$f.once("reloading",()=>{i.$f.setValue(n)}),i.rule=L(t)}}})},deep:!0},expand(t){let e=t-this.value.length;e>0&&this.expandRule(e)},value(t,e){t=t||[];let r=this.sort,i=r.length,s=i-t.length;if(s<0){for(let n=s;n<0;n++)this.addRule(t.length+n);this.sort=Object.keys(this.cacheRule);for(let n=0;n<i;n++)this.setValue(r[n],t[n])}else{if(s>0){for(let n=0;n<s;n++)this.removeRule(r[i-n-1]);this.sort=Object.keys(this.cacheRule)}t.forEach((n,o)=>{this.setValue(r[o],t[o])})}}},methods:{_value(t){return t&&k(t,this.field)?t[this.field]:t},cache(t,e){this.cacheValue[t]=JSON.stringify(e)},input(t){this.$emit("input",t),this.$emit("change",t)},formData(t,e){const r=this.cacheRule,i=this.sort;if(i.filter(n=>r[n].$f).length!==i.length)return;const s=i.map(n=>{const o=t===n?e:y({},this.cacheRule[n].$f.form),a=this.field?o[this.field]||null:o;return this.cache(n,a),a});this.input(s)},setValue(t,e){const r=this.field,i=this.cacheRule[t].$f;r&&(e={[r]:this._value(e)}),this.cacheValue[t]!==JSON.stringify(r?e[r]:e)&&(this.cache(t,e),i&&i.coverValue(e||{}))},addRule(t,e){const r=this.formCreateInject.form.copyRules(this.formRule),i=this.options?y({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){i.formData||(i.formData={});const s=L(this.defaultValue);m(i.formData,this.field?{[this.field]:s}:s)}this.parse&&this.parse({rule:r,options:i,index:this.sort.length}),this.$set(this.cacheRule,++this.len,{rule:r,options:i}),e&&this.$nextTick(()=>this.$emit("add",r,Object.keys(this.cacheRule).length-1))},add$f(t,e,r){this.cacheRule[e].$f=r,this.$nextTick(()=>{this.$emit("itemMounted",r,Object.keys(this.cacheRule).indexOf(e))})},removeRule(t,e){const r=Object.keys(this.cacheRule).indexOf(t);this.$delete(this.cacheRule,t),this.$delete(this.cacheValue,t),e&&this.$nextTick(()=>this.$emit("remove",r))},add(t){this.disabled||this.onBeforeAdd(this.value)===!1||this.addRule(t,!0)},del(t,e){if(this.disabled||this.onBeforeRemove(this.value,t)===!1)return;this.removeRule(e,!0);const r=[...this.value];r.splice(t,1),this.input(r)},addIcon(t){return d.h("div",{class:"_fc-group-btn _fc-group-plus-minus",on:{click:this.add}})},delIcon(t,e){return d.h("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",on:{click:()=>this.del(t,e)}})},sortUpIcon(t){return d.h("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",on:{click:()=>this.changeSort(t,-1)}})},sortDownIcon(t){return d.h("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",on:{click:()=>this.changeSort(t,1)}})},changeSort(t,e){const r=this.sort[t];this.$set(this.sort,t,this.sort[t+e]),this.sort[t+e]=r,this.formData(0)},makeIcon(t,e,r){if(this.$scopedSlots.button)return this.$scopedSlots.button({total:t,index:e,vm:this,key:r,del:()=>this.del(e,r),add:this.add});const i=[];return(!this.max||t<this.max)&&t===e+1&&i.push(this.addIcon(r)),t>this.min&&i.push(this.delIcon(e,r)),this.sortBtn&&e&&i.push(this.sortUpIcon(e)),this.sortBtn&&e!==t-1&&i.push(this.sortDownIcon(e)),i},emitEvent(t,e,r,i){this.$emit(t,...e,this.cacheRule[i].$f,r)},expandRule(t){for(let e=0;e<t;e++)this.value.push(this.field?null:{})}},created(){this.type=this.formCreateInject.form.$form();const t=(this.expand||0)-this.value.length;t>0&&this.expandRule(t);for(let e=0;e<this.value.length;e++)this.addRule(e)},render(){const t=this.sort,e=this.button,r=this.type,i=this.disabled,s=t.length===0?this.$scopedSlots.default?this.$scopedSlots.default({vm:this,add:this.add}):d.h("div",{key:"a_def",class:"_fc-group-plus-minus _fc-group-add",on:{click:this.add}}):t.map((n,o)=>{const{rule:a,options:u}=this.cacheRule[n],l=e&&!i?this.makeIcon(t.length,o,n):[];return d.h("div",{class:"_fc-group-container",key:n},[d.h(r,S([{key:n},{on:{"update:value":f=>this.formData(n,f),"emit-event":(f,...g)=>this.emitEvent(f,g,o,n),input:f=>this.add$f(o,n,f)}},{},{props:{disabled:i,inFor:!0,value:this.field?{[this.field]:this._value(this.value[o])}:this.value[o],rule:a,option:u,extendOption:!0}}])),d.h("div",{class:"_fc-group-idx"},[o+1]),l.length?d.h("div",{class:"_fc-group-handle"},[l]):null])});return d.h("div",{key:"con",class:"_fc-group "+(i?"_fc-group-disabled":"")},[s])}},{name:"fcSubForm",props:{rule:Array,options:Object,formCreateInject:{type:Object,required:!0},value:{type:Object,default:()=>({})},disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0}},data(){return{cacheRule:{},cacheValue:{},type:void 0}},watch:{value(t){this.setValue(t)}},methods:{formData(t){this.cacheValue=JSON.stringify(t),this.$emit("input",t),this.$emit("change",t)},setValue(t){const e=JSON.stringify(t);this.cacheValue!==e&&(this.cacheValue=e,this.cacheRule.$f.coverValue(t||{}))},addRule(){const t=this.options?this.options:{submitBtn:!1,resetBtn:!1};t.formData=y({},this.value||{}),this.cacheRule={rule:this.rule,options:t}},add$f(t){this.cacheRule.$f=t,this.$nextTick(()=>{this.$emit("itemMounted",t)})},emitEvent(t,...e){this.$emit(t,...e)}},created(){this.addRule(),this.type=this.formCreateInject.form.$form()},render(){const{rule:t,options:e}=this.cacheRule,r=this.type;return d.h(r,S([{},{on:{"update:value":this.formData,"emit-event":this.emitEvent,input:this.add$f}},{},{props:{rule:t,option:e,disabled:this.disabled,extendOption:!0}}]))}}],ke="FormCreate",oe=(t,e)=>{if(!(!t||t===e)){if(t.formCreateInject)return t.formCreateInject;if(t.$parent)return oe(t.$parent,e)}};function jt(t,e,r){return{name:ke,componentName:ke,model:{prop:"api"},components:e,directives:r,provide(){return{$pfc:this}},inject:{$pfc:{default:null}},props:{rule:{type:Array,required:!0},option:{type:Object,default:()=>({})},extendOption:Boolean,disabled:{type:Boolean,default:void 0},value:Object,api:Object,name:String,subForm:{type:Boolean,default:!0},inFor:Boolean},data(){return{formData:void 0,destroyed:!1,validate:{},$f:void 0,isShow:!0,unique:1,renderRule:[...this.rule||[]],ctxInject:{},updateValue:JSON.stringify(this.value||{}),isMore:!!this.inFor}},render(){return this.formCreate.render()},methods:{_refresh(){++this.unique},_renderRule(){this.renderRule=[...this.rule||[]]},_updateValue(i){this.destroyed||(this.updateValue=JSON.stringify(i),this.$emit("update:value",i))}},watch:{value:{handler(i){JSON.stringify(i||{})!==this.updateValue&&(this.$f.config.forceCoverValue?this.$f.coverValue(i||{}):this.$f.setValue(i||{}))},deep:!0},option:{handler(){this.formCreate.initOptions(),this.$f.refresh()},deep:!0},rule(i){i.length===this.renderRule.length&&i.every(s=>this.renderRule.indexOf(s)>-1)||(this.formCreate.$handle.reloadRule(i),this._renderRule())},disabled(){this.$f.refresh()}},beforeCreate(){this.formCreate=new t(this),Object.keys(this.formCreate.prop).forEach(i=>{m(this.$options[i],this.formCreate.prop[i])}),this.$emit("beforeCreate",this.formCreate.api())},created(){const i=this,s=this.formCreate.api(),n=()=>{if(i.$pfc){const a=oe(i,i.$pfc);if(a){let u;i.isMore?(u=P(a.getSubForm()),u.push(s)):u=s,a.subForm(u)}}},o=()=>{const a=oe(i,i.$pfc);if(a)if(i.isMore){const u=P(a.getSubForm()),l=u.indexOf(s);l>-1&&u.splice(l,1)}else a.subForm()};i.$on("hook:beforeDestroy",()=>{o()}),this.$watch(()=>this.subForm,a=>{a?n():o()},{immediate:!0})}}}const Oe=["attrs","props","domProps","scopedSlots"],we=["class","style","directives"],Fe=["on","nativeOn"],M=(t,e={},r={})=>{const i=[...Oe,...r.normal||[]],s=[...we,...r.array||[]],n=[...Fe,...r.functional||[]],o=r.props||[];return t.reduce((a,u)=>{for(const l in u)if(a[l])if(o.indexOf(l)>-1)a[l]=M([u[l]],a[l]);else if(i.indexOf(l)>-1)a[l]=y(y({},a[l]),u[l]);else if(s.indexOf(l)>-1){const f=a[l]instanceof Array?a[l]:[a[l]],g=u[l]instanceof Array?u[l]:[u[l]];a[l]=[...f,...g]}else if(n.indexOf(l)>-1)for(const f in u[l])if(a[l][f]){const g=a[l][f]instanceof Array?a[l][f]:[a[l][f]],b=u[l][f]instanceof Array?u[l][f]:[u[l][f]];a[l][f]=[...g,...b]}else a[l][f]=u[l][f];else if(l==="hook")for(let f in u[l])a[l][f]?a[l][f]=At(a[l][f],u[l][f]):a[l][f]=u[l][f];else a[l]=u[l];else i.indexOf(l)>-1||n.indexOf(l)>-1||o.indexOf(l)>-1?a[l]=y({},u[l]):s.indexOf(l)>-1?a[l]=u[l]instanceof Array?[...u[l]]:typeof u[l]=="object"?y({},u[l]):u[l]:a[l]=u[l];return a},e)},At=(t,e)=>function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)},Se=["type","slot","emitPrefix","value","name","native","hidden","display","inject","options","emit","nativeEmit","link","prefix","suffix","update","sync","optionsTo","key","preview","component","cache"],ae=["validate","children","control"],le=["effect","deep"];function It(){return[...Se,...Oe,...we,...Fe,...ae,...le]}function ue(t,e,r){return`[form-create ${t}]: ${e}`}function Pt(t,e){console.warn(ue("tip",t))}function he(t,e){console.error(ue("err",t))}function Tt(t){he(t.toString()),console.error(t)}const fe="[[FORM-CREATE-PREFIX-",ce="-FORM-CREATE-SUFFIX]]",Ee="$FN:",Re="$FNX:",W="function";function je(t,e){return JSON.stringify(K(Array.isArray(t)?[]:{},t,!0),function(r,i){if(!(i&&i._isVue===!0)){if(typeof i!==W)return i;if(i.__json)return i.__json;if(i.__origin&&(i=i.__origin),!i.__emit)return fe+i+ce}},e)}function Ae(t){return new Function("return "+t)()}function q(t,e){if(t&&c.String(t)&&t.length>4){let r=t.trim(),i=!1;try{if(r.indexOf(ce)>0&&r.indexOf(fe)===0)r=r.replace(ce,"").replace(fe,""),i=!0;else if(r.indexOf(Ee)===0)r=r.replace(Ee,""),i=!0;else{if(r.indexOf(Re)===0)return r=Ae("function($inject){"+r.replace(Re,"")+"}"),r.__json=t,r.__inject=!0,r;!e&&r.indexOf(W)===0&&r!==W&&(i=!0)}if(!i)return t;const s=Ae(r.indexOf(W)===-1&&r.indexOf("(")!==0?W+" "+r:r);return s.__json=t,s}catch(s){he(`解析失败:${r}
|
|
10
|
+
(function(E,b){typeof exports=="object"&&typeof module!="undefined"?b(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],b):(E=typeof globalThis!="undefined"?globalThis:E||self,b(E.formCreate={},E.Vue))})(this,function(E,b){"use strict";var xr=Object.defineProperty,Jr=Object.defineProperties;var Kr=Object.getOwnPropertyDescriptors;var dt=Object.getOwnPropertySymbols;var Wr=Object.prototype.hasOwnProperty,Gr=Object.prototype.propertyIsEnumerable;var pt=(E,b,I)=>b in E?xr(E,b,{enumerable:!0,configurable:!0,writable:!0,value:I}):E[b]=I,y=(E,b)=>{for(var I in b||(b={}))Wr.call(b,I)&&pt(E,I,b[I]);if(dt)for(var I of dt(b))Gr.call(b,I)&&pt(E,I,b[I]);return E},J=(E,b)=>Jr(E,Kr(b));function I(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function se(){return se=Object.assign?Object.assign.bind():function(t){for(var e,r=1;r<arguments.length;r++)for(var i in e=arguments[r],e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},se.apply(this,arguments)}var mt=["attrs","props","domProps"],yt=["class","style","directives"],gt=["on","nativeOn"],$t=function(t){return t.reduce(function(e,r){for(var i in r)if(!e[i])e[i]=r[i];else if(mt.indexOf(i)!==-1)e[i]=se({},e[i],r[i]);else if(yt.indexOf(i)!==-1){var s=e[i]instanceof Array?e[i]:[e[i]],n=r[i]instanceof Array?r[i]:[r[i]];e[i]=[].concat(s,n)}else if(gt.indexOf(i)!==-1)for(var o in r[i])if(e[i][o]){var a=e[i][o]instanceof Array?e[i][o]:[e[i][o]],u=r[i][o]instanceof Array?r[i][o]:[r[i][o]];e[i][o]=[].concat(a,u)}else e[i][o]=r[i][o];else if(i==="hook")for(var l in r[i])e[i][l]=e[i][l]?vt(e[i][l],r[i][l]):r[i][l];else e[i]=r[i];return e},{})},vt=function(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}},bt=$t;const F=I(bt);function z(t,e){return Object.keys(t).reduce((r,i)=>((!e||e.indexOf(i)===-1)&&r.push(t[i]),r),[])}const Ct={name:"fcCheckbox",props:{formCreateInject:{type:Object,required:!0},value:{type:Array,default:()=>[]},type:String},watch:{"formCreateInject.options":{handler(){this.update()},deep:!0},value(){this.update()}},data(){return{trueValue:[]}},methods:{options(){const t=this.formCreateInject.options;return Array.isArray(t)?t:[]},onInput(t){this.$emit("input",this.options().filter(e=>t.indexOf(e.label)!==-1).map(e=>e.value).filter(e=>e!==void 0))},update(){const t=Array.isArray(this.value)?this.value:[this.value];this.trueValue=this.options().filter(e=>t.indexOf(e.value)!==-1).map(e=>e.label)}},created(){this.update()},render(){const t=arguments[0];return t("ElCheckboxGroup",F([{},this.formCreateInject.prop,{},{props:{value:this.trueValue}},{ref:"el",on:{input:this.onInput}}]),[this.options().map((e,r)=>{const i=y({},e),s=this.type==="button"?"ElCheckboxButton":"ElCheckbox";return delete i.value,t(s,F([{},{props:i},{key:s+r+"-"+e.value}]))}),z(this.$slots)])},mounted(){this.$emit("fc.el",this.$refs.el)}};function V(t){return Array.isArray(t)?t:[null,void 0,""].indexOf(t)>-1?[]:[t]}const _t={name:"fcFrame",props:{formCreateInject:{type:Object,required:!0},type:{type:String,default:"input"},field:String,helper:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},src:{type:String,required:!0},icon:{type:String,default:"el-icon-upload2"},width:{type:String,default:"500px"},height:{type:String,default:"370px"},maxLength:{type:Number,default:0},okBtnText:{type:String,default:"确定"},closeBtnText:{type:String,default:"关闭"},modalTitle:String,handleIcon:{type:[String,Boolean],default:void 0},title:String,allowRemove:{type:Boolean,default:!0},onOpen:{type:Function,default:()=>{}},onOk:{type:Function,default:()=>{}},onCancel:{type:Function,default:()=>{}},onLoad:{type:Function,default:()=>{}},onBeforeRemove:{type:Function,default:()=>{}},onRemove:{type:Function,default:()=>{}},onHandle:{type:Function,default(t){this.previewImage=this.getSrc(t),this.previewVisible=!0}},modal:{type:Object,default:()=>({})},srcKey:{type:[String,Number]},value:[Array,String,Number,Object],previewMask:void 0,footer:{type:Boolean,default:!0},reload:{type:Boolean,default:!0},closeBtn:{type:Boolean,default:!0},okBtn:{type:Boolean,default:!0}},data(){return{fileList:V(this.value),previewVisible:!1,frameVisible:!1,previewImage:""}},watch:{value(t){this.fileList=V(t)},fileList(t){const e=this.maxLength===1?t[0]||"":t;this.$emit("input",e),this.$emit("change",e)},src(t){this.modalVm&&(this.modalVm.src=t)}},methods:{key(t){return t},closeModel(t){this.$emit(t?"$close":"$ok"),this.reload&&(this.$off("$ok"),this.$off("$close")),this.frameVisible=!1},handleCancel(){this.previewVisible=!1},showModel(){this.disabled||this.onOpen()===!1||(this.frameVisible=!0)},makeInput(){const t=this.$createElement,e={type:"text",value:this.fileList.map(r=>this.getSrc(r)).toString(),readonly:!0};return t("ElInput",F([{},{props:e},{key:this.key("input")}]),[this.fileList.length?t("i",{slot:"suffix",class:"el-input__icon el-icon-circle-close",on:{click:()=>this.fileList=[]}}):null,t("ElButton",F([{attrs:{icon:this.icon}},{on:{click:()=>this.showModel()}},{slot:"append"}]))])},makeGroup(t){const e=this.$createElement;return(!this.maxLength||this.fileList.length<this.maxLength)&&t.push(this.makeBtn()),e("div",{key:this.key("group")},[...t])},makeItem(t,e){const r=this.$createElement;return r("div",{class:"fc-files",key:this.key("file"+t)},[...e])},valid(t){const e=this.formCreateInject.field||this.field;if(e&&t!==e)throw new Error("[frame]无效的字段值")},makeIcons(t,e){const r=this.$createElement;if(this.handleIcon!==!1||this.allowRemove===!0){const i=[];return(this.type!=="file"&&this.handleIcon!==!1||this.type==="file"&&this.handleIcon)&&i.push(this.makeHandleIcon(t,e)),this.allowRemove&&i.push(this.makeRemoveIcon(t,e)),r("div",{class:"fc-upload-cover",key:this.key("uc")},[i])}},makeHandleIcon(t,e){const r=this.$createElement;return r("i",{class:this.handleIcon===!0||this.handleIcon===void 0?"el-icon-view":this.handleIcon,on:{click:()=>this.handleClick(t)},key:this.key("hi"+e)})},makeRemoveIcon(t,e){const r=this.$createElement;return r("i",{class:"el-icon-delete",on:{click:()=>this.handleRemove(t)},key:this.key("ri"+e)})},makeFiles(){const t=this.$createElement;return this.makeGroup(this.fileList.map((e,r)=>this.makeItem(r,[t("i",{class:"el-icon-tickets",on:{click:()=>this.handleClick(e)}}),this.makeIcons(e,r)])))},makeImages(){const t=this.$createElement;return this.makeGroup(this.fileList.map((e,r)=>this.makeItem(r,[t("img",{attrs:{src:this.getSrc(e)}}),this.makeIcons(e,r)])))},makeBtn(){const t=this.$createElement;return t("div",{class:"fc-upload-btn",on:{click:()=>this.showModel()},key:this.key("btn")},[t("i",{class:this.icon})])},handleClick(t){return this.onHandle(t)},handleRemove(t){this.disabled||this.onBeforeRemove(t)!==!1&&(this.fileList.splice(this.fileList.indexOf(t),1),this.onRemove(t))},getSrc(t){return this.srcKey?t[this.srcKey]:t},frameLoad(t){this.onLoad(t);try{this.helper===!0&&(t.form_create_helper={api:this.formCreateInject.api,close:e=>{this.valid(e),this.closeModel()},set:(e,r)=>{this.valid(e),this.disabled||this.$emit("input",r)},get:e=>(this.valid(e),this.value),onOk:e=>this.$on("$ok",e),onClose:e=>this.$on("$close",e)})}catch(e){console.log(e)}},makeFooter(){const t=this.$createElement,{okBtnText:e,closeBtnText:r,closeBtn:i,okBtn:s,footer:n}=this.$props;if(n)return t("div",{slot:"footer"},[i?t("ElButton",{on:{click:()=>this.onCancel()!==!1&&(this.frameVisible=!1)}},[r]):null,s?t("ElButton",{attrs:{type:"primary"},on:{click:()=>this.onOk()!==!1&&this.closeModel()}},[e]):null])}},render(){const t=arguments[0],e=this.type;let r;e==="input"?r=this.makeInput():e==="image"?r=this.makeImages():r=this.makeFiles();const{width:i="30%",height:s,src:n,title:o,modalTitle:a}=this.$props;return this.$nextTick(()=>{this.$refs.frame&&this.frameLoad(this.$refs.frame.contentWindow||{})}),t("div",{class:"_fc-frame"},[r,t("el-dialog",F([{},{props:{appendToBody:!0,modal:this.previewMask,title:a,visible:this.previewVisible}},{on:{close:this.handleCancel}}]),[t("img",{style:"width: 100%",attrs:{src:this.previewImage}})]),t("el-dialog",F([{},{props:J(y({width:i,title:o,appendToBody:!0},this.modal),{visible:this.frameVisible})},{on:{close:()=>this.closeModel(!0)}}]),[this.frameVisible||!this.reload?t("iframe",{ref:"frame",attrs:{src:n,frameBorder:"0"},style:{height:s,border:"0 none",width:"100%"}}):null,this.makeFooter()])])},mounted(){this.$on("fc.closeModal",this.closeModal)}},kt={name:"fcRadio",props:{formCreateInject:{type:Object,required:!0},value:{},type:String},watch:{"formCreateInject.options":{handler(){this.update()},deep:!0},value(){this.update()}},data(){return{trueValue:[]}},methods:{options(){const t=this.formCreateInject.options;return Array.isArray(t)?t:[]},onInput(t){this.$emit("input",this.options().filter(e=>e.label===t).reduce((e,r)=>r.value,""))},update(){this.trueValue=this.options().filter(t=>t.value===this.value).reduce((t,e)=>e.label,"")}},created(){this.update()},render(){const t=arguments[0];return t("ElRadioGroup",F([{},this.formCreateInject.prop,{ref:"el"},{props:{value:this.trueValue}},{on:{input:this.onInput}}]),[this.options().map((e,r)=>{const i=y({},e),s=this.type==="button"?"ElRadioButton":"ElRadio";return delete i.value,t(s,F([{},{props:i},{key:s+r+"-"+e.value}]))}),z(this.$slots)])},mounted(){this.$emit("fc.el",this.$refs.el)}},f={type(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"},Undef(t){return t==null},Element(t){return typeof t=="object"&&t!==null&&t.nodeType===1&&!f.Object(t)},trueArray(t){return Array.isArray(t)&&t.length>0},Function(t){const e=this.getType(t);return e==="Function"||e==="AsyncFunction"},getType(t){const e=Object.prototype.toString.call(t);return/^\[object (.*)\]$/.exec(e)[1]},empty(t){return t==null||Array.isArray(t)&&Array.isArray(t)&&!t.length?!0:typeof t=="string"&&!t}};["Date","Object","String","Boolean","Array","Number"].forEach(t=>{f[t]=function(e){return f.type(e,t)}});function k(t,e){return{}.hasOwnProperty.call(t,e)}const Ot={name:"fcSelect",functional:!0,props:{formCreateInject:{type:Object,required:!0}},render(t,e){const r=(n,o)=>{const a=n.slot;return t("ElOption",F([{},{props:n},{key:""+o+"-"+n.value}]),[a?t("template",{slot:n.slotName||"default"},[f.Function(a)?n.slot(t):a]):null])},i=(n,o)=>t("ElOptionGroup",{attrs:{label:n.label},key:""+o+"-"+n.label},[f.trueArray(n.options)&&n.options.map((a,u)=>r(a,u))]),s=e.props.formCreateInject.options;return t("ElSelect",F([{},e.data,{ref:"el"}]),[(Array.isArray(s)?s:[]).map((n,o)=>k(n||"","options")?i(n,o):r(n,o)),e.children])},mounted(){this.$emit("fc.el",this.$refs.el)}},wt={name:"fcTree",formCreateParser:{mergeProp(t){const e=t.prop.props;e.nodeKey||(e.nodeKey="id"),e.props||(e.props={label:"title"})}},props:{formCreateInject:{type:Object,required:!0},type:{type:String,default:"checked"},value:{type:[Array,String,Number],default:()=>[]}},watch:{value(){this.setValue()}},methods:{onChange(){this.updateValue()},updateValue(){if(!this.$refs.tree)return;const t=this.type.toLocaleLowerCase();let e;t==="selected"?e=this.$refs.tree.getCurrentKey():e=this.$refs.tree.getCheckedKeys(),this.$emit("input",e)},setValue(){this.type.toLocaleLowerCase()==="selected"?this.$refs.tree.setCurrentKey(this.value):this.$refs.tree.setCheckedKeys(V(this.value))}},render(){const t=arguments[0];return t("ElTree",F([{},this.formCreateInject.prop,{ref:"tree",on:{check:()=>this.updateValue(),"node-click":()=>this.updateValue()}}]),[z(this.$slots)])},mounted(){this.setValue(),this.$emit("fc.el",this.$refs.tree)}};function _e(t,e){return{url:t,name:Et(t),uid:e}}function Et(t){return(""+t).split("/").pop()}const Ft={name:"fcUpload",props:{formCreateInject:{type:Object,required:!0},onHandle:{type:Function,default(t){this.previewImage=t.url,this.previewVisible=!0}},uploadType:{type:String,default:"file"},limit:{type:Number,default:0},allowRemove:{type:Boolean,default:!0},previewMask:void 0,modalTitle:String,handleIcon:{type:[String,Boolean],default:()=>{}},value:[Array,String]},data(){return{uploadList:[],previewVisible:!1,previewImage:"",cacheFiles:[]}},created(){this.formCreateInject.prop.props.showFileList===void 0&&(this.formCreateInject.prop.props.showFileList=!1),this.formCreateInject.prop.props.fileList=V(this.value).map(_e)},watch:{value(t){this.$refs.upload.uploadFiles.every(e=>!e.status||e.status==="success")&&(this.$refs.upload.uploadFiles=V(t).map(_e),this.uploadList=this.$refs.upload.uploadFiles)},limit(t,e){(e===1||t===1)&&this.update()}},methods:{key(t){return t},isDisabled(){return this.formCreateInject.prop.props.disabled===!0},onRemove(t){this.isDisabled()||this.$refs.upload.handleRemove(t)},handleClick(t){this.onHandle(t)},makeItem(t,e){const r=this.$createElement;return this.uploadType==="image"?r("img",{attrs:{src:t.url},key:this.key("img"+e)}):r("i",{class:"el-icon-tickets",key:this.key("i"+e)})},makeRemoveIcon(t,e){const r=this.$createElement;return r("i",{class:"el-icon-delete",on:{click:()=>this.onRemove(t)},key:this.key("ri"+e)})},makeHandleIcon(t,e){const r=this.$createElement;return r("i",{class:this.handleIcon===!0||this.handleIcon===void 0?"el-icon-view":this.handleIcon,on:{click:()=>this.handleClick(t)},key:this.key("hi"+e)})},makeProgress(t,e){const r=this.$createElement;return r("ElProgress",F([{},{props:{percentage:t.percentage,type:"circle",width:52}},{style:"margin-top:2px;",key:this.key("pg"+e)}]))},makeIcons(t,e){const r=this.$createElement,i=[];if(this.allowRemove||this.handleIcon!==!1)return(this.uploadType!=="file"&&this.handleIcon!==!1||this.uploadType==="file"&&this.handleIcon)&&i.push(this.makeHandleIcon(t,e)),this.allowRemove&&i.push(this.makeRemoveIcon(t,e)),r("div",{class:"fc-upload-cover"},[i])},makeFiles(){const t=this.$createElement;return this.uploadList.map((e,r)=>this.$scopedSlots.fileList?this.$scopedSlots.fileList({file:e,index:r,vm:this}):t("div",{key:this.key(r),class:"fc-files"},[e.percentage!==void 0&&e.status!=="success"?this.makeProgress(e,r):[this.makeItem(e,r),this.makeIcons(e,r)]]))},makeUpload(){const t=this.$createElement,e=!this.limit||this.limit>this.uploadList.length;return t("ElUpload",F([{},this.formCreateInject.prop,{},{style:{display:"inline-block"},key:this.key("upload"),ref:"upload"}]),[e?t("template",{slot:"default"},[this.$slots.default||t("div",{class:"fc-upload-btn"},[t("i",{class:"el-icon-upload2"})])]):null,z(this.$slots,["default"])])},update(){let t=this.$refs.upload.uploadFiles.map(e=>e.url).filter(e=>e!==void 0);(this.cacheFiles.length!==t.length||!t.length)&&(this.cacheFiles=[...t],this.$emit("input",this.limit===1?t[0]||"":t))},handleCancel(){this.previewVisible=!1}},render(){const t=arguments[0];return this.$refs.upload&&(this.formCreateInject.prop.props.showFileList===void 0&&(this.formCreateInject.prop.props.showFileList=this.$refs.upload.showFileList),this.formCreateInject.prop.props.fileList=this.$refs.upload.fileList),t("div",{class:"_fc-upload"},[[this.formCreateInject.prop.props.showFileList?[]:this.makeFiles(),this.makeUpload()],t("el-dialog",F([{},{props:{appendToBody:!0,modal:this.previewMask,title:this.modalTitle,visible:this.previewVisible}},{on:{close:this.handleCancel}}]),[t("img",{attrs:{alt:"example",src:this.previewImage},style:"width: 100%"})])])},mounted(){this.uploadList=this.$refs.upload.uploadFiles,this.$watch(()=>this.$refs.upload.uploadFiles,()=>{this.update()},{deep:!0}),this.$emit("fc.el",this.$refs.upload)}};function S(t,e,r){b.set(t,e,r)}function N(t,e){b.delete(t,e)}function K(t,e={},r){let i=!1;for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)){let n=e[s];if((i=Array.isArray(n))||f.Object(n)){let o=t[s]===void 0;if(i)i=!1,o&&S(t,s,[]);else if(n._clone&&r!==void 0)if(r)n=n.getRule(),o&&S(t,s,{});else{S(t,s,n._clone());continue}else o&&S(t,s,{});t[s]=K(t[s],n,r)}else S(t,s,n),f.Undef(n)||(f.Undef(n.__json)||(t[s].__json=n.__json),f.Undef(n.__origin)||(t[s].__origin=n.__origin))}return r!==void 0&&Array.isArray(t)?t.filter(s=>!s||!s.__ctrl):t}function L(t){return K({},{value:t}).value}const St=Object.assign||function(t){for(let e,r=1;r<arguments.length;r++)for(let i in e=arguments[r],e)Object.prototype.hasOwnProperty.call(e,i)&&S(t,i,e[i]);return t};function p(){return St.apply(this,arguments)}const Rt=[Ct,_t,kt,Ot,wt,Ft,{name:"fcGroup",props:{field:String,rule:[Array,Object],rules:Array,expand:Number,options:Object,formCreateInject:{type:Object,required:!0},button:{type:Boolean,default:!0},max:{type:Number,default:0},min:{type:Number,default:0},value:{type:Array,default:()=>[]},sortBtn:{type:Boolean,default:!0},defaultValue:Object,disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},onBeforeRemove:{type:Function,default:()=>{}},onBeforeAdd:{type:Function,default:()=>{}},parse:Function},data(){return{len:0,cacheRule:{},cacheValue:{},sort:[],type:void 0}},computed:{formRule(){return this.rules?this.rules:this.rule?Array.isArray(this.rule)?this.rule:[this.rule]:[]}},watch:{cacheRule:{handler(t){this.sort=Object.keys(t)},immediate:!0},formRule:{handler(t,e){Object.keys(this.cacheRule).forEach(r=>{const i=this.cacheRule[r];if(i.$f){const s=i.$f.formData();if(t===e)i.$f.deferSyncValue(()=>{K(i.rule,t),i.$f.setValue(s)},!0);else{const n=i.$f.formData();i.$f.once("reloading",()=>{i.$f.setValue(n)}),i.rule=L(t)}}})},deep:!0},expand(t){let e=t-this.value.length;e>0&&this.expandRule(e)},value(t,e){t=t||[];let r=this.sort,i=r.length,s=i-t.length;if(s<0){for(let n=s;n<0;n++)this.addRule(t.length+n);this.sort=Object.keys(this.cacheRule);for(let n=0;n<i;n++)this.setValue(r[n],t[n])}else{if(s>0){for(let n=0;n<s;n++)this.removeRule(r[i-n-1]);this.sort=Object.keys(this.cacheRule)}t.forEach((n,o)=>{this.setValue(r[o],t[o])})}}},methods:{_value(t){return t&&k(t,this.field)?t[this.field]:t},cache(t,e){this.cacheValue[t]=JSON.stringify(e)},input(t){this.$emit("input",t),this.$emit("change",t)},formData(t,e){const r=this.cacheRule,i=this.sort;if(i.filter(n=>r[n].$f).length!==i.length)return;const s=i.map(n=>{const o=t===n?e:y({},this.cacheRule[n].$f.form),a=this.field?o[this.field]||null:o;return this.cache(n,a),a});this.input(s)},setValue(t,e){const r=this.field,i=this.cacheRule[t].$f;r&&(e={[r]:this._value(e)}),this.cacheValue[t]!==JSON.stringify(r?e[r]:e)&&(this.cache(t,e),i&&i.coverValue(e||{}))},addRule(t,e){const r=this.formCreateInject.form.copyRules(this.formRule),i=this.options?y({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){i.formData||(i.formData={});const s=L(this.defaultValue);p(i.formData,this.field?{[this.field]:s}:s)}this.parse&&this.parse({rule:r,options:i,index:this.sort.length}),this.$set(this.cacheRule,++this.len,{rule:r,options:i}),e&&this.$nextTick(()=>this.$emit("add",r,Object.keys(this.cacheRule).length-1))},add$f(t,e,r){this.cacheRule[e].$f=r,this.$nextTick(()=>{this.$emit("itemMounted",r,Object.keys(this.cacheRule).indexOf(e))})},removeRule(t,e){const r=Object.keys(this.cacheRule).indexOf(t);this.$delete(this.cacheRule,t),this.$delete(this.cacheValue,t),e&&this.$nextTick(()=>this.$emit("remove",r))},add(t){this.disabled||this.onBeforeAdd(this.value)===!1||this.addRule(t,!0)},del(t,e){if(this.disabled||this.onBeforeRemove(this.value,t)===!1)return;this.removeRule(e,!0);const r=[...this.value];r.splice(t,1),this.input(r)},addIcon(t){const e=this.$createElement;return e("div",{class:"_fc-group-btn _fc-group-plus-minus",on:{click:this.add}})},delIcon(t,e){const r=this.$createElement;return r("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",on:{click:()=>this.del(t,e)}})},sortUpIcon(t){const e=this.$createElement;return e("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",on:{click:()=>this.changeSort(t,-1)}})},sortDownIcon(t){const e=this.$createElement;return e("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",on:{click:()=>this.changeSort(t,1)}})},changeSort(t,e){const r=this.sort[t];this.$set(this.sort,t,this.sort[t+e]),this.sort[t+e]=r,this.formData(0)},makeIcon(t,e,r){if(this.$scopedSlots.button)return this.$scopedSlots.button({total:t,index:e,vm:this,key:r,del:()=>this.del(e,r),add:this.add});const i=[];return(!this.max||t<this.max)&&t===e+1&&i.push(this.addIcon(r)),t>this.min&&i.push(this.delIcon(e,r)),this.sortBtn&&e&&i.push(this.sortUpIcon(e)),this.sortBtn&&e!==t-1&&i.push(this.sortDownIcon(e)),i},emitEvent(t,e,r,i){this.$emit(t,...e,this.cacheRule[i].$f,r)},expandRule(t){for(let e=0;e<t;e++)this.value.push(this.field?null:{})}},created(){this.type=this.formCreateInject.form.$form();const t=(this.expand||0)-this.value.length;t>0&&this.expandRule(t);for(let e=0;e<this.value.length;e++)this.addRule(e)},render(){const t=arguments[0],e=this.sort,r=this.button,i=this.type,s=this.disabled,n=e.length===0?this.$scopedSlots.default?this.$scopedSlots.default({vm:this,add:this.add}):t("div",{key:"a_def",class:"_fc-group-plus-minus _fc-group-add",on:{click:this.add}}):e.map((o,a)=>{const{rule:u,options:l}=this.cacheRule[o],c=r&&!s?this.makeIcon(e.length,a,o):[];return t("div",{class:"_fc-group-container",key:o},[t(i,F([{key:o},{on:{"update:value":m=>this.formData(o,m),"emit-event":(m,...v)=>this.emitEvent(m,v,a,o),input:m=>this.add$f(a,o,m)}},{},{props:{disabled:s,inFor:!0,value:this.field?{[this.field]:this._value(this.value[a])}:this.value[a],rule:u,option:l,extendOption:!0}}])),t("div",{class:"_fc-group-idx"},[a+1]),c.length?t("div",{class:"_fc-group-handle"},[c]):null])});return t("div",{key:"con",class:"_fc-group "+(s?"_fc-group-disabled":"")},[n])}},{name:"fcSubForm",props:{rule:Array,options:Object,formCreateInject:{type:Object,required:!0},value:{type:Object,default:()=>({})},disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0}},data(){return{cacheRule:{},cacheValue:{},type:void 0}},watch:{value(t){this.setValue(t)}},methods:{formData(t){this.cacheValue=JSON.stringify(t),this.$emit("input",t),this.$emit("change",t)},setValue(t){const e=JSON.stringify(t);this.cacheValue!==e&&(this.cacheValue=e,this.cacheRule.$f.coverValue(t||{}))},addRule(){const t=this.options?this.options:{submitBtn:!1,resetBtn:!1};t.formData=y({},this.value||{}),this.cacheRule={rule:this.rule,options:t}},add$f(t){this.cacheRule.$f=t,this.$nextTick(()=>{this.$emit("itemMounted",t)})},emitEvent(t,...e){this.$emit(t,...e)}},created(){this.addRule(),this.type=this.formCreateInject.form.$form()},render(){const t=arguments[0],{rule:e,options:r}=this.cacheRule,i=this.type;return t(i,F([{},{on:{"update:value":this.formData,"emit-event":this.emitEvent,input:this.add$f}},{},{props:{rule:e,option:r,disabled:this.disabled,extendOption:!0}}]))}}],ke="FormCreate",oe=(t,e)=>{if(!(!t||t===e)){if(t.formCreateInject)return t.formCreateInject;if(t.$parent)return oe(t.$parent,e)}};function jt(t,e,r){return{name:ke,componentName:ke,model:{prop:"api"},components:e,directives:r,provide(){return{$pfc:this}},inject:{$pfc:{default:null}},props:{rule:{type:Array,required:!0},option:{type:Object,default:()=>({})},extendOption:Boolean,disabled:{type:Boolean,default:void 0},value:Object,api:Object,name:String,subForm:{type:Boolean,default:!0},inFor:Boolean},data(){return{formData:void 0,destroyed:!1,validate:{},$f:void 0,isShow:!0,unique:1,renderRule:[...this.rule||[]],ctxInject:{},updateValue:JSON.stringify(this.value||{}),isMore:!!this.inFor}},render(){return this.formCreate.render()},methods:{_refresh(){++this.unique},_renderRule(){this.renderRule=[...this.rule||[]]},_updateValue(i){this.destroyed||(this.updateValue=JSON.stringify(i),this.$emit("update:value",i))}},watch:{value:{handler(i){JSON.stringify(i||{})!==this.updateValue&&(this.$f.config.forceCoverValue?this.$f.coverValue(i||{}):this.$f.setValue(i||{}))},deep:!0},option:{handler(){this.formCreate.initOptions(),this.$f.refresh()},deep:!0},rule(i){i.length===this.renderRule.length&&i.every(s=>this.renderRule.indexOf(s)>-1)||(this.formCreate.$handle.reloadRule(i),this._renderRule())},disabled(){this.$f.refresh()}},beforeCreate(){this.formCreate=new t(this),Object.keys(this.formCreate.prop).forEach(i=>{p(this.$options[i],this.formCreate.prop[i])}),this.$emit("beforeCreate",this.formCreate.api())},created(){const i=this,s=this.formCreate.api(),n=()=>{if(i.$pfc){const a=oe(i,i.$pfc);if(a){let u;i.isMore?(u=V(a.getSubForm()),u.push(s)):u=s,a.subForm(u)}}},o=()=>{const a=oe(i,i.$pfc);if(a)if(i.isMore){const u=V(a.getSubForm()),l=u.indexOf(s);l>-1&&u.splice(l,1)}else a.subForm()};i.$on("hook:beforeDestroy",()=>{o()}),this.$watch(()=>this.subForm,a=>{a?n():o()},{immediate:!0})}}}const Oe=["attrs","props","domProps","scopedSlots"],we=["class","style","directives"],Ee=["on","nativeOn"],B=(t,e={},r={})=>{const i=[...Oe,...r.normal||[]],s=[...we,...r.array||[]],n=[...Ee,...r.functional||[]],o=r.props||[];return t.reduce((a,u)=>{for(const l in u)if(a[l])if(o.indexOf(l)>-1)a[l]=B([u[l]],a[l]);else if(i.indexOf(l)>-1)a[l]=y(y({},a[l]),u[l]);else if(s.indexOf(l)>-1){const c=a[l]instanceof Array?a[l]:[a[l]],m=u[l]instanceof Array?u[l]:[u[l]];a[l]=[...c,...m]}else if(n.indexOf(l)>-1)for(const c in u[l])if(a[l][c]){const m=a[l][c]instanceof Array?a[l][c]:[a[l][c]],v=u[l][c]instanceof Array?u[l][c]:[u[l][c]];a[l][c]=[...m,...v]}else a[l][c]=u[l][c];else if(l==="hook")for(let c in u[l])a[l][c]?a[l][c]=At(a[l][c],u[l][c]):a[l][c]=u[l][c];else a[l]=u[l];else i.indexOf(l)>-1||n.indexOf(l)>-1||o.indexOf(l)>-1?a[l]=y({},u[l]):s.indexOf(l)>-1?a[l]=u[l]instanceof Array?[...u[l]]:typeof u[l]=="object"?y({},u[l]):u[l]:a[l]=u[l];return a},e)},At=(t,e)=>function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)},Fe=["type","slot","emitPrefix","value","name","native","hidden","display","inject","options","emit","nativeEmit","link","prefix","suffix","update","sync","optionsTo","key","preview","component","cache"],ae=["validate","children","control"],le=["effect","deep"];function It(){return[...Fe,...Oe,...we,...Ee,...ae,...le]}function ue(t,e,r){return`[form-create ${t}]: ${e}`}function Vt(t,e){console.warn(ue("tip",t))}function he(t,e){console.error(ue("err",t))}function Pt(t){he(t.toString()),console.error(t)}const fe="[[FORM-CREATE-PREFIX-",ce="-FORM-CREATE-SUFFIX]]",Se="$FN:",Re="$FNX:",W="function";function je(t,e){return JSON.stringify(K(Array.isArray(t)?[]:{},t,!0),function(r,i){if(!(i&&i._isVue===!0)){if(typeof i!==W)return i;if(i.__json)return i.__json;if(i.__origin&&(i=i.__origin),!i.__emit)return fe+i+ce}},e)}function Ae(t){return new Function("return "+t)()}function q(t,e){if(t&&f.String(t)&&t.length>4){let r=t.trim(),i=!1;try{if(r.indexOf(ce)>0&&r.indexOf(fe)===0)r=r.replace(ce,"").replace(fe,""),i=!0;else if(r.indexOf(Se)===0)r=r.replace(Se,""),i=!0;else{if(r.indexOf(Re)===0)return r=Ae("function($inject){"+r.replace(Re,"")+"}"),r.__json=t,r.__inject=!0,r;!e&&r.indexOf(W)===0&&r!==W&&(i=!0)}if(!i)return t;const s=Ae(r.indexOf(W)===-1&&r.indexOf("(")!==0?W+" "+r:r);return s.__json=t,s}catch(s){he(`解析失败:${r}
|
|
11
11
|
|
|
12
|
-
err: ${s}`);return}}return t}function Dt(t,e){return JSON.parse(t,function(r,i){return c.Undef(i)||!i.indexOf?i:q(i,e)})}function Ie(t,e){return{value:t,enumerable:!1,configurable:!1,writable:!!e}}function de(t){return Pe([t])[0]}function Pe(t,e){return K([],[...t],e||!1)}function U(t,e){return M(Array.isArray(e)?e:[e],t,{array:ae,normal:le}),t}function Te(t){const e=c.Function(t.getRule)?t.getRule():t;return e.type||(e.type="input"),e}function Bt(t,e){return t?(Object.keys(e||{}).forEach(r=>{e[r]&&(t[r]=U(t[r]||{},e[r]))}),t):e}function De(t,e){Object.defineProperties(t,Object.keys(e).reduce((r,i)=>(r[i]={get(){return e[i]()}},r),{}))}function Q(t){return t.__fc__||(t.__origin__?t.__origin__.__fc__:null)}function j(t,e){try{e=t()}catch(r){Tt(r)}return e}const Be=(t,e)=>typeof t=="string"?String(e):typeof t=="number"?Number(e):e,G={"==":(t,e)=>JSON.stringify(t)===JSON.stringify(Be(t,e)),"!=":(t,e)=>!G["=="](t,e),">":(t,e)=>t>e,">=":(t,e)=>t>=e,"<":(t,e)=>t<e,"<=":(t,e)=>t<=e,on(t,e){return t&&t.indexOf&&t.indexOf(Be(t[0],e))>-1},notOn(t,e){return!G.on(t,e)},in(t,e){return e&&e.indexOf&&e.indexOf(t)>-1},notIn(t,e){return!G.in(t,e)},between(t,e){return t>e[0]&&t<e[1]},notBetween(t,e){return t<e[0]||t>e[1]},empty(t){return c.empty(t)},notEmpty(t){return!c.empty(t)},pattern(t,e){return new RegExp(e,"g").test(t)}};function Me(){return{props:{},on:{},options:[],children:[],effect:{},hidden:!1,display:!0,value:void 0}}function R(t,e){return(r,i,s,n={})=>{const o=new pe(t,r,i,s,n);return e&&(c.Function(e)?e(o):o.props(e)),o}}function pe(t,e,r,i,s){this._data=m(Me(),{type:t,title:e,field:r,value:i,props:s||{}}),this.event=this.on}m(pe.prototype,{getRule(){return this._data},setProp(t,e){return E(this._data,t,e),this},_clone(){const t=new this.constructor;return t._data=de(this._data),t}});function Ve(t){t.forEach(e=>{pe.prototype[e]=function(r){return U(this._data,{[e]:arguments.length<2?r:{[r]:arguments[1]}}),this}})}Ve(It());const Ne=R("");function Mt(t,e,r){let i=Ne("",e);return i._data.type=t,i._data.title=r,i}function Le(t,e,r,i){let s=Ne("",r);return s._data.type="template",s._data.template=t,s._data.title=i,s._data.vm=e,s}function Vt(){return{create:Mt,createTmp:Le,template:Le,factory:R}}function Nt(t,e,r){const i=`fail to ${t} ${r.status}'`,s=new Error(i);return s.status=r.status,s.url=t,s}function qe(t){const e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch(r){return e}}function Ue(t){if(typeof XMLHttpRequest=="undefined")return;const e=new XMLHttpRequest,r=t.action;e.onerror=function(o){t.onError(o)},e.onload=function(){if(e.status<200||e.status>=300)return t.onError(Nt(r,t,e),qe(e));t.onSuccess(qe(e))},e.open(t.method||"get",r,!0);let i;t.data&&((t.dataType||"").toLowerCase()!=="json"?(i=new FormData,Object.keys(t.data).map(n=>{i.append(n,t.data[n])})):(i=JSON.stringify(t.data),e.setRequestHeader("content-type","application/json"))),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);const s=t.headers||{};Object.keys(s).forEach(n=>{s[n]!==null&&e.setRequestHeader(n,s[n])}),e.send(i)}function Lt(t){return new Promise((e,r)=>{Ue(J(y({},t),{onSuccess(i){let s=o=>o;const n=q(t.parse);c.Function(n)?s=n:n&&c.String(n)&&(s=o=>(n.split(".").forEach(a=>{o&&(o=o[a])}),o)),e(s(i))},onError(i){r(i)}}))})}function Z(t){return L(t)}function qt(t){function e(n){return c.Undef(n)?n=t.fields():Array.isArray(n)||(n=[n]),n}function r(n,o,a){e(n).forEach(u=>{t.getCtxs(u).forEach(l=>{E(l.rule,o,a),t.$render.clearCache(l)})})}function i(){const n=t.subForm;return Object.keys(n).reduce((o,a)=>{const u=n[a];return u&&(Array.isArray(u)?o.push(...u):o.push(u)),o},[])}const s={get config(){return t.options},get options(){return t.options},get form(){return t.form},get rule(){return t.rules},get parent(){return t.vm.$pfc&&t.vm.$pfc.$f},get top(){return s.parent?s.parent.top:s},get children(){return i()},formData(n){return e(n).reduce((o,a)=>{const u=t.getFieldCtx(a);return u&&(o[u.field]=Z(u.rule.value)),o},t.options.appendValue!==!1?Z(t.appendData):{})},getValue(n){const o=t.getFieldCtx(n);if(o)return Z(o.rule.value)},coverValue(n){const o=y({},n||{});t.deferSyncValue(()=>{s.fields().forEach(a=>{const u=t.fieldCtx[a];if(u){const l=k(o,a);u.forEach(f=>{f.rule.value=l?o[a]:void 0}),delete o[a]}}),m(t.appendData,o)})},setValue(n){let o=n;arguments.length>=2&&(o={[n]:arguments[1]}),t.deferSyncValue(()=>{Object.keys(o).forEach(a=>{const u=t.fieldCtx[a];if(!u)return t.appendData[a]=o[a];u.forEach(l=>{l.rule.value=o[a]})})})},removeField(n){const o=t.getCtx(n);return t.deferSyncValue(()=>{t.getCtxs(n).forEach(a=>{a.rm()})},!0),o?o.origin:void 0},removeRule(n){const o=n&&Q(n);if(o)return o.rm(),o.origin},destroy:()=>{t.vm.$el.parentNode&&t.vm.$el.parentNode.removeChild(t.vm.$el),t.vm.$destroy()},fields:()=>t.fields(),append:(n,o,a)=>{let u=t.sort.length-1,l;const f=t.getCtx(o);f?a?(l=f.rule.children,u=f.rule.children.length-1):(u=f.root.indexOf(f.origin),l=f.root):l=t.rules,l.splice(u+1,0,n)},prepend:(n,o,a)=>{let u=0,l;const f=t.getCtx(o);f?a?l=f.rule.children:(u=f.root.indexOf(f.origin),l=f.root):l=t.rules,l.splice(u,0,n)},hidden(n,o){r(o,"hidden",!!n),t.refresh()},hiddenStatus(n){const o=t.getCtx(n);if(o)return!!o.rule.hidden},display(n,o){r(o,"display",!!n),t.refresh()},displayStatus(n){const o=t.getCtx(n);if(o)return!!o.rule.display},disabled(n,o){e(o).forEach(a=>{t.getCtxs(a).forEach(u=>{u.rule.props&&E(u.rule.props,"disabled",!!n)})}),t.refresh()},all(n){return Object.keys(t.ctxs).map(o=>{const a=t.ctxs[o];return n?a.origin:a.rule})},model(n){return t.fields().reduce((o,a)=>{const u=t.fieldCtx[a][0];return o[a]=n?u.origin:u.rule,o},{})},component(n){return Object.keys(t.nameCtx).reduce((o,a)=>{const u=t.nameCtx[a].map(l=>n?l.origin:l.rule);return o[a]=u.length===1?u[0]:u,o},{})},bind(){return s.form},reload:n=>{t.reloadRule(n)},updateOptions(n){t.fc.updateOptions(n),s.refresh()},onSubmit(n){s.updateOptions({onSubmit:n})},sync:n=>{if(Array.isArray(n)){n.forEach(a=>s.sync(a));return}let o=c.Object(n)?Q(n):t.getCtxs(n);o&&(o=Array.isArray(o)?o:[o],o.forEach(a=>{if(!a.deleted){const u=t.subForm[a.id];u&&(Array.isArray(u)?u.forEach(l=>{l.refresh()}):u&&u.refresh()),t.$render.clearCache(a)}}),t.refresh())},refresh:()=>{i().forEach(n=>{n.refresh()}),t.$render.clearCacheAll(),t.refresh()},refreshOptions(){t.$manager.updateOptions(t.options),s.refresh()},hideForm:n=>{E(t.vm,"isShow",!n)},changeStatus:()=>t.changeStatus,clearChangeStatus:()=>{t.changeStatus=!1},updateRule(n,o){t.getCtxs(n).forEach(a=>{m(a.rule,o)})},updateRules(n){Object.keys(n).forEach(o=>{s.updateRule(o,n[o])})},mergeRule:(n,o)=>{t.getCtxs(n).forEach(a=>{U(a.rule,o)})},mergeRules(n){Object.keys(n).forEach(o=>{s.mergeRule(o,n[o])})},getRule:(n,o)=>{const a=t.getCtx(n);if(a)return o?a.origin:a.rule},getRenderRule:n=>{const o=t.getCtx(n);if(o)return o.prop},getRefRule:n=>{const o=t.getCtxs(n);if(o&&o.length){const a=o.map(u=>u.rule);return a.length===1?a[0]:a}},setEffect(n,o,a){const u=t.getCtx(n);u&&o&&(o[0]==="$"&&(o=o.substr(1)),k(u.rule,"$"+o)&&E(u.rule,"$"+o,a),k(u.rule,"effect")||E(u.rule,"effect",{}),E(u.rule.effect,o,a))},clearEffectData(n,o){const a=t.getCtx(n);a&&(o&&o[0]==="$"&&(o=o.substr(1)),a.clearEffectData(o),s.sync(n))},updateValidate(n,o,a){a?s.mergeRule(n,{validate:o}):r(n,"validate",o)},updateValidates(n,o){Object.keys(n).forEach(a=>{s.updateValidate(a,n[a],o)})},refreshValidate(){t.vm.validate={},s.refresh()},resetFields(n){e(n).forEach(o=>{t.getCtxs(o).forEach(a=>{t.$render.clearCache(a),a.rule.value=Z(a.defaultValue)})}),t.vm.$nextTick(()=>{s.clearValidateState()}),n==null&&(c.Function(t.options.onReset)&&j(()=>t.options.onReset(s)),t.vm.$emit("reset",s))},method(n,o){const a=s.el(n);if(!a||!a[o])throw new Error(ue("err",`${o}方法不存在`));return(...u)=>a[o](...u)},exec(n,o,...a){return j(()=>s.method(n,o)(...a))},toJson(n){return je(s.rule,n)},trigger(n,o,...a){const u=s.el(n);u&&u.$emit(o,...a)},el(n){const o=t.getCtx(n);if(o)return o.exportEl||o.el||t.vm.$refs[o.ref]},closeModal:n=>{const o=s.el(n);o&&o.$emit&&o.$emit("close-modal")},getSubForm(n){const o=t.getCtx(n);return o?t.subForm[o.id]:void 0},nextTick(n){t.bus.$once("next-tick",n),t.refresh()},nextRefresh(n){t.nextRefresh(),n&&j(n)},emit(n,...o){t.vm.$emit(n,...o)},deferSyncValue(n,o){t.deferSyncValue(n,o)},fetch(n){return new Promise((o,a)=>{t.beforeFetch(n).then(()=>Lt(n).then(o).catch(a))})},getData(n,o){return t.fc.getData(n,o)},setData(n,o){return t.fc.setData(n,o)},helper:{tidyFields:e,props:r}};return["on","once","off","set","emit"].forEach(n=>{s[n]=function(...o){t.vm[`$${n}`](...o)}}),s.changeValue=s.changeField=s.setValue,s}function Ut(t){m(t.prototype,{initCache(){this.clearCacheAll()},clearCache(e){if(e.rule.cache)return;if(!this.cache[e.id]){e.parent&&this.clearCache(e.parent);return}(this.cache[e.id].use===!0||this.cache[e.id].parent)&&this.$handle.refresh();const r=this.cache[e.id].parent;this.cache[e.id]=null,r&&this.clearCache(r)},clearCacheAll(){this.cache={}},setCache(e,r,i){this.cache[e.id]={vnode:r,use:!1,parent:i,slot:e.rule.slot}},getCache(e){const r=this.cache[e.id];if(r)return r.use=!0,r.vnode}})}function T(t){const e=t.replace(/(-[a-z])/g,function(r){return r.replace("-","").toLocaleUpperCase()});return He(e)}function He(t){return t.replace(t[0],t[0].toLowerCase())}function xe(t){return t==null?"":typeof t=="object"?JSON.stringify(t,null,2):String(t)}function Y(t){let e=t.replace(/([A-Z])/g,"-$1").toLocaleLowerCase();return e.indexOf("-")===0&&(e=e.substr(1)),e}let Ht=0;function ee(){const t=370+ ++Ht;return"F"+Math.random().toString(36).substr(3,3)+(+`${Date.now()}`).toString(36)+t.toString(36)+"c"}function te(t,e,r){let i=t,s;return(e||"").split(".").forEach(n=>{s&&((!i[s]||typeof i[s]!="object")&&(i[s]={}),i=i[s]),s=n}),i[s]=r,i}function xt(t){m(t.prototype,{initRender(){this.tempList={},this.clearOrgChildren()},initOrgChildren(){const e=this.$handle.ctxs;this.orgChildren=Object.keys(e).reduce((r,i)=>{if(e[i].parser.loadChildren!==!1){const s=e[i].rule.children;r[i]=c.trueArray(s)?[...s]:[]}return r},{})},clearOrgChildren(){this.orgChildren={}},getTypeSlot(e){const r=i=>{if(i){let s;return e.rule.field&&(s=i.$scopedSlots["field-"+Y(e.rule.field)]||i.$scopedSlots["field-"+e.rule.field]),s||(s=i.$scopedSlots["type-"+Y(e.type)]||i.$scopedSlots["type-"+e.type]),s||r(i.$pfc)}};return r(this.vm)},render(){if(!this.vm.isShow)return;this.$h=this.vm.$createElement,this.$manager.beforeRender();let e;const r=()=>this.renderList();return r.renderSlot=i=>this.renderList(i),r.renderName=i=>this.renderId(i),r.renderField=i=>this.renderId(i,"field"),this.vm.$scopedSlots.container?e=[this.vm.$scopedSlots.container(r)]:e=r(),this.$manager.render(e)},renderList(e){return this.sort.map(r=>e?this.renderSlot(this.$handle.ctxs[r],e):this.renderCtx(this.$handle.ctxs[r])).filter(r=>r!==void 0)},makeVm(e){const r=e.vm;if(r){if(c.Function(r))return j(()=>e.vm(this.$handle.getInjectData(e)));if(!r._isVue)return new d(r)}else return new d;return r},mergeGlobal(e){const r=this.$handle.options.global;r&&(e.cacheConfig||(e.cacheConfig=r[e.originType]||r[e.type]||r[e.trueType]||{}),e.prop=U({},[r["*"],e.cacheConfig,e.prop]))},setOptions(e){e.prop.optionsTo&&e.prop.options&&te(e.prop,e.prop.optionsTo,e.prop.options)},deepSet(e){const r=e.rule.deep;r&&Object.keys(r).sort((i,s)=>i.length<s.length?-1:1).forEach(i=>{te(e.prop,i,r[i])})},setTempProps(e,r){if(!e.$props)return;const{prop:i}=r,s=Object.keys(e.$props),n=this.injectProp(r),o=Object.keys(n);s.forEach(u=>{k(i.props,u)?e.$props[u]=i.props[u]:o.indexOf(u)>-1&&(e.$props[u]=n[u])});const a=e.$options.model&&e.$options.model.prop||"value";s.indexOf(a)>-1&&(e.$props[a]=i.value)},renderTemp(e){if(!d.compile)return Pt("当前使用的Vue构建版本不支持compile,无法使用template功能"),[];const r=e.prop,{id:i,key:s}=e;if(!this.tempList[i]){e.el||(e.el=this.makeVm(r),this.vm.$nextTick(()=>e.parser.mounted(e)));let u=e.el;e.input&&u.$on(u.$options.model&&u.$options.model.event||"input",l=>{this.onInput(e,l)}),this.tempList[i]={vm:u,template:d.compile(r.template)}}const{vm:n,template:o}=this.tempList[i];this.setTempProps(n,e);const a=o.render.call(n);return c.Undef(a.data)&&(a.data={}),a.key=s,a.data.ref=e.ref,a.data.key=s,a},parseSide(e,r){return c.Object(e)?U({props:{formCreateInject:r.prop.props.formCreateInject}},e):e},renderSides(e,r,i){const s=r[i?"rule":"prop"];return[this.renderRule(this.parseSide(s.prefix,r)),e,this.renderRule(this.parseSide(s.suffix,r))]},renderSlot(e,r){return e.rule.slot===r?this.renderCtx(e):void 0},renderId(e,r){const i=this.$handle[r==="field"?"fieldCtx":"nameCtx"][e];return i?i.map(s=>this.renderCtx(s,s.parent)):void 0},renderCtx(e,r){if(e.type==="hidden")return;const i=e.rule;if(!this.cache[e.id]||this.cache[e.id].slot!==i.slot){let s,n=i.cache!==!1;const o=e.trueType,a=!(c.Undef(i.display)||i.display);if(o==="template"&&!i.template)s=this.renderSides(this.renderChildren(e),e,!0),a&&this.display(s),s=this.item(e,s);else if(o==="fcFragment")s=this.renderChildren(e);else{e.initProp(),this.mergeGlobal(e),this.$manager.tidyRule(e),this.deepSet(e),this.setOptions(e),this.ctxProp(e);let u=e.prop;u.preview=!!(k(u,"preview")?u.preview:this.options.preview),u.props.formCreateInject=this.injectProp(e);const l=u.preview;if(u.hidden){this.setCache(e,void 0,r);return}if(o==="template"&&u.template)s=this.renderTemp(e),n=!1;else{let f=[];e.parser.renderChildren?f=e.parser.renderChildren(e):e.parser.loadChildren!==!1&&(f=this.renderChildren(e));const g=this.getTypeSlot(e);g?s=g({rule:i,prop:u,preview:l,children:f,api:this.$handle.api,model:u.model||{}}):s=l?e.parser.preview(f,e):e.parser.render(f,e)}s=this.renderSides(s,e),!(!e.input&&c.Undef(u.native))&&u.native!==!0&&(s=this.$manager.makeWrap(e,s)),a&&(s=this.display(s)),s=this.item(e,s)}return n&&this.setCache(e,s,r),s}return this.getCache(e)},display(e){if(Array.isArray(e)){const r=[];return e.forEach(i=>{if(Array.isArray(i))return this.display(i);this.none(i)&&r.push(i)}),r}else return this.none(e)},none(e){if(e&&e.data)return Array.isArray(e.data.style)?e.data.style.push({display:"none"}):c.String(e.data.style)?e.data.style+=";display:none;":e.data.style=[e.data.style,{display:"none"}],e},item(e,r){return this.$h("fcFragment",{slot:e.rule.slot,key:e.key},[r])},injectProp(e){this.vm.ctxInject[e.id]||E(this.vm.ctxInject,e.id,{api:this.$handle.api,form:this.fc.create,subForm:i=>{this.$handle.addSubForm(e,i)},getSubForm:()=>this.$handle.subForm[e.id],options:[],children:[],prop:{},preview:!1,id:e.id,field:e.field,rule:e.rule,input:e.input});const r=this.vm.ctxInject[e.id];return m(r,{preview:e.prop.preview,options:e.prop.options,children:e.rule.children,prop:function(){const i=y({},e.prop);return i.on=i.on?y({},i.on):{},delete i.model,i}()}),r},ctxProp(e){const{ref:r,key:i,rule:s}=e;this.$manager.mergeProp(e),e.parser.mergeProp(e);const n=[{ref:r,key:s.key||`${i}fc`,slot:void 0,on:{"hook:mounted":()=>{this.onMounted(e)},"fc.sub-form":o=>{this.$handle.addSubForm(e,o)},"fc.el":o=>{e.exportEl=o,o&&((o.$el||o).__rule__=e.rule)}}}];return e.input&&(this.vm.$props.disabled===!0&&(e.prop.props.disabled=!0),e.prop.model={value:this.$handle.getFormData(e),callback:o=>{this.onInput(e,o)},expression:`formData.${e.id}`}),M(n,e.prop),e.prop},onMounted(e){e.el=this.vm.$refs[e.ref],e.el&&((e.el.$el||e.el).__rule__=e.rule),e.parser.mounted(e),this.$handle.effect(e,"mounted")},onInput(e,r){this.$handle.onInput(e,r)},renderChildren(e){const{children:r}=e.rule,i=this.orgChildren[e.id],s=n=>!c.String(n)&&n.__fc__&&!this.$handle.ctxs[n.__fc__.id];return!c.trueArray(r)&&i?(this.$handle.deferSyncValue(()=>{i.forEach(n=>{n&&s(n)&&this.$handle.rmCtx(n.__fc__)})}),this.orgChildren[e.id]=[],[]):(i&&this.$handle.deferSyncValue(()=>{i.forEach(n=>{n&&r.indexOf(n)===-1&&s(n)&&this.$handle.rmCtx(n.__fc__)})}),r.map(n=>{if(n){if(c.String(n))return n;if(n.__fc__)return this.renderCtx(n.__fc__,e);n.type&&this.vm.$nextTick(()=>{this.$handle.loadChildren(r,e),this.$handle.refresh()})}}))},defaultRender(e,r){const i=e.prop;return i.component?this.vNode.makeComponent(i.component,i,r):this.vNode[e.type]?this.vNode[e.type](i,r):this.vNode[e.originType]?this.vNode[e.originType](i,r):this.vNode.make(He(e.originType),i,r)},renderRule(e,r,i){if(!e)return;if(c.String(e))return e;let s;if(i)s=e.type;else if(s=e.is,e.type){s=T(e.type);const o=this.vNode.aliasMap[s];o&&(s=T(o))}if(!s)return;let n=[[r]];return c.trueArray(e.children)&&n.push(e.children.map(o=>this.renderRule(o))),this.$h(s,y({},e),n)}})}function me(t){m(this,{$handle:t,fc:t.fc,vm:t.vm,$manager:t.$manager,vNode:new t.fc.CreateNode(t.vm)}),De(this,{options(){return t.options},sort(){return t.sort}}),this.initCache(),this.initRender()}Ut(me),xt(me);function Jt(t){m(t.prototype,{parseInjectEvent(e,r){const i=e.inject||this.options.injectEvent;return this.parseEventLst(e,r,i)},parseEventLst(e,r,i,s){return Object.keys(r).forEach(n=>{const o=this.parseEvent(e,r[n],i,s);o&&(r[n]=o)}),r},parseEvent(e,r,i,s){if(c.Function(r)&&(i!==!1&&!c.Undef(i)||r.__inject))return this.inject(e,r,i);if(!s&&Array.isArray(r)&&r[0]&&(c.String(r[0])||c.Function(r[0])))return this.parseEventLst(e,r,i,!0);if(c.String(r)){const n=q(r);if(n&&r!==n)return n.__inject?this.parseEvent(e,n,i,!0):n}},parseEmit(e,r){let i={},s=e.rule,{emitPrefix:n,field:o,name:a,inject:u}=s,l=s[r?"emit":"nativeEmit"]||[];return c.trueArray(l)&&l.forEach(f=>{if(!f)return;let g,b=n||o||a;if(c.Object(f)&&(g=f.inject,f=f.name,b=f.prefix||b),b){r||(b=`native-${b}`);const O=Y(`${b}-${f}`),$=(...w)=>{this.vm.$emit(O,...w),this.vm.$emit("emit-event",O,...w)};if($.__emit=!0,!g&&u===!1)i[f]=$;else{let w=g||u||this.options.injectEvent;i[f]=c.Undef(w)?$:this.inject(s,$,w)}}}),e.computed[r?"on":"nativeOn"]=i,i},getInjectData(e,r){const{option:i,rule:s}=this.vm.$options.propsData;return{api:this.api,$f:this.api,rule:s,self:e.__origin__,option:i,inject:r}},inject(e,r,i){if(r.__origin){if(this.watching&&!this.loading)return r;r=r.__origin}const s=this,n=function(...o){const a=s.getInjectData(e,i);return a.args=[...o],o.unshift(a),r.apply(this,o)};return n.__origin=r,n.__json=r.__json,n}})}const Je=["hook:updated","hook:mounted"];function Kt(t){m(t.prototype,{usePage(){const e=this.options.page;if(!e)return;let r=25,i=Wt(this.rules);c.Object(e)&&(e.first&&(r=parseInt(e.first,10)||r),e.limit&&(i=parseInt(e.limit,10)||i)),m(this,{first:r,limit:i,pageEnd:this.rules.length<=r}),this.bus.$on("page-end",()=>this.vm.$emit("page-end",this.api)),this.pageLoad()},pageLoad(){const e=()=>{this.pageEnd?(this.vm.$off(Je,e),this.bus.$emit("page-end")):(this.first+=this.limit,this.pageEnd=this.rules.length<=this.first,this.loadRule(),this.refresh())};this.vm.$on(Je,e)}})}function Wt(t){return t.length<31?31:Math.ceil(t.length/3)}function Gt(t){m(t.prototype,{clearNextTick(){this.nextTick&&clearTimeout(this.nextTick),this.nextTick=null},bindNextTick(e){this.clearNextTick(),this.nextTick=setTimeout(()=>{e(),this.nextTick=null},10)},render(){return++this.loadedId,this.vm.unique>0?this.$render.render():(this.vm.unique=1,[])}})}function Xt(t){Object.defineProperties(t.origin,{__fc__:Ie(t,!0)})}function Ke(t,e,r){const i=ee();m(this,{id:i,ref:i,wrapRef:i+"fi",rule:e,origin:e.__origin__||e,name:e.name,watch:[],linkOn:[],root:[],ctrlRule:[],parent:null,cacheConfig:null,prop:y({},e),computed:{},payload:{},input:!!e.field,el:void 0,exportEl:void 0,defaultValue:e.field?L(r):void 0,field:e.field||void 0}),this.updateType(),this.updateKey(),Xt(this),this.update(t,!0)}m(Ke.prototype,{effectData(t){return this.payload[t]||(this.payload[t]={}),this.payload[t]},clearEffectData(t){t===void 0?this.payload={}:delete this.payload[t]},updateKey(t){this.key=ee(),t&&this.parent&&this.parent.updateKey(t)},updateType(){this.originType=this.rule.type,this.type=T(this.rule.type)},setParser(t){this.parser=t,t.init(this)},initProp(){const t=y({},this.rule);delete t.children,this.prop=U({},[t,...Object.keys(this.payload).map(e=>this.payload[e]),this.computed])},injectValidate(){return P(this.prop.validate).map(t=>{if(c.Function(t.validator)){const e=y({},t),r=this;return e.validator=function(...i){return t.validator.call({that:this,id:r.id,field:r.field,rule:r.rule,api:r.$handle.api},...i)},e}return t})},check(t){return this.vm===t.vm},unwatch(){this.watch.forEach(t=>t()),this.watch=[]},unlink(){this.linkOn.forEach(t=>t()),this.linkOn=[]},link(){this.unlink(),this.$handle.appendLink(this)},watchTo(){this.$handle.watchCtx(this)},delete(){this.unwatch(),this.unlink(),this.rmCtrl(),m(this,{deleted:!0,prop:y({},this.rule),computed:{},el:void 0,$handle:void 0,$render:void 0,$api:void 0,vm:void 0,vNode:void 0,parent:null,cacheConfig:null})},rmCtrl(){this.ctrlRule.forEach(t=>t.__fc__&&t.__fc__.rm()),this.ctrlRule=[]},rm(){const t=()=>{let e=this.root.indexOf(this.origin);e>-1&&(this.root.splice(e,1),this.$handle&&this.$handle.refresh())};if(this.deleted){t();return}this.$handle.noWatch(()=>{this.$handle.deferSyncValue(()=>{this.rmCtrl(),t(),this.$handle.rmCtx(this),m(this,{root:[]})},this.input)})},update(t,e){m(this,{deleted:!1,$handle:t,$render:t.$render,$api:t.api,vm:t.vm,trueType:t.getType(this.originType),vNode:t.$render.vNode,updated:!1,cacheValue:this.rule.value}),!e&&this.unwatch(),this.watchTo(),this.link()}});function zt(t){m(t.prototype,{nextRefresh(e){const r=this.loadedId;this.vm.$nextTick(()=>{r===this.loadedId&&(e?e():this.refresh())})},parseRule(e){const r=Te(e);return Object.defineProperties(r,{__origin__:Ie(e,!0)}),Qt(r),this.appendValue(r),r.options=Array.isArray(r.options)?r.options:[],[r,r.prefix,r.suffix].forEach(i=>{i&&this.loadFn(i,r)}),this.loadCtrl(r),r.update&&(r.update=q(r.update)),r},loadFn(e,r){["on","props","nativeOn","deep"].forEach(i=>{e[i]&&this.parseInjectEvent(r,e[i])})},loadCtrl(e){e.control&&e.control.forEach(r=>{r.handle&&(r.handle=q(r.handle))})},syncProp(e){const r=e.rule;c.trueArray(r.sync)&&M([{on:r.sync.reduce((i,s)=>(i[`update:${s}`]=n=>{r.props[s]=n,this.vm.$emit("sync",s,n,r,this.fapi)},i),{})}],e.computed)},loadRule(){this.cycleLoad=!1,this.loading=!0,this.pageEnd&&this.bus.$emit("load-start"),this.deferSyncValue(()=>{if(this._loadRule(this.rules),this.loading=!1,this.cycleLoad&&this.pageEnd)return this.loadRule();this.pageEnd&&this.bus.$emit("load-end"),this.vm._renderRule(),this.$render.initOrgChildren(),this.syncForm()})},loadChildren(e,r){if(this.cycleLoad=!1,this.loading=!0,this.bus.$emit("load-start"),this._loadRule(e,r),this.loading=!1,this.cycleLoad)return this.loadRule();this.bus.$emit("load-end"),this.syncForm(),this.$render.clearCache(r)},_loadRule(e,r){const i=n=>{let o=e[n-1];if(!o||!o.__fc__)return n>0?i(n-1):-1;let a=this.sort.indexOf(o.__fc__.id);return a>-1?a:i(n-1)},s=(n,o)=>{c.trueArray(n)&&this._loadRule(n,o)};e.map((n,o)=>{if(r&&!c.Object(n)||!this.pageEnd&&!r&&o>=this.first)return;if(n.__fc__&&n.__fc__.root===e&&this.ctxs[n.__fc__.id])return s(n.__fc__.rule.children,n.__fc__),n.__fc__;let a=Te(n);const u=()=>!!(a.field&&this.fieldCtx[a.field]&&this.fieldCtx[a.field][0]!==n.__fc__);this.ruleEffect(a,"init",{repeat:u()}),u()&&this.vm.$emit("repeat-field",n,this.api);let l,f=!1,g=!!n.__fc__,b=a.value;if(g){l=n.__fc__,b=l.defaultValue;const $=!l.check(this);if(l.deleted){if($){if(We(l))return;l.update(this)}}else if($){if(We(l))return;e[o]=n=n._clone?n._clone():de(n),l=null,f=!0}}if(l)l.originType!==l.rule.type&&l.updateType(),this.bindParser(l),this.appendValue(l.rule);else{const $=this.parseRule(n);l=new Ke(this,$,b),this.bindParser(l)}if([!1,!0].forEach($=>this.parseEmit(l,$)),this.syncProp(l),l.parent=r||null,l.root=e,this.setCtx(l),!f&&!g&&this.effect(l,"load"),this.effect(l,"created"),l.parser.loadChildren===!1||s(l.rule.children,l),!r){const $=i(o);$>-1||!o?this.sort.splice($+1,0,l.id):this.sort.push(l.id)}const O=l.rule;return l.updated||(l.updated=!0,c.Function(O.update)&&this.bus.$once("load-end",()=>{this.refreshUpdate(l,O.value,"init")}),this.effect(l,"loaded")),l.input&&Object.defineProperty(O,"value",this.valueHandle(l)),this.refreshControl(l)&&(this.cycleLoad=!0),l})},refreshControl(e){return e.input&&e.rule.control&&this.useCtrl(e)},useCtrl(e){const r=Zt(e),i=[],s=this.api;if(!r.length)return!1;for(let a=0;a<r.length;a++){const u=r[a],l=u.handle||function(g){return(G[u.condition||"=="]||G["=="])(g,u.value)};if(!c.trueArray(u.rule))continue;const f=J(y({},u),{valid:j(()=>l(e.rule.value,s)),ctrl:Yt(e,u.rule),isHidden:c.String(u.rule[0])});f.valid&&f.ctrl||!f.valid&&!f.ctrl&&!f.isHidden||i.push(f)}if(!i.length)return!1;const n=[];let o=!1;return this.deferSyncValue(()=>{i.reverse().forEach(({isHidden:a,valid:u,rule:l,prepend:f,append:g,child:b,ctrl:O,method:$})=>{if(a){u?e.ctrlRule.push({__ctrl:!0,children:l,valid:u}):O&&e.ctrlRule.splice(e.ctrlRule.indexOf(O)>>>0,1),n[u?"push":"unshift"](()=>{$==="disabled"||$==="enabled"?this.api.disabled(!u,l):$==="display"?this.api.display(u,l):$==="required"?(l.forEach(w=>{this.api.setEffect(w,"required",u)}),u||this.api.clearValidateState(l)):this.api.hidden(!u,l)});return}if(u){o=!0;const w={type:"fcFragment",native:!0,__ctrl:!0,children:l};e.ctrlRule.push(w),this.bus.$once("load-start",()=>{f?s.prepend(w,f,b):g||b?s.append(w,g||e.id,b):e.root.splice(e.root.indexOf(e.origin)+1,0,w)})}else{e.ctrlRule.splice(e.ctrlRule.indexOf(O),1);const w=Q(O);w&&w.rm()}})}),n.length&&this.vm.$nextTick(()=>{n.forEach(a=>a())}),this.vm.$emit("control",e.origin,this.api),this.effect(e,"control"),o},reloadRule(e){return this._reloadRule(e)},_reloadRule(e){e||(e=this.rules);const r=y({},this.ctxs);this.clearNextTick(),this.$render.clearOrgChildren(),this.initData(e),this.fc.rules=e,this.deferSyncValue(()=>{this.bus.$once("load-end",()=>{Object.keys(r).filter(i=>this.ctxs[i]===void 0).forEach(i=>this.rmCtx(r[i])),this.$render.clearCacheAll()}),this.reloading=!0,this.loadRule(),this.reloading=!1,this.refresh(),this.vm.$emit("reloading",this.api)}),this.bus.$off("next-tick",this.nextReload),this.bus.$once("next-tick",this.nextReload),this.vm.$emit("update",this.api)},refresh(){this.vm._refresh()}})}function Qt(t){const e=Me();return Object.keys(e).forEach(r=>{k(t,r)||E(t,r,e[r])}),t}function Zt(t){const e=t.rule.control||[];return c.Object(e)?[e]:e}function Yt(t,e){for(let r=0;r<t.ctrlRule.length;r++){const i=t.ctrlRule[r];if(i.children===e)return i}}function We(t){return!!t.rule.__ctrl}function er(t){m(t.prototype,{getValue(e){return c.Undef(e.cacheValue)&&(e.cacheValue=e.parser.toValue(this.getFormData(e),e)),e.cacheValue},setValue(e,r,i,s){e.deleted||(e.cacheValue=r,this.changeStatus=!0,this.nextRefresh(),this.$render.clearCache(e),this.setFormData(e,i),this.syncValue(),this.valueChange(e,r),this.vm.$emit("change",e.field,r,e.origin,this.api,s||!1),this.effect(e,"value"),this.emitEvent("change",e.field,r,{rule:e.origin,api:this.api,setFlag:s||!1}))},onInput(e,r){let i;e.input&&(this.isQuote(e,i=e.parser.toValue(r,e))||this.isChange(e,i))&&this.setValue(e,i,r)},setFormData(e,r){E(this.formData,e.id,r===null?void 0:r)},getFormData(e){return this.formData[e.id]},validate(){return Xe(this.vm.validate),this.fields().forEach(e=>{this.fieldCtx[e].forEach(r=>{this.vm.validate[r.id]=P(r.rule.validate)})}),this.vm.validate},syncForm(){Xe(this.form),Object.defineProperties(this.form,this.fields().reduce((e,r)=>{const i=this.getFieldCtx(r),s=this.valueHandle(i);return s.configurable=!0,e[r]=s,e},this.options.appendValue!==!1?Object.keys(this.appendData).reduce((e,r)=>(e[r]={enumerable:!0,configurable:!0,get:()=>this.appendData[r],set:i=>{this.appendData[r]=i}},e),{}):{})),this.syncValue()},valueHandle(e){return{enumerable:!0,get:()=>this.getValue(e),set:r=>{this.isChange(e,r)&&this.setValue(e,r,e.parser.toFormValue(r,e),!0)}}},appendValue(e){!e.field||!k(this.appendData,e.field)||(e.value=this.appendData[e.field],delete this.appendData[e.field])},addSubForm(e,r){this.subForm[e.id]=r},deferSyncValue(e,r){this.deferSyncFn||(this.deferSyncFn=e),this.deferSyncFn.sync||(this.deferSyncFn.sync=r),j(e),this.deferSyncFn===e&&(this.deferSyncFn=null,e.sync&&this.syncValue())},syncValue(){if(this.deferSyncFn)return this.deferSyncFn.sync=!0;this.vm._updateValue(y(y({},this.options.appendValue!==!1?this.appendData:{}),this.form))},isChange(e,r){return JSON.stringify(e.rule.value,Ge)!==JSON.stringify(r===null?void 0:r,Ge)},isQuote(e,r){return(c.Object(r)||Array.isArray(r))&&r===e.rule.value},refreshUpdate(e,r,i,s){if(c.Function(e.rule.update)){const n=j(()=>e.rule.update(r,e.origin,this.api,{origin:i||"change",linkField:s}));if(n===void 0)return;e.rule.hidden=n===!0}},valueChange(e,r){this.refreshRule(e,r),this.bus.$emit("change-"+e.field,r)},refreshRule(e,r,i,s){this.refreshControl(e)&&(this.$render.clearCacheAll(),this.loadRule(),this.vm.$emit("update",this.api),this.refresh()),this.refreshUpdate(e,r,i,s)},appendLink(e){const r=e.rule.link;c.trueArray(r)&&r.forEach(i=>{const s=()=>this.refreshRule(e,e.rule.value,"link",i);this.bus.$on("change-"+i,s),e.linkOn.push(()=>this.bus.$off("change-"+i,s))})},fields(){return Object.keys(this.fieldCtx)}})}function Ge(t,e){return typeof e=="function"?""+e:e}function Xe(t){Object.keys(t).forEach(e=>delete t[e])}const ye={init(t){},toFormValue(t,e){return t},toValue(t,e){return t},mounted(t){},render(t,e){return e.$render.defaultRender(e,t)},preview(t,e){return this.render(t,e)},mergeProp(t){}},tr=["field","value","vm","template","name","config","control","inject","sync","payload","optionsTo","update","component","cache"];function rr(t){m(t.prototype,{getCtx(e){return this.getFieldCtx(e)||this.getNameCtx(e)[0]||this.ctxs[e]},getCtxs(e){return this.fieldCtx[e]||this.nameCtx[e]||(this.ctxs[e]?[this.ctxs[e]]:[])},setIdCtx(e,r,i){const s=`${i}Ctx`;this[s][r]?this[s][r].push(e):this[s][r]=[e]},rmIdCtx(e,r,i){const s=`${i}Ctx`,n=this[s][r];if(!n)return!1;const o=n.splice(n.indexOf(e)>>>0,1).length>0;return n.length||delete this[s][r],o},getFieldCtx(e){return(this.fieldCtx[e]||[])[0]},getNameCtx(e){return this.nameCtx[e]||[]},setCtx(e){let{id:r,field:i,name:s,rule:n}=e;this.ctxs[r]=e,s&&this.setIdCtx(e,s,"name"),e.input&&(this.setIdCtx(e,i,"field"),this.setFormData(e,e.parser.toFormValue(n.value,e)),this.isMounted&&!this.reloading&&this.vm.$emit("change",e.field,n.value,e.origin,this.api))},getParser(e){const r=this.fc.parsers;return r[e.originType]||r[T(e.type)]||r[e.trueType]||ye},bindParser(e){e.setParser(this.getParser(e))},getType(e){const r=this.fc.CreateNode.aliasMap,i=r[e]||r[T(e)]||e;return T(i)},noWatch(e){this.noWatchFn||(this.noWatchFn=e),j(e),this.noWatchFn===e&&(this.noWatchFn=null)},watchCtx(e){const r=this.vm;Object.keys(e.rule).filter(i=>i[0]!=="_"&&i[0]!=="$"&&tr.indexOf(i)===-1).forEach(i=>{const s=i==="children";e.watch.push(r.$watch(()=>e.rule[i],(n,o)=>{if(!(this.loading||this.noWatchFn||this.reloading)){if(s&&e.parser.loadChildren===!1){this.$render.clearCache(e),this.nextRefresh();return}if(this.watching=!0,i==="link"){e.link();return}else if(["props","on","nativeOn","deep"].indexOf(i)>-1)this.parseInjectEvent(e.rule,n||{}),i==="props"&&e.input&&this.setFormData(e,e.parser.toFormValue(e.rule.value,e));else if(["emit","nativeEmit"].indexOf(i)>-1)this.parseEmit(e,i==="emit");else if(["prefix","suffix"].indexOf(i)>-1)n&&this.loadFn(n,e.rule);else if(i==="type")e.updateType(),this.bindParser(e);else if(i==="children"){const a=c.trueArray(n);this.deferSyncValue(()=>{n!==o&&(this.rmSub(o,e),this.$render.initOrgChildren()),a&&this.loadChildren(n,e),this.vm.$emit("update",this.api)})}this.$render.clearCache(e),this.refresh(),this.watching=!1}},{deep:!s,sync:s}))}),this.watchEffect(e)},rmSub(e,r){c.trueArray(e)&&e.forEach(i=>{i&&i.__fc__&&i.__fc__.parent===r&&this.rmCtx(i.__fc__)})},rmCtx(e){if(e.deleted)return;const{id:r,field:i,input:s,name:n}=e;e.input&&Object.defineProperty(e.rule,"value",{value:e.rule.value,writable:!0}),N(this.ctxs,r),N(this.$render.tempList,r),N(this.$render.orgChildren,r),N(this.vm.ctxInject,r),N(this.formData,r),N(this.subForm,r),N(e,"cacheValue"),s&&this.rmIdCtx(e,i,"field"),n&&this.rmIdCtx(e,n,"name"),s&&!k(this.fieldCtx,i)&&N(this.form,i),this.deferSyncValue(()=>{this.reloading||(e.parser.loadChildren!==!1&&c.trueArray(e.rule.children)&&e.rule.children.forEach(a=>a.__fc__&&this.rmCtx(a.__fc__)),e.root===this.rules&&this.vm._renderRule())},s);const o=this.sort.indexOf(r);return o>-1&&this.sort.splice(o,1),this.$render.clearCache(e),e.delete(),this.effect(e,"deleted"),s&&!this.fieldCtx[i]&&this.vm.$emit("removeField",i,e.rule,this.api),e.rule.__ctrl||this.vm.$emit("removeRule",e.rule,this.api),e}})}function ir(t){m(t.prototype,{mounted(){const e=()=>{this.isMounted=!0,this.lifecycle("mounted")};this.pageEnd?e():this.bus.$once("page-end",e)},lifecycle(e){this.vm.$emit(e,this.api),this.emitEvent(e,this.api)},emitEvent(e,...r){const i=this.options[e]||this.options[T("on-"+e)];if(i){const s=q(i);c.Function(s)&&j(()=>s(...r))}this.bus.$emit(e,...r)}})}function nr(t){m(t.prototype,{useProvider(){const e=this.fc.providers;Object.keys(e).forEach(r=>{let i=e[r];c.Function(i)&&(i=i(this.fc)),i._c=or(i),this.onEffect(i),this.providers[r]=i})},onEffect(e){const r=[];(e._c||["*"]).forEach(i=>{const s=i==="*"?"*":this.getType(i);r.indexOf(s)>-1||(r.push(s),this.bus.$on(`p:${e.name}:${s}:${e.input?1:0}`,(n,o)=>{e[n]&&e[n](...o)}))}),e._used=r},watchEffect(e){const r=this.vm;let i={required:()=>{var s,n;return(k(e.rule,"$required")?e.rule.$required:(n=(s=e.rule)==null?void 0:s.effect)==null?void 0:n.required)||!1}};Object.keys(e.rule.effect||{}).forEach(s=>{i[s]=()=>e.rule.effect[s]}),Object.keys(e.rule).forEach(s=>{s[0]==="$"&&(i[s.substr(1)]=()=>e.rule[s])}),Object.keys(i||{}).forEach(s=>{e.watch.push(r.$watch(i[s],n=>{this.effect(e,"watch",{[s]:n})},{deep:!0}))})},ruleEffect(e,r,i){this.emitEffect({rule:e,input:!!e.field,type:this.getType(e.type)},r,i)},effect(e,r,i){this.emitEffect({rule:e.rule,input:e.input,type:e.trueType,ctx:e,custom:i},r)},getEffect(e,r){if(k(e,"$"+r))return e["$"+r];if(k(e,"effect")&&k(e.effect,r))return e.effect[r]},emitEffect({ctx:e,rule:r,input:i,type:s,custom:n},o,a){if(!s||s==="fcFragment")return;const u=n||Object.keys(r).reduce((l,f)=>(f[0]==="$"&&(l[f.substr(1)]=r[f]),l),y({},r.effect||{}));Object.keys(u).forEach(l=>{const f=this.providers[l];if(!f||f.input&&!i)return;let g;if(!f._c)g="*";else if(f._used.indexOf(s)>-1)g=s;else return;const b=y({value:u[l],getValue:()=>this.getEffect(r,l)},a||{});e&&(b.getProp=()=>e.effectData(l),b.clearProp=()=>e.clearEffectData(l),b.mergeProp=O=>U(b.getProp(),[O]),b.id=e.id),this.bus.$emit(`p:${l}:${g}:${f.input?1:0}`,o,[b,r,this.api])})}})}function sr(t){return t.filter(function(e,r,i){return i.indexOf(e,0)===r})}function or(t){const e=t.components;if(Array.isArray(e)){const r=sr(e.filter(i=>i!=="*"));return r.length?r:!1}else return c.String(e)?[e]:!1}function D(t){m(this,{fc:t,vm:t.vm,watching:!1,loading:!1,reloading:!1,noWatchFn:null,deferSyncFn:null,isMounted:!1,formData:{},subForm:{},form:{},appendData:{},providers:{},cycleLoad:null,loadedId:1,nextTick:null,changeStatus:!1,pageEnd:!0,nextReload:()=>{this.lifecycle("reload")}}),De(this,{options(){return t.options},bus(){return t.bus}}),this.initData(t.rules),this.$manager=new t.manager(this),this.$render=new me(this),this.api=t.extendApi(qt(this),this)}m(D.prototype,{initData(t){m(this,{ctxs:{},fieldCtx:{},nameCtx:{},sort:[],rules:t})},init(){this.appendData=y(y(y({},this.fc.options.formData||{}),this.vm.value||{}),this.appendData),this.useProvider(),this.usePage(),this.loadRule(),this.$manager.__init(),this.lifecycle("created"),this.vm.$set(this.vm,"formData",this.formData)},beforeFetch(t){return new Promise(e=>{const r=this.options.beforeFetch&&j(()=>this.options.beforeFetch(t,{api:this.api}));r&&c.Function(r.then)?r.then(e):e()})}}),Jt(D),Kt(D),Gt(D),zt(D),er(D),rr(D),ir(D),nr(D);const ge={name:"fcFragment",functional:!0,props:["vnode"],render(t,e){return e.props.vnode?e.props.vnode:e.children}};function ar(t){return c.String(t)?{domProps:{innerHTML:t}}:t}function lr(){const t={};function e(r){r&&this.setVm(r)}return m(e.prototype,{setVm(r){this.vm=r,this.$h=r.$createElement},make(r,i,s){return d.config.isReservedTag(r)&&i.nativeOn&&delete i.nativeOn,this.makeComponent(r,i,s)},makeComponent(r,i,s){let n=this.$h(r,ar(i),s||[]);return n.context=this.vm,n},aliasMap:t}),m(e,{aliasMap:t,alias(r,i){t[r]=i},use(r){Object.keys(r).forEach(i=>{const s=Y(i),n=xe(i).toLocaleLowerCase(),o=r[i];[i,s,n].forEach(a=>{e.alias(i,o),e.prototype[a]=function(u,l){return this.make(o,u,l)}})})}}),e}function ur(t){class e extends ze{}return Object.assign(e.prototype,t),e}function ze(t){m(this,{$handle:t,vm:t.vm,options:{},ref:"fcForm",mergeOptionsRule:{normal:["form","row","info","submitBtn","resetBtn"]}}),this.updateKey(),this.init()}m(ze.prototype,{__init(){this.$render=this.$handle.$render,this.$r=(...t)=>this.$render.renderRule(...t)},updateKey(){this.key=ee()},init(){},update(){},beforeRender(){},form(){return this.vm.$refs[this.ref]},getSlot(t){const e=r=>{if(r){let i=r.$scopedSlots[t];return i||e(r.$pfc)}};return e(this.vm)},mergeOptions(t,e){return M(t.map(r=>this.tidyOptions(r)),e,this.mergeOptionsRule)},updateOptions(t){this.options=this.mergeOptions([t],this.getDefaultOptions()),this.update()},tidyOptions(t){return t},tidyRule(t){},mergeProp(t){},getDefaultOptions(){return{}},render(t){}});const hr=function(t){const e={name:"loadData",_fn:[],created(r,i,s){this.deleted(r);let n=P(r.getValue());const o=[];n.forEach(a=>{if(a){const u=()=>{a.watch!==!1&&(t.bus.$off("p.loadData."+a.attr,u),t.bus.$once("p.loadData."+a.attr,u));let l;a.attr&&(l=t.loadData[a.attr]||a.default,a.copy!==!1&&(l=L(l))),te(r.getProp(),a.to||"options",l),s.sync(i)};o.push(()=>t.bus.$off("p.loadData."+a.attr,u)),u()}}),this._fn[r.id]=o},deleted(r){this._fn[r.id]&&(this._fn[r.id].forEach(i=>{i()}),delete this._fn[r.id]),r.clearProp()}};return e.watch=e.created,e},Qe={name:"componentValidate",load(t,e,r){const i=t.getValue();i?t.getProp().validate=[{validator(...s){const n=Q(e);if(n)return r.exec(n.id,i===!0?"formCreateValidate":i,...s,{attr:t,rule:e,api:r})}}]:(t.clearProp(),r.clearValidateState([e.field]))},watch(...t){Qe.load(...t)}},fr=function(t){function e(i){return c.String(i)&&(i={action:i,to:"options"}),i}function r(i,s,n){let o=i.value;const a=g=>{g===void 0?(i.clearProp(),n.sync(s)):te(i.getProp(),o.to||"options",g)};if(c.Function(o)&&(o=o(s,n)),o=e(o),!o||!o.action){a(void 0);return}o=L(o),o.to||(o.to="options");const u=o.onError,l=()=>{if(!i.getValue())return i.clearProp(),n.sync(s),!0},f=J(y({headers:{}},o),{onSuccess(g,b){if(l())return;let O=$=>b?$:k($,"data")?$.data:$;c.Function(o.parse)?O=o.parse:o.parse&&c.String(o.parse)&&(O=$=>(o.parse.split(".").forEach(w=>{$&&($=$[w])}),$)),a(O(g,s,n)),n.sync(s)},onError(g){a(void 0),!l()&&(u||(b=>he(b.message||"fetch fail "+o.action)))(g,s,n)}});t.$handle.beforeFetch(f,{rule:s,api:n}).then(()=>{if(c.Function(o.action)){o.action(s,n).then(g=>{f.onSuccess(g,!0)}).catch(g=>{f.onError(g)});return}j(()=>t.create.fetch(f,{inject:i,rule:s,api:n}))})}return{name:"fetch",loaded(...i){r(...i)},watch(...i){r(...i)}}},Ze={name:"required",load(t,e,r){const i=cr(t.getValue());if(i.required===!1)t.clearProp(),r.clearValidateState([e.field]);else{const s=y({required:!0,validator(n,o,a){c.empty(o)?a(s.message):a()}},i);if(!s.message){let n=e.title||"";s.message=((typeof n=="object"?n.title:n)||"")+"不能为空"}t.getProp().validate=[s]}r.sync(e)},watch(...t){Ze.load(...t)}};function cr(t){return c.Boolean(t)?{required:t}:c.String(t)?{message:t}:c.Undef(t)?{required:!1}:c.Function(t)?{validator:t}:c.Object(t)?t:{}}const dr={fetch:fr,loadData:hr,required:Ze,componentValidate:Qe},pr={name:"html",loadChildren:!1,render(t,e){return e.prop.domProps||(e.prop.domProps={}),e.prop.domProps.innerHTML=t,e.vNode.make(e.prop.props.tag||"div",e.prop)},renderChildren(t){return Array.isArray(t.rule.children)?t.rule.children.filter(e=>c.String(e)).join(""):""}};function mr(t,e){let r;return arguments.length===2?(r=arguments[1],e=r[t]):r=arguments[2],{id:e,prop:r}}function $e(){return mr("name",...arguments)}function Ye(t){return!t||!t.el?window.document.body:c.Element(t.el)?t.el:document.querySelector(t.el)}function et(t,e){const r=new d({data(){return{rule:t,option:e||{}}},render(i){return i("FormCreate",{ref:"fc",props:this.$data})}});return r.$mount(),r}function yr(t){const e=t.key||[],r=t.array||[],i=t.normal||[];Se.push(...e),ae.push(...r),le.push(...i),Ve([...e,...r,...i])}let gr=1;const A={};function tt(t){const e={[ge.name]:ge},r={},i={},s=y({},dr),n=Vt();let o={global:{}};const a={},u=lr(),l={};yr(t.attrs||{});function f(h){const p=A[h];if(Array.isArray(p))return p.map(v=>v.api());if(p)return p.api()}function g(){const h=$e(...arguments);h.id&&h.prop&&(i[h.id]=h.prop)}function b(){const h=$e(...arguments);h.id&&h.prop&&(s[h.id]=J(y({},h.prop),{name:h.id}))}function O(h){u.use(h)}function $(){const h=$e(...arguments);if(!h.id||!h.prop)return ye;const p=T(h.id),v=h.prop,C=v.merge===!0?r[p]:void 0;r[p]=v,Object.setPrototypeOf(v,C||ye),n[p]=R(p),v.maker&&m(n,v.maker)}function w(h,p){let v;if(c.String(h)){if(v=T(h),["form-create","formcreate"].indexOf(v)>-1)return ie();if(p===void 0)return e[v]}else v=T(h.name),p=h;if(!v||!p)return;const C=T(v);e[v]=p,e[C]=p,delete u.aliasMap[v],delete u.aliasMap[C],delete r[v],delete r[C],p.formCreateParser&&$(v,p.formCreateParser)}function at(h){Object.keys(A).forEach(p=>{(Array.isArray(A[p])?A[p]:[A[p]]).forEach(C=>{C.bus.$emit("p.loadData."+h)})})}function lt(h,p){a[h]=p,at(h)}function ut(h,p){return k(a,h)?a[h]:p}function Lr(h){delete a[h],at(h)}function ie(){return jt(ft,e,i)}function ht(){return ge}function qr(h,p){return c.Function(h.install)?h.install(x,p):c.Function(h)&&h(x,p),this}function x(h,p,v){let C=et(h,p||{});const B=C.$refs.fc.formCreate;return B.$parent=v,Ye(B.options).appendChild(C.$el),B.api()}Object.setPrototypeOf(x,l);function Ur(h){let p=y({},t);return h?p.inherit={components:e,parsers:r,directives:i,providers:s,maker:n,loadData:a}:delete p.inherit,tt(p)}function ft(h){const p=h.$options.propsData.rule;m(this,{id:gr++,vm:h,create:x,manager:ur(t.manager),parsers:r,providers:s,rules:Array.isArray(p)?p:[],name:h.$options.propsData.name||ee(),inFor:h.$options.propsData.inFor,prop:{components:e,directives:i},setData:lt,getData:ut,loadData:a,CreateNode:u,bus:new d,unwatch:null,options:{},extendApi:t.extendApi||(v=>v)}),this.init(),this.initOptions(),this.name&&(this.inFor?(A[this.name]||(A[this.name]=[]),A[this.name].push(this)):A[this.name]=this)}m(ft.prototype,{init(){const h=this.vm,p=new D(this);this.$handle=p,h.$f=p.api,h.$emit("input",p.api),h.$on("hook:created",()=>{this.isSub()&&(this.unwatch=h.$watch(()=>h.$pfc.option,()=>{this.initOptions(),h.$f.refresh()},{deep:!0}),this.initOptions()),this.created()}),h.$on("hook:mounted",()=>{this.mounted()}),h.$on("hook:beforeDestroy",()=>{if(h.destroyed=!0,this.unwatch&&this.unwatch(),p.reloadRule([]),this.name)if(this.inFor){const v=A[this.name].indexOf(this);A[this.name].splice(v,1),A[this.name].length||delete A[this.name]}else delete A[this.name]}),h.$on("hook:updated",()=>{p.bindNextTick(()=>this.bus.$emit("next-tick",p.api))})},isSub(){return this.vm.$pfc&&this.vm.extendOption},initOptions(){this.options={};let h=y({formData:{},submitBtn:{},resetBtn:{}},L(o));this.isSub()&&this.mergeOptions(this.options,this.vm.$pfc.$f.config||{},!0),h=this.mergeOptions(h,this.vm.$options.propsData.option),this.updateOptions(h)},mergeOptions(h,p,v){return p=L(p),v&&["page","onSubmit","mounted","reload","formData","el"].forEach(C=>{delete p[C]}),p.global&&(h.global=Bt(h.global,p.global),delete p.global),this.$handle.$manager.mergeOptions([p],h),h},updateOptions(h){this.mergeOptions(this.options,h),this.$handle.$manager.updateOptions(this.options)},created(){this.$handle.init(),this.vm.$emit("created",this.api())},api(){return this.$handle.api},render(){return this.$handle.render()},mounted(){this.$handle.mounted()}});function ct(h){m(h,{version:t.version,ui:t.ui,setData:lt,getData:ut,removeData:Lr,maker:n,component:w,directive:g,register:b,$vnode:ht,parser:$,use:qr,factory:Ur,componentAlias:O,copyRule:de,copyRules:Pe,fetch:Ue,$form:ie,parseFn:q,parseJson:Dt,toJson:je,getApi:f,init(p,v={}){let C=et(p,v),B=C.$refs.fc.formCreate;return{mount(X){return X&&c.Element(X)&&(B.options.el=X),Ye(B.options).appendChild(C.$el),B.api()},remove(){C.$el.parentNode&&C.$el.parentNode.removeChild(C.$el)},destroy(){this.remove(),C.$destroy()},$f:B.api()}}})}function Hr(h){m(h,{create:x,install(p,v){if(o=y(y({},o),v||{}),p._installedFormCreate===!0)return;p._installedFormCreate=!0;const C=function(B,X={}){return x(B,X,this)};ct(C),p.prototype.$formCreate=C,p.component("FormCreate",ie()),p.component("FcFragment",ht())}})}if(ct(l),Hr(l),u.use({fragment:"fcFragment"}),$(pr),t.install&&x.use(t),t.inherit){const h=t.inherit;h.components&&m(e,h.components),h.parsers&&m(r,h.parsers),h.directives&&m(i,h.directives),h.providers&&m(s,h.providers),h.maker&&m(n,h.maker),h.loadData&&m(a,h.loadData)}const ne=ie();return Object.setPrototypeOf(ne,l),Object.defineProperties(ne,{fetch:{get(){return l.fetch},set(h){l.fetch=h}}}),ne.util=l,ne}const rt={date:"yyyy-MM-dd",month:"yyyy-MM",datetime:"yyyy-MM-dd HH:mm:ss",timerange:"HH:mm:ss",daterange:"yyyy-MM-dd",monthrange:"yyyy-MM",datetimerange:"yyyy-MM-dd HH:mm:ss",year:"yyyy"},it="datePicker",$r={name:it,maker:function(){return["year","month","date","dates","week","datetime","datetimeRange","dateRange","monthRange"].reduce((t,e)=>(t[e]=R(it,{type:e.toLowerCase()}),t),{})}(),mergeProp(t){const e=t.prop.props;e.valueFormat||(e.valueFormat=rt[e.type]||rt.date)}},ve="hidden",vr={name:ve,maker:{[ve]:(t,e)=>R(ve)("",t,e)},render(){return[]}},be="input",br={name:be,maker:function(){const t=["password","url","email","text","textarea"].reduce((e,r)=>(e[r]=R(be,{type:r}),e),{});return t.idate=R(be,{type:"date"}),t}(),mergeProp(t){let{props:e}=t.prop;e&&e.autosize&&e.autosize.minRows&&(e.rows=e.autosize.minRows||2)}},nt="slider",Cr={name:nt,maker:{sliderRange:R(nt,{range:!0})},toFormValue(t,e){let r=Array.isArray(t),i=e.prop.props,s=i.min||0,n;return i.range===!0?n=r?t:[s,parseFloat(t)||s]:n=r?parseFloat(t[0])||s:parseFloat(t),n}},Ce="timePicker",_r={name:Ce,maker:{time:R(Ce,t=>t.props.isRange=!1),timeRange:R(Ce,t=>t.props.isRange=!0)},mergeProp(t){const e=t.prop.props;e.valueFormat||(e.valueFormat="HH:mm:ss")}},kr=[$r,vr,br,Cr,_r,{name:"FcRow",render(t,e){return e.vNode.col({props:{span:24}},[e.vNode.row(e.prop,t)])}},{name:"select",toFormValue(t,e){return e.prop.props.multiple&&!Array.isArray(t)?P(t):t}}],_="el",Or={button:_+"Button",icon:"i",slider:_+"Slider",rate:_+"Rate",upload:"fcUpload",cascader:_+"Cascader",popover:_+"Popover",tooltip:_+"Tooltip",colorPicker:_+"ColorPicker",timePicker:_+"TimePicker",timeSelect:_+"TimeSelect",datePicker:_+"DatePicker",switch:_+"Switch",select:"fcSelect",checkbox:"fcCheckbox",radio:"fcRadio",inputNumber:_+"InputNumber",number:_+"InputNumber",input:_+"Input",formItem:_+"FormItem",form:_+"Form",frame:"fcFrame",col:_+"Col",row:_+"Row",tree:"fcTree",autoComplete:_+"Autocomplete",auto:_+"Autocomplete",group:"fcGroup",object:"fcSubForm",subForm:"fcSubForm"};function wr(){return{form:{inline:!1,labelPosition:"right",labelWidth:"125px",disabled:!1,size:void 0},row:{show:!0,gutter:0},submitBtn:{type:"primary",loading:!1,disabled:!1,innerText:"提交",show:!0,col:void 0,click:void 0},resetBtn:{type:"default",loading:!1,disabled:!1,icon:"el-icon-refresh",innerText:"重置",show:!1,col:void 0,click:void 0}}}function Fr(t){return t.type==="tooltip"}const Sr=/[A-Z]/;function Er(t,e){return!Sr.test(t)&&(c.String(e)||c.Number(e))}function st(t,e){k(t,e)&&c.String(t[e])&&(t[e]={[e]:t[e],show:!0})}function V(t){return t===!1}function Rr(t,e){k(t,e)&&!c.Object(t[e])&&(t[e]={show:!!t[e]})}const jr={validate(){const t=this.form();return t?t.validate():new Promise(e=>e())},validateField(t){const e=this.form();return e?new Promise((r,i)=>{e.validateField(t,s=>{s?i(s):r(null)})}):new Promise(r=>r())},clearValidateState(t){const e=this.vm.$refs[t.wrapRef];e&&(e.validateMessage="",e.validateState="")},tidyOptions(t){return["submitBtn","resetBtn","row","info","wrap","col","title"].forEach(e=>{Rr(t,e)}),t},tidyRule({prop:t}){return st(t,"title"),st(t,"info"),t},mergeProp(t){let e=t.prop.props;t.prop=M([{attrs:Object.keys(e).reduce((r,i)=>(Er(i,e[i])&&(r[i]=e[i]),r),{}),info:this.options.info||{},wrap:this.options.wrap||{},col:this.options.col||{},title:this.options.title||{}},t.prop],{info:{trigger:"hover",placement:"top-start",icon:"el-icon-warning"},title:{},col:{span:24},wrap:{}},{normal:["title","info","col","wrap"]})},getDefaultOptions(){return wr()},update(){const t=this.options.form;this.rule={props:y({},t),nativeOn:{submit:e=>{e.preventDefault()}},class:[t.className,t.class,"form-create"],style:t.style,type:"form"}},beforeRender(){const{key:t,ref:e,$handle:r}=this;m(this.rule,{key:t,ref:e}),m(this.rule.props,{model:r.formData})},render(t){return t.length&&t.push(this.makeFormBtn()),this.$r(this.rule,V(this.options.row.show)?t:[this.makeRow(t)])},makeWrap(t,e){const r=t.prop,i=`${this.key}${t.key}`,s=r.col,n=this.isTitle(r),o=!s.labelWidth&&!n?0:s.labelWidth,{inline:a,col:u}=this.rule.props,l=V(r.wrap.show)?e:this.$r(M([r.wrap,{props:J(y({labelWidth:o===void 0?o:xe(o),label:n?r.title.title:void 0},r.wrap||{}),{prop:t.id,rules:t.injectValidate()}),class:r.className,key:`${i}fi`,ref:t.wrapRef,type:"formItem"}]),[e,n?this.makeInfo(r,i,t):null]);return a===!0||V(u)||V(s.show)?l:this.makeCol(r,i,[l])},isTitle(t){if(this.options.form.title===!1)return!1;const e=t.title;return!(!e.title&&!e.native||V(e.show))},makeInfo(t,e,r){const i=t.title,s=t.info,n=Fr(s),o=this.options.form,a=this.getSlot("title"),u=[a?a({title:i.title||"",rule:r.rule,options:this.options}):(i.title||"")+(o.labelSuffix||o["label-suffix"]||"")];if(!V(s.show)&&(s.info||s.native)&&!V(s.icon)){const l={type:s.type||"popover",props:y({},s),key:`${e}pop`,slot:"label"},f="content";s.info&&!k(l.props,f)&&(l.props[f]=s.info),u[s.align!=="left"?"unshift":"push"](this.$r(M([s,l]),[this.$r({type:"i",slot:n?"default":"reference",class:s.icon===!0?"el-icon-warning":s.icon,key:`${e}i`})]))}return this.$r(M([i,{props:i,slot:i.slot||"label",key:`${e}tit`,type:i.type||"span"}]),u)},makeCol(t,e,r){const i=t.col;return this.$r({class:i.class,type:"col",props:i||{span:24},key:`${e}col`},r)},makeRow(t){const e=this.options.row||{};return this.$r({type:"row",props:e,class:e.class,key:`${this.key}row`},t)},makeFormBtn(){let t=[];if(V(this.options.submitBtn.show)||t.push(this.makeSubmitBtn()),V(this.options.resetBtn.show)||t.push(this.makeResetBtn()),!t.length)return;const e=this.$r({type:"formItem",key:`${this.key}fb`},t);return this.rule.props.inline===!0?e:this.$r({type:"col",props:{span:24},key:`${this.key}fc`},[e])},makeResetBtn(){const t=this.options.resetBtn;return this.$r({type:"button",props:t,style:{width:t.width},on:{click:()=>{const e=this.$handle.api;t.click?t.click(e):e.resetFields()}},key:`${this.key}b2`},[t.innerText])},makeSubmitBtn(){const t=this.options.submitBtn;return this.$r({type:"button",props:t,style:{width:t.width},on:{click:()=>{const e=this.$handle.api;t.click?t.click(e):e.submit()}},key:`${this.key}b1`},[t.innerText])}},H={};Ar(H),Ir(H),Pr(H),Tr(H),Dr(H);function Ar(t){["group","tree","switch","upload","autoComplete","checkbox","cascader","colorPicker","datePicker","frame","inputNumber","radio","rate"].forEach(e=>{t[e]=R(e)}),t.auto=t.autoComplete,t.number=t.inputNumber,t.color=t.colorPicker}function Ir(t){const e="select",r="multiple";t.selectMultiple=R(e,{[r]:!0}),t.selectOne=R(e,{[r]:!1})}function Pr(t){const e="tree",r={treeSelected:"selected",treeChecked:"checked"};Object.keys(r).reduce((i,s)=>(i[s]=R(e,{type:r[s]}),i),t)}function Tr(t){const e="upload",r={image:["image",0],file:["file",0],uploadFileOne:["file",1],uploadImageOne:["image",1]};Object.keys(r).reduce((i,s)=>(i[s]=R(e,n=>n.props({uploadType:r[s][0],maxLength:r[s][1]})),i),t),t.uploadImage=t.image,t.uploadFile=t.file}function Dr(t){const e={frameInputs:["input",0],frameFiles:["file",0],frameImages:["image",0],frameInputOne:["input",1],frameFileOne:["file",1],frameImageOne:["image",1]};return Object.keys(e).reduce((r,i)=>(r[i]=R("frame",s=>s.props({type:e[i][0],maxLength:e[i][1]})),r),t),t.frameInput=t.frameInputs,t.frameFile=t.frameFiles,t.frameImage=t.frameImages,t}function ot(t,e){return c.Boolean(t)?t={show:t}:!c.Undef(t)&&!c.Object(t)&&(t={show:e}),t}function Br(t,e){return m(t,{formEl(){return e.$manager.form()},wrapEl(r){const i=e.getFieldCtx(r);if(i)return e.vm.$refs[i.wrapRef]},validate(r){return new Promise((i,s)=>{const n=t.children,o=[e.$manager.validate()];n.forEach(a=>{o.push(a.validate())}),Promise.all(o).then(()=>{i(!0),r&&r(!0)}).catch(a=>{s(a),r&&r(!1,a),e.vm.$emit("validate-fail",a,{api:t})})})},validateField:(r,i)=>new Promise((s,n)=>{const o=e.getFieldCtx(r);if(!o)return;const a=e.subForm[o.id],u=[e.$manager.validateField(o.id)];P(a).forEach(l=>{u.push(l.validate().catch(()=>Promise.reject("子表单验证未通过")))}),Promise.all(u).then(()=>{s(null),i&&i(null)}).catch(l=>{n(l),i&&i(l),e.vm.$emit("validate-field-fail",l,{field:r,api:t})})}),clearValidateState(r,i=!0){t.helper.tidyFields(r).forEach(s=>{i&&this.clearSubValidateState(s),e.getCtxs(s).forEach(n=>{e.$manager.clearValidateState(n)})})},clearSubValidateState(r){t.helper.tidyFields(r).forEach(i=>{e.getCtxs(i).forEach(s=>{const n=e.subForm[s.id];n&&(Array.isArray(n)?n.forEach(o=>{o.clearValidateState()}):n&&n.clearValidateState())})})},btn:{loading:(r=!0)=>{t.submitBtnProps({loading:!!r})},disabled:(r=!0)=>{t.submitBtnProps({disabled:!!r})},show:(r=!0)=>{t.submitBtnProps({show:!!r})}},resetBtn:{loading:(r=!0)=>{t.resetBtnProps({loading:!!r})},disabled:(r=!0)=>{t.resetBtnProps({disabled:!!r})},show:(r=!0)=>{t.resetBtnProps({show:!!r})}},submitBtnProps:(r={})=>{let i=ot(e.options.submitBtn,!0);m(i,r),e.options.submitBtn=i,t.refreshOptions()},resetBtnProps:(r={})=>{let i=ot(e.options.resetBtn,!1);m(i,r),e.options.resetBtn=i,t.refreshOptions()},submit(r,i){t.validate(s=>{if(s){let n=t.formData();c.Function(r)?j(()=>r(n,this)):(c.Function(e.options.onSubmit)&&j(()=>e.options.onSubmit(n,this)),e.vm.$emit("submit",n,this))}else c.Function(i)&&j(()=>i(this,...arguments))}).catch(s=>{})}}),t}function Mr(t){t.componentAlias(Or),Rt.forEach(e=>{t.component(e.name,e)}),kr.forEach(e=>{t.parser(e)}),Object.keys(H).forEach(e=>{t.maker[e]=H[e]})}function Vr(){return tt({ui:"element-ui",version:"2.6.0",manager:jr,extendApi:Br,install:Mr,attrs:{normal:["col","wrap"],array:["className"],key:["title","info"]}})}const re=Vr();typeof window!="undefined"&&(window.formCreate=re,window.Vue&&re.install(window.Vue));const Nr=re.maker;F.default=re,F.maker=Nr,Object.defineProperties(F,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
12
|
+
err: ${s}`);return}}return t}function Tt(t,e){return JSON.parse(t,function(r,i){return f.Undef(i)||!i.indexOf?i:q(i,e)})}function Ie(t,e){return{value:t,enumerable:!1,configurable:!1,writable:!!e}}function de(t){return Ve([t])[0]}function Ve(t,e){return K([],[...t],e||!1)}function U(t,e){return B(Array.isArray(e)?e:[e],t,{array:ae,normal:le}),t}function Pe(t){const e=f.Function(t.getRule)?t.getRule():t;return e.type||(e.type="input"),e}function Dt(t,e){return t?(Object.keys(e||{}).forEach(r=>{e[r]&&(t[r]=U(t[r]||{},e[r]))}),t):e}function Te(t,e){Object.defineProperties(t,Object.keys(e).reduce((r,i)=>(r[i]={get(){return e[i]()}},r),{}))}function Q(t){return t.__fc__||(t.__origin__?t.__origin__.__fc__:null)}function j(t,e){try{e=t()}catch(r){Pt(r)}return e}const De=(t,e)=>typeof t=="string"?String(e):typeof t=="number"?Number(e):e,G={"==":(t,e)=>JSON.stringify(t)===JSON.stringify(De(t,e)),"!=":(t,e)=>!G["=="](t,e),">":(t,e)=>t>e,">=":(t,e)=>t>=e,"<":(t,e)=>t<e,"<=":(t,e)=>t<=e,on(t,e){return t&&t.indexOf&&t.indexOf(De(t[0],e))>-1},notOn(t,e){return!G.on(t,e)},in(t,e){return e&&e.indexOf&&e.indexOf(t)>-1},notIn(t,e){return!G.in(t,e)},between(t,e){return t>e[0]&&t<e[1]},notBetween(t,e){return t<e[0]||t>e[1]},empty(t){return f.empty(t)},notEmpty(t){return!f.empty(t)},pattern(t,e){return new RegExp(e,"g").test(t)}};function Be(){return{props:{},on:{},options:[],children:[],effect:{},hidden:!1,display:!0,value:void 0}}function R(t,e){return(r,i,s,n={})=>{const o=new pe(t,r,i,s,n);return e&&(f.Function(e)?e(o):o.props(e)),o}}function pe(t,e,r,i,s){this._data=p(Be(),{type:t,title:e,field:r,value:i,props:s||{}}),this.event=this.on}p(pe.prototype,{getRule(){return this._data},setProp(t,e){return S(this._data,t,e),this},_clone(){const t=new this.constructor;return t._data=de(this._data),t}});function Me(t){t.forEach(e=>{pe.prototype[e]=function(r){return U(this._data,{[e]:arguments.length<2?r:{[r]:arguments[1]}}),this}})}Me(It());const Ne=R("");function Bt(t,e,r){let i=Ne("",e);return i._data.type=t,i._data.title=r,i}function Le(t,e,r,i){let s=Ne("",r);return s._data.type="template",s._data.template=t,s._data.title=i,s._data.vm=e,s}function Mt(){return{create:Bt,createTmp:Le,template:Le,factory:R}}function Nt(t,e,r){const i=`fail to ${t} ${r.status}'`,s=new Error(i);return s.status=r.status,s.url=t,s}function qe(t){const e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch(r){return e}}function Ue(t){if(typeof XMLHttpRequest=="undefined")return;const e=new XMLHttpRequest,r=t.action;e.onerror=function(o){t.onError(o)},e.onload=function(){if(e.status<200||e.status>=300)return t.onError(Nt(r,t,e),qe(e));t.onSuccess(qe(e))},e.open(t.method||"get",r,!0);let i;t.data&&((t.dataType||"").toLowerCase()!=="json"?(i=new FormData,Object.keys(t.data).map(n=>{i.append(n,t.data[n])})):(i=JSON.stringify(t.data),e.setRequestHeader("content-type","application/json"))),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);const s=t.headers||{};Object.keys(s).forEach(n=>{s[n]!==null&&e.setRequestHeader(n,s[n])}),e.send(i)}function Lt(t){return new Promise((e,r)=>{Ue(J(y({},t),{onSuccess(i){let s=o=>o;const n=q(t.parse);f.Function(n)?s=n:n&&f.String(n)&&(s=o=>(n.split(".").forEach(a=>{o&&(o=o[a])}),o)),e(s(i))},onError(i){r(i)}}))})}function Z(t){return L(t)}function qt(t){function e(n){return f.Undef(n)?n=t.fields():Array.isArray(n)||(n=[n]),n}function r(n,o,a){e(n).forEach(u=>{t.getCtxs(u).forEach(l=>{S(l.rule,o,a),t.$render.clearCache(l)})})}function i(){const n=t.subForm;return Object.keys(n).reduce((o,a)=>{const u=n[a];return u&&(Array.isArray(u)?o.push(...u):o.push(u)),o},[])}const s={get config(){return t.options},get options(){return t.options},get form(){return t.form},get rule(){return t.rules},get parent(){return t.vm.$pfc&&t.vm.$pfc.$f},get top(){return s.parent?s.parent.top:s},get children(){return i()},formData(n){return e(n).reduce((o,a)=>{const u=t.getFieldCtx(a);return u&&(o[u.field]=Z(u.rule.value)),o},t.options.appendValue!==!1?Z(t.appendData):{})},getValue(n){const o=t.getFieldCtx(n);if(o)return Z(o.rule.value)},coverValue(n){const o=y({},n||{});t.deferSyncValue(()=>{s.fields().forEach(a=>{const u=t.fieldCtx[a];if(u){const l=k(o,a);u.forEach(c=>{c.rule.value=l?o[a]:void 0}),delete o[a]}}),p(t.appendData,o)})},setValue(n){let o=n;arguments.length>=2&&(o={[n]:arguments[1]}),t.deferSyncValue(()=>{Object.keys(o).forEach(a=>{const u=t.fieldCtx[a];if(!u)return t.appendData[a]=o[a];u.forEach(l=>{l.rule.value=o[a]})})})},removeField(n){const o=t.getCtx(n);return t.deferSyncValue(()=>{t.getCtxs(n).forEach(a=>{a.rm()})},!0),o?o.origin:void 0},removeRule(n){const o=n&&Q(n);if(o)return o.rm(),o.origin},destroy:()=>{t.vm.$el.parentNode&&t.vm.$el.parentNode.removeChild(t.vm.$el),t.vm.$destroy()},fields:()=>t.fields(),append:(n,o,a)=>{let u=t.sort.length-1,l;const c=t.getCtx(o);c?a?(l=c.rule.children,u=c.rule.children.length-1):(u=c.root.indexOf(c.origin),l=c.root):l=t.rules,l.splice(u+1,0,n)},prepend:(n,o,a)=>{let u=0,l;const c=t.getCtx(o);c?a?l=c.rule.children:(u=c.root.indexOf(c.origin),l=c.root):l=t.rules,l.splice(u,0,n)},hidden(n,o){r(o,"hidden",!!n),t.refresh()},hiddenStatus(n){const o=t.getCtx(n);if(o)return!!o.rule.hidden},display(n,o){r(o,"display",!!n),t.refresh()},displayStatus(n){const o=t.getCtx(n);if(o)return!!o.rule.display},disabled(n,o){e(o).forEach(a=>{t.getCtxs(a).forEach(u=>{u.rule.props&&S(u.rule.props,"disabled",!!n)})}),t.refresh()},all(n){return Object.keys(t.ctxs).map(o=>{const a=t.ctxs[o];return n?a.origin:a.rule})},model(n){return t.fields().reduce((o,a)=>{const u=t.fieldCtx[a][0];return o[a]=n?u.origin:u.rule,o},{})},component(n){return Object.keys(t.nameCtx).reduce((o,a)=>{const u=t.nameCtx[a].map(l=>n?l.origin:l.rule);return o[a]=u.length===1?u[0]:u,o},{})},bind(){return s.form},reload:n=>{t.reloadRule(n)},updateOptions(n){t.fc.updateOptions(n),s.refresh()},onSubmit(n){s.updateOptions({onSubmit:n})},sync:n=>{if(Array.isArray(n)){n.forEach(a=>s.sync(a));return}let o=f.Object(n)?Q(n):t.getCtxs(n);o&&(o=Array.isArray(o)?o:[o],o.forEach(a=>{if(!a.deleted){const u=t.subForm[a.id];u&&(Array.isArray(u)?u.forEach(l=>{l.refresh()}):u&&u.refresh()),t.$render.clearCache(a)}}),t.refresh())},refresh:()=>{i().forEach(n=>{n.refresh()}),t.$render.clearCacheAll(),t.refresh()},refreshOptions(){t.$manager.updateOptions(t.options),s.refresh()},hideForm:n=>{S(t.vm,"isShow",!n)},changeStatus:()=>t.changeStatus,clearChangeStatus:()=>{t.changeStatus=!1},updateRule(n,o){t.getCtxs(n).forEach(a=>{p(a.rule,o)})},updateRules(n){Object.keys(n).forEach(o=>{s.updateRule(o,n[o])})},mergeRule:(n,o)=>{t.getCtxs(n).forEach(a=>{U(a.rule,o)})},mergeRules(n){Object.keys(n).forEach(o=>{s.mergeRule(o,n[o])})},getRule:(n,o)=>{const a=t.getCtx(n);if(a)return o?a.origin:a.rule},getRenderRule:n=>{const o=t.getCtx(n);if(o)return o.prop},getRefRule:n=>{const o=t.getCtxs(n);if(o&&o.length){const a=o.map(u=>u.rule);return a.length===1?a[0]:a}},setEffect(n,o,a){const u=t.getCtx(n);u&&o&&(o[0]==="$"&&(o=o.substr(1)),k(u.rule,"$"+o)&&S(u.rule,"$"+o,a),k(u.rule,"effect")||S(u.rule,"effect",{}),S(u.rule.effect,o,a))},clearEffectData(n,o){const a=t.getCtx(n);a&&(o&&o[0]==="$"&&(o=o.substr(1)),a.clearEffectData(o),s.sync(n))},updateValidate(n,o,a){a?s.mergeRule(n,{validate:o}):r(n,"validate",o)},updateValidates(n,o){Object.keys(n).forEach(a=>{s.updateValidate(a,n[a],o)})},refreshValidate(){t.vm.validate={},s.refresh()},resetFields(n){e(n).forEach(o=>{t.getCtxs(o).forEach(a=>{t.$render.clearCache(a),a.rule.value=Z(a.defaultValue)})}),t.vm.$nextTick(()=>{s.clearValidateState()}),n==null&&(f.Function(t.options.onReset)&&j(()=>t.options.onReset(s)),t.vm.$emit("reset",s))},method(n,o){const a=s.el(n);if(!a||!a[o])throw new Error(ue("err",`${o}方法不存在`));return(...u)=>a[o](...u)},exec(n,o,...a){return j(()=>s.method(n,o)(...a))},toJson(n){return je(s.rule,n)},trigger(n,o,...a){const u=s.el(n);u&&u.$emit(o,...a)},el(n){const o=t.getCtx(n);if(o)return o.exportEl||o.el||t.vm.$refs[o.ref]},closeModal:n=>{const o=s.el(n);o&&o.$emit&&o.$emit("close-modal")},getSubForm(n){const o=t.getCtx(n);return o?t.subForm[o.id]:void 0},nextTick(n){t.bus.$once("next-tick",n),t.refresh()},nextRefresh(n){t.nextRefresh(),n&&j(n)},emit(n,...o){t.vm.$emit(n,...o)},deferSyncValue(n,o){t.deferSyncValue(n,o)},fetch(n){return new Promise((o,a)=>{t.beforeFetch(n).then(()=>Lt(n).then(o).catch(a))})},getData(n,o){return t.fc.getData(n,o)},setData(n,o){return t.fc.setData(n,o)},helper:{tidyFields:e,props:r}};return["on","once","off","set","emit"].forEach(n=>{s[n]=function(...o){t.vm[`$${n}`](...o)}}),s.changeValue=s.changeField=s.setValue,s}function Ut(t){p(t.prototype,{initCache(){this.clearCacheAll()},clearCache(e){if(e.rule.cache)return;if(!this.cache[e.id]){e.parent&&this.clearCache(e.parent);return}(this.cache[e.id].use===!0||this.cache[e.id].parent)&&this.$handle.refresh();const r=this.cache[e.id].parent;this.cache[e.id]=null,r&&this.clearCache(r)},clearCacheAll(){this.cache={}},setCache(e,r,i){this.cache[e.id]={vnode:r,use:!1,parent:i,slot:e.rule.slot}},getCache(e){const r=this.cache[e.id];if(r)return r.use=!0,r.vnode}})}function P(t){const e=t.replace(/(-[a-z])/g,function(r){return r.replace("-","").toLocaleUpperCase()});return He(e)}function He(t){return t.replace(t[0],t[0].toLowerCase())}function xe(t){return t==null?"":typeof t=="object"?JSON.stringify(t,null,2):String(t)}function Y(t){let e=t.replace(/([A-Z])/g,"-$1").toLocaleLowerCase();return e.indexOf("-")===0&&(e=e.substr(1)),e}let Ht=0;function ee(){const t=370+ ++Ht;return"F"+Math.random().toString(36).substr(3,3)+(+`${Date.now()}`).toString(36)+t.toString(36)+"c"}function te(t,e,r){let i=t,s;return(e||"").split(".").forEach(n=>{s&&((!i[s]||typeof i[s]!="object")&&(i[s]={}),i=i[s]),s=n}),i[s]=r,i}function xt(t){p(t.prototype,{initRender(){this.tempList={},this.clearOrgChildren()},initOrgChildren(){const e=this.$handle.ctxs;this.orgChildren=Object.keys(e).reduce((r,i)=>{if(e[i].parser.loadChildren!==!1){const s=e[i].rule.children;r[i]=f.trueArray(s)?[...s]:[]}return r},{})},clearOrgChildren(){this.orgChildren={}},getTypeSlot(e){const r=i=>{if(i){let s;return e.rule.field&&(s=i.$scopedSlots["field-"+Y(e.rule.field)]||i.$scopedSlots["field-"+e.rule.field]),s||(s=i.$scopedSlots["type-"+Y(e.type)]||i.$scopedSlots["type-"+e.type]),s||r(i.$pfc)}};return r(this.vm)},render(){if(!this.vm.isShow)return;this.$h=this.vm.$createElement,this.$manager.beforeRender();let e;const r=()=>this.renderList();return r.renderSlot=i=>this.renderList(i),r.renderName=i=>this.renderId(i),r.renderField=i=>this.renderId(i,"field"),this.vm.$scopedSlots.container?e=[this.vm.$scopedSlots.container(r)]:e=r(),this.$manager.render(e)},renderList(e){return this.sort.map(r=>e?this.renderSlot(this.$handle.ctxs[r],e):this.renderCtx(this.$handle.ctxs[r])).filter(r=>r!==void 0)},makeVm(e){const r=e.vm;if(r){if(f.Function(r))return j(()=>e.vm(this.$handle.getInjectData(e)));if(!r._isVue)return new b(r)}else return new b;return r},mergeGlobal(e){const r=this.$handle.options.global;r&&(e.cacheConfig||(e.cacheConfig=r[e.originType]||r[e.type]||r[e.trueType]||{}),e.prop=U({},[r["*"],e.cacheConfig,e.prop]))},setOptions(e){e.prop.optionsTo&&e.prop.options&&te(e.prop,e.prop.optionsTo,e.prop.options)},deepSet(e){const r=e.rule.deep;r&&Object.keys(r).sort((i,s)=>i.length<s.length?-1:1).forEach(i=>{te(e.prop,i,r[i])})},setTempProps(e,r){if(!e.$props)return;const{prop:i}=r,s=Object.keys(e.$props),n=this.injectProp(r),o=Object.keys(n);s.forEach(u=>{k(i.props,u)?e.$props[u]=i.props[u]:o.indexOf(u)>-1&&(e.$props[u]=n[u])});const a=e.$options.model&&e.$options.model.prop||"value";s.indexOf(a)>-1&&(e.$props[a]=i.value)},renderTemp(e){if(!b.compile)return Vt("当前使用的Vue构建版本不支持compile,无法使用template功能"),[];const r=e.prop,{id:i,key:s}=e;if(!this.tempList[i]){e.el||(e.el=this.makeVm(r),this.vm.$nextTick(()=>e.parser.mounted(e)));let u=e.el;e.input&&u.$on(u.$options.model&&u.$options.model.event||"input",l=>{this.onInput(e,l)}),this.tempList[i]={vm:u,template:b.compile(r.template)}}const{vm:n,template:o}=this.tempList[i];this.setTempProps(n,e);const a=o.render.call(n);return f.Undef(a.data)&&(a.data={}),a.key=s,a.data.ref=e.ref,a.data.key=s,a},parseSide(e,r){return f.Object(e)?U({props:{formCreateInject:r.prop.props.formCreateInject}},e):e},renderSides(e,r,i){const s=r[i?"rule":"prop"];return[this.renderRule(this.parseSide(s.prefix,r)),e,this.renderRule(this.parseSide(s.suffix,r))]},renderSlot(e,r){return e.rule.slot===r?this.renderCtx(e):void 0},renderId(e,r){const i=this.$handle[r==="field"?"fieldCtx":"nameCtx"][e];return i?i.map(s=>this.renderCtx(s,s.parent)):void 0},renderCtx(e,r){if(e.type==="hidden")return;const i=e.rule;if(!this.cache[e.id]||this.cache[e.id].slot!==i.slot){let s,n=i.cache!==!1;const o=e.trueType,a=!(f.Undef(i.display)||i.display);if(o==="template"&&!i.template)s=this.renderSides(this.renderChildren(e),e,!0),a&&this.display(s),s=this.item(e,s);else if(o==="fcFragment")s=this.renderChildren(e);else{e.initProp(),this.mergeGlobal(e),this.$manager.tidyRule(e),this.deepSet(e),this.setOptions(e),this.ctxProp(e);let u=e.prop;u.preview=!!(k(u,"preview")?u.preview:this.options.preview),u.props.formCreateInject=this.injectProp(e);const l=u.preview;if(u.hidden){this.setCache(e,void 0,r);return}if(o==="template"&&u.template)s=this.renderTemp(e),n=!1;else{let c=[];e.parser.renderChildren?c=e.parser.renderChildren(e):e.parser.loadChildren!==!1&&(c=this.renderChildren(e));const m=this.getTypeSlot(e);m?s=m({rule:i,prop:u,preview:l,children:c,api:this.$handle.api,model:u.model||{}}):s=l?e.parser.preview(c,e):e.parser.render(c,e)}s=this.renderSides(s,e),!(!e.input&&f.Undef(u.native))&&u.native!==!0&&(s=this.$manager.makeWrap(e,s)),a&&(s=this.display(s)),s=this.item(e,s)}return n&&this.setCache(e,s,r),s}return this.getCache(e)},display(e){if(Array.isArray(e)){const r=[];return e.forEach(i=>{if(Array.isArray(i))return this.display(i);this.none(i)&&r.push(i)}),r}else return this.none(e)},none(e){if(e&&e.data)return Array.isArray(e.data.style)?e.data.style.push({display:"none"}):f.String(e.data.style)?e.data.style+=";display:none;":e.data.style=[e.data.style,{display:"none"}],e},item(e,r){return this.$h("fcFragment",{slot:e.rule.slot,key:e.key},[r])},injectProp(e){this.vm.ctxInject[e.id]||S(this.vm.ctxInject,e.id,{api:this.$handle.api,form:this.fc.create,subForm:i=>{this.$handle.addSubForm(e,i)},getSubForm:()=>this.$handle.subForm[e.id],options:[],children:[],prop:{},preview:!1,id:e.id,field:e.field,rule:e.rule,input:e.input});const r=this.vm.ctxInject[e.id];return p(r,{preview:e.prop.preview,options:e.prop.options,children:e.rule.children,prop:function(){const i=y({},e.prop);return i.on=i.on?y({},i.on):{},delete i.model,i}()}),r},ctxProp(e){const{ref:r,key:i,rule:s}=e;this.$manager.mergeProp(e),e.parser.mergeProp(e);const n=[{ref:r,key:s.key||`${i}fc`,slot:void 0,on:{"hook:mounted":()=>{this.onMounted(e)},"fc.sub-form":o=>{this.$handle.addSubForm(e,o)},"fc.el":o=>{e.exportEl=o,o&&((o.$el||o).__rule__=e.rule)}}}];return e.input&&(this.vm.$props.disabled===!0&&(e.prop.props.disabled=!0),e.prop.model={value:this.$handle.getFormData(e),callback:o=>{this.onInput(e,o)},expression:`formData.${e.id}`}),B(n,e.prop),e.prop},onMounted(e){e.el=this.vm.$refs[e.ref],e.el&&((e.el.$el||e.el).__rule__=e.rule),e.parser.mounted(e),this.$handle.effect(e,"mounted")},onInput(e,r){this.$handle.onInput(e,r)},renderChildren(e){const{children:r}=e.rule,i=this.orgChildren[e.id],s=n=>!f.String(n)&&n.__fc__&&!this.$handle.ctxs[n.__fc__.id];return!f.trueArray(r)&&i?(this.$handle.deferSyncValue(()=>{i.forEach(n=>{n&&s(n)&&this.$handle.rmCtx(n.__fc__)})}),this.orgChildren[e.id]=[],[]):(i&&this.$handle.deferSyncValue(()=>{i.forEach(n=>{n&&r.indexOf(n)===-1&&s(n)&&this.$handle.rmCtx(n.__fc__)})}),r.map(n=>{if(n){if(f.String(n))return n;if(n.__fc__)return this.renderCtx(n.__fc__,e);n.type&&this.vm.$nextTick(()=>{this.$handle.loadChildren(r,e),this.$handle.refresh()})}}))},defaultRender(e,r){const i=e.prop;return i.component?this.vNode.makeComponent(i.component,i,r):this.vNode[e.type]?this.vNode[e.type](i,r):this.vNode[e.originType]?this.vNode[e.originType](i,r):this.vNode.make(He(e.originType),i,r)},renderRule(e,r,i){if(!e)return;if(f.String(e))return e;let s;if(i)s=e.type;else if(s=e.is,e.type){s=P(e.type);const o=this.vNode.aliasMap[s];o&&(s=P(o))}if(!s)return;let n=[[r]];return f.trueArray(e.children)&&n.push(e.children.map(o=>this.renderRule(o))),this.$h(s,y({},e),n)}})}function me(t){p(this,{$handle:t,fc:t.fc,vm:t.vm,$manager:t.$manager,vNode:new t.fc.CreateNode(t.vm)}),Te(this,{options(){return t.options},sort(){return t.sort}}),this.initCache(),this.initRender()}Ut(me),xt(me);function Jt(t){p(t.prototype,{parseInjectEvent(e,r){const i=e.inject||this.options.injectEvent;return this.parseEventLst(e,r,i)},parseEventLst(e,r,i,s){return Object.keys(r).forEach(n=>{const o=this.parseEvent(e,r[n],i,s);o&&(r[n]=o)}),r},parseEvent(e,r,i,s){if(f.Function(r)&&(i!==!1&&!f.Undef(i)||r.__inject))return this.inject(e,r,i);if(!s&&Array.isArray(r)&&r[0]&&(f.String(r[0])||f.Function(r[0])))return this.parseEventLst(e,r,i,!0);if(f.String(r)){const n=q(r);if(n&&r!==n)return n.__inject?this.parseEvent(e,n,i,!0):n}},parseEmit(e,r){let i={},s=e.rule,{emitPrefix:n,field:o,name:a,inject:u}=s,l=s[r?"emit":"nativeEmit"]||[];return f.trueArray(l)&&l.forEach(c=>{if(!c)return;let m,v=n||o||a;if(f.Object(c)&&(m=c.inject,c=c.name,v=c.prefix||v),v){r||(v=`native-${v}`);const O=Y(`${v}-${c}`),g=(...w)=>{this.vm.$emit(O,...w),this.vm.$emit("emit-event",O,...w)};if(g.__emit=!0,!m&&u===!1)i[c]=g;else{let w=m||u||this.options.injectEvent;i[c]=f.Undef(w)?g:this.inject(s,g,w)}}}),e.computed[r?"on":"nativeOn"]=i,i},getInjectData(e,r){const{option:i,rule:s}=this.vm.$options.propsData;return{api:this.api,$f:this.api,rule:s,self:e.__origin__,option:i,inject:r}},inject(e,r,i){if(r.__origin){if(this.watching&&!this.loading)return r;r=r.__origin}const s=this,n=function(...o){const a=s.getInjectData(e,i);return a.args=[...o],o.unshift(a),r.apply(this,o)};return n.__origin=r,n.__json=r.__json,n}})}const Je=["hook:updated","hook:mounted"];function Kt(t){p(t.prototype,{usePage(){const e=this.options.page;if(!e)return;let r=25,i=Wt(this.rules);f.Object(e)&&(e.first&&(r=parseInt(e.first,10)||r),e.limit&&(i=parseInt(e.limit,10)||i)),p(this,{first:r,limit:i,pageEnd:this.rules.length<=r}),this.bus.$on("page-end",()=>this.vm.$emit("page-end",this.api)),this.pageLoad()},pageLoad(){const e=()=>{this.pageEnd?(this.vm.$off(Je,e),this.bus.$emit("page-end")):(this.first+=this.limit,this.pageEnd=this.rules.length<=this.first,this.loadRule(),this.refresh())};this.vm.$on(Je,e)}})}function Wt(t){return t.length<31?31:Math.ceil(t.length/3)}function Gt(t){p(t.prototype,{clearNextTick(){this.nextTick&&clearTimeout(this.nextTick),this.nextTick=null},bindNextTick(e){this.clearNextTick(),this.nextTick=setTimeout(()=>{e(),this.nextTick=null},10)},render(){return++this.loadedId,this.vm.unique>0?this.$render.render():(this.vm.unique=1,[])}})}function Xt(t){Object.defineProperties(t.origin,{__fc__:Ie(t,!0)})}function Ke(t,e,r){const i=ee();p(this,{id:i,ref:i,wrapRef:i+"fi",rule:e,origin:e.__origin__||e,name:e.name,watch:[],linkOn:[],root:[],ctrlRule:[],parent:null,cacheConfig:null,prop:y({},e),computed:{},payload:{},input:!!e.field,el:void 0,exportEl:void 0,defaultValue:e.field?L(r):void 0,field:e.field||void 0}),this.updateKey(),Xt(this),this.update(t,!0)}p(Ke.prototype,{effectData(t){return this.payload[t]||(this.payload[t]={}),this.payload[t]},clearEffectData(t){t===void 0?this.payload={}:delete this.payload[t]},updateKey(t){this.key=ee(),t&&this.parent&&this.parent.updateKey(t)},updateType(){this.originType=this.rule.type,this.type=P(this.rule.type),this.trueType=this.$handle.getType(this.originType)},setParser(t){this.parser=t,t.init(this)},initProp(){const t=y({},this.rule);delete t.children,this.prop=U({},[t,...Object.keys(this.payload).map(e=>this.payload[e]),this.computed])},injectValidate(){return V(this.prop.validate).map(t=>{if(f.Function(t.validator)){const e=y({},t),r=this;return e.validator=function(...i){return t.validator.call({that:this,id:r.id,field:r.field,rule:r.rule,api:r.$handle.api},...i)},e}return t})},check(t){return this.vm===t.vm},unwatch(){this.watch.forEach(t=>t()),this.watch=[]},unlink(){this.linkOn.forEach(t=>t()),this.linkOn=[]},link(){this.unlink(),this.$handle.appendLink(this)},watchTo(){this.$handle.watchCtx(this)},delete(){this.unwatch(),this.unlink(),this.rmCtrl(),p(this,{deleted:!0,prop:y({},this.rule),computed:{},el:void 0,$handle:void 0,$render:void 0,$api:void 0,vm:void 0,vNode:void 0,parent:null,cacheConfig:null})},rmCtrl(){this.ctrlRule.forEach(t=>t.__fc__&&t.__fc__.rm()),this.ctrlRule=[]},rm(){const t=()=>{let e=this.root.indexOf(this.origin);e>-1&&(this.root.splice(e,1),this.$handle&&this.$handle.refresh())};if(this.deleted){t();return}this.$handle.noWatch(()=>{this.$handle.deferSyncValue(()=>{this.rmCtrl(),t(),this.$handle.rmCtx(this),p(this,{root:[]})},this.input)})},update(t,e){p(this,{deleted:!1,$handle:t,$render:t.$render,$api:t.api,vm:t.vm,vNode:t.$render.vNode,updated:!1,cacheValue:this.rule.value}),!e&&this.unwatch(),this.watchTo(),this.link(),this.updateType()}});function zt(t){p(t.prototype,{nextRefresh(e){const r=this.loadedId;this.vm.$nextTick(()=>{r===this.loadedId&&(e?e():this.refresh())})},parseRule(e){const r=Pe(e);return Object.defineProperties(r,{__origin__:Ie(e,!0)}),Qt(r),this.appendValue(r),r.options=Array.isArray(r.options)?r.options:[],[r,r.prefix,r.suffix].forEach(i=>{i&&this.loadFn(i,r)}),this.loadCtrl(r),r.update&&(r.update=q(r.update)),r},loadFn(e,r){["on","props","nativeOn","deep"].forEach(i=>{e[i]&&this.parseInjectEvent(r,e[i])})},loadCtrl(e){e.control&&e.control.forEach(r=>{r.handle&&(r.handle=q(r.handle))})},syncProp(e){const r=e.rule;f.trueArray(r.sync)&&B([{on:r.sync.reduce((i,s)=>(i[`update:${s}`]=n=>{r.props[s]=n,this.vm.$emit("sync",s,n,r,this.fapi)},i),{})}],e.computed)},loadRule(){this.cycleLoad=!1,this.loading=!0,this.pageEnd&&this.bus.$emit("load-start"),this.deferSyncValue(()=>{if(this._loadRule(this.rules),this.loading=!1,this.cycleLoad&&this.pageEnd)return this.loadRule();this.pageEnd&&this.bus.$emit("load-end"),this.vm._renderRule(),this.$render.initOrgChildren(),this.syncForm()})},loadChildren(e,r){if(this.cycleLoad=!1,this.loading=!0,this.bus.$emit("load-start"),this._loadRule(e,r),this.loading=!1,this.cycleLoad)return this.loadRule();this.bus.$emit("load-end"),this.syncForm(),this.$render.clearCache(r)},_loadRule(e,r){const i=n=>{let o=e[n-1];if(!o||!o.__fc__)return n>0?i(n-1):-1;let a=this.sort.indexOf(o.__fc__.id);return a>-1?a:i(n-1)},s=(n,o)=>{f.trueArray(n)&&this._loadRule(n,o)};e.map((n,o)=>{if(r&&!f.Object(n)||!this.pageEnd&&!r&&o>=this.first)return;if(n.__fc__&&n.__fc__.root===e&&this.ctxs[n.__fc__.id])return s(n.__fc__.rule.children,n.__fc__),n.__fc__;let a=Pe(n);const u=()=>!!(a.field&&this.fieldCtx[a.field]&&this.fieldCtx[a.field][0]!==n.__fc__);this.ruleEffect(a,"init",{repeat:u()}),u()&&this.vm.$emit("repeat-field",n,this.api);let l,c=!1,m=!!n.__fc__,v=a.value;if(m){l=n.__fc__,v=l.defaultValue;const g=!l.check(this);if(l.deleted){if(g){if(We(l))return;l.update(this)}}else if(g){if(We(l))return;e[o]=n=n._clone?n._clone():de(n),l=null,c=!0}}if(l)l.originType!==l.rule.type&&l.updateType(),this.bindParser(l),this.appendValue(l.rule);else{const g=this.parseRule(n);l=new Ke(this,g,v),this.bindParser(l)}if([!1,!0].forEach(g=>this.parseEmit(l,g)),this.syncProp(l),l.parent=r||null,l.root=e,this.setCtx(l),!c&&!m&&this.effect(l,"load"),this.effect(l,"created"),l.parser.loadChildren===!1||s(l.rule.children,l),!r){const g=i(o);g>-1||!o?this.sort.splice(g+1,0,l.id):this.sort.push(l.id)}const O=l.rule;return l.updated||(l.updated=!0,f.Function(O.update)&&this.bus.$once("load-end",()=>{this.refreshUpdate(l,O.value,"init")}),this.effect(l,"loaded")),l.input&&Object.defineProperty(O,"value",this.valueHandle(l)),this.refreshControl(l)&&(this.cycleLoad=!0),l})},refreshControl(e){return e.input&&e.rule.control&&this.useCtrl(e)},useCtrl(e){const r=Zt(e),i=[],s=this.api;if(!r.length)return!1;for(let a=0;a<r.length;a++){const u=r[a],l=u.handle||function(m){return(G[u.condition||"=="]||G["=="])(m,u.value)};if(!f.trueArray(u.rule))continue;const c=J(y({},u),{valid:j(()=>l(e.rule.value,s)),ctrl:Yt(e,u.rule),isHidden:f.String(u.rule[0])});c.valid&&c.ctrl||!c.valid&&!c.ctrl&&!c.isHidden||i.push(c)}if(!i.length)return!1;const n=[];let o=!1;return this.deferSyncValue(()=>{i.reverse().forEach(({isHidden:a,valid:u,rule:l,prepend:c,append:m,child:v,ctrl:O,method:g})=>{if(a){u?e.ctrlRule.push({__ctrl:!0,children:l,valid:u}):O&&e.ctrlRule.splice(e.ctrlRule.indexOf(O)>>>0,1),n[u?"push":"unshift"](()=>{g==="disabled"||g==="enabled"?this.api.disabled(!u,l):g==="display"?this.api.display(u,l):g==="required"?(l.forEach(w=>{this.api.setEffect(w,"required",u)}),u||this.api.clearValidateState(l)):this.api.hidden(!u,l)});return}if(u){o=!0;const w={type:"fcFragment",native:!0,__ctrl:!0,children:l};e.ctrlRule.push(w),this.bus.$once("load-start",()=>{c?s.prepend(w,c,v):m||v?s.append(w,m||e.id,v):e.root.splice(e.root.indexOf(e.origin)+1,0,w)})}else{e.ctrlRule.splice(e.ctrlRule.indexOf(O),1);const w=Q(O);w&&w.rm()}})}),n.length&&this.vm.$nextTick(()=>{n.forEach(a=>a())}),this.vm.$emit("control",e.origin,this.api),this.effect(e,"control"),o},reloadRule(e){return this._reloadRule(e)},_reloadRule(e){e||(e=this.rules);const r=y({},this.ctxs);this.clearNextTick(),this.$render.clearOrgChildren(),this.initData(e),this.fc.rules=e,this.deferSyncValue(()=>{this.bus.$once("load-end",()=>{Object.keys(r).filter(i=>this.ctxs[i]===void 0).forEach(i=>this.rmCtx(r[i])),this.$render.clearCacheAll()}),this.reloading=!0,this.loadRule(),this.reloading=!1,this.refresh(),this.vm.$emit("reloading",this.api)}),this.bus.$off("next-tick",this.nextReload),this.bus.$once("next-tick",this.nextReload),this.vm.$emit("update",this.api)},refresh(){this.vm._refresh()}})}function Qt(t){const e=Be();return Object.keys(e).forEach(r=>{k(t,r)||S(t,r,e[r])}),t}function Zt(t){const e=t.rule.control||[];return f.Object(e)?[e]:e}function Yt(t,e){for(let r=0;r<t.ctrlRule.length;r++){const i=t.ctrlRule[r];if(i.children===e)return i}}function We(t){return!!t.rule.__ctrl}function er(t){p(t.prototype,{getValue(e){return f.Undef(e.cacheValue)&&(e.cacheValue=e.parser.toValue(this.getFormData(e),e)),e.cacheValue},setValue(e,r,i,s){e.deleted||(e.cacheValue=r,this.changeStatus=!0,this.nextRefresh(),this.$render.clearCache(e),this.setFormData(e,i),this.syncValue(),this.valueChange(e,r),this.vm.$emit("change",e.field,r,e.origin,this.api,s||!1),this.effect(e,"value"),this.emitEvent("change",e.field,r,{rule:e.origin,api:this.api,setFlag:s||!1}))},onInput(e,r){let i;e.input&&(this.isQuote(e,i=e.parser.toValue(r,e))||this.isChange(e,i))&&this.setValue(e,i,r)},setFormData(e,r){S(this.formData,e.id,r===null?void 0:r)},getFormData(e){return this.formData[e.id]},validate(){return Xe(this.vm.validate),this.fields().forEach(e=>{this.fieldCtx[e].forEach(r=>{this.vm.validate[r.id]=V(r.rule.validate)})}),this.vm.validate},syncForm(){Xe(this.form),Object.defineProperties(this.form,this.fields().reduce((e,r)=>{const i=this.getFieldCtx(r),s=this.valueHandle(i);return s.configurable=!0,e[r]=s,e},this.options.appendValue!==!1?Object.keys(this.appendData).reduce((e,r)=>(e[r]={enumerable:!0,configurable:!0,get:()=>this.appendData[r],set:i=>{this.appendData[r]=i}},e),{}):{})),this.syncValue()},valueHandle(e){return{enumerable:!0,get:()=>this.getValue(e),set:r=>{this.isChange(e,r)&&this.setValue(e,r,e.parser.toFormValue(r,e),!0)}}},appendValue(e){!e.field||!k(this.appendData,e.field)||(e.value=this.appendData[e.field],delete this.appendData[e.field])},addSubForm(e,r){this.subForm[e.id]=r},deferSyncValue(e,r){this.deferSyncFn||(this.deferSyncFn=e),this.deferSyncFn.sync||(this.deferSyncFn.sync=r),j(e),this.deferSyncFn===e&&(this.deferSyncFn=null,e.sync&&this.syncValue())},syncValue(){if(this.deferSyncFn)return this.deferSyncFn.sync=!0;this.vm._updateValue(y(y({},this.options.appendValue!==!1?this.appendData:{}),this.form))},isChange(e,r){return JSON.stringify(e.rule.value,Ge)!==JSON.stringify(r===null?void 0:r,Ge)},isQuote(e,r){return(f.Object(r)||Array.isArray(r))&&r===e.rule.value},refreshUpdate(e,r,i,s){if(f.Function(e.rule.update)){const n=j(()=>e.rule.update(r,e.origin,this.api,{origin:i||"change",linkField:s}));if(n===void 0)return;e.rule.hidden=n===!0}},valueChange(e,r){this.refreshRule(e,r),this.bus.$emit("change-"+e.field,r)},refreshRule(e,r,i,s){this.refreshControl(e)&&(this.$render.clearCacheAll(),this.loadRule(),this.vm.$emit("update",this.api),this.refresh()),this.refreshUpdate(e,r,i,s)},appendLink(e){const r=e.rule.link;f.trueArray(r)&&r.forEach(i=>{const s=()=>this.refreshRule(e,e.rule.value,"link",i);this.bus.$on("change-"+i,s),e.linkOn.push(()=>this.bus.$off("change-"+i,s))})},fields(){return Object.keys(this.fieldCtx)}})}function Ge(t,e){return typeof e=="function"?""+e:e}function Xe(t){Object.keys(t).forEach(e=>delete t[e])}const ye={init(t){},toFormValue(t,e){return t},toValue(t,e){return t},mounted(t){},render(t,e){return e.$render.defaultRender(e,t)},preview(t,e){return this.render(t,e)},mergeProp(t){}},tr=["field","value","vm","template","name","config","control","inject","sync","payload","optionsTo","update","component","cache"];function rr(t){p(t.prototype,{getCtx(e){return this.getFieldCtx(e)||this.getNameCtx(e)[0]||this.ctxs[e]},getCtxs(e){return this.fieldCtx[e]||this.nameCtx[e]||(this.ctxs[e]?[this.ctxs[e]]:[])},setIdCtx(e,r,i){const s=`${i}Ctx`;this[s][r]?this[s][r].push(e):this[s][r]=[e]},rmIdCtx(e,r,i){const s=`${i}Ctx`,n=this[s][r];if(!n)return!1;const o=n.splice(n.indexOf(e)>>>0,1).length>0;return n.length||delete this[s][r],o},getFieldCtx(e){return(this.fieldCtx[e]||[])[0]},getNameCtx(e){return this.nameCtx[e]||[]},setCtx(e){let{id:r,field:i,name:s,rule:n}=e;this.ctxs[r]=e,s&&this.setIdCtx(e,s,"name"),e.input&&(this.setIdCtx(e,i,"field"),this.setFormData(e,e.parser.toFormValue(n.value,e)),this.isMounted&&!this.reloading&&this.vm.$emit("change",e.field,n.value,e.origin,this.api))},getParser(e){const r=this.fc.parsers;return r[e.originType]||r[P(e.type)]||r[e.trueType]||ye},bindParser(e){e.setParser(this.getParser(e))},getType(e){const r=this.fc.CreateNode.aliasMap,i=r[e]||r[P(e)]||e;return P(i)},noWatch(e){this.noWatchFn||(this.noWatchFn=e),j(e),this.noWatchFn===e&&(this.noWatchFn=null)},watchCtx(e){const r=this.vm;Object.keys(e.rule).filter(i=>i[0]!=="_"&&i[0]!=="$"&&tr.indexOf(i)===-1).forEach(i=>{const s=i==="children";e.watch.push(r.$watch(()=>e.rule[i],(n,o)=>{if(!(this.loading||this.noWatchFn||this.reloading)){if(s&&e.parser.loadChildren===!1){this.$render.clearCache(e),this.nextRefresh();return}if(this.watching=!0,i==="link"){e.link();return}else if(["props","on","nativeOn","deep"].indexOf(i)>-1)this.parseInjectEvent(e.rule,n||{}),i==="props"&&e.input&&this.setFormData(e,e.parser.toFormValue(e.rule.value,e));else if(["emit","nativeEmit"].indexOf(i)>-1)this.parseEmit(e,i==="emit");else if(["prefix","suffix"].indexOf(i)>-1)n&&this.loadFn(n,e.rule);else if(i==="type")e.updateType(),this.bindParser(e);else if(i==="children"){const a=f.trueArray(n);this.deferSyncValue(()=>{n!==o&&(this.rmSub(o,e),this.$render.initOrgChildren()),a&&this.loadChildren(n,e),this.vm.$emit("update",this.api)})}this.$render.clearCache(e),this.refresh(),this.watching=!1}},{deep:!s,sync:s}))}),this.watchEffect(e)},rmSub(e,r){f.trueArray(e)&&e.forEach(i=>{i&&i.__fc__&&i.__fc__.parent===r&&this.rmCtx(i.__fc__)})},rmCtx(e){if(e.deleted)return;const{id:r,field:i,input:s,name:n}=e;e.input&&Object.defineProperty(e.rule,"value",{value:e.rule.value,writable:!0}),N(this.ctxs,r),N(this.$render.tempList,r),N(this.$render.orgChildren,r),N(this.vm.ctxInject,r),N(this.formData,r),N(this.subForm,r),N(e,"cacheValue"),s&&this.rmIdCtx(e,i,"field"),n&&this.rmIdCtx(e,n,"name"),s&&!k(this.fieldCtx,i)&&N(this.form,i),this.deferSyncValue(()=>{this.reloading||(e.parser.loadChildren!==!1&&f.trueArray(e.rule.children)&&e.rule.children.forEach(a=>a.__fc__&&this.rmCtx(a.__fc__)),e.root===this.rules&&this.vm._renderRule())},s);const o=this.sort.indexOf(r);return o>-1&&this.sort.splice(o,1),this.$render.clearCache(e),e.delete(),this.effect(e,"deleted"),s&&!this.fieldCtx[i]&&this.vm.$emit("removeField",i,e.rule,this.api),e.rule.__ctrl||this.vm.$emit("removeRule",e.rule,this.api),e}})}function ir(t){p(t.prototype,{mounted(){const e=()=>{this.isMounted=!0,this.lifecycle("mounted")};this.pageEnd?e():this.bus.$once("page-end",e)},lifecycle(e){this.vm.$emit(e,this.api),this.emitEvent(e,this.api)},emitEvent(e,...r){const i=this.options[e]||this.options[P("on-"+e)];if(i){const s=q(i);f.Function(s)&&j(()=>s(...r))}this.bus.$emit(e,...r)}})}function nr(t){p(t.prototype,{useProvider(){const e=this.fc.providers;Object.keys(e).forEach(r=>{let i=e[r];f.Function(i)&&(i=i(this.fc)),i._c=or(i),this.onEffect(i),this.providers[r]=i})},onEffect(e){const r=[];(e._c||["*"]).forEach(i=>{const s=i==="*"?"*":this.getType(i);r.indexOf(s)>-1||(r.push(s),this.bus.$on(`p:${e.name}:${s}:${e.input?1:0}`,(n,o)=>{e[n]&&e[n](...o)}))}),e._used=r},watchEffect(e){const r=this.vm;let i={required:()=>{var s,n;return(k(e.rule,"$required")?e.rule.$required:(n=(s=e.rule)==null?void 0:s.effect)==null?void 0:n.required)||!1}};Object.keys(e.rule.effect||{}).forEach(s=>{i[s]=()=>e.rule.effect[s]}),Object.keys(e.rule).forEach(s=>{s[0]==="$"&&(i[s.substr(1)]=()=>e.rule[s])}),Object.keys(i||{}).forEach(s=>{e.watch.push(r.$watch(i[s],n=>{this.effect(e,"watch",{[s]:n})},{deep:!0}))})},ruleEffect(e,r,i){this.emitEffect({rule:e,input:!!e.field,type:this.getType(e.type)},r,i)},effect(e,r,i){this.emitEffect({rule:e.rule,input:e.input,type:e.trueType,ctx:e,custom:i},r)},getEffect(e,r){if(k(e,"$"+r))return e["$"+r];if(k(e,"effect")&&k(e.effect,r))return e.effect[r]},emitEffect({ctx:e,rule:r,input:i,type:s,custom:n},o,a){if(!s||s==="fcFragment")return;const u=n||Object.keys(r).reduce((l,c)=>(c[0]==="$"&&(l[c.substr(1)]=r[c]),l),y({},r.effect||{}));Object.keys(u).forEach(l=>{const c=this.providers[l];if(!c||c.input&&!i)return;let m;if(!c._c)m="*";else if(c._used.indexOf(s)>-1)m=s;else return;const v=y({value:u[l],getValue:()=>this.getEffect(r,l)},a||{});e&&(v.getProp=()=>e.effectData(l),v.clearProp=()=>e.clearEffectData(l),v.mergeProp=O=>U(v.getProp(),[O]),v.id=e.id),this.bus.$emit(`p:${l}:${m}:${c.input?1:0}`,o,[v,r,this.api])})}})}function sr(t){return t.filter(function(e,r,i){return i.indexOf(e,0)===r})}function or(t){const e=t.components;if(Array.isArray(e)){const r=sr(e.filter(i=>i!=="*"));return r.length?r:!1}else return f.String(e)?[e]:!1}function T(t){p(this,{fc:t,vm:t.vm,watching:!1,loading:!1,reloading:!1,noWatchFn:null,deferSyncFn:null,isMounted:!1,formData:{},subForm:{},form:{},appendData:{},providers:{},cycleLoad:null,loadedId:1,nextTick:null,changeStatus:!1,pageEnd:!0,nextReload:()=>{this.lifecycle("reload")}}),Te(this,{options(){return t.options},bus(){return t.bus}}),this.initData(t.rules),this.$manager=new t.manager(this),this.$render=new me(this),this.api=t.extendApi(qt(this),this)}p(T.prototype,{initData(t){p(this,{ctxs:{},fieldCtx:{},nameCtx:{},sort:[],rules:t})},init(){this.appendData=y(y(y({},this.fc.options.formData||{}),this.vm.value||{}),this.appendData),this.useProvider(),this.usePage(),this.loadRule(),this.$manager.__init(),this.lifecycle("created"),this.vm.$set(this.vm,"formData",this.formData)},beforeFetch(t){return new Promise(e=>{const r=this.options.beforeFetch&&j(()=>this.options.beforeFetch(t,{api:this.api}));r&&f.Function(r.then)?r.then(e):e()})}}),Jt(T),Kt(T),Gt(T),zt(T),er(T),rr(T),ir(T),nr(T);const ge={name:"fcFragment",functional:!0,props:["vnode"],render(t,e){return e.props.vnode?e.props.vnode:e.children}};function ar(t){return f.String(t)?{domProps:{innerHTML:t}}:t}function lr(){const t={};function e(r){r&&this.setVm(r)}return p(e.prototype,{setVm(r){this.vm=r,this.$h=r.$createElement},make(r,i,s){return b.config.isReservedTag(r)&&i.nativeOn&&delete i.nativeOn,this.makeComponent(r,i,s)},makeComponent(r,i,s){let n=this.$h(r,ar(i),s||[]);return n.context=this.vm,n},aliasMap:t}),p(e,{aliasMap:t,alias(r,i){t[r]=i},use(r){Object.keys(r).forEach(i=>{const s=Y(i),n=xe(i).toLocaleLowerCase(),o=r[i];[i,s,n].forEach(a=>{e.alias(i,o),e.prototype[a]=function(u,l){return this.make(o,u,l)}})})}}),e}function ur(t){class e extends ze{}return Object.assign(e.prototype,t),e}function ze(t){p(this,{$handle:t,vm:t.vm,options:{},ref:"fcForm",mergeOptionsRule:{normal:["form","row","info","submitBtn","resetBtn"]}}),this.updateKey(),this.init()}p(ze.prototype,{__init(){this.$render=this.$handle.$render,this.$r=(...t)=>this.$render.renderRule(...t)},updateKey(){this.key=ee()},init(){},update(){},beforeRender(){},form(){return this.vm.$refs[this.ref]},getSlot(t){const e=r=>{if(r){let i=r.$scopedSlots[t];return i||e(r.$pfc)}};return e(this.vm)},mergeOptions(t,e){return B(t.map(r=>this.tidyOptions(r)),e,this.mergeOptionsRule)},updateOptions(t){this.options=this.mergeOptions([t],this.getDefaultOptions()),this.update()},tidyOptions(t){return t},tidyRule(t){},mergeProp(t){},getDefaultOptions(){return{}},render(t){}});const hr=function(t){const e={name:"loadData",_fn:[],created(r,i,s){this.deleted(r);let n=V(r.getValue());const o=[];n.forEach(a=>{if(a){const u=()=>{a.watch!==!1&&(t.bus.$off("p.loadData."+a.attr,u),t.bus.$once("p.loadData."+a.attr,u));let l;a.attr&&(l=t.loadData[a.attr]||a.default,a.copy!==!1&&(l=L(l))),te(r.getProp(),a.to||"options",l),s.sync(i)};o.push(()=>t.bus.$off("p.loadData."+a.attr,u)),u()}}),this._fn[r.id]=o},deleted(r){this._fn[r.id]&&(this._fn[r.id].forEach(i=>{i()}),delete this._fn[r.id]),r.clearProp()}};return e.watch=e.created,e},Qe={name:"componentValidate",load(t,e,r){const i=t.getValue();i?t.getProp().validate=[{validator(...s){const n=Q(e);if(n)return r.exec(n.id,i===!0?"formCreateValidate":i,...s,{attr:t,rule:e,api:r})}}]:(t.clearProp(),r.clearValidateState([e.field]))},watch(...t){Qe.load(...t)}},fr=function(t){function e(i){return f.String(i)&&(i={action:i,to:"options"}),i}function r(i,s,n){let o=i.value;const a=m=>{m===void 0?(i.clearProp(),n.sync(s)):te(i.getProp(),o.to||"options",m)};if(f.Function(o)&&(o=o(s,n)),o=e(o),!o||!o.action){a(void 0);return}o=L(o),o.to||(o.to="options");const u=o.onError,l=()=>{if(!i.getValue())return i.clearProp(),n.sync(s),!0},c=J(y({headers:{}},o),{onSuccess(m,v){if(l())return;let O=g=>v?g:k(g,"data")?g.data:g;f.Function(o.parse)?O=o.parse:o.parse&&f.String(o.parse)&&(O=g=>(o.parse.split(".").forEach(w=>{g&&(g=g[w])}),g)),a(O(m,s,n)),n.sync(s)},onError(m){a(void 0),!l()&&(u||(v=>he(v.message||"fetch fail "+o.action)))(m,s,n)}});t.$handle.beforeFetch(c,{rule:s,api:n}).then(()=>{if(f.Function(o.action)){o.action(s,n).then(m=>{c.onSuccess(m,!0)}).catch(m=>{c.onError(m)});return}j(()=>t.create.fetch(c,{inject:i,rule:s,api:n}))})}return{name:"fetch",loaded(...i){r(...i)},watch(...i){r(...i)}}},Ze={name:"required",load(t,e,r){const i=cr(t.getValue());if(i.required===!1)t.clearProp(),r.clearValidateState([e.field]);else{const s=y({required:!0,validator(n,o,a){f.empty(o)?a(s.message):a()}},i);if(!s.message){let n=e.title||"";s.message=((typeof n=="object"?n.title:n)||"")+"不能为空"}t.getProp().validate=[s]}r.sync(e)},watch(...t){Ze.load(...t)}};function cr(t){return f.Boolean(t)?{required:t}:f.String(t)?{message:t}:f.Undef(t)?{required:!1}:f.Function(t)?{validator:t}:f.Object(t)?t:{}}const dr={fetch:fr,loadData:hr,required:Ze,componentValidate:Qe},pr={name:"html",loadChildren:!1,render(t,e){return e.prop.domProps||(e.prop.domProps={}),e.prop.domProps.innerHTML=t,e.vNode.make(e.prop.props.tag||"div",e.prop)},renderChildren(t){return Array.isArray(t.rule.children)?t.rule.children.filter(e=>f.String(e)).join(""):""}};function mr(t,e){let r;return arguments.length===2?(r=arguments[1],e=r[t]):r=arguments[2],{id:e,prop:r}}function $e(){return mr("name",...arguments)}function Ye(t){return!t||!t.el?window.document.body:f.Element(t.el)?t.el:document.querySelector(t.el)}function et(t,e){const r=new b({data(){return{rule:t,option:e||{}}},render(i){return i("FormCreate",{ref:"fc",props:this.$data})}});return r.$mount(),r}function yr(t){const e=t.key||[],r=t.array||[],i=t.normal||[];Fe.push(...e),ae.push(...r),le.push(...i),Me([...e,...r,...i])}let gr=1;const A={};function tt(t){const e={[ge.name]:ge},r={},i={},s=y({},dr),n=Mt();let o={global:{}};const a={},u=lr(),l={};yr(t.attrs||{});function c(h){const d=A[h];if(Array.isArray(d))return d.map($=>$.api());if(d)return d.api()}function m(){const h=$e(...arguments);h.id&&h.prop&&(i[h.id]=h.prop)}function v(){const h=$e(...arguments);h.id&&h.prop&&(s[h.id]=J(y({},h.prop),{name:h.id}))}function O(h){u.use(h)}function g(){const h=$e(...arguments);if(!h.id||!h.prop)return ye;const d=P(h.id),$=h.prop,C=$.merge===!0?r[d]:void 0;r[d]=$,Object.setPrototypeOf($,C||ye),n[d]=R(d),$.maker&&p(n,$.maker)}function w(h,d){let $;if(f.String(h)){if($=P(h),["form-create","formcreate"].indexOf($)>-1)return ie();if(d===void 0)return e[$]}else $=P(h.name),d=h;if(!$||!d)return;const C=P($);e[$]=d,e[C]=d,delete u.aliasMap[$],delete u.aliasMap[C],delete r[$],delete r[C],d.formCreateParser&&g($,d.formCreateParser)}function at(h){Object.keys(A).forEach(d=>{(Array.isArray(A[d])?A[d]:[A[d]]).forEach(C=>{C.bus.$emit("p.loadData."+h)})})}function lt(h,d){a[h]=d,at(h)}function ut(h,d){return k(a,h)?a[h]:d}function Lr(h){delete a[h],at(h)}function ie(){return jt(ft,e,i)}function ht(){return ge}function qr(h,d){return f.Function(h.install)?h.install(x,d):f.Function(h)&&h(x,d),this}function x(h,d,$){let C=et(h,d||{});const D=C.$refs.fc.formCreate;return D.$parent=$,Ye(D.options).appendChild(C.$el),D.api()}Object.setPrototypeOf(x,l);function Ur(h){let d=y({},t);return h?d.inherit={components:e,parsers:r,directives:i,providers:s,maker:n,loadData:a}:delete d.inherit,tt(d)}function ft(h){const d=h.$options.propsData.rule;p(this,{id:gr++,vm:h,create:x,manager:ur(t.manager),parsers:r,providers:s,rules:Array.isArray(d)?d:[],name:h.$options.propsData.name||ee(),inFor:h.$options.propsData.inFor,prop:{components:e,directives:i},setData:lt,getData:ut,loadData:a,CreateNode:u,bus:new b,unwatch:null,options:{},extendApi:t.extendApi||($=>$)}),this.init(),this.initOptions(),this.name&&(this.inFor?(A[this.name]||(A[this.name]=[]),A[this.name].push(this)):A[this.name]=this)}p(ft.prototype,{init(){const h=this.vm,d=new T(this);this.$handle=d,h.$f=d.api,h.$emit("input",d.api),h.$on("hook:created",()=>{this.isSub()&&(this.unwatch=h.$watch(()=>h.$pfc.option,()=>{this.initOptions(),h.$f.refresh()},{deep:!0}),this.initOptions()),this.created()}),h.$on("hook:mounted",()=>{this.mounted()}),h.$on("hook:beforeDestroy",()=>{if(h.destroyed=!0,this.unwatch&&this.unwatch(),d.reloadRule([]),this.name)if(this.inFor){const $=A[this.name].indexOf(this);A[this.name].splice($,1),A[this.name].length||delete A[this.name]}else delete A[this.name]}),h.$on("hook:updated",()=>{d.bindNextTick(()=>this.bus.$emit("next-tick",d.api))})},isSub(){return this.vm.$pfc&&this.vm.extendOption},initOptions(){this.options={};let h=y({formData:{},submitBtn:{},resetBtn:{}},L(o));this.isSub()&&this.mergeOptions(this.options,this.vm.$pfc.$f.config||{},!0),h=this.mergeOptions(h,this.vm.$options.propsData.option),this.updateOptions(h)},mergeOptions(h,d,$){return d=L(d),$&&["page","onSubmit","mounted","reload","formData","el"].forEach(C=>{delete d[C]}),d.global&&(h.global=Dt(h.global,d.global),delete d.global),this.$handle.$manager.mergeOptions([d],h),h},updateOptions(h){this.mergeOptions(this.options,h),this.$handle.$manager.updateOptions(this.options)},created(){this.$handle.init(),this.vm.$emit("created",this.api())},api(){return this.$handle.api},render(){return this.$handle.render()},mounted(){this.$handle.mounted()}});function ct(h){p(h,{version:t.version,ui:t.ui,setData:lt,getData:ut,removeData:Lr,maker:n,component:w,directive:m,register:v,$vnode:ht,parser:g,use:qr,factory:Ur,componentAlias:O,copyRule:de,copyRules:Ve,fetch:Ue,$form:ie,parseFn:q,parseJson:Tt,toJson:je,getApi:c,init(d,$={}){let C=et(d,$),D=C.$refs.fc.formCreate;return{mount(X){return X&&f.Element(X)&&(D.options.el=X),Ye(D.options).appendChild(C.$el),D.api()},remove(){C.$el.parentNode&&C.$el.parentNode.removeChild(C.$el)},destroy(){this.remove(),C.$destroy()},$f:D.api()}}})}function Hr(h){p(h,{create:x,install(d,$){if(o=y(y({},o),$||{}),d._installedFormCreate===!0)return;d._installedFormCreate=!0;const C=function(D,X={}){return x(D,X,this)};ct(C),d.prototype.$formCreate=C,d.component("FormCreate",ie()),d.component("FcFragment",ht())}})}if(ct(l),Hr(l),u.use({fragment:"fcFragment"}),g(pr),t.install&&x.use(t),t.inherit){const h=t.inherit;h.components&&p(e,h.components),h.parsers&&p(r,h.parsers),h.directives&&p(i,h.directives),h.providers&&p(s,h.providers),h.maker&&p(n,h.maker),h.loadData&&p(a,h.loadData)}const ne=ie();return Object.setPrototypeOf(ne,l),Object.defineProperties(ne,{fetch:{get(){return l.fetch},set(h){l.fetch=h}}}),ne.util=l,ne}const rt={date:"yyyy-MM-dd",month:"yyyy-MM",datetime:"yyyy-MM-dd HH:mm:ss",timerange:"HH:mm:ss",daterange:"yyyy-MM-dd",monthrange:"yyyy-MM",datetimerange:"yyyy-MM-dd HH:mm:ss",year:"yyyy"},it="datePicker",$r={name:it,maker:function(){return["year","month","date","dates","week","datetime","datetimeRange","dateRange","monthRange"].reduce((t,e)=>(t[e]=R(it,{type:e.toLowerCase()}),t),{})}(),mergeProp(t){const e=t.prop.props;e.valueFormat||(e.valueFormat=rt[e.type]||rt.date)}},ve="hidden",vr={name:ve,maker:{[ve]:(t,e)=>R(ve)("",t,e)},render(){return[]}},be="input",br={name:be,maker:function(){const t=["password","url","email","text","textarea"].reduce((e,r)=>(e[r]=R(be,{type:r}),e),{});return t.idate=R(be,{type:"date"}),t}(),mergeProp(t){let{props:e}=t.prop;e&&e.autosize&&e.autosize.minRows&&(e.rows=e.autosize.minRows||2)}},nt="slider",Cr={name:nt,maker:{sliderRange:R(nt,{range:!0})},toFormValue(t,e){let r=Array.isArray(t),i=e.prop.props,s=i.min||0,n;return i.range===!0?n=r?t:[s,parseFloat(t)||s]:n=r?parseFloat(t[0])||s:parseFloat(t),n}},Ce="timePicker",_r={name:Ce,maker:{time:R(Ce,t=>t.props.isRange=!1),timeRange:R(Ce,t=>t.props.isRange=!0)},mergeProp(t){const e=t.prop.props;e.valueFormat||(e.valueFormat="HH:mm:ss")}},kr=[$r,vr,br,Cr,_r,{name:"FcRow",render(t,e){return e.vNode.col({props:{span:24}},[e.vNode.row(e.prop,t)])}},{name:"select",toFormValue(t,e){return e.prop.props.multiple&&!Array.isArray(t)?V(t):t}}],_="el",Or={button:_+"Button",icon:"i",slider:_+"Slider",rate:_+"Rate",upload:"fcUpload",cascader:_+"Cascader",popover:_+"Popover",tooltip:_+"Tooltip",colorPicker:_+"ColorPicker",timePicker:_+"TimePicker",timeSelect:_+"TimeSelect",datePicker:_+"DatePicker",switch:_+"Switch",select:"fcSelect",checkbox:"fcCheckbox",radio:"fcRadio",inputNumber:_+"InputNumber",number:_+"InputNumber",input:_+"Input",formItem:_+"FormItem",form:_+"Form",frame:"fcFrame",col:_+"Col",row:_+"Row",tree:"fcTree",autoComplete:_+"Autocomplete",auto:_+"Autocomplete",group:"fcGroup",object:"fcSubForm",subForm:"fcSubForm"};function wr(){return{form:{inline:!1,labelPosition:"right",labelWidth:"125px",disabled:!1,size:void 0},row:{show:!0,gutter:0},submitBtn:{type:"primary",loading:!1,disabled:!1,innerText:"提交",show:!0,col:void 0,click:void 0},resetBtn:{type:"default",loading:!1,disabled:!1,icon:"el-icon-refresh",innerText:"重置",show:!1,col:void 0,click:void 0}}}function Er(t){return t.type==="tooltip"}const Fr=/[A-Z]/;function Sr(t,e){return!Fr.test(t)&&(f.String(e)||f.Number(e))}function st(t,e){k(t,e)&&f.String(t[e])&&(t[e]={[e]:t[e],show:!0})}function M(t){return t===!1}function Rr(t,e){k(t,e)&&!f.Object(t[e])&&(t[e]={show:!!t[e]})}const jr={validate(){const t=this.form();return t?t.validate():new Promise(e=>e())},validateField(t){const e=this.form();return e?new Promise((r,i)=>{e.validateField(t,s=>{s?i(s):r(null)})}):new Promise(r=>r())},clearValidateState(t){const e=this.vm.$refs[t.wrapRef];e&&(e.validateMessage="",e.validateState="")},tidyOptions(t){return["submitBtn","resetBtn","row","info","wrap","col","title"].forEach(e=>{Rr(t,e)}),t},tidyRule({prop:t}){return st(t,"title"),st(t,"info"),t},mergeProp(t){let e=t.prop.props;t.prop=B([{attrs:Object.keys(e).reduce((r,i)=>(Sr(i,e[i])&&(r[i]=e[i]),r),{}),info:this.options.info||{},wrap:this.options.wrap||{},col:this.options.col||{},title:this.options.title||{}},t.prop],{info:{trigger:"hover",placement:"top-start",icon:"el-icon-warning"},title:{},col:{span:24},wrap:{}},{normal:["title","info","col","wrap"]})},getDefaultOptions(){return wr()},update(){const t=this.options.form;this.rule={props:y({},t),nativeOn:{submit:e=>{e.preventDefault()}},class:[t.className,t.class,"form-create"],style:t.style,type:"form"}},beforeRender(){const{key:t,ref:e,$handle:r}=this;p(this.rule,{key:t,ref:e}),p(this.rule.props,{model:r.formData})},render(t){return t.length&&t.push(this.makeFormBtn()),this.$r(this.rule,M(this.options.row.show)?t:[this.makeRow(t)])},makeWrap(t,e){const r=t.prop,i=`${this.key}${t.key}`,s=r.col,n=this.isTitle(r),o=!s.labelWidth&&!n?0:s.labelWidth,{inline:a,col:u}=this.rule.props,l=M(r.wrap.show)?e:this.$r(B([r.wrap,{props:J(y({labelWidth:o===void 0?o:xe(o),label:n?r.title.title:void 0},r.wrap||{}),{prop:t.id,rules:t.injectValidate()}),class:r.className,key:`${i}fi`,ref:t.wrapRef,type:"formItem"}]),[e,n?this.makeInfo(r,i,t):null]);return a===!0||M(u)||M(s.show)?l:this.makeCol(r,i,[l])},isTitle(t){if(this.options.form.title===!1)return!1;const e=t.title;return!(!e.title&&!e.native||M(e.show))},makeInfo(t,e,r){const i=t.title,s=t.info,n=Er(s),o=this.options.form,a=this.getSlot("title"),u=[a?a({title:i.title||"",rule:r.rule,options:this.options}):(i.title||"")+(o.labelSuffix||o["label-suffix"]||"")];if(!M(s.show)&&(s.info||s.native)&&!M(s.icon)){const l={type:s.type||"popover",props:y({},s),key:`${e}pop`,slot:"label"},c="content";s.info&&!k(l.props,c)&&(l.props[c]=s.info),u[s.align!=="left"?"unshift":"push"](this.$r(B([s,l]),[this.$r({type:"i",slot:n?"default":"reference",class:s.icon===!0?"el-icon-warning":s.icon,key:`${e}i`})]))}return this.$r(B([i,{props:i,slot:i.slot||"label",key:`${e}tit`,type:i.type||"span"}]),u)},makeCol(t,e,r){const i=t.col;return this.$r({class:i.class,type:"col",props:i||{span:24},key:`${e}col`},r)},makeRow(t){const e=this.options.row||{};return this.$r({type:"row",props:e,class:e.class,key:`${this.key}row`},t)},makeFormBtn(){let t=[];if(M(this.options.submitBtn.show)||t.push(this.makeSubmitBtn()),M(this.options.resetBtn.show)||t.push(this.makeResetBtn()),!t.length)return;const e=this.$r({type:"formItem",key:`${this.key}fb`},t);return this.rule.props.inline===!0?e:this.$r({type:"col",props:{span:24},key:`${this.key}fc`},[e])},makeResetBtn(){const t=this.options.resetBtn;return this.$r({type:"button",props:t,style:{width:t.width},on:{click:()=>{const e=this.$handle.api;t.click?t.click(e):e.resetFields()}},key:`${this.key}b2`},[t.innerText])},makeSubmitBtn(){const t=this.options.submitBtn;return this.$r({type:"button",props:t,style:{width:t.width},on:{click:()=>{const e=this.$handle.api;t.click?t.click(e):e.submit()}},key:`${this.key}b1`},[t.innerText])}},H={};Ar(H),Ir(H),Vr(H),Pr(H),Tr(H);function Ar(t){["group","tree","switch","upload","autoComplete","checkbox","cascader","colorPicker","datePicker","frame","inputNumber","radio","rate"].forEach(e=>{t[e]=R(e)}),t.auto=t.autoComplete,t.number=t.inputNumber,t.color=t.colorPicker}function Ir(t){const e="select",r="multiple";t.selectMultiple=R(e,{[r]:!0}),t.selectOne=R(e,{[r]:!1})}function Vr(t){const e="tree",r={treeSelected:"selected",treeChecked:"checked"};Object.keys(r).reduce((i,s)=>(i[s]=R(e,{type:r[s]}),i),t)}function Pr(t){const e="upload",r={image:["image",0],file:["file",0],uploadFileOne:["file",1],uploadImageOne:["image",1]};Object.keys(r).reduce((i,s)=>(i[s]=R(e,n=>n.props({uploadType:r[s][0],maxLength:r[s][1]})),i),t),t.uploadImage=t.image,t.uploadFile=t.file}function Tr(t){const e={frameInputs:["input",0],frameFiles:["file",0],frameImages:["image",0],frameInputOne:["input",1],frameFileOne:["file",1],frameImageOne:["image",1]};return Object.keys(e).reduce((r,i)=>(r[i]=R("frame",s=>s.props({type:e[i][0],maxLength:e[i][1]})),r),t),t.frameInput=t.frameInputs,t.frameFile=t.frameFiles,t.frameImage=t.frameImages,t}function ot(t,e){return f.Boolean(t)?t={show:t}:!f.Undef(t)&&!f.Object(t)&&(t={show:e}),t}function Dr(t,e){return p(t,{formEl(){return e.$manager.form()},wrapEl(r){const i=e.getFieldCtx(r);if(i)return e.vm.$refs[i.wrapRef]},validate(r){return new Promise((i,s)=>{const n=t.children,o=[e.$manager.validate()];n.forEach(a=>{o.push(a.validate())}),Promise.all(o).then(()=>{i(!0),r&&r(!0)}).catch(a=>{s(a),r&&r(!1,a),e.vm.$emit("validate-fail",a,{api:t})})})},validateField:(r,i)=>new Promise((s,n)=>{const o=e.getFieldCtx(r);if(!o)return;const a=e.subForm[o.id],u=[e.$manager.validateField(o.id)];V(a).forEach(l=>{u.push(l.validate().catch(()=>Promise.reject("子表单验证未通过")))}),Promise.all(u).then(()=>{s(null),i&&i(null)}).catch(l=>{n(l),i&&i(l),e.vm.$emit("validate-field-fail",l,{field:r,api:t})})}),clearValidateState(r,i=!0){t.helper.tidyFields(r).forEach(s=>{i&&this.clearSubValidateState(s),e.getCtxs(s).forEach(n=>{e.$manager.clearValidateState(n)})})},clearSubValidateState(r){t.helper.tidyFields(r).forEach(i=>{e.getCtxs(i).forEach(s=>{const n=e.subForm[s.id];n&&(Array.isArray(n)?n.forEach(o=>{o.clearValidateState()}):n&&n.clearValidateState())})})},btn:{loading:(r=!0)=>{t.submitBtnProps({loading:!!r})},disabled:(r=!0)=>{t.submitBtnProps({disabled:!!r})},show:(r=!0)=>{t.submitBtnProps({show:!!r})}},resetBtn:{loading:(r=!0)=>{t.resetBtnProps({loading:!!r})},disabled:(r=!0)=>{t.resetBtnProps({disabled:!!r})},show:(r=!0)=>{t.resetBtnProps({show:!!r})}},submitBtnProps:(r={})=>{let i=ot(e.options.submitBtn,!0);p(i,r),e.options.submitBtn=i,t.refreshOptions()},resetBtnProps:(r={})=>{let i=ot(e.options.resetBtn,!1);p(i,r),e.options.resetBtn=i,t.refreshOptions()},submit(r,i){t.validate(s=>{if(s){let n=t.formData();f.Function(r)?j(()=>r(n,this)):(f.Function(e.options.onSubmit)&&j(()=>e.options.onSubmit(n,this)),e.vm.$emit("submit",n,this))}else f.Function(i)&&j(()=>i(this,...arguments))}).catch(s=>{})}}),t}function Br(t){t.componentAlias(Or),Rt.forEach(e=>{t.component(e.name,e)}),kr.forEach(e=>{t.parser(e)}),Object.keys(H).forEach(e=>{t.maker[e]=H[e]})}function Mr(){return tt({ui:"element-ui",version:"2.6.1",manager:jr,extendApi:Dr,install:Br,attrs:{normal:["col","wrap"],array:["className"],key:["title","info"]}})}const re=Mr();typeof window!="undefined"&&(window.formCreate=re,window.Vue&&re.install(window.Vue));const Nr=re.maker;E.default=re,E.maker=Nr,Object.defineProperties(E,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|