From aea793470c1449192cc4b54570b301564cf1e38f Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Wed, 5 Nov 2025 16:48:34 +0330 Subject: [PATCH] comments list --- src/pages/comments/List.tsx | 221 ++++++++++++++++++++++++++++++++++++ src/router/Main.tsx | 2 + 2 files changed, 223 insertions(+) create mode 100644 src/pages/comments/List.tsx diff --git a/src/pages/comments/List.tsx b/src/pages/comments/List.tsx new file mode 100644 index 0000000..abf5197 --- /dev/null +++ b/src/pages/comments/List.tsx @@ -0,0 +1,221 @@ +import { type FC, useState } from 'react' +import Table from '@/components/Table' +import Filters from '@/components/Filters' +import Switch from '@/components/Switch' +import { Eye } from 'iconsax-react' +import type { RowDataType, ActionType } from '@/components/types/TableTypes' +import type { FilterValues } from '@/components/Filters' +import { Link } from 'react-router-dom' +import { Pages } from '@/config/Pages' +import moment from 'moment-jalaali' + +interface CommentData extends RowDataType { + id: number + number: string + customerName: string + strengths: string + weaknesses: string + food: string + date: string + isDisplayed: boolean +} + +const CommentsList: FC = () => { + const [currentPage, setCurrentPage] = useState(1) + const totalPages = 2 + + const handlePageChange = (page: number) => { + setCurrentPage(page) + } + + const handleFiltersChange = (newFilters: FilterValues) => { + console.log('فیلترها:', newFilters) + } + + const handleRowActions = (item: CommentData): ActionType[] => { + return [ + { + label: 'ویرایش', + onClick: () => { + console.log('ویرایش کامنت:', item.id) + }, + }, + { + label: 'حذف', + onClick: () => { + console.log('حذف کامنت:', item.id) + }, + }, + ] + } + + const formatDate = (dateString: string): string => { + try { + const jalaliDate = moment(dateString, 'YYYY-MM-DD').format('jYYYY/jMM/jDD') + return `${jalaliDate}` + } catch { + return dateString + } + } + + const handleDisplayToggle = (item: CommentData, value: boolean) => { + console.log('تغییر وضعیت نمایش کامنت:', item.id, value) + } + + const columns = [ + { + key: 'number', + title: 'شماره', + }, + { + key: 'customerName', + title: 'نام و نام خانوادگی', + }, + { + key: 'strengths', + title: 'نقاط قوت', + }, + { + key: 'weaknesses', + title: 'نقاط ضعف', + }, + { + key: 'food', + title: 'غذا', + }, + { + key: 'date', + title: 'تاریخ', + render: (item: CommentData) => { + return {formatDate(item.date)} + }, + }, + { + key: 'isDisplayed', + title: 'نمایش', + render: (item: CommentData) => { + return ( + handleDisplayToggle(item, value)} + /> + ) + }, + }, + { + key: 'details', + title: 'جزییات', + render: (item: CommentData) => { + return ( + + + + ) + }, + }, + ] + + const data: CommentData[] = [ + { + id: 1, + number: '۱۲۳۳۴', + customerName: 'حمید ضرغامی', + strengths: 'بهداشت محیطی خوب', + weaknesses: 'تنوع کم و محدود', + food: 'سالاد سزار ، پیتزا پیرونی', + date: '2024-11-01', + isDisplayed: true, + }, + { + id: 2, + number: '۱۲۳۳۵', + customerName: 'محمد رضایی', + strengths: 'طعم عالی', + weaknesses: 'زمان تحویل طولانی', + food: 'برگر کلاسیک', + date: '2024-11-02', + isDisplayed: false, + }, + { + id: 3, + number: '۱۲۳۳۶', + customerName: 'فاطمه احمدی', + strengths: 'بسته‌بندی مناسب', + weaknesses: 'گران قیمت', + food: 'سوشی مخصوص', + date: '2024-11-03', + isDisplayed: true, + }, + { + id: 4, + number: '۱۲۳۳۷', + customerName: 'علی کریمی', + strengths: 'سرویس سریع', + weaknesses: 'کم بودن حجم غذا', + food: 'پاستا کربونارا', + date: '2024-11-04', + isDisplayed: true, + }, + { + id: 5, + number: '۱۲۳۳۸', + customerName: 'زهرا محمودی', + strengths: 'کیفیت بالا', + weaknesses: 'محدودیت در انتخاب', + food: 'استیک گوشت', + date: '2024-11-05', + isDisplayed: false, + }, + { + id: 6, + number: '۱۲۳۳۹', + customerName: 'حسن نوری', + strengths: 'ارزش غذایی مناسب', + weaknesses: 'بوی نامطبوع', + food: 'کباب ترکی', + date: '2024-11-06', + isDisplayed: true, + }, + ] + + return ( +
+
+

لیست کامنت‌ها

+
+ +
+ +
+ + + + ) +} + +export default CommentsList \ No newline at end of file diff --git a/src/router/Main.tsx b/src/router/Main.tsx index 9b3e392..d64479e 100644 --- a/src/router/Main.tsx +++ b/src/router/Main.tsx @@ -14,6 +14,7 @@ import CustomerDetails from '@/pages/customers/Details' import CreateCustomer from '@/pages/customers/Create' import OrdersList from '@/pages/orders/List' import OrderDetails from '@/pages/orders/Details' +import CommentsList from '@/pages/comments/List' const MainRouter: FC = () => { const { hasSubMenu } = useSharedStore() @@ -39,6 +40,7 @@ const MainRouter: FC = () => { } /> } /> } /> + } />