新增合同上传附件追加

This commit is contained in:
2025-09-11 17:11:38 +08:00
parent 066e8ba4d9
commit c611d6621d
4 changed files with 364 additions and 17 deletions
+15 -5
View File
@@ -30,17 +30,17 @@ export async function action({ request }: ActionFunctionArgs) {
// 验证用户登录状态
export async function loader({ request }: LoaderFunctionArgs) {
const { isAuthenticated, userRole } = await getUserSession(request);
const { isAuthenticated, userRole, userInfo } = await getUserSession(request);
if (!isAuthenticated) {
return redirect("/login");
}
return Response.json({ userRole });
return Response.json({ userRole, userInfo });
}
export default function Index() {
const navigate = useNavigate();
const { userRole } = useLoaderData<typeof loader>();
const { userRole, userInfo } = useLoaderData<typeof loader>();
const [currentDateTime, setCurrentDateTime] = useState({
date: '',
time: ''
@@ -133,8 +133,18 @@ export default function Index() {
<div className="user-info">
<span className="datetime">{currentDateTime.date} {currentDateTime.time}</span>
<div className="user">
<img src="/avatar.png" alt="用户头像" className="avatar" />
<span className="username">{userRole === 'developer' ? '系统管理员' : '普通用户'}</span>
{(() => {
const displayName = (userInfo?.nick_name || (userInfo as { nickname?: string })?.nickname || (userInfo as { name?: string })?.name || '') as string;
const lastChar = displayName ? displayName.charAt(displayName.length - 1) : '用';
return (
<>
<div className="avatar w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center">
<span>{lastChar}</span>
</div>
<span className="username ml-2">{displayName || '未知用户'}</span>
</>
);
})()}
<button
onClick={handleLogout}
className="logout-button"