修改前台菜单分组
This commit is contained in:
@@ -410,11 +410,11 @@ const AppLayout: React.FC = () => {
|
|||||||
|
|
||||||
{/* Menu */}
|
{/* Menu */}
|
||||||
<div style={{ flex: 1, padding: '8px 8px', overflow: 'auto' }}>
|
<div style={{ flex: 1, padding: '8px 8px', overflow: 'auto' }}>
|
||||||
{!collapsed && (
|
{/* {!collapsed && (
|
||||||
<div style={{ color: 'rgba(148,163,184,0.4)', fontSize: 11, fontWeight: 600, padding: '8px 12px 6px', letterSpacing: 1 }}>
|
<div style={{ color: 'rgba(148,163,184,0.4)', fontSize: 11, fontWeight: 600, padding: '8px 12px 6px', letterSpacing: 1 }}>
|
||||||
导航
|
导航
|
||||||
</div>
|
</div>
|
||||||
)}
|
)} */}
|
||||||
{(() => {
|
{(() => {
|
||||||
const groups = menuItems.filter(m => (m.menu_type ?? m.menuType) === 'group');
|
const groups = menuItems.filter(m => (m.menu_type ?? m.menuType) === 'group');
|
||||||
const pages = menuItems.filter(m => (m.menu_type ?? m.menuType) !== 'group');
|
const pages = menuItems.filter(m => (m.menu_type ?? m.menuType) !== 'group');
|
||||||
@@ -454,19 +454,15 @@ const AppLayout: React.FC = () => {
|
|||||||
groups.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0)).forEach(g => {
|
groups.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0)).forEach(g => {
|
||||||
const children = (childMap[g.id] || []).sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0));
|
const children = (childMap[g.id] || []).sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0));
|
||||||
if (!collapsed) {
|
if (!collapsed) {
|
||||||
const isGroupOpen = !collapsedGroups[g.id];
|
|
||||||
items.push(
|
items.push(
|
||||||
<div key={g.id}>
|
<div key={g.id}>
|
||||||
<div onClick={() => setCollapsedGroups(prev => ({ ...prev, [g.id]: !prev[g.id] }))} style={{
|
<div style={{
|
||||||
display: 'flex', alignItems: 'center', justifyContent: 'space-between',
|
color: 'rgba(148,163,184,0.4)', fontSize: 11, fontWeight: 600,
|
||||||
padding: '8px 14px', margin: '8px 0 2px', cursor: 'pointer',
|
padding: '8px 12px 6px', letterSpacing: 1,
|
||||||
color: 'rgba(148,163,184,0.5)', fontSize: 11, fontWeight: 600,
|
|
||||||
letterSpacing: 0.5,
|
|
||||||
}}>
|
}}>
|
||||||
<span>{g.label}</span>
|
{g.label}
|
||||||
<span style={{ fontSize: 10, transform: isGroupOpen ? 'rotate(90deg)' : 'none', transition: 'transform 0.2s' }}>▶</span>
|
|
||||||
</div>
|
</div>
|
||||||
{isGroupOpen && children.map(c => renderMenuItem(c, 1))}
|
{children.map(c => renderMenuItem(c, 1))}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user