Przeglądaj źródła

添加 角色,状态过滤

visuddhinanda 1 rok temu
rodzic
commit
996e85b6b5
1 zmienionych plików z 91 dodań i 13 usunięć
  1. 91 13
      dashboard/src/components/course/CourseMemberList.tsx

+ 91 - 13
dashboard/src/components/course/CourseMemberList.tsx

@@ -22,6 +22,11 @@ import { ISetStatus, setStatus } from "./UserAction";
 import { IChannel } from "../channel/Channel";
 import CourseInvite from "./CourseInvite";
 
+interface IParam {
+  role?: string;
+  status?: string[];
+}
+
 interface IRoleTag {
   title: string;
   color: string;
@@ -73,7 +78,7 @@ const CourseMemberListWidget = ({ courseId, onSelect }: IWidget) => {
 
   return (
     <>
-      <ProList<ICourseMember>
+      <ProList<ICourseMember, IParam>
         actionRef={ref}
         search={{
           filterType: "light",
@@ -94,6 +99,7 @@ const CourseMemberListWidget = ({ courseId, onSelect }: IWidget) => {
             search: false,
           },
           avatar: {
+            search: false,
             render(dom, entity, index, action, schema) {
               return <User {...entity.user} showName={false} />;
             },
@@ -150,14 +156,7 @@ const CourseMemberListWidget = ({ courseId, onSelect }: IWidget) => {
                 "reject",
                 "block",
               ];
-              /*
 
-              const undo = {
-                key: "undo",
-                label: "撤销上次操作",
-                disabled: !canUndo,
-              };
-              */
               const items: ItemType[] = actions.map((item) => {
                 return {
                   key: item,
@@ -224,23 +223,96 @@ const CourseMemberListWidget = ({ courseId, onSelect }: IWidget) => {
               ];
             },
           },
-          role: {
+          status: {
             // 自己扩展的字段,主要用于筛选,不在列表中显示
-            title: "角色",
-            valueType: "select",
+            title: "状态",
+            valueType: "checkbox",
             valueEnum: {
-              all: {
+              joined: {
                 text: intl.formatMessage({
-                  id: "forms.fields.publicity.all.label",
+                  id: "course.member.status.joined.label",
                 }),
                 status: "Default",
               },
+              applied: {
+                text: intl.formatMessage({
+                  id: "course.member.status.applied.label",
+                }),
+                status: "Success",
+              },
+              invited: {
+                text: intl.formatMessage({
+                  id: "course.member.status.invited.label",
+                }),
+                status: "Success",
+              },
+              canceled: {
+                text: intl.formatMessage({
+                  id: "course.member.status.canceled.label",
+                }),
+                status: "Success",
+              },
+              revoked: {
+                text: intl.formatMessage({
+                  id: "course.member.status.revoked.label",
+                }),
+                status: "Success",
+              },
+              agreed: {
+                text: intl.formatMessage({
+                  id: "course.member.status.agreed.label",
+                }),
+                status: "Success",
+              },
+              accepted: {
+                text: intl.formatMessage({
+                  id: "course.member.status.accepted.label",
+                }),
+                status: "Success",
+              },
+              disagreed: {
+                text: intl.formatMessage({
+                  id: "course.member.status.disagreed.label",
+                }),
+                status: "Success",
+              },
+              rejected: {
+                text: intl.formatMessage({
+                  id: "course.member.status.rejected.label",
+                }),
+                status: "Success",
+              },
+              left: {
+                text: intl.formatMessage({
+                  id: "course.member.status.left.label",
+                }),
+                status: "Success",
+              },
+              blocked: {
+                text: intl.formatMessage({
+                  id: "course.member.status.blocked.label",
+                }),
+                status: "Success",
+              },
+            },
+          },
+          role: {
+            // 自己扩展的字段,主要用于筛选,不在列表中显示
+            title: "角色",
+            valueType: "select",
+            valueEnum: {
               student: {
                 text: intl.formatMessage({
                   id: "auth.role.student",
                 }),
                 status: "Default",
               },
+              manager: {
+                text: intl.formatMessage({
+                  id: "auth.role.manager",
+                }),
+                status: "Success",
+              },
               assistant: {
                 text: intl.formatMessage({
                   id: "auth.role.assistant",
@@ -264,6 +336,12 @@ const CourseMemberListWidget = ({ courseId, onSelect }: IWidget) => {
           ) {
             url += "&search=" + params.keyword;
           }
+          if (params.role) {
+            url += `&role=${params.role}`;
+          }
+          if (params.status) {
+            url += `&status=${params.status}`;
+          }
           console.info("api request", url);
           const res = await get<ICourseMemberListResponse>(url);
           if (res.ok) {