FCheckbox_wev8.js
4.08 KB
define("FCheckbox_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t<div class="wev-field wev-vertical {@if required}wev-field-required{@/if}" >\t <div>${field.label}</div>\t <div>\t \t<div class="{@if vertical}wev-checkbox-vertical-container{@else}wev-checkbox-horizontal-container{@/if}">\t\t\t\t<ul>\t\t\t\t\t{@each items as item, index}\t\t\t\t\t\t<li {@if (\',\'+ field.value + \',\').indexOf(\',\' + item.value + \',\') > -1 } class="checked"{@/if} data-value = "${item.value}">\t\t\t\t\t\t\t\t{@if vertical}<i class="wev-css-icon wev-multi-check"></i>{@/if} <div>$${item.name}</div>\t\t\t\t\t\t</li>\t\t\t\t\t{@/each}\t\t\t\t</ul>\t\t\t</div>\t\t\t<input type="hidden" name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}"/>\t </div>\t</div>\t</div>'}),define(["mUtil","Component","Form"],function(c,f,o){return f.init(function(e){var i,n,a,l,s={},r="checked";f.super(this,e),this.type="FCheckbox",this.tpl=this.type+"_html",this.css=this.type+"_css",this.dataload=!0;var d=this.viewModel={form:"",field:{label:"",name:"",value:"",defaultValue:""},items:[],detailtable:{isA:!1},multiselect:!1,vertical:!1,required:!1,readonly:!1,attrLinkage:{triggers:null,isEditLayout:!1}},u=$.Deferred();for(var t in this.dbValueHasSet=!1,this.beforeMount=function(){o.utils.setDefaultValue(this.pageid,d)},this.mounted=function(){var t=this;if(i=this.$el.find(".wev-field"),a=this.$el.find("input[name='fieldname_"+d.field.name+"']"),n=this.$el.find("ul"),l=this.id,d.readonly||n.on("click","li",function(){var e=$(this).hasClass(r);!d.multiselect&&$(this).siblings("li").removeClass(r),$(this).toggleClass(r,!e),a.val(s.getValue()).triggerHandler("change")}),!0===d.items){var e=c.getActionUrl(this.type,{action:"getOptionDatas",mec_id:this.id,detailtable:d.detailtable.id},this.pageid);c.getJSON(e,function(e){var t=e.datas,a="",l=d.field.value.split(",");$(t).each(function(e,t){var i=-1!=l.indexOf(t.value)?'class="checked"':"";a+="<li "+i+' data-value="'+t.value+'">'+(d.vertical?'<i class="wev-css-icon wev-multi-check"></i>':"")+"<div>"+t.name+"</div></li>"}),n.html(a)}).then(function(){u.resolve()})}else u.resolve();if(d.field.needParseSqlValue)return o.utils.parseDefaultSqlValue(d.field.defaultValue,this.pageid,function(e){d.field.value=e,d.field.value&&t.setValue(d.field.value,!0)});d.attrLinkage.triggers&&t.bindAttrLinkage(d.attrLinkage.triggers,d.attrLinkage.isEditLayout)},this.initComponentData=function(){return u},this.getData=function(){return c.parseJSON("fieldname_"+d.field.name,s.getValue())},this.getShowData=function(){var e={};return e[d.field.name]=this.getValue(),e[d.field.name+"_showvalue"]=this.text(),e},this.reset=function(){s.setValue(d.field.value),i.removeClass("wev-required-remind")},this.checkRequired=function(){var e=d.required&&!this.$el.find("."+r).size(),t=d.field.label||c.getLabel(513752,"单多选");return i.toggleClass("wev-required-remind",e),e&&t},this.setRequired=function(e){d.required=e,i.toggleClass("wev-field-required",e),!e&&i.removeClass("wev-required-remind")},this.text=function(){var e=[];return this.$el.find("."+r).each(function(){e.push($(this).children("div").text())}),e.join(",")},this.getValue=function(){return s.getValue()},this.setValueByDB=function(e){this.dbValueHasSet=!0,!e&&d.field.value||(d.field.value=e,this.setValue(e))},this.setValue=function(e){s.setValue(e)},this.bindAttrLinkage=function(t,e){d.attrLinkage.triggers=t,d.attrLinkage.isEditLayout=e,d.multiselect||(t&&a.on("change",function(){require(["attrLinkageHelper"],function(e){e.trigger(t,l)})}),a.val()&&(d.detailtable.isA&&setTimeout(function(){a.triggerHandler("change")},500)||a.triggerHandler("change")))},s.getValue=function(){var e=[];return this.$el.find("."+r).each(function(){e.push($(this).attr("data-value"))}),e.join(",")},s.setValue=function(e){var t=this;n.children("li").removeClass(r),String(e).split(",").forEach(function(e){e&&t.$el.find("[data-value='"+e+"']").addClass(r)}),a.val(e).triggerHandler("change"),this.dbValueHasSet&&c.trigger("dataload",t.pageid,t.id)},s)c.isFunction(s[t])&&(s[t]=s[t].bind(this))})});