import React, { useMemo, useContext, useCallback, useState } from "react"; import { ObjectType } from "@nice/common" import { ICellRendererParams, SortDirection } from "ag-grid-community"; import { ColDef } from "@ag-grid-community/core"; import AgServerTable from "../../presentation/ag-server-table"; import { DeleteOutlined, EditFilled, EllipsisOutlined, PlusOutlined } from "@ant-design/icons"; import { Menu, MenuItem } from "../../presentation/dropdown-menu"; import { DeptEditorContext } from "./dept-editor"; import { CustomCellRendererProps } from "ag-grid-react"; import { message, Tag } from "antd"; import { CrudOperation, emitDataChange, useDepartment } from "@nice/client"; export default function DepartmentList() { const { setEditId, setModalOpen, setParentId } = useContext(DeptEditorContext); // 将 params 转换为 state const [params, setParams] = useState({ parentId: null }); const { softDeleteByIds } = useDepartment() const OpreationRenderer = ({ props }: { props: ICellRendererParams }) => { const handleEdit = () => { setEditId(props?.data?.id); setModalOpen(true); }; const handleCreate = () => { setParentId(props.data?.id) setModalOpen(true); } return (
}> } onClick={handleCreate} /> } onClick={handleEdit} /> { softDeleteByIds.mutateAsync({ ids: [props?.data?.id], }, { onSettled: () => { message.success("删除成功"); emitDataChange(ObjectType.DEPARTMENT, props.data as any, CrudOperation.DELETED) }, }); }} icon={}>
); }; const columnDefs = useMemo(() => { return [ { headerName: "是否为域", field: "is_domain", cellRenderer: (props: CustomCellRendererProps) => { return {props.value ? '域节点' : '普通节点'} } }, { field: "order", hide: true, sort: "asc" as SortDirection }, { headerName: "操作", // sortable: true, cellRenderer: (props: CustomCellRendererProps) => ( ), maxWidth: 80, }, ].filter(Boolean); }, []); const autoGroupColumnDef = useMemo(() => ({ rowDrag: true, headerName: "单位名", field: "name", filter: "agTextColumnFilter", }), []); const getServerSideGroupKey = useCallback((item) => item.id, []); const isServerSideGroup = useCallback((item) => item.has_children, []); return ( ); }