index-8fc7283d.js 11 KB

1
  1. import{d as w,f as e,v as M,U as z,n as b,l as O,e as U,h as H,k as i,m as n,F,P as D,a9 as j,ae as G,g as J,o as W,ad as V,c as T,af as R,ag as $,ai as L,ah as q,aj as Q,am as Y,an as Z,ao as K,ap as X,ac as ee,aq as te,at as ne,au as se}from"./index-275636b8.js";import{a as ie,s as ae}from"./instrument-d79b3645.js";import{P as oe}from"./plyr.min-ade72a33.js";import"./vue3-lottie.es-4a857d6c.js";import"./index-b28855d3.js";import"./instruments-2a4d07df.js";import"./index-2fb5428d.js";const le="_skeleton_vbtuh_1",ue="_detail_vbtuh_12",re="_headHeight_vbtuh_24",ce="_headHide_vbtuh_33",de="_container_vbtuh_36",pe="_musicName_vbtuh_50",he="_right_vbtuh_57",me="_wrong_vbtuh_61",ye="_notPlay_vbtuh_65",ve="_intonation_wrong_vbtuh_69",_e="_cadence_wrong_vbtuh_73",fe="_integrity_wrong_vbtuh_77",u={skeleton:le,detail:ue,headHeight:re,headHide:ce,container:de,musicName:pe,right:he,wrong:me,notPlay:ye,intonation_wrong:ve,cadence_wrong:_e,integrity_wrong:fe},ge="_headerTop_yzfyn_1",Fe="_android_yzfyn_11",be="_back_yzfyn_14",we="_disabled_yzfyn_26",Ce="_left_yzfyn_30",Ee="_center_yzfyn_34",xe="_cItem_yzfyn_39",Se="_active_yzfyn_61",Pe="_right_yzfyn_68",Be="_btn_yzfyn_72",Ie="_iconBtn_yzfyn_84",Ae="_btnWrap_yzfyn_93",Ne="_popup_yzfyn_98",ke="_audiobox_yzfyn_110",De="_videobox_yzfyn_117",Te="_demos_yzfyn_128",Re="_shiyiPopup_yzfyn_149",Le="_shiyiTitle_yzfyn_156",Me="_items_yzfyn_162",ze="_item_yzfyn_162",s={headerTop:ge,android:Fe,back:be,disabled:we,left:Ce,center:Ee,cItem:xe,active:Se,right:Pe,btn:Be,iconBtn:Ie,btnWrap:Ae,popup:Ne,audiobox:ke,videobox:De,demos:Te,shiyiPopup:Re,shiyiTitle:Le,items:Me,item:ze},Oe=""+new URL("icon-back-2cf38e60.svg",import.meta.url).href,Ue=""+new URL("icon-shiyi-ba387160.svg",import.meta.url).href,He=""+new URL("icon-huifang-4d7bf6f9.svg",import.meta.url).href,je=""+new URL("videobg-2d19d627.png",import.meta.url).href,l=w({name:"NoteSvg",props:{fill:String,shadow:{type:Boolean,defalut:!1},shadowFill:{type:String,default:""},x:{type:Number,default:0},y:{type:Number,default:0}},render(){return e("svg",{width:"14",height:"24",viewBox:"0 0 14 24"},[e("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[e("rect",{x:"0",y:"0",width:"14",height:"24"},null),e("g",{fill:this.fill},[this.shadow&&e("ellipse",{fill:this.shadowFill||this.fill,transform:"translate(4.685927, 18.917813) scale(-1, -1) rotate(-32.000000) translate(".concat(this.x+-4.685927,", ").concat(this.y+-18.917813,")"),cx:"4.68592654",cy:"18.9178127",rx:"3.70078457",ry:"2.92022453"},null),e("path",{d:"M1.95251677,0.68258909 C3.68583115,-0.400505943 5.78379192,-0.169765229 6.63844331,1.1979629 C7.4930947,2.56569103 6.78079761,4.55247575 5.04748323,5.63557079 C3.85503595,6.38069455 2.49000663,6.50399819 1.47594704,6.06306368 L1.47635248,22.0768926 L0.0162402201,22.0768926 L0.0154715991,4.11169688 C-0.117424115,2.8976469 0.612367024,1.52000759 1.95251677,0.68258909 Z",transform:"scale(-1, -1) translate(-10, -23) "},null)])])])}}),Ge=w({name:"header-top",props:{scoreData:{type:Object,default:()=>({})}},setup(y){const d=M(),{scoreData:a}=z(y),r=b({show:!1,shiyiShow:!1,isInitPlyr:!1,_plrl:null}),v={BEGINNER:"入门级",ADVANCED:"进阶级",PERFORMER:"大师级"},p=O("intonation"),_=()=>{j()},h=t=>{p.value=t},m=U(()=>{const t=(a.value.videoFilePath||"").split(".").pop();return t==="wav"||t==="mp3"||t==="m4a"?"audio":"video"}),f=()=>{r.show=!0,!r.isInitPlyr&&G(()=>{const t=m.value==="audio"?"#audioSrc":"#videoSrc";r._plrl=new oe(t,{controls:["play-large","play","progress","current-time"],fullscreen:{enabled:!1}}),r.isInitPlyr=!0})};return()=>e("div",{class:[s.headerTop,d.android&&s.android]},[e("div",{class:[s.back,!H.isApp&&s.disabled],onClick:_},[e("img",{src:Oe},null)]),e("div",{class:s.center},[e("div",{class:s.cItem},[e("div",null,[v[a.value.heardLevel]]),e("div",null,[i("难度")])]),e("div",{class:s.cItem},[e("div",null,[a.value.score,i("分")]),e("div",null,[i("评测分数")])]),n.isPercussion?null:e(F,null,[e("div",{onClick:()=>h("intonation"),class:[s.cItem,p.value==="intonation"&&s.active]},[e("div",{style:{color:"rgb(45, 199, 170)"}},[a.value.intonation,i("分")]),e("div",null,[i("音准")])]),e("div",{onClick:()=>h("cadence"),class:[s.cItem,p.value==="cadence"&&s.active]},[e("div",{style:{color:"#FF4E19"}},[a.value.cadence,i("分")]),e("div",null,[i("节奏")])]),e("div",{onClick:()=>h("integrity"),class:[s.cItem,p.value==="integrity"&&s.active]},[e("div",{style:{color:"rgb(255, 196, 89)"}},[a.value.integrity,i("分")]),e("div",null,[i("完成度")])])])]),e("div",{class:s.right},[e("div",{style:{display:a.value.videoFilePath?"":"none"},class:s.btn,onClick:f},[e("img",{class:s.iconBtn,src:He},null),e("span",null,[i("回放")])]),e("div",{class:s.btn,onClick:()=>r.shiyiShow=!0},[e("img",{class:s.iconBtn,src:Ue},null),e("span",null,[i("释义")])])]),n.isPercussion?null:e("div",{class:s.demos},[e("div",null,[e(l,{fill:"#01C1B5"},null),e("span",null,[i("演奏正确")])]),p.value==="intonation"&&e(F,null,[e("div",null,[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FFAB25",shadow:!0,x:-2,y:0},null),e("span",null,[i("音高了")])]),e("div",null,[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FFAB25",shadow:!0,x:-1,y:-3},null),e("span",null,[i("音低了")])])]),p.value==="cadence"&&e(F,null,[e("div",null,[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FF4444",shadow:!0,x:.5,y:-1},null),e("span",null,[i("节奏过快")])]),e("div",null,[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FF4444",shadow:!0,x:-3,y:-2.5},null),e("span",null,[i("节奏慢了")])])]),p.value==="integrity"&&e("div",null,[e(l,{fill:"#CC75FF"},null),e("span",null,[i("完成度不足")])]),e("div",null,[e(l,{fill:"#000"},null),e("span",null,[i("未演奏")])])]),e(D,{teleport:"body",class:["popup-custom","van-scale",s.popup],transition:"van-scale",show:r.show,"onUpdate:show":t=>r.show=t,closeable:!0,onClose:()=>{var t;(t=r._plrl)==null||t.pause()}},{default:()=>[m.value==="audio"&&e("div",{class:s.audiobox},[e("audio",{id:"audioSrc",src:a.value.videoFilePath,controls:"false",preload:"metadata",playsinline:!0},null)]),m.value==="video"&&e("div",{class:s.videobox},[e("video",{id:"videoSrc",class:s.videoBox,src:a.value.videoFilePath,"data-poster":je,preload:"metadata",playsinline:!0},null)])]}),e(D,{show:r.shiyiShow,"onUpdate:show":t=>r.shiyiShow=t,class:"popup-custom van-scale center-closeBtn",transition:"van-scale",teleport:"body",closeable:!0},{default:()=>[e("div",{class:s.shiyiPopup},[e("div",{class:s.shiyiTitle},[i("图标释义")]),e("div",{class:s.items},[e("div",{class:s.item},[e(l,{fill:"#01C1B5"},null),e("span",null,[i("绿色音符:演奏正确")])]),e("div",{class:s.item},[e(l,{fill:"#FF4444"},null),e("span",null,[i("红色音符:错音")])]),e("div",{class:s.item},[e(l,{fill:"#CC75FF"},null),e("span",null,[i("紫色音符:完成度不足")])]),e("div",{class:s.item},[e(l,{fill:"#AEAEAE"},null),e("span",null,[i("灰色音符:未演奏")])]),e("div",{class:s.item},[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FF4444",shadow:!0,x:.5,y:-1},null),e("span",null,[i("音符重影(红色在前):节奏过快")])]),e("div",{class:s.item},[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FF4444",shadow:!0,x:-3,y:-2.5},null),e("span",null,[i("音符重影(红色在后):节奏慢了")])]),e("div",{class:s.item},[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FFAB25",shadow:!0,x:-2,y:0},null),e("span",null,[i("音符重影(黄色在上):音高了")])]),e("div",{class:s.item},[e(l,{fill:"rgba(1, 193, 181, .8)",shadowFill:"#FFAB25",shadow:!0,x:-1,y:-3},null),e("span",null,[i("音符重影(黄色在下):音低了")])])])])]})])}}),Je={RIGHT:u.right,WRONG:u.wrong,NOT_PLAY:u.notPlay,CADENCE_WRONG:u.cadence_wrong,INTONATION_WRONG:u.intonation_wrong,INTEGRITY_WRONG:u.integrity_wrong},Ke=w({name:"music-list",setup(){const y=J(),d=b({videoFilePath:"",cadence:0,integrity:0,intonation:0,score:0,heardLevel:""}),a=b({isLoading:!0,paddingLeft:"",headerHide:!1,musicalNotesPlayStats:[],userMeasureScore:{}}),r=async()=>{const t=await Y();if(t!=null&&t.content){const{isSpecialShapedScreen:o,notchHeight:c}=t.content;o&&(a.paddingLeft="25px")}a.paddingLeft="20px"};W(()=>{r(),V()});const v=t=>{const o=n.partIndex,c={...t.data,...t.data.background[o]};p(c,o),_(),a.isLoading=!1},p=(t,o)=>{if(n.scrollContainer="scrollContainer",n.detailId=t.id,n.xmlUrl=t.xmlFileUrl,n.partIndex=o,n.subjectId=t.musicSubject,n.categoriesId=t.categoriesId,n.categoriesName=t.musicTagNames,n.enableEvaluation=!!t.canEvaluate,n.examSongId=t.id+"",n.examSongName=t.musicSheetName,t.extConfigJson)try{n.extConfigJson=JSON.parse(t.extConfigJson)}catch(c){console.error("解析扩展字段错误:",c)}n.isOpenMetronome=t.mp3Type==="MP3_METRONOME",n.needTick=t.isOpenMetronome,n.isShowFingering=!!t.showFingering,n.music=t.audioFileUrl,n.accompany=t.metronomeUrl||t.metronomeUrl,n.midiUrl=t.midiUrl,n.parentCategoriesId=t.musicTag,n.playMode=t.audioType==="MP3"?"MP3":"MIDI",n.originSpeed=n.speed=t.speed,n.track=t.track,n.enableNotation=!!t.notation,n.subjectId=Z(n.subjectId,"ORCHESTRA"),n.isPercussion=n.subjectId==23||n.subjectId==113||n.subjectId==121||K(),n.fingeringInfo=X(n.subjectId)},_=()=>{n.extConfigJson.multitrack&&ee("multitrack",n.extConfigJson.multitrack)};T(async()=>{var c,C,E,x,S,P,B,I,A,N,k;const t=await ie(y.id);n.partIndex=Number((c=t==null?void 0:t.data)==null?void 0:c.partIndex);let o={};try{o=JSON.parse((C=t==null?void 0:t.data)==null?void 0:C.scoreData)}catch(g){console.error("解析评测结果:",g)}a.musicalNotesPlayStats=((E=o.musicalNotesPlayStats)==null?void 0:E.notesData)||[],a.userMeasureScore=o.userMeasureScore||{},d.heardLevel=(x=t.data)==null?void 0:x.heardLevel,d.cadence=(S=t.data)==null?void 0:S.cadence,d.integrity=(P=t.data)==null?void 0:P.integrity,d.intonation=(B=t.data)==null?void 0:B.intonation,d.score=(I=t.data)==null?void 0:I.score,d.videoFilePath=((A=t.data)==null?void 0:A.videoFilePath)||((N=t.data)==null?void 0:N.recordFilePath),Promise.all([ae((k=o.musicalNotesPlayStats)==null?void 0:k.examSongId)]).then(g=>{v(g[0])})});const h=()=>{for(const t of a.musicalNotesPlayStats){const o=n.times[t.musicalNotesIndex],c=o!=null&&o.id?document.getElementById("vf-"+(o==null?void 0:o.id)):null;c==null||c.classList.add(Je[t.musicalErrorType])}},m=()=>{for(let t in a.userMeasureScore)se(a.userMeasureScore[t],!1)},f=t=>{n.musicRendered=!0,n.osmd=t,n.times=te(t),console.log("🚀 ~ state.times:",n.times),h(),m(),ne()};return T(()=>{window.addEventListener("resize",R)}),$(()=>{window.removeEventListener("resize",R)}),()=>e("div",{class:[u.detail,n.setting.eyeProtection&&"eyeProtection",u.shareBox],style:{paddingLeft:a.paddingLeft}},[e(L,{name:"van-fade"},{default:()=>[!n.musicRendered&&e("div",{class:u.skeleton},[e(q,{class:u.skeleton,row:8},null)])]}),e("div",{class:[u.headHeight,a.headerHide&&u.headHide],onClick:t=>t.stopPropagation()},[e(L,{name:"van-slide-down"},{default:()=>[n.musicRendered&&e(Ge,{scoreData:d},null)]})]),e("div",{id:"scrollContainer",class:[u.container,!n.setting.displayCursor&&"hideCursor"]},[e("div",{class:u.musicName},[n.examSongName]),!a.isLoading&&e(Q,{onRendered:f},null)])])}});export{Ke as default};