Browse Source

Merge branch 'gym-online' of http://git.dayaedu.com/tianyong/gym-music-score into hqyDev

黄琪勇 3 months ago
parent
commit
5d868cbe0d
38 changed files with 187 additions and 133 deletions
  1. 0 0
      dist/css/instrument-1323ac03.css
  2. 5 5
      dist/instrument.html
  3. 0 0
      dist/js/index-2412b618.js
  4. 1 1
      dist/js/index-30867e06.js
  5. 0 0
      dist/js/index-3cafac81.js
  6. 0 0
      dist/js/index-400de80d.js
  7. 0 0
      dist/js/index-legacy-4944a4a2.js
  8. 1 1
      dist/js/index-legacy-93f3f88c.js
  9. 0 0
      dist/js/index-legacy-c80b06c2.js
  10. 0 0
      dist/js/index-legacy-d037e21c.js
  11. 0 0
      dist/js/instrument-78478f22.js
  12. 0 0
      dist/js/instrument-legacy-66a7e915.js
  13. 0 1
      dist/js/modeView-31f847f2.js
  14. 0 0
      dist/js/modeView-593dcee8.js
  15. 0 1
      dist/js/modeView-legacy-129fa188.js
  16. 0 0
      dist/js/modeView-legacy-2bbb69ed.js
  17. 0 0
      dist/js/polyfills-3291dfd6.js
  18. 0 0
      dist/js/polyfills-858fb2ee.js
  19. 0 0
      dist/js/polyfills-legacy-7ea27e1e.js
  20. 0 0
      dist/js/polyfills-legacy-b653339e.js
  21. BIN
      dist/png/tips-02a6a659.png
  22. 1 2
      src/page-instrument/api.ts
  23. BIN
      src/page-instrument/component/the-music-list/imgs/lock.png
  24. 35 12
      src/page-instrument/component/the-music-list/index.module.less
  25. 22 14
      src/page-instrument/component/the-music-list/list.tsx
  26. 58 32
      src/page-instrument/component/vip/index.module.less
  27. 21 19
      src/page-instrument/component/vip/index.tsx
  28. BIN
      src/page-instrument/component/vip/tips.png
  29. 1 1
      src/page-instrument/evaluat-model/index.tsx
  30. 0 0
      src/page-instrument/header-top/image/glMode.json
  31. 0 0
      src/page-instrument/header-top/image/lxMode.json
  32. 0 0
      src/page-instrument/header-top/image/pcMode.json
  33. 1 1
      src/page-instrument/header-top/index.module.less
  34. 39 39
      src/page-instrument/header-top/modeView.tsx
  35. 1 1
      src/state.ts
  36. 0 2
      src/store.ts
  37. 0 0
      stats.html
  38. 1 1
      vite.config.ts

File diff suppressed because it is too large
+ 0 - 0
dist/css/instrument-1323ac03.css


+ 5 - 5
dist/instrument.html

@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <script type="module" crossorigin src="./js/polyfills-3291dfd6.js"></script>
+  <script type="module" crossorigin src="./js/polyfills-858fb2ee.js"></script>
 
   <meta charset="UTF-8" />
   <meta name="viewport"
@@ -41,8 +41,8 @@
       })
     }
   </script>
-  <script type="module" crossorigin src="./js/instrument-e10b8181.js"></script>
-  <link rel="stylesheet" href="./css/instrument-b327992e.css">
+  <script type="module" crossorigin src="./js/instrument-78478f22.js"></script>
+  <link rel="stylesheet" href="./css/instrument-1323ac03.css">
   <script type="module">import.meta.url;import("_").catch(()=>1);async function* g(){};window.__vite_is_modern_browser=true;</script>
   <script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
 </head>
@@ -65,8 +65,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-b653339e.js"></script>
-  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/instrument-legacy-b493ffbb.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule crossorigin id="vite-legacy-polyfill" src="./js/polyfills-legacy-7ea27e1e.js"></script>
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./js/instrument-legacy-66a7e915.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/index-2412b618.js


+ 1 - 1
dist/js/index-98612534.js → dist/js/index-30867e06.js

@@ -1 +1 @@
-import{d as i,g as l,r as d,E as e,o as r,s as c,b as s,M as u}from"./instrument-e10b8181.js";const f="_skeleton_vtlsh_1",m="_detail_vtlsh_12",p="_container_vtlsh_20",a={skeleton:f,detail:m,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:""}]});r(()=>{window.appName="colexiu",c.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,r as d,E as e,o as r,s as c,b as s,M as u}from"./instrument-78478f22.js";const f="_skeleton_vtlsh_1",m="_detail_vtlsh_12",p="_container_vtlsh_20",a={skeleton:f,detail:m,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:""}]});r(()=>{window.appName="colexiu",c.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-3cafac81.js


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


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


+ 1 - 1
dist/js/index-legacy-5816d614.js → dist/js/index-legacy-93f3f88c.js

@@ -1 +1 @@
-System.register(["./instrument-legacy-b493ffbb.js"],(function(e,t){"use strict";var i,n,a,o,r,s,l,d,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.r,o=e.E,r=e.o,s=e.s,l=e.b,d=e.M}],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()=>l("div",{class:t},[l("div",{id:"scrollContainer",class:[c,"hideCursor"]},[!i.isLoading&&l(d,{onRendered:h},null)])])}}))}}}));
+System.register(["./instrument-legacy-66a7e915.js"],(function(e,t){"use strict";var i,n,a,o,r,s,l,d,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.r,o=e.E,r=e.o,s=e.s,l=e.b,d=e.M}],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()=>l("div",{class:t},[l("div",{id:"scrollContainer",class:[c,"hideCursor"]},[!i.isLoading&&l(d,{onRendered:h},null)])])}}))}}}));

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


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


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


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


+ 0 - 1
dist/js/modeView-31f847f2.js

@@ -1 +0,0 @@
-import{d as c,K as r,a1 as i,q as m,b as o,a2 as u,a3 as a,s as e,a4 as t,a5 as s,a6 as g,a7 as h,a8 as p}from"./instrument-e10b8181.js";const v=c({name:"modeView",setup(){var l;r(()=>i.socketErrorStatus,()=>{i.socketErrorStatus===2&&setTimeout(()=>{i.socketErrorPop=!1},1e3)});const n=m(),d=((l=navigator==null?void 0:navigator.userAgent)==null?void 0:l.includes("UAWEIVRD-W09"))||(n==null?void 0:n.iPad)||n.isTablet;return()=>o("div",{class:[a.modeView,d&&a.isiPad,s.modeType!=="init"&&a.hidden]},[o("img",{src:u,class:a.back,onClick:()=>{e.isSingleLine&&(t.isShow.value=e.melodyLine),s.oldModeType!=="practise"&&(i.needCheckErjiStatus=!1,s.handleChangeModeType(s.oldModeType)),s.modeType="show"}},null),o("div",{class:[a.modeBox,(!e.isPercussion&&!e.enableEvaluation||e.isPercussion&&e.enableEvaluation||e.isPercussion&&!e.enableEvaluation)&&a.twoModeBox]},[o("img",{class:a.modeImg,src:g,onClick:()=>{e.isSingleLine&&(t.isShow.value=e.melodyLine),s.handleChangeModeType("practise")}},null),!e.isPercussion&&o("img",{class:a.modeImg,src:h,onClick:()=>s.handleChangeModeType("follow")},null),e.enableEvaluation&&o("img",{class:a.modeImg,src:p,onClick:()=>{i.needCheckErjiStatus=!0,s.handleChangeModeType("evaluating")}},null)])])}});export{v as default};

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


+ 0 - 1
dist/js/modeView-legacy-129fa188.js

@@ -1 +0,0 @@
-System.register(["./instrument-legacy-b493ffbb.js"],(function(e,i){"use strict";var s,a,n,o,l,t,d,r,u,c,m,g,v;return{setters:[e=>{s=e.d,a=e.K,n=e.a1,o=e.q,l=e.b,t=e.a2,d=e.a3,r=e.s,u=e.a4,c=e.a5,m=e.a6,g=e.a7,v=e.a8}],execute:function(){e("default",s({name:"modeView",setup(){var e,i;a((()=>n.socketErrorStatus),(()=>{2===n.socketErrorStatus&&setTimeout((()=>{n.socketErrorPop=!1}),1e3)}));const s=o(),h=(null===(e=navigator)||void 0===e||null===(i=e.userAgent)||void 0===i?void 0:i.includes("UAWEIVRD-W09"))||(null==s?void 0:s.iPad)||s.isTablet;return()=>l("div",{class:[d.modeView,h&&d.isiPad,"init"!==c.modeType&&d.hidden]},[l("img",{src:t,class:d.back,onClick:()=>{r.isSingleLine&&(u.isShow.value=r.melodyLine),"practise"!==c.oldModeType&&(n.needCheckErjiStatus=!1,c.handleChangeModeType(c.oldModeType)),c.modeType="show"}},null),l("div",{class:[d.modeBox,(!r.isPercussion&&!r.enableEvaluation||r.isPercussion&&r.enableEvaluation||r.isPercussion&&!r.enableEvaluation)&&d.twoModeBox]},[l("img",{class:d.modeImg,src:m,onClick:()=>{r.isSingleLine&&(u.isShow.value=r.melodyLine),c.handleChangeModeType("practise")}},null),!r.isPercussion&&l("img",{class:d.modeImg,src:g,onClick:()=>c.handleChangeModeType("follow")},null),r.enableEvaluation&&l("img",{class:d.modeImg,src:v,onClick:()=>{n.needCheckErjiStatus=!0,c.handleChangeModeType("evaluating")}},null)])])}}))}}}));

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


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


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


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


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


BIN
dist/png/tips-02a6a659.png


+ 1 - 2
src/page-instrument/api.ts

@@ -48,8 +48,7 @@ export const studentQueryUserInfo = async () => {
         phone:data.phone,
         clientType:"STUDENT",
         id:data.id,
-        gender:"",
-        membershipEndTime: data.membershipEndTime
+        gender:""
       }
       return res
     }

BIN
src/page-instrument/component/the-music-list/imgs/lock.png


+ 35 - 12
src/page-instrument/component/the-music-list/index.module.less

@@ -147,17 +147,22 @@
         overflow: hidden;
         position: relative;
         flex-shrink: 0;
-        .iconType {
+        .lock{
             position: absolute;
-            width: 28px;
-            height: 14px;
-            right: 0;
-            top: 0;
-            z-index: 9;
-            border-top-right-radius: 8px !important;
-            &.VIP {
-                background: url('./imgs/icon-music-vip.png') no-repeat center;
-                background-size: contain;
+            width: 100%;
+            height: 100%;
+            background-color: rgba(0,0,0,.3);
+            z-index: 1;
+            &::after{
+                content: "";
+                position: absolute;
+                top: 50%;
+                left: 50%;
+                transform: translate(-50%, -50%);
+                width: 13px;
+                height: 15px;
+                background: url("./imgs/lock.png") no-repeat;
+                background-size: 100% 100%;
             }
         }
     }
@@ -177,7 +182,6 @@
             display: flex;
             align-items: center;
             margin-top: 6px;
-            height: 14px;
             .usedNum{
                 display: flex;
                 align-items: center;
@@ -199,15 +203,34 @@
                 }
             }
             .author {
+                margin-left: 5px;
                 font-weight: 400;
                 font-size: 13px;
                 color: rgba(0,0,0,0.5);
-                line-height: 1;
+                line-height: 14px;
                 flex-grow: 1;
                 white-space: nowrap;
                 overflow: hidden;
                 text-overflow: ellipsis;
             }
+            .freeIcon{
+                padding: 0px 3px;
+                border-radius: 3px;
+                font-weight: 400;
+                font-size: 10px;
+                color: #01C1B5;
+                line-height: 14px;
+                border: 1px solid rgba(1,193,181,0.7);
+            }
+            .lockIcon{
+                padding: 0px 3px;
+                border-radius: 3px;
+                font-weight: 400;
+                font-size: 10px;
+                color: #D08C24;
+                line-height: 14px;
+                border: 1px solid rgba(208,140,36,0.7);
+            }
         }
     }
 }

+ 22 - 14
src/page-instrument/component/the-music-list/list.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, onMounted, reactive, watch } from "vue";
+import { computed, defineComponent, onMounted, reactive, watch } from "vue";
 import styles from "./index.module.less";
 import { api_musicSheetPage } from "../../api";
 import state, { togglePlay } from "/src/state";
@@ -9,7 +9,7 @@ import searImg from "./imgs/searImg.png"
 import huoimg from "./imgs/huo.png"
 import emptyImg from "./imgs/empty.png"
 import { getQuery } from "/src/utils/queryString";
-import { vipData, isVip } from "../vip"
+import { vipData } from "../vip"
 
 export default defineComponent({
   name: "TheMusicList-list",
@@ -75,13 +75,8 @@ export default defineComponent({
     });
 
     const openAccomapina = (item: any) => {
-      // 学生端 没有开会员查看会员曲目
-      if(item.paymentType === "VIP" && state.systemType === "student" && !isVip.value){
-        vipData.show = true
-        return
-      }
-      // 学校查看会员曲目
-      if(item.paymentType === "VIP" && state.systemType === "web" && state.isSchool){
+      // 学生端 没有开会员查看会员曲目    // 学校查看会员曲目
+      if(item.useStatus === "LOCK" && vipVerify.value){
         vipData.show = true
         return
       }
@@ -111,6 +106,9 @@ export default defineComponent({
           ? (num / 10000).toFixed(1).replace(/\.0$/, '') + "万" 
           : num.toString();
     }
+    const vipVerify = computed(() => {
+      return state.systemType === "student" || (state.systemType === "web" && state.isSchool)
+    })
     return () => (
       <div class={styles.wrap}>
         <div class={[styles.searchBox,data.isFocus && styles.isFocus]}>
@@ -131,16 +129,26 @@ export default defineComponent({
             return (
               <div class={[styles.item, state.examSongId == item.id && styles.itemActive]} onClick={() => openAccomapina(item)}>
                 <div class={styles.titleImg}>
-                  <i class={[styles.iconType, styles[item.paymentType]]}></i>
+                  {
+                    item.useStatus==='LOCK'&&vipVerify.value && <div class={styles.lock}></div>
+                  }
                   <Image src={item.titleImg} class={styles.img} />
                 </div>
                 <div class={styles.content}>
-                  <p class={styles.name}>{item.musicSheetName}</p>
-                  {
-                    item.composer &&                   
+                  <div class={styles.name}>{item.musicSheetName}</div>
+                  {          
+                    ((["FREE","LOCK"].includes(item.useStatus)&&vipVerify.value) || item.composer) &&
                     <div class={styles.detail}>
                       {/* {item.usedNum && <div class={styles.usedNum}><img src={huoimg}/><div>{formatNumber(item.usedNum)}</div></div>} */}
-                      <p class={styles.author}>{item.composer}</p>
+                      {
+                        item.useStatus==='FREE'&&vipVerify.value && <div class={[styles.freeIcon]}>试用</div>
+                      }
+                      {
+                        item.useStatus==='LOCK'&&vipVerify.value && <div class={[styles.lockIcon]}>未解锁</div>
+                      }
+                      {
+                        item.composer && <div class={styles.author}>{item.composer}</div>
+                      }
                     </div>
                   }
                 </div>

+ 58 - 32
src/page-instrument/component/vip/index.module.less

@@ -1,33 +1,59 @@
-.vip{
-  padding: 20px 30px;
-  padding-top: 30px;
-  min-width: 230px;
-  >img{
-    width: 161px;
-    margin: 0 auto 20px;
-    display: block;
-  }
-  >p{
-    margin: 0;
-    font-size: 14px;
-    color: #808080;
-    margin: 0 auto 20px;
-    text-align: center;
-  }
-  .btn{
-    font-size: 16px;
-    height: 40px;
-    line-height: 40px;
-    width: 100%;
-  }
-  &+i{
-    right: 10px;
-    top: 10px;
-  }
+.vipPopup {
+   /* 引导页出来不能点击的问题 */
+   pointer-events: initial !important;
+   & * {
+      pointer-events: initial !important;
+   }
+   :global {
+      .van-popup__close-icon {
+         color: #333333;
+         top: 23px;
+         right: 23px;
+         font-size: 20px;
+      }
+   }
+   .vip {
+      padding-bottom: 20px;
+      width: 295px;
+      .title {
+         height: 49px;
+         background: linear-gradient(to bottom, #defaff, #ffffff);
+         padding-bottom: 4px;
+         display: flex;
+         justify-content: center;
+         align-items: flex-end;
+         .tit {
+            font-weight: 500;
+            font-size: 18px;
+            color: #1a1a1a;
+            line-height: 25px;
+         }
+      }
+      .text {
+         margin-top: 16px;
+         padding: 0 20px;
+         font-weight: 400;
+         font-size: 16px;
+         color: #666666;
+         line-height: 26px;
+         text-align: center;
+      }
+      .btnCon {
+         margin-top: 25px;
+         display: flex;
+         justify-content: center;
+         :global {
+            .van-button {
+               width: 120px;
+               height: 40px;
+               border-radius: 20px;
+               font-weight: 500;
+               font-size: 16px;
+               & + .van-button {
+                  margin-left: 15px;
+               }
+            }
+         }
+      }
+   }
 }
-.vipPopup{
-  pointer-events: initial !important;
-  & *{
-    pointer-events: initial !important;
-  }
-}

+ 21 - 19
src/page-instrument/component/vip/index.tsx

@@ -7,31 +7,25 @@ import dayjs from "dayjs"
 import { storeData } from "/src/store"
 import { postMessage } from "/src/utils/native-message"
 import { usePageVisibility } from "@vant/use"
-import { studentQueryUserInfo } from "/src/page-instrument/api"
+import { getMusicSheetDetail } from "/src/utils/baseApi"
 import { api_back } from "/src/helpers/communication"
 
 export const vipData = reactive({
    show: false
 })
 
-export const isVip = computed(() => {
-   return dayjs().isBefore(dayjs(storeData.user?.membershipEndTime))
-})
-
 export default defineComponent({
    name: "vip-popup",
    setup() {
       const getContent = computed(() => {
-         if (state.isHomeWork) {
-            return "您还不是团练宝会员,请开通服务后使用该功能"
-         } else if (state.isSchool) {
+         if (state.isSchool) {
             return "VIP曲目暂不可用"
          } else {
-            return "您尚未开通云练习服务,请联系乐团老师开通"
+            return "该曲目暂未解锁,解锁更多曲目,享受全新学习体验"
          }
       })
       onMounted(() => {
-         if (state.isHomeWork && !isVip.value && state.paymentType === "VIP") {
+         if (state.isHomeWork && state.paymentType === "LOCK") {
             vipData.show = true
          }
       })
@@ -71,11 +65,12 @@ export default defineComponent({
       const pageVisibility = usePageVisibility()
       watch(pageVisibility, value => {
          if (state.isHomeWork && value === "visible") {
-            if (!isVip.value) {
-               studentQueryUserInfo().then(res => {
+            if (state.paymentType === "LOCK") {
+               getMusicSheetDetail(state.examSongId).then(res => {
                   if (res.code === 200) {
-                     storeData.user.membershipEndTime = res?.data?.membershipEndTime
-                     if (isVip.value) {
+                     state.paymentType = res?.data?.useStatus
+                     // 当没有锁定的时候 去掉弹窗
+                     if(state.paymentType !== "LOCK"){
                         vipData.show = false
                      }
                   }
@@ -97,11 +92,18 @@ export default defineComponent({
                round
             >
                <div class={styles.vip}>
-                  <img src={TipsIcon} />
-                  <p>{getContent.value}</p>
-                  <Button class={styles.btn} round color="#01C1B5" onClick={hanldeOpen}>
-                     {state.isHomeWork ? "开通" : " 确定"}
-                  </Button>
+                  <div class={styles.title}>
+                     <div class={styles.tit}>温馨提示</div>
+                  </div>
+                  <div class={styles.text}>{getContent.value}</div>
+                  <div class={styles.btnCon}>
+                     <Button class={styles.btn} round onClick={handleClose}>
+                        取消
+                     </Button>
+                     <Button class={styles.btn} round color="#01C1B5" onClick={hanldeOpen}>
+                        {state.isHomeWork ? "去开通" : " 确定"}
+                     </Button>
+                  </div>
                </div>
             </Popup>
          </>

BIN
src/page-instrument/component/vip/tips.png


+ 1 - 1
src/page-instrument/evaluat-model/index.tsx

@@ -522,7 +522,7 @@ export default defineComponent({
       // 如果打开了延迟检测开关,需要先发送开始检测的消息
       const delayData = await api_getDeviceDelay();
       console.log('设备的延迟值',delayData.content?.value)
-      if (delayData && delayData.content?.value <= 0) {
+      if (delayData && delayData.content?.value <= 0 && state.paymentType !== "LOCK") {
         await api_startDelayCheck({});
       } else {
         evaluatingData.checkEnd = true;

File diff suppressed because it is too large
+ 0 - 0
src/page-instrument/header-top/image/glMode.json


File diff suppressed because it is too large
+ 0 - 0
src/page-instrument/header-top/image/lxMode.json


File diff suppressed because it is too large
+ 0 - 0
src/page-instrument/header-top/image/pcMode.json


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

@@ -420,7 +420,7 @@
         width: 100%;
         display: flex;
         justify-content: space-between;
-        padding: 0 100px;
+        padding: 0 80px;
         position: relative;
         top: 50%;
         transform: translateY(-50%);

+ 39 - 39
src/page-instrument/header-top/modeView.tsx

@@ -24,27 +24,27 @@ import { browser } from "/src/utils";
 export default defineComponent({
   name: "modeView",
   setup() {
-    // const modeImgDom1 = ref();
-    // const modeImgDom2 = ref();
-    // const modeImgDom3 = ref();
-    // watch(
-    //   () => headTopData.modeType,
-    //   (value, oldValue) => {
-    //     // headTopData.modeType 值 刚开始是 ""  所以 第一次切换时候不触发播放动画
-    //     if (!oldValue) return;
-    //     nextTick(() => {
-    //       if (value === "show") {
-    //         modeImgDom1.value?.pause();
-    //         modeImgDom2.value?.pause();
-    //         modeImgDom3.value?.pause();
-    //       } else if (value === "init") {
-    //         modeImgDom1.value?.play();
-    //         modeImgDom2.value?.play();
-    //         modeImgDom3.value?.play();
-    //       }
-    //     });
-    //   }
-    // );
+    const modeImgDom1 = ref();
+    const modeImgDom2 = ref();
+    const modeImgDom3 = ref();
+    watch(
+      () => headTopData.modeType,
+      (value, oldValue) => {
+        // headTopData.modeType 值 刚开始是 ""  所以 第一次切换时候不触发播放动画
+        if (!oldValue) return;
+        nextTick(() => {
+          if (value === "show") {
+            modeImgDom1.value?.pause();
+            modeImgDom2.value?.pause();
+            modeImgDom3.value?.pause();
+          } else if (value === "init") {
+            modeImgDom1.value?.play();
+            modeImgDom2.value?.play();
+            modeImgDom3.value?.play();
+          }
+        });
+      }
+    );
     watch(
       () => evaluatingData.socketErrorStatus,
       () => {
@@ -76,36 +76,36 @@ export default defineComponent({
           }}
         />
         <div class={[styles.modeBox, ((!state.isPercussion && !state.enableEvaluation) || (state.isPercussion && state.enableEvaluation) || (state.isPercussion && !state.enableEvaluation)) && styles.twoModeBox]}>
-          {/* <Vue3Lottie ref={modeImgDom1} class={styles.modeImg} animationData={lxMode} autoPlay={false} loop={true} onClick={() => {
+          <Vue3Lottie ref={modeImgDom1} class={styles.modeImg} animationData={lxMode} autoPlay={false} loop={true} onClick={() => {
             if(state.isSingleLine){
               smoothAnimationState.isShow.value = state.melodyLine;
             }
             headTopData.handleChangeModeType("practise")
-            }}></Vue3Lottie> */}
-          <img class={styles.modeImg} src={lxImg} 
+            }}></Vue3Lottie>
+          {/* <img class={styles.modeImg} src={lxImg} 
             onClick={() => {
               if(state.isSingleLine){
                 smoothAnimationState.isShow.value = state.melodyLine;
               }
               headTopData.handleChangeModeType("practise")
-            }} />
+            }} /> */}
           {!state.isPercussion && 
-              // <Vue3Lottie ref={modeImgDom2} class={styles.modeImg} animationData={glMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("follow")}></Vue3Lottie>
-              <img class={styles.modeImg} src={glImg} 
-                onClick={() => headTopData.handleChangeModeType("follow")} />
+              <Vue3Lottie ref={modeImgDom2} class={styles.modeImg} animationData={glMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("follow")}></Vue3Lottie>
+              /* <img class={styles.modeImg} src={glImg} 
+                onClick={() => headTopData.handleChangeModeType("follow")} /> */
           }
           {state.enableEvaluation && 
-            // <Vue3Lottie ref={modeImgDom3} class={styles.modeImg} animationData={pcMode} autoPlay={false} loop={true} onClick={() => {
-            //   // 点击评测模式进入评测模块的需要检测耳机状态,通过返回按钮进入评测模块的,不检测耳机状态
-            //   evaluatingData.needCheckErjiStatus = true;
-            //   headTopData.handleChangeModeType("evaluating")
-            // }}></Vue3Lottie>
-            <img class={styles.modeImg} src={pcImg} 
-              onClick={() => {
-                  // 点击评测模式进入评测模块的需要检测耳机状态,通过返回按钮进入评测模块的,不检测耳机状态
-                  evaluatingData.needCheckErjiStatus = true;
-                  headTopData.handleChangeModeType("evaluating")
-                }} />
+            <Vue3Lottie ref={modeImgDom3} class={styles.modeImg} animationData={pcMode} autoPlay={false} loop={true} onClick={() => {
+               // 点击评测模式进入评测模块的需要检测耳机状态,通过返回按钮进入评测模块的,不检测耳机状态
+              evaluatingData.needCheckErjiStatus = true;
+              headTopData.handleChangeModeType("evaluating")
+            }}></Vue3Lottie>
+            // <img class={styles.modeImg} src={pcImg} 
+            //   onClick={() => {
+            //       // 点击评测模式进入评测模块的需要检测耳机状态,通过返回按钮进入评测模块的,不检测耳机状态
+            //       evaluatingData.needCheckErjiStatus = true;
+            //       headTopData.handleChangeModeType("evaluating")
+            //     }} />
           }
         </div>
         {/** 延迟检测中途,socket出错,网络提示弹窗 */}

+ 1 - 1
src/state.ts

@@ -1728,7 +1728,7 @@ const setState = (data: any, index: number) => {
   state.appName = "COLEXIU";
   state.detailId = data.bizId;
   state.xmlUrl = data.xmlFileUrl;
-  state.paymentType = data.paymentType
+  state.paymentType = data.useStatus
   state.partIndex = index >= 0 ? index : 0;
   state.trackId = data.track;
   state.subjectId = data.subjectIds ? data.subjectIds.split(',')?.[0] : 0;

+ 0 - 2
src/store.ts

@@ -5,8 +5,6 @@ type IUser = {
   nickname?: string;
   /** 真实姓名 */
   realName?: string;
-  /** 会员结束时间 */
-  membershipEndTime?: string;
   tenantId?: number;
   /** 声部名称 */
   subjectId?: any;

File diff suppressed because it is too large
+ 0 - 0
stats.html


+ 1 - 1
vite.config.ts

@@ -52,7 +52,7 @@ export default defineConfig({
     // https: true,
     proxy: {
       "^/instrument/.*": {
-        target: "https://test.gym.lexiaoya.cn",
+        target: "https://dev.gym.lexiaoya.cn",
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/instrument/, ""),
       },

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