lex-xin 7 månader sedan
förälder
incheckning
9af77bc9d7
27 ändrade filer med 167 tillägg och 233 borttagningar
  1. 9 6
      src/components/col-upload-video/index.module.less
  2. 6 7
      src/components/col-upload-video/index.tsx
  3. 5 3
      src/components/col-upload/index.module.less
  4. 2 4
      src/components/col-upload/index.tsx
  5. 4 3
      src/student/teacher-dependent/components/group.tsx
  6. 4 37
      src/student/teacher-dependent/components/live.tsx
  7. 8 10
      src/student/teacher-dependent/components/music.tsx
  8. 12 6
      src/student/teacher-dependent/components/video-item/index.tsx
  9. 1 14
      src/student/teacher-dependent/components/video.tsx
  10. 13 13
      src/student/teacher-dependent/components/vip.tsx
  11. 1 4
      src/student/teacher-dependent/teacher-home.tsx
  12. 3 3
      src/styles/index.less
  13. 10 54
      src/teacher/group-class/group-detail.tsx
  14. 3 2
      src/teacher/live-class/create-components/arrange.tsx
  15. 8 7
      src/teacher/live-class/create-components/course-plan.tsx
  16. 10 10
      src/teacher/live-class/live-detail.tsx
  17. 3 3
      src/teacher/statistics/exercise-detail/exercise-detail.module.less
  18. 9 3
      src/teacher/statistics/exercise-detail/exercise-detail.tsx
  19. 16 10
      src/teacher/statistics/practice-statistics-detail/index.tsx
  20. 1 3
      src/teacher/teacher-cert/cert-two.tsx
  21. 4 0
      src/teacher/teacher-cert/index.module.less
  22. 13 12
      src/teacher/teacher-cert/index.tsx
  23. 6 0
      src/teacher/video-class/video-class-detail.module.less
  24. 2 4
      src/teacher/video-class/video-class-detail.tsx
  25. 7 6
      src/teacher/video-class/video-detail.tsx
  26. 1 1
      src/views/music/component/song/index.module.less
  27. 6 8
      src/views/music/list/index.tsx

+ 9 - 6
src/components/col-upload-video/index.module.less

@@ -5,16 +5,19 @@
   border-radius: 10px;
   box-sizing: border-box;
   position: relative;
+  &.uploader-section-value {
+    border: none;
+  }
   .img-close {
     position: absolute;
-    top: 8px;
-    right: 10px;
-    z-index: 99999;
+    top: 4px;
+    right: 4px;
+    z-index: 199;
     font-size: 16px;
-    background-color: #333;
+    // background-color: #333;
     color: #fff;
-    width: 22px;
-    height: 22px;
+    width: 20px;
+    height: 20px;
     display: flex;
     justify-content: center;
     align-items: center;

+ 6 - 7
src/components/col-upload-video/index.tsx

@@ -1,14 +1,13 @@
-import request from '@/helpers/request'
-import { Icon, Toast, Uploader, Image } from 'vant'
+import { Icon, Toast, Uploader } from 'vant'
 import { defineComponent } from 'vue'
 import styles from './index.module.less'
 import { useCustomFieldValue } from '@vant/use'
 import { browser } from '@/helpers/utils'
-import umiRequest from 'umi-request'
 import iconUploader from '@common/images/icon_uploader_video.png'
-import iconUploadPoster from '@common/images/icon_upload_poster.png'
+import iconDelete from '@common/images/icon-delete.png'
+// import iconUploadPoster from '@common/images/icon_upload_poster.png'
 import { postMessage } from '@/helpers/native-message'
-import { getOssUploadUrl, state } from '@/state'
+import { getOssUploadUrl } from '@/state'
 import { getUploadSign, onOnlyFileUpload } from '@/helpers/oss-file-upload'
 
 export default defineComponent({
@@ -156,10 +155,10 @@ export default defineComponent({
   render() {
     useCustomFieldValue(() => this.modelValue)
     return (
-      <div class={styles['uploader-section']}>
+      <div class={[styles['uploader-section'], this.modelValue ? styles['uploader-section-value'] : '']}>
         {this.modelValue && this.deletable ? (
           <Icon
-            name="cross"
+            name={iconDelete}
             onClick={this.onClose}
             class={styles['img-close']}
           />

+ 5 - 3
src/components/col-upload/index.module.less

@@ -5,12 +5,14 @@
   border-radius: 10px;
   box-sizing: border-box;
   position: relative;
-
+  &.uploader-section-value {
+    border: none;
+  }
   .img-close {
     position: absolute;
     top: 4px;
     right: 4px;
-    z-index: 99;
+    z-index: 98;
     font-size: 16px;
     // background-color: #333;
     color: #fff;
@@ -66,7 +68,7 @@
   .uploadImg {
     width: 100%;
     height: 100%;
-    // border-radius: 10px;
+    border-radius: 10px;
     overflow: hidden;
   }
 }

+ 2 - 4
src/components/col-upload/index.tsx

@@ -4,11 +4,9 @@ import styles from './index.module.less'
 import ColCropper from '../col-cropper'
 import { useCustomFieldValue } from '@vant/use'
 import { postMessage } from '@/helpers/native-message'
-import umiRequest from 'umi-request'
 import iconUploader from '@common/images/icon_uploader.png'
 import iconDelete from '@common/images/icon-delete.png'
-import request from '@/helpers/request'
-import { getOssUploadUrl, state } from '@/state'
+import { getOssUploadUrl } from '@/state'
 import { getUploadSign, onOnlyFileUpload } from '@/helpers/oss-file-upload'
 
 export default defineComponent({
@@ -173,7 +171,7 @@ export default defineComponent({
   render() {
     useCustomFieldValue(() => this.modelValue)
     return (
-      <div class={styles['uploader-section']}>
+      <div class={[styles['uploader-section'], this.modelValue ? styles['uploader-section-value'] : '']}>
         {this.modelValue && !this.disabled && this.deletable ? (
           <Icon
             name={iconDelete}

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

@@ -7,6 +7,7 @@ import request from '@/helpers/request'
 import dayjs from 'dayjs'
 import { state } from '@/state'
 import Tips from './tips'
+import { moneyFormat } from '@/helpers/utils'
 
 export default defineComponent({
   name: 'group',
@@ -98,7 +99,7 @@ export default defineComponent({
             v-model:loading={this.loading}
             immediateCheck={false}
             finished={this.finished}
-            finishedText="没有更多了"
+            finishedText=" "
           >
             {this.list.map((item: any) => (
               <CellGroup
@@ -133,8 +134,8 @@ export default defineComponent({
                       {item.coursePrice > 0 && (
                         <span class={styles.priceNum}>
                           <i>¥</i>
-                          {(this as any).$filters.moneyFormat(
-                            item.coursePrice
+                          {moneyFormat(
+                            item.coursePrice, '0.00'
                           )}
                         </span>
                       )}

+ 4 - 37
src/student/teacher-dependent/components/live.tsx

@@ -11,6 +11,7 @@ import request from '@/helpers/request'
 import dayjs from 'dayjs'
 import { state } from '@/state'
 import Tips from './tips'
+import { moneyFormat } from '@/helpers/utils'
 
 export default defineComponent({
   name: 'live',
@@ -96,7 +97,7 @@ export default defineComponent({
             v-model:loading={this.loading}
             immediateCheck={false}
             finished={this.finished}
-            finishedText="没有更多了"
+            finishedText=" "
           >
             {this.list.map((item: any) => (
               <CellGroup
@@ -136,8 +137,8 @@ export default defineComponent({
                         <>
                           <span class={styles.priceNum}>
                             <i>¥</i>
-                            {(this as any).$filters.moneyFormat(
-                              item.coursePrice
+                            {moneyFormat(
+                              item.coursePrice, '0.00'
                             )}
                           </span>
                         </>
@@ -149,27 +150,6 @@ export default defineComponent({
                     </div>
                   </div>
                 </div>
-                {/* <Cell
-                  titleStyle={{ color: '#666666', fontSize: '13px' }}
-                  v-slots={{
-                    title: () => (
-                      <span class={styles.timerString}>
-                        {this.formatTime(item.salesStartDate)}
-                      </span>
-                    ),
-                    default: () => (
-                      <div>
-                        {item.existBuy === 1 ? (
-                          <span class={styles.buyNum}>学习</span>
-                        ) : (
-                          <span class={styles.num}>
-                            {item.studentCount}人学习
-                          </span>
-                        )}
-                      </div>
-                    )
-                  }}
-                /> */}
               </CellGroup>
             ))}
           </List>
@@ -178,18 +158,5 @@ export default defineComponent({
         )}
       </>
     )
-
-    {
-      /* <List
-v-model:loading={this.loading}
-finished={this.finished}
-finishedText="没有更多了"
-onLoad={this.getList}
->
-{this.buyUserList.map(item => (
-  <UserList class="mb12" users={item} />
-))}
-</List> */
-    }
   }
 })

+ 8 - 10
src/student/teacher-dependent/components/music.tsx

@@ -35,16 +35,14 @@ export default defineComponent({
   },
   render() {
     return (
-      <>
-        <MusicList
-          hideSearch
-          onlySearch
-          height={this.height}
-          myself
-          onItemClick={this.onItemClick}
-          teacherId={this.teacherId}
-        />
-      </>
+      <MusicList
+        hideSearch
+        onlySearch
+        height={this.height}
+        myself
+        onItemClick={this.onItemClick}
+        teacherId={this.teacherId}
+      />
     )
   }
 })

+ 12 - 6
src/student/teacher-dependent/components/video-item/index.tsx

@@ -3,6 +3,7 @@ import { Image } from 'vant'
 import styles from './index.module.less'
 
 import iconTeacher from '@common/images/icon_teacher.png'
+import { moneyFormat } from '@/helpers/utils'
 
 interface VideoItemProps {
   id?: number
@@ -48,8 +49,16 @@ export default defineComponent({
         <div class={styles.viSection}>
           <div class={[styles.viTitle, 'van-ellipsis']}>{item?.lessonName}</div>
           <div class={styles.tags}>
-            {item?.musicNum > 0 ? <span class={styles.label}>{item?.musicNum}首曲目</span> : ''}
-            {item?.lessonCount > 0 ? <span class={styles.label}>{item?.lessonCount}课时</span> : ''}
+            {item?.musicNum > 0 ? (
+              <span class={styles.label}>{item?.musicNum}首曲目</span>
+            ) : (
+              ''
+            )}
+            {item?.lessonCount > 0 ? (
+              <span class={styles.label}>{item?.lessonCount}课时</span>
+            ) : (
+              ''
+            )}
           </div>
           <div class={styles.viPrice}>
             <div class={styles.viUserNum}>{item?.countStudent}人学习</div>
@@ -61,7 +70,7 @@ export default defineComponent({
                   {item?.lessonPrice > 0 && (
                     <>
                       <i>¥</i>
-                      {item?.lessonPrice}
+                      {moneyFormat(item?.lessonPrice, '0.00')}
                     </>
                   )}
                   {item?.lessonPrice <= 0 && item.auditVersion !== 0 && (
@@ -75,10 +84,7 @@ export default defineComponent({
                 </>
               )}
             </span>
-            
           </div>
-
-          
         </div>
       </div>
     )

+ 1 - 14
src/student/teacher-dependent/components/video.tsx

@@ -75,7 +75,7 @@ export default defineComponent({
             v-model:loading={this.loading}
             finished={this.finished}
             immediateCheck={false}
-            finishedText="没有更多了"
+            finishedText=" "
             onLoad={this.getList}
           >
             {this.list.map(item => (
@@ -87,18 +87,5 @@ export default defineComponent({
         )}
       </>
     )
-
-    {
-      /* <List
-v-model:loading={this.loading}
-finished={this.finished}
-finishedText="没有更多了"
-onLoad={this.getList}
->
-{this.buyUserList.map(item => (
-  <UserList class="mb12" users={item} />
-))}
-</List> */
-    }
   }
 })

+ 13 - 13
src/student/teacher-dependent/components/vip.tsx

@@ -9,11 +9,9 @@ import {
   CellGroup,
   Dialog,
   Stepper,
-  Sticky,
   Tag,
   Popup,
-  Toast,
-  Icon
+  Toast
 } from 'vant'
 import { defineComponent } from 'vue'
 import { getWeekCh } from '@/helpers/utils'
@@ -21,7 +19,7 @@ import styles from './practice.module.less'
 import { orderStatus } from '@/views/order-detail/orderStatus'
 import ColResult from '@/components/col-result'
 import { tradeOrder } from '@/student/trade/tradeOrder'
-import icon3 from '../images/icon3.png'
+// import icon3 from '../images/icon3.png'
 import Tips from './tips'
 import { useStatisticTracking } from '@/helpers/hooks'
 
@@ -30,7 +28,7 @@ export default defineComponent({
   props: {
     userInfo: {
       type: Object,
-      default: {}
+      default: () => ({})
     }
   },
   data() {
@@ -129,7 +127,7 @@ export default defineComponent({
   computed: {
     showSelectList() {
       const arr: any = this.selectCourseList
-      let list = [...arr]
+      const list = [...arr]
       list.forEach((item: any) => {
         item.title =
           dayjs(item.startTime).format('YYYY-MM-DD') +
@@ -166,12 +164,12 @@ export default defineComponent({
     async getList(date?: Date) {
       try {
         const tempDate = date || dayjs().add(1, 'day').toDate()
-        let params = {
+        const params = {
           day: dayjs(tempDate).format('DD'),
           month: dayjs(tempDate).format('MM'),
           year: dayjs(tempDate).format('YYYY')
         }
-        let res = await request.post(
+        const res = await request.post(
           '/api-student/courseSchedule/createPracticeCourseCalendar',
           {
             data: {
@@ -183,17 +181,19 @@ export default defineComponent({
           }
         )
         const result = res.data || []
-        let tempObj = {}
+        const tempObj = {}
         result.forEach((item: any) => {
           tempObj[item.date] = item
         })
         this.calendarList = tempObj
         this.calendarStatus = result.length > 0
-      } catch {}
+      } catch {
+        //
+      }
     },
     onSelectDay(obj: any) {
       const result = obj || []
-      let list = [...this.selectCourseList] as any
+      const list = [...this.selectCourseList] as any
 
       result.forEach((item: any) => {
         const isExist = list.some(
@@ -202,7 +202,7 @@ export default defineComponent({
         !isExist && list.push({ ...item })
       })
       // 去掉不在
-      let tempList: any[] = []
+      const tempList: any[] = []
       list.forEach((item: any) => {
         const isExist = result.some(
           (course: any) => course.startTime === item.startTime
@@ -232,7 +232,7 @@ export default defineComponent({
     },
     async _lookCourse(callBack?: Function) {
       try {
-        let times = [] as any
+        const times = [] as any
         this.selectCourseList.forEach((item: any) => {
           times.push({
             startTime: item.startTime,

+ 1 - 4
src/student/teacher-dependent/teacher-home.tsx

@@ -1,11 +1,10 @@
 import ColHeader from '@/components/col-header'
-import { defineComponent, provide } from 'vue'
+import { defineComponent } from 'vue'
 import styles from './teacher-home.module.less'
 import { Popup, Tab, Tabs } from 'vant'
 import Practice from './components/practice'
 import Live from './components/live'
 import VideoList from './components/video'
-import Music from './components/music'
 import request from '@/helpers/request'
 import { listenerMessage } from '@/helpers/native-message'
 import { useEventListener, useWindowScroll } from '@vueuse/core'
@@ -13,7 +12,6 @@ import TeacherHeader from './model/teacher-header'
 import { useRect } from '@vant/use'
 import { useEventTracking } from '@/helpers/hooks'
 import Vip from './components/vip'
-import Single from './components/single'
 import JoinChat from './model/join-chat'
 import FansList from './model/fans-list'
 import MusicList from '@/views/music/list'
@@ -183,7 +181,6 @@ export default defineComponent({
               {this.userInfo.introduction && <div class={styles.singleContent}>
               {this.userInfo.introduction}
             </div>}
-            
           </div>
         </div>
         <Tabs

+ 3 - 3
src/styles/index.less

@@ -126,7 +126,7 @@ body {
 
 .btnGroup {
   padding: 0 28px;
-  padding-bottom: 15px;
+  padding-bottom: 30px;
 }
 
 .btnMore {
@@ -135,11 +135,11 @@ body {
 
   // :global {
   .van-button {
-    width: 48% !important;
+    width: 50% !important;
   }
 
   .van-button+.van-button {
-    margin-left: 6px;
+    margin-left: 12px;
   }
 
   // }

+ 10 - 54
src/teacher/group-class/group-detail.tsx

@@ -15,6 +15,7 @@ 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'
+import TheSticky from '@/components/the-sticky'
 interface IProps {
   courseTime: string
   coursePlan: string
@@ -213,56 +214,11 @@ export default defineComponent({
 
         <GroupPlanStep courseInfo={this.courseInfo}
                   courseId={Number(this.courseId) || 0} />
-        {/* {this.myself ? (
-          <SectionDetail title="课程列表" icon="courseList" border={true}>
-            <CoursePlanStep
-              courseInfo={this.courseInfo}
-              courseId={Number(this.courseId) || 0}
-            />
-          </SectionDetail>
-        ) : (
-          <SectionDetail
-            title="课程列表"
-            icon="courseList"
-            titleShow={false}
-            contentStyle={{ paddingTop: '0' }}
-          >
-            <Tabs color="var(--van-primary)" lineWidth={20} sticky>
-              <Tab title="课程" titleClass="van-hairline--bottom">
-                <CoursePlanStep
-                  courseInfo={this.courseInfo}
-                  courseId={Number(this.courseId) || 0}
-                />
-              </Tab>
-              <Tab title="学员列表" titleClass="van-hairline--bottom">
-                {this.studentList.map((item: any) => (
-                  <UserList
-                    class="mb12"
-                    users={{
-                      avatar: item.avatar,
-                      studentId: item.studentId,
-                      studentName: item.userName,
-                      createTime: item.createTime
-                    }}
-                  />
-                ))}
-                {this.studentList.length === 0 && (
-                  <ColResult
-                    tips="暂无购买学员"
-                    classImgSize="SMALL"
-                    btnStatus={false}
-                  />
-                )}
-              </Tab>
-            </Tabs>
-          </SectionDetail>
-        )} */}
-
         {this.live.status !== 'OUT_SALE' && (
           <>
             {this.courseOffStatus && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '10px', background: '#fff' }}>
                   <Button
                     block
                     round
@@ -272,22 +228,22 @@ export default defineComponent({
                     取消课程
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
 
             {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '10px', background: '#fff' }}>
                   <Button block round type="primary" onClick={this.onJoinRoom}>
                     进入直播间
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
 
             {/* {this.share == '1' && this.courseInfo.length > 0 && (
               <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+                <div class={['btnGroup']} style={{ paddingTop: '10px' }}>
                   <Button
                     block
                     round
@@ -304,7 +260,7 @@ export default defineComponent({
           </>
         )}
 
-        <Popup
+        {/* <Popup
           v-model:show={this.shareStatus}
           style={{ background: 'transparent' }}
         >
@@ -331,7 +287,7 @@ export default defineComponent({
               }}
             />
           </ColShare>
-        </Popup>
+        </Popup> */}
       </div>
     )
   }

+ 3 - 2
src/teacher/live-class/create-components/arrange.tsx

@@ -7,6 +7,7 @@ import dayjs from 'dayjs'
 import { createState } from './createState'
 import { state } from '@/state'
 import { getWeekCh } from '@/helpers/utils'
+import TheSticky from '@/components/the-sticky'
 
 export default defineComponent({
   name: 'arrange',
@@ -303,7 +304,7 @@ export default defineComponent({
             <div class={['mb12']}></div>
           </>
         )}
-        <Sticky offsetBottom={0} position="bottom">
+        <TheSticky position="bottom">
           <div class={['btnGroup', 'btnMore']}>
             <Button
               block
@@ -322,7 +323,7 @@ export default defineComponent({
               下一步
             </Button>
           </div>
-        </Sticky>
+        </TheSticky>
 
         <Popup show={this.selectStatus} class={styles.selectPopup}>
           <div class={styles.selectContainer}>

+ 8 - 7
src/teacher/live-class/create-components/course-plan.tsx

@@ -1,9 +1,10 @@
-import { Button, Field, Form, Sticky } from 'vant'
+import { Button, Field, Form } from 'vant'
 import { defineComponent } from 'vue'
 import { basePlan, createState } from './createState'
 import styles from './course-plan.module.less'
 import ColField from '@/components/col-field'
 import ColFieldGroup from '@/components/col-field-group'
+import TheSticky from '@/components/the-sticky'
 
 export default defineComponent({
   name: 'course-plan',
@@ -11,8 +12,8 @@ export default defineComponent({
     return {}
   },
   async mounted() {
-    let list = createState.live.coursePlanList
-    let listLength = list.length || 0
+    const list = createState.live.coursePlanList
+    const listLength = list.length || 0
     console.log(list)
     if (createState.live.courseNum > listLength) {
       for (let i = 0; i < createState.live.courseNum - listLength; i++) {
@@ -26,7 +27,7 @@ export default defineComponent({
   },
   methods: {
     async addPlan() {
-      let list = createState.live.coursePlanList || []
+      const list = createState.live.coursePlanList || []
       list.push({
         plan: '',
         startTime: '',
@@ -36,7 +37,7 @@ export default defineComponent({
       createState.live.coursePlanList = list
     },
     async delPlan(index?: number) {
-      let list = createState.live.coursePlanList || []
+      const list = createState.live.coursePlanList || []
       list.splice(index || list.length - 1, 1)
       createState.live.coursePlanList = list
     }
@@ -64,7 +65,7 @@ export default defineComponent({
             </ColFieldGroup>
           ))}
 
-        <Sticky offsetBottom={0} position="bottom">
+        <TheSticky position="bottom">
           <div class={['btnGroup', 'btnMore']}>
             <Button
               block
@@ -84,7 +85,7 @@ export default defineComponent({
               下一步
             </Button>
           </div>
-        </Sticky>
+        </TheSticky>
       </Form>
     )
   }

+ 10 - 10
src/teacher/live-class/live-detail.tsx

@@ -14,6 +14,7 @@ import { Button, Popup, Sticky, Tab, Tabs, Toast } from 'vant'
 import { defineComponent } from 'vue'
 import styles from './live-detail.module.less'
 import ColHeader from '@/components/col-header'
+import TheSticky from '@/components/the-sticky'
 interface IProps {
   courseTime: string
   coursePlan: string
@@ -250,12 +251,11 @@ export default defineComponent({
             </Tabs>
           </SectionDetail>
         )}
-
         {this.live.status !== 'OUT_SALE' && (
           <>
             {this.courseOffStatus && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '10px', background: '#fff' }}>
                   <Button
                     block
                     round
@@ -265,22 +265,22 @@ export default defineComponent({
                     取消课程
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
 
             {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '10px', background: '#fff' }}>
                   <Button block round type="primary" onClick={this.onJoinRoom}>
                     进入直播间
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
 
             {this.share == '1' && this.courseInfo.length > 0 && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '10px', background: '#fff' }}>
                   <Button
                     block
                     round
@@ -292,7 +292,7 @@ export default defineComponent({
                     分享
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
           </>
         )}

+ 3 - 3
src/teacher/statistics/exercise-detail/exercise-detail.module.less

@@ -8,7 +8,7 @@
 
   .headerContent {
     min-height: 158px;
-    margin-bottom: 70px;
+    margin-bottom: 35px;
     position: relative;
 
     .userInfo {
@@ -51,14 +51,14 @@
 
     .headerCount {
       position: absolute;
-      bottom: -70px;
+      bottom: -35px;
       display: flex;
       align-items: center;
       margin: 0 14px;
       width: calc(100% - 28px);
       background-color: #fff;
       border-radius: 12px;
-      height: 100px;
+      height: 65px;
       .headerItem {
         position: relative;
         flex-basis: 33.33%;

+ 9 - 3
src/teacher/statistics/exercise-detail/exercise-detail.tsx

@@ -32,6 +32,11 @@ export default defineComponent({
         trainNum: 0,
         trainTime: 0
       },
+      userInfo: {
+        avatar: '',
+        username: '',
+        subjectName: ''
+      },
       timeStatus: false,
       currentDate: new Date(),
       list: [],
@@ -75,6 +80,7 @@ export default defineComponent({
         // 在第一页的时候才处理数据显示
         if (result.detail.pageNo === 1) {
           this.userTrainOverView = result.userTrainOverView
+          this.userInfo = result.userInfo
         }
         // 处理重复请求数据
         if (this.list.length > 0 && result.detail.pageNo === 1) {
@@ -108,9 +114,9 @@ export default defineComponent({
                 <Image class={styles.headerImg} src={recordBg} />
 
                 <div class={styles.userInfo}>
-                  <img class={styles.userImg} src={iconStudent} />
-                  <span class={styles.userName}>王曼曼曼曼曼曼</span>
-                  <span class={styles.subjectName}>长笛</span>
+                  <img class={styles.userImg} src={this.userInfo.avatar || iconStudent} />
+                  <span class={styles.userName}>{this.userInfo.username}</span>
+                  {this.userInfo.subjectName ? <span class={styles.subjectName}>{this.userInfo.subjectName}</span> : ''}
                 </div>
 
                 <div class={styles.headerCount}>

+ 16 - 10
src/teacher/statistics/practice-statistics-detail/index.tsx

@@ -122,15 +122,21 @@ export default defineComponent({
             }
           }
         )
-        console.log(data, 'data')
-
-        // promisefiyPostMessage({
-        //   api: 'downloadFile',
-        //   content: {
-        //     downloadUrl: staffData.musicPdfUrl,
-        //     fileName: songName
-        //   }
-        // })
+
+        const pathname = data || ''
+        if (pathname) {
+          const filenameWithExtension = pathname.split('/').pop()
+          const filename = filenameWithExtension.split('.')[0]
+          console.log(filename) // 输出: page
+          // 发送消息通知移动端下载文件
+          promisefiyPostMessage({
+            api: 'downloadFile',
+            content: {
+              downloadUrl: pathname,
+              fileName: filename
+            }
+          })
+        }
       } catch {
         //
       }
@@ -306,7 +312,7 @@ export default defineComponent({
       router.push({
         path: '/exercise-detail',
         query: {
-          studentId: item.userId || '',
+          studentId: item.userId || ''
         }
       })
     }

+ 1 - 3
src/teacher/teacher-cert/cert-two.tsx

@@ -2,14 +2,12 @@ import { defineComponent } from 'vue'
 import ColField from '@/components/col-field'
 import SubjectModel from '../../business-components/subject-list'
 import styles from './cert-two.module.less'
-import { Button, Col, Dialog, Field, Icon, Popup, Row, Tag } from 'vant'
+import { Button, Col, Dialog, Field, Icon, Row, Tag } from 'vant'
 import { teacherState } from './teacherState'
-
 import icon1 from './images/icon_1.png'
 import icon2 from './images/icon_2.png'
 import icon3 from './images/icon_3.png'
 import ColPopup from '@/components/col-popup'
-import request from '@/helpers/request'
 import ColFieldGroup from '@/components/col-field-group'
 import ColUploadVideo from '@/components/col-upload-video'
 import ColUpload from '@/components/col-upload'

+ 4 - 0
src/teacher/teacher-cert/index.module.less

@@ -1,3 +1,7 @@
 .teacher-cert {
   overflow: hidden;
+
+  .btnGroup {
+    padding-bottom: 30px;
+  }
 }

+ 13 - 12
src/teacher/teacher-cert/index.tsx

@@ -1,7 +1,6 @@
-import { Button, Sticky, Toast } from 'vant'
+import { Button, Toast } from 'vant'
 import { defineComponent } from 'vue'
 import styles from './index.module.less'
-import CertInfo from './cert-info'
 import ColProtocol from '@/components/col-protocol'
 import { teacherState } from './teacherState'
 import Steps from './steps'
@@ -19,7 +18,6 @@ import { postMessage } from '@/helpers/native-message'
 export default defineComponent({
   name: 'teacherCert',
   data() {
-    const query = this.$route.query
     return {
       agreeStatus: false
     }
@@ -31,10 +29,11 @@ export default defineComponent({
       teacherState.authStatus =
         entryStatus === 'DOING' || entryStatus === 'PASS' ? true : false
       // 如果已经认证,则不用获取声部信息
-      if (teacherState.authStatus) {
-        teacherState.active = teacherState.authStatus ? 4 : 1
-        return
-      }
+      // if (teacherState.authStatus) {
+      //   teacherState.active = teacherState.authStatus ? 4 : 1
+      //   return
+      // }
+      teacherState.active = 1
 
       if (teacherState.subjectList.length <= 0) {
         const res = await request.get('/api-teacher/subject/subjectSelect')
@@ -112,7 +111,9 @@ export default defineComponent({
           })
         }
         teacherState.active = 2
-      } catch {}
+      } catch {
+        // 
+      }
     },
     next2() {
       if (!teacherState.teacherCert.subjectId) {
@@ -162,14 +163,14 @@ export default defineComponent({
         <div>
           {teacherState.active != 4 ? (
             <>
-              {browser().isApp ? <ColHeader /> : ''}
+              {!browser().isApp ? <ColHeader /> : ''}
               <Steps style={{ marginBottom: '12px' }} />
             </>
           ) : null}
           {teacherState.active === 1 ? (
             <>
               <CertOne />
-              <div class={'btnGroup'}>
+              <div class={['btnGroup', styles.btnGroup]}>
                 <ColProtocol
                   v-model={this.agreeStatus}
                   prototcolType="REGISTER"
@@ -188,7 +189,7 @@ export default defineComponent({
           {teacherState.active === 2 ? (
             <>
               <CertTwo />
-              <div class={['btnGroup', 'btnMore']}>
+              <div class={['btnGroup', 'btnMore', styles.btnGroup]}>
                 <Button block round type="primary" plain onClick={this.prev}>
                   上一步
                 </Button>
@@ -205,7 +206,7 @@ export default defineComponent({
           {teacherState.active === 3 ? (
             <>
               <CertThree />
-              <div class={['btnGroup', 'btnMore']}>
+              <div class={['btnGroup', 'btnMore', styles.btnGroup]}>
                 <Button block round type="primary" plain onClick={this.prev}>
                   上一步
                 </Button>

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

@@ -1,4 +1,5 @@
 .video-class-detail {
+  --message-field: 30px;
   .cell {
     // margin-bottom: 6px;
   }
@@ -156,4 +157,9 @@
   bottom: 0;
   left: 0;
   right: 0;
+  :global {
+    .van-field {
+      padding-bottom: var(--message-field);
+    }
+  }
 }

+ 2 - 4
src/teacher/video-class/video-class-detail.tsx

@@ -6,12 +6,10 @@ import request from '@/helpers/request'
 import {
   Cell,
   Icon,
-  Rate,
   Tab,
   Tabs,
   Image,
   Button,
-  Sticky,
   Field,
   List,
   Toast
@@ -308,9 +306,9 @@ export default defineComponent({
             <div
               style={{
                 overflowY: 'auto',
-                height: `calc(100vh - var(--van-tabs-line-height) - var(--header-height) - (var(--van-cell-vertical-padding) * 2 + var( --van-cell-line-height)))`,
+                height: `calc(100vh - var(--van-tabs-line-height) - var(--message-field) - var(--header-height) - (var(--van-cell-vertical-padding) * 2 + var( --van-cell-line-height)))`,
                 marginBottom:
-                  'calc(var(--van-cell-vertical-padding) * 2 + var( --van-cell-line-height))'
+                  'calc(var(--van-cell-vertical-padding) * 2 + var( --van-cell-line-height) + var(--message-field))'
               }}
             >
               {this.dataShow ? (

+ 7 - 6
src/teacher/video-class/video-detail.tsx

@@ -13,6 +13,7 @@ import LiveItem from '@/views/live-class/live-item'
 import { state } from '@/state'
 import { postMessage } from '@/helpers/native-message'
 import ColHeader from '@/components/col-header'
+import TheSticky from '@/components/the-sticky'
 export default defineComponent({
   name: 'VideoDetail',
   data() {
@@ -282,8 +283,8 @@ export default defineComponent({
         {this.shelvesFlag === 1 && (
           <>
             {this.share == '1' && this.detailList.length > 0 && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ background: '#fff', paddingTop: '10px' }}>
                   <Button
                     block
                     round
@@ -295,11 +296,11 @@ export default defineComponent({
                     分享课程
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
             {this.share != '1' && this.detailList.length > 0 && (
-              <ColSticky position="bottom" background="white">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+              <TheSticky position="bottom">
+                <div class={['btnGroup']} style={{ background: '#fff', paddingTop: '10px' }}>
                   <Button
                     block
                     round
@@ -309,7 +310,7 @@ export default defineComponent({
                     下架
                   </Button>
                 </div>
-              </ColSticky>
+              </TheSticky>
             )}
           </>
         )}

+ 1 - 1
src/views/music/component/song/index.module.less

@@ -66,7 +66,7 @@
       margin-right: 6px;
     }
     .singer {
-      max-width: 50px;
+      max-width: 50px !important;
       font-size: 12px;
       color: #999;
     }

+ 6 - 8
src/views/music/list/index.tsx

@@ -1,13 +1,11 @@
 import {
-  computed,
   defineComponent,
-  nextTick,
   onMounted,
   reactive,
-  ref,
-  watch
+  ref
 } from 'vue'
-import { Sticky, List, Popup, Icon, Switch, Tabs, Tab, Button } from 'vant'
+import { Sticky, List, Popup, Icon, Tabs, Tab, Button } from 'vant'
+import { postMessage } from '@/helpers/native-message'
 import Search from '@/components/col-search'
 import request from '@/helpers/request'
 // import Item from './item'
@@ -17,17 +15,17 @@ import ColResult from '@/components/col-result'
 import styles from './index.module.less'
 import { getRandomKey } from '../music'
 import { openDefaultWebView, state as baseState } from '@/state'
-import SelectSubject from '../search/select-subject'
+// import SelectSubject from '../search/select-subject'
 import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 import Song from '../component/song'
 import ColHeader from '@/components/col-header'
-import { useRect } from '@vant/use'
+// import { useRect } from '@vant/use'
 import { useAsyncState } from '@vueuse/core'
 import bgImg from './icons/bgImg.png'
 import iconSearch from './icons/icon_search.png'
 import { browser } from '@/helpers/utils'
 import TheSticky from '@/components/the-sticky'
-import deepClone from '@/helpers/deep-clone'
+// import deepClone from '@/helpers/deep-clone'
 
 const noop = () => {
   //