1
0

8 コミット 9a6d2ca94f ... 75fce59dc2

作者 SHA1 メッセージ 日付
  lex-xin 75fce59dc2 合并 1 日 前
  lex-xin a0fa0c62ba 修改详情 1 日 前
  lex-xin d893c6baa1 修改 1 日 前
  lex-xin 3806acea6f Merge branch 'ponline' into iteration-20241011 1 日 前
  lex-xin e0f3730fd6 修改 1 日 前
  lex-xin 682b5465e9 修改小组课样式 1 日 前
  lex-xin 9580f9ff0c build 2 日 前
  lex-xin 0e6001cb46 修改 2 日 前
63 ファイル変更306 行追加495 行削除
  1. 1 0
      dist/assets/auth-login-legacy.3d941e3d.js
  2. 1 0
      dist/assets/auth-login-legacy.947edf27.js
  3. 1 0
      dist/assets/auth-login.1cc4cbb5.js
  4. 1 0
      dist/assets/auth-login.5c7aa6ac.js
  5. 1 0
      dist/assets/home-layout-center-legacy.9070be8a.js
  6. 4 0
      dist/assets/home-layout-center.53adaf92.js
  7. 5 0
      dist/assets/home-layout-center.8f371536.js
  8. 1 0
      dist/assets/index-legacy.01d19745.js
  9. 1 0
      dist/assets/index-legacy.1ac7a05b.js
  10. 1 0
      dist/assets/index-legacy.34bb61c0.js
  11. 1 0
      dist/assets/index-legacy.77ea5951.js
  12. 1 0
      dist/assets/index-legacy.8d6f13f1.js
  13. 1 0
      dist/assets/index-legacy.b5f01f7c.js
  14. 1 0
      dist/assets/index.1600b7b5.js
  15. 1 0
      dist/assets/index.199f201e.js
  16. 0 0
      dist/assets/index.3445a823.js
  17. 1 0
      dist/assets/index.63dc2968.js
  18. 1 0
      dist/assets/index.c2f367b6.js
  19. 1 0
      dist/assets/login-legacy.6b1256fb.js
  20. 1 0
      dist/assets/login-legacy.86c56e44.js
  21. 1 0
      dist/assets/login.6ccab477.js
  22. 1 0
      dist/assets/login.b7e3496b.js
  23. 1 0
      dist/assets/new-index-legacy.a997a6fc.js
  24. 1 0
      dist/assets/new-index-legacy.c5d7120f.js
  25. 1 0
      dist/assets/new-index.565dd7ba.js
  26. 1 0
      dist/assets/new-index.7a13d409.js
  27. 1 0
      dist/assets/polyfills-legacy.b03b71f7.js
  28. 1 0
      dist/assets/polyfills-legacy.ba67f781.js
  29. 1 0
      dist/assets/routes-common-legacy.1abfed3a.js
  30. 1 0
      dist/assets/routes-common-legacy.fd548181.js
  31. 1 0
      dist/assets/routes-common.826e0f35.js
  32. 1 0
      dist/assets/routes-common.bf40b4c7.js
  33. 1 0
      dist/assets/teacher-legacy.59b7e5c3.js
  34. 1 0
      dist/assets/teacher-legacy.ac53f4fc.js
  35. 0 0
      dist/assets/teacher.db4beae6.js
  36. 1 0
      dist/assets/tenant-legacy.79897238.js
  37. 1 0
      dist/assets/tenant-legacy.f2a516ce.js
  38. 1 0
      dist/assets/tenant.2356499b.js
  39. 1 0
      dist/assets/tenant.b2c9a153.js
  40. 12 0
      dist/index.html
  41. 11 0
      dist/teacher.html
  42. 9 0
      dist/tenant.html
  43. BIN
      src/business-components/group-plan-step/images/group-logo.png
  44. BIN
      src/business-components/group-plan-step/images/icon-timer.png
  45. 76 0
      src/business-components/group-plan-step/index.module.less
  46. 60 0
      src/business-components/group-plan-step/index.tsx
  47. 4 4
      src/business-components/user-detail/index.tsx
  48. 1 1
      src/router/routes-student.ts
  49. 8 0
      src/router/routes-teacher.ts
  50. 0 0
      src/student/group-class/group-detail.module.less
  51. 37 24
      src/student/group-class/group-detail.tsx
  52. 0 29
      src/student/group-class/index.module.less
  53. 0 193
      src/student/group-class/index.tsx
  54. 0 99
      src/student/group-class/live-item.module.less
  55. 0 109
      src/student/group-class/live-item.tsx
  56. 3 16
      src/student/teacher-dependent/components/group.tsx
  57. 5 5
      src/student/teacher-dependent/components/tips/index.tsx
  58. 8 0
      src/teacher/group-class/create-components/course.tsx
  59. 1 0
      src/teacher/group-class/create-components/createState.ts
  60. 9 4
      src/teacher/group-class/create-components/detail.tsx
  61. 13 6
      src/teacher/group-class/group-detail.tsx
  62. 2 2
      src/tenant/music/music-detail/new-index.tsx
  63. 3 3
      src/views/music/music-detail/index.tsx

ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/auth-login-legacy.3d941e3d.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/auth-login-legacy.947edf27.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/auth-login.1cc4cbb5.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/auth-login.5c7aa6ac.js


+ 1 - 0
dist/assets/home-layout-center-legacy.9070be8a.js

@@ -0,0 +1 @@
+!function(){function e(e,t,n,r,o,s,a){try{var u=e[s](a),c=u.value}catch(i){return void n(i)}u.done?t(c):Promise.resolve(c).then(r,o)}System.register(["./ResizeObserver.es-legacy.8d60aee1.js","./index-legacy.1ac7a05b.js","./auth-legacy.f1aaf922.js","./routes-common-legacy.1abfed3a.js"],(function(t){"use strict";var n,r,o,s,a,u,c,i,f,l;return{setters:[function(e){n=e.d,r=e.g,o=e.u,s=e.p,a=e.i,u=e.j,c=e.C,i=e.F},function(e){f=e.a,l=e.b},function(){},function(){}],execute:function(){t("default",n({name:"home-layout-center",data:function(){return{status:!1}},mounted:function(){this.getUserInfo()},methods:{getUserInfo:function(){var t,n=this;return(t=regeneratorRuntime.mark((function e(){var t,u,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,f.post("/api-auth/smsLogin",{requestType:"form",data:{clientId:"student",clientSecret:"student",phone:r.orchestraInfo.phone,token:r.orchestraInfo.token,isSurportRegister:!0}});case 3:return t=e.sent,u=t.data.authentication,o(u.token_type+" "+u.access_token),s({api:"setCache",content:{key:"h5-colexiu-token",value:u.token_type+" "+u.access_token}}),e.next=9,f.get("/api-student/student/queryUserInfo",{initRequest:!0});case 9:c=e.sent,a(c.data),n.$router.push("/home"),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),n.status=!0;case 17:case"end":return e.stop()}}),e,null,[[0,14]])})),function(){var n=this,r=arguments;return new Promise((function(o,s){var a=t.apply(n,r);function u(t){e(a,o,s,u,c,"next",t)}function c(t){e(a,o,s,u,c,"throw",t)}u(void 0)}))})()}},render:function(){return u(i,null,[this.status?u("div",{class:l.error},[u(c,{type:"notFond",classImgSize:"CERT",tips:"加载失败,请稍后重试",buttonText:"重新加载",plain:!0,onClick:this.getUserInfo},null)]):u("div",null,null)])}}))}}}))}();

+ 4 - 0
dist/assets/home-layout-center.53adaf92.js

@@ -1 +1,5 @@
+<<<<<<<< HEAD:dist/assets/home-layout-center.53adaf92.js
 import{d as r,g as s,u,p as i,i as c,j as e,C as l,F as p}from"./ResizeObserver.es.39b48a47.js";import{a,b as h}from"./index.4e7d32df.js";import"./auth.6996b3a7.js";import"./routes-common.826e0f35.js";var g=r({name:"home-layout-center",data(){return{status:!1}},mounted(){this.getUserInfo()},methods:{async getUserInfo(){try{const o=await a.post("/api-auth/smsLogin",{requestType:"form",data:{clientId:"student",clientSecret:"student",phone:s.orchestraInfo.phone,token:s.orchestraInfo.token,isSurportRegister:!0}}),{authentication:t}=o.data;u(t.token_type+" "+t.access_token),i({api:"setCache",content:{key:"h5-colexiu-token",value:t.token_type+" "+t.access_token}});const n=await a.get("/api-student/student/queryUserInfo",{initRequest:!0});c(n.data),this.$router.push("/home")}catch{this.status=!0}}},render(){return e(p,null,[this.status?e("div",{class:h.error},[e(l,{type:"notFond",classImgSize:"CERT",tips:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",buttonText:"\u91CD\u65B0\u52A0\u8F7D",plain:!0,onClick:this.getUserInfo},null)]):e("div",null,null)])}});export{g as default};
+========
+import{d as r,g as s,u,p as i,i as c,j as e,C as l,F as p}from"./ResizeObserver.es.39b48a47.js";import{a,b as h}from"./index.3445a823.js";import"./auth.6996b3a7.js";import"./routes-common.bf40b4c7.js";var g=r({name:"home-layout-center",data(){return{status:!1}},mounted(){this.getUserInfo()},methods:{async getUserInfo(){try{const o=await a.post("/api-auth/smsLogin",{requestType:"form",data:{clientId:"student",clientSecret:"student",phone:s.orchestraInfo.phone,token:s.orchestraInfo.token,isSurportRegister:!0}}),{authentication:t}=o.data;u(t.token_type+" "+t.access_token),i({api:"setCache",content:{key:"h5-colexiu-token",value:t.token_type+" "+t.access_token}});const n=await a.get("/api-student/student/queryUserInfo",{initRequest:!0});c(n.data),this.$router.push("/home")}catch{this.status=!0}}},render(){return e(p,null,[this.status?e("div",{class:h.error},[e(l,{type:"notFond",classImgSize:"CERT",tips:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",buttonText:"\u91CD\u65B0\u52A0\u8F7D",plain:!0,onClick:this.getUserInfo},null)]):e("div",null,null)])}});export{g as default};
+>>>>>>>> iteration-20241011:dist/assets/home-layout-center.8f371536.js

+ 5 - 0
dist/assets/home-layout-center.8f371536.js

@@ -0,0 +1,5 @@
+<<<<<<<< HEAD:dist/assets/home-layout-center.53adaf92.js
+import{d as r,g as s,u,p as i,i as c,j as e,C as l,F as p}from"./ResizeObserver.es.39b48a47.js";import{a,b as h}from"./index.4e7d32df.js";import"./auth.6996b3a7.js";import"./routes-common.826e0f35.js";var g=r({name:"home-layout-center",data(){return{status:!1}},mounted(){this.getUserInfo()},methods:{async getUserInfo(){try{const o=await a.post("/api-auth/smsLogin",{requestType:"form",data:{clientId:"student",clientSecret:"student",phone:s.orchestraInfo.phone,token:s.orchestraInfo.token,isSurportRegister:!0}}),{authentication:t}=o.data;u(t.token_type+" "+t.access_token),i({api:"setCache",content:{key:"h5-colexiu-token",value:t.token_type+" "+t.access_token}});const n=await a.get("/api-student/student/queryUserInfo",{initRequest:!0});c(n.data),this.$router.push("/home")}catch{this.status=!0}}},render(){return e(p,null,[this.status?e("div",{class:h.error},[e(l,{type:"notFond",classImgSize:"CERT",tips:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",buttonText:"\u91CD\u65B0\u52A0\u8F7D",plain:!0,onClick:this.getUserInfo},null)]):e("div",null,null)])}});export{g as default};
+========
+import{d as r,g as s,u,p as i,i as c,j as e,C as l,F as p}from"./ResizeObserver.es.39b48a47.js";import{a,b as h}from"./index.3445a823.js";import"./auth.6996b3a7.js";import"./routes-common.bf40b4c7.js";var g=r({name:"home-layout-center",data(){return{status:!1}},mounted(){this.getUserInfo()},methods:{async getUserInfo(){try{const o=await a.post("/api-auth/smsLogin",{requestType:"form",data:{clientId:"student",clientSecret:"student",phone:s.orchestraInfo.phone,token:s.orchestraInfo.token,isSurportRegister:!0}}),{authentication:t}=o.data;u(t.token_type+" "+t.access_token),i({api:"setCache",content:{key:"h5-colexiu-token",value:t.token_type+" "+t.access_token}});const n=await a.get("/api-student/student/queryUserInfo",{initRequest:!0});c(n.data),this.$router.push("/home")}catch{this.status=!0}}},render(){return e(p,null,[this.status?e("div",{class:h.error},[e(l,{type:"notFond",classImgSize:"CERT",tips:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",buttonText:"\u91CD\u65B0\u52A0\u8F7D",plain:!0,onClick:this.getUserInfo},null)]):e("div",null,null)])}});export{g as default};
+>>>>>>>> iteration-20241011:dist/assets/home-layout-center.8f371536.js

ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.01d19745.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.1ac7a05b.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.34bb61c0.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.77ea5951.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.8d6f13f1.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index-legacy.b5f01f7c.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index.1600b7b5.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index.199f201e.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/assets/index.3445a823.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index.63dc2968.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/index.c2f367b6.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/login-legacy.6b1256fb.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/login-legacy.86c56e44.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/login.6ccab477.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/login.b7e3496b.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/new-index-legacy.a997a6fc.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/new-index-legacy.c5d7120f.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/new-index.565dd7ba.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/new-index.7a13d409.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/polyfills-legacy.b03b71f7.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/polyfills-legacy.ba67f781.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/routes-common-legacy.1abfed3a.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/routes-common-legacy.fd548181.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/routes-common.826e0f35.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/routes-common.bf40b4c7.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/teacher-legacy.59b7e5c3.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/teacher-legacy.ac53f4fc.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/assets/teacher.db4beae6.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/tenant-legacy.79897238.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/tenant-legacy.f2a516ce.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/tenant.2356499b.js


ファイルの差分が大きいため隠しています
+ 1 - 0
dist/assets/tenant.b2c9a153.js


+ 12 - 0
dist/index.html

@@ -52,10 +52,17 @@
             _T_));
     })(Object);
   </script>
+<<<<<<< HEAD
   <script type="module" crossorigin src="./assets/index.4e7d32df.js"></script>
   <link rel="modulepreload" href="./assets/ResizeObserver.es.39b48a47.js">
   <link rel="modulepreload" href="./assets/auth.6996b3a7.js">
   <link rel="modulepreload" href="./assets/routes-common.826e0f35.js">
+=======
+  <script type="module" crossorigin src="./assets/index.3445a823.js"></script>
+  <link rel="modulepreload" href="./assets/ResizeObserver.es.39b48a47.js">
+  <link rel="modulepreload" href="./assets/auth.6996b3a7.js">
+  <link rel="modulepreload" href="./assets/routes-common.bf40b4c7.js">
+>>>>>>> iteration-20241011
   <link rel="stylesheet" href="./assets/ResizeObserver.es.a84186f5.css">
   <link rel="stylesheet" href="./assets/auth.f09b6d78.css">
   <link rel="stylesheet" href="./assets/index.820e7d12.css">
@@ -67,8 +74,13 @@
   
   <!-- <script type="module" src="/src/teacher/main.ts"></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>
+<<<<<<< HEAD
   <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.b03b71f7.js"></script>
   <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.77ea5951.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+=======
+  <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.ba67f781.js"></script>
+  <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.1ac7a05b.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+>>>>>>> iteration-20241011
 </body>
 
 </html>

+ 11 - 0
dist/teacher.html

@@ -52,9 +52,15 @@
             _T_));
     })(Object);
   </script>
+<<<<<<< HEAD
   <script type="module" crossorigin src="./assets/teacher.0ffe5a68.js"></script>
   <link rel="modulepreload" href="./assets/ResizeObserver.es.39b48a47.js">
   <link rel="modulepreload" href="./assets/routes-common.826e0f35.js">
+=======
+  <script type="module" crossorigin src="./assets/teacher.db4beae6.js"></script>
+  <link rel="modulepreload" href="./assets/ResizeObserver.es.39b48a47.js">
+  <link rel="modulepreload" href="./assets/routes-common.bf40b4c7.js">
+>>>>>>> iteration-20241011
   <link rel="stylesheet" href="./assets/ResizeObserver.es.a84186f5.css">
   <link rel="stylesheet" href="./assets/teacher.ded4b243.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>
@@ -64,8 +70,13 @@
   <div id="app"></div>
   
   <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>
+<<<<<<< HEAD
   <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.b03b71f7.js"></script>
   <script nomodule id="vite-legacy-entry" data-src="./assets/teacher-legacy.ac53f4fc.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+=======
+  <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.ba67f781.js"></script>
+  <script nomodule id="vite-legacy-entry" data-src="./assets/teacher-legacy.59b7e5c3.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+>>>>>>> iteration-20241011
 </body>
 
 </html>

+ 9 - 0
dist/tenant.html

@@ -52,7 +52,11 @@
             _T_));
     })(Object);
   </script>
+<<<<<<< HEAD
   <script type="module" crossorigin src="./assets/tenant.2356499b.js"></script>
+=======
+  <script type="module" crossorigin src="./assets/tenant.b2c9a153.js"></script>
+>>>>>>> iteration-20241011
   <link rel="modulepreload" href="./assets/ResizeObserver.es.39b48a47.js">
   <link rel="modulepreload" href="./assets/auth.6996b3a7.js">
   <link rel="stylesheet" href="./assets/ResizeObserver.es.a84186f5.css">
@@ -66,8 +70,13 @@
   
   <!-- <script type="module" src="/src/teacher/main.ts"></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>
+<<<<<<< HEAD
   <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.b03b71f7.js"></script>
   <script nomodule id="vite-legacy-entry" data-src="./assets/tenant-legacy.79897238.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+=======
+  <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.ba67f781.js"></script>
+  <script nomodule id="vite-legacy-entry" data-src="./assets/tenant-legacy.f2a516ce.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+>>>>>>> iteration-20241011
 </body>
 
 </html>

BIN
src/business-components/group-plan-step/images/group-logo.png


BIN
src/business-components/group-plan-step/images/icon-timer.png


+ 76 - 0
src/business-components/group-plan-step/index.module.less

@@ -0,0 +1,76 @@
+.groupPlanStep {
+  background: #FFFFFF;
+  border-radius: 10px;
+  overflow: hidden;
+  margin: 12px 14px 0;
+  :global {
+    .van-cell {
+      padding: 12px;
+      --van-cell-border-color: #f2f2f2;
+    }
+  }
+
+  .iconTimer {
+    width: 16px;
+    height: 16px;
+    margin-right: 7px;
+  }
+  .name {
+    font-size: 13px;
+    color: #666666;
+    line-height: 18px;
+  }
+
+  .top {
+    display: flex;
+    align-items: center;
+    padding-bottom: 12px;
+  }
+  .groupLogo {
+    width: 40px;
+    height: 40px;
+    flex-shrink: 0;
+    margin-right: 10px;
+  }
+  .topContent {
+    h2 {
+      font-weight: 400;
+      font-size: 15px;
+      color: #131415;
+      line-height: 21px;
+      padding-bottom: 4px;
+    }
+    .desc {
+      display: flex;
+      align-items: center;
+    }
+    .username {
+      display: inline-block;
+      max-width: 150px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      font-size: 13px;
+      color: #999999;
+      line-height: 17px;
+      margin-right: 5px;
+    }
+    .subjectName {
+      padding: 1px 4px 2px;
+      background: #FFF1DE;
+      border-radius: 4px;
+      font-size: 11px;
+      color: #FF8C00;
+      line-height: 14px;
+    }
+  }
+
+  .bottom {
+    background: #F8F8F8;
+    border-radius: 6px;
+    padding: 6px;
+    font-size: 13px;
+    color: #777777;
+    line-height: 20px;
+  }
+}

+ 60 - 0
src/business-components/group-plan-step/index.tsx

@@ -0,0 +1,60 @@
+import { defineComponent, PropType } from 'vue'
+import styles from './index.module.less'
+import { Cell, CellGroup } from 'vant'
+import iconTimer from './images/icon-timer.png'
+import groupLogo from './images/group-logo.png'
+
+interface IProps {
+  courseTime: string
+  coursePlan: string
+  roomUid?: string
+  teacherName: string
+  subjectName: string
+  liveState?: number
+  id?: number | string
+}
+
+export default defineComponent({
+  name: 'group-plan-step',
+  props: {
+    courseId: {
+      // 用于判断当前选择哪一节课程
+      type: Number,
+      default: 0
+    },
+    courseInfo: {
+      type: Array as PropType<IProps[]>,
+      default: []
+    }
+  },
+  setup(props) {
+    return () =>
+      props.courseInfo.map((item: IProps, index: number) => (
+        <CellGroup border={false} class={styles.groupPlanStep}>
+          <Cell
+            center
+            border
+            v-slots={{
+              icon: () => <img src={iconTimer} class={styles.iconTimer} />,
+              title: () => <div class={styles.name}>{item.courseTime}</div>
+            }}
+          ></Cell>
+          <Cell center class={styles.contentClass}>
+            <div class={styles.top}>
+              <img src={groupLogo} class={styles.groupLogo} />
+              <div class={styles.topContent}>
+                <h2>第{index + 1}课时</h2>
+                <div class={styles.desc}>
+                  <span class={styles.username}>{item.teacherName}</span>
+                  <span class={styles.subjectName}>{item.subjectName}</span>
+                </div>
+              </div>
+            </div>
+            <div class={styles.bottom}>
+              {item.coursePlan}
+            </div>
+          </Cell>
+        </CellGroup>
+      ))
+  }
+})

+ 4 - 4
src/business-components/user-detail/index.tsx

@@ -2,12 +2,12 @@ import { Cell, CellGroup, Icon, Image, Tag } from 'vant'
 import { defineComponent, PropType } from 'vue'
 import styles from './index.module.less'
 
-import iconUserNum from '@common/images/icon_user_num.png'
+// import iconUserNum from '@common/images/icon_user_num.png'
 import defaultIcon from '@common/images/icon_teacher.png'
 import iconTimer from '@common/images/icon_timer2.png'
-import IconXueli from '@common/images/icon-xueli.png'
-import IconJiaozi from '@common/images/icon-jiaozi.png'
-import item from '@/views/coupons/item'
+// import IconXueli from '@common/images/icon-xueli.png'
+// import IconJiaozi from '@common/images/icon-jiaozi.png'
+// import item from '@/views/coupons/item'
 /**
  * @description: 视频详情
  * @param {type} headUrl 头像

+ 1 - 1
src/router/routes-student.ts

@@ -75,7 +75,7 @@ export default [
       {
         path: '/groupDetail',
         name: 'groupDetail',
-        component: () => import('@/student/group-class/live-detail'),
+        component: () => import('@/student/group-class/group-detail'),
         meta: {
           title: '小组课详情'
         }

+ 8 - 0
src/router/routes-teacher.ts

@@ -24,6 +24,14 @@ const noLoginRouter = [
     }
   },
   {
+    path: '/shareGroup',
+    name: 'shareGroup',
+    component: () => import('@/teacher/share-page/share-group/index'),
+    meta: {
+      title: '分享小组课'
+    }
+  },
+  {
     path: '/shareMall',
     name: 'shareMall',
     component: () => import('@/teacher/share-page/share-mall/index'),

+ 0 - 0
src/student/group-class/live-detail.module.less → src/student/group-class/group-detail.module.less


+ 37 - 24
src/student/group-class/live-detail.tsx → src/student/group-class/group-detail.tsx

@@ -5,7 +5,7 @@ import request from '@/helpers/request'
 import dayjs from 'dayjs'
 import { Icon, Sticky, Button, Dialog, Toast, Popup } from 'vant'
 import { defineComponent } from 'vue'
-import styles from './live-detail.module.less'
+import styles from './group-detail.module.less'
 import iconTips from '@common/images/icon_tips.png'
 import { onSubmitZero, orderStatus } from '@/views/order-detail/orderStatus'
 import ColHeader from '@/components/col-header'
@@ -17,12 +17,14 @@ import iconShare from '@/views/shop-mall/images/icon-share.svg'
 import { state } from '@/state'
 import { browser } from '@/helpers/utils'
 import { tradeOrder } from '../trade/tradeOrder'
-import { courseType } from '@/constant';
+import { courseType } from '@/constant'
+import GroupPlanStep from '@/business-components/group-plan-step'
 interface IProps {
   courseTime: string
   coursePlan: string
-  videoPosterUrl?: string
   roomUid?: string
+  teacherName: string
+  subjectName: string
   liveState?: number
   id?: number | string
 }
@@ -82,6 +84,7 @@ export default defineComponent({
     },
     courseInfo() {
       const tempArr = [] as IProps[]
+      const live = this.live
       const coursePlanList = this.live.planList || []
       coursePlanList.forEach((item: any) => {
         const startTime = item.startTime || new Date()
@@ -92,6 +95,8 @@ export default defineComponent({
           ).format('HH:mm')}~${dayjs(endTime).format('HH:mm')}`,
           coursePlan: item.plan,
           roomUid: item.roomUid,
+          teacherName: live.teacherName,
+          subjectName: live.subjectName,
           liveState: item.liveState,
           id: item.courseId
         })
@@ -122,9 +127,9 @@ export default defineComponent({
   async mounted() {
     await this._init()
     if (/(localhost|192)/g.test(location.origin)) {
-      this.shareUrl = `https://dev.colexiu.com/teacher/#/shareLive?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}&userType=${state.platformType}&p=tenant`
+      this.shareUrl = `https://dev.colexiu.com/teacher/#/shareGroup?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}&userType=${state.platformType}&p=tenant`
     } else {
-      this.shareUrl = `${location.origin}/teacher/#/shareLive?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}&userType=${state.platformType}&p=tenant`
+      this.shareUrl = `${location.origin}/teacher/#/shareGroup?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}&userType=${state.platformType}&p=tenant`
     }
   },
   methods: {
@@ -139,7 +144,7 @@ export default defineComponent({
           }
         )
         this.live = res.data || {}
-        console.log(this.live, "list");
+        console.log(this.live, 'list')
       } catch {}
     },
     async onJoinRoom() {
@@ -180,7 +185,7 @@ export default defineComponent({
         }
       } catch {}
     },
-    initLive () {
+    initLive() {
       const live = this.live
       orderStatus.orderObject.orderType = 'GROUP'
       orderStatus.orderObject.orderName = '小组课购买'
@@ -306,7 +311,14 @@ export default defineComponent({
           <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
         </SectionDetail>
 
-        <SectionDetail
+        {this.courseInfo.length > 0 && (
+          <GroupPlanStep
+            courseInfo={this.courseInfo}
+            courseId={Number(this.courseId) || 0}
+          />
+        )}
+
+        {/* <SectionDetail
           title="课程列表"
           icon="courseList"
           border
@@ -318,7 +330,7 @@ export default defineComponent({
               courseId={Number(this.courseId) || 0}
             />
           )}
-        </SectionDetail>
+        </SectionDetail> */}
 
         {/* <div class={styles.tips}>
           <h3>
@@ -335,21 +347,22 @@ export default defineComponent({
             3、若您错过老师直播,可通过视频回放观看完整课程。
           </p>
         </div> */}
-        {this.courseInfo.length > 0 && (this.live.existBuy !== 1 || this.live.existBuy !== 2) && (
-          <ColSticky position="bottom" background="white">
-            <div class={['btnGroup', styles.btnMore]}>
-              <Button
-                block
-                round
-                type="primary"
-                onClick={this.onBuy}
-                disabled={this.platformStatus}
-              >
-                {this.live.coursePrice <= 0 ? '免费领取' : `立即购买`}
-              </Button>
-            </div>
-          </ColSticky>
-        )}
+        {this.courseInfo.length > 0 &&
+          (this.live.existBuy !== 1 && this.live.existBuy !== 2) && (
+            <ColSticky position="bottom" background="white">
+              <div class={['btnGroup', styles.btnMore]}>
+                <Button
+                  block
+                  round
+                  type="primary"
+                  onClick={this.onBuy}
+                  disabled={this.platformStatus}
+                >
+                  {this.live.coursePrice <= 0 ? '免费领取' : `立即购买`}
+                </Button>
+              </div>
+            </ColSticky>
+          )}
 
         {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
           <ColSticky position="bottom" background="white">

+ 0 - 29
src/student/group-class/index.module.less

@@ -1,29 +0,0 @@
-.classHeader {
-  // background: linear-gradient(180deg, #59e5d5 0%, #fff 100%);
-  background: linear-gradient(#59e5d5, 30%, #ffffff);
-}
-.banner {
-  background: #fff;
-  padding: 12px 14px;
-}
-
-.label {
-  margin-right: 8px;
-  font-size: 14px;
-  :global {
-    .van-list__loading,
-    .van-list__finished-text,
-    .van-list__error-text {
-      width: 100%;
-    }
-    .iconfont-down {
-      margin-left: 4px;
-    }
-  }
-}
-
-.liveClass {
-  :global(.van-sticky--fixed) {
-    box-shadow: 10px 10px 10px var(--box-shadow-color);
-  }
-}

+ 0 - 193
src/student/group-class/index.tsx

@@ -1,193 +0,0 @@
-import ColHeader from '@/components/col-header'
-import ColSearch from '@/components/col-search'
-import { Sticky, Image, List, Icon, Popup } from 'vant'
-import { defineComponent } from 'vue'
-import styles from './index.module.less'
-import request from '@/helpers/request'
-import ColResult from '@/components/col-result'
-import LiveItem from './live-item'
-
-import banner from '../video-class/images/banner.png'
-import { state } from '@/state'
-import OrganSearch from '../practice-class/model/organ-search'
-import { useEventTracking } from '@/helpers/hooks'
-
-export default defineComponent({
-  name: 'liveClass',
-  data() {
-    const sessionSubjectId = sessionStorage.getItem('liveClassSubjectId')
-
-    return {
-      list: [],
-      dataShow: true, // 判断是否有数据
-      loading: false,
-      finished: false,
-      searchStatus: false,
-      openStatus: false,
-      subjectList: [],
-      sessionSubjectId,
-      params: {
-        search: '',
-        courseType: "GROUP",
-        subjectId: (sessionSubjectId ||
-          state.user.data?.subjectId ||
-          null) as any,
-        subjectName: '',
-        groupStatus: 'APPLY',
-        page: 1,
-        rows: 20
-      }
-    }
-  },
-  async mounted() {
-    try {
-      const res = await request.get('/api-student/subject/subjectSelect')
-      this.subjectList = res.data || []
-    } catch {}
-    let subjectName = ''
-    this.subjectList.forEach((item: any) => {
-      item.subjects?.forEach((child: any) => {
-        if (child.id === Number(this.sessionSubjectId)) {
-          subjectName = child.name
-        }
-      })
-    })
-    this.params.subjectName = subjectName || state.user.data?.subjectName || ''
-
-    sessionStorage.removeItem('liveClassSubjectId')
-    useEventTracking('直播课')
-  },
-  methods: {
-    onSort() {
-      this.params.page = 1
-      this.list = []
-      this.dataShow = true // 判断是否有数据
-      this.loading = false
-      this.finished = false
-      this.searchStatus = false
-      this.getList()
-    },
-    onSearch(value: string) {
-      this.params.search = value
-      this.onSort()
-    },
-    async getList() {
-      try {
-        const params: any = {
-          ...this.params
-        }
-        if (state.version) {
-          params.version = state.version || '' // 处理ios审核版本
-          params.platform = 'ios-student'
-        }
-        const res = await request.post(
-          '/api-student/courseGroup/queryPageCourseGroup',
-          {
-            data: {
-              ...params
-            }
-          }
-        )
-        this.loading = false
-        const result = res.data || {}
-        // 处理重复请求数据
-        if (this.list.length > 0 && result.pageNo === 1) {
-          return
-        }
-        this.list = this.list.concat(result.rows || [])
-        this.finished = result.pageNo >= result.totalPage
-        this.params.page = result.pageNo + 1
-        this.dataShow = this.list.length > 0
-      } catch {
-        this.dataShow = false
-        this.finished = true
-      }
-    },
-    onDetail(item: any) {
-      this.params.subjectId &&
-        sessionStorage.setItem('liveClassSubjectId', this.params.subjectId)
-      this.$router.push({
-        path: '/groupDetail',
-        query: {
-          groupId: item.courseGroupId
-        }
-      })
-    }
-  },
-  render() {
-    return (
-      <div class={styles.liveClass}>
-        <Sticky offsetTop={0} position="top">
-          <ColHeader
-            class={styles.classHeader}
-            border={false}
-            isFixed={false}
-            background="transparent"
-          />
-          <ColSearch
-            placeholder="请输入老师名称/课程名称"
-            onSearch={this.onSearch}
-            v-slots={{
-              left: () => (
-                <div
-                  class={styles.label}
-                  onClick={() => {
-                    this.searchStatus = !this.searchStatus
-                    this.openStatus = !this.openStatus
-                  }}
-                >
-                  {this.params.subjectName}
-                  <Icon
-                    classPrefix="iconfont"
-                    name="down"
-                    size={12}
-                    color="#333"
-                  />
-                </div>
-              )
-            }}
-          />
-        </Sticky>
-
-        <div class={styles.banner}>
-          <Image src={banner} />
-        </div>
-
-        {this.dataShow ? (
-          <List
-            v-model:loading={this.loading}
-            finished={this.finished}
-            finishedText=" "
-            class={[styles.liveList]}
-            onLoad={this.getList}
-          >
-            {this.list.map((item: any) => (
-              <LiveItem onClick={this.onDetail} liveInfo={item} />
-            ))}
-          </List>
-        ) : (
-          <ColResult btnStatus={false} classImgSize="SMALL" tips="暂无小组课" />
-        )}
-
-        <Popup
-          show={this.searchStatus}
-          position="bottom"
-          round
-          closeable
-          safe-area-inset-bottom
-          onClose={() => (this.searchStatus = false)}
-          onClosed={() => (this.openStatus = false)}
-        >
-          {this.openStatus && (
-            <OrganSearch
-              subjectList={this.subjectList}
-              onSort={this.onSort}
-              v-model={this.params.subjectId}
-              v-model:subjectName={this.params.subjectName}
-            />
-          )}
-        </Popup>
-      </div>
-    )
-  }
-})

+ 0 - 99
src/student/group-class/live-item.module.less

@@ -1,99 +0,0 @@
-.liveItem {
-  margin: 10px 10px 0;
-  width: auto !important;
-  border-radius: 8px;
-  padding: 10px;
-
-  .liCover {
-    width: 170px;
-    height: 96px;
-    background: #c6c7cb;
-    border-radius: 8px;
-    overflow: hidden;
-    margin-right: 8px;
-    vertical-align: middle;
-  }
-
-  .liTitle {
-    padding-top: 4px;
-    font-size: 14px;
-    font-weight: 600;
-    color: #333333;
-    line-height: 20px;
-    max-width: 150px;
-  }
-
-  .liUserInfo {
-    padding-top: 4px;
-    padding-bottom: 9px;
-    font-size: 12px;
-    color: #6a6a6a;
-    line-height: 16px;
-  }
-
-  .liteachername {
-    display: flex;
-    align-items: center;
-    margin-bottom: 6px;
-  }
-
-  .liteacherIcon {
-    width: 18px;
-    height: 18px;
-    border-radius: 50%;
-    overflow: hidden;
-    margin-right: 4px;
-  }
-
-  .liPrice {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-
-    .price {
-      color: #fa6400;
-      font-size: 14px;
-      margin-right: 10px;
-      font-weight: 600;
-      i {
-        font-style: normal;
-        font-size: 11px;
-      }
-    }
-
-    .classNum {
-      background: #fff1de;
-      border-radius: 4px;
-      font-size: 12px;
-      color: #ff9300;
-      line-height: 18px;
-      padding: 1px 4px;
-    }
-
-    .num,
-    .buyNum {
-      font-size: 12px;
-      color: #ff802c;
-      line-height: 18px;
-    }
-
-    .buyNum {
-      color: #999999;
-      display: flex;
-      align-items: center;
-      line-height: 1;
-    }
-  }
-
-  .subjectName {
-    position: absolute;
-    top: 8px;
-    left: 8px;
-    font-size: 12px;
-    padding: 3px 5px;
-    color: #ffffff;
-    line-height: 1;
-    border-radius: 1px;
-    background: rgba(0, 0, 0, 0.29);
-  }
-}

+ 0 - 109
src/student/group-class/live-item.tsx

@@ -1,109 +0,0 @@
-import { defineComponent, PropType } from 'vue'
-import { Image, CellGroup, Cell, Icon } from 'vant'
-import styles from './live-item.module.less'
-import dayjs from 'dayjs'
-
-import iconSuccess from '@common/images/icon_success.png'
-import iconTeacher from '@common/images/icon_teacher.png'
-
-interface IProps {
-  backgroundPic: string
-  courseGroupId: number
-  courseGroupName: string
-  courseNum: string
-  courseStartTime: number
-  coursePrice: number
-  teacherName: string
-  teacherId: number
-  avatar?: string
-  studentCount: number
-  existBuy: number
-  subjectName: string
-}
-
-export default defineComponent({
-  name: 'liveItem',
-  props: {
-    onClick: {
-      type: Function,
-      default: (item?: any) => {}
-    },
-    liveInfo: {
-      type: Object as PropType<IProps>,
-      default: {}
-    }
-  },
-  render() {
-    return (
-      <Cell
-        center
-        border={false}
-        class={styles.liveItem}
-        onClick={() => this.onClick(this.liveInfo)}
-        v-slots={{
-          icon: () => (
-            <div style={{ position: 'relative' }}>
-              <Image
-                class={styles.liCover}
-                fit="cover"
-                src={this.liveInfo.backgroundPic}
-              />
-              <span class={styles.subjectName}>
-                {this.liveInfo.subjectName}
-              </span>
-            </div>
-          ),
-          title: () => (
-            <div>
-              <div class={[styles.liTitle, 'van-ellipsis']}>
-                {this.liveInfo.courseGroupName}
-              </div>
-              <div class={styles.liUserInfo}>
-                <p class={styles.liteachername}>
-                  {/* 老师: */}
-                  <Image
-                    src={this.liveInfo.avatar || iconTeacher}
-                    class={styles.liteacherIcon}
-                  />
-                  {this.liveInfo.teacherName ||
-                    `游客${this.liveInfo.teacherId}`}
-                </p>
-                <p>
-                  开课时间:
-                  {dayjs(this.liveInfo.courseStartTime).format(
-                    'MM月DD日 HH:mm'
-                  )}
-                </p>
-              </div>
-              <div class={styles.liPrice}>
-                <p>
-                  {this.liveInfo.coursePrice > 0 && (
-                    <span class={styles.price}>
-                      <i>¥</i>
-                      {this.liveInfo.coursePrice}
-                    </span>
-                  )}
-
-                  <span class={styles.classNum}>
-                    {this.liveInfo.courseNum}课时
-                  </span>
-                </p>
-                {this.liveInfo.existBuy === 1 && (
-                  <span class={styles.buyNum}>
-                    {/* <Icon name={iconSuccess} size="15" /> */}
-                    学习
-                  </span>
-                )}
-                {/* : (
-                <span class={styles.num}>
-                   {this.liveInfo.studentCount}人学习
-                </span>
-                ) */}
-              </div>
-            </div>
-          )
-        }}
-      />
-    )
-  }
-})

+ 3 - 16
src/student/teacher-dependent/components/group.tsx

@@ -9,7 +9,7 @@ import { state } from '@/state'
 import Tips from './tips'
 
 export default defineComponent({
-  name: 'live',
+  name: 'group',
   data() {
     const query = this.$route.query
     return {
@@ -80,7 +80,7 @@ export default defineComponent({
   },
   render() {
     return (
-      <>
+      <div>
         <Tips
           type="GROUP"
           class={styles.tips}
@@ -148,20 +148,7 @@ export default defineComponent({
         ) : (
           <ColResult btnStatus={false} classImgSize="SMALL" tips="暂无小组课" />
         )}
-      </>
+      </div>
     )
-
-    {
-      /* <List
-v-model:loading={this.loading}
-finished={this.finished}
-finishedText="没有更多了"
-onLoad={this.getList}
->
-{this.buyUserList.map(item => (
-  <UserList class="mb12" users={item} />
-))}
-</List> */
-    }
   }
 })

+ 5 - 5
src/student/teacher-dependent/components/tips/index.tsx

@@ -24,19 +24,19 @@ export default defineComponent({
     btnTxt: {
       type: String,
       default: '不再提醒'
+    },
+    class: {
+      type: String,
+      default: ''
     }
   },
   emits: ['close', 'confirm'],
   setup(props, { emit }) {
     const isStatus = ref(true)
-
-    console.log(props.type, '1212')
-
     // 获取当前提示是否有缓存
     const getTypeIsCatch = () => {
       const localType = localStorage.getItem('teacher_home_local');
       const formatLocalType = localType ? JSON.parse(localType) : {}
-      console.log(formatLocalType[props.type])
       if(formatLocalType[props.type]) {
         return true
       } else {
@@ -56,7 +56,7 @@ export default defineComponent({
       isStatus.value = !getTypeIsCatch()
     })
     return () => (
-      isStatus.value ? <div class={styles.tipSection}>
+      isStatus.value ? <div class={[styles.tipSection, props.class]}>
       <Icon class={styles.iconCross} onClick={() => {
         emit('close')
         isStatus.value = false

+ 8 - 0
src/teacher/group-class/create-components/course.tsx

@@ -93,6 +93,14 @@ export default defineComponent({
   methods: {
     onChoice(id: number) {
       createState.live.subjectId = id
+
+      let tempStr = ''
+      this.subjectList.forEach((item: any) => {
+        if (id == item.id) {
+          tempStr = item.name
+        }
+      })
+      createState.live.subjectName = tempStr
       this.subjectStatus = false
     },
     onFormatter(val: any) {

+ 1 - 0
src/teacher/group-class/create-components/createState.ts

@@ -28,6 +28,7 @@ export const createState = reactive({
     courseType: 'GROUP',
     name: '',
     subjectId: null as any,
+    subjectName: "",
     courseIntroduce: '',
     courseNum: null as any,
     singleCourseMinutes: 0,

+ 9 - 4
src/teacher/group-class/create-components/detail.tsx

@@ -9,10 +9,12 @@ import { createState } from './createState'
 import styles from './detail.module.less'
 import dayjs from 'dayjs'
 import { postMessage } from '@/helpers/native-message'
+import GroupPlanStep from '@/business-components/group-plan-step'
 interface IProps {
   courseTime: string
   coursePlan: string
-  videoPosterUrl?: string
+  teacherName: string
+  subjectName: string
   roomUid?: string
   liveState?: number
   id?: number | string
@@ -53,6 +55,8 @@ export default defineComponent({
             item.startTime
           ).format('HH:mm')}~${dayjs(item.endTime).format('HH:mm')}`,
           roomUid: item.roomUid,
+          teacherName: state.user.data?.username,
+          subjectName: createState.live.subjectName,
           liveState: item.liveState,
           coursePlan: item.plan,
           id: item.courseId
@@ -145,7 +149,8 @@ export default defineComponent({
           <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
         </SectionDetail>
 
-        <SectionDetail
+        <GroupPlanStep courseInfo={this.courseInfo} />
+        {/* <SectionDetail
           title="课程安排"
           icon="courseList"
           titleShow={false}
@@ -153,10 +158,10 @@ export default defineComponent({
           contentStyle={{ paddingTop: '0' }}
         >
           <CoursePlanStep courseInfo={this.courseInfo} />
-        </SectionDetail>
+        </SectionDetail> */}
 
         <Sticky offsetBottom={0} position="bottom">
-          <div class={['btnGroup', 'btnMore']}>
+          <div class={['btnGroup', 'btnMore']} style={{ paddingTop: '12px' }}>
             <Button
               block
               round

+ 13 - 6
src/teacher/group-class/group-detail.tsx

@@ -14,10 +14,13 @@ import { Button, Popup, Tab, Tabs, Toast } from 'vant'
 import { defineComponent } from 'vue'
 import styles from './group-detail.module.less'
 import ColHeader from '@/components/col-header'
+import GroupPlanStep from '@/business-components/group-plan-step'
 interface IProps {
   courseTime: string
   coursePlan: string
-  videoPosterUrl?: string
+  // videoPosterUrl?: string
+  teacherName: string
+  subjectName: string
   roomUid?: string
   liveState?: number
   id?: number | string
@@ -72,6 +75,7 @@ export default defineComponent({
     courseInfo() {
       const tempArr = [] as IProps[]
       const coursePlanList = this.live.planList || []
+      const live = this.live
       coursePlanList.forEach((item: any) => {
         const startTime = item.startTime || new Date()
         const endTime = item.endTime || new Date()
@@ -80,6 +84,8 @@ export default defineComponent({
             startTime
           ).format('HH:mm')}~${dayjs(endTime).format('HH:mm')}`,
           coursePlan: item.plan,
+          teacherName: live.teacherName,
+          subjectName: live.subjectName,
           roomUid: item.roomUid,
           liveState: item.liveState,
           id: item.courseId
@@ -130,7 +136,6 @@ export default defineComponent({
         }
       )
       this.live = res.data || {}
-
       if (state.platformType === 'TEACHER') {
         this.myself = !res.data.myself
       }
@@ -206,7 +211,9 @@ export default defineComponent({
           <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
         </SectionDetail>
 
-        {this.myself ? (
+        <GroupPlanStep courseInfo={this.courseInfo}
+                  courseId={Number(this.courseId) || 0} />
+        {/* {this.myself ? (
           <SectionDetail title="课程列表" icon="courseList" border={true}>
             <CoursePlanStep
               courseInfo={this.courseInfo}
@@ -249,7 +256,7 @@ export default defineComponent({
               </Tab>
             </Tabs>
           </SectionDetail>
-        )}
+        )} */}
 
         {this.live.status !== 'OUT_SALE' && (
           <>
@@ -278,7 +285,7 @@ export default defineComponent({
               </ColSticky>
             )}
 
-            {this.share == '1' && this.courseInfo.length > 0 && (
+            {/* {this.share == '1' && this.courseInfo.length > 0 && (
               <ColSticky position="bottom" background="white">
                 <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
                   <Button
@@ -293,7 +300,7 @@ export default defineComponent({
                   </Button>
                 </div>
               </ColSticky>
-            )}
+            )} */}
           </>
         )}
 

+ 2 - 2
src/tenant/music/music-detail/new-index.tsx

@@ -618,7 +618,7 @@ export default defineComponent({
         if(partIndex === 999) {
           href += `&part-index=${partIndex}`
         } else {
-          href += `&part-name=${track}`
+          href += `&part-name=${encodeURIComponent(track || "")}`
         }
       // if (location.pathname.includes("accompany-teacher")) {
       //   href += `&systemType=teacher`;
@@ -1048,7 +1048,7 @@ export default defineComponent({
                         }
                         let extraParam: any = {
                           // 'part-index': currentColumn.value.xmlIndex || 0,
-                          'part-name': currentColumn.value.track?.trim(),
+                          'part-name': encodeURIComponent(currentColumn.value.track?.trim() || ''),
                           musicRenderType,
 
                           albumId: route.query.tenantAlbumId || '', // 专辑编号

+ 3 - 3
src/views/music/music-detail/index.tsx

@@ -715,7 +715,7 @@ export default defineComponent({
     if(partIndex === 999) {
       href += `&part-index=${partIndex}`
     } else {
-      href += `&part-name=${track}`
+      href += `&part-name=${encodeURIComponent(track || '')}`
     }
     //   musicRenderType
     //   /** 五线谱 */
@@ -1134,9 +1134,9 @@ export default defineComponent({
                         }
                         let extraParam: any = {
                           // 'part-index': currentColumn.value.track || 0,
-                          'part-name': currentColumn.value?.track?.trim(),
+                          'part-name': encodeURIComponent(currentColumn.value?.track?.trim() || ''),
                           musicRenderType,
-                          instrumentId: staffData.instrumentId
+                          instrumentId: route.query.instrumentId
                         }
                         // 有专辑id
                         if (route.query.tenantAlbumId) {

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません