FInputText_wev8.js 7.56 KB
define("FInputText_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t{@if readonly}\t\t<div class="wev-field{@if required} wev-field-required{@/if}{@if needWrap} wev-vertical{@/if}">\t\t\t<div>${field.label}</div>\t\t\t<div>\t\t\t\t<input type="text" style="display:none;" name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}"/>\t\t\t\t<span class="wev-field-view-span">$${field.valueHtml}</span>\t\t\t</div>\t\t</div>\t{@else}\t\t<div class="wev-field{@if required} wev-field-required{@/if}{@if needWrap} wev-vertical{@/if}">\t\t\t<div>${field.label}</div>\t\t\t<div {@if showCleanBtn}class="wev-has-value"{@/if}>\t\t\t\t{@if assist.active}\t\t\t\t<div class="wev-numbox">\t\t\t\t\t<div class="wev-numbox-minus wev-btn">-</div>\t\t\t\t{@/if}\t\t\t\t\t\t\t\t<input type="${type}" {@if dtpicker}style="display:none;"{@/if} name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}" placeholder="${placeholder}"/>\t\t\t\t{@if dtpicker}\t\t\t\t<span class="wev-field-view-span">$${field.valueHtml}</span>\t\t\t\t{@/if}\t\t\t\t\t\t\t\t{@if assist.active}\t\t\t\t\t<div class="wev-numbox-add wev-btn">+</div>\t\t\t\t</div>\t\t\t\t{@/if}\t\t\t\t<div class="wev-clear-btn"></div>\t\t\t</div>\t\t</div>\t{@/if}</div>'}),define(["mUtil","Component","Form"],function(mUtil,Component,Form){var FInputText=function(options){var _input={},$wevField,$field,$fieldspan,$clearBtn,$clearBtnWrapper;Component.super(this,options),this.type="FInputText",this.tpl=this.type+"_html",this.dataload=!0;var vm=this.viewModel={form:"",field:{label:"",name:"",id:"",type:"text",value:"",expr:"",defaultValue:""},yearOffest:{prev:100,next:1},assist:{active:!0,step:1,precision:2},detailtable:{isA:!1},placeholder:"请输入...",required:!1,readonly:!1,needWrap:!1};function formatFloat(e,t,i){if(e){var a=/(?=\d,\d)(\d),/g,l=function(e){return Number(e).toFixed(t)};if(!(e=String(e||"")).match(a))return l(e);if(!i)return l(e.replace(a,"$1"));var n=e.split("."),r=n[1]||0;return r=l("."+r),n[0]+String(r).substr(1)}}for(var key in this.dbValueHasSet=!1,this.beforeMount=function(){var e=vm.field.type,t="text";if("password"==e||"tel"==e)t=e;else if("float"==e||"int"==e){t="number";var i=new String(vm.field.value);i&&(vm.field.value=i.replaceAll(",",""))}vm.type=t,vm.assist.active="number"==vm.type&&vm.assist.active,vm.showCleanBtn=!vm.readonly&&vm.field.value&&!vm.assist.active,vm.dtpicker="date"==e||"time"==e||"datetime"==e,vm.assist.min=""===vm.assist.min?NaN:Number(vm.assist.min),vm.assist.max=""===vm.assist.max?NaN:Number(vm.assist.max)},this.mounted=function(){var t=this;$wevField=this.$el.find(".wev-field"),$field=this.$el.find("input[name='fieldname_"+vm.field.name+"']"),$fieldspan=this.$el.find(".wev-field-view-span"),$clearBtn=this.$el.find(".wev-clear-btn"),$clearBtnWrapper=$clearBtn.parent(),vm.readonly||_input.init(),$load(function(){_input.pageOnload()});var e=Form.utils.getUIType(this.pageid);if(((!$p("billid")||"2"==e)&&!vm.detailtable.isA||vm.detailtable.add)&&vm.field.defaultValue){var i=vm.field.defaultValue;if(Form.utils.containsSQL(i))return Form.utils.parseDefaultSqlValue(i,t.pageid,function(e){vm.field.value=e,t.setValue(vm.field.value,!0)});vm.field.value=i,t.setValue(i,!0)}},_input.init=function(){var a=this,l=vm.field.type;if(vm.dtpicker){var n=(new Date).getFullYear(),r=require("pageEvent");require(["dtpicker"],function(){var e=null,i=function(){e&&e.dispose()};$fieldspan.on("click",function(){var t=this;t.dtPicker||(t.dtPicker=new $.DtPicker({value:$field.val(),type:l,beginYear:n-Number(vm.yearOffest.prev),endYear:n+Number(vm.yearOffest.next),close:function(){r.destory("change",i)}})),t.dtPicker.show(function(e){return a.setValue(e.value),t.dtPicker.dispose(),t.dtPicker=null,!1}),e=t.dtPicker}),r.destory("change",i).register("change",i)})}else"float"!=l&&"int"!=l||(a.$el.find(".wev-numbox").on("click",".wev-btn",function(e){var t=$(this).hasClass("wev-numbox-minus");_input.assistInput(t)}),$field.on("change blur",function(){var e=$field.val()||"",t=vm.assist.min,i=vm.assist.max;if(e){var a=Number(e);a<t&&(mUtil.getLabel(5302,"超出最小值范围(#MIN#)!",function(e){Mobile_NS.Alert(e.replace("#MIN#",t))}),a=t),i<a&&(mUtil.getLabel(5303,"超出最大值范围(#MAX#)!",function(e){Mobile_NS.Alert(e.replace("#MAX#",i))}),a=i)}$field.val(_input.formatValue(a))}));vm.assist.active||$field.on("input change",function(){$clearBtnWrapper.toggleClass("wev-has-value",!!$field.val())}),$clearBtn.on("click",function(){a.setValue(""),"text"!=l&&"tel"!=l&&"password"!=l||$field.focus()})},_input.pageOnload=function(){var $page=this.$container,expr=vm.field.expr,billid=$p("billid");if(expr){var nameArr=(expr.match(/{(\w+)}|{(\w+\.\w+)}/g)||[]).map(function(e){return e.replace(/{|}/g,"")}),runVP=function(){var paramArr={};with(nameArr.forEach(function(e){if(!e.match(/(\w+)\.(\w+)/)||vm.detailtable.isA){var t=$f(e).val();""==t||isNaN(t)||(t=Number(t)),vm.detailtable.isA&&(e=e.replace(/\./g,"_")),paramArr[e]=t}}),paramArr){var fieldname=vm.field.name;vm.detailtable.isA&&(expr=expr.replace(/\{(\w+)(\.)(\w+)\}/g,"$1_$3"),fieldname=(vm.detailtable.isA?vm.detailtable.name+".":"")+fieldname);var v=eval(expr.replace(/{|}/g,""));$f(fieldname).val(_input.formatValue(v))}};nameArr.forEach(function(e){var t=e.match(/(\w+)\.(\w+)/);t&&!vm.detailtable.isA?mUtil.getDetailTableInstance(t[1],vm.form).bindColSumEvent(runVP):$f(e).$Obj.on("input change",runVP)}),(!billid&&!vm.detailtable.isA||vm.detailtable.add)&&runVP()}},this.getData=function(){return mUtil.parseJSON("fieldname_"+vm.field.name,$field.val())},this.getShowData=function(){var e=mUtil.parseJSON(vm.field.name+"_showvalue",$field.val());return e[vm.field.name]=$field.val(),e},this.reset=function(){this.setValue(vm.field.value),$wevField.removeClass("wev-required-remind")},this.checkRequired=function(){var e=vm.required&&!$field.val();return $wevField.toggleClass("wev-required-remind",e),e&&vm.field.label},this.setRequired=function(e){vm.required=e,$wevField.toggleClass("wev-field-required",e),!e&&$wevField.removeClass("wev-required-remind")},this.setValueByDB=function(e){this.dbValueHasSet=!0,!e&&vm.field.value||(vm.field.value=e,this.setValue(e,!0))},this.setValue=function(e,t){if(e=_input.formatValue(e),vm.readonly){var i=vm.field.type,a=e;"text"!=i&&"tel"!=i||!mUtil.isTel(e)||(a="<a href=\"javascript:Mobile_NS.callMobile('"+e+'\');" class="wev-phone-number">'+e+"</a>"),$fieldspan.html(a)}else vm.dtpicker&&$fieldspan.toggleClass("wev-field-view-tip",!e).html(e||vm.placeholder);$field.val($("<div></div>").html(e).html()),vm.readonly||vm.assist.active||!t||$clearBtnWrapper.toggleClass("wev-has-value",!!e),!t&&$field.triggerHandler("change"),t&&this.dbValueHasSet&&mUtil.trigger("dataload",this.pageid,this.id)},this.bindTrigger=function(e,t){if(vm.field.id&&mUtil.isObject(e)){var i=this.$container,a=e["field"+vm.field.id];a&&($field.bind("change",function(){Mobile_NS.readyToTrigger(a,$field,i)}),vm.field.value&&(!vm.detailtable.isA&&!$p("billid")||t)&&Mobile_NS.readyToTrigger(a,$field,i))}},_input.assistInput=function(e){var t=vm.assist.step,i=Number($field.val()),a=vm.assist.min,l=i-t,n=l<a,r=5302,d="超出最小值范围(#MIN#)!";e||(n=(a=vm.assist.max)<(l=i+t),r=5303,d="超出最大值范围(#MAX#)!"),n&&(mUtil.getLabel(r,d,function(e){Mobile_NS.Alert(e.replace("#MIN#",a).replace("#MAX#",a))}),l=a),this.setValue(_input.formatValue(l))},_input.formatValue=function(e){if(""==e)return e;var t=vm.assist.precision||2,i=vm.field.type;return"float"==i?e=formatFloat(e,t,vm.readonly):"int"==i&&(e=Number(e).toFixed(0)),e},_input)mUtil.isFunction(_input[key])&&(_input[key]=_input[key].bind(this))};return Component.init(FInputText)});