first commit

This commit is contained in:
liu
2026-07-13 15:23:29 +08:00
commit 50885a98c8
473 changed files with 33772 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
import IconFont from "@/components/IconFont";
import MenuRender from "@/layout/MenuRender.tsx";
import {useLayoutContext} from "@/layout/LayoutContext.tsx";
import {useTranslation} from "react-i18next";
import {theme} from "antd";
import useGlobalStore from "@/stores/global";
import React from "react";
import type {IMenus} from "@/domain/iSysRule.ts";
import {useNavigate} from "react-router";
const {useToken} = theme;
const ColumnsMenu: React.FC = () => {
const {t} = useTranslation();
const {token} = useToken();
const navigate = useNavigate();
const {menus, parentKey, collapsed, setParentKey, setSelectKey} = useLayoutContext();
const themeConfig = useGlobalStore(state => state.themeConfig);
const onMenuChange = (menu: IMenus) => {
if(!menu.key) return;
setParentKey(menu.key);
if(menu.type === 'menu') {
return;
}
setSelectKey([menu.key]);
// 外链路由
if(menu.type === 'route' && menu.link) {
window.open(menu.path, '_blank');
return;
}
if(menu.type === 'route' && menu.path) {
navigate(menu.path);
return;
}
}
return (
<div className={'flex h-full'}>
<div
className={'box-border shrink-0 h-full overflow-auto'}
style={{
borderRight: !collapsed ? "1px solid " + themeConfig.colorBorder : 'none',
width: 79
}}
>
{/* 侧栏一级菜单 */}
{menus.filter(item => item.hidden).map(rule => (
<div
key={rule.key}
style={{
backgroundColor: parentKey === rule.key ? token.colorPrimaryBg : 'transparent',
color: parentKey === rule.key ? token.colorPrimary : themeConfig.siderColor,
}}
className={"flex items-center justify-center flex-col p-2 mb-2 pt-3 pb-3 cursor-pointer"}
onClick={() => onMenuChange(rule)}
>
<IconFont name={rule.icon} style={{ fontSize: 18 }}/>
<span className={"mt-1 truncate w-full text-center"}>{rule.local ? t(rule.local) : rule.name}</span>
</div>
))}
</div>
{ !collapsed && (
<div className={'flex-1 h-full overflow-y-auto'}>
<MenuRender />
</div>
)}
</div>
)
}
export default ColumnsMenu;