FSound_wev8.js
6.5 KB
define("FSound_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t<div class="wev-field {@if field.label} wev-vertical {@/if} {@if required} wev-field-required {@/if}">\t\t<div {@if !field.label}style="display:none;"{@/if}>${field.label}</div>\t\t<div>\t\t\t<div class="wev-fsound-audio">\t\t\t <div class="wev-audio-container">\t\t\t <span class="wev-audio-status"></span>\t\t\t \t$${loading.content}\t\t\t <span class="wev-audio-tips"></span>\t\t\t </div>\t\t\t <span class="wev-audio-time"></span>\t\t\t <input type="hidden" name="fieldname_${field.name}" value="${field.value}"/>\t\t\t <input type="hidden" name="type_${field.name}" value="sound"/>\t\t\t <div class="wev-clear-btn"></div>\t\t\t</div>\t \t</div>\t</div></div>'}),define(["mUtil","Component","wev-loading"],function(u,a,c){return window._p_addSound_uploaded=function(e){try{var t=window.sound_viewmodelid,a=u.getInstance(t);e&&a&&a.parseSound(e)}catch(t){u.getLabel(5301,"语音插件异常",function(e){Mobile_NS.alert(e+" >> "+t.message)})}},a.init(function(e){a.super(this,e);var s,i,n,t,l,o,d={};this.type="FSound",this.tpl=this.type+"_html",this.css=this.type+"_css",this.components={loading:new c({text:" ",clsName:"wev-audio-loading wev-audio-divhidden"})};var r=this.viewModel={form:"",field:{label:"",name:"",value:"",defaultValue:""},required:!1,readonly:!1};this.beforeMount=function(){$p("billid")||""!=r.field.value||""==r.field.defaultValue||(r.field.value=r.field.defaultValue);var e="browser";u.checkEmpJsApi("getAudioRecord")?e="emp":u.runtime.isEmobile()?e="emobile":u.isFunction(window.eb_startRecord)&&(e="wechat"),r.client=e,r.errorclass="error",r.playclass="playing",r.field.dflabel=r.field.label||" "},this.mounted=function(){var a=this;n=a.$el.children(".wev-comp-"+a.type),s=$(".wev-audio-status",n),i=$("input[name='fieldname_"+r.field.name+"']",n),t=this.$el.find(".wev-field"),$p("billid")||r.readonly?d.setTipsClass(!1):d.statusChange("init"),$(".wev-audio-container",n).on("click",function(){switch(o){case"record":window.sound_viewmodelid=r.id,"emp"==r.client?u.invokeEmApi("getAudioRecord",{success:function(e){var t=e.localData;a.parseSound(t)}}):"wechat"==r.client?(d.statusChange("record"),eb_startRecord(r.id)):location="emobile:speech:_p_addSound_uploaded:"+r.id+"_"+(new Date).valueOf();break;case"ready":d.statusChange("play");break;case"pause":d.statusChange("continue");break;case"play":case"continue":d.statusChange("pause");break;case"recording":o="notsupport",s.removeClass(r.playclass),d.setTipsClass(!1),eb_stopRecord("_p_addSound_uploaded");break;case"notsupport":break;default:d.statusChange("error")}}),$(".wev-clear-btn",n).on("click",function(){l.pause(),l.currentTime=0,i.val(""),d.statusChange("init")})},this.getData=function(){return u.parseJSON("fieldname_"+r.field.name,i.val())},this.reset=function(){var e=r.field.value;i.val(e),e?d.eventsBind(e):(d.setTipsClass(!0),r.readonly?(u.getLabel(5289,"语音为空",function(e){$(".wev-audio-tips",n).text(e)}),o="notsupport"):d.statusChange("init")),t.removeClass("wev-required-remind")},this.checkRequired=function(){var e=r.required&&!i.val();return t.toggleClass("wev-required-remind",e),e&&r.field.dflabel},this.setRequired=function(e){r.required=e,t.toggleClass("wev-field-required",e),!e&&t.removeClass("wev-required-remind")},d.eventsBind=function(e){isNaN(e)||(e=u.getAttachUrl(e));var t=!1,a=$(".wev-audio-tips",n);i.val(e),(l=new Audio).preload="auto",l.src=e,"object"==typeof wx&&"function"==typeof wx.invoke?wx.invoke("getNetworkType",{},function(e){l.load()}):l.load(),l.addEventListener("ended",function(){s.removeClass(r.playclass).removeClass(r.errorclass),u.getLabel(5290,"重新播放",function(e){a.text(e)}),o="ready"},!1),l.addEventListener("canplay",function(){if(!t){var e=l.duration;t=!0,d.setTipsClass(!0),o=e&&!isNaN(e)?(e!=1/0&&(e=parseInt(e),$(".wev-audio-time",n).text(e+'"')),u.getLabel(5291,"点击播放",function(e){a.text(e)}),"ready"):(u.getLabel(5292,"语音加载出错",function(e){a.text(e)}),"notsupport")}}),l.addEventListener("error",function(){d.setTipsClass(!0),u.getLabel(5292,"语音加载出错",function(e){a.text(e)}),o="notsupport"}),r.readonly||$(".wev-clear-btn",n).addClass("wev-audio-clearshow")},this.setValueByDB=function(e){r.field.value=e,this.reset(e)},this.pauseAudio=function(e){("play"==o||"continue"==o)&&d.statusChange("pause")},this.parseSound=function(e){s.removeClass(r.playclass),d.setTipsClass(!1),$(".wev-clear-btn",n).addClass("wev-audio-clearshow");var t=new FormData;t.append("audioBase64",e);var a=u.getActionUrl(this.type,{action:"parseSound",client:r.client},this.pageid);u.ajax(a,t,function(e){if(e){var t=$.parseJSON(e),a=t.status,s=t.data;"1"==a?s.audioPath?d.eventsBind(s.audioPath):(d.setTipsClass(!0),$(".wev-audio-tips",n).text("语音加载为空"),o="notsupport"):"0"==a&&(d.setTipsClass(!0),u.getLabel(5299,"语音数据上传失败,请联系管理员查看。",function(e){$(".wev-audio-tips",n).text(e),Mobile_NS.msg(e)}))}else u.getLabel(5298,"语音数据提交后服务端返回值为空",function(e){console.error(e)})},{type:"POST",processData:!1,contentType:!1,error:function(t){u.getLabel(5300,"语音数据上传出错:",function(e){Mobile_NS.alert(e+JSON.stringify(t))})}})},d.statusChange=function(e){var t=$(".wev-audio-tips",n);"play"==e?(s.removeClass(r.errorclass).addClass(r.playclass),l.currentTime=0,u.getLabel(5290,"重新播放",function(e){u.isIOS()&&t.text()==e&&l.load(),l.play(),t.text("")})):"continue"==e?(s.removeClass(r.errorclass).addClass(r.playclass),l.play(),t.text("")):"error"==e?(s.removeClass(r.playclass).addClass(r.errorclass),l.pause(),l.currentTime=0,t.text("")):"init"==e?($(".wev-audio-time",n).text(""),s.removeClass(r.playclass).removeClass(r.errorclass),$(".wev-clear-btn",n).removeClass("wev-audio-clearshow"),d.setTipsClass(!0),"emp"==r.client||"emobile"==r.client||"wechat"==r.client?(e="record",u.getLabel(5326,"开始录制",function(e){t.text(e)})):(e="notsupport",u.getLabel(5327,"暂不支持录音",function(e){t.text(e)}))):"pause"==e?(s.removeClass(r.playclass).removeClass(r.errorclass),l.pause(),u.getLabel(5328,"继续播放",function(e){t.text(e)})):"record"==e?(e="recording",s.addClass(r.playclass).removeClass(r.errorclass),u.getLabel(5329,"录制中,点击结束",function(e){t.text(e)})):(s.removeClass(r.playclass).addClass(r.errorclass),u.getLabel(5330,"播放异常",function(e){t.text(e)})),o=e},d.setTipsClass=function(e){this.components.loading.toggle(!e),$(".wev-audio-tips",n).toggleClass("wev-audio-divhidden",!e)},d.setTipsClass=d.setTipsClass.bind(this)})});