添加nginx相关配置,首页系统概览添加用户id查询

This commit is contained in:
2025-07-24 09:42:39 +08:00
parent 8800e982ab
commit 913702ea10
8 changed files with 1204 additions and 135 deletions
+18 -11
View File
@@ -11,7 +11,7 @@ import { getDocuments, type DocumentUI, type DocumentSearchParams } from "~/api/
import { useState, useEffect } from "react";
import { getHomeData } from "~/api/home/home";
import dayjs from 'dayjs';
import type { UserRole } from '~/api/login/auth.server';
// import type { UserRole } from '~/api/login/auth.server';
import { type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/node";
import { logout, getUserSession } from "~/api/login/auth.server";
@@ -48,7 +48,8 @@ export const meta: MetaFunction = () => {
export async function loader({ request }: LoaderFunctionArgs) {
try {
// 从根loader获取用户角色
const { userRole } = await getUserSession(request);
const { userRole, userInfo, frontendJWT } = await getUserSession(request);
// 返回默认值,实际数据将在客户端根据 sessionStorage 加载
return Response.json({
@@ -63,7 +64,9 @@ export async function loader({ request }: LoaderFunctionArgs) {
},
recentFiles: [],
reviewType: null,
userRole: userRole
userRole: userRole,
userInfo,
frontendJWT
});
} catch (error) {
// 错误处理
@@ -89,7 +92,7 @@ export async function action({ request }: ActionFunctionArgs) {
export default function Home() {
const navigate = useNavigate();
const { homeData: initialHomeData, recentFiles: initialRecentFiles, userRole: serverUserRole } = useLoaderData<typeof loader>();
const { homeData: initialHomeData, recentFiles: initialRecentFiles, userRole: serverUserRole, userInfo } = useLoaderData<typeof loader>();
const [recentFiles, setRecentFiles] = useState<DocumentUI[]>(initialRecentFiles || []);
const [homeData, setHomeData] = useState(initialHomeData);
const [currentDateTime, setCurrentDateTime] = useState({
@@ -97,7 +100,7 @@ export default function Home() {
time: ''
});
const [isLoading, setIsLoading] = useState(true);
const userRole = serverUserRole as UserRole;
// const userRole = serverUserRole as UserRole;
// 打印服务器端传递的用户角色
useEffect(() => {
@@ -155,7 +158,7 @@ export default function Home() {
const reviewType = sessionStorage.getItem('reviewType');
// 加载主页数据
const newHomeData = await getHomeData(reviewType || undefined);
const newHomeData = await getHomeData(reviewType || undefined,userInfo.user_id);
setHomeData(newHomeData);
// 加载文档数据
@@ -177,7 +180,8 @@ export default function Home() {
try {
const documentSearchParams: DocumentSearchParams = {
page: 1,
pageSize: 10
pageSize: 10,
userId: userInfo.user_id
};
// 根据 reviewType 添加过滤条件
@@ -186,6 +190,7 @@ export default function Home() {
const response = await getDocuments(documentSearchParams);
if (!response.error && response.data) {
// console.log('合同文档数据',response.data.documents);
return response.data.documents;
}
} else if (reviewType === 'record') {
@@ -209,6 +214,7 @@ export default function Home() {
);
// 限制数量
// console.log('卷宗文档数据',mergedDocs);
return mergedDocs.slice(0, documentSearchParams.pageSize);
}
} else {
@@ -236,7 +242,7 @@ export default function Home() {
setIsLoading(true);
// 更新主页数据
const newHomeData = await getHomeData(currentReviewType || undefined);
const newHomeData = await getHomeData(currentReviewType || undefined,userInfo.user_id);
setHomeData(newHomeData);
// 更新文档数据
@@ -301,14 +307,15 @@ export default function Home() {
</div>
<div className="user-profile p-4 border-b border-gray-100 flex items-center">
<div className="avatar w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center">
<span>{userRole === 'developer' ? '管' : '用'}</span>
<span>{userInfo.nick_name.charAt(userInfo.nick_name.length-1)}</span>
</div>
<div className="ml-1">
<p className="text-sm font-medium mb-0">{userRole === 'developer' ? '系统管理员' : '普通用户'}</p>
{/* <p className="text-sm font-medium mb-0">{userRole === 'developer' ? '系统管理员' : '普通用户'}</p> */}
<p className="text-sm font-medium mb-0">{userInfo.nick_name}</p>
{/* <p className="text-xs text-gray-500 mb-0">{userRole === 'developer' ? '超级管理员' : '标准权限'}</p> */}
</div>
</div>
{/* 登出操作 */}
{/* 登出操作 */}
<Button
type="default"
size="small"