diff --git a/apps/admin/src/pages/IntegrationConfig/index.tsx b/apps/admin/src/pages/IntegrationConfig/index.tsx index 1bbd275..659b294 100644 --- a/apps/admin/src/pages/IntegrationConfig/index.tsx +++ b/apps/admin/src/pages/IntegrationConfig/index.tsx @@ -53,6 +53,33 @@ interface ImportUsersResponse { skipped: number; } +const UserTreeNode: React.FC<{ + u: { userid: string; name: string; mobile: string }; + isTeacher: boolean; + onToggle: () => void; + roleId: number | undefined; + defaultRoleId: number | null; + roles: Array<{ id: number; name: string }>; + onRoleChange: (roleId: number) => void; +}> = React.memo(({ u, isTeacher, onToggle, roleId, defaultRoleId, roles, onRoleChange }) => ( + + 老师 + {u.name} + {u.mobile && {u.mobile}} + {isTeacher && ( + - setTeacherRoles((prev) => ({ ...prev, [u.userid]: roleId })) - } - options={roles.map((r) => ({ label: r.name, value: r.id }))} - placeholder="选择角色" - onClick={(e: React.MouseEvent) => e.stopPropagation()} - /> - )} - + { + setTeacherChecks((prev) => ({ + ...prev, + [u.userid]: !prev[u.userid], + })); + if (teacherChecks[u.userid]) { + setTeacherRoles((prev) => { + const next = { ...prev }; + delete next[u.userid]; + return next; + }); + } + }} + roleId={teacherRoles[u.userid]} + defaultRoleId={defaultTeacherRoleId} + roles={roles} + onRoleChange={(roleId) => + setTeacherRoles((prev) => ({ ...prev, [u.userid]: roleId })) + } + /> ), key: `user-${u.userid}`, selectable: false,