diff --git a/.DS_Store b/.DS_Store index e9df439..c7e173b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/dist.zip b/dist.zip index e6fa54c..abee3cf 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/src/components/admin/UserManagement.css b/src/components/admin/UserManagement.css index 5aa8f13..f25393e 100644 --- a/src/components/admin/UserManagement.css +++ b/src/components/admin/UserManagement.css @@ -1,9 +1,16 @@ -/* UserManagement.css */ .user-management .toolbar { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 1.5rem; + margin-bottom: 2rem; +} + +.user-management .toolbar h2 { + margin: 0; + flex-shrink: 0; + font-size: 1.5rem; + font-weight: 600; + color: #1e293b; } .users-table { diff --git a/src/components/admin/UserManagement.jsx b/src/components/admin/UserManagement.jsx index f634b2c..f29773c 100644 --- a/src/components/admin/UserManagement.jsx +++ b/src/components/admin/UserManagement.jsx @@ -18,9 +18,11 @@ const UserManagement = () => { const [processingUser, setProcessingUser] = useState(null); const [newUser, setNewUser] = useState({ username: '', caption: '', email: '', role_id: 2 }); const [editingUser, setEditingUser] = useState(null); + const [roles, setRoles] = useState([]); useEffect(() => { fetchUsers(); + fetchRoles(); }, [page, pageSize]); const fetchUsers = async () => { @@ -36,6 +38,20 @@ const UserManagement = () => { } }; + const fetchRoles = async () => { + try { + const response = await apiClient.get(buildApiUrl(API_ENDPOINTS.USERS.ROLES)); + setRoles(response.data); + } catch (err) { + console.error('Error fetching roles:', err); + // 如果无法获取角色列表,使用默认值 + setRoles([ + { role_id: 1, role_name: '平台管理员' }, + { role_id: 2, role_name: '普通用户' } + ]); + } + }; + const handleAddUser = async (e) => { e.preventDefault(); try { @@ -141,7 +157,7 @@ const UserManagement = () => { {user.username} {user.caption} {user.email} - {user.role_id === 1 ? '管理员' : '普通用户'} + {user.role_name} {new Date(user.created_at).toLocaleString()} @@ -184,8 +200,9 @@ const UserManagement = () => {
@@ -221,8 +238,9 @@ const UserManagement = () => {
diff --git a/src/config/api.js b/src/config/api.js index 69d0c3b..88d25fb 100644 --- a/src/config/api.js +++ b/src/config/api.js @@ -16,7 +16,8 @@ const API_CONFIG = { DELETE: (userId) => `/api/users/${userId}`, RESET_PASSWORD: (userId) => `/api/users/${userId}/reset-password`, DETAIL: (userId) => `/api/users/${userId}`, - UPDATE_PASSWORD: (userId) => `/api/users/${userId}/password` + UPDATE_PASSWORD: (userId) => `/api/users/${userId}/password`, + ROLES: '/api/roles' }, MEETINGS: { LIST: '/api/meetings', diff --git a/src/pages/AdminManagement.css b/src/pages/AdminManagement.css index a11ce56..cf4d98b 100644 --- a/src/pages/AdminManagement.css +++ b/src/pages/AdminManagement.css @@ -78,6 +78,7 @@ transition: all 0.3s ease; font-weight: 500; outline: none; + border-radius: 0px; } .tab-btn:hover { diff --git a/src/pages/CreateMeeting.jsx b/src/pages/CreateMeeting.jsx index 7c94092..d1dbf03 100644 --- a/src/pages/CreateMeeting.jsx +++ b/src/pages/CreateMeeting.jsx @@ -26,8 +26,9 @@ const CreateMeeting = ({ user }) => { const fetchUsers = async () => { try { - const response = await apiClient.get(buildApiUrl(API_ENDPOINTS.USERS.LIST)); - setAvailableUsers(response.data.filter(u => u.user_id !== user.user_id)); + // 获取所有用户,设置较大的size参数 + const response = await apiClient.get(buildApiUrl(`${API_ENDPOINTS.USERS.LIST}?page=1&size=1000`)); + setAvailableUsers(response.data.users.filter(u => u.user_id !== user.user_id)); } catch (err) { console.error('Error fetching users:', err); } diff --git a/src/pages/Dashboard.css b/src/pages/Dashboard.css index aaa1266..e40de84 100644 --- a/src/pages/Dashboard.css +++ b/src/pages/Dashboard.css @@ -41,8 +41,9 @@ } .welcome-text { - color: #64748b; - font-weight: 500; + color: #334155; + font-weight: 600; + font-size: 1rem; } .logout-btn { @@ -313,6 +314,14 @@ align-items: center; cursor: pointer; gap: 0.5rem; + padding: 0.5rem 1rem; + border-radius: 8px; + transition: all 0.3s ease; + background: transparent; +} + +.user-menu-trigger:hover { + background: #f1f5f9; } .dropdown-menu { diff --git a/src/pages/EditMeeting.css b/src/pages/EditMeeting.css index 704c8cc..9c41801 100644 --- a/src/pages/EditMeeting.css +++ b/src/pages/EditMeeting.css @@ -681,5 +681,4 @@ .modal-actions .btn-submit:disabled { opacity: 0.7; cursor: not-allowed; -} } \ No newline at end of file diff --git a/src/pages/EditMeeting.jsx b/src/pages/EditMeeting.jsx index 8d71cb6..b9604f3 100644 --- a/src/pages/EditMeeting.jsx +++ b/src/pages/EditMeeting.jsx @@ -68,8 +68,9 @@ const EditMeeting = ({ user }) => { const fetchUsers = async () => { try { - const response = await apiClient.get(buildApiUrl(API_ENDPOINTS.USERS.LIST)); - setAvailableUsers(response.data.filter(u => u.user_id !== user.user_id)); + // 获取所有用户,设置较大的size参数 + const response = await apiClient.get(buildApiUrl(`${API_ENDPOINTS.USERS.LIST}?page=1&size=1000`)); + setAvailableUsers(response.data.users.filter(u => u.user_id !== user.user_id)); } catch (err) { console.error('Error fetching users:', err); } diff --git a/src/pages/HomePage.jsx b/src/pages/HomePage.jsx index 00f9f87..673d015 100644 --- a/src/pages/HomePage.jsx +++ b/src/pages/HomePage.jsx @@ -60,9 +60,9 @@ const HomePage = ({ onLogin }) => { {/* Hero Section */}
-

智慧会议,让会议更高效

+

“慧会议” 让会议更高效

- 通过AI技术,将会议音视频转化为结构化信息,提升团队协作效率 + 通过AI将会议音频进行人声分离并自动总结,提升团队协作效率。