DynamicForm_wev8.js 3.13 KB
define("DynamicForm_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}"></div>'}),define(["mUtil","Component"],function(p,e){return e.init(function(t){e.super(this,t),this.type="DynamicForm",this.tpl=this.type+"_html",this.css=this.type+"_css",this.dataload=!0;var o,r,d,s,c,a={},l=[],u=this.viewModel={dataSource:{},datas:[],submit:{action:""},readonly:!1,standalone:!0};this.mounted=function(){var t=$.Deferred(),e=this;return o=this.pageid,r=this.$container,d=this.$comp,s=$('<div class="wev-error"></div>'),c="form_"+this.id,a.loadDatas(function(){a.initViewModel(),a.render().then(function(){p.trigger("dataload",e.pageid,e.id),t.resolve()}),a.initEvents()}),t},this.submit=function(t){p.getInstance(c,o).submit(t)},this.reset=function(){p.getInstance(c,o).reset()},this.hasDraftOperation=function(t){t&&t(!0)},a.loadDatas=function(n){var t=u.dataSource.type,i=function(t){s.html(t).appendTo(d)};if(u.datas.length&&u.standalone)n&&n();else if(u.standalone||"table"!==t){if("url"===t){var e=u.dataSource.path||"";require(["apiHelper"],function(t){t.requestUrl(e,{STATUS_CODE:{key:"status",value:"1"},ERROR_MSG:"errMsg"},{},function(t){u.datas=t.datas||[],n&&n()},i)})}else if("api"===t){var a=u.dataSource.apiConfig||{api:{},request:{},response:{}};require(["apiHelper"],function(t){t.callApi(a,{},function(t){var e,i=a.response.formats;i.DATAS&&(e=p.getKeyValue(i.DATAS,t)),u.datas=e||[],n&&n()},i)})}}else{var r=p.getActionUrl(this.type,{action:"getDatas",mec_id:this.id},o);p.getJSON(r,function(t){u.datas=t.data||[],n&&n()},function(e){p.getLabel(5271,"请求失败",function(t){i(t+": "+e)})})}},a.initEvents=function(){d.on("click",".wev-dynamic-form-group-title",function(t){var e=$(this).parent().children(".wev-dynamic-form-group-content"),i="wev-hide";e.toggleClass(i,!e.hasClass(i))})},a.initViewModel=function(){if(u.datas.length){var t=u.submit.action;"save"===t&&(t=p.getActionUrl(this.type,{action:"save",mec_id:this.id},o)),u.datas.unshift({el:c,type:"Form",option:{isDynamicForm:!0,submit:{action:t,validate:function(){return!0}}},container:r,pageid:o})}},a.render=function(){var i="";u.datas.forEach(function(t){var e="";e=t.group?a.renderGroup(t,e):a.renderField(t,e),i+=e}),this.$comp.html(i);var t=$.Deferred();return l.length?e.load(l,function(){t.resolve()}):t.resolve(),t},a.renderGroup=function(t,i){if(!t)return i;var e=t.id||"",n=t.pid||"";return i+='<div class="wev-dynamic-form-group" data-id="'+e+'" data-pid="'+n+'">',i+='<div class="wev-dynamic-form-group-title">'+t.title+"</div>",i+='<div class="wev-dynamic-form-group-content">',t.childs&&t.childs.forEach(function(t){var e="";e=t.group?a.renderGroup(t,e):a.renderField(t,e),i+=e}),i+="</div>",i+="</div>"},a.renderField=function(t,e){var i=t.el||p.UUID(),n=t.type,a=t.option;return a.form=c,u.readonly&&(a.readonly=u.readonly),l.push({el:i,type:n,option:a,container:r,pageid:o}),e+='<div class="wev-dynamic-form-field" data-id="'+(t.id||"")+'" data-pid="'+(t.pid||"")+'">                    <abbr id="'+i+'" data-type="'+n+'" data-loaded="false"></abbr>                </div>'},a.initViewModel=a.initViewModel.bind(this),a.loadDatas=a.loadDatas.bind(this),a.render=a.render.bind(this)})});