import React, { useState, Suspense, useRef } from "react";
import { Layout, Menu, Skeleton, Input, Row, Col, Empty } from "antd";
import { Link, history, useModel } from "umi";
import styles from "./index.less";
import { Scrollbars } from "react-custom-scrollbars";
import { Icon } from "@ant-design/compatible";
import { collectPerms, cancelCollectPerms, mtosave } from "@/services/login";
import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
const { Sider } = Layout;
let CardItems = (datav, i, getstar, addHistory) => {
let name = datav.name,
collected = datav.isExist == "1";
return (
{
history.push(datav.path);
await addHistory(datav.key);
}}
>
{" "}
{name}
{collected ? (
{
getstar(e, collected, datav.key);
}}
/>
) : (
{
getstar(e, collected, datav.key);
}}
/>
)}
);
},
coles = { xs: 24, sm: 24, md: 12, lg: 8, xl: 6, xxl: 4 };
function Diymenu({
logo,
collapsed,
onCollapse,
fixSiderbar,
theme,
isMobile,
location,
name,
menuData,
}) {
const [anchor, setanchor] = useState();
const [search, setsearch] = useState();
const scrollRef = useRef();
const { alive, changealive } = useModel("useGlobal");
const {
initialState: { getmenuData, newMenu },
setInitialState,
} = useModel("@@initialState");
const getMenuData = newMenu?.userHavePermList ?? [],
collectPerm = newMenu?.collectPerm ?? [],
recentUsePermList = newMenu?.recentUsePermList ?? [];
let scrollToAnchor = (anchorName) => {
if (anchorName) {
setanchor(anchorName);
let anchorElement = document.getElementById(anchorName);
if (scrollRef) {
// anchorElement.scrollIntoView({ block: 'start', behavior: 'smooth' });
scrollRef?.current?.scrollTop(anchorElement.offsetTop);
}
}
};
let filterMenu = (alldata, search) => {
if (!search) {
return alldata;
}
alldata = alldata ?? [];
let newdata = alldata.filter((item) => {
return (
item.routes &&
item.routes.some((it) => {
return it.name.indexOf(search) != -1;
})
);
});
return newdata.map((item) => {
return {
...item,
routes: item.routes.filter((it) => {
return it.name.indexOf(search) != -1;
}),
};
});
};
const refreshs = async () => {
const menuDatas = await getmenuData();
if (menuDatas) {
await setInitialState((s) => {
return { ...s, newMenu: menuDatas };
});
}
};
async function getstar(e, collected, permissionId) {
e.stopPropagation();
if (collected) {
let cancelData = await cancelCollectPerms({ permissionId });
if (cancelData.code == "0000") {
await refreshs();
}
} else {
let collectData = await collectPerms({ permissionId });
if (collectData.code == "0000") {
await refreshs();
}
}
}
async function addHistory(permissionId) {
let cancelData = await mtosave({ permissionId });
if (cancelData.code == "0000") {
changealive(false);
await refreshs();
}
}
return (
{name}
}
>
{
历史记录
{recentUsePermList &&
recentUsePermList.map((item, i) => {
return (
{CardItems(item, i, getstar, addHistory)}
);
})}
{search && 搜索条件:{search},搜索结果:
}
{getMenuData &&
filterMenu(getMenuData, search).map((item, i) => {
return (
{" "}
{" "}
{item.name}
{item.routes &&
item.routes.map((it, ins) => {
return it
? CardItems(
it,
ins,
getstar,
addHistory
)
: null;
})}
);
})}
{filterMenu(getMenuData, search).length == 0 && (
)}
{getMenuData &&
getMenuData.map((item, i) => {
return (
{
scrollToAnchor(item.key);
}}
>
{" "}
{item.name}
);
})}
}
);
}
export default Diymenu;