remove device_num

This commit is contained in:
wang_yp 2025-06-07 13:51:31 +08:00
parent 5d1689ae2a
commit 8497bdf72d
3 changed files with 54 additions and 16 deletions

View File

@ -3,13 +3,30 @@ import "./layout.less";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import { Store } from "antd/es/form/interface"; import { Store } from "antd/es/form/interface";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { Avatar, Breadcrumb, Layout, Menu, theme } from "antd"; import { Avatar, Breadcrumb, Layout, Menu, MenuProps, theme } from "antd";
import { UserOutlined } from "@ant-design/icons"; import { UserOutlined } from "@ant-design/icons";
import Sider from "antd/es/layout/Sider"; import Sider from "antd/es/layout/Sider";
import { items, headItems } from "./layout_config"; import { items, headItems } from "./layout_config";
import { Dropdown } from "antd/lib"; import { Dropdown } from "antd/lib";
import { Outlet, useNavigate } from "react-router"; import { Outlet, useNavigate } from "react-router";
const getLevelKeys = (items1) => {
const key: Record<string, number> = {};
const func = (items2: [], level = 1) => {
items2.forEach((item: any) => {
if (item.key) {
key[item.key] = level;
}
if (item.children) {
func(item.children, level + 1);
}
});
};
func(items1);
return key;
};
const levelKeys = getLevelKeys(items);
const LayOut = (props: Store) => { const LayOut = (props: Store) => {
const { usrStore } = props; const { usrStore } = props;
const [collapsed, setCollapsed] = useState(false); const [collapsed, setCollapsed] = useState(false);
@ -35,24 +52,44 @@ const LayOut = (props: Store) => {
{ title: "数据集管理" }, { title: "数据集管理" },
{ title: "数据管理" }, { title: "数据管理" },
]; ];
const [stateOpenKeys, setStateOpenKeys] = useState(['2', '23']);
useEffect(() => { useEffect(() => {
// if (usrStore.isNeedLogin) { // if (usrStore.isNeedLogin) {
// nav("/login"); // nav("/login");
// } // }
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [usrStore.isNeedLogin]); }, [usrStore.isNeedLogin]);
const onOpenChange: MenuProps['onOpenChange'] = (openKeys) => {
const currentOpenKey = openKeys.find((key) => stateOpenKeys.indexOf(key) === -1);
// open
if (currentOpenKey !== undefined) {
const repeatIndex = openKeys
.filter((key) => key !== currentOpenKey)
.findIndex((key) => levelKeys[key] === levelKeys[currentOpenKey]);
setStateOpenKeys(
openKeys
.filter((_, index) => index !== repeatIndex)
.filter((key) => levelKeys[key] <= levelKeys[currentOpenKey]),
);
} else {
// close
setStateOpenKeys(openKeys);
}
};
return ( return (
<Layout> <Layout>
<Header style={headStyle}> <Header style={headStyle}>
<div style={logoStyle}></div> <div style={logoStyle}></div>
<Dropdown menu={{ items: headItems,selectable: true, onClick: (e) => { <Dropdown menu={{
console.log(e.key==="loginout") items: headItems, selectable: true, onClick: (e) => {
if (e.key==="loginout"){ console.log(e.key === "loginout")
window.localStorage.removeItem("token") if (e.key === "loginout") {
nav("/login") window.localStorage.removeItem("token")
nav("/login")
}
} }
} }}> }}>
<Avatar icon={<UserOutlined />} /> <Avatar icon={<UserOutlined />} />
</Dropdown> </Dropdown>
</Header> </Header>
@ -68,11 +105,11 @@ const LayOut = (props: Store) => {
mode="inline" mode="inline"
theme="dark" theme="dark"
defaultSelectedKeys={["1"]} defaultSelectedKeys={["1"]}
defaultOpenKeys={["sub1"]} openKeys={stateOpenKeys}
style={{ height: "100%", borderRight: 0 }} style={{ height: "100%", borderRight: 0 }}
onOpenChange={onOpenChange}
items={items} items={items}
onClick={(e) => { onClick={(e) => {
console.log(e);
nav(e.key); nav(e.key);
}} }}
/> />

View File

@ -9,7 +9,7 @@ const Role = (props: Store) => {
return ( return (
<div className="contentBox"> <div className="contentBox">
<BTable <BTable
btnText="添加角色" btnText="添加职位"
store={roleStore} store={roleStore}
scroll={{ x: "max-content" }} scroll={{ x: "max-content" }}
columns={columns} columns={columns}

View File

@ -1,21 +1,22 @@
import { FormType } from "@/components/form/interface"; import { FormType } from "@/components/form/interface";
import { UserDataType } from "@/model/userModel"; import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/lib/table"; import { ColumnsType } from "antd/lib/table";
export const defaultConfig = [ export const defaultConfig = [
{ {
type: FormType.input, type: FormType.input,
label: "角色名称", label: "职位名称",
name: "name", name: "name",
value: "", value: "",
rules: [{ required: true, message: "请输入用户名称!" }], rules: [{ required: true, message: "请输入职位名称!" }],
}, },
{ {
type: FormType.inputNumber, type: FormType.inputNumber,
label: "角色描述", label: "职位描述",
name: "desc", name: "desc",
value: "", value: "",
rules: [{ required: true, message: "请输入角色描述" }], rules: [{ required: true, message: "请输入职位描述" }],
}, },
{ {
type: FormType.input, type: FormType.input,
@ -35,12 +36,12 @@ export const defaultConfig = [
export const columns: ColumnsType<UserDataType> = [ export const columns: ColumnsType<UserDataType> = [
{ {
title: "角色名称", title: "职位名称",
dataIndex: "name", dataIndex: "name",
fixed: "left", fixed: "left",
}, },
{ {
title: "角色描述", title: "职位描述",
dataIndex: "desc", dataIndex: "desc",
}, },