浏览代码

feat: 获取参评教师对应的课程

ZW\zwf97 6 月之前
父节点
当前提交
61de655427

+ 2 - 0
src/layouts/SideMenu.tsx

@@ -75,6 +75,7 @@ function SideMenu  ({
       setTeacherData(data.data)
       setTeacherData(data.data)
       if (data.data.length > 0) {
       if (data.data.length > 0) {
         setActiveKey(data.data[0].teacherName as string)
         setActiveKey(data.data[0].teacherName as string)
+        history.push('/record?teacherId=' + data.data[0].teacherId);
       }
       }
     }
     }
   }
   }
@@ -191,6 +192,7 @@ function SideMenu  ({
                 return {
                 return {
                   onClick: () => {
                   onClick: () => {
                     setActiveKey(record.teacherName);
                     setActiveKey(record.teacherName);
+                    history.push('/record?teacherId=' + record.teacherId);
                   },
                   },
                 };
                 };
               }}
               }}

+ 30 - 4
src/pages/Record/index.tsx

@@ -1,18 +1,22 @@
 import {
 import {
   PageContainer,
   PageContainer,
 } from '@ant-design/pro-components';
 } from '@ant-design/pro-components';
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useRef, useState } from 'react';
 import ProList from '@ant-design/pro-list';
 import ProList from '@ant-design/pro-list';
 import { Image, Tabs } from 'antd';
 import { Image, Tabs } from 'antd';
 import './style/index.less';
 import './style/index.less';
 import CourseImage from '@/assets/img/course_image.png';
 import CourseImage from '@/assets/img/course_image.png';
 import { history } from "@umijs/max";
 import { history } from "@umijs/max";
 import { useLocation, useRouteProps } from '@@/exports';
 import { useLocation, useRouteProps } from '@@/exports';
+import { getTeacherCourses } from '@/services/record/RecordController';
+import { ActionType } from '@ant-design/pro-table/lib';
 
 
 const TableList: React.FC<unknown> = () => {
 const TableList: React.FC<unknown> = () => {
   const routeProps = useRouteProps();
   const routeProps = useRouteProps();
   const location = useLocation();
   const location = useLocation();
   const [selectedKeys, setSelectedKeys] = useState(location.pathname);
   const [selectedKeys, setSelectedKeys] = useState(location.pathname);
+  const [teacherId, setTeacherId] = useState<string>('');
+  const actionRef = useRef<ActionType>();
 
 
   useEffect(() => {
   useEffect(() => {
     if(location.pathname) {
     if(location.pathname) {
@@ -20,6 +24,17 @@ const TableList: React.FC<unknown> = () => {
     }
     }
   }, [location.pathname]);
   }, [location.pathname]);
 
 
+  useEffect(() => {
+    if(location.search) {
+      const searchParams = new URLSearchParams(location.search);
+      setTeacherId(searchParams.get('teacherId') as string);
+      if (actionRef.current) {
+        actionRef.current?.reload()
+      }
+    }
+  }, [location.search]);
+
+
   const data = [
   const data = [
     {
     {
       courseId: '1',
       courseId: '1',
@@ -142,6 +157,7 @@ const TableList: React.FC<unknown> = () => {
       />
       />
       <ProList<any>
       <ProList<any>
         search={{}}
         search={{}}
+        actionRef={actionRef}
         className="table-box"
         className="table-box"
         pagination={{
         pagination={{
           defaultPageSize: 20,
           defaultPageSize: 20,
@@ -178,8 +194,8 @@ const TableList: React.FC<unknown> = () => {
                 <div>授课老师:{item.teacherName}</div>
                 <div>授课老师:{item.teacherName}</div>
               </div>
               </div>
               <div className="info-flex">
               <div className="info-flex">
-                <div>授课时间:{item.teacherTime}</div>
-                <div>授课班级:{item.classRoom}</div>
+                <div>授课时间:{item.courseDate}</div>
+                <div>授课班级:{item.classroomName}</div>
               </div>
               </div>
             </div>
             </div>
           </div>
           </div>
@@ -208,7 +224,17 @@ const TableList: React.FC<unknown> = () => {
           },
           },
           actions: {},
           actions: {},
         }}
         }}
-        dataSource={data}
+        request={async (params) => {
+          const { pageSize } = params
+          const data = await getTeacherCourses({
+            teacherId: teacherId,
+            size: pageSize,
+          })
+          return {
+            data: data.data.records,
+            total: data.data.total,
+          };
+        }}
       />
       />
     </PageContainer>
     </PageContainer>
   );
   );

+ 19 - 0
src/services/record/RecordController.ts

@@ -0,0 +1,19 @@
+
+import { request } from '@umijs/max';
+
+/**
+ * login
+ * @returns
+ * @param params
+ * @param options
+ */
+export async function getTeacherCourses(
+  params?: API.RecordParams,
+  options?: { [key: string]: any },
+) {
+  return request<API.RecordRes>('/api/expert/active/teacherCourses', {
+    method: 'GET',
+    params: params,
+    ...(options || {}),
+  });
+}

+ 5 - 0
src/services/record/index.ts

@@ -0,0 +1,5 @@
+
+import * as RecordController from './RecordController';
+export default {
+  RecordController,
+};

+ 18 - 0
src/services/record/typings.d.ts

@@ -0,0 +1,18 @@
+declare namespace API {
+  // 参数接口
+  interface RecordParams {
+    teacherId: string;
+    activeId?: string;
+    subjectCode?: string;
+    courseTitle?: string;
+    size?: number,
+  }
+
+  // 响应接口
+  interface RecordRes {
+    code: number;
+    data: Record<string, any>;
+    message: string;
+    timestamp: number;
+  }
+}