import { Icon } from "@nice/iconer"; import { DeleteOutlined, EditFilled, EllipsisOutlined, } from "@ant-design/icons"; import { ICellRendererParams } from "@ag-grid-community/core"; import { ColDef, ValueGetterParams, } from "@ag-grid-community/core"; import { ObjectType, StaffRowModel } from "@nice/common"; import { Menu, MenuItem } from "../../presentation/dropdown-menu"; import AgServerTable from "../../presentation/ag-server-table"; import IdCard from "../../presentation/id-card"; import { useContext, useEffect, useState } from "react"; import { StaffEditorContext } from "./staff-editor"; import PhoneBook from "../../presentation/phone-book"; import { SortDirection } from "ag-grid-community"; import { CrudOperation, emitDataChange, useStaff } from "@nice/client"; import { message, Tag } from "antd"; import { CustomCellRendererProps } from "@ag-grid-community/react"; const OpreationRenderer = ({ props }: { props: ICellRendererParams }) => { const { setEditId, setModalOpen } = useContext(StaffEditorContext); const { softDeleteByIds } = useStaff() if (props?.data?.id) return (
}> } onClick={() => { setEditId(props?.data?.id); setModalOpen(true); }}> { softDeleteByIds.mutateAsync({ ids: [props?.data?.id], }, { onSettled: () => { message.success("删除成功"); emitDataChange(ObjectType.STAFF, props.data as any, CrudOperation.DELETED) }, }); }} icon={}>
); }; const StaffList = ({ domainId, height = "calc(100vh - 48px - 49px)", }: { domainId?: string; height?: string | number; }) => { const { canManageAnyStaff } = useContext(StaffEditorContext); const [params, setParams] = useState({ domainId: null }); useEffect(() => { if (domainId) { setParams((prev) => ({ ...prev, domainId })) } else { setParams((prev) => ({ ...prev, domainId: null })) } }, [domainId]) const columnDefs: ColDef[] = [ canManageAnyStaff && { headerName: "所属域", field: "domain.name", sortable: true, valueGetter: (params) => { return params.data?.domain_name; }, filter: "agTextColumnFilter", }, { headerName: "所属单位", field: "dept.name", valueGetter: (params: ValueGetterParams) => { return params.data?.dept_name; }, cellRenderer: (params) => { return ( params.value || ( 未录入所属单位 ) ); }, sortable: true, filter: "agTextColumnFilter", enableRowGroup: true, maxWidth: 200, }, { field: "order", hide: true, sort: "asc" as SortDirection }, { headerName: "帐号", field: "username", cellRenderer: (params) => { if (params?.data?.id) return ( params.value || ( 未录入帐号 ) ); }, sortable: true, rowDrag: true, filter: "agTextColumnFilter", maxWidth: 300, }, { headerName: "姓名", field: "showname", cellRenderer: (params) => { if (params?.data?.id) return ( params.value || ( 未录入姓名 ) ); }, sortable: true, filter: "agTextColumnFilter", maxWidth: 300, }, { headerName: "证件号", field: "officer_id", sortable: true, filter: "agTextColumnFilter", cellRenderer: (params) => { const { data }: { data: StaffRowModel } = params; if (params?.data?.id) return ; }, }, { headerName: "手机号", field: "phone_number", sortable: true, filter: "agTextColumnFilter", cellRenderer: (params) => { const { data }: { data: StaffRowModel } = params; if (params?.data?.id) return ; }, }, { headerName: "是否启用", field: "enabled", sortable: true, enableRowGroup: true, cellRenderer: (props: CustomCellRendererProps) => { return {props?.data?.enabled ? "已启用" : "已禁用"} }, }, { headerName: "操作", sortable: true, cellRenderer: (props) => ( ), // 指定 cellRenderer maxWidth: 80, }, ].filter(Boolean); return ( ); }; export default StaffList;