FSelect_wev8.js
4.05 KB
define("FSelect_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t<div class="wev-field{@if required} wev-field-required{@/if}{@if needWrap} wev-vertical{@/if}">\t\t<div>${field.label}</div>\t\t<div>\t\t\t<select name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}" {@if readonly} disabled {@/if}>\t\t\t\t{@each items as item, index}\t\t\t\t<option value="${item.value}" {@if item.value == field.value} selected{@/if}>$${item.name}</option>\t\t\t\t{@/each} \t\t\t</select>\t\t</div>\t</div></div>'}),define(["mUtil","Component","Form"],function(c,i,n){return i.init(function(e){var s,t,u,a,o={};i.super(this,e),this.type="FSelect",this.tpl=this.type+"_html",this.dataload=!0;var f=this.viewModel={form:"",field:{label:"",name:"",id:"",value:"",defaultValue:""},items:[],detailtable:{isA:!1},required:!1,readonly:!1,needWrap:!1,attrLinkage:{triggers:null,isEditLayout:!1}};this.dbValueHasSet=!1,this.beforeMount=function(){n.utils.setDefaultValue(this.pageid,f)};var l=$.Deferred();this.mounted=function(){var i=this;if(t=this.$el.find(".wev-field"),u=this.$el.find("select"),s=this.$container,a=this.id,f.readonly&&u.addClass("read-only"),!0===f.items){var e=c.getActionUrl(this.type,{action:"getOptionDatas",mec_id:this.id,detailtable:f.detailtable.id},this.pageid);c.getJSON(e,function(e){var i=e.datas,a="";$(i).each(function(e,i){var t=i.value==f.field.value?"selected='selected'":"";a+="<option value='"+i.value+"' "+t+">"+i.name+"</option>"}),u.html(a)}).then(function(){l.resolve()})}else l.resolve();if(f.field.needParseSqlValue)return n.utils.parseDefaultSqlValue(f.field.defaultValue,this.pageid,function(e){f.field.value=e,i.setValue(f.field.value,!0)});f.attrLinkage.triggers&&this.bindAttrLinkage(f.attrLinkage.triggers,f.attrLinkage.isEditLayout)},this.initComponentData=function(){return l},this.getData=function(){return c.parseJSON("fieldname_"+f.field.name,u.val())},this.getShowData=function(){var e=u.val(),i=c.parseJSON(f.field.name,e);return i[f.field.name+"_showvalue"]=$("option[value='"+e+"']",u).text()||"",i},this.reset=function(){this.setValue(f.field.value),t.removeClass("wev-required-remind")},this.checkRequired=function(){var e=f.required&&!u.val(),i=f.field.label||c.getLabel(24120,"选择项");return t.toggleClass("wev-required-remind",e),e&&i},this.bindTrigger=function(e,i){var t=this,a=f.field.id,l=f.field.parentid;if(a&&c.isObject(e)&&e["field"+a]){var n=e["field"+a];u.on("change",function(){Mobile_NS.readyToTrigger(n,u,t.$container)}),f.field.value&&(-1==f.form.indexOf("detailtable")&&!$p("billid")||i)&&Mobile_NS.readyToTrigger(n,u,t.$container)}if(a&&f.field.childid&&u.on("change",function(){o.initSelect(f.field.id,f.field.childid,u.val(),"",function(){$(this).change()})}),l&&a){var d=s.find("[fieldid='"+l+"']").val()||"",r=f.field.value;o.initSelect(l,a,d,r)}},this.setValueByDB=function(e){this.dbValueHasSet=!0,!e&&f.field.value||(f.field.value=e,this.setValue(e))},this.setValue=function(e){u.val(e).triggerHandler("change"),this.dbValueHasSet&&c.trigger("dataload",this.pageid,this.id)},this.getValue=function(){return u.val()},this.setRequired=function(e){f.required=e,t.toggleClass("wev-field-required",e),!e&&t.removeClass("wev-required-remind")},this.bindAttrLinkage=function(i,e){f.attrLinkage.triggers=i,f.attrLinkage.isEditLayout=e,i&&u.on("change",function(){require(["attrLinkageHelper"],function(e){e.trigger(i,a)})}),u.val()&&(f.detailtable.isA&&setTimeout(function(){u.triggerHandler("change")},500)||u.triggerHandler("change"))},this.text=function(){var e=u[0].selectedIndex;return u.find("option").eq(e).text()},o.initSelect=function(e,i,t,l,a){if(e&&i){var n=s.find("[fieldid='"+i+"']");if(n.length){var d=c.getActionUrl("service.MobileCommon",{action:"selectChange"}),r=function(e){n.empty().html(e),c.isFunction(a)&&a.call(n[0])};if(!t)return r("");c.getJSON(d,{fieldid:e,childfieldid:i,selectvalue:t},function(e){var i=e.datas,a="<option></option>";i&&i.length&&$(i).each(function(e,i){var t=l==i.value?"selected='selected'":"";a+="<option value='"+i.value+"' "+t+">"+i.text+"</option>"}),r(a)})}}}})});