FPhoto_wev8.js
11 KB
define("FPhoto_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t{@if readonly}\t\t<div class="wev-field wev-vertical{@if required} wev-field-required{@/if}">\t\t\t<div {@if !field.label}style="display:none;"{@/if}>${field.label}</div>\t\t\t<div>\t\t\t\t<div class="wev-img-wrapper">\t\t\t\t</div>\t\t\t\t<input type="hidden" name="fieldname_${field.name}" fieldid="${field.id}"/>\t\t\t\t<input type="hidden" name="type_${field.name}" value="photo" />\t\t\t</div>\t\t</div>\t{@else}\t\t<div class="wev-field wev-vertical{@if required} wev-field-required{@/if}">\t\t\t<div {@if !field.label}style="display:none;"{@/if}>${field.label}</div>\t\t\t<div>\t\t\t\t<div class="wev-img-wrapper">\t\t\t\t\t<div class="wev-upload wev-img">\t\t\t\t\t\t{@if client == "browser"}\t\t\t\t\t\t<input type="file" name="file" accept="image/*" single="single"/>\t\t\t\t\t\t{@/if}\t\t\t\t\t\t<span></span>\t\t\t\t\t</div>\t\t\t\t\t<div class="wev-upload-tip wev-upload-hide"></div>\t\t\t\t</div>\t\t\t\t<input type="hidden" name="fieldname_${field.name}" fieldid="${field.id}"/>\t\t\t\t<input type="hidden" name="type_${field.name}" value="photo" />\t\t\t</div>\t\t</div>\t{@/if}</div>'}),define(["mUtil","Component","i18n"],function(_,i,w){return window._p_addPhoto_uploaded=function(e,t,i){var a=function(e,t){var i=_.getInstance(e);t&&i&&i.photoProcess("data:image/jpeg;base64,"+t)};try{void 0===i?a(t,e):a(i,t)}catch(t){_.getLabel(5307,"拍照插件异常",function(e){Mobile_NS.alert(e+" >> "+t.message)})}},i.init(function(e){var u,f,m,g,p,y={},v=[],l={};i.super(this,e),this.type="FPhoto",this.tpl=this.type+"_html",this.css=this.type+"_css",this.dataload=!0;var h=this.viewModel={form:"",field:{label:"",name:"",id:"",value:""},compress:{quality:1,zoom:1},watermark:{add:!1,position:1,font:"Verdana",color:"#F8F8F8",fontsize:"18",fontweight:"normal",content:""},draw:!1,source:{browser:!0,takephoto:!0},limit:0,required:!1,readonly:!1,standalone:!0,namerule:"移动建模图片附件-{timestamp}"};for(var t in this.dbValueHasSet=!1,this.beforeMount=function(){_.checkEmpJsApi("chooseImage")||_.runtime.isEmobile()||_.isFunction(window.eb_chooseImage)||(h.client="browser"),h.required&&!h.field.label&&(h.field.label=" ")},this.mounted=function(){var r=this,e=this.$el,a=h.source.browser&&!h.source.takephoto,n=h.source.takephoto&&!h.source.browser;f=e.find(".wev-upload"),u=e.find(".wev-field"),m=e.find(".wev-upload > span").html(w.SELECT_IMAGE),g=e.find(".wev-img-wrapper"),p=e.children(".wev-comp-"+r.type),h.useCamera=!1;var o=function(){return 0<h.limit&&h.limit<=v.length&&(_.getLabel(5306,"照片上传超过最大限制",function(e){Mobile_NS.msg(e+"("+h.limit+")")}),!0)},l=function(e,t){Mobile_NS.footerMenu({iconPosition:"right",items:[{icon:"/mobilemode/mobile/images/plugin/camera.png",text:w.PHOTOGRAPH,callback:function(){t()}},{icon:"/mobilemode/mobile/images/plugin/photo.png",text:w.SELECT_IMAGE,callback:function(){e()}}]})},t=!1,i=_.runtime.isWechat()&&!_.runtime.isWxwork();if(_.checkEmpJsApi("chooseImage")){var d=function(e){require(["mApi/popup"]);var t=1;h.draw||(t=0<h.limit?h.limit-v.length:9),_.invokeEmApi("chooseImage",{count:t,sourceType:e,success:function(e){i&&(h.useCamera="camera"==e.sourceType);var t=e.localIds||[],n=function(e){e==t[t.length-1]&&Mobile_NS.hideLoader()};Mobile_NS.showLoader(),t.reduce(function(e,a){return(e=e||$.Deferred().resolve()).then(function(){return t=a,i=$.Deferred(),em.getLocalImgData({localId:t,success:function(e){i.resolve(),n(t),r.photoProcess("data:image/jpeg;base64,"+e.localData)},fail:function(e){i.resolve(),n(t),Mobile_NS.alert("getLocalImgData fail:"+JSON.stringify(e))}}),i;var t,i})},"")},fail:function(e){Mobile_NS.alert("chooseImage fail:"+JSON.stringify(e))}})},s=function(){h.useCamera=!1,d(["album"])},c=function(){h.useCamera=!0,d(["camera"])};f.on("click",function(e){e.stopPropagation(),o()||(a?s():n?c():i?d(["camera","album"]):l(s,c))})}else _.runtime.isEmobile()?f.on("click",function(e){if(e.stopPropagation(),!o()){var t=function(){h.useCamera=!1,location="emobile:photochoose:_p_addPhoto_uploaded:"+h.id+":"+e.clientY+":_p_addPhoto_clear"},i=function(){h.useCamera=!0,location="emobile:photograph:_p_addPhoto_uploaded:"+h.id+":"+e.clientY+":_p_addPhoto_clear"};a?t():n?i():l(t,i)}}):_.isFunction(window.eb_chooseImage)?f.on("click",function(e){if(e.stopPropagation(),!o()){var t=0;a?t=2:n&&(h.useCamera=!0,t=1),eb_chooseImage(t,"_p_addPhoto_uploaded",h.id)}}):(t=!0,p.on("change","input[type='file']",function(e){if(!o()&&this.files&&this.files[0]){var t=new FileReader;t.onload=function(e){var t=e.target.result;_.isIOS()?require(["imgdrawing"],function(){ImageOrientationFix({image:t,imgType:"base64",onFix:function(e){r.photoProcess(e)}})}):r.photoProcess(t)},t.readAsDataURL(this.files[0])}}));(h.draw||t)&&require(["imgdrawing"]),h.readonly||p.on("click",".wev-img-border>i",function(e){var t=$(this).parent(),i=t.index();t.remove(),v[i]&&v.splice(i,1),y.setTip(),e.stopPropagation()}),h.field.value&&this.setValue(h.field.value,!0)},this.photoProcess=function(e){var a=function(e){var t=h.compress.quality||.5,i=h.compress.zoom||.5;if(1==t&&1==i)return h.watermark.add&&h.useCamera?y.addWaterMark(e,h.watermark):y.buildData(e);var a=function(e){return!e||isNaN(e)?1:(e=parseFloat(e))<0||1<e?1:e};t=a(t),i=a(i),y.scaleImgData(e,t,i,!0,function(e){h.watermark.add&&h.useCamera?y.addWaterMark(e,h.watermark):y.buildData(e)})};if(!h.draw)return a(e);var n=new Image;n.onload=function(){var i=require("pageEvent");require(["imgdrawing"],function(t){i.register("change",t.hide),t.draw({data:e,width:n.naturalWidth,height:n.naturalHeight,callback:{done:function(e){a(e),i.destory("change",t.hide)},close:function(){i.destory("change",t.hide)}}})})},n.src=e},this.getData=function(){var e={},t=h.field.name;return e["fieldname_"+t]=y.getValue(),e["type_"+t]="photo",e["namerule_"+t]=h.namerule,e},this.getShowData=function(){var i,a,e=_.parseJSON(h.field.name+"_showvalue",(i="",a=_.UUID(),v.forEach(function(e){var t="";t=isNaN(e)?e:_.getAttachUrl(l[e]),i+='<img class="wev-img" src="'+t+'" data-groupid="'+a+'"/>'}),'<div class="wev-img-wrapper">'+i+"</div>"));return e[h.field.name]=y.getValue(),e},this.reset=function(){y.setValue(h.field.value,h.field.defHtml),u.removeClass("wev-required-remind")},this.checkRequired=function(){var e=h.required&&!v.length;return u.toggleClass("wev-required-remind",e),e&&h.field.label},this.setRequired=function(e){h.required=e,u.toggleClass("wev-field-required",e),!e&&u.removeClass("wev-required-remind")},this.checkModeDocCategory=function(e){if(!e){var t=this.$el;_.getLabel(388817,"附件上传目录未设置!",function(e){f.addClass("wev-upload-hide"),t.find(".wev-upload-tip").removeClass("wev-upload-hide").html(e)})}},this.setValueByDB=function(e){~(e=String(e)).indexOf("base64")||(e=e.replaceAll(",",";;")),h.field.value=e,this.dbValueHasSet=!0,this.setValue(e,!0)},this.setValue=function(a,n,r){if(_.isFunction(n)&&(r=n),!a)return y.setValue("","",r);~(a=String(a)).indexOf("base64")||(a=a.replaceAll(",",";;"));var o=y.parseDocidsFromValue(a);if(o.length)y.convertDocidToImageId(o.join(","),function(e){l=y.getDocImgIdsMap(o,e);var t=y.convertValueToImgsrc(a),i=y.getValueHtml(t);n&&(h.field.defHtml=i),y.setValue(a,i,r)});else{var e=y.getValueHtml(a.split(";;"));n&&(h.field.defHtml=e),y.setValue(a,e,r)}},this.getValue=function(){return y.getValue()},y.getDocImgIdsMap=function(e,t){var i={};if(_.isArray(e)&&_.isArray(t))for(var a=0;a<e.length;a++)i[e[a]]=t[a];return i},y.parseDocidsFromValue=function(e){var i=[];return(e=String(e))&&e.split(";;").forEach(function(e,t){isNaN(e)||i.push(e)}),i},y.convertValueToImgsrc=function(e){var i=[];return _.isString(e)&&_.isObject(l)&&e.split(";;").forEach(function(e,t){i.push(!isNaN(e)&&l[e]?l[e]:e)}),i},y.convertDocidToImageId=function(e,t){var i=_.getActionUrl(this.type,{action:"parsePhotos",values:e},this.pageid);_.getJSON(i,function(e){t&&t(e.data)})},y.setValue=function(e,t,i){v=e&&e.split(";;")||[],h.readonly?($(".wev-img",this.$el).remove(),g.append(t)):($(".wev-img-border",this.$el).remove(),f.before(t)),y.setTip(),this.dbValueHasSet&&_.trigger("dataload",this.pageid,this.id),require(["lazyImgHelper"]),i&&i.call(this)},y.setTip=function(){if(0<h.limit){var e=v.length?v.length+"/"+h.limit:w.SELECT_IMAGE;m.html(e)}},y.getValue=function(){return v.join(";;")},y.buildData=function(e){var t=$("img[data-groupid]",p),i=0<t.length?t.attr("data-groupid"):_.UUID();f.before('<div class="wev-img-border"><img class="wev-img" src="'+e+'" data-groupid="'+i+'"></img><i></i></div>'),"browser"==h.client&&($("input[type='file']",f).remove(),f.prepend('<input type="file" name="file" accept="image/*" single="single"/>')),v.push(e),y.setTip()},y.scaleImgData=function(e,l,d,t,s){var c="image/jpeg";if(e&&!t){var i=e.indexOf("data:"),a=e.indexOf(";");if(0===i&&i<a)try{c=e.substring("data:".length,a)}catch(e){c="image/jpeg"}}var u=new Image;u.onload=function(){var e=document.createElement("canvas"),t=u.naturalWidth,i=u.naturalHeight,a=parseInt(t*d),n=parseInt(i*d);e.width=a,e.height=n;var r=e.getContext("2d");r.clearRect(0,0,e.width,e.height),r.drawImage(u,0,0,a,n);var o=e.toDataURL(c,l);s.call(this,o)},u.src=e},y.addWaterMark=function(e,h){var w="image/jpeg",b=new Image;b.onload=function(){var o=document.createElement("canvas"),e=b.naturalWidth,t=b.naturalHeight;o.width=e,o.height=t;var l=o.getContext("2d");l.clearRect(0,0,e,t),l.drawImage(b,0,0,e,t);var d,s,i,a=h.position||1,c=h.content,u=Number(h.fontsize)||18,n=h.font||"Verdana",f=c.split("\n");1==a?(d=e-10,s=t-(u+5)*f.length,i="right"):2==a?(d=10,s=t-(u+5)*f.length,i="left"):3==a?(d=e-10,s=20,i="right"):4==a?(d=10,s=20,i="left"):5==a?(d=e/2,s=20,i="center"):6==a&&(d=e/2,s=t-(u+5)*f.length,i="center"),s=s+u-10,l.textAlign=i,l.font=h.fontweight+" "+u+"px "+n,l.fillStyle=h.color||"#F8F8F8";var r=["CURRPOSITION","CURRLNG","CURRLAT"].join("|"),m=new RegExp("("+r+")","gi"),g=c.match(m);if(g&&g.length)Mobile_NS.getCurrPosition(function(e){var t="",i="",a="";"1"==e.status&&(t=e.addr,i=e.lng,a=e.lat),c=c.replace(/{CURRPOSITION}/gi,t).replace(/{CURRLNG}/gi,i).replace(/{CURRLAT}/gi,a),f=c.split("\n");for(var n=0;n<f.length;n++)l.fillText(f[n],d,s+(u+5)*n);var r=o.toDataURL(w);y.buildData(r),t||_.getLabel(4085,"定位失败",function(e){Mobile_NS.alert(e)})});else{for(var p=0;p<f.length;p++)l.fillText(f[p],d,s+(u+5)*p);var v=o.toDataURL(w);y.buildData(v)}},b.src=e},y.getValueHtml=function(e){var n="",r=_.UUID(),t=$("#"+h.form),o=t.find("input[name='empowmentType']").val(),l=t.find("input[name='modelid']").val(),d=t.find("input[name='billid']").val();return _.isArray(e)&&e.length&&e.forEach(function(e,t){var i,a;i=e,a="",isNaN(i)?(a=i,h.readonly?n+='<img class="wev-img" src="'+a+'" data-groupid="'+r+'"></img>':n+='<div class="wev-img-border"><img class="wev-img" src="'+a+'" data-groupid="'+r+'"></img><i></i></div>'):(a=_.getAttachUrl(i,o,l,d),h.readonly?n+='<img class="wev-img lazyload" data-groupid="'+r+'" data-src="'+a+'"></img>':n+='<div class="wev-img-border"><img class="wev-img lazyload" data-groupid="'+r+'" data-src="'+a+'"></img><i></i></div>')}),n},y)_.isFunction(y[t])&&(y[t]=y[t].bind(this))})});