lex 2 年之前
父节点
当前提交
8a0e6151ec

+ 17 - 11
src/school/orchestra/compontent/information.tsx

@@ -93,8 +93,14 @@ export default defineComponent({
 
     const getDetails = async () => {
       try {
-        const { data } = await request.get('/api-school/orchestra/detail/' + route.query.id)
+        const { data } = await request.get('/api-school/classGroup/statistics', {
+          params: {
+            orchestraId: route.query.id
+          }
+        })
         state.orchestraInfo = data || {}
+
+        initNumCountUp()
       } catch {
         //
       }
@@ -142,17 +148,17 @@ export default defineComponent({
     const initNumCountUp = () => {
       nextTick(() => {
         // 在读学生
-        new CountUp('currentStudentNum', Math.random() * 1000).start()
-        new CountUp('time1', Math.random() * 100).start()
-        new CountUp('time2', Math.random() * 100).start()
-        new CountUp('time3', Math.random() * 100).start()
+        const orchestraInfo = state.orchestraInfo
+        new CountUp('currentStudentNum', orchestraInfo.studentNum || 0).start()
+        new CountUp('time1', orchestraInfo.attendanceRate || 0).start()
+        new CountUp('time2', orchestraInfo.homeworkRate || 0).start()
+        new CountUp('time3', orchestraInfo.homeworkQualifiedRate || 0).start()
       })
     }
 
     onMounted(() => {
       getDetails()
       getList()
-      initNumCountUp()
     })
 
     return () => (
@@ -183,26 +189,26 @@ export default defineComponent({
         <Grid border={false} class={styles.gridContainer}>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="currentStudentNum">0</span>
+              <span id="currentStudentNum">{state.orchestraInfo.studentNum || 0}</span>
               <i>名</i>
             </p>
             <p class={styles.name}>在读学生</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time1">0</span>%
+              <span id="time1">{state.orchestraInfo.attendanceRate || 0}</span>%
             </p>
             <p class={styles.name}>到课率</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time2">0</span>%
+              <span id="time2">{state.orchestraInfo.homeworkRate || 0}</span>%
             </p>
             <p class={styles.name}>作业提交率</p>
           </GridItem>
           <GridItem>
             <p class={[styles.title, styles.red]}>
-              <span id="time3">0</span>%
+              <span id="time3">{state.orchestraInfo.homeworkQualifiedRate || 0}</span>%
             </p>
             <p class={styles.name}>练习合格率</p>
           </GridItem>
@@ -273,7 +279,7 @@ export default defineComponent({
           v-model:show={state.showQrcode}
           position="bottom"
           style={{ background: 'transparent' }}
-          safeAreaInsetBottom={true}
+          // safeAreaInsetBottom={true}
         >
           <div class={styles.codeContainer}>
             <div class={styles.codeImg}>

+ 1 - 1
src/school/orchestra/compontent/photo-detail.tsx

@@ -307,7 +307,7 @@ export default defineComponent({
                       )
                     }}
                   />
-                  <Image class={styles.img} src={item.fileUrl} />
+                  <Image class={styles.img} src={item.fileUrl} fit="cover" />
                 </div>
               ))}
             </CheckboxGroup>

+ 2 - 1
src/school/orchestra/compontent/photo.module.less

@@ -1,7 +1,8 @@
 .phone {
-  padding: 13px;
+  padding: 0 13px 32px;
 
   .addPhone {
+    margin-top: 12px;
     color: var(--van-primary-text);
     border-color: #fff;
     border-radius: 10px;

+ 24 - 14
src/school/orchestra/compontent/photo.tsx

@@ -10,7 +10,8 @@ import {
   Popover,
   Popup,
   showConfirmDialog,
-  showToast
+  showToast,
+  Sticky
 } from 'vant'
 import { defineComponent, onMounted, reactive } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
@@ -19,7 +20,13 @@ import iconPhoneDefaut from '../images/icon-photo-default.png'
 
 export default defineComponent({
   name: 'phone',
-  setup() {
+  props: {
+    height: {
+      type: [String, Number],
+      default: 'auto'
+    }
+  },
+  setup(props) {
     const route = useRoute()
     const router = useRouter()
     const state = reactive({
@@ -164,17 +171,19 @@ export default defineComponent({
     })
     return () => (
       <div class={styles.phone}>
-        <Button
-          icon="plus"
-          block
-          class={styles.addPhone}
-          onClick={() => {
-            state.status = true
-            state.selectType = 'add'
-          }}
-        >
-          新建相册
-        </Button>
+        <Sticky position="top" offsetTop={props.height}>
+          <Button
+            icon="plus"
+            block
+            class={styles.addPhone}
+            onClick={() => {
+              state.status = true
+              state.selectType = 'add'
+            }}
+          >
+            新建相册
+          </Button>
+        </Sticky>
 
         {state.listState.dataShow ? (
           <List
@@ -183,6 +192,7 @@ export default defineComponent({
             finishedText=" "
             onLoad={getList}
             immediateCheck={false}
+            class={styles.informationGroup}
           >
             <div class={styles.phoneContainer}>
               {state.list.map((item: any) => (
@@ -199,7 +209,7 @@ export default defineComponent({
                   ></i>
 
                   {item.coverUrl ? (
-                    <Image class={styles.img} src={item.coverUrl} />
+                    <Image class={styles.img} src={item.coverUrl} fit="cover" />
                   ) : (
                     <div class={[styles.img, styles.default]}>
                       <Image src={iconPhoneDefaut} class={styles.defaultImg} />

+ 7 - 2
src/school/orchestra/orchestra-detail.tsx

@@ -14,9 +14,14 @@ export default defineComponent({
     console.log(tabs, 'tabs')
     const tabValue = ref(tabs || 'information')
     sessionStorage.removeItem('orchestra-detail-tab')
+    const tabHeight = ref('auto')
+
+    const onGetHeight = (height: any) => {
+      tabHeight.value = height
+    }
     return () => (
       <div class={styles.orchestraDetail}>
-        <OSticky position="top">
+        <OSticky position="top" onGetHeight={onGetHeight}>
           <OHeader />
           <Tabs sticky lineWidth={20} lineHeight={4} v-model:active={tabValue.value}>
             <Tab title="乐团信息" name="information"></Tab>
@@ -28,7 +33,7 @@ export default defineComponent({
 
         {tabValue.value === 'information' && <Information />}
         {tabValue.value === 'plan' && <Plan />}
-        {tabValue.value === 'photo' && <Photo />}
+        {tabValue.value === 'photo' && <Photo height={tabHeight.value} />}
       </div>
     )
   }

+ 3 - 2
src/student/my-orchestra/index.tsx

@@ -5,6 +5,7 @@ import { useRoute, useRouter } from 'vue-router'
 import styles from './index.module.less'
 import iconTeacher from '@common/images/icon_teacher.png'
 import iconMessage from '@common/images/icon-message.png'
+import { postMessage } from '@/helpers/native-message'
 import iconPhoneDefaut from '@/school/orchestra/images/icon-photo-default.png'
 import iconChange from './images/icon_change.png'
 import request from '@/helpers/request'
@@ -235,10 +236,10 @@ export default defineComponent({
                   {state.list.map((item: any) => (
                     <div class={styles.item} onClick={() => onDetail(item)}>
                       {item.coverUrl ? (
-                        <Image class={styles.img} src={item.coverUrl} />
+                        <Image class={styles.img} src={item.coverUrl} fit="cover" />
                       ) : (
                         <div class={[styles.img, styles.default]}>
-                          <Image src={iconPhoneDefaut} class={styles.defaultImg} />
+                          <Image src={iconPhoneDefaut} class={styles.defaultImg} fit="cover" />
                         </div>
                       )}
 

+ 1 - 1
src/student/my-orchestra/photo-detail.tsx

@@ -91,7 +91,7 @@ export default defineComponent({
                     onShowImage(index)
                   }}
                 >
-                  <Image class={styles.img} src={item.fileUrl} />
+                  <Image class={styles.img} src={item.fileUrl} fit="cover" />
                 </div>
               ))}
             </div>

+ 1 - 1
src/student/payment-result/index.tsx

@@ -43,7 +43,7 @@ export default defineComponent({
 
     const onRefund = async () => {
       showConfirmDialog({
-        message: '您是否确定退款'
+        message: '您是否确定撤销退费?'
       }).then(async () => {
         try {
           await request.post('/api-student/userPaymentOrder/cancelRefund/' + route.query.orderNo)