fix(bug): fix router

This commit is contained in:
zhangheng
2026-03-27 16:18:44 +08:00
parent 5cbdd259ab
commit 336adc766e
7 changed files with 153 additions and 23 deletions

View File

@@ -2,7 +2,7 @@
import { getPersonProjectDashBoard } from "@/components/label/api/project"
import { Project } from "@/components/label/api/project/typing"
import { Button, Group, Text, UnstyledButton } from "@mantine/core"
import { Button, Group, Text } from "@mantine/core"
import { IconRefresh } from "@tabler/icons-react"
import dayjs from "dayjs"
@@ -76,15 +76,16 @@ export default function PersonalProjectTable() {
width: 150,
render: (record: Project.PersonProjectDashboardResponseItem) => {
return (
<UnstyledButton
<Text
px={6}
variant="transparent"
onClick={async () => {
setCurrentRowId(record.project_id)
router.push(`/project/info/detail?id=${record.project_id}`)
false && setCurrentRowId(record.project_id)
false &&
router.push(`/project/info/detail?id=${record.project_id}`)
}}
title={record.project_id.toString()}
c={"brand"}
// c={"brand"}
style={{
fontSize: "14px",
maxWidth: "100%",
@@ -93,7 +94,7 @@ export default function PersonalProjectTable() {
textOverflow: "ellipsis",
}}>
{record.project_id}
</UnstyledButton>
</Text>
)
},
},

View File

@@ -247,7 +247,10 @@ export default function PersonDashboardPage() {
</SimpleGrid>
</Group>
<SimpleGrid cols={{ base: 1, lg: 2 }} spacing="md" style={{ flex: 1 }}>
<SimpleGrid
cols={{ base: 1, lg: 2 }}
spacing="md"
style={{ flex: 1, maxHeight: "calc(100% - 194px)" }}>
<Paper
shadow="xs"
withBorder

View File

@@ -2,16 +2,16 @@ import AppLayout from "@/components/layout/AppLayout"
import { PathnameRecorder } from "@/components/layout/PathnameRecorder"
import { componentList, showList } from "@/components/layout/common"
async function getMenu() {
return [...componentList, ...showList]
}
// async function getMenu() {
// return [...componentList, ...showList]
// }
export default async function Layout({
children,
}: {
children: React.ReactNode
}) {
const menu = await getMenu()
const menu = [...componentList, ...showList]
return (
<AppLayout menu={menu}>
{children}

View File

@@ -51,11 +51,11 @@ FLAG_PROD="${ENV}_latest"
cd $SHELL_FOLDER
# 检查git状态
echo -e "${GREEN}Checking git status...${NC}"
git fetch
git merge
if [[ $? != 0 ]]; then echo -e "${RED}git pull error${NC}"; exit 100; fi
# # 检查git状态
# echo -e "${GREEN}Checking git status...${NC}"
# git fetch
# git merge
# if [[ $? != 0 ]]; then echo -e "${RED}git pull error${NC}"; exit 100; fi
BRANCH_NAME=`git branch | grep "*"`
echo -e "${GREEN}Current branch: ${BRANCH_NAME/* /}${NC}"

View File

@@ -0,0 +1,121 @@
"use client"
import { usePermissionStore } from "@/components/label/store/auth"
import { usePathname } from "next/navigation"
interface PermissionItem {
[x: string]: [boolean, null, string]
}
type PermissionMap = {
[x: string]: PermissionItem
}
const mappingList: { [x: string]: [string, string] } = {
"/project/own": ["project", "config"],
"/management/team/employee": ["user", "view"],
"/management/team/organization": ["user", "group_view"],
"/management/team/dailypaper": ["daily_work", "team_view"],
"/management/team/cost": ["settlement_form", "view"],
"/management/team/workload": ["workload", "view"],
"/management/team/sync_server": ["data_sync", "server_view"],
"/management/team/sync_task": ["data_sync", "task_view"],
"/management/team/board": ["user", "view"],
}
export const headerBarCheckItems = (data: PermissionMap) => {
const projectTitle = [
["daily_work", "self_view"],
["label_schema", "view"],
["project", "view"],
["task", "view"],
] as const
let projectVisible = false
projectTitle.forEach(([prop, subProp]) => {
if (data[prop] && data[prop][subProp] && data[prop][subProp][0]) {
projectVisible = true
}
})
const staffTitle = [
["daily_work", "team_view"],
["user", "view"],
["user", "group_view"],
] as const
let staffVisible = false
staffTitle.forEach(([prop, subProp]) => {
if (data[prop] && data[prop][subProp] && data[prop][subProp][0]) {
staffVisible = true
}
})
return [projectVisible, staffVisible]
}
const useAuth = () => {
const pathname = usePathname()
const detailInfo = usePermissionStore((s) => s.detailInfo)
const permission = detailInfo?.permissions as PermissionMap | undefined
const roleName: string[] = detailInfo?.role_name ?? []
return {
hasPermission: () => {
if (
[
"/",
"/login",
"/management",
"/management/person/dashboard",
"/management/team",
].includes(pathname)
) {
return true
}
if (!permission) return false
if (mappingList[pathname]) {
const [prop, subProp] = mappingList[pathname]
return (
!!permission[prop] &&
!!permission[prop][subProp] &&
!!permission[prop][subProp][0]
)
}
return false
},
// path 跳转是否可见
canNv: (path: string, type = "view") => {
if (!permission) return false
if (mappingList[path]) {
const [prop] = mappingList[path]
return (
!!permission[prop] &&
!!permission[prop][type] &&
!!permission[prop][type][0]
)
}
return false
},
// 当前页面是否可见某个操作
isShow: (type = "view") => {
if (!permission) return false
if (mappingList[pathname]) {
const [prop] = mappingList[pathname]
return (
!!permission[prop] &&
!!permission[prop][type] &&
!!permission[prop][type][0]
)
}
return false
},
checkRole: (name: string) => {
if (!name) return false
return roleName.includes(name)
},
}
}
export default useAuth

View File

@@ -263,8 +263,13 @@ export const useBackUrlStore = create(
(set) => ({
backUrl: null,
backTitle: null,
setBackProps: (url: string, title?: string) =>
set({ backUrl: url, backTitle: title || null }),
basePath: "",
setBackProps: (url: string, title?: string, basePath?: string) =>
set({
backUrl: url,
backTitle: title || null,
basePath: basePath || "",
}),
}),
{
name: "back_url",

View File

@@ -81,11 +81,11 @@ export const componentList: MenuItem[] = [
url: "video",
icon: "SystemIcon",
},
{
title: "点云标注",
url: "pointcloud",
icon: "SystemIcon",
},
// {
// title: "点云标注",
// url: "pointcloud",
// icon: "SystemIcon",
// },
{
title: "管理中心",
url: "mgt",