lex-xin 8 月之前
父節點
當前提交
9be5d94b45

二進制
src/common/images/icon-question.png


+ 11 - 3
src/views/home/components/practiceData.tsx

@@ -1,6 +1,6 @@
 import { Ref, computed, defineComponent,  reactive, ref } from 'vue';
 import styles from '../index2.module.less';
-import { NButton, NDataTable, NNumberAnimation, NTooltip, useMessage } from 'naive-ui';
+import { NButton, NDataTable, NIcon, NNumberAnimation, NTooltip, useMessage } from 'naive-ui';
 import { useECharts } from '@/hooks/web/useECharts';
 // import Pagination from '/src/components/pagination';
 import { getPracticePageStat, getTestStat } from '@/views/data-module/api';
@@ -13,6 +13,7 @@ import iconSortAsc from '@/common/images/icon-sort-asc.png';
 import { convertToChineseNumeral } from '/src/utils';
 import { useRouter } from 'vue-router';
 import { setTabsCaches } from '/src/hooks/use-async';
+import iconQuestion from '/src/common/images/icon-question.png'
 export default defineComponent({
   name: 'home-practiceData',
   props: {
@@ -227,7 +228,14 @@ export default defineComponent({
         practiceDurationAvgRef,
         evaluateFrequencyRef,
         {
-          title: '发布作品',
+          title: () => <span style={{ display: 'flex', alignItems: 'center' }}>发布作品 <NTooltip showArrow={false}>
+          {{
+            trigger: () => (
+                <img src={iconQuestion} style={{ width: '16px', height: '16px', marginLeft: '4px', cursor: 'pointer' }}  />
+            ),
+            default: () => '筛选时间段内评测是否发布作品'
+          }}
+        </NTooltip></span>,
           key: 'publishFlag',
           render: (row: any) => row.publishFlag ? '是' : '否'
         },
@@ -247,7 +255,7 @@ export default defineComponent({
                 });
                 router.push({
                   path: '/studentDetail',
-                  query: { studentId: row.studentId, studentName: row.studentName }
+                  query: { studentId: row.studentId, studentName: row.studentName, times: JSON.stringify(currentTimer.value) }
                 });
               }}
             >

+ 23 - 11
src/views/studentList/components/evaluationRecords.tsx

@@ -40,6 +40,8 @@ import iconSortAsc from '@/common/images/icon-sort-asc.png';
 import TheTooltip from '/src/components/TheTooltip';
 import CardPreview from '/src/components/card-preview';
 import { saveAs } from 'file-saver';
+import { useRoute } from 'vue-router';
+import dayjs from 'dayjs';
 export default defineComponent({
   name: 'student-practiceData',
   props: {
@@ -53,12 +55,10 @@ export default defineComponent({
     }
   },
   setup(props) {
+    const route = useRoute()
     const userStore = useUserStore();
     const catchData = useCatchStore()
     const message = useMessage()
-    // const chartRef = ref<HTMLDivElement | null>(null);
-    // const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
-    // const practiceFlag = ref(true);
     const payForm = reactive({
       height: '360px',
       width: '100%',
@@ -370,9 +370,13 @@ export default defineComponent({
           sortType: state.sortType,
           asc: state.asc,
           ...temp,
-
           ...getTimes(
             musicStartTime,
+            ['userMusicStartTime', 'userMusicEndTime'],
+            'YYYY-MM-DD'
+          ),
+          ...getTimes(
+            timer.value,
             ['startTime', 'endTime'],
             'YYYY-MM-DD'
           ),
@@ -440,7 +444,7 @@ export default defineComponent({
       // 下载资源
       const fileUrl = row.videoFilePath || row.recordFilePath;
       const filename =
-        row.musicSheetName + '-' + row.userId;
+        row.musicSheetName + route.query.studentName + ( row.userMusicTime ? dayjs( row.userMusicTime) : '');
       const sfixx = fileUrl.substring(fileUrl.lastIndexOf('.'));
       // 发起Fetch请求
       fetch(fileUrl)
@@ -463,10 +467,15 @@ export default defineComponent({
       });
     };
     const onReset = () => {
-      timer.value = [
-        getNowDateAndMonday(new Date().getTime()),
-        getNowDateAndSunday(new Date().getTime())
-      ];
+      if(route.query.times) {
+        timer.value = JSON.parse(route.query.times as any)
+      } else {
+        timer.value = [
+          getNowDateAndMonday(new Date().getTime()),
+          getNowDateAndSunday(new Date().getTime())
+        ];
+      }
+      
       state.searchForm = {
         musicSheetName: '',
         heardLevel: null, //
@@ -492,6 +501,9 @@ export default defineComponent({
     const iframeRef = ref();
     onMounted(async () => {
       state.loading = true
+      if(route.query.times) {
+        timer.value = JSON.parse(route.query.times as any)
+      }
       await catchData.getSubjects();
       await getTrainingStat()
       await getList();
@@ -589,7 +601,7 @@ export default defineComponent({
               v-model:value={state.searchForm.userMusicFlag}></CSelect>
           </NFormItem>
 
-          {/* <NFormItem>
+          <NFormItem>
             <CDatePicker
               v-model:value={state.searchForm.musicStartTime}
               separator={'至'}
@@ -601,7 +613,7 @@ export default defineComponent({
                 clearable: true
               } as any)}
               timerValue={state.searchForm.musicStartTime}></CDatePicker>
-          </NFormItem> */}
+          </NFormItem>
 
           <NFormItem>
             <NSpace justify="end">

+ 14 - 5
src/views/studentList/components/practiceData.tsx

@@ -26,6 +26,7 @@ import {
 import CDatePicker from '/src/components/CDatePicker';
 import TheEmpty from '/src/components/TheEmpty';
 import { initCache, setCache } from '/src/hooks/use-async';
+import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'student-practiceData',
   props: {
@@ -39,6 +40,7 @@ export default defineComponent({
     }
   },
   setup(props) {
+    const route = useRoute()
     const chartRef = ref<HTMLDivElement | null>(null);
     const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
     const practiceFlag = ref(true);
@@ -242,10 +244,15 @@ export default defineComponent({
       });
     };
     const onReset = () => {
-      timer.value = [
-        getNowDateAndMonday(new Date().getTime()),
-        getNowDateAndSunday(new Date().getTime())
-      ];
+      if(route.query.times) {
+        timer.value = JSON.parse(route.query.times as any)
+      } else {
+        timer.value = [
+          getNowDateAndMonday(new Date().getTime()),
+          getNowDateAndSunday(new Date().getTime())
+        ];
+      }
+      
       search();
       getList();
       setCache({
@@ -261,7 +268,9 @@ export default defineComponent({
       }
     });
     onMounted(() => {
-      console.log(props.studentId);
+      if(route.query.times) {
+        timer.value = JSON.parse(route.query.times as any)
+      }
       getChartDetail();
       getList();
     });