users of list

This commit is contained in:
hamid zarghami
2026-02-03 11:26:03 +03:30
parent acec9c7d5c
commit 7e30143268
9 changed files with 78 additions and 10 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
import { type BaseResponse } from "@/shared/types/Types";
import type { FieldTypeEnum } from "../enum/Enum";
import type { RowDataType } from "@/components/types/TableTypes";
export type CreateFieldType = {
name: string,
@@ -10,7 +11,7 @@ export type CreateFieldType = {
entityType:string, // 'product' | 'print'
}
export interface FieldType {
export interface FieldType extends RowDataType {
createdAt: string,
id: number,
isRequired: boolean,
+58
View File
@@ -0,0 +1,58 @@
import { useState, type FC } from 'react'
import { useGetUsers } from './hooks/useUserData'
import Table from '@/components/Table'
import moment from 'moment-jalaali'
const UsersList: FC = () => {
const [page, setPage] = useState<number>(1)
const { data } = useGetUsers(page)
return (
<div className='mt-5'>
<div className='flex justify-between items-center'>
<h1 className='text-lg font-light'>کاربران</h1>
</div>
<Table
columns={[
{
key: 'fullName',
title: 'نام و نام خانوادگی',
render: (item) => {
if (item.firstName)
return (
<div>{item.firstName + ' ' + item.lastName}</div>
)
else return (
<div>{item.phone}</div>
)
}
},
{
key: 'phone',
title: 'موبایل'
},
{
key: 'createdAt',
title: 'تاریخ ثبت نام',
render: (item) => {
return (
<div>{moment(item.createdAt).format('jYYYY-jMM-jDD')}</div>
)
}
},
]}
data={data?.data}
pagination={{
currentPage: page,
onPageChange: setPage,
totalPages: data?.meta?.totalPages as number
}}
/>
</div>
)
}
export default UsersList
+3 -3
View File
@@ -1,9 +1,9 @@
import { useQuery } from "@tanstack/react-query";
import * as api from "../service/UserService";
export const useGetUsers = () => {
export const useGetUsers = (page: number = 1) => {
return useQuery({
queryKey: ["users"],
queryFn: api.getUsers,
queryKey: ["users", page],
queryFn: () => api.getUsers(page),
});
};
+4 -2
View File
@@ -1,7 +1,9 @@
import axios from "@/config/axios";
import type { UsersResponseType } from "../types/Types";
export const getUsers = async () => {
const { data } = await axios.get<UsersResponseType>(`/admin/users`);
export const getUsers = async (page: number) => {
const { data } = await axios.get<UsersResponseType>(
`/admin/users?page=${page}`
);
return data;
};
+3 -2
View File
@@ -1,6 +1,7 @@
import type { RowDataType } from "@/components/types/TableTypes";
import type { BaseResponse } from "@/shared/types/Types";
export type UserType = {
export interface UserType extends RowDataType {
id: string;
firstName: string | null;
lastName: string | null;
@@ -11,6 +12,6 @@ export type UserType = {
isActive: boolean;
createdAt: string;
deletedAt: string | null;
};
}
export type UsersResponseType = BaseResponse<UserType[]>;