Browse Source

BUG 修复完成

1
mo 1 year ago
parent
commit
90a7dc090a

+ 0 - 1
src/components/CDatePicker/index.tsx

@@ -44,7 +44,6 @@ export default defineComponent({
           <NDatePicker
             {...attrs}
             class={styles.CDatePicker}
-            clearable
             v-model:value={timer.value}
             separator={props.separator}
             type={props.type as any}

+ 2 - 1
src/components/layout/layoutSilder.tsx

@@ -54,7 +54,8 @@ export default defineComponent({
         normalIcon: studentNormal,
         isActive: false,
         id: 2,
-        path: '/studentList'
+        path: '/studentList',
+        lightList: ['/studentDetail'], //小酷AI的灯光列表
       },
 
       {

+ 2 - 0
src/views/classList/components/classStudentRecode.tsx

@@ -92,10 +92,12 @@ export default defineComponent({
             pane-style="padding-left: 4px; padding-right: 4px; box-sizing: border-box;">
             <NTabPane name="textRcode" tab="练习记录">
               <PracticeData
+              classGroupId={route.query.id as string}
                 studentId={route.query.studentId as string}></PracticeData>
             </NTabPane>
             <NTabPane name="evaluatingRcode" tab="评测记录">
               <EvaluationRecords
+               classGroupId={route.query.id as string}
                 studentId={route.query.studentId as string}></EvaluationRecords>
             </NTabPane>
           </NTabs>

+ 4 - 0
src/views/classList/components/testRecode.tsx

@@ -65,6 +65,10 @@ export default defineComponent({
       getNowDateAndSunday(new Date().getTime())
     ]);
     const onReset = () => {
+      timer.value = [
+        getNowDateAndMonday(new Date().getTime()),
+        getNowDateAndSunday(new Date().getTime())
+      ]
       state.searchForm = {
         keyword: '',
         trainingStatus: null as any,

+ 24 - 0
src/views/classList/contants.ts

@@ -1,3 +1,4 @@
+import { useUserStore } from '/src/store/modules/users';
 export const threeYearSystem = [
   { label: '全部年级', value: null },
   { label: '七年级', value: 7 },
@@ -83,3 +84,26 @@ export const classArray = [
   { value: 39, label: '39班' },
   { value: 40, label: '40班' }
 ];
+
+export const getgradeNumList = () => {
+  const userInfo = useUserStore();
+  let gradeNumList = [];
+  if (userInfo.getUserInfo.schoolInfos[0].gradeYear == 'THREE_YEAR_SYSTEM') {
+    gradeNumList = threeYearSystem;
+  } else if (
+    userInfo.getUserInfo.schoolInfos[0].gradeYear == 'FORE_YEAR_SYSTEM'
+  ) {
+    gradeNumList = foreYearSystem;
+  } else if (
+    userInfo.getUserInfo.schoolInfos[0].gradeYear == 'FIVE_YEAR_SYSTEM'
+  ) {
+    gradeNumList = fiveYearSystem;
+  } else if (
+    userInfo.getUserInfo.schoolInfos[0].gradeYear == 'SIX_YEAR_SYSTEM'
+  ) {
+    gradeNumList = sixYearSystem;
+  } else {
+    gradeNumList = nineYearSystem;
+  }
+  return gradeNumList;
+};

+ 5 - 24
src/views/classList/index.tsx

@@ -16,16 +16,12 @@ import SearchInput from '@/components/searchInput';
 import CSelect from '@/components/CSelect';
 import Pagination from '@/components/pagination';
 import { classGroupList, deleteClass } from './api';
-import { useUserStore } from '/src/store/modules/users';
+
 import CreateClass from './modals/createClass';
 import RestStudentBox from './modals/restStudentBox';
 import TrainDetail from './modals/Gotoclass';
 import {
-  sixYearSystem,
-  fiveYearSystem,
-  threeYearSystem,
-  foreYearSystem,
-  nineYearSystem,
+  getgradeNumList,
   classArray
 } from './contants';
 import add from '@/views/studentList/images/add.png';
@@ -64,24 +60,8 @@ export default defineComponent({
       getList();
       console.log('search', state);
     };
-    const userInfo = useUserStore();
-    if (userInfo.getUserInfo.schoolInfos[0].gradeYear == 'THREE_YEAR_SYSTEM') {
-      state.gradeNumList = threeYearSystem;
-    } else if (
-      userInfo.getUserInfo.schoolInfos[0].gradeYear == 'FORE_YEAR_SYSTEM'
-    ) {
-      state.gradeNumList = foreYearSystem;
-    } else if (
-      userInfo.getUserInfo.schoolInfos[0].gradeYear == 'FIVE_YEAR_SYSTEM'
-    ) {
-      state.gradeNumList = fiveYearSystem;
-    } else if (
-      userInfo.getUserInfo.schoolInfos[0].gradeYear == 'SIX_YEAR_SYSTEM'
-    ) {
-      state.gradeNumList = sixYearSystem;
-    } else {
-      state.gradeNumList = nineYearSystem;
-    }
+
+    state.gradeNumList = getgradeNumList()
     const onReset = () => {
       state.searchForm = {
         keyword: null as any,
@@ -314,6 +294,7 @@ export default defineComponent({
           class={['modalTitle background', styles.chioseModel]}
           title={'选择课件'}>
           <TrainDetail
+          activeRow={state.activeRow}
             onClose={() => (state.goCourseVisiable = false)}></TrainDetail>
         </NModal>
       </div>

+ 4 - 1
src/views/classList/modals/Gotoclass.tsx

@@ -10,6 +10,7 @@ import {
 } from 'naive-ui';
 import {
   bookVersionPage,
+  courseScheduleStart,
   lessonCoursewarePage,
   queryCourseware
 } from '@/views/prepare-lessons/api';
@@ -54,7 +55,9 @@ export default defineComponent({
           page: 1,
           rows: 99
         });
-        console.log('gotoClassPage', data);
+        console.log(props.activeRow.id,'props.activeRow.id')
+        await courseScheduleStart({lessonCoursewareKnowledgeDetailId:forms.chapter,
+          classGroupId:props.activeRow.id})
         if (data.rows && data.rows.length > 0) {
           const { href } = router.resolve({
             path: '/attend-class',

+ 15 - 2
src/views/data-module/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, ref, watch } from 'vue';
+import { defineComponent, ref, watch,nextTick } from 'vue';
 import styles from './index.module.less';
 import { NTabs, NTabPane, NSpace, NButton } from 'naive-ui';
 import { useRoute } from 'vue-router';
@@ -43,6 +43,17 @@ export default defineComponent({
         PracticeRankingRef.value.getList();
       }
     };
+  const  onReset = ()=>{
+    console.log('点击重置')
+      timer.value = [
+        getNowDateAndMonday(new Date().getTime()),
+        getNowDateAndSunday(new Date().getTime())
+      ]
+      nextTick(()=>{
+        onSearch()
+      })
+
+    }
     return () => (
       <div>
         <div class={styles.listWrap}>
@@ -60,8 +71,10 @@ export default defineComponent({
                   <div class={styles.homeStudyInfoDate}>
                     <NSpace>
                       <CDatePicker
+                        {...{ clearable: false }}
                          v-model:value={timer.value}
                         separator={'-'}
+
                         type="daterange"
                         timerValue={timer.value}></CDatePicker>
                       <NButton
@@ -70,7 +83,7 @@ export default defineComponent({
                         onClick={() => onSearch()}>
                         搜索
                       </NButton>
-                      <NButton type="primary" ghost class={styles.resetBtn}>
+                      <NButton type="primary" onClick={()=>onReset()} ghost class={styles.resetBtn}>
                         重置
                       </NButton>
                     </NSpace>

+ 2 - 0
src/views/home/components/practiceData.tsx

@@ -8,6 +8,7 @@ import { getTestStat } from '@/views/data-module/api';
 import { getMinutes, getSecend, getTimes } from '/src/utils/dateFormat';
 import { useRoute, useRouter } from 'vue-router';
 import { getTrainingStatList } from '../../classList/api';
+import dayjs from 'dayjs';
 export default defineComponent({
   name: 'home-practiceData',
   props: {
@@ -120,6 +121,7 @@ export default defineComponent({
       ];
     };
     const getList = async () => {
+
       try {
         const res = await getTrainingStatList({
           page: 1,

+ 51 - 6
src/views/home/components/practiceRanking.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, reactive } from 'vue';
+import { defineComponent, reactive,onMounted, computed } from 'vue';
 import styles from '../index.module.less';
 import {
   NButton,
@@ -15,6 +15,7 @@ import Pagination from '@/components/pagination';
 import add from './images/add.png';
 import { getMinutes, getSecend, getTimes } from '/src/utils/dateFormat';
 import { getTestList } from '../../classList/api';
+import dayjs from 'dayjs';
 export default defineComponent({
   name: 'student-studentList',
   props: {
@@ -39,6 +40,15 @@ export default defineComponent({
       },
       tableList: [] as any
     });
+
+    const searchForm = reactive({
+      ase:0,
+      sortType:1
+    })
+    const currentTimer = computed(() => {
+      console.log('ranking===>')
+      return props.timer;
+    });
     const search = () => {
       console.log('search', state);
     };
@@ -47,15 +57,15 @@ export default defineComponent({
       console.log('search');
     };
     const getList = async () => {
+      console.log('currentTimer.value', dayjs(currentTimer.value[0]).format('YYYY-MM-DD'))
       state.loading = true;
       try {
         const res = await getTestList({
           ...state.pagination,
-          ...getTimes(props.timer, ['startTime', 'endTime'], 'YYYY-MM-DD')
+          ...searchForm,
+          ...getTimes(currentTimer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
         });
-
         state.tableList = res.data.rows;
-
         state.pagination.pageTotal = res.data.total;
         state.loading = false;
       } catch (e) {
@@ -64,14 +74,49 @@ export default defineComponent({
       }
     };
     expose({ getList });
+    onMounted(()=>{
+      getList()
+    })
+
     const handleSorterChange = (sroter: any) => {
       if(!sroter){
+        searchForm.ase = 0
+        searchForm.sortType = 1
         practiceDaysRef.sortOrder = false
         practiceDurationRef.sortOrder = false
         practiceDurationAvgRef.sortOrder = false
+      }else{
+        const list = {
+          practiceDuration:1,
+          practiceDays:2,
+          practiceDurationAvg:3
+        }
+        searchForm.sortType =
+          list[
+            sroter.columnKey as
+              | 'practiceDuration'
+              | 'practiceDays'
+              | 'practiceDurationAvg'
+          ];
+        if (sroter.columnKey == 'practiceDuration') {
+           practiceDurationRef.sortOrder = sroter.order
+           practiceDaysRef.sortOrder = false
+          practiceDurationAvgRef.sortOrder = false
+        }
+        if (sroter.columnKey == 'practiceDays') {
+          practiceDaysRef.sortOrder = sroter.order
+          practiceDurationRef.sortOrder = false
+          practiceDurationAvgRef.sortOrder = false
+        }
+        if (sroter.columnKey == 'practiceDurationAvg') {
+          practiceDurationAvgRef.sortOrder = sroter.order
+          practiceDaysRef.sortOrder = false
+          practiceDurationRef.sortOrder = false
+        }
+        searchForm.ase = sroter.order == 'ascend' ? 1 : 0;
+
       }
-      console.log(sroter, 'sroter');
-      // getList()
+      getList()
     };
 
     const practiceDaysRef = reactive({

+ 62 - 36
src/views/studentList/components/baseInfo.tsx

@@ -22,21 +22,27 @@ import maleIcon from '../images/maleIcon.png';
 import femaleIcon from '../images/femaleIcon.png';
 import { useUserStore } from '/src/store/modules/users';
 import { api_teacherUpdate } from '/src/api/user';
-import { resetStudentInfo } from '../api'
+import { resetStudentInfo } from '../api';
 import UploadFile from '/src/components/upload-file';
+import {
+  getgradeNumList,
+  classArray
+} from '@/views/classList/contants';
 export default defineComponent({
   name: 'setting-personInfo',
-  props:{
-    studentInfo:{
-      type:Object,
-      default: () => (
-        { nickname:'',
-      currentGradeNum:'',
-      gender:null,
-      phone:'',
-      id:''
-   })
-  }},
+  props: {
+    studentInfo: {
+      type: Object,
+      default: () => ({
+        nickname: '',
+        currentGradeNum: '',
+        gender: null,
+        phone: '',
+        id: '',
+        currentClass: ''
+      })
+    }
+  },
   setup(props) {
     const message = useMessage();
     const userStore = useUserStore();
@@ -53,20 +59,26 @@ export default defineComponent({
       phone: props.studentInfo.phone,
       gender: props.studentInfo.gender,
       id: props.studentInfo.id,
-      classGroupName:props.studentInfo.classGroupName
+      currentGradeNum: props.studentInfo.currentGradeNum,
+      currentClass: props.studentInfo.currentClass
     });
+    const gradeNumList = ref(getgradeNumList())
     const data = reactive({
       disabled: true,
       openChangePwd: false,
       uploadShow: true
     });
-    watch(()=>props.studentInfo,(val)=>{
-      studentForm.nickname= val.nickname as any
-      studentForm.phone=val.phone
-      studentForm.gender= val.gender
-      studentForm.id= val.id
-      studentForm.classGroupName=val.classGroupName
-    })
+    watch(
+      () => props.studentInfo,
+      val => {
+        studentForm.nickname = val.nickname as any;
+        studentForm.phone = val.phone;
+        studentForm.gender = val.gender;
+        studentForm.id = val.id;
+        studentForm.currentGradeNum = val.currentGradeNum;
+        studentForm.currentClass = val.currentClass;
+      }
+    );
     // onMounted(() => {});
 
     const handleSave = () => {
@@ -74,19 +86,19 @@ export default defineComponent({
         if (err) {
           return;
         }
-        await resetStudentInfo({...props.studentInfo,...studentForm});
+        await resetStudentInfo({ ...props.studentInfo, ...studentForm });
         data.disabled = true;
         message.success('修改成功');
       });
     };
-    const cancel = ()=>{
-      studentForm.nickname = props.studentInfo.nickname
-      studentForm.phone = props.studentInfo.phone
-      studentForm.gender = props.studentInfo.gender
-      studentForm.classGroupName = props.studentInfo.classGroupName
-
-      data.disabled = true
-    }
+    const cancel = () => {
+      studentForm.nickname = props.studentInfo.nickname;
+      studentForm.phone = props.studentInfo.phone;
+      studentForm.gender = props.studentInfo.gender;
+      studentForm.currentGradeNum = props.studentInfo.currentGradeNum;
+      studentForm.currentClass = props.studentInfo.currentClass;
+      data.disabled = true;
+    };
     return () => (
       <div class={styles.infoWrap}>
         <div class={styles.setInfo}>
@@ -142,13 +154,27 @@ export default defineComponent({
                 </NFormItem>
               </NGi>
               <NGi>
-                <NFormItem label="年级班级" path="sex">
-                <NInput
+                <NFormItem label="年级" path="">
+                  <NSelect
                     bordered={!data.disabled}
-                    disabled={true}
-                    placeholder="年级班级"
-                    v-model:value={studentForm.classGroupName}></NInput>
-
+                    class={styles.select}
+                    showArrow={!data.disabled}
+                    placeholder="请选择年级"
+                    options={gradeNumList.value as any}
+                    v-model:value={studentForm.currentGradeNum}
+                  />
+                </NFormItem>
+              </NGi>
+              <NGi>
+                <NFormItem label="班级" path="">
+                  <NSelect
+                    bordered={!data.disabled}
+                    class={styles.select}
+                    showArrow={!data.disabled}
+                    placeholder="请选择班级"
+                    options={classArray}
+                    v-model:value={studentForm.currentClass}
+                  />
                 </NFormItem>
               </NGi>
             </NGrid>
@@ -165,7 +191,7 @@ export default defineComponent({
           </NSpace>
         ) : (
           <NSpace class={styles.btnList} align="center" justify="end">
-            <NButton class={styles.btn} onClick={() => ( cancel())}>
+            <NButton class={styles.btn} onClick={() => cancel()}>
               取消
             </NButton>
             <NButton

+ 4 - 0
src/views/studentList/components/evaluationRecords.tsx

@@ -28,6 +28,9 @@ export default defineComponent({
     studentId: {
       type: String,
       default: ''
+    }, classGroupId: {
+      type: String,
+      default: ''
     }
   },
   setup(props) {
@@ -144,6 +147,7 @@ export default defineComponent({
       const res = await getPracticeRecordList({
         userId: props.studentId,
         ...state.pagination,
+        classGroupId:props.classGroupId,
         feature: "EVALUATION",
         ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
       });

+ 6 - 0
src/views/studentList/components/practiceData.tsx

@@ -27,6 +27,10 @@ export default defineComponent({
     studentId: {
       type: String,
       default: ''
+    },
+    classGroupId: {
+      type: String,
+      default: ''
     }
   },
   setup(props) {
@@ -92,6 +96,7 @@ export default defineComponent({
             page:1,
             rows:999,
             studentId: props.studentId,
+            classGroupId:props.classGroupId,
             ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
           })
           state.tableList = res.data.rows;
@@ -221,6 +226,7 @@ export default defineComponent({
       try {
         const res = await getTrainingStat({
           studentId: props.studentId,
+          classGroupId:props.classGroupId,
           ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
         });
         payForm.practiceDays = res.data.practiceDays;

+ 7 - 7
src/views/studentList/index.tsx

@@ -115,13 +115,13 @@ export default defineComponent({
           }
         },
 
-        // {
-        //   title: '学生类型',
-        //   key: 'studentType',
-        //   render(row: any) {
-        //     return <>{row.studentType == 'member' ? '会员' : '普通'}</>;
-        //   }
-        // },
+        {
+          title: '学生类型',
+          key: 'vipMember',
+          render(row: any) {
+            return <>{row.vipMember ? '会员' : '普通'}</>;
+          }
+        },
         {
           title: '操作',
           key: 'id',