system-copyright-react/src/route/index/index.tsx

157 lines
5.4 KiB
TypeScript
Raw Normal View History

2024-03-12 18:53:51 +08:00
import './index.css';
2024-03-13 00:14:51 +08:00
import {MouseEvent, useState} from "react";
2024-03-12 18:53:51 +08:00
import {IMenuListItem, IMenuWithTopButton} from "../../interfaces/menu/IMenuWithTopButton.ts";
import MenuWithTopButton from "../../components/menu/MenuWithTopButton.tsx";
import MenuTree from "../../components/menu/MenuTree.tsx";
2024-03-13 00:14:51 +08:00
import {IMenuTree, IMenuTreeItem} from "../../interfaces/menu/IMenuTree.ts";
import {name} from "axios";
class MenuTreeItem implements IMenuTreeItem {
children: Array<IMenuTreeItem> | null;
id: string;
isEdit: boolean;
isOpen: boolean;
isParent: boolean;
level: number;
name: string;
oldName: string;
constructor(id: string, name: string, level: number) {
this.id = id;
this.name = name;
this.oldName = name;
this.level = level;
this.isEdit = false;
this.isOpen = false;
this.isParent = false;
this.children = null;
}
}
2024-03-12 18:53:51 +08:00
const projMenu: IMenuWithTopButton = {
button: {
name: '创建项目',
handle(e: MouseEvent<HTMLButtonElement>) {
console.log(e)
}
},
list: [
{id: 'proj1', icon: './vite.svg', name: '全部项目'},
{id: 'proj2', icon: './vite.svg', name: '进行中的'},
{id: 'proj3', icon: './vite.svg', name: '已完成的'}
],
handleListItem(e: MouseEvent<HTMLLIElement>, index: number, item: IMenuListItem) {
console.log(e);
console.log(index);
console.log(item)
}
}
const agentMenu: IMenuWithTopButton = {
button: {
name: '代理服务',
handle(e: MouseEvent<HTMLButtonElement>) {
console.log(e)
}
},
list: [
{id: 'agent1', icon: './vite.svg', name: '全部项目'},
{id: 'agent2', icon: './vite.svg', name: '进行中的'},
{id: 'agent3', icon: './vite.svg', name: '已完成的'},
],
handleListItem(e: MouseEvent<HTMLLIElement>, index: number, item: IMenuListItem) {
console.log(e);
console.log(index);
console.log(item)
}
}
export default function Index() {
2024-03-13 00:14:51 +08:00
const menuTrees: Array<IMenuTreeItem> = [];
const [menuTreeArray, setMenuTreeArray] = useState(menuTrees);
2024-03-12 18:53:51 +08:00
return (
<div className="index">
<div className="left">
<MenuWithTopButton
button={projMenu.button}
list={projMenu.list}
handleListItem={projMenu.handleListItem}
/>
2024-03-13 00:14:51 +08:00
<button type="button" onClick={() => {
const menuTreeItem = new MenuTreeItem(`${new Date().getTime()}`, '一级目录', 1);
menuTreeItem.isParent = true;
setMenuTreeArray([
...menuTreeArray,
menuTreeItem,
]);
}}>
</button>
<MenuTree
menus={menuTreeArray}
url={''}
setMenuTreeArray={(item) => {
setMenuTreeArray([
...menuTreeArray
])
}}
handleExpand={(item) => {
}}
handleAddClick={(item) => {
item.isParent = true;
item.isOpen = true;
if (!item.children) {
item.children = new Array<IMenuTreeItem>();
}
const menuTreeItem = new MenuTreeItem(`${new Date().getTime()}`, item.level + '级目录', item.level + 1);
menuTreeItem.isOpen = true;
item.children.push(menuTreeItem);
setMenuTreeArray([
...menuTreeArray
])
}
}
handleEditClick={(item) => {
item.isEdit = true;
setMenuTreeArray([
...menuTreeArray
])
}}
handleRemoveClick={(item) => {
}}
handleEditSaveClick={(item) => {
console.log(item);
// 这里发请求,成功之后修改,失败还原
if(item.name === '') {
return;
}
item.oldName = item.name;
item.isEdit = false;
setMenuTreeArray([
...menuTreeArray
])
}}
handleEditCancelClick={(item) => {
item.name = item.oldName;
item.isEdit = false;
setMenuTreeArray([
...menuTreeArray
])
}}
handleNameChange={(item) => {
setMenuTreeArray([
...menuTreeArray
])
}}
/>
2024-03-12 18:53:51 +08:00
<MenuWithTopButton
button={agentMenu.button}
list={agentMenu.list}
handleListItem={agentMenu.handleListItem}
/>
</div>
<div className="right"></div>
</div>
)
}