Sfoglia il codice sorgente

Merge branch 'iteration-20241126'

lex-xin 7 mesi fa
parent
commit
e25c6e0a8b

+ 9 - 0
src/teacher/live-class/live-detail.module.less

@@ -20,3 +20,12 @@
     }
   }
 }
+
+.btnMore {
+  display: flex;
+  justify-content: space-around;
+  padding: 20px 28px 30px;
+  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #ffffff 100%),
+    #fffdfd;
+  box-shadow: 0px 0px 2px 0px rgba(216, 216, 216, 0.5);
+}

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

@@ -277,7 +277,7 @@ export default defineComponent({
             {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
               <TheSticky position="bottom">
                 <div
-                  class={['btnGroup']}
+                  class={['btnGroup', styles.btnMore]}
                   style={{ paddingTop: '10px', background: '#fff' }}
                 >
                   <Button block round type="primary" onClick={this.onJoinRoom}>
@@ -290,7 +290,7 @@ export default defineComponent({
             {this.share == '1' && this.courseInfo.length > 0 && (
               <TheSticky position="bottom">
                 <div
-                  class={['btnGroup']}
+                  class={['btnGroup', styles.btnMore]}
                   style={{ paddingTop: '10px', background: '#fff' }}
                 >
                   <Button

+ 1 - 1
src/teacher/piano-room/components/course/index.tsx

@@ -108,7 +108,7 @@ export default defineComponent({
         />
         <Cell>
           <div class={styles.courseInfo} onClick={this.onDetail}>
-            <div class={styles.courseImg}>小课</div>
+            <div class={styles.courseImg}>琴房</div>
             <div class={styles.courseName}>
               <p class={styles.name}>{item.groupName}</p>
               <p>

+ 56 - 39
src/teacher/statistics/home-statistics-detail/echats/index.tsx

@@ -72,11 +72,11 @@ const lineChartOption = (xAxisData: any, seriesData: any) => {
     legend: { show: false },
     emphasis: { lineStyle: { width: 2 } },
     xAxis: {
-      boundaryGap: false,
+      boundaryGap: true,
       data: xAxisData,
       type: 'category',
       axisLine: { lineStyle: { color: '#8C8C8C' } },
-      lineStyle: { color: '#F2F2F2' },
+      lineStyle: { color: '#F2F2F2' }
       // axisLabel: {
       //   formatter: function (value, index) {
       //     // 第一个和最后一个标签分别居左和居右显示
@@ -221,11 +221,13 @@ export default defineComponent({
       subjectId: '' as any, // 选择的声部
       subjectList: [] as any,
       startTimeStatus: false,
+      startTimeClosedStatus: false,
       endTimeMinDate: new Date(timeRange?.startTime || ''),
       endTimeMaxDate: dayjs(new Date(timeRange?.startTime || ''))
         .add(1, 'year')
         .toDate(),
       endTimeStatus: false,
+      endTimeClosedStatus: false,
       startTime: new Date(timeRange?.startTime || ''),
       startTimeStr: timeRange?.startTime || '',
       endTime: new Date(timeRange?.endTime || ''),
@@ -343,9 +345,8 @@ export default defineComponent({
         </div>
         <div class={styles.eChartTitle}>
           <div class={styles.left}>
-            {statisticCounts.value.time && (
-              <div class={styles.time}>{statisticCounts.value.time}</div>
-            )}
+            <div class={styles.time}>{statisticCounts.value.time}</div>
+
             <div class={styles.twoItem}>
               <div class={styles.item} style="--color: #2DC7AA">
                 <span class={styles.line}></span>
@@ -426,7 +427,10 @@ export default defineComponent({
                       forms.startTimeStr && styles.hasValue,
                       forms.startTimeStatus && styles.active
                     ]}
-                    onClick={() => (forms.startTimeStatus = true)}
+                    onClick={() => {
+                      forms.startTimeStatus = true
+                      forms.startTimeClosedStatus = true
+                    }}
                   >
                     {forms.startTimeStr || '起始时间'}
                   </p>
@@ -437,7 +441,10 @@ export default defineComponent({
                       forms.endTimeStr && styles.hasValue,
                       forms.endTimeStatus && styles.active
                     ]}
-                    onClick={() => (forms.endTimeStatus = true)}
+                    onClick={() => {
+                      forms.endTimeStatus = true
+                      forms.endTimeClosedStatus = true
+                    }}
                   >
                     {forms.endTimeStr || '终止时间'}
                   </p>
@@ -490,26 +497,31 @@ export default defineComponent({
           round
           class={'popupBottomSearch'}
           teleport={'body'}
+          onClosed={() => {
+            forms.startTimeClosedStatus = false
+          }}
         >
-          <DatetimePicker
-            v-model={forms.startTime}
-            type="date"
-            formatter={formatterDatePicker}
-            onCancel={() => (forms.startTimeStatus = false)}
-            onConfirm={(val: any) => {
-              forms.startTime = val
-              forms.startTimeStr = dayjs(val).format('YYYY-MM-DD')
-              forms.startTimeStatus = false
+          {forms.startTimeClosedStatus && (
+            <DatetimePicker
+              v-model={forms.startTime}
+              type="date"
+              formatter={formatterDatePicker}
+              onCancel={() => (forms.startTimeStatus = false)}
+              onConfirm={(val: any) => {
+                forms.startTime = val
+                forms.startTimeStr = dayjs(val).format('YYYY-MM-DD')
+                forms.startTimeStatus = false
 
-              forms.endTimeMinDate = dayjs(val || new Date()).toDate()
-              forms.endTimeMaxDate = dayjs(val || new Date())
-                .add(1, 'year')
-                .toDate()
-              forms.endTime = val
-              forms.endTimeStr = ''
-              currentType.value = '' as any
-            }}
-          />
+                forms.endTimeMinDate = dayjs(val || new Date()).toDate()
+                forms.endTimeMaxDate = dayjs(val || new Date())
+                  .add(1, 'year')
+                  .toDate()
+                forms.endTime = val
+                forms.endTimeStr = ''
+                currentType.value = '' as any
+              }}
+            />
+          )}
         </Popup>
         {/* 结束日期 */}
         <Popup
@@ -518,21 +530,26 @@ export default defineComponent({
           round
           class={'popupBottomSearch'}
           teleport={'body'}
+          onClosed={() => {
+            forms.endTimeClosedStatus = false
+          }}
         >
-          <DatetimePicker
-            v-model={forms.endTime}
-            type="date"
-            minDate={forms.endTimeMinDate}
-            maxDate={forms.endTimeMaxDate}
-            formatter={formatterDatePicker}
-            onCancel={() => (forms.endTimeStatus = false)}
-            onConfirm={(val: any) => {
-              forms.endTime = val
-              forms.endTimeStatus = false
-              forms.endTimeStr = dayjs(val).format('YYYY-MM-DD')
-              currentType.value = '' as any
-            }}
-          />
+          {forms.endTimeClosedStatus && (
+            <DatetimePicker
+              v-model={forms.endTime}
+              type="date"
+              minDate={forms.endTimeMinDate}
+              maxDate={forms.endTimeMaxDate}
+              formatter={formatterDatePicker}
+              onCancel={() => (forms.endTimeStatus = false)}
+              onConfirm={(val: any) => {
+                forms.endTime = val
+                forms.endTimeStatus = false
+                forms.endTimeStr = dayjs(val).format('YYYY-MM-DD')
+                currentType.value = '' as any
+              }}
+            />
+          )}
         </Popup>
       </div>
     )

+ 8 - 1
src/teacher/statistics/home-statistics-detail/list/index.module.less

@@ -6,7 +6,7 @@
   background: #ffffff;
   border-radius: 10px;
   margin: 12px 14px 0;
-  overflow: hidden;
+  // overflow: hidden;
   :global {
     .van-list__loading,
     .van-list__finished-text,
@@ -19,6 +19,13 @@
     align-items: center;
     justify-content: space-between;
     padding: 15px 12px 12px;
+
+    position: sticky;
+    top: 0;
+    left: 0;
+    background: #ffffff;
+    border-radius: 10px 10px 0 0;
+
     .title {
       display: flex;
       align-items: center;

+ 1 - 1
src/teacher/statistics/home-statistics/index.tsx

@@ -74,7 +74,7 @@ const lineChartOption = (
       type: 'category',
       axisLine: { lineStyle: { color: '#8C8C8C' } },
       lineStyle: { color: '#F2F2F2' },
-      boundaryGap: false,
+      boundaryGap: true,
       axisLabel: {
         // formatter: function (value, index) {
         //   // 第一个和最后一个标签分别居左和居右显示

+ 1 - 1
src/teacher/statistics/practice-statistics-detail/echats/index.tsx

@@ -74,7 +74,7 @@ const lineChartOption = (params: {
     legend: { show: false },
     emphasis: { lineStyle: { width: 2 } },
     xAxis: {
-      boundaryGap: false,
+      boundaryGap: true,
       data: params.xAxisData,
       type: 'category',
       axisLine: { lineStyle: { color: '#8C8C8C' } },

+ 19 - 13
src/teacher/statistics/practice-statistics-detail/index.module.less

@@ -26,10 +26,10 @@
   .filter {
     position: absolute;
     top: 0;
-    right: 0;
-    background: url('../images/filter-bg.png') no-repeat center;
-    background-size: contain;
-    width: 114.5px;
+    right: 12px;
+    // background: url('../images/filter-bg.png') no-repeat center;
+    // background-size: contain;
+    // width: 114.5px;
     height: 37px;
     display: flex;
     align-items: center;
@@ -87,25 +87,28 @@
     }
   }
   .leaveTime {
-    padding-top: 20px;
-    padding-bottom: 20px;
+    // padding-top: 20px;
+    // padding-bottom: 20px;
+    display: flex;
+    align-items: flex-end;
     .num {
       font-family: DIN;
-      font-size: 30px;
+      font-size: 22px;
       color: #333333;
-      line-height: 35px;
+      line-height: 1.2;
     }
     .text {
       font-weight: 400;
-      font-size: 14px;
+      font-size: 12px;
       color: #777777;
-      line-height: 26px;
-      padding: 0 2px;
+      line-height: 1.2;
+      padding: 0 2px 3px;
     }
   }
 
   .sList {
     display: flex;
+    padding-top: 12px;
   }
   .sItem {
     background: #f8f8f8;
@@ -131,16 +134,19 @@
       }
     }
     .sBottom {
+      display: flex;
+      align-items: flex-end;
       .num {
         font-family: DIN;
         font-size: 22px;
         color: #333333;
-        line-height: 26px;
+        line-height: 1.2;
       }
       .text {
         font-size: 12px;
         color: #777777;
-        line-height: 26px;
+        line-height: 1.2;
+        padding-bottom: 3px;
       }
     }
   }

+ 78 - 50
src/teacher/statistics/practice-statistics-detail/index.tsx

@@ -63,11 +63,13 @@ export default defineComponent({
       subjectId: '' as any, // 选择的声部
       subjectList: [] as any,
       startTimeStatus: false,
+      startTimeClosedStatus: false,
       endTimeMinDate: new Date(timeRange?.startTime || ''),
       endTimeMaxDate: dayjs(new Date(timeRange?.startTime || ''))
         .add(1, 'year')
         .toDate(),
       endTimeStatus: false,
+      endTimeClosedStatus: false,
       startTime: new Date(timeRange?.startTime || ''),
       startTimeStr: timeRange?.startTime || '',
       endTime: new Date(timeRange?.endTime || ''),
@@ -343,22 +345,32 @@ export default defineComponent({
               <span>总练习时长</span>
             </div>
 
-            <div class={styles.leaveTime}>
-              <span class={styles.num}>{practiceSummary.totalTimes.hours}</span>
-              <span class={styles.text}>时</span>
-              <span class={styles.num}>
-                {practiceSummary.totalTimes.minutes}
-              </span>
-              <span class={styles.text}>分</span>
-              <span class={styles.num}>
-                {practiceSummary.totalTimes.seconds}
-              </span>
-              <span class={styles.text}>秒</span>
-            </div>
-
             <div class={styles.sList}>
               <div class={styles.sItem}>
                 <div class={styles.sTop}>
+                  <img src={icon1} />
+                  <span>总练习时长</span>
+                </div>
+                <div class={styles.sBottom}>
+                  <div class={styles.leaveTime}>
+                    <span class={styles.num}>
+                      {practiceSummary.totalTimes.hours}
+                    </span>
+                    <span class={styles.text}>时</span>
+                    <span class={styles.num}>
+                      {practiceSummary.totalTimes.minutes}
+                    </span>
+                    <span class={styles.text}>分</span>
+                    <span class={styles.num}>
+                      {practiceSummary.totalTimes.seconds}
+                    </span>
+                    <span class={styles.text}>秒</span>
+                  </div>
+                </div>
+              </div>
+
+              <div class={styles.sItem}>
+                <div class={styles.sTop}>
                   <img src={icon2} />
                   <span>练习人数</span>
                 </div>
@@ -369,7 +381,7 @@ export default defineComponent({
                   <span class={styles.text}>人</span>
                 </div>
               </div>
-              <div class={styles.sItem}>
+              {/* <div class={styles.sItem}>
                 <div class={styles.sTop}>
                   <img src={icon1} />
                   <span>平均练习时长</span>
@@ -380,7 +392,7 @@ export default defineComponent({
                   </span>
                   <span class={styles.text}>分钟</span>
                 </div>
-              </div>
+              </div> */}
             </div>
           </div>
 
@@ -595,7 +607,10 @@ export default defineComponent({
                       styles.timeInput,
                       forms.startTimeStr && styles.hasValue
                     ]}
-                    onClick={() => (forms.startTimeStatus = true)}
+                    onClick={() => {
+                      forms.startTimeStatus = true
+                      forms.startTimeClosedStatus = true
+                    }}
                   >
                     {forms.startTimeStr || '起始时间'}
                   </p>
@@ -605,7 +620,10 @@ export default defineComponent({
                       styles.timeInput,
                       forms.endTimeStr && styles.hasValue
                     ]}
-                    onClick={() => (forms.endTimeStatus = true)}
+                    onClick={() => {
+                      forms.endTimeStatus = true
+                      forms.endTimeClosedStatus = true
+                    }}
                   >
                     {forms.endTimeStr || '终止时间'}
                   </p>
@@ -666,26 +684,31 @@ export default defineComponent({
           position="bottom"
           round
           class={'popupBottomSearch'}
+          onClosed={() => {
+            forms.startTimeClosedStatus = false
+          }}
         >
-          <DatetimePicker
-            v-model={forms.startTime}
-            type="date"
-            formatter={formatterDatePicker}
-            onCancel={() => (forms.startTimeStatus = false)}
-            onConfirm={(val: any) => {
-              forms.startTime = val
-              forms.startTimeStr = dayjs(val).format('YYYY-MM-DD')
-              forms.startTimeStatus = false
-
-              forms.endTimeMinDate = dayjs(val || new Date()).toDate()
-              forms.endTimeMaxDate = dayjs(val || new Date())
-                .add(1, 'year')
-                .toDate()
-              forms.endTime = val
-              forms.endTimeStr = ''
-              searchObj.type = '' as any
-            }}
-          />
+          {forms.startTimeClosedStatus && (
+            <DatetimePicker
+              v-model={forms.startTime}
+              type="date"
+              formatter={formatterDatePicker}
+              onCancel={() => (forms.startTimeStatus = false)}
+              onConfirm={(val: any) => {
+                forms.startTime = val
+                forms.startTimeStr = dayjs(val).format('YYYY-MM-DD')
+                forms.startTimeStatus = false
+
+                forms.endTimeMinDate = dayjs(val || new Date()).toDate()
+                forms.endTimeMaxDate = dayjs(val || new Date())
+                  .add(1, 'year')
+                  .toDate()
+                forms.endTime = val
+                forms.endTimeStr = ''
+                searchObj.type = '' as any
+              }}
+            />
+          )}
         </Popup>
         {/* 结束日期 */}
         <Popup
@@ -693,21 +716,26 @@ export default defineComponent({
           position="bottom"
           round
           class={'popupBottomSearch'}
+          onClosed={() => {
+            forms.endTimeClosedStatus = false
+          }}
         >
-          <DatetimePicker
-            v-model={forms.endTime}
-            type="date"
-            minDate={forms.endTimeMinDate}
-            maxDate={forms.endTimeMaxDate}
-            formatter={formatterDatePicker}
-            onCancel={() => (forms.endTimeStatus = false)}
-            onConfirm={(val: any) => {
-              forms.endTime = val
-              forms.endTimeStatus = false
-              forms.endTimeStr = dayjs(val).format('YYYY-MM-DD')
-              searchObj.type = '' as any
-            }}
-          />
+          {forms.endTimeClosedStatus && (
+            <DatetimePicker
+              v-model={forms.endTime}
+              type="date"
+              minDate={forms.endTimeMinDate}
+              maxDate={forms.endTimeMaxDate}
+              formatter={formatterDatePicker}
+              onCancel={() => (forms.endTimeStatus = false)}
+              onConfirm={(val: any) => {
+                forms.endTime = val
+                forms.endTimeStatus = false
+                forms.endTimeStr = dayjs(val).format('YYYY-MM-DD')
+                searchObj.type = '' as any
+              }}
+            />
+          )}
         </Popup>
       </div>
     )