Procházet zdrojové kódy

feat: 获取自己参评的老师列表

ZW\zwf97 před 6 měsíci
rodič
revize
818198fbe5

+ 44 - 36
src/layouts/SideMenu.tsx

@@ -9,6 +9,7 @@ import ProList from '@ant-design/pro-list';
 import { history } from '@@/core/history';
 import CourseImage from '@/assets/img/course_image.png';
 import { useLocation } from '@@/exports';
+import { getTeachers } from '@/services/side/SideController';
 
 
 interface SideMenuProps {
@@ -21,30 +22,9 @@ function SideMenu  ({
 }: SideMenuProps) {
   const location = useLocation();
   const [isLessionPage, setIsLessionPage] = useState<boolean>(false);
-  const [activeKey, setActiveKey] = useState<string | number>('');
-  const teacherData = [
-    {
-      teacherName: '张三',
-      schoolName: '清华大学',
-    },
-    {
-      teacherName: '李四',
-      schoolName: '北京大学',
-    },
-    {
-      teacherName: '王五',
-      schoolName: '南京大学',
-    },
-    {
-      teacherName: '麻六',
-      schoolName: '上海大学',
-    }
-  ].map((item) => ({
-    title: item.teacherName,
-    description: item.schoolName,
-    actions: [],
-    avatar: false,
-  }));
+  const [activeKey, setActiveKey] = useState<string>('');
+  const [teacherName, setTeacherName] = useState<string>('');
+  const [teacherData, setTeacherData] = useState<API.Teacher[]>([]);
 
   const lessonData = [
     {
@@ -87,6 +67,26 @@ function SideMenu  ({
     }
   }, [location.pathname]);
 
+  async function getTeacherList() {
+    const data: API.SideRes = await getTeachers({
+      teacherName: teacherName,
+    })
+    if (data.code === 200) {
+      setTeacherData(data.data)
+      if (data.data.length > 0) {
+        setActiveKey(data.data[0].teacherName as string)
+      }
+    }
+  }
+
+  useEffect(() => {
+    const onData = async () => {
+      await getTeacherList()
+    }
+    onData()
+  }, []);
+
+
   return (
     <div style={{ width: initWidth, height: '100vh' }}>
       <div className="side-header">
@@ -125,8 +125,16 @@ function SideMenu  ({
                     参评教师
                   </div>
                   <Space direction="horizontal" style={{ padding: '0 10px' }}>
-                    <Input placeholder="输入教师姓名搜索" />
-                    <Button icon={<SearchOutlined />} type="primary" />
+                    <Input
+                      value={teacherName}
+                      onChange={(e) => setTeacherName(e.target.value)}
+                      placeholder="输入教师姓名搜索"
+                    />
+                    <Button
+                      icon={<SearchOutlined />}
+                      type="primary"
+                      onClick={getTeacherList}
+                    />
                   </Space>
                 </div>
               )
@@ -142,16 +150,13 @@ function SideMenu  ({
               onItem={(record) => {
                 return {
                   onClick: () => {
-                    setActiveKey(record.lessonId);
+                    console.log(record);
                   },
                 };
               }}
-              rowClassName={(record: { lessonId: string }) =>
-                record.lessonId === activeKey ? 'active' : ''
-              }
               renderItem={(item) => (
                 <div
-                  style={{ backgroundColor: '#F8FAFC', cursor: 'pointer', margin: '0 10px' }}
+                  style={{ backgroundColor: '#F8FAFC', cursor: 'pointer' }}
                   onClick={() => {
                     history.push('/play?courseId=1&lessonId=' + item.lessonId);
                   }}
@@ -179,24 +184,27 @@ function SideMenu  ({
             />
             ) : (
             <ProList<any>
+              className={'list-box'}
               pagination={false}
               showActions="hover"
               onItem={(record) => {
                 return {
                   onClick: () => {
-                    setActiveKey(record.title);
+                    setActiveKey(record.teacherName);
                   },
                 };
               }}
-              rowClassName={(record: { title: string }) =>
-                record.title === activeKey ? 'active' : ''
+              rowClassName={(record: { teacherName: string }) =>
+                record.teacherName === activeKey ? 'active' : ''
               }
               metas={{
-                title: {},
+                title: {
+                  dataIndex: 'teacherName',
+                },
                 description: {
+                  dataIndex: 'schoolName',
                   render: (text) => <div style={{ textAlign: 'left' }}>{text}</div>,
                 },
-                avatar: {},
               }}
               dataSource={teacherData}
             />

+ 1 - 0
src/layouts/styles/side-menu.less

@@ -54,6 +54,7 @@
         }
     }
     .list-box {
+        margin: 0 10px;
         .ant-pro-card-body {
             .ant-spin-container {
                 height: calc(100vh - 170px);

+ 21 - 0
src/services/side/SideController.ts

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

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

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

+ 21 - 0
src/services/side/typings.d.ts

@@ -0,0 +1,21 @@
+declare namespace API {
+  interface Teacher {
+    teacherId?: string,
+    cubeAccountId?: string,
+    teacherName?: string,
+    phone?: string,
+    isDel?: string,
+    sex?: string,
+    schoolName?: string,
+    schoolCode?: string,
+    teacherGradeSubjects?: string,
+    subjectConfigId?: string,
+  }
+  // 响应接口
+  interface SideRes {
+    code: number;
+    data: Teacher[];
+    message: string;
+    timestamp: number;
+  }
+}