receip and ticket and ...

This commit is contained in:
hamid zarghami
2024-12-29 16:27:07 +03:30
parent 7756e20a9f
commit 7a5d9d6447
15 changed files with 589 additions and 15 deletions
+131
View File
@@ -0,0 +1,131 @@
import { FC } from 'react'
import { useTranslation } from 'react-i18next'
import { SIDEBAR_SIZE_LEFT } from '../../config/Const'
import Input from '../../components/Input'
import Select from '../../components/Select'
import Textarea from '../../components/Textarea'
import UploadBox from '../../components/UploadBox'
import Button from '../../components/Button'
import { TickSquare } from 'iconsax-react'
const CreateTicket: FC = () => {
const { t } = useTranslation('global')
return (
<div className='mt-4'>
<div>
{t('ticket.new_ticket')}
</div>
<div className='flex gap-6 mt-8'>
<div className='flex-1 bg-white py-8 px-10 rounded-3xl'>
<div>
{t('ticket.submit_your_message')}
</div>
<div className='mt-6 rowTwoInput'>
<Input
label={t('ticket.name')}
readOnly
placeholder='مهرداد مظفری'
/>
<Input
label={t('ticket.email')}
readOnly
placeholder='Info@example.com'
/>
</div>
<div className='mt-6 rowTwoInput'>
<Input
label={t('ticket.subject')}
placeholder={t('ticket.enter_your_subject')}
/>
<Select
label={t('ticket.subject')}
items={[
{
label: '',
value: ''
}
]}
placeholder={t('ticket.priority')}
className='border'
/>
</div>
<div className='mt-6'>
<Select
label={t('ticket.select_your_service')}
items={[
{
label: '',
value: ''
}
]}
placeholder={t('ticket.not_once')}
className='border'
/>
</div>
<div className='mt-6'>
<Textarea
label={t('description')}
placeholder={t('ticket.your_description')}
/>
</div>
<div className='mt-6'>
<UploadBox
label={t('ticket.attachment')}
/>
</div>
<div className='mt-8 flex justify-end'>
<Button
label={t('ticket.send')}
className='max-w-[100px]'
/>
</div>
</div>
<div style={{ width: SIDEBAR_SIZE_LEFT }} className='bg-white py-10 px-5 h-fit rounded-3xl'>
<div className='text-sm'>
{t('ticket.title_hint')}
</div>
<div className='mt-6'>
<div className='flex items-start gap-2'>
<div>
<TickSquare size={20} color='black' variant='Bold' />
</div>
<div className='text-description text-xs leading-5'>
سوالات - مشکلاتی که به یک موضوع مربوط میشوند را در یک درخواست پشتیبانی پیگیر باشید و چند درخواست برای یک موضوع باز نکنید.
</div>
</div>
<div className='flex items-start gap-2'>
<div>
<TickSquare size={20} color='black' variant='Bold' />
</div>
<div className='text-description text-xs leading-5'>
لطفاً برای بررسی و رفع مشکلات احتمالی صبور باشید بررسی و رفع مشکلات در برخی موارد زمان گیر است.
</div>
</div>
<div className='flex items-start gap-2'>
<div>
<TickSquare size={20} color='black' variant='Bold' />
</div>
<div className='text-description text-xs leading-5'>
پاسخگویی 24 ساعته تلفنی را تنها از میهن وب هاست می توانید انتظار داشته باشید .بخش پشتیبانی در هر ساعتی حتی در روز های تعطیل آماده پیگیری سریع مشکلات کاربران است.
</div>
</div>
</div>
</div>
</div>
</div>
)
}
export default CreateTicket
+157
View File
@@ -0,0 +1,157 @@
import { FC } from 'react'
import { useTranslation } from 'react-i18next'
import { SIDEBAR_SIZE_LEFT } from '../../config/Const'
import Input from '../../components/Input'
import Textarea from '../../components/Textarea'
import UploadBox from '../../components/UploadBox'
import Button from '../../components/Button'
import { CloseCircle, InfoCircle } from 'iconsax-react'
const TicketDetail: FC = () => {
const { t } = useTranslation('global')
return (
<div className='mt-4'>
<div className='flex gap-1'>
<div>{t('ticket.ticket_number')}</div>
<div>12312</div>
</div>
<div className='flex gap-6 mt-8'>
<div className='flex-1 bg-white py-8 px-10 rounded-3xl'>
<div className='gap-6 rowTwoInput'>
<Input
label={t('ticket.select_your_service')}
value={'دی منو'}
readOnly
/>
<Input
label={t('ticket.user_name')}
value={'مهرداد مظفری'}
readOnly
/>
</div>
<div className='mt-8 text-sm'>
موضوع درخواست پشتیبانی
</div>
<div className='mt-6 text-sm bg-[#F6F7FA] p-6 rounded-3xl rounded-tr-none max-w-[70%]'>
<div className='leading-7'>
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد،
</div>
<div className='flex justify-end mt-6 text-xs text-description'>
10:07 | 1403/09/30
</div>
</div>
<div className='w-full flex justify-end'>
<div className='mt-6 text-sm bg-[#EBEDF5] p-6 rounded-3xl rounded-tl-none max-w-[70%]'>
<div className='flex gap-1'>
<div className='font-bold'>
{t('ticket.expert')}
</div>
<div>سیما فرهادی</div>
</div>
<div className='leading-7 mt-4'>
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد،
</div>
<div className='flex justify-end mt-6 text-xs text-description'>
10:07 | 1403/09/30
</div>
</div>
</div>
<div className='mt-9'>
<Textarea
label={t('ticket.answer')}
placeholder={t('ticket.your_description')}
/>
</div>
<div className='mt-7'>
<UploadBox
label={t('ticket.attachment')}
/>
</div>
<div className='flex justify-end mt-6'>
<Button
label={t('ticket.send')}
className='max-w-[100px]'
/>
</div>
</div>
<div style={{ width: SIDEBAR_SIZE_LEFT }} className='h-fit'>
<div className='bg-white p-6 rounded-3xl flex gap-4'>
<Button
label={t('ticket.send_answer')}
className='text-xs'
/>
<Button
className='bg-[#D52903]'
>
<div className='flex gap-2 text-xs items-center'>
<CloseCircle
color='white'
size={20}
/>
<div>
{t('ticket.close_ticket')}
</div>
</div>
</Button>
</div>
<div className='bg-white p-6 rounded-3xl mt-8'>
<div className='flex justify-between'>
<div className='text-sm'>
{t('ticket.info_ticket')}
</div>
<div className='h-7 px-3 rounded-xl flex items-center text-xs bg-green-100 text-green-400'>
{t('ticket.answered')}
</div>
</div>
<div className='mt-14 text-xs w-full'>
<div className='flex justify-between text-description'>
<div>{t('ticket.ticket_number')}</div>
<div>
۱۲۳۴۵۵
</div>
</div>
<div className='flex mt-6 justify-between text-description'>
<div>{t('ticket.ticket_number')}</div>
<div>
۱۲۳۴۵۵
</div>
</div>
<div className='flex mt-6 justify-between text-description'>
<div>{t('ticket.ticket_number')}</div>
<div>
۱۲۳۴۵۵
</div>
</div>
<div className='flex mt-6 justify-between text-description'>
<div>{t('ticket.ticket_number')}</div>
<div>
۱۲۳۴۵۵
</div>
</div>
</div>
<div className='mt-10 border-t text-xs pt-5 border-border items-center flex gap-2'>
<InfoCircle size={20} color='black' />
<div>
{t('ticket.update_sms')}
</div>
</div>
</div>
</div>
</div>
</div>
)
}
export default TicketDetail
+13 -9
View File
@@ -4,6 +4,8 @@ import Button from '../../components/Button'
import { Add, Message2, MessageRemove, MessageTick, MessageTime } from 'iconsax-react'
import Tabs from '../../components/Tabs'
import Td from '../../components/Td'
import { Link } from 'react-router-dom'
import { Pages } from '../../config/Pages'
const TicketList: FC = () => {
@@ -17,16 +19,18 @@ const TicketList: FC = () => {
{t('ticket.tickets')}
</div>
<Button
className='w-[172px]'
>
<div className='flex gap-2 items-center'>
<Add size={20} color='white' />
<div>
{t('ticket.new_ticket')}
<Link to={Pages.ticket.create}>
<Button
className='w-[172px]'
>
<div className='flex gap-2 items-center'>
<Add size={20} color='white' />
<div>
{t('ticket.new_ticket')}
</div>
</div>
</div>
</Button>
</Button>
</Link>
</div>
<div className='mt-14'>