Browse Source

Merge branch 'feature/bugfix' of FanYanPeng/EAIFrontend into host-nju

ZhuChenXi 7 months ago
parent
commit
5d1830818a

+ 16 - 16
src/router/index.ts

@@ -16,24 +16,24 @@ const router = createRouter({
     },
 
     // 登录与注册
-    {
-      path: "/",
-      redirect: () => {
-        window.location.href = "https://p-nju.seec.seecoder.cn/login?from=https://air-nju.seec.seecoder.cn";
-        // window.location.href = "http://localhost:8000/login?from=http://localhost:4000";
-        // {本地门户首页地址}?from={本地eai首页地址}
-        return "/"; // 占位返回值,实际不会执行
-    },
-    },
     // {
     //   path: "/",
-    //   redirect: "/login"
+    //   redirect: () => {
+    //     window.location.href = "https://p-nju.seec.seecoder.cn/login?from=https://air-nju.seec.seecoder.cn";
+    //     // window.location.href = "http://localhost:8000/login?from=http://localhost:4000";
+    //     // {本地门户首页地址}?from={本地eai首页地址}
+    //     return "/"; // 占位返回值,实际不会执行
     // },
-    // {
-    //   path: '/login',
-    //   name: 'login',
-    //   component: () => import('../views/LoginPage/LoginPage.vue')
     // },
+    {
+      path: "/",
+      redirect: "/login"
+    },
+    {
+      path: '/login',
+      name: 'login',
+      component: () => import('../views/LoginPage/LoginPage.vue')
+    },
     {
       path: '/register',
       name: 'register',
@@ -260,7 +260,7 @@ const router = createRouter({
  */
   router.beforeEach(async (to) => {
     const store = useStore();
-    const publicPaths = [ '/register', '/passwordChange', '/admin/login',];
+    const publicPaths = [ '/register', '/passwordChange', '/admin/login','/login'];
     // 1. 检查URL中的token
     const urlToken = new URLSearchParams(window.location.search).get('token');
     if (urlToken) {
@@ -305,4 +305,4 @@ const router = createRouter({
     return true;
   });
 
-export default router
+export default router

+ 5 - 3
src/views/ClassPage/ClassHomework.vue

@@ -291,12 +291,14 @@ const getHomeworks = async () => {
             // console.log('----------------------');
             // console.log(res.data.data.records);
             res.data.data.records.forEach(item => Homeworksdata.value.push(item))
+            if(res.data.data.records.length!=0){
             ShowTheHomework.value = res.data.data.records[0].assignmentName
             ShowTheHomeworkId.value = res.data.data.records[0].assignmentId
+            }
         })
     // t.forEach(item => Homeworksdata.value.push(item))
     HomeworkDataLoading.value = true
-    console.log(ShowTheHomeworkId.value);
+    console.log('ShowTheHomeworkId',ShowTheHomeworkId.value);
 }
 const getStudents = () => {
     StudentsDataLoading.value=false
@@ -306,12 +308,12 @@ const getStudents = () => {
         .then((res:any)=>{
             console.log(res.data.data);
             Studentsdata.value = res.data.data
-            StudentsDataLoading.value = true
         })
         .catch((err:any)=>{
             console.log('-------------------------');
             console.log(err);
         })
+        StudentsDataLoading.value = true
 }
 const changeHomework = () => {
     console.log(ShowTheHomework.value)
@@ -348,7 +350,7 @@ const showData = computed(() => {
 })
 
 const DataLoading = computed(() => {
-  return StudentsDataLoading.value && HomeworkDataLoading.value
+   return StudentsDataLoading.value && HomeworkDataLoading.value
 })
 
 watch(TheHomework, () => {

+ 18 - 15
src/views/ClassPage/StudentDetail.vue

@@ -109,6 +109,7 @@ import { useStore } from "@/store"
 import classHeader from './components/classHeader.vue';
 import type {CourseDetailVO, ClassVO, ClassStudentVO} from "@/types/vo";
 import useApis from "@/apis";
+import { log } from 'console';
 
 const route = useRoute()
 const store = useStore()
@@ -211,20 +212,21 @@ const Studentdata = ref({
     "studentId": 0,
     "assignments":[]
 })
-const getStudent = () => {
+const getStudent = async () => {
     StudentdataLoading.value = false
     console.log(courseId)
     console.log(studentId)
-    apis.getHomeworkOfStudent(courseId,studentId)
+    await apis.getHomeworkOfStudent(courseId,studentId)
         .then((res:any)=>{
             Studentdata.value = res.data.data
-            console.log(res.data.data);
-            StudentdataLoading.value = true
+            console.log('zcx',Studentdata.value);
         })
+    StudentdataLoading.value = true
+    console.log('zzzz','修改',StudentdataLoading.value);
 }
-const getClass = () => {
+const getClass = async () => {
     console.log("classId:",classId)
-    apis.getClassByClassId(classId)
+    await apis.getClassByClassId(classId)
         .then((res:any)=>{
             console.log(res.data.data);
             Classdata.value = res.data.data
@@ -235,22 +237,23 @@ const getClass = () => {
     ClassDataLoading.value = true
 }
 
-const getCourse = () => {
+const getCourse = async () => {
   // 获取课程信息
-  apis.getCourseByCourseId(courseId)
+    await apis.getCourseByCourseId(courseId)
       .then((res: any) => {
         let data = res.data.data.records[0]
         Object.assign(Coursedata, {...data})
-        CourseDataLoading.value = true
       })
       .catch((err: any) => {
         console.error(err);
       })
+    CourseDataLoading.value = true
 }
 
 const DataLoading = computed(() => {
 //   return CourseDataLoading.value && ClassDataLoading.value
     if(store.user.role === "STUDENT"){
+        console.log('finally',StudentdataLoading.value,CourseDataLoading.value,ClassDataLoading.value)
         return StudentdataLoading.value && CourseDataLoading.value && ClassDataLoading.value
     }
     else{
@@ -259,14 +262,14 @@ const DataLoading = computed(() => {
 })
 const searchData = computed(()=>{
     if(searchInput.value===""){
-        return Studentdata.value.assignments
+        return Studentdata.value.assignments??[]
     }
     else{
         return Studentdata.value.assignments.filter(student => {
           return (
             student.assignmentName.includes(searchInput.value)
           )
-        })
+        })??[]
     }
 })
 const showData = computed(() => {
@@ -318,13 +321,13 @@ watch(ShowTheSort,(newData) =>{
     }
 })
 
-onMounted(() => {
+onMounted(async () => {
     // identify()
     if(store.user.role === "STUDENT"){
-        getCourse()
-        getClass()
+        await getCourse()
+        await getClass()
     }
-    getStudent()
+    await getStudent()
     
 })
 </script>

+ 20 - 5
src/views/CourseSquare/component/CourseDetails/component/CourseHomeworkTable.vue

@@ -235,23 +235,38 @@ const openEditor = (url: string, title: string) => {
   /*
   鼠标聚焦于功能按钮(写作or编辑)时,显示提示信息
    */
+  let lastTriggerTime = 0;
+
+  // 防抖函数
+  const throttleMessage = () => {
+    const currentTime = Date.now();
+    
+    // 如果距离上次触发时间小于5秒,则不执行
+    if (currentTime - lastTriggerTime < 5000) {
+      return false;
+    }
+    
+    // 更新触发时间并执行
+    lastTriggerTime = currentTime;
+    return true;
+  };
   let hover = false
   const handleMouse = (type: string, teacherId:string, endDate:string) => {
     if(!hover && type == 'over'){
        hover = true;
        //如果被禁用则提示
-      if(props.disabled || isDisabled(teacherId, endDate)){
+      if((props.disabled || isDisabled(teacherId, endDate))&&throttleMessage()){
         if(props.role == 'student'){
           if(props.disabled){
-            ElMessage.error('请先加入课程')
+            ElMessage.warning('请先加入课程')
           } else {
-            ElMessage.error('作业已经超过截止时间')
+            ElMessage.warning('作业已经超过截止时间')
           }
         }else if(props.role == 'teachers'){
-          ElMessage.error('无权限')
+          ElMessage.warning('无权限')
         }
       }
-    } else if(hover && type == 'leave'){
+    } else if(hover && type == 'leave'){                    
       hover = false
     }
   }