FSound_wev8.js
6.72 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 wev-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" style="top: auto"></div>\t\t\t {@if !readonly}<div class="wev-upload-tip wev-upload-hide"></div>{@/if}\t\t\t</div>\t \t</div>\t</div></div>'}),define(["mUtil","Component","wev-loading","audioHelper"],function(v,i,a,p){return window._p_addSound_uploaded=function(e){try{var t=window.sound_viewmodelid,i=v.getInstance(t);e&&i&&i.parseSound(e)}catch(t){v.getLabel(5301,"语音插件异常",function(e){Mobile_NS.alert(e+" >> "+t.message)})}},i.init(function(e){i.super(this,e);var l,o,n,t,r,u={};this.type="FSound",this.tpl=this.type+"_html",this.css=this.type+"_css",this.components={loading:new a({text:" ",clsName:"wev-audio-loading wev-audio-divhidden"})};var c=this.viewModel={form:"",field:{label:"",name:"",value:"",defaultValue:""},required:!1,readonly:!1};this.beforeMount=function(){$p("billid")||""!=c.field.value||""==c.field.defaultValue||(c.field.value=c.field.defaultValue);var e="browser";v.checkEmpJsApi("getAudioRecord")?e="emp":v.runtime.isEmobile6()?e="emobile":v.isFunction(window.eb_startRecord)&&(e="wechat"),c.client=e,c.errorclass="error",c.playclass="playing",c.field.dflabel=c.field.label||v.getLabel(128154,"语音")},this.mounted=function(){var i=this;n=i.$el.children(".wev-comp-"+i.type),l=$(".wev-audio-status",n),o=$("input[name='fieldname_"+c.field.name+"']",n),t=this.$el.find(".wev-field"),$p("billid")||c.readonly?$p("billid")||!c.readonly||c.field.value?u.setTipsClass(!1):this.reset():u.statusChange("init"),c.readonly||$(".wev-audio-container",n).on("click",function(){switch(r){case"record":window.sound_viewmodelid=c.id,p.pauseAllAudios(),"emp"==c.client?v.invokeEmApi("getAudioRecord",{success:function(e){var t=e.localData;i.parseSound(t)}}):"wechat"==c.client?(u.statusChange("record"),eb_startRecord(c.id)):location="emobile:speech:_p_addSound_uploaded:"+c.id+"_"+(new Date).valueOf();break;case"recording":r="notsupport",l.removeClass(c.playclass),u.setTipsClass(!1),eb_stopRecord("_p_addSound_uploaded");break;case"notsupport":case"ready":break;default:u.statusChange("error")}}),$(".wev-clear-btn",n).on("click",function(){$("audio",n).remove(),$(".wev-audio",n).removeAttr("data-audio"),$(".wev-audio-container",n).off("click.listenaudio"),o.val(""),u.statusChange("init")})},this.getData=function(){return v.parseJSON("fieldname_"+c.field.name,o.val())},this.reset=function(){var e=c.field.value;o.val(e),e?isNaN(e)?u.eventsBind(e):u.getFileId(e,function(e){u.eventsBind(e)}):(u.setTipsClass(!0),c.readonly?(v.getLabel(5289,"语音为空",function(e){$(".wev-audio-tips",n).text(e)}),r="notsupport"):u.statusChange("init")),t.removeClass("wev-required-remind")},this.checkRequired=function(){var e=c.required&&!o.val();return t.toggleClass("wev-required-remind",e),e&&c.field.dflabel},this.setRequired=function(e){c.required=e,t.toggleClass("wev-field-required",e),!e&&t.removeClass("wev-required-remind")},this.checkModeDocCategory=function(e){if(!c.readonly&&!e){var t=this.$el,i=t.find(".wev-audio-container");v.getLabel(388817,"附件上传目录未设置!",function(e){i.addClass("wev-upload-hide"),t.find(".wev-upload-tip").removeClass("wev-upload-hide").html(e)})}},u.eventsBind=function(e){var t=$('<audio preload="auto"><source></audio>'),i=$(".wev-audio-tips",n),a=$(".wev-audio",n),s=t.children("source"),d=!1;if(a.data("audio",e),isNaN(e))/\.(wav|mp3|wma|asf|ogg|au)$/i.test(e)||s.attr("type","audio/mpeg");else{var l=v.getInstance(c.form),o=l?l.viewModel.empowStr:"";e=v.getAttachUrl(e,o),s.attr("type","audio/mpeg")}s.attr("src",e),c.readonly||$(".wev-clear-btn",n).addClass("wev-audio-clearshow"),$(".wev-audio-container",n).append(t),t[0].addEventListener("loadedmetadata",function(){d||(d=!0,u.setTipsClass(!0),v.getLabel(5291,"点击播放",function(e){i.text(e)}),this.setAttribute("loaded",""),r="ready")}),p.playAudio(a[0])},this.setValueByDB=function(e){c.field.value=e,this.reset(e)},this.parseSound=function(e){l.removeClass(c.playclass),u.setTipsClass(!1),$(".wev-clear-btn",n).addClass("wev-audio-clearshow");var t=$("#"+c.form),i=t.find("input[name='workflowid']").val(),a=t.find("input[name='modelid']").val(),s=new FormData;s.append("workflowid",i),s.append("modelid",a),s.append("audioBase64",e);var d=v.getActionUrl(this.type,{action:"parseSound",client:c.client},this.pageid);v.ajax(d,s,function(e){if(e){var t=$.parseJSON(e),i=t.status,a=t.data;"1"==i?a.audioPath?(o.val(a.audioPath),u.getFileId(a.audioPath,function(e){u.eventsBind(e)})):(u.setTipsClass(!0),$(".wev-audio-tips",n).text("语音加载为空"),r="notsupport"):"0"==i&&(u.setTipsClass(!0),v.getLabel(5299,"语音数据上传失败,请联系管理员查看。",function(e){$(".wev-audio-tips",n).text(e),Mobile_NS.msg(e)}))}else v.getLabel(5298,"语音数据提交后服务端返回值为空",function(e){console.error(e)})},{type:"POST",processData:!1,contentType:!1,error:function(t){v.getLabel(5300,"语音数据上传出错:",function(e){Mobile_NS.alert(e+JSON.stringify(t))})}})},u.statusChange=function(e){var t=$(".wev-audio-tips",n);if("error"==e){l.removeClass(c.playclass).addClass(c.errorclass);var i=$("audio",n).length&&$("audio",n)[0];i&&(i.pause(),i.currentTime=0),t.text("")}else"init"==e?($(".wev-audio-time",n).text(""),l.removeClass(c.playclass).removeClass(c.errorclass),$(".wev-clear-btn",n).removeClass("wev-audio-clearshow"),u.setTipsClass(!0),"emp"==c.client||"emobile"==c.client||"wechat"==c.client?(e="record",v.getLabel(5326,"开始录制",function(e){t.text(e)})):(e="notsupport",v.getLabel(5327,"暂不支持录音",function(e){t.text(e)}))):"record"==e?(e="recording",l.addClass(c.playclass).removeClass(c.errorclass),v.getLabel(5329,"录制中,点击结束",function(e){t.text(e)})):(l.removeClass(c.playclass).addClass(c.errorclass),v.getLabel(5330,"播放异常",function(e){t.text(e)}));r=e},u.setTipsClass=function(e){this.components.loading.toggle(!e),$(".wev-audio-tips",n).toggleClass("wev-audio-divhidden",!e)},u.getFileId=function(e,t){var i=v.getActionUrl(this.type,{action:"getFileIds",values:e},this.pageid);v.getJSON(i,function(e){t&&t(e.data&&e.data[0])})},u.setTipsClass=u.setTipsClass.bind(this),u.getFileId=u.getFileId.bind(this)})});