import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { AccountStatus, AllUser, AllUserResponse } from "@/types/user"; import Header from "@/components/Header"; import ContentDrawer from "@/components/ContentDrawer"; import UserCreate from "@/components/UserCreate"; import { Avatar, Table } from "antd"; import { TableProps } from "antd/lib"; import { UserService } from "@/services/userService"; import UserEdit from "@/components/UserEdit"; import { useSearchParams } from "react-router-dom"; export default function AccountsPage() { const { t } = useTranslation(); const [openCreate, setOpenCreate] = useState(false); const [searchParams, setSearchParams] = useSearchParams(); const [activeAccount, setActiveAccount] = useState< { login: string; id: number; name: string; email: string } | undefined >(undefined); const showCreateDrawer = () => setOpenCreate(true); const closeCreateDrawer = () => { setActiveAccount(undefined); setOpenCreate(false); }; const [openEdit, setOpenEdit] = useState(false); const showEditDrawer = () => setOpenEdit(true); const closeEditDrawer = () => { setActiveAccount(undefined); setOpenEdit(false); }; const [accounts, setAccounts] = useState({ amountCount: 0, amountPages: 0, users: [], currentPage: 1, limit: 10, }); async function getUsers() { const page = Number(searchParams.get("page") || "1"); const limit = Number(searchParams.get("limit") || "10"); setSearchParams({ page: page.toString(), limit: limit.toString(), }); const data = await UserService.getUsers(page, limit); console.log("searchParams", searchParams); setAccounts(data); } useEffect(() => { getUsers(); }, []); const statusColor = { ACTIVE: "#27AE60", DISABLED: "#606060", BLOCKED: "#FF0000", DELETED: "#B30000", }; const columns: TableProps["columns"] = [ { title: "#", dataIndex: "id", key: "id", }, { title: t("nameLogin"), dataIndex: "nameLogin", key: "nameLogin", render: (text, record) => (
{ setActiveAccount({ login: record.login, id: record.id, name: record.name, email: record.email || "", }); showEditDrawer(); }} style={{ display: "flex", alignItems: "center", gap: "16px", cursor: "pointer", }} >
{record.name}
{record.login}
), }, { title: "E-mail", dataIndex: "email", key: "email", }, { title: t("tenant"), dataIndex: "bindTenantId", key: "tenant", }, { title: t("role"), dataIndex: "role", key: "role", render: (text) =>
{t(text)}
, }, { title: t("createdAt"), dataIndex: "createdAt", key: "createdAt", render: (text) => (
{new Date(text).toLocaleString("ru", { year: "2-digit", month: "2-digit", day: "2-digit", })}
), }, { title: t("status"), dataIndex: "status", key: "status", render: (text) => (
{t(text)}
), }, ]; const onTableChange: TableProps["onChange"] = (pagination) => { console.log(pagination); UserService.getUsers( pagination.current as number, pagination.pageSize ).then((data) => { setAccounts(data); setSearchParams({ page: data.currentPage.toString(), limit: data.limit.toString(), }); }); }; return ( <>
} /> ); }