diff --git a/app/person/dashboard/components/PersonalProjectTable.tsx b/app/person/dashboard/components/PersonalProjectTable.tsx index 97e8c36..213aa6e 100644 --- a/app/person/dashboard/components/PersonalProjectTable.tsx +++ b/app/person/dashboard/components/PersonalProjectTable.tsx @@ -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 ( - { - 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} - + ) }, }, diff --git a/app/person/dashboard/page.tsx b/app/person/dashboard/page.tsx index 0da1889..0640037 100644 --- a/app/person/dashboard/page.tsx +++ b/app/person/dashboard/page.tsx @@ -247,7 +247,10 @@ export default function PersonDashboardPage() { - + {children} diff --git a/build.sh b/build.sh index 18f4501..fc36286 100755 --- a/build.sh +++ b/build.sh @@ -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}" diff --git a/components/label/hooks/useAuth.ts b/components/label/hooks/useAuth.ts new file mode 100644 index 0000000..4114743 --- /dev/null +++ b/components/label/hooks/useAuth.ts @@ -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 diff --git a/components/label/store/auth.ts b/components/label/store/auth.ts index ac584ce..5ef8fc5 100644 --- a/components/label/store/auth.ts +++ b/components/label/store/auth.ts @@ -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", diff --git a/components/layout/common.ts b/components/layout/common.ts index 66d9bbe..a81f283 100644 --- a/components/layout/common.ts +++ b/components/layout/common.ts @@ -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",