diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 4794f41..2b02f77 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -84,19 +84,19 @@ function PlatformRoute({ children }: { children: React.ReactNode }) { function PlatformLayout({ children }: { children: React.ReactNode }) { const [sidebarOpen, setSidebarOpen] = useState(false) return ( -
+
setSidebarOpen(false)} />
-
+
- 平台管理后台 - ADMIN + 平台管理后台 + ADMIN
diff --git a/frontend/src/components/layout/PlatformSidebar.tsx b/frontend/src/components/layout/PlatformSidebar.tsx index c55ad01..b33407d 100644 --- a/frontend/src/components/layout/PlatformSidebar.tsx +++ b/frontend/src/components/layout/PlatformSidebar.tsx @@ -1,6 +1,6 @@ /** * 平台管理端侧边栏导航 - * 深色主题,amber 主色,区别于企业端 + * 浅色主题,与企业端配色一致 */ import { Link, useLocation, useNavigate } from 'react-router-dom' import { useState } from 'react' @@ -60,20 +60,20 @@ export default function PlatformSidebar({ mobileOpen, onClose }: { mobileOpen: b className={clsx( 'fixed md:sticky top-0 left-0 z-50 md:z-auto', 'w-56 h-screen flex-shrink-0', - 'bg-slate-950 border-r border-slate-800', + 'bg-white border-r border-gray-200', 'flex flex-col', 'transition-transform duration-200', mobileOpen ? 'translate-x-0' : '-translate-x-full md:translate-x-0', )} > {/* Logo 区 */} -
-
- +
+
+
-
用工专家平台
-
ADMIN
+
用工专家平台
+
ADMIN
@@ -89,7 +89,7 @@ export default function PlatformSidebar({ mobileOpen, onClose }: { mobileOpen: b onClick={() => toggleGroup(group.title)} className={clsx( 'flex items-center justify-between w-full px-2 py-1.5 text-xs font-medium rounded-md transition-colors', - hasActiveItem ? 'text-slate-200' : 'text-slate-400 hover:text-slate-200', + hasActiveItem ? 'text-gray-800' : 'text-gray-500 hover:text-gray-700', )} > {group.title} @@ -109,8 +109,8 @@ export default function PlatformSidebar({ mobileOpen, onClose }: { mobileOpen: b className={clsx( 'flex items-center gap-2 px-2 py-1.5 rounded-md text-sm transition-colors', active - ? 'bg-amber-400/10 text-amber-400 font-medium' - : 'text-slate-400 hover:bg-slate-800 hover:text-slate-200', + ? 'bg-primary/10 text-primary font-medium' + : 'text-gray-600 hover:bg-gray-100 hover:text-gray-800', )} > @@ -126,19 +126,19 @@ export default function PlatformSidebar({ mobileOpen, onClose }: { mobileOpen: b {/* 底部用户区 */} -
+
-
+
{user?.name?.charAt(0) || 'A'}
-
{user?.name}
-
SUPER_ADMIN
+
{user?.name}
+
SUPER_ADMIN
- {errors.password &&

{errors.password.message}

} + {errors.password &&

{errors.password.message}

}
-
- ← 返回企业登录 + ← 返回企业登录
diff --git a/frontend/src/pages/platform/PlatformOrgs.tsx b/frontend/src/pages/platform/PlatformOrgs.tsx index 02f8f3c..1f2eec6 100644 --- a/frontend/src/pages/platform/PlatformOrgs.tsx +++ b/frontend/src/pages/platform/PlatformOrgs.tsx @@ -109,8 +109,8 @@ export default function PlatformOrgs() { return (
-

企业租户管理

-

共 {total} 家企业

+

企业租户管理

+

共 {total} 家企业

{/* 搜索栏 */} @@ -119,14 +119,14 @@ export default function PlatformOrgs() { setSearch(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && fetchOrgs()} />
- -
{/* 表格 */} -
+
- + @@ -161,37 +161,37 @@ export default function PlatformOrgs() { {loading ? ( - + ) : orgs.length === 0 ? ( - + ) : orgs.map((org) => ( - + - - - - - + + + + +
企业名称 套餐 城市
加载中...
加载中...
暂无数据
暂无数据
-
{org.name}
-
{org.contactName || '-'} {org.contactPhone || ''}
+
{org.name}
+
{org.contactName || '-'} {org.contactPhone || ''}
{PLAN_LABELS[org.plan] || org.plan} {org.city || '-'}{org.employeeCount}{org.userCount}{org.contractCount}{new Date(org.createdAt).toLocaleDateString('zh-CN')}{org.city || '-'}{org.employeeCount}{org.userCount}{org.contractCount}{new Date(org.createdAt).toLocaleDateString('zh-CN')}
- + +
)} @@ -217,65 +217,65 @@ export default function PlatformOrgs() { {/* 创建企业弹窗 */} {createOpen && ( -
setCreateOpen(false)}> -
e.stopPropagation()}> -

创建企业客户

+
setCreateOpen(false)}> +
e.stopPropagation()}> +

创建企业客户

-
-

企业信息

+
+

企业信息

- - setCreateForm({ ...createForm, name: e.target.value })} /> + + setCreateForm({ ...createForm, name: e.target.value })} />
- - setCreateForm({ ...createForm, plan: e.target.value })}>
- - setCreateForm({ ...createForm, maxEmployees: parseInt(e.target.value) || 0 })} /> + + setCreateForm({ ...createForm, maxEmployees: parseInt(e.target.value) || 0 })} />
- - setCreateForm({ ...createForm, city: e.target.value })} /> + + setCreateForm({ ...createForm, city: e.target.value })} />
- - setCreateForm({ ...createForm, contactName: e.target.value })} /> + + setCreateForm({ ...createForm, contactName: e.target.value })} />
- - setCreateForm({ ...createForm, contactPhone: e.target.value })} /> + + setCreateForm({ ...createForm, contactPhone: e.target.value })} />
-
-

管理员账号

+
+

管理员账号

- - setCreateForm({ ...createForm, adminName: e.target.value })} /> + + setCreateForm({ ...createForm, adminName: e.target.value })} />
- - setCreateForm({ ...createForm, adminPhone: e.target.value })} /> + + setCreateForm({ ...createForm, adminPhone: e.target.value })} />
- - setCreateForm({ ...createForm, adminPassword: e.target.value })} /> + + setCreateForm({ ...createForm, adminPassword: e.target.value })} />
- - +
@@ -284,33 +284,33 @@ export default function PlatformOrgs() { {/* 编辑弹窗 */} {editOrg && ( -
setEditOrg(null)}> -
e.stopPropagation()}> -

编辑企业

+
setEditOrg(null)}> +
e.stopPropagation()}> +

编辑企业

- - setEditOrg({ ...editOrg, name: e.target.value })} /> + + setEditOrg({ ...editOrg, name: e.target.value })} />
- - setEditOrg({ ...editOrg, plan: e.target.value })}>
- - setEditOrg({ ...editOrg, maxEmployees: parseInt(e.target.value) || 0 })} /> + + setEditOrg({ ...editOrg, maxEmployees: parseInt(e.target.value) || 0 })} />
- - setEditOrg({ ...editOrg, city: e.target.value })} /> + + setEditOrg({ ...editOrg, city: e.target.value })} />
- - + +
@@ -319,24 +319,24 @@ export default function PlatformOrgs() { {/* 删除确认 */} {deleteOrg && ( -
setDeleteOrg(null)}> -
e.stopPropagation()}> +
setDeleteOrg(null)}> +
e.stopPropagation()}>
-
- +
+
-

确认删除

-

此操作不可撤销,将级联删除所有数据

+

确认删除

+

此操作不可撤销,将级联删除所有数据

-

- 确定要删除企业「{deleteOrg.name}」吗? +

+ 确定要删除企业「{deleteOrg.name}」吗? 该企业下有 {deleteOrg.employeeCount} 名员工、{deleteOrg.contractCount} 份合同、{deleteOrg.payslipCount} 条工资条,都将被永久删除。

- +
diff --git a/frontend/src/pages/platform/PlatformUsers.tsx b/frontend/src/pages/platform/PlatformUsers.tsx index 5192f38..c897e2f 100644 --- a/frontend/src/pages/platform/PlatformUsers.tsx +++ b/frontend/src/pages/platform/PlatformUsers.tsx @@ -68,8 +68,8 @@ export default function PlatformUsers() { return (
-

用户管理

-

共 {total} 个用户

+

用户管理

+

共 {total} 个用户

{/* 搜索栏 */} @@ -78,30 +78,30 @@ export default function PlatformUsers() { setSearch(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && fetchUsers()} />
-
{/* 表格 */} -
+
- + @@ -113,25 +113,25 @@ export default function PlatformUsers() { {loading ? ( - + ) : users.length === 0 ? ( - + ) : users.map((user) => ( - - - + + + - + -
姓名 手机号 角色
加载中...
加载中...
暂无数据
暂无数据
{user.name}{user.phone}
{user.name}{user.phone} {ROLE_LABELS[user.role] || user.role} {user.orgName || '-'}{user.orgName || '-'} {user.disabled - ? 已禁用 - : 正常} + ? 已禁用 + : 正常} + {user.lastLoginAt ? new Date(user.lastLoginAt).toLocaleString('zh-CN') : '从未登录'} @@ -139,8 +139,8 @@ export default function PlatformUsers() { onClick={() => handleToggle(user)} className={`inline-flex items-center gap-1 px-2 py-1 rounded text-xs transition-colors ${ user.disabled - ? 'text-emerald-400 hover:bg-slate-800' - : 'text-red-400 hover:bg-slate-800' + ? 'text-emerald-600 hover:bg-gray-100' + : 'text-red-500 hover:bg-gray-100' }`} > {user.disabled ? <> 启用 : <> 禁用} @@ -152,11 +152,11 @@ export default function PlatformUsers() {
{totalPages > 1 && ( -
- 第 {page} / {totalPages} 页,共 {total} 条 +
+ 第 {page} / {totalPages} 页,共 {total} 条
- - + +
)}