TIANYONG 5 月之前
父節點
當前提交
d127cd34e2
共有 100 個文件被更改,包括 230 次插入172 次删除
  1. 8 8
      dist/colexiu.html
  2. 8 8
      dist/index.html
  3. 5 5
      dist/instrument.html
  4. 0 0
      dist/js/colexiu-2bf974ad.js
  5. 0 0
      dist/js/colexiu-legacy-fd34b914.js
  6. 0 0
      dist/js/gym-205522e4.js
  7. 0 0
      dist/js/gym-legacy-12286c74.js
  8. 0 0
      dist/js/index-164a03ad.js
  9. 0 0
      dist/js/index-23868d7b.js
  10. 0 0
      dist/js/index-25785b28.js
  11. 0 0
      dist/js/index-3ccdda4a.js
  12. 1 1
      dist/js/index-444ffe79.js
  13. 0 0
      dist/js/index-94cc5202.js
  14. 0 0
      dist/js/index-aac90692.js
  15. 0 0
      dist/js/index-bbfa6aeb.js
  16. 1 1
      dist/js/index-fee9946b.js
  17. 0 0
      dist/js/index-legacy-249e3b63.js
  18. 0 0
      dist/js/index-legacy-3f14d9a6.js
  19. 0 0
      dist/js/index-legacy-48ab9139.js
  20. 0 0
      dist/js/index-legacy-79104db2.js
  21. 0 0
      dist/js/index-legacy-8262cdf4.js
  22. 1 1
      dist/js/index-legacy-9e72e6e6.js
  23. 0 0
      dist/js/index-legacy-b0a0f1b5.js
  24. 0 0
      dist/js/index-legacy-b40d5797.js
  25. 1 1
      dist/js/index-legacy-cc7092a9.js
  26. 0 0
      dist/js/instrument-cc91e66a.js
  27. 0 0
      dist/js/instrument-legacy-a71ac5ed.js
  28. 0 0
      dist/js/modeView-57ed06d6.js
  29. 0 0
      dist/js/modeView-legacy-6527a430.js
  30. 0 0
      dist/js/orchestra-5c29f3ce.js
  31. 0 0
      dist/js/orchestra-legacy-f9350f95.js
  32. 0 0
      dist/js/polyfills-da8f0a4a.js
  33. 0 0
      dist/js/polyfills-legacy-90771e26.js
  34. 0 0
      dist/js/report-share-2221852e.js
  35. 0 0
      dist/js/report-share-legacy-6e3ccf40.js
  36. 9 9
      dist/orchestra.html
  37. 6 6
      dist/report-share.html
  38. 2 4
      src/helpers/customMusicScore.ts
  39. 1 1
      src/helpers/metronome.ts
  40. 2 2
      src/page-instrument/component/authorName/index.module.less
  41. 12 0
      src/page-instrument/custom-plugins/guide-driver/index.less
  42. 17 2
      src/page-instrument/custom-plugins/guide-driver/index.tsx
  43. 二進制
      src/page-instrument/evaluat-model/countdown/imgs/step1.png
  44. 二進制
      src/page-instrument/evaluat-model/countdown/imgs/step2.png
  45. 二進制
      src/page-instrument/evaluat-model/countdown/imgs/step3.png
  46. 二進制
      src/page-instrument/evaluat-model/icons/confirm.png
  47. 二進制
      src/page-instrument/evaluat-model/icons/lanya_erji.png
  48. 二進制
      src/page-instrument/evaluat-model/icons/no_erji.png
  49. 二進制
      src/page-instrument/evaluat-model/icons/tip_btn.png
  50. 二進制
      src/page-instrument/evaluat-model/icons/tip_erji.png
  51. 二進制
      src/page-instrument/evaluat-model/icons/youxian_erji.png
  52. 二進制
      src/page-instrument/follow-model/microphone/images/microBg.png
  53. 二進制
      src/page-instrument/follow-model/microphone/images/micro_cancel.png
  54. 二進制
      src/page-instrument/follow-model/microphone/images/micro_confirm.png
  55. 二進制
      src/page-instrument/header-top/image/background.png
  56. 二進制
      src/page-instrument/header-top/image/background1.png
  57. 二進制
      src/page-instrument/header-top/image/background1Act.png
  58. 二進制
      src/page-instrument/header-top/image/backgroundAct.png
  59. 二進制
      src/page-instrument/header-top/image/bg.png
  60. 二進制
      src/page-instrument/header-top/image/icon_menu.png
  61. 二進制
      src/page-instrument/header-top/image/icon_menuAct.png
  62. 二進制
      src/page-instrument/header-top/image/icon_pause.png
  63. 二進制
      src/page-instrument/header-top/image/icon_play.png
  64. 二進制
      src/page-instrument/header-top/image/icon_reset.png
  65. 二進制
      src/page-instrument/header-top/image/mingsong.png
  66. 二進制
      src/page-instrument/header-top/image/mingsongAct.png
  67. 二進制
      src/page-instrument/header-top/image/mode.png
  68. 二進制
      src/page-instrument/header-top/image/music.png
  69. 二進制
      src/page-instrument/header-top/image/music1.png
  70. 二進制
      src/page-instrument/header-top/image/music1Act.png
  71. 二進制
      src/page-instrument/header-top/image/musicAct.png
  72. 二進制
      src/page-instrument/header-top/image/perform.png
  73. 二進制
      src/page-instrument/header-top/image/perform1.png
  74. 二進制
      src/page-instrument/header-top/image/performAct.png
  75. 二進制
      src/page-instrument/header-top/image/radio.png
  76. 二進制
      src/page-instrument/header-top/image/radioActive.png
  77. 二進制
      src/page-instrument/header-top/image/section0.png
  78. 二進制
      src/page-instrument/header-top/image/section1.png
  79. 二進制
      src/page-instrument/header-top/image/section2.png
  80. 二進制
      src/page-instrument/header-top/image/shenggui.png
  81. 二進制
      src/page-instrument/header-top/image/shengguiAct.png
  82. 二進制
      src/page-instrument/header-top/image/sing.png
  83. 二進制
      src/page-instrument/header-top/image/sing1.png
  84. 二進制
      src/page-instrument/header-top/image/singAct.png
  85. 二進制
      src/page-instrument/header-top/image/sj.png
  86. 二進制
      src/page-instrument/header-top/image/submit.png
  87. 二進制
      src/page-instrument/header-top/image/tickoff.png
  88. 二進制
      src/page-instrument/header-top/image/tickoffAct.png
  89. 二進制
      src/page-instrument/header-top/image/tickon.png
  90. 二進制
      src/page-instrument/header-top/image/tickonAct.png
  91. 二進制
      src/page-instrument/header-top/image/zt.png
  92. 40 17
      src/page-instrument/header-top/index.module.less
  93. 96 74
      src/page-instrument/header-top/index.tsx
  94. 16 5
      src/page-instrument/header-top/settting/index.module.less
  95. 3 3
      src/page-instrument/header-top/settting/index.tsx
  96. 1 1
      src/page-instrument/simple-detail/index.tsx
  97. 二進制
      src/page-instrument/view-detail/images/bg2_left_zs.png
  98. 二進制
      src/page-instrument/view-detail/images/bg2_right_zs.png
  99. 0 0
      src/page-instrument/view-detail/images/index.json
  100. 0 23
      src/page-instrument/view-detail/index.module.less

+ 8 - 8
dist/colexiu.html

@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-9f4ec464.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-da8f0a4a.js"></script>
 
   <meta charset="UTF-8" />
   <link rel="icon" type="image/svg+xml" href="./vite.svg" />
@@ -40,11 +40,11 @@
       },
     })
   </script>
-  <script type="module" crossorigin src="./js/colexiu-1b947a94.js"></script>
-  <link rel="modulepreload" crossorigin href="./js/index-4556012d.js">
-  <link rel="modulepreload" crossorigin href="./js/index-492eeaa2.js">
-  <link rel="modulepreload" crossorigin href="./js/index-884d5436.js">
-  <link rel="modulepreload" crossorigin href="./js/index-a9fcc1b4.js">
+  <script type="module" crossorigin src="./js/colexiu-2bf974ad.js"></script>
+  <link rel="modulepreload" crossorigin href="./js/index-164a03ad.js">
+  <link rel="modulepreload" crossorigin href="./js/index-bbfa6aeb.js">
+  <link rel="modulepreload" crossorigin href="./js/index-94cc5202.js">
+  <link rel="modulepreload" crossorigin href="./js/index-444ffe79.js">
   <link rel="stylesheet" href="./css/index-c14a2cb8.css">
   <link rel="stylesheet" href="./css/colexiu-62f31c4f.css">
   <script type="module">import.meta.url;import("_").catch(()=>1);async function* g(){};window.__vite_is_modern_browser=true;</script>
@@ -56,8 +56,8 @@
   <img id="loading" class="show" src="./loading.svg" alt="loading" />
   
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
-  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-2b34d33c.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/colexiu-legacy-2a16df07.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-90771e26.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/colexiu-legacy-fd34b914.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

+ 8 - 8
dist/index.html

@@ -2,7 +2,7 @@
 <html lang="ZH-cn">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-9f4ec464.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-da8f0a4a.js"></script>
 
   <meta charset="UTF-8">
   <link rel="icon" href="./favicon.ico" />
@@ -75,11 +75,11 @@
       }
     })
   </script>
-  <script type="module" crossorigin src="./js/gym-584e7cda.js"></script>
-  <link rel="modulepreload" crossorigin href="./js/index-4556012d.js">
-  <link rel="modulepreload" crossorigin href="./js/index-492eeaa2.js">
-  <link rel="modulepreload" crossorigin href="./js/index-ca79a177.js">
-  <link rel="modulepreload" crossorigin href="./js/index-a9fcc1b4.js">
+  <script type="module" crossorigin src="./js/gym-205522e4.js"></script>
+  <link rel="modulepreload" crossorigin href="./js/index-164a03ad.js">
+  <link rel="modulepreload" crossorigin href="./js/index-bbfa6aeb.js">
+  <link rel="modulepreload" crossorigin href="./js/index-3ccdda4a.js">
+  <link rel="modulepreload" crossorigin href="./js/index-444ffe79.js">
   <link rel="modulepreload" crossorigin href="./js/plyr.min-c8c2777b.js">
   <link rel="stylesheet" href="./css/index-c14a2cb8.css">
   <link rel="stylesheet" href="./css/index-85f95688.css">
@@ -98,8 +98,8 @@
   <img id="loading" class="show" src="./loading.svg" alt="loading" />
   
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
-  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-2b34d33c.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/gym-legacy-1b504330.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-90771e26.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/gym-legacy-12286c74.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

+ 5 - 5
dist/instrument.html

@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-9f4ec464.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-da8f0a4a.js"></script>
 
   <meta charset="UTF-8" />
   <meta name="viewport"
@@ -41,8 +41,8 @@
       })
     }
   </script>
-  <script type="module" crossorigin src="./js/instrument-557e80c2.js"></script>
-  <link rel="modulepreload" crossorigin href="./js/index-4556012d.js">
+  <script type="module" crossorigin src="./js/instrument-cc91e66a.js"></script>
+  <link rel="modulepreload" crossorigin href="./js/index-164a03ad.js">
   <link rel="stylesheet" href="./css/index-c14a2cb8.css">
   <link rel="stylesheet" href="./css/instrument-118f68d3.css">
   <script type="module">import.meta.url;import("_").catch(()=>1);async function* g(){};window.__vite_is_modern_browser=true;</script>
@@ -67,8 +67,8 @@
     var vConsole = new window.VConsole();
   </script>   -->
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
-  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-2b34d33c.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/instrument-legacy-9cc02bcc.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-90771e26.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/instrument-legacy-a71ac5ed.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

File diff suppressed because it is too large
+ 0 - 0
dist/js/colexiu-2bf974ad.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/colexiu-legacy-fd34b914.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/gym-205522e4.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/gym-legacy-12286c74.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-164a03ad.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-23868d7b.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-25785b28.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-3ccdda4a.js


+ 1 - 1
dist/js/index-a9fcc1b4.js → dist/js/index-444ffe79.js

@@ -1 +1 @@
-import{b7 as l,d as i,h as a,bh as v,ba as r,bc as d,bz as _,bd as m,bA as w,bg as u,bk as g,F as A}from"./index-4556012d.js";const[$,y]=l("skeleton-title"),P={round:Boolean,titleWidth:r};var p=i({name:$,props:P,setup(t){return()=>a("h3",{class:y([{round:t.round}]),style:{width:v(t.titleWidth)}},null)}});const T=d(p);var z=T;const[B,D]=l("skeleton-avatar"),F={avatarSize:r,avatarShape:m("round")};var N=i({name:B,props:F,setup(t){return()=>a("div",{class:D([t.avatarShape]),style:_(t.avatarSize)},null)}});const R=d(N);var I=R;const s="100%",L={round:Boolean,rowWidth:{type:r,default:s}},[U,C]=l("skeleton-paragraph");var E=i({name:U,props:L,setup(t){return()=>a("div",{class:C([{round:t.round}]),style:{width:t.rowWidth}},null)}});const H=d(E);var O=H;const[V,c]=l("skeleton"),j="60%",q={row:w(0),round:Boolean,title:Boolean,titleWidth:r,avatar:Boolean,avatarSize:r,avatarShape:m("round"),loading:u,animate:u,rowWidth:{type:[Number,String,Array],default:s}};var x=i({name:V,inheritAttrs:!1,props:q,setup(t,{slots:o,attrs:h}){const f=()=>{if(t.avatar)return a(I,{avatarShape:t.avatarShape,avatarSize:t.avatarSize},null)},S=()=>{if(t.title)return a(z,{round:t.round,titleWidth:t.titleWidth},null)},k=n=>{const{rowWidth:e}=t;return e===s&&n===+t.row-1?j:Array.isArray(e)?e[n]:e},W=()=>Array(+t.row).fill("").map((n,e)=>a(O,{key:e,round:t.round,rowWidth:v(k(e))},null)),b=()=>o.template?o.template():a(A,null,[f(),a("div",{class:c("content")},[S(),W()])]);return()=>{var n;return t.loading?a("div",g({class:c({animate:t.animate,round:t.round})},h),[b()]):(n=o.default)==null?void 0:n.call(o)}}});const J=d(x);export{J as S};
+import{b7 as l,d as i,h as a,bh as v,ba as r,bc as d,bz as _,bd as m,bA as w,bg as u,bk as g,F as A}from"./index-164a03ad.js";const[$,y]=l("skeleton-title"),P={round:Boolean,titleWidth:r};var p=i({name:$,props:P,setup(t){return()=>a("h3",{class:y([{round:t.round}]),style:{width:v(t.titleWidth)}},null)}});const T=d(p);var z=T;const[B,D]=l("skeleton-avatar"),F={avatarSize:r,avatarShape:m("round")};var N=i({name:B,props:F,setup(t){return()=>a("div",{class:D([t.avatarShape]),style:_(t.avatarSize)},null)}});const R=d(N);var I=R;const s="100%",L={round:Boolean,rowWidth:{type:r,default:s}},[U,C]=l("skeleton-paragraph");var E=i({name:U,props:L,setup(t){return()=>a("div",{class:C([{round:t.round}]),style:{width:t.rowWidth}},null)}});const H=d(E);var O=H;const[V,c]=l("skeleton"),j="60%",q={row:w(0),round:Boolean,title:Boolean,titleWidth:r,avatar:Boolean,avatarSize:r,avatarShape:m("round"),loading:u,animate:u,rowWidth:{type:[Number,String,Array],default:s}};var x=i({name:V,inheritAttrs:!1,props:q,setup(t,{slots:o,attrs:h}){const f=()=>{if(t.avatar)return a(I,{avatarShape:t.avatarShape,avatarSize:t.avatarSize},null)},S=()=>{if(t.title)return a(z,{round:t.round,titleWidth:t.titleWidth},null)},k=n=>{const{rowWidth:e}=t;return e===s&&n===+t.row-1?j:Array.isArray(e)?e[n]:e},W=()=>Array(+t.row).fill("").map((n,e)=>a(O,{key:e,round:t.round,rowWidth:v(k(e))},null)),b=()=>o.template?o.template():a(A,null,[f(),a("div",{class:c("content")},[S(),W()])]);return()=>{var n;return t.loading?a("div",g({class:c({animate:t.animate,round:t.round})},h),[b()]):(n=o.default)==null?void 0:n.call(o)}}});const J=d(x);export{J as S};

File diff suppressed because it is too large
+ 0 - 0
dist/js/index-94cc5202.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-aac90692.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-bbfa6aeb.js


+ 1 - 1
dist/js/index-cb357dcd.js → dist/js/index-fee9946b.js

@@ -1 +1 @@
-import{d as i,g as l,n as d,bM as e,c,m as r,h as s,au as u}from"./index-4556012d.js";const m="_skeleton_vtlsh_1",f="_detail_vtlsh_12",p="_container_vtlsh_20",a={skeleton:m,detail:f,container:p},y=i({name:"music-list",setup(){const n=l(),t=d({isLoading:!0,isProductLoading:!1,product:[{state:!1,name:"五线谱",type:e.staff,base64:""},{state:!1,name:"首调",type:e.firstTone,base64:""},{state:!1,name:"固定调",type:e.fixedTone,base64:""}]});c(()=>{window.appName="colexiu",r.xmlUrl=n.xmlUrl,t.isLoading=!1});const o=async()=>{console.log("渲染完成")};return()=>s("div",{class:a.detail},[s("div",{id:"scrollContainer",class:[a.container,"hideCursor"]},[!t.isLoading&&s(u,{onRendered:o},null)])])}});export{y as default};
+import{d as i,g as l,n as d,bM as e,c,m as r,h as s,au as u}from"./index-164a03ad.js";const m="_skeleton_vtlsh_1",f="_detail_vtlsh_12",p="_container_vtlsh_20",a={skeleton:m,detail:f,container:p},y=i({name:"music-list",setup(){const n=l(),t=d({isLoading:!0,isProductLoading:!1,product:[{state:!1,name:"五线谱",type:e.staff,base64:""},{state:!1,name:"首调",type:e.firstTone,base64:""},{state:!1,name:"固定调",type:e.fixedTone,base64:""}]});c(()=>{window.appName="colexiu",r.xmlUrl=n.xmlUrl,t.isLoading=!1});const o=async()=>{console.log("渲染完成")};return()=>s("div",{class:a.detail},[s("div",{id:"scrollContainer",class:[a.container,"hideCursor"]},[!t.isLoading&&s(u,{onRendered:o},null)])])}});export{y as default};

File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-249e3b63.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-3f14d9a6.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-48ab9139.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-79104db2.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-8262cdf4.js


+ 1 - 1
dist/js/index-legacy-cd54cb67.js → dist/js/index-legacy-9e72e6e6.js

@@ -1 +1 @@
-System.register(["./index-legacy-7dc52fad.js"],(function(e,t){"use strict";var i,n,a,o,r,s,d,l,c=document.createElement("style");return c.textContent="._skeleton_vtlsh_1{position:fixed;left:0;top:0;width:100vw;height:100vh;padding:.53333rem .8rem;background-color:#fff;z-index:1000;--van-skeleton-paragraph-height: .8rem}._detail_vtlsh_12{width:100vw;height:100vh;overflow:hidden;overflow-y:auto;--header-height: 1.65333rem;background:var(--container-background)}._detail_vtlsh_12 ._container_vtlsh_20{margin:0 .26667rem;border-radius:.26667rem}._detail_vtlsh_12 #musicAndSelection{overflow:initial!important;height:initial!important;max-height:initial!important}\n",document.head.appendChild(c),{setters:[e=>{i=e.d,n=e.g,a=e.n,o=e.bM,r=e.c,s=e.m,d=e.h,l=e.au}],execute:function(){const t="_detail_vtlsh_12",c="_container_vtlsh_20";e("default",i({name:"music-list",setup(){const e=n(),i=a({isLoading:!0,isProductLoading:!1,product:[{state:!1,name:"五线谱",type:o.staff,base64:""},{state:!1,name:"首调",type:o.firstTone,base64:""},{state:!1,name:"固定调",type:o.fixedTone,base64:""}]});r((()=>{window.appName="colexiu",s.xmlUrl=e.xmlUrl,i.isLoading=!1}));const h=async()=>{console.log("渲染完成")};return()=>d("div",{class:t},[d("div",{id:"scrollContainer",class:[c,"hideCursor"]},[!i.isLoading&&d(l,{onRendered:h},null)])])}}))}}}));
+System.register(["./index-legacy-79104db2.js"],(function(e,t){"use strict";var i,n,a,o,r,s,d,l,c=document.createElement("style");return c.textContent="._skeleton_vtlsh_1{position:fixed;left:0;top:0;width:100vw;height:100vh;padding:.53333rem .8rem;background-color:#fff;z-index:1000;--van-skeleton-paragraph-height: .8rem}._detail_vtlsh_12{width:100vw;height:100vh;overflow:hidden;overflow-y:auto;--header-height: 1.65333rem;background:var(--container-background)}._detail_vtlsh_12 ._container_vtlsh_20{margin:0 .26667rem;border-radius:.26667rem}._detail_vtlsh_12 #musicAndSelection{overflow:initial!important;height:initial!important;max-height:initial!important}\n",document.head.appendChild(c),{setters:[e=>{i=e.d,n=e.g,a=e.n,o=e.bM,r=e.c,s=e.m,d=e.h,l=e.au}],execute:function(){const t="_detail_vtlsh_12",c="_container_vtlsh_20";e("default",i({name:"music-list",setup(){const e=n(),i=a({isLoading:!0,isProductLoading:!1,product:[{state:!1,name:"五线谱",type:o.staff,base64:""},{state:!1,name:"首调",type:o.firstTone,base64:""},{state:!1,name:"固定调",type:o.fixedTone,base64:""}]});r((()=>{window.appName="colexiu",s.xmlUrl=e.xmlUrl,i.isLoading=!1}));const h=async()=>{console.log("渲染完成")};return()=>d("div",{class:t},[d("div",{id:"scrollContainer",class:[c,"hideCursor"]},[!i.isLoading&&d(l,{onRendered:h},null)])])}}))}}}));

File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-b0a0f1b5.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/index-legacy-b40d5797.js


+ 1 - 1
dist/js/index-legacy-fd7203cc.js → dist/js/index-legacy-cc7092a9.js

@@ -1 +1 @@
-System.register(["./index-legacy-7dc52fad.js"],(function(t,a){"use strict";var r,e,n,l,o,i,s,u,d,p,v,h;return{setters:[t=>{r=t.b7,e=t.d,n=t.h,l=t.bh,o=t.ba,i=t.bc,s=t.bz,u=t.bd,d=t.bA,p=t.bg,v=t.bk,h=t.F}],execute:function(){const[a,c]=r("skeleton-title"),S={round:Boolean,titleWidth:o};var m=e({name:a,props:S,setup:t=>()=>n("h3",{class:c([{round:t.round}]),style:{width:l(t.titleWidth)}},null)}),y=i(m);const[b,w]=r("skeleton-avatar"),W={avatarSize:o,avatarShape:u("round")};var f=e({name:b,props:W,setup:t=>()=>n("div",{class:w([t.avatarShape]),style:s(t.avatarSize)},null)}),g=i(f);const k="100%",z={round:Boolean,rowWidth:{type:o,default:k}},[A,B]=r("skeleton-paragraph");var x=e({name:A,props:z,setup:t=>()=>n("div",{class:B([{round:t.round}]),style:{width:t.rowWidth}},null)}),j=i(x);const[F,N]=r("skeleton"),q={row:d(0),round:Boolean,title:Boolean,titleWidth:o,avatar:Boolean,avatarSize:o,avatarShape:u("round"),loading:p,animate:p,rowWidth:{type:[Number,String,Array],default:k}};var C=e({name:F,inheritAttrs:!1,props:q,setup(t,{slots:a,attrs:r}){const e=()=>{if(t.avatar)return n(g,{avatarShape:t.avatarShape,avatarSize:t.avatarSize},null)},o=()=>{if(t.title)return n(y,{round:t.round,titleWidth:t.titleWidth},null)},i=a=>{const{rowWidth:r}=t;return r===k&&a===+t.row-1?"60%":Array.isArray(r)?r[a]:r};return()=>{var s;return t.loading?n("div",v({class:N({animate:t.animate,round:t.round})},r),[a.template?a.template():n(h,null,[e(),n("div",{class:N("content")},[o(),Array(+t.row).fill("").map(((a,r)=>n(j,{key:r,round:t.round,rowWidth:l(i(r))},null)))])])]):null==(s=a.default)?void 0:s.call(a)}}});t("S",i(C))}}}));
+System.register(["./index-legacy-79104db2.js"],(function(t,a){"use strict";var r,e,n,l,o,i,s,u,d,p,v,h;return{setters:[t=>{r=t.b7,e=t.d,n=t.h,l=t.bh,o=t.ba,i=t.bc,s=t.bz,u=t.bd,d=t.bA,p=t.bg,v=t.bk,h=t.F}],execute:function(){const[a,c]=r("skeleton-title"),S={round:Boolean,titleWidth:o};var m=e({name:a,props:S,setup:t=>()=>n("h3",{class:c([{round:t.round}]),style:{width:l(t.titleWidth)}},null)}),y=i(m);const[b,w]=r("skeleton-avatar"),W={avatarSize:o,avatarShape:u("round")};var f=e({name:b,props:W,setup:t=>()=>n("div",{class:w([t.avatarShape]),style:s(t.avatarSize)},null)}),g=i(f);const k="100%",z={round:Boolean,rowWidth:{type:o,default:k}},[A,B]=r("skeleton-paragraph");var x=e({name:A,props:z,setup:t=>()=>n("div",{class:B([{round:t.round}]),style:{width:t.rowWidth}},null)}),j=i(x);const[F,N]=r("skeleton"),q={row:d(0),round:Boolean,title:Boolean,titleWidth:o,avatar:Boolean,avatarSize:o,avatarShape:u("round"),loading:p,animate:p,rowWidth:{type:[Number,String,Array],default:k}};var C=e({name:F,inheritAttrs:!1,props:q,setup(t,{slots:a,attrs:r}){const e=()=>{if(t.avatar)return n(g,{avatarShape:t.avatarShape,avatarSize:t.avatarSize},null)},o=()=>{if(t.title)return n(y,{round:t.round,titleWidth:t.titleWidth},null)},i=a=>{const{rowWidth:r}=t;return r===k&&a===+t.row-1?"60%":Array.isArray(r)?r[a]:r};return()=>{var s;return t.loading?n("div",v({class:N({animate:t.animate,round:t.round})},r),[a.template?a.template():n(h,null,[e(),n("div",{class:N("content")},[o(),Array(+t.row).fill("").map(((a,r)=>n(j,{key:r,round:t.round,rowWidth:l(i(r))},null)))])])]):null==(s=a.default)?void 0:s.call(a)}}});t("S",i(C))}}}));

File diff suppressed because it is too large
+ 0 - 0
dist/js/instrument-cc91e66a.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/instrument-legacy-a71ac5ed.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/modeView-57ed06d6.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/modeView-legacy-6527a430.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/orchestra-5c29f3ce.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/orchestra-legacy-f9350f95.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/polyfills-da8f0a4a.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/polyfills-legacy-90771e26.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/report-share-2221852e.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/report-share-legacy-6e3ccf40.js


+ 9 - 9
dist/orchestra.html

@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-9f4ec464.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-da8f0a4a.js"></script>
 
   <meta charset="UTF-8" />
   <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
@@ -41,12 +41,12 @@
       transition: opacity .3s;
     }
   </style>
-  <script type="module" crossorigin src="./js/orchestra-da464168.js"></script>
-  <link rel="modulepreload" crossorigin href="./js/index-4556012d.js">
-  <link rel="modulepreload" crossorigin href="./js/index-492eeaa2.js">
-  <link rel="modulepreload" crossorigin href="./js/index-884d5436.js">
-  <link rel="modulepreload" crossorigin href="./js/index-ca79a177.js">
-  <link rel="modulepreload" crossorigin href="./js/index-a9fcc1b4.js">
+  <script type="module" crossorigin src="./js/orchestra-5c29f3ce.js"></script>
+  <link rel="modulepreload" crossorigin href="./js/index-164a03ad.js">
+  <link rel="modulepreload" crossorigin href="./js/index-bbfa6aeb.js">
+  <link rel="modulepreload" crossorigin href="./js/index-94cc5202.js">
+  <link rel="modulepreload" crossorigin href="./js/index-3ccdda4a.js">
+  <link rel="modulepreload" crossorigin href="./js/index-444ffe79.js">
   <link rel="stylesheet" href="./css/index-c14a2cb8.css">
   <link rel="stylesheet" href="./css/index-85f95688.css">
   <link rel="stylesheet" href="./css/orchestra-8bc1a9c0.css">
@@ -70,8 +70,8 @@
   </script>
   
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
-  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-2b34d33c.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/orchestra-legacy-f7b99421.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-90771e26.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/orchestra-legacy-f9350f95.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

+ 6 - 6
dist/report-share.html

@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-9f4ec464.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-da8f0a4a.js"></script>
 
   <meta charset="UTF-8" />
   <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
@@ -25,10 +25,10 @@
       transition: opacity .3s;
     }
   </style>
-  <script type="module" crossorigin src="./js/report-share-9d6d717e.js"></script>
-  <link rel="modulepreload" crossorigin href="./js/index-4556012d.js">
+  <script type="module" crossorigin src="./js/report-share-2221852e.js"></script>
+  <link rel="modulepreload" crossorigin href="./js/index-164a03ad.js">
   <link rel="modulepreload" crossorigin href="./js/plyr.min-c8c2777b.js">
-  <link rel="modulepreload" crossorigin href="./js/index-a9fcc1b4.js">
+  <link rel="modulepreload" crossorigin href="./js/index-444ffe79.js">
   <link rel="stylesheet" href="./css/index-c14a2cb8.css">
   <link rel="stylesheet" href="./css/plyr-ad8ef5ae.css">
   <link rel="stylesheet" href="./css/report-share-0f4c3151.css">
@@ -52,8 +52,8 @@
   </script>
   
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
-  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-2b34d33c.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/report-share-legacy-c88b68a1.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-90771e26.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/report-share-legacy-6e3ccf40.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

+ 2 - 4
src/helpers/customMusicScore.ts

@@ -613,16 +613,14 @@ export const resetFormate = () => {
 					}
 				} catch (error) {}
 				const bbox = stave?.getBBox() || {};
-				const bgColor = state.isEvaluatReport ? '#132D4C' : state.isCbsView ? 'transparent' : '#609FCF';
-				const botColor = state.isEvaluatReport ? '#040D1E' : state.isCbsView ? 'transparent' : '#2B70A5';
+				const bgColor = 'transparent';
 				const rect = `<rect class="vf-custom-bg" x="${bbox.x}" y="${bbox.y}" width="${bbox.width}" height="${bbox.height}" fill=${bgColor} />`
-				const rectBottom = `<rect class="vf-custom-bot" x="${bbox.x}" y="${bbox.y+bbox.height}" width="${bbox.width}" height="7.5" fill=${botColor} />`
 				// const filterDom = `<defs>
 				// 						<filter id="shadow">
 				// 						<feDropShadow dx="5" dy="5" stdDeviation="3" flood-color="black" />
 				// 						</filter>
 				// 					</defs>`
-				const customG = `<g>${rect}${rectBottom}</g>`
+				const customG = `<g>${rect}</g>`
 				try {
 					if (list.length) {
 						for(const _el of list) {

+ 1 - 1
src/helpers/metronome.ts

@@ -192,7 +192,7 @@ class Metronome {
 			if(state.playType === "sing" && state.playSource === "background" && audioDataState.songCollection.beatBanSongEle){
 				return
 			}			
-			if(state.playType === "sing" && state.playSource === "mingSong" && audioDataState.songCollection.beatMingSongEle){
+			if(state.playSource === "mingSong" && audioDataState.songCollection.beatMingSongEle){
 				return
 			}			
 		}

+ 2 - 2
src/page-instrument/component/authorName/index.module.less

@@ -18,7 +18,7 @@
             padding: 0;
             font-weight: 600;
             font-size: 22px;
-            color: #FFFFFF;
+            color: #333333;
             .van-notice-bar__wrap{
                 justify-content: center;
             }
@@ -37,7 +37,7 @@
                 padding: 0;
                 font-weight: 400;
                 font-size: 13px;
-                color: #FFFFFF;
+                color: #333333;
                 line-height: 20px;
                 .van-notice-bar__wrap{
                     justify-content: flex-end;

+ 12 - 0
src/page-instrument/custom-plugins/guide-driver/index.less

@@ -124,6 +124,18 @@
   }
 }
 
+.popoverClass777 {
+  width: 265px;
+  height: 245px;
+  background: url("./images/practise/d777.png") no-repeat center;
+  background-size: contain;
+
+  .driver-popover-next-btn {
+    right: 25px;
+    bottom: 23px;
+  }
+}
+
 .popoverClass5 {
   width: 264px;
   height: 245px;

+ 17 - 2
src/page-instrument/custom-plugins/guide-driver/index.tsx

@@ -169,6 +169,21 @@ export const PractiseDriver = defineComponent({
       }
       options.steps?.push(
         {
+          element: ".driver-777",
+          popover: {
+            title: "",
+            description: "",
+            popoverClass: "popoverClass popoverClass777",
+            align: "start",
+            side: "top",
+            nextBtnText: `下一步 (${options.steps.length + 1}/${length})`,
+            showButtons: ["next"],
+            onPopoverRender: (popover: PopoverDOM, options: { config: Config; state: State }) => {
+              driverInitialPosition(popover, options);
+            },
+          },
+        },
+        {
           element: ".driver-4",
           popover: {
             title: "",
@@ -176,7 +191,7 @@ export const PractiseDriver = defineComponent({
             popoverClass: "popoverClass popoverClass4",
             align: "start",
             side: "top",
-            nextBtnText: `下一步 (${options.steps.length + 1}/${length})`,
+            nextBtnText: `下一步 (${options.steps.length + 2}/${length})`,
             showButtons: ["next"],
             onPopoverRender: (popover: PopoverDOM, options: { config: Config; state: State }) => {
               driverInitialPosition(popover, options);
@@ -191,7 +206,7 @@ export const PractiseDriver = defineComponent({
             popoverClass: "popoverClass popoverClass5",
             align: "start",
             side: "top",
-            nextBtnText: `下一步 (${options.steps.length + 2}/${length})`,
+            nextBtnText: `下一步 (${options.steps.length + 3}/${length})`,
             showButtons: ["next"],
             onPopoverRender: (popover: PopoverDOM, options: { config: Config; state: State }) => {
               driverInitialPosition(popover, options);

二進制
src/page-instrument/evaluat-model/countdown/imgs/step1.png


二進制
src/page-instrument/evaluat-model/countdown/imgs/step2.png


二進制
src/page-instrument/evaluat-model/countdown/imgs/step3.png


二進制
src/page-instrument/evaluat-model/icons/confirm.png


二進制
src/page-instrument/evaluat-model/icons/lanya_erji.png


二進制
src/page-instrument/evaluat-model/icons/no_erji.png


二進制
src/page-instrument/evaluat-model/icons/tip_btn.png


二進制
src/page-instrument/evaluat-model/icons/tip_erji.png


二進制
src/page-instrument/evaluat-model/icons/youxian_erji.png


二進制
src/page-instrument/follow-model/microphone/images/microBg.png


二進制
src/page-instrument/follow-model/microphone/images/micro_cancel.png


二進制
src/page-instrument/follow-model/microphone/images/micro_confirm.png


二進制
src/page-instrument/header-top/image/background.png


二進制
src/page-instrument/header-top/image/background1.png


二進制
src/page-instrument/header-top/image/background1Act.png


二進制
src/page-instrument/header-top/image/backgroundAct.png


二進制
src/page-instrument/header-top/image/bg.png


二進制
src/page-instrument/header-top/image/icon_menu.png


二進制
src/page-instrument/header-top/image/icon_menuAct.png


二進制
src/page-instrument/header-top/image/icon_pause.png


二進制
src/page-instrument/header-top/image/icon_play.png


二進制
src/page-instrument/header-top/image/icon_reset.png


二進制
src/page-instrument/header-top/image/mingsong.png


二進制
src/page-instrument/header-top/image/mingsongAct.png


二進制
src/page-instrument/header-top/image/mode.png


二進制
src/page-instrument/header-top/image/music.png


二進制
src/page-instrument/header-top/image/music1.png


二進制
src/page-instrument/header-top/image/music1Act.png


二進制
src/page-instrument/header-top/image/musicAct.png


二進制
src/page-instrument/header-top/image/perform.png


二進制
src/page-instrument/header-top/image/perform1.png


二進制
src/page-instrument/header-top/image/performAct.png


二進制
src/page-instrument/header-top/image/radio.png


二進制
src/page-instrument/header-top/image/radioActive.png


二進制
src/page-instrument/header-top/image/section0.png


二進制
src/page-instrument/header-top/image/section1.png


二進制
src/page-instrument/header-top/image/section2.png


二進制
src/page-instrument/header-top/image/shenggui.png


二進制
src/page-instrument/header-top/image/shengguiAct.png


二進制
src/page-instrument/header-top/image/sing.png


二進制
src/page-instrument/header-top/image/sing1.png


二進制
src/page-instrument/header-top/image/singAct.png


二進制
src/page-instrument/header-top/image/sj.png


二進制
src/page-instrument/header-top/image/submit.png


二進制
src/page-instrument/header-top/image/tickoff.png


二進制
src/page-instrument/header-top/image/tickoffAct.png


二進制
src/page-instrument/header-top/image/tickon.png


二進制
src/page-instrument/header-top/image/tickonAct.png


二進制
src/page-instrument/header-top/image/zt.png


+ 40 - 17
src/page-instrument/header-top/index.module.less

@@ -6,8 +6,13 @@
     flex-shrink: 0;
     margin-left: calc(-1 * var(--detailDataPaddingLeft));
     padding: 0 30px;
-    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%);
-
+    background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.7) 19%, rgba(255,255,255,0.7) 100%);
+    &.follow{
+        background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(240,250,252,0.7) 19%, rgba(255,255,255,0.7) 100%);
+    }
+    &.evaluating{
+        background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(221,248,254,0.7) 19%, rgba(225,242,251,0.7) 100%);
+    }
     &.headerTopRight {
         justify-content: flex-end;
     }
@@ -26,7 +31,7 @@
     left: 30px;
     bottom: 20px;
     border-radius: 16px;
-    background-color: rgba(12, 51, 107, 0.61);
+    background-color: rgba(0, 0, 0, 0.3);
     padding: 6px 11px;
     align-items: center;
     display: flex;
@@ -38,7 +43,7 @@
         font-weight: 500;
         font-size: 14px;
         line-height: 20px;
-        color: rgba(255, 255, 255, 0.7);
+        color: #ffffff;
     }
 
     &>img {
@@ -94,7 +99,7 @@
                 padding: 0;
                 font-weight: 600;
                 font-size: 18px;
-                color: #FFFFFF;
+                color: #333333;
             }
         }
     }
@@ -117,9 +122,11 @@
     position: fixed;
     top: 20px;
     right: 30px;
-    height: 32px;
-    background: rgba(0, 0, 0, .4);
+    height: 36px;
+    border-radius: 16px;
+    background: #FFFFFF;
     border-radius: 16px;
+    border: 3px solid #B5ECF1;
     display: flex;
     align-items: center;
     padding: 0 10px;
@@ -133,7 +140,7 @@
         margin-left: 6px;
         font-weight: 500;
         font-size: 14px;
-        color: #FFFFFF;
+        color: #1E6B98;
     }
 }
 
@@ -164,13 +171,13 @@
             margin-top: 3px;
             font-weight: 500;
             font-size: 12px;
-            color: #FFFFFF;
+            color: #333333;
             line-height: 17px;
         }
 
         &:active {
             >span {
-                color: #34D6FF
+                color: #0EA7FF
             }
 
             ;
@@ -218,7 +225,7 @@
 
         &.isSection {
             >span {
-                color: #34D6FF
+                color: #0EA7FF
             }
 
             ;
@@ -244,7 +251,7 @@
             }
 
             >span {
-                color: #34D6FF
+                color: #0EA7FF
             }
 
             ;
@@ -262,7 +269,7 @@
             }
 
             >span {
-                color: #34D6FF
+                color: #0EA7FF
             }
 
             ;
@@ -280,7 +287,23 @@
             }
 
             >span {
-                color: #34D6FF
+                color: #0EA7FF
+            }
+
+            ;
+        }      
+        &.rhythmMode:active {
+            >img {
+                content: url("./image/rhythmAct.png");
+            }
+        }  
+        &.isrhythmMode {
+            >img {
+                content: url("./image/rhythmAct.png");
+            }
+
+            >span {
+                color: #0EA7FF
             }
 
             ;
@@ -313,7 +336,7 @@
                 margin-left: 1px;
                 font-weight: 600;
                 font-size: 12px;
-                color: #673207;
+                color: #333333;
                 line-height: 16px;
             }
         }
@@ -360,8 +383,8 @@
         left: 50%;
         top: 50%;
         transform: translate(-50%, -50%);
-        width: 43px;
-        height: 43px;
+        width: 36px;
+        height: 38px;
     }
 }
 

+ 96 - 74
src/page-instrument/header-top/index.tsx

@@ -48,6 +48,10 @@ export const headTopData = reactive({
   showBack: true,
   /** 设置弹窗 */
   settingMode: false,
+  /* 节奏律动 */
+  rhythmMode: false,
+  // 节奏律动方向
+  rhythmModeDirection: computed(()=> state.fingeringInfo.direction === "transverse" ? "vertical" : "transverse"),
   /** 切换模式 */
   handleChangeModeType(value: "practise" | "follow" | "evaluating") {
     // 后台设置为不能评测
@@ -83,6 +87,8 @@ export const headTopData = reactive({
       //   state.isSingleLine = true;
       //   refreshMusicSvg();
       // }
+      // 关闭节奏律动
+      headTopData.rhythmMode = false
       smoothAnimationState.isShow.value = false; // 隐藏旋律线
       state.playIngSpeed = state.originSpeed;
       handleStartEvaluat();
@@ -91,6 +97,8 @@ export const headTopData = reactive({
       // evaluatingData.rendered = true;
       // evaluatingData.soundEffectMode = true;
     } else if (value === "follow") {
+      // 关闭节奏律动
+      headTopData.rhythmMode = false
       // 跟练模式,只有一行谱模式
       if (!state.isSingleLine) {
         state.isSingleLine = true;
@@ -159,40 +167,21 @@ function modeChangeHandleTimes(oldPlayType: "play" | "sing", oldPlaySource: IPla
   const playSource = state.playSource;
   const { notBeatFixtime, xmlMp3BeatFixTime, difftime } = state.times[0];
   const { isOpenMetronome, isSingOpenMetronome } = state;
-  // 演奏向演唱切
-  if (oldPlayType === "play" && playType === "sing") {
-    if (playSource === "mingSong") {
-      // 唱名文件也要加上弱起时间  他们制作曲子加了弱起时间  注意这修改了之后给总控平台的时值也需要改
-      state.fixtime = difftime;
-      state.times.map((item) => {
-        item.time = item.xmlNoteTime + difftime;
-        item.endtime = item.xmlNoteEndTime + difftime;
-        item.fixtime = difftime;
-      });
-      return true;
-    } else {
-      //演奏开了节拍器,演唱没开节拍器
-      if (isOpenMetronome && !isSingOpenMetronome) {
-        state.fixtime = notBeatFixtime;
-        state.times.map((item) => {
-          item.time = item.notBeatTime;
-          item.endtime = item.notBeatEndTime;
-          item.fixtime = notBeatFixtime;
-        });
-        return true;
-      } else if (!isOpenMetronome && isSingOpenMetronome) {
-        state.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
-        state.times.map((item) => {
-          item.time = item.notBeatTime + xmlMp3BeatFixTime;
-          item.endtime = item.notBeatEndTime + xmlMp3BeatFixTime;
-          item.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
-        });
-        return true;
-      }
-    }
-  } else if (oldPlayType === "sing" && playType === "play") {
-    // 演唱向演奏切
-    if (oldPlaySource === "mingSong") {
+  // 原声向伴奏和伴奏向原声不处理  范唱向伴唱和伴唱向范唱切不处理
+  if((oldPlaySource==="music"&&playSource==="background")||(oldPlaySource==="background"&&playSource==="music")){
+    return false
+  }
+  // 唱名到唱名时候不处理
+  if(oldPlaySource === "mingSong" && playSource === "mingSong"){
+    return false
+  }
+  // 原生伴奏向范唱伴唱,范唱伴唱向原生伴奏时候,isSingOpenMetronome和isOpenMetronome相等时候不处理
+  if(["music","background"].includes(oldPlaySource)&&["music","background"].includes(playSource)&&isOpenMetronome===isSingOpenMetronome){
+    return false
+  }
+  // 当切为 原生伴奏,或者范唱伴唱 时候
+  if(playSource==="music" || playSource ==="background"){
+    if(playType === "play"){
       // 有节拍器
       if (isOpenMetronome) {
         state.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
@@ -212,37 +201,7 @@ function modeChangeHandleTimes(oldPlayType: "play" | "sing", oldPlaySource: IPla
         return true;
       }
     }
-    // 演奏开了节拍器,演唱没开节拍器
-    if (isOpenMetronome && !isSingOpenMetronome) {
-      state.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
-      state.times.map((item) => {
-        item.time = item.notBeatTime + xmlMp3BeatFixTime;
-        item.endtime = item.notBeatEndTime + xmlMp3BeatFixTime;
-        item.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
-      });
-      return true;
-    } else if (!isOpenMetronome && isSingOpenMetronome) {
-      state.fixtime = notBeatFixtime;
-      state.times.map((item) => {
-        item.time = item.notBeatTime;
-        item.endtime = item.notBeatEndTime;
-        item.fixtime = notBeatFixtime;
-      });
-      return true;
-    }
-  } else if (oldPlayType === "sing" && playType === "sing") {
-    // 演唱之间切换
-    // 切到唱名时候
-    if (playSource === "mingSong") {
-      // 唱名文件也要加上弱起时间  他们制作曲子加了弱起时间  注意这修改了之后给总控平台的时值也需要改
-      state.fixtime = difftime;
-      state.times.map((item) => {
-        item.time = item.xmlNoteTime + difftime;
-        item.endtime = item.xmlNoteEndTime + difftime;
-        item.fixtime = difftime;
-      });
-      return true;
-    } else if (oldPlaySource === "mingSong") {
+    if(playType==="sing"){
       // 有节拍器
       if (isSingOpenMetronome) {
         state.fixtime = notBeatFixtime + xmlMp3BeatFixTime;
@@ -263,6 +222,17 @@ function modeChangeHandleTimes(oldPlayType: "play" | "sing", oldPlaySource: IPla
       }
     }
   }
+  // 当切为唱名时候
+  if(playSource==="mingSong"){
+      // 唱名文件也要加上弱起时间  他们制作曲子加了弱起时间  注意这修改了之后给总控平台的时值也需要改
+      state.fixtime = difftime;
+      state.times.map((item) => {
+        item.time = item.xmlNoteTime + difftime;
+        item.endtime = item.xmlNoteEndTime + difftime;
+        item.fixtime = difftime;
+      });
+      return true;
+  }
   return false;
 }
 
@@ -385,8 +355,13 @@ export default defineComponent({
           return { display: true, disabled: true };
         }
         if (state.playType === "play") {
-          // 原声, 伴奏 少一个,就不能切换
-          if (state.music && state.accompany) return { display: true, disabled: false };
+          let index = 0;
+          state.music && index++;
+          state.accompany && index++;
+          state.mingSong && index++;
+          if (index > 1) {
+            return { display: true, disabled: false };
+          }
         } else {
           // 范唱
           let index = 0;
@@ -412,6 +387,7 @@ export default defineComponent({
         let index = 0;
         state.music && index++;
         state.accompany && index++;
+        state.mingSong && index++;
         let songIndex = 0;
         state.fanSong && songIndex++;
         state.banSong && songIndex++;
@@ -468,6 +444,33 @@ export default defineComponent({
       };
     });
 
+    /** 节奏律动 */
+    const rhythmBtn = computed(() => {
+      // 跟练和评测显示
+      if (["evaluating", "follow"].includes(state.modeType)) return { display: false, disabled: false, playIng: false };
+      // 播放过程中不让切换
+      if (state.playState == "play") {
+        if(headTopData.rhythmMode) {
+          return { 
+            display: true, 
+            disabled: true,
+            playIng: true 
+          }
+        }else{
+          return { 
+            display: true, 
+            disabled: true,
+            playIng: false
+          }
+        }
+      };
+      return {
+        display: true,
+        disabled: false,
+        playIng: false
+      };
+    });
+
     /** 重播按钮 */
     resetBtn = computed(() => {
       // 没有音源不显示
@@ -709,7 +712,7 @@ export default defineComponent({
     return () => (
       <>
         <div
-          class={[styles.headerTop, state.platform === IPlatform.PC && state.musicScoreBtnDirection === "left" ? styles.headerTopRight : ""]}
+          class={[styles.headerTop, styles[state.modeType] ,state.platform === IPlatform.PC && state.musicScoreBtnDirection === "left" ? styles.headerTopRight : ""]}
           onClick={(e: Event) => {
             e.stopPropagation();
             if (state.platform === IPlatform.PC) {
@@ -778,7 +781,7 @@ export default defineComponent({
           }
 
           {/* 模式提醒 */}
-          {state.modeType === "practise" && (
+          {state.modeType === "practise" && !rhythmBtn.value.playIng && (
             <div class={[styles.modeWarn, "practiseModeWarn", state.platform === IPlatform.PC && state.musicScoreBtnDirection === "left" ? styles.modeWarnRight : ""]}>
               <img src={state.playType === "play" ? headImg("perform1.png") : headImg("sing1.png")} />
               <div>{state.playType === "play" ? "演奏场景" : "演唱场景"}</div>
@@ -830,7 +833,7 @@ export default defineComponent({
                   state.playSource = state.fanSong ? "music" : state.banSong ? "background" : "mingSong";
                 } else {
                   state.playType = "play";
-                  state.playSource = state.music ? "music" : "background";
+                  state.playSource =  state.music ? "music" : state.accompany ? "background" : "mingSong";
                 }
                 isClickMode = true;
                 // 有指法并且显示指法的时候 切换到演唱模式 需要影藏指法
@@ -868,7 +871,13 @@ export default defineComponent({
                 const oldPlayType = state.playType;
                 const oldPlaySource = state.playSource;
                 if (state.playType === "play") {
-                  state.playSource = state.playSource === "music" ? "background" : "music";
+                  if (state.playSource === "music") {
+                    state.playSource = state.accompany ? "background" : "mingSong";
+                  } else if (state.playSource === "background") {
+                    state.playSource = state.mingSong ? "mingSong" : "music";
+                  } else {
+                    state.playSource = state.music ? "music" : "background";
+                  }
                 } else {
                   if (state.playSource === "music") {
                     state.playSource = state.banSong ? "background" : "mingSong";
@@ -880,7 +889,7 @@ export default defineComponent({
                 }
                 await handlerModeChange(oldPlayType, oldPlaySource);
                 showToast({
-                  message: state.playType === "play" ? (state.playSource === "music" ? "已切换为原声" : "已切换为伴奏") : state.playSource === "music" ? "已切换为范唱" : state.playSource === "background" ? "已切换为伴唱" : "已切换为唱名",
+                  message: state.playType === "play" ? (state.playSource === "music" ? "已切换为原声" : state.playSource === "background" ? "已切换为伴奏" : "已切换为唱名") : state.playSource === "music" ? "已切换为范唱" : state.playSource === "background" ? "已切换为伴唱" : "已切换为唱名",
                   position: "top",
                   className: "selectionToast",
                 });
@@ -892,6 +901,16 @@ export default defineComponent({
               <span>{state.playSource === "music" ? (state.playType === "play" ? "原声" : "范唱") : state.playSource === "background" ? (state.playType === "play" ? "伴奏" : "伴唱") : "唱名"}</span>
             </div>
             <div
+                style={{ display: rhythmBtn.value.display ? "" : "none" }}
+                class={["driver-777", styles.btn, styles.rhythmMode, headTopData.rhythmMode && styles.isrhythmMode, rhythmBtn.value.disabled && styles.disabled]}
+                onClick={() => {
+                  headTopData.rhythmMode = !headTopData.rhythmMode
+                }}
+              >
+                <img class={styles.iconBtn} src={headImg(`rhythm.png`)} />
+                <span>律动</span>
+            </div>
+            <div
               id={state.platform === IPlatform.PC ? "teacherTop-2" : "studnetT-2"}
               style={{ display: selectBtn.value.display ? "" : "none" }}
               class={["driver-4", styles.btn, selectBtn.value.disabled && styles.disabled, styles.section, state.sectionStatus && styles.isSection]}
@@ -982,7 +1001,10 @@ export default defineComponent({
         {/* 播放按钮 */}
         <div
           id="studnetT-7"
-          style={{ display: playBtn.value.display ? "" : "none" }}
+          style={{ 
+            display: playBtn.value.display ? "" : "none" ,
+            opacity: rhythmBtn.value.playIng? "0.4" : "1"
+          }}
           class={[
             // 引导使用的类
             "driver-1",
@@ -1009,7 +1031,7 @@ export default defineComponent({
           <div class={styles.btnWrap}>
             <img style={{ display: state.playState === "play" ? "none" : "" }} class={styles.iconBtn} src={headImg("icon_play.png")} />
             <img style={{ display: state.playState === "play" ? "" : "none" }} class={styles.iconBtn} src={headImg("icon_pause.png")} />
-            <Circle style={{ opacity: state.playState === "play" ? 1 : 0 }} class={styles.progress} stroke-width={60} stroke-linecap={"square"} currentRate={state.playProgress} rate={100} color="#FFED78" layer-color="rgba(0,0,0,0)" />
+            <Circle style={{ opacity: state.playState === "play" ? 1 : 0 }} class={styles.progress} stroke-width={60} stroke-linecap={"square"} currentRate={state.playProgress} rate={100} color="#FFE36A" layer-color="rgba(255,255,255,0.5)" />
           </div>
         </div>
 

+ 16 - 5
src/page-instrument/header-top/settting/index.module.less

@@ -198,7 +198,7 @@
                 .radioBox{
                     display: flex;
                     > div{
-                        width: 66px;
+                        width: 60px;
                         height: 28px;
                         font-weight: 600;
                         font-size: 14px;
@@ -207,7 +207,7 @@
                         line-height: 26px;
                         background: url("../image/radio.png") no-repeat;
                         background-size: 100% 100%;
-                        margin-right: 10px;
+                        margin-right: 8px;
                         cursor: pointer;
                         &:last-child{
                             margin-right: 0;
@@ -219,9 +219,20 @@
                         }
                     }
                 }
-                .speBox {
-                    >div {
-                        width: 48px;
+                &.speCon{
+                    .tit{
+                        flex-shrink: 0;
+                    }
+                    .radioBox {
+                        flex-wrap: wrap;
+                        justify-content: flex-end;
+                        >div {
+                            margin: 0 0 8px 8px;
+                            width: 48px;
+                            &:nth-child(n+4){
+                                margin-bottom: 0;
+                            }
+                        }
                     }
                 }
                 .frequency{

+ 3 - 3
src/page-instrument/header-top/settting/index.tsx

@@ -26,7 +26,7 @@ export default defineComponent({
 			screenModelShow: false, // 投屏帮助
 			recommendationShow: false, // 建议
 		});
-        const zoomList = [{name:'默认',value: 0.8},{name:'1.25x',value: 1.25},{name:'1.5x',value: 1.5},{name:'1.75x',value: 1.75}] 
+        const zoomList = [{name:'0.5x',value: 0.5},{name:'0.75x',value: 0.65},{name:'1x',value: 0.8},{name:'1.25x',value: 1.25},{name:'1.5x',value: 1.5},{name:'1.75x',value: 1.75},{name:'2x',value: 2},{name:'2.25x',value: 2.25}] 
 		const parentClassName = "recommenBoxClass_drag";
 		const userId = storeData.user?.id ? String(storeData.user?.id) : "";
 		const positionInfo =
@@ -258,9 +258,9 @@ export default defineComponent({
                         }
                         {
                             !state.isCbsView ? 
-                            <div class={styles.cellBox}>
+                            <div class={[styles.cellBox, styles.speCon]}>
                                 <div class={styles.tit}>谱面大小</div>
-                                <div class={[styles.radioBox, styles.speBox]}>
+                                <div class={styles.radioBox}>
                                     {
                                         zoomList.map(item=>{
                                             return <div class={ state.zoom===item.value && styles.active } onClick={ async ()=>{ 

+ 1 - 1
src/page-instrument/simple-detail/index.tsx

@@ -201,7 +201,7 @@ export default defineComponent({
 					{!detailData.isLoading && 
 					<MusicScore 
 						onRendered={handleRendered} 
-						musicColor={'#FFFFFF'}
+						musicColor={'#000000'}
 					/>}
 				</div>
 			</div>

二進制
src/page-instrument/view-detail/images/bg2_left_zs.png


二進制
src/page-instrument/view-detail/images/bg2_right_zs.png


File diff suppressed because it is too large
+ 0 - 0
src/page-instrument/view-detail/images/index.json


+ 0 - 23
src/page-instrument/view-detail/index.module.less

@@ -51,15 +51,6 @@
         width: 100%;
         height: 100%;
         object-fit: cover; /* 保持宽高比 */
-        &.practise{
-            background-color: #213793;
-        }        
-        &.follow{
-            background-color: #114067;
-        }        
-        &.evaluating{
-            background-color: #142979;
-        }
     }
 
     .headHeight {
@@ -395,18 +386,4 @@
         font-size: 14px;
         color: #fff;
     }
-}
-
-.bg2Left {
-    width: 52px;
-    position: absolute;
-    left: 0px;
-    top: 0;
-}
-
-.bg2Right {
-    width: 52px;
-    position: absolute;
-    right: 0;
-    top: 0;
 }

Some files were not shown because too many files changed in this diff