import { DeleteOutlined, SearchOutlined } from "@ant-design/icons"; import { Button, Input, Form, Popconfirm } from "antd"; import React, { useEffect, useState } from "react"; import CustomColorPicker from "@/components/CustomColorPicker"; import { useModel } from "umi"; import noData from "@/assets/no-data.png"; import { RemarkInfo } from "@/type"; import { useSessionStorageState } from "ahooks"; export default function RemarkPanel() { const { project, addRemark, deleteRemark, updateRemark } = useModel("erModel"); const { remarks = [] } = project; const [search, setSearch] = React.useState(""); const [activeKey, setActiveKey] = useSessionStorageState("remark-active", { defaultValue: "", listenStorageChange: true }); const [remarkList, setRemarkList] = useState(remarks); useEffect(() => { setRemarkList(remarks.filter(item => item.name.includes(search))); }, [remarks, search]); const handleChange = (index: number, key: keyof RemarkInfo, value: any) => { const data = remarkList[index]; const newData = { ...data, [key]: value }; updateRemark(newData); const arr = [...remarkList]; arr[index] = newData; setRemarkList(arr); }; return (
} value={search} onChange={(e) => setSearch(e.target.value)} />
{remarkList.map((item, index) => { return (
setActiveKey(activeKey === item.id ? "" : item.id)} >
{item.name}
handleChange(index, "name", e.target.value) } />
handleChange(index, "text", e.target.value) } />
{ handleChange(index, "style", { ...item.style, background: color, }); }} >
deleteRemark(item.id)} >
); })} {remarkList.length === 0 && (
暂无数据
添加额外注释内容!
)}
); }