EasyAudioEncode/web/src/pages/Home.tsx

78 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-12-25 17:01:46 +08:00
import { Affix, Col, Menu, Row, type MenuProps } from "antd";
import {
FileSearchOutlined,
UnorderedListOutlined,
} from "@ant-design/icons";
import Box from "../components/Box";
import { useState } from "react";
import AudioEncodePage from "../components/AudioEncode";
2025-12-31 11:29:58 +08:00
import AudioTaskPage from "../components/AudioTask";
2025-12-25 17:01:46 +08:00
type MenuItem = Required<MenuProps>["items"][number];
export default function Home() {
const [currentMenu, setCurrentMenu] = useState("sub0");
const items: MenuItem[] = [
{
key: "sub0",
2025-12-31 11:29:58 +08:00
label: "文件管理",
2025-12-25 17:01:46 +08:00
icon: <FileSearchOutlined />,
},
{
key: "sub1",
2025-12-31 11:29:58 +08:00
label: "任务列表",
2025-12-25 17:01:46 +08:00
icon: <UnorderedListOutlined />,
},
];
const onClickMenu = (item: any) => {
setCurrentMenu(item?.key as string);
};
return (
<Row gutter={16}>
2026-01-28 13:44:26 +08:00
<Col sm={24} md={24} lg={3} xl={3} xxl={3} className="w-full">
2025-12-25 17:01:46 +08:00
<Affix className="hidden lg:block" offsetTop={0}>
<Box
style={{ minWidth: "10rem", width: "12rem" }}
className="mr-0 px-0"
>
<Menu
className="litegbs-menu-item select-none"
key={"config"}
selectedKeys={[currentMenu]}
onClick={onClickMenu}
items={items}
/>
</Box>
</Affix>
<Box
style={{ minWidth: "10rem", width: "12rem" }}
className="mr-0 px-0 block lg:hidden"
>
<Menu
className="litegbs-menu-item"
key={"config"}
selectedKeys={[currentMenu]}
onClick={onClickMenu}
items={items}
/>
</Box>
2026-01-28 13:44:26 +08:00
</Col>
<Col sm={24} md={24} lg={21} xl={21} xxl={21} className="w-full">
2025-12-31 11:29:58 +08:00
{/* <Col sm={24} md={24} className="w-full"> */}
2025-12-25 17:01:46 +08:00
{currentMenu == "sub0" && (
<Box>
<AudioEncodePage />
</Box>
)}
{currentMenu == "sub1" && (
<Box>
2025-12-31 11:29:58 +08:00
<AudioTaskPage />
2025-12-25 17:01:46 +08:00
</Box>
)}
</Col>
</Row>
);
}