瀏覽代碼

更新打包

lex-xin 2 年之前
父節點
當前提交
6dfd090107
共有 67 個文件被更改,包括 355 次插入117 次删除
  1. 二進制
      dist/assets/btn.1f5c7ceb.png
  2. 0 0
      dist/assets/create-legacy.ba76af6e.js
  3. 0 0
      dist/assets/create.ae990ec4.js
  4. 0 0
      dist/assets/create.c3146383.js
  5. 二進制
      dist/assets/header.bf0132d0.png
  6. 0 0
      dist/assets/index-legacy.0432fa42.js
  7. 0 0
      dist/assets/index-legacy.0e6fda9c.js
  8. 0 0
      dist/assets/index-legacy.19861116.js
  9. 0 0
      dist/assets/index-legacy.5420c195.js
  10. 0 0
      dist/assets/index-legacy.a59bc829.js
  11. 0 0
      dist/assets/index-legacy.b66c43ba.js
  12. 0 0
      dist/assets/index-legacy.b9e2018f.js
  13. 0 0
      dist/assets/index-legacy.da12681c.js
  14. 1 1
      dist/assets/index-legacy.ef782945.js
  15. 0 0
      dist/assets/index.0c06dd85.js
  16. 1 1
      dist/assets/index.1567620f.js
  17. 1 1
      dist/assets/index.2114a9ad.js
  18. 0 0
      dist/assets/index.40912735.js
  19. 0 0
      dist/assets/index.41e9ceba.js
  20. 0 0
      dist/assets/index.515d5dc3.js
  21. 1 1
      dist/assets/index.56bb8b85.js
  22. 0 0
      dist/assets/index.7de7a51d.js
  23. 0 1
      dist/assets/index.80edcd4a.css
  24. 1 1
      dist/assets/index.85a0c0a7.css
  25. 0 0
      dist/assets/index.afbc962b.css
  26. 0 0
      dist/assets/index.dafaa0c5.js
  27. 0 0
      dist/assets/index.e641a55c.js
  28. 0 0
      dist/assets/login-legacy.5bfb4585.js
  29. 0 0
      dist/assets/login.12776c4f.js
  30. 0 0
      dist/assets/login.f766800f.js
  31. 二進制
      dist/assets/logo1.e835c74e.png
  32. 二進制
      dist/assets/logo2.f1e4bc93.png
  33. 0 0
      dist/assets/main-legacy.d9d97c24.js
  34. 0 0
      dist/assets/main.18b85950.js
  35. 0 0
      dist/assets/switch-legacy.66c8e64a.js
  36. 0 0
      dist/assets/switch-legacy.a1d1c7e8.js
  37. 1 0
      dist/assets/switch.67733992.js
  38. 1 0
      dist/assets/switch.7ac36fff.css
  39. 0 1
      dist/assets/switch.e01226b4.js
  40. 1 1
      dist/assets/teacher-legacy.e9418bc8.js
  41. 1 1
      dist/assets/teacher.210817ff.js
  42. 二進制
      dist/assets/tip.f35c7fd0.png
  43. 0 0
      dist/assets/video-detail-legacy.ab8cf018.js
  44. 0 0
      dist/assets/video-detail-legacy.e888b81a.js
  45. 0 0
      dist/assets/video-detail.19998132.js
  46. 0 0
      dist/assets/video-detail.3424be43.js
  47. 4 4
      dist/index.html
  48. 4 4
      dist/teacher.html
  49. 4 4
      src/business-components/subject-list/index.tsx
  50. 2 1
      src/business-components/user-detail/index.tsx
  51. 1 2
      src/teacher/layout/login.tsx
  52. 二進制
      src/teacher/music-cert/images/1.png
  53. 二進制
      src/teacher/music-cert/images/2.png
  54. 二進制
      src/teacher/music-cert/images/btn.png
  55. 二進制
      src/teacher/music-cert/images/header.png
  56. 二進制
      src/teacher/music-cert/images/logo1.png
  57. 二進制
      src/teacher/music-cert/images/logo2.png
  58. 二進制
      src/teacher/music-cert/images/tip.png
  59. 115 19
      src/teacher/music-cert/index.module.less
  60. 72 31
      src/teacher/music-cert/index.tsx
  61. 3 0
      src/teacher/teacher-cert/cert-info.tsx
  62. 30 5
      src/teacher/teacher-cert/cert-one.tsx
  63. 20 11
      src/teacher/teacher-cert/index.tsx
  64. 1 3
      src/teacher/video-class/class-info.tsx
  65. 0 0
      src/teacher/video-class/video-class-detail.module.less
  66. 17 0
      src/teacher/video-class/video-class-detail.tsx
  67. 73 24
      src/teacher/video-class/video-detail.tsx

二進制
dist/assets/btn.1f5c7ceb.png


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/create-legacy.ba76af6e.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/create.ae990ec4.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/create.c3146383.js


二進制
dist/assets/header.bf0132d0.png


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.0432fa42.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.0e6fda9c.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.19861116.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.5420c195.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.a59bc829.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.b66c43ba.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.b9e2018f.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-legacy.da12681c.js


+ 1 - 1
dist/assets/teacher-legacy.97c5d2e8.js → dist/assets/index-legacy.ef782945.js

@@ -1 +1 @@
-;(function(){System.register(['./main-legacy.fcb2b50d.js','./vendor-legacy.7b5913a8.js'],function(){'use strict';return{setters:[function(){},function(){}],execute:function execute(){}};});})();
+;(function(){System.register(['./main-legacy.d9d97c24.js','./vendor-legacy.7b5913a8.js'],function(){'use strict';return{setters:[function(){},function(){}],execute:function execute(){}};});})();

文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.0c06dd85.js


+ 1 - 1
dist/assets/index.45e6b720.js → dist/assets/index.1567620f.js

@@ -1 +1 @@
-import"./main.a06ffd59.js";import"./vendor.14dbc21a.js";function t(){import("data:text/javascript,")}export{t as __vite_legacy_guard};
+import"./main.18b85950.js";import"./vendor.14dbc21a.js";function t(){import("data:text/javascript,")}export{t as __vite_legacy_guard};

+ 1 - 1
dist/assets/index.2dcf7ba9.js → dist/assets/index.2114a9ad.js

@@ -1 +1 @@
-import{d as e,b as t,E as n,B as o}from"./vendor.14dbc21a.js";import{p as a}from"./main.a06ffd59.js";const i="_tips_1vaw2_6",l="_btn_1vaw2_11";var s={"col-result":"_col-result_1vaw2_1",tips:i,btn:l},r="./assets/icon_nodata.86415233.png";var c=e({name:"col-result",props:{tips:{type:String},img:{type:String,default:r},btnStatus:{type:Boolean,default:!0},buttonText:{type:String,default:"\u6211\u77E5\u9053\u4E86"},onClick:Function},methods:{onResult(){this.onClick?this.onClick():a({api:"back",content:{}})}},render(){return t("div",{class:s["col-result"]},[t(n,{description:this.tips},null),this.btnStatus?t(o,{class:s.btn,round:!0,block:!0,type:"primary",onClick:this.onResult},{default:()=>[this.buttonText]}):null])}});export{c as C};
+import{d as e,b as t,E as n,B as o}from"./vendor.14dbc21a.js";import{p as a}from"./main.18b85950.js";const i="_tips_1vaw2_6",l="_btn_1vaw2_11";var s={"col-result":"_col-result_1vaw2_1",tips:i,btn:l},r="./assets/icon_nodata.86415233.png";var c=e({name:"col-result",props:{tips:{type:String},img:{type:String,default:r},btnStatus:{type:Boolean,default:!0},buttonText:{type:String,default:"\u6211\u77E5\u9053\u4E86"},onClick:Function},methods:{onResult(){this.onClick?this.onClick():a({api:"back",content:{}})}},render(){return t("div",{class:s["col-result"]},[t(n,{description:this.tips},null),this.btnStatus?t(o,{class:s.btn,round:!0,block:!0,type:"primary",onClick:this.onResult},{default:()=>[this.buttonText]}):null])}});export{c as C};

文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.40912735.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.41e9ceba.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.515d5dc3.js


+ 1 - 1
dist/assets/index.2f981c28.js → dist/assets/index.56bb8b85.js

@@ -1 +1 @@
-import{p as a}from"./main.a06ffd59.js";import{d as g,b as i,F as r,Q as d}from"./vendor.14dbc21a.js";const c="_colHeader_15tp7_1",u="_green_15tp7_1",p="_headerSection_15tp7_11";var s={colHeader:c,green:u,headerSection:p},v=g({name:"col-header",props:{title:String,isBack:{type:Boolean,default:!1},isFixed:{type:Boolean,default:!0},styleName:{type:Object,default:()=>({})},titleClass:String,background:{type:String,default:"white"},rightText:String,onClickRight:{type:Function,default:()=>{}}},data(){return{headerTitle:null,navBarHeight:0,titleHeight:44}},mounted(){this.headerTitle=this.title||this.$route.meta.title,this.navBarInit()},unmounted(){a({api:"setBarStatus",content:{status:1}})},methods:{navBarInit(){a({api:"setBarStatus",content:{status:0}});let n=sessionStorage.getItem("navHeight"),o=sessionStorage.getItem("titleHeight");n&&o?this.navBarHeight=Number(n):a({api:"getNavHeight"},h=>{const{content:t}=h,l=t.dpi||2;if(t.navHeight){const e=t.navHeight/l;sessionStorage.setItem("navHeight",String(e)),this.navBarHeight=e}if(t.titleHeight){const e=t.titleHeight/l;sessionStorage.setItem("titleHeight",String(e)),this.titleHeight=e}})},onClickLeft(){this.$router.back()},clickRight(){this.onClickRight&&this.onClickRight()}},render(){return i(r,null,[this.$slots.content?i("div",{style:{paddingTop:`${this.navBarHeight}px`},class:s.headerSection},[this.$slots.content()]):i(r,null,[i("div",{style:{paddingTop:`${this.navBarHeight}px`},class:s.headerSection},[i(d,{title:this.headerTitle,class:[this.background==="green"?s.green:null,s.colHeader],"left-arrow":this.isBack,rightText:this.rightText,fixed:this.isFixed,"onClick-right":this.clickRight,"onClick-left":this.onClickLeft},null)]),this.$slots.default?this.$slots.default():null])])}});export{v as C};
+import{p as a}from"./main.18b85950.js";import{d as g,b as i,F as r,Q as c}from"./vendor.14dbc21a.js";const d="_colHeader_15tp7_1",u="_green_15tp7_1",p="_headerSection_15tp7_11";var s={colHeader:d,green:u,headerSection:p},f=g({name:"col-header",props:{title:String,isBack:{type:Boolean,default:!1},isFixed:{type:Boolean,default:!0},styleName:{type:Object,default:()=>({})},titleClass:String,background:{type:String,default:"white"},rightText:String,onClickRight:{type:Function,default:()=>{}}},data(){return{headerTitle:null,navBarHeight:0,titleHeight:44}},mounted(){this.headerTitle=this.title||this.$route.meta.title,this.navBarInit()},unmounted(){a({api:"setBarStatus",content:{status:1}})},methods:{navBarInit(){a({api:"setBarStatus",content:{status:0}});let n=sessionStorage.getItem("navHeight"),o=sessionStorage.getItem("titleHeight");n&&o?this.navBarHeight=Number(n):a({api:"getNavHeight"},h=>{const{content:t}=h,l=t.dpi||2;if(t.navHeight){const e=t.navHeight/l;sessionStorage.setItem("navHeight",String(e)),this.navBarHeight=e}if(t.titleHeight){const e=t.titleHeight/l;sessionStorage.setItem("titleHeight",String(e)),this.titleHeight=e}})},onClickLeft(){this.$router.back()},clickRight(){this.onClickRight&&this.onClickRight()}},render(){return i(r,null,[this.$slots.content?i("div",{style:{paddingTop:`${this.navBarHeight}px`},class:s.headerSection},[this.$slots.content()]):i(r,null,[i("div",{style:{paddingTop:`${this.navBarHeight}px`},class:s.headerSection},[i(c,{title:this.headerTitle,class:[this.background==="green"?s.green:null,s.colHeader],"left-arrow":this.isBack,rightText:this.rightText,fixed:this.isFixed,"onClick-right":this.clickRight,"onClick-left":this.onClickLeft},null)]),this.$slots.default?this.$slots.default():null])])}});export{f as C};

文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.7de7a51d.js


+ 0 - 1
dist/assets/index.80edcd4a.css

@@ -1 +0,0 @@
-._music-cert_ciopd_1{background-color:#fff;padding:.32rem .32rem 0;position:relative}._music-cert_ciopd_1 h2{font-size:.42667rem;padding:.21333rem 0;font-weight:600;color:#333;line-height:1.5}._music-cert_ciopd_1 ._cert-text_ciopd_13{font-size:.34667rem;line-height:1.3;padding-bottom:.32rem;color:#999}._music-cert_ciopd_1 ._cert-img_ciopd_19{border-radius:.13333rem;overflow:hidden;line-height:0;margin-bottom:.21333rem}._music-cert_ciopd_1 ._btn-group_ciopd_25{padding-bottom:.32rem}

+ 1 - 1
dist/assets/switch.edb8bb7b.css → dist/assets/index.85a0c0a7.css

@@ -1 +1 @@
-:root{--van-list-text-color: var(--van-text-color-2);--van-list-text-font-size: var(--van-font-size-md);--van-list-text-line-height: 1.33333rem;--van-list-loading-icon-size: .42667rem}.van-list__loading,.van-list__finished-text,.van-list__error-text{color:var(--van-list-text-color);font-size:var(--van-list-text-font-size);line-height:var(--van-list-text-line-height);text-align:center}.van-list__placeholder{height:0;pointer-events:none}.van-list__loading-icon .van-loading__spinner{width:var(--van-list-loading-icon-size);height:var(--van-list-loading-icon-size)}._list-contaner_v1ygs_1{display:flex;flex-direction:column}
+:root{--van-list-text-color: var(--van-text-color-2);--van-list-text-font-size: var(--van-font-size-md);--van-list-text-line-height: 1.33333rem;--van-list-loading-icon-size: .42667rem}.van-list__loading,.van-list__finished-text,.van-list__error-text{color:var(--van-list-text-color);font-size:var(--van-list-text-font-size);line-height:var(--van-list-text-line-height);text-align:center}.van-list__placeholder{height:0;pointer-events:none}.van-list__loading-icon .van-loading__spinner{width:var(--van-list-loading-icon-size);height:var(--van-list-loading-icon-size)}

文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.afbc962b.css


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.dafaa0c5.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index.e641a55c.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/login-legacy.5bfb4585.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/login.12776c4f.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/login.f766800f.js


二進制
dist/assets/logo1.e835c74e.png


二進制
dist/assets/logo2.f1e4bc93.png


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/main-legacy.d9d97c24.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/main.18b85950.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/switch-legacy.66c8e64a.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/switch-legacy.a1d1c7e8.js


+ 1 - 0
dist/assets/switch.67733992.js

@@ -0,0 +1 @@
+import{d as a,b as t,B as l,f as u,X as n,w as d,Y as o,Z as i}from"./vendor.14dbc21a.js";/* empty css               *//* empty css               *//* empty css               *//* empty css               */import{r as c}from"./main.18b85950.js";var h=a({name:"MusicListItem",props:{data:{type:Object,default:()=>null}},render(){return this.data?t("div",null,null):null}}),p={"list-contaner":"_list-contaner_v1ygs_1"};function f(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!d(e)}var s=a({name:"MusicList",props:{auditStatus:{type:Number,default:0}},data(){return{list:[],loading:!1,error:!1,finished:!1,page:1}},methods:{async FetchList(){this.loading=!0;try{const e=await c.post("/api-web/music/sheet/list",{data:{auditStatus:this.auditStatus}});e.data.length&&(this.list=this.list.concat(e.data))}catch{this.error=!0}this.loading=!1},toUpload(){this.$router.push({path:"/music-upload"})}},render(){let e;return t("div",{class:p["list-contaner"]},[t(l,{onClick:this.toUpload},{default:()=>[u("\u4E0A\u4F20\u66F2\u8C31")]}),t(n,{loading:this.loading,error:this.error,finished:this.finished,onLoad:this.FetchList},f(e=this.list.map(r=>t(h,{data:r},null)))?e:{default:()=>[e]})])}}),S=a({name:"MusicListSwitch",render(){return t("div",null,[t(o,null,{default:()=>[t(i,{title:"\u5DF2\u4E0A\u67B6"},{default:()=>[t(s,{auditStatus:0},null)]}),t(i,{title:"\u5BA1\u6838\u4E2D"},{default:()=>[t(s,{auditStatus:1},null)]}),t(i,{title:"\u5BA1\u6838\u5931\u8D25"},{default:()=>[t(s,{auditStatus:2},null)]})]})])}});export{S as default};

+ 1 - 0
dist/assets/switch.7ac36fff.css

@@ -0,0 +1 @@
+._list-contaner_v1ygs_1{display:flex;flex-direction:column}

+ 0 - 1
dist/assets/switch.e01226b4.js

@@ -1 +0,0 @@
-import{d as e,b as t,B as l,f as u,X as n,w as d,Y as o,Z as i}from"./vendor.14dbc21a.js";/* empty css               *//* empty css               *//* empty css               */import{r as c}from"./main.a06ffd59.js";var f=e({name:"MusicListItem",props:{data:{type:Object,default:()=>null}},render(){return this.data?t("div",null,null):null}}),h={"list-contaner":"_list-contaner_v1ygs_1"};function p(a){return typeof a=="function"||Object.prototype.toString.call(a)==="[object Object]"&&!d(a)}var s=e({name:"MusicList",props:{auditStatus:{type:Number,default:0}},data(){return{list:[],loading:!1,error:!1,finished:!1,page:1}},methods:{async FetchList(){this.loading=!0;try{const a=await c.post("/api-web/music/sheet/list",{data:{auditStatus:this.auditStatus}});a.data.length&&(this.list=this.list.concat(a.data))}catch{this.error=!0}this.loading=!1},toUpload(){this.$router.push({path:"/music-upload"})}},render(){let a;return t("div",{class:h["list-contaner"]},[t(l,{onClick:this.toUpload},{default:()=>[u("\u4E0A\u4F20\u66F2\u8C31")]}),t(n,{loading:this.loading,error:this.error,finished:this.finished,onLoad:this.FetchList},p(a=this.list.map(r=>t(f,{data:r},null)))?a:{default:()=>[a]})])}}),L=e({name:"MusicListSwitch",render(){return t("div",null,[t(o,null,{default:()=>[t(i,{title:"\u5DF2\u4E0A\u67B6"},{default:()=>[t(s,{auditStatus:0},null)]}),t(i,{title:"\u5BA1\u6838\u4E2D"},{default:()=>[t(s,{auditStatus:1},null)]}),t(i,{title:"\u5BA1\u6838\u5931\u8D25"},{default:()=>[t(s,{auditStatus:2},null)]})]})])}});export{L as default};

+ 1 - 1
dist/assets/index-legacy.23dbf6fe.js → dist/assets/teacher-legacy.e9418bc8.js

@@ -1 +1 @@
-;(function(){System.register(['./main-legacy.fcb2b50d.js','./vendor-legacy.7b5913a8.js'],function(){'use strict';return{setters:[function(){},function(){}],execute:function execute(){}};});})();
+;(function(){System.register(['./main-legacy.d9d97c24.js','./vendor-legacy.7b5913a8.js'],function(){'use strict';return{setters:[function(){},function(){}],execute:function execute(){}};});})();

+ 1 - 1
dist/assets/teacher.e7767d5f.js → dist/assets/teacher.210817ff.js

@@ -1 +1 @@
-import"./main.a06ffd59.js";import"./vendor.14dbc21a.js";function t(){import("data:text/javascript,")}export{t as __vite_legacy_guard};
+import"./main.18b85950.js";import"./vendor.14dbc21a.js";function t(){import("data:text/javascript,")}export{t as __vite_legacy_guard};

二進制
dist/assets/tip.f35c7fd0.png


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/video-detail-legacy.ab8cf018.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/video-detail-legacy.e888b81a.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/video-detail.19998132.js


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/video-detail.3424be43.js


+ 4 - 4
dist/index.html

@@ -34,11 +34,11 @@
   <meta name="msapplication-tap-highlight" content="no">
   <title>酷乐秀-学生端</title>
   <script src="./flexible.js" charset="UTF-8"></script>
-  <script type="module" crossorigin src="./assets/index.45e6b720.js"></script>
+  <script type="module" crossorigin src="./assets/index.1567620f.js"></script>
   <link rel="modulepreload" href="./assets/vendor.14dbc21a.js">
-  <link rel="modulepreload" href="./assets/main.a06ffd59.js">
-  <link rel="stylesheet" href="./assets/main.ff0c0034.css">
+  <link rel="modulepreload" href="./assets/main.18b85950.js">
   <link rel="stylesheet" href="./assets/vendor.177057eb.css">
+  <link rel="stylesheet" href="./assets/main.ff0c0034.css">
   <script type="module">!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above 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>
 
@@ -48,7 +48,7 @@
   
   <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 id="vite-legacy-polyfill" src="./assets/polyfills-legacy.b16f3f34.js"></script>
-  <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.23dbf6fe.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.ef782945.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
 </body>
 
 </html>

+ 4 - 4
dist/teacher.html

@@ -32,11 +32,11 @@
     <meta name="msapplication-tap-highlight" content="no">
     <title>酷乐秀-老师端</title>
     <script src="./flexible.js" charset="UTF-8"></script>
-    <script type="module" crossorigin src="./assets/teacher.e7767d5f.js"></script>
+    <script type="module" crossorigin src="./assets/teacher.210817ff.js"></script>
     <link rel="modulepreload" href="./assets/vendor.14dbc21a.js">
-    <link rel="modulepreload" href="./assets/main.a06ffd59.js">
-    <link rel="stylesheet" href="./assets/vendor.177057eb.css">
+    <link rel="modulepreload" href="./assets/main.18b85950.js">
     <link rel="stylesheet" href="./assets/main.ff0c0034.css">
+    <link rel="stylesheet" href="./assets/vendor.177057eb.css">
     <script type="module">!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above 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>
   <body>
@@ -44,6 +44,6 @@
     
     <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 id="vite-legacy-polyfill" src="./assets/polyfills-legacy.b16f3f34.js"></script>
-    <script nomodule id="vite-legacy-entry" data-src="./assets/teacher-legacy.97c5d2e8.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+    <script nomodule id="vite-legacy-entry" data-src="./assets/teacher-legacy.e9418bc8.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
   </body>
 </html>

+ 4 - 4
src/business-components/subject-list/index.tsx

@@ -55,10 +55,10 @@ export default defineComponent({
         {this.subjectList.length ? (
           this.selectType === 'Checkbox' ? <CheckboxGroup v-model={this.checkBox} max={this.max}>
             {this.subjectList.map((item: any) => (
-              item.children && item.children.length > 0 ? <>
+              item.subjects && item.subjects.length > 0 ? <>
                 <div class={styles.title}>{item.name}</div>
                 <div class={styles['subject-list']}>
-                  {item.children && item.children.map((sub: any) => (
+                  {item.subjects && item.subjects.map((sub: any) => (
                     <div class={styles['subject-item']} onClick={() => this.onSelect(sub.id)}>
                       <Image src={sub.img} width="100%" height="100%" fit="cover" v-slots={{
                         loading: () => <Loading type="spinner" size={20} />
@@ -78,10 +78,10 @@ export default defineComponent({
             ))}
           </CheckboxGroup> : <RadioGroup v-model={this.radio} >
             {this.subjectList.map((item: any) => (
-              item.children && item.children.length > 0 ? <>
+              item.subjects && item.subjects.length > 0 ? <>
                 <div class={styles.title}>{item.name}</div>
                 <div class={styles['subject-list']}>
-                  {item.children && item.children.map((sub: any) => (
+                  {item.subjects && item.subjects.map((sub: any) => (
                     <div class={styles['subject-item']} onClick={() => this.onSelect(sub.id)}>
                       <Image src={sub.img} width="100%" height="100%" fit="cover" v-slots={{
                         loading: () => <Loading type="spinner" size={20} />

+ 2 - 1
src/business-components/user-detail/index.tsx

@@ -3,6 +3,7 @@ import { defineComponent, PropType } from "vue";
 import styles from "./index.module.less";
 
 import iconUserNum from '@common/images/icon_user_num.png';
+import defaultIcon from '@common/images/icon_teacher.png';
 
 /**
  * @description: 视频详情
@@ -47,7 +48,7 @@ export default defineComponent({
         <CellGroup class={styles.userInfo}>
           <Cell title={this.userInfo.lessonName} titleClass={styles.userTitle} />
           <Cell v-slots={{
-            icon: () => <Image class={styles.avatar} src={this.userInfo.headUrl} />,
+            icon: () => <Image class={styles.avatar} src={this.userInfo.headUrl || defaultIcon} />,
             title: () => (<div class={styles.name}>{this.userInfo.username}
               {this.showType === "TIME" ? <Tag style={{ marginLeft: '8px' }} color="#FFF1DE" textColor="#FF9300">{this.userInfo.lessonNum}课时</Tag> : <div class={styles.buyNum}>{this.userInfo.buyNum}人已购买</div>}
             </div>),

+ 1 - 2
src/teacher/layout/login.tsx

@@ -34,7 +34,6 @@ export default defineComponent({
     },
   },
   mounted() {
-    console.log('q22313')
     removeAuth();
     this.directNext();
   },
@@ -90,7 +89,7 @@ export default defineComponent({
       }
     },
     async onSendCode() { // 发送验证码
-      if(!checkPhone(this.username)) {
+      if (!checkPhone(this.username)) {
         return Toast('请输入正确的手机号码');
       }
       this.imgCodeStatus = true

二進制
src/teacher/music-cert/images/1.png


二進制
src/teacher/music-cert/images/2.png


二進制
src/teacher/music-cert/images/btn.png


二進制
src/teacher/music-cert/images/header.png


二進制
src/teacher/music-cert/images/logo1.png


二進制
src/teacher/music-cert/images/logo2.png


二進制
src/teacher/music-cert/images/tip.png


+ 115 - 19
src/teacher/music-cert/index.module.less

@@ -1,32 +1,128 @@
 .music-cert {
-  background-color: #fff;
-  padding: 12px 12px 0;
+  background: linear-gradient(213deg, #5ae2b8 0%, #27c695 100%);
+  min-height: 100vh;
   position: relative;
+  overflow: hidden;
 
-  h2 {
-    font-size: 16px;
-    padding: 8px 0;
-    font-weight: 600;
-    color: #333333;
-    line-height: 1.5;
+  .certWrapper {
+    // background: #4ebc55;
+    background: url('./images/header.png') no-repeat center top;
+    background-size: 100%;
+    overflow: hidden;
   }
 
-  .cert-text {
-    font-size: 13px;
-    line-height: 1.3;
-    padding-bottom: 12px;
-    color: #999999;
+  .cert-section {
+    margin: 362px 14px 0;
+    background: #cbfdd5;
+    border-radius: 29px;
+    border: 15px solid #cbfdd5;
+    position: relative;
+    z-index: 3;
+
+    .cert-text {
+      background: #ffffff;
+      border-radius: 26px;
+      padding: 8px 13px 12px;
+      margin-bottom: 13px;
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+    .cert-padding {
+      padding: 8px 13px 17px;
+    }
+
+    .title {
+      display: block;
+      width: 148px;
+      height: 32px;
+      margin: 0 auto;
+    }
+    .cert-join {
+      padding-top: 14px;
+      font-size: 13px;
+      color: #005852;
+      line-height: 22px;
+    }
+    .cert-desc {
+      padding-top: 9px;
+      text-align: center;
+      font-size: 13px;
+      color: #005852;
+      line-height: 26px;
+      p {
+        position: relative;
+        z-index: 2;
+        display: inline-block;
+        // padding: 0 8px;
+        &::after {
+          content: ' ';
+          width: 100%;
+          display: inline-block;
+          height: 10px;
+          background: #cbfdd5;
+          border-radius: 5px;
+          opacity: 0.63;
+          position: absolute;
+          left: 0;
+          bottom: 3px;
+          z-index: -1;
+        }
+      }
+    }
   }
 
-  .cert-img {
-    border-radius: 5px;
-    overflow: hidden;
-    line-height: 0;
-    margin-bottom: 8px;
+  .cert-item {
+    display: flex;
+    align-items: flex-start;
+    justify-content: space-between;
+    margin-bottom: 15px;
+    &:last-child {
+      margin-bottom: 0;
+    }
+    .certLogo {
+      width: 63px;
+      height: 52px;
+      .logo {
+        width: inherit;
+        height: inherit;
+      }
+    }
+
+    .certInfo {
+      margin-left: 10px;
+      .certInfoHeader {
+        display: flex;
+        align-items: center;
+        font-size: 16px;
+        font-weight: 500;
+        color: #333333;
+        line-height: 30px;
+        .num {
+          width: 25px;
+          height: 18px;
+          margin-right: 6px;
+        }
+      }
+      .certInfoDesc {
+        font-size: 13px;
+        color: #666666;
+        line-height: 22px;
+      }
+    }
   }
 
   .btn-group {
-    // background-color: #fff;
     padding-bottom: 12px;
+    .btn {
+      background: url('./images/btn.png') no-repeat center;
+      background-size: 100%;
+      width: 240px;
+      height: 50px;
+      margin: 0 auto;
+      &.disabled {
+        opacity: 0.6;
+      }
+    }
   }
 }

+ 72 - 31
src/teacher/music-cert/index.tsx

@@ -1,9 +1,22 @@
+import { postMessage } from "@/helpers/native-message";
 import { defineComponent } from "vue";
 import { Button, Image, Sticky, Toast } from 'vant';
 import styles from './index.module.less';
 import request from "@/helpers/request";
 import { state } from "@/state";
 import ColResult from "@/components/col-result";
+// import ColHeader from "@/components/col-header";
+
+/**
+ * 动态引入文件
+ * @param fileName 文件名
+ * @param path 文件路径
+ */
+export const getAssetsHomeFile = (fileName: string) => {
+  const path = `./images/${fileName}`
+  const modules = import.meta.globEager('./images/*')
+  return modules[path].default
+}
 
 export default defineComponent({
   name: 'music-cert',
@@ -13,54 +26,82 @@ export default defineComponent({
     }
   },
   mounted() {
-    // if (state.user.data?.musicianAuthStatus) {
-    //   state.musicCertStatus = !!state.user.data.musicianAuthStatus
+    postMessage({ api: 'setBarStatus', content: { status: 0 } })
+    // 音乐人审核状态 0、未申请 UNPAALY、已申请 DOING、审核中 PASS、通过 UNPASS、不通过
+    // let musicianAuthStatus = state.user.data?.musicianAuthStatus;
+    // if (musicianAuthStatus) {
+    //   state.musicCertStatus = musicianAuthStatus === 'DOING' || musicianAuthStatus === 'PASS' ? true : false
     // }
   },
+  unmounted() {
+    postMessage({ api: 'setBarStatus', content: { status: 1 } })
+  },
   methods: {
     async onClick() {
       try {
         await request.post('/api-teacher/teacherAuthMusicianRecord/doApply', {})
         Toast('申请认证成功')
         state.musicCertStatus = true
-      } catch {
-        //
-      }
+      } catch { }
     }
   },
   render() {
     return (
       <>
         {
-          state.musicCertStatus ? <ColResult tips="您已成功提交音乐人认证申请我们将在2个工作日内与您取得联系" /> : <div class={styles['music-cert']}>
-            <h2>音乐人认证是什么?</h2>
-            <p class={styles['cert-text']}>
-              酷乐秀对有能力编曲的音乐人开通上传曲谱权限,开通后您可上传自己编曲的乐谱MIDI让平台学员进行练习,并获取收益
-            </p>
-            <p class={styles['cert-img']}>
-              <Image src="https://daya.ks3-cn-beijing.ksyun.com/202110/Sn76BUQ.png" width="100%" height="150px" fit="cover" />
-            </p>
+          state.musicCertStatus ? <ColResult tips={state.user.data?.musicianAuthStatus === 'PASS' ? '您提交的音乐人认证已申请成功' : '您已成功提交音乐人认证申请我们将在2个工作日内与您取得联系'} /> : <div class={styles['music-cert']}>
+            <div class={styles.certWrapper}>
+              <div class={[styles['cert-section'], 'mb12']}>
+                <div class={[styles['cert-text'], styles['cert-tree']]}>
+                  <img src={getAssetsHomeFile('tip.png')} class={styles.title} />
+                  <div class={styles['cert-desc']}>
+                    <p style={{ paddingRight: 0 }}>酷乐秀对有能力编曲的音乐人开通上传曲谱权限,</p>
+                    <p>开通后您可上传自己编曲的乐谱MIDI</p>
+                    <p>让平台学员进行练习,并获取收益</p>
+                  </div>
+                </div>
 
-            <h2>MIDI文件上传</h2>
-            <p class={styles['cert-text']}>
-              您可上传自己编曲的乐谱MIDI,并自定义乐谱价格,为平台学员提供智能陪练练习
-            </p>
-            <p class={styles['cert-img']}>
-              <Image src="https://daya.ks3-cn-beijing.ksyun.com/202110/Sn76BUQ.png" width="100%" height="150px" fit="cover" />
-            </p>
+                <div class={[styles['cert-show'], styles['cert-text']]}>
+                  <div class={[styles['cert-item']]}>
+                    <div class={styles.certLogo}>
+                      <Image class={styles.logo} src={getAssetsHomeFile('logo1.png')} />
+                    </div>
+                    <div class={styles.certInfo}>
+                      <div class={styles.certInfoHeader}>
+                        <Image class={styles.num} src={getAssetsHomeFile('1.png')} />
+                        MIDI文件上传
+                      </div>
+                      <div class={styles.certInfoDesc}>
+                        您可上传自己编曲的乐谱MIDI,并自定义乐谱价格,为平台学员提供智能陪练练习。
+                      </div>
+                    </div>
+                  </div>
 
-            <h2>乐谱收益</h2>
-            <p class={styles['cert-text']}>
-              您可对上传的乐谱自定义价格,学员可自行挑选乐谱购买,购买后您将获取学员购买收入。
-            </p>
-            <p class={styles['cert-img']}>
-              <Image src="https://daya.ks3-cn-beijing.ksyun.com/202110/Sn76BUQ.png" width="100%" height="150px" fit="cover" />
-            </p>
-            <Sticky position="bottom" offsetBottom={0}>
-              <div class={styles["btn-group"]}>
-                <Button round block type="primary" disabled={this.authStatus === '1'} onClick={this.onClick}>立即认证</Button>
+                  <div class={[styles['cert-item']]}>
+                    <div class={styles.certLogo}>
+                      <Image class={styles.logo} src={getAssetsHomeFile('logo2.png')} />
+                    </div>
+                    <div class={styles.certInfo}>
+                      <div class={styles.certInfoHeader}>
+                        <Image class={styles.num} src={getAssetsHomeFile('2.png')} />
+                        乐谱收益
+                      </div>
+                      <div class={styles.certInfoDesc}>
+                        您可对上传的乐谱自定义价格,学员可自行挑选乐谱购买,购买后您将获取学员购买收入。
+                      </div>
+                    </div>
+                  </div>
+                </div>
               </div>
-            </Sticky>
+
+              <Sticky position="bottom" offsetBottom={0}>
+                <div class={styles["btn-group"]}>
+                  {/* <Button round block type="primary" disabled={this.authStatus === '1'} onClick={this.onClick}>立即认证</Button> */}
+                  <div class={[styles.btn, this.authStatus === '1' ? styles.disabled : null]} onClick={this.onClick}></div>
+                </div>
+              </Sticky>
+            </div>
+
           </div>
         }
 

+ 3 - 0
src/teacher/teacher-cert/cert-info.tsx

@@ -25,6 +25,9 @@ export default defineComponent({
   // },
   methods: {
     onClick() {
+      if (teacherState.authStatus) {
+        return
+      }
       teacherState.authStatus = true
     }
   },

+ 30 - 5
src/teacher/teacher-cert/cert-one.tsx

@@ -1,4 +1,4 @@
-import { Cell, CellGroup, Col, DatetimePicker, Field, Popup, Row, Toast } from "vant"
+import { CellGroup, DatetimePicker, Field, Popup, Toast } from "vant"
 import { defineComponent } from "vue";
 import dayjs from "dayjs";
 import { checkIDCard } from "@/helpers/validate";
@@ -6,6 +6,7 @@ import ColField from "@/components/col-field";
 import { teacherState } from "./teacherState";
 import styles from './cert-one.module.less';
 import ColFieldGroup from "@/components/col-field-group";
+import { state } from "@/state";
 
 export default defineComponent({
   name: 'certOne',
@@ -16,11 +17,27 @@ export default defineComponent({
       popupDate: new Date(),
     }
   },
+  computed: {
+    userAuth() {
+      // 判断是否实名过
+      const users = state.user.data || {};
+      return !!(users.idCardNo && users.realName)
+    }
+  },
+  mounted() {
+    if (this.userAuth) {
+      const users = state.user.data || {};
+      teacherState.teacherCert.realName = users.realName;
+      teacherState.teacherCert.idCardNo = users.idCardNo;
+      teacherState.teacherCert.gender = users.gender;
+      teacherState.teacherCert.birthdate = dayjs(users.birthdate).format('YYYY-MM-DD')
+    }
+  },
   methods: {
     onIdCardValidate() {
       const idCardNo = teacherState.teacherCert.idCardNo
       // 判断是否有身份证号
-      if(!idCardNo) {
+      if (!idCardNo) {
         return
       }
       if (!checkIDCard(idCardNo || '')) {
@@ -69,6 +86,11 @@ export default defineComponent({
         return `${val}日`;
       }
       return val;
+    },
+    sexChange(num: number) {
+      if (!this.userAuth) {
+        teacherState.teacherCert.gender = num
+      }
     }
   },
   render() {
@@ -79,6 +101,7 @@ export default defineComponent({
             <Field
               v-model={teacherState.teacherCert.realName}
               name="真实姓名"
+              disabled={this.userAuth}
               maxlength={10}
               placeholder="请输入您的真实姓名"
             />
@@ -87,6 +110,7 @@ export default defineComponent({
             <Field
               v-model={teacherState.teacherCert.idCardNo}
               name="身份证号"
+              disabled={this.userAuth}
               maxlength={18}
               onBlur={this.onIdCardValidate}
               placeholder="请输入您的身份证号码"
@@ -94,17 +118,18 @@ export default defineComponent({
           </ColField>
           <ColField title="性别" required border={false}>
             <div class={styles.radioGroup}>
-              <div onClick={() => teacherState.teacherCert.gender = 1} class={[styles.radio, teacherState.teacherCert.gender === 1 ? styles.active : null]}>男</div>
-              <div onClick={() => teacherState.teacherCert.gender = 0} class={[styles.radio, teacherState.teacherCert.gender === 0 ? styles.active : null]}>女</div>
+              <div onClick={() => this.sexChange(1)} class={[styles.radio, teacherState.teacherCert.gender === 1 ? styles.active : null]}>男</div>
+              <div onClick={() => this.sexChange(0)} class={[styles.radio, teacherState.teacherCert.gender === 0 ? styles.active : null]}>女</div>
             </div>
           </ColField>
           <ColField title="出生日期" required>
             <Field
               v-model={teacherState.teacherCert.birthdate}
               name="出生日期"
+              disabled={this.userAuth}
               onClick-input={() => this.popupShow = true}
               readonly
-              isLink
+              isLink={!this.userAuth}
               placeholder="请选择您的出生日期"
             />
           </ColField>

+ 20 - 11
src/teacher/teacher-cert/index.tsx

@@ -44,6 +44,11 @@ export default defineComponent({
   computed: {
     authStatus(): Boolean {
       return !!teacherState.authStatus
+    },
+    userAuth() {
+      // 判断是否实名过
+      const users = state.user.data || {};
+      return !!(users.idCardNo && users.realName)
     }
   },
   methods: {
@@ -53,12 +58,14 @@ export default defineComponent({
         Toast('请填写真实姓名')
         return
       }
-
       const idCardNo = teacherState.teacherCert.idCardNo
-      if (!checkIDCard(idCardNo || '')) {
-        Toast('请填写正确的身份证号码');
-        return false;
+      if (!this.userAuth) {
+        if (!checkIDCard(idCardNo || '')) {
+          Toast('请填写正确的身份证号码');
+          return false;
+        }
       }
+
       if (!this.agreeStatus) {
         Toast('请阅读并同意协议');
         return
@@ -70,13 +77,15 @@ export default defineComponent({
       }
 
       try {
-        await request.post('/api-auth/user/realNameAuth', {
-          data: {
-            realName,
-            idCardNo,
-            save: false
-          }
-        })
+        if (!this.userAuth) {
+          await request.post('/api-auth/user/realNameAuth', {
+            data: {
+              realName,
+              idCardNo,
+              save: false
+            }
+          })
+        }
         teacherState.active = 2;
       } catch {
         //

+ 1 - 3
src/teacher/video-class/class-info.tsx

@@ -47,7 +47,6 @@ export default defineComponent({
       if (createState.subjectList.length <= 0) {
         const res = await request.get('/api-teacher/subject/subjectSelect')
         createState.subjectList = res.data || [];
-        // console.log(createState.subjectList)
       }
     } catch {
       //
@@ -144,7 +143,6 @@ export default defineComponent({
               )
             }}>
             <p class={styles.photoTip}>模板图片将作为改课程封面为学员展示</p>
-            {console.log(createState.tabIndex, 'html')}
             {createState.tabIndex === 1 ? <Field
               name='lessonCoverTemplateUrl'
               rules={[{ required: true, message: '请选择课程声部' }]}
@@ -198,7 +196,7 @@ export default defineComponent({
         </Sticky>
 
         <ColPopup v-model={this.subjectStatus}>
-          <SubjectModel selectType="Radio" subjectList={this.subjectList} choiceSubjectIds={this.choiceSubjectIds} onChoice={this.onChoice} />
+          <SubjectModel selectType="Radio" subjectList={createState.subjectList} choiceSubjectIds={this.choiceSubjectIds} onChoice={this.onChoice} />
         </ColPopup>
       </Form >
     )

+ 0 - 0
src/teacher/video-class/video-class-detail.module.less


+ 17 - 0
src/teacher/video-class/video-class-detail.tsx

@@ -0,0 +1,17 @@
+import { defineComponent } from "vue";
+
+export default defineComponent({
+  name: 'VideoClassDetail',
+  data() {
+    return {
+
+    }
+  },
+  render() {
+    return (
+      <div>
+        我的课程视频课程详情
+      </div>
+    );
+  }
+})

+ 73 - 24
src/teacher/video-class/video-detail.tsx

@@ -2,30 +2,77 @@ import CourseVideoItem from "@/business-components/course-video-item";
 import SectionDetail from "@/business-components/section-detail";
 import UserDetail from "@/business-components/user-detail";
 import UserList from "@/business-components/user-list";
-import { Tab, Tabs } from "vant";
+import { List, Tab, Tabs } from "vant";
 import { defineComponent } from "vue";
-import { createState } from "./createState";
 import { state } from "@/state";
 import styles from './video-detail.module.less';
-
+import request from "@/helpers/request";
+import { group } from "console";
+import ColResult from "@/components/col-result";
 export default defineComponent({
   name: 'VideoDetail',
-  computed: {
-    userInfo() {
-      const videoDetail = createState.lessonGroup;
+  data() {
+    console.log(this.$route.query.groupId)
+    const query = this.$route.query
+    return {
+      userInfo: {} as any,
+      detailList: [],
+      buyUserList: [], // 购买学生数
+      dataShow: true, // 判断是否有数据
+      loading: false,
+      finished: false,
+      params: {
+        groupId: query.groupId,
+        page: 1,
+        rows: 20
+      }
+    }
+  },
+  async mounted() {
+    try {
+      const res = await request.get('/api-teacher/videoLessonGroup/selectVideoLesson', {
+        params: {
+          groupId: this.params.groupId
+        }
+      })
+      const result = res.data || {}
       const users = state.user.data || {};
-      return {
+      this.userInfo = {
         username: users.username,
         headUrl: users.headUrl,
-        lessonName: videoDetail.lessonName,
         buyNum: 0,
-        lessonDesc: videoDetail.lessonDesc,
-        lessonPrice: videoDetail.lessonPrice,
-        lessonCoverUrl: videoDetail.lessonCoverUrl
+        lessonName: result.lessonGroup.lessonName,
+        lessonDesc: result.lessonGroup.lessonDesc,
+        lessonPrice: result.lessonGroup.lessonPrice,
+        lessonCoverUrl: result.lessonGroup.lessonCoverUrl
       }
-    },
+      this.detailList = result.detailList || []
+
+      this.getList()
+    } catch { }
   },
   methods: {
+    async getList() {
+      try {
+        let params = this.params
+        const res = await request.post('/api-teacher/videoLesson/pageStudent', {
+          data: {
+            ...params
+          }
+        })
+        const result = res.data || {}
+        // 处理重复请求数据
+        if (this.buyUserList.length > 0 && result.pageNo === 1) {
+          return
+        }
+        this.buyUserList = this.buyUserList.concat(result.list || [])
+        this.finished = result.pageNo >= result.totalPage
+        this.params = result.pageNo + 1
+        this.dataShow = this.buyUserList.length > 0
+
+        this.userInfo.buyNum = result.totalCount || 0
+      } catch { }
+    },
     onPlay(detail: any) {
       console.log(detail);
     }
@@ -33,27 +80,29 @@ export default defineComponent({
   render() {
     return (
       <div class={[styles['video-detail'], 'mb12']}>
-        {this.userInfo && <UserDetail userInfo={this.userInfo} />}
+        <UserDetail userInfo={this.userInfo} />
         <SectionDetail>
-          <p class={styles.introduction}>小酷老师带您零基础学习竖笛,通过4节课的学习掌握竖笛演奏的基本方式,培养娘好的吐息习惯。</p>
+          <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
         </SectionDetail>
 
         <SectionDetail title="课程列表" icon="courseList" titleShow={false} contentStyle={{ paddingTop: '0' }}>
           <Tabs color="var(--van-primary)" lineWidth={20} sticky>
-            <Tab title="全部课程" titleClass="van-hairline--bottom">
-              {[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3].map(item => (
+            <Tab title="课程" titleClass="van-hairline--bottom">
+              {this.detailList.map((item: any) => (
                 <CourseVideoItem class={'mb12'} detail={{
-                  id: 1,
-                  title: "竖笛演奏基础",
-                  content: "使学生初步了解竖笛的构造,学会吹奏姿势掌握基本呼吸掌握基本呼吸掌握基本呼吸方法。",
-                  imgUrl: 'https://daya.ks3-cn-beijing.ksyun.com/202201/SvB6tqR.png'
+                  id: item.id,
+                  title: item.videoTitle,
+                  content: item.videoContent,
+                  imgUrl: item.coverUrl
                 }} onPlay={this.onPlay} />
               ))}
             </Tab>
-            <Tab title="已购课程" titleClass="van-hairline--bottom">
-              {[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3].map(item => (
-                <UserList class="mb12" />
-              ))}
+            <Tab title="学员列表" titleClass="van-hairline--bottom">
+              {this.dataShow ? <List v-model:loading={this.loading} finished={this.finished} finishedText='没有更多了' onLoad={this.getList}>
+                {this.buyUserList.map(item => (
+                  <UserList class="mb12" />
+                ))}
+              </List> : <ColResult btnStatus={false} tips='暂无学生购买' />}
             </Tab>
           </Tabs>
         </SectionDetail>

部分文件因文件數量過多而無法顯示