admin
This commit is contained in:
@@ -150,3 +150,13 @@ tbody tr {
|
||||
direction: rtl;
|
||||
font-family: "irancell" !important;
|
||||
}
|
||||
|
||||
* {
|
||||
scrollbar-width: none; /* برای فایرفاکس */
|
||||
-ms-overflow-style: none; /* برای اینترنت اکسپلورر و اج */
|
||||
}
|
||||
|
||||
/* برای Webkit (کروم، سافاری و اپرا) */
|
||||
*::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -95,10 +95,14 @@ const CustomerList: FC = () => {
|
||||
<Td text={item.email ? item.email : ''} />
|
||||
<Td text={item.subscriptionsCount} />
|
||||
<Td text={''}>
|
||||
<Link to={Pages.receipts.index + `?user=${item.id}`}>
|
||||
<div className='text-[#0047FF]'>{item.invoicesCount} صورت حساب</div>
|
||||
</Link>
|
||||
</Td>
|
||||
<Td text={''}>
|
||||
<Link to={Pages.ticket.list + `?user=${item.id}`}>
|
||||
<div className='text-[#0047FF]'>{item.ticketsCount} تیکت</div>
|
||||
</Link>
|
||||
</Td>
|
||||
<Td text={''}>
|
||||
<Link to={Pages.ticket.detail + '1'}>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { FC, useState } from 'react'
|
||||
import { FC, useEffect, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import Tabs from '../../components/Tabs'
|
||||
import { CloseCircle, FolderOpen, WalletCheck, WalletRemove } from 'iconsax-react'
|
||||
@@ -12,10 +12,12 @@ import { useGetCustomers } from '../customer/hooks/useCustomerData'
|
||||
import Input from '../../components/Input'
|
||||
import { CustomerItemType } from '../customer/types/CustomerTypes'
|
||||
import DatePickerComponent from '../../components/DatePicker'
|
||||
import { useSearchParams } from 'react-router-dom'
|
||||
|
||||
const ReceiptsList: FC = () => {
|
||||
|
||||
const { t } = useTranslation('global')
|
||||
const [searchParams] = useSearchParams()
|
||||
const [activeTab, setActiveTab] = useState<"PENDING" | "PAID" | "CANCELED" | "EXPIRED">('PENDING')
|
||||
const [customerId, setCustomerId] = useState<string>('')
|
||||
const [search, setSearch] = useState<string>('')
|
||||
@@ -23,6 +25,14 @@ const ReceiptsList: FC = () => {
|
||||
const getInvoices = useGetInvoices(activeTab, customerId, search, date)
|
||||
const getCustomers = useGetCustomers()
|
||||
|
||||
useEffect(() => {
|
||||
const urlCustomerId = searchParams.get('user')
|
||||
if (urlCustomerId) {
|
||||
setCustomerId(urlCustomerId)
|
||||
}
|
||||
}, [searchParams])
|
||||
|
||||
|
||||
return (
|
||||
<div className='mt-4'>
|
||||
<div>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { FC } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import SwitchComponent from '../../../components/Switch'
|
||||
import CheckBoxComponent from '../../../components/CheckBoxComponent'
|
||||
import Input from '../../../components/Input'
|
||||
import UploadBoxDraggble from '../../../components/UploadBoxDraggble'
|
||||
@@ -28,12 +27,12 @@ const AddServiceSidebar: FC<Props> = (props: Props) => {
|
||||
<div className='text-sm'>
|
||||
{t('service.service_status')}
|
||||
</div>
|
||||
<div className='flex gap-1'>
|
||||
{/* <div className='flex gap-1'>
|
||||
<SwitchComponent
|
||||
active={formik.values.isDanakSuggest}
|
||||
onChange={(e) => formik.setFieldValue('isDanakSuggest', e)}
|
||||
/>
|
||||
</div>
|
||||
</div> */}
|
||||
</div>
|
||||
|
||||
<div className='mt-8 items-center flex '>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { FC, useState } from 'react'
|
||||
import { FC, useEffect, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { Eye, MessageRemove, MessageTick, MessageTime } from 'iconsax-react'
|
||||
import Tabs from '../../components/Tabs'
|
||||
import Td from '../../components/Td'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { Link, useSearchParams } from 'react-router-dom'
|
||||
import { Pages } from '../../config/Pages'
|
||||
import { useGetTickets } from './hooks/useTicketData'
|
||||
import moment from 'moment-jalaali'
|
||||
@@ -12,8 +12,18 @@ import { TicketItemType } from './types/TicketTypes'
|
||||
const TicketList: FC = () => {
|
||||
|
||||
const { t } = useTranslation('global')
|
||||
const [searchParams] = useSearchParams()
|
||||
const [customerId, setCustomerId] = useState<string>('')
|
||||
const [activeTab, setActiveTab] = useState<'ANSWERED' | 'PENDING' | 'CLOSED'>('PENDING')
|
||||
const getTicket = useGetTickets(activeTab)
|
||||
const getTicket = useGetTickets(activeTab, customerId)
|
||||
|
||||
useEffect(() => {
|
||||
const urlCustomerId = searchParams.get('user')
|
||||
if (urlCustomerId) {
|
||||
setCustomerId(urlCustomerId)
|
||||
}
|
||||
}, [searchParams])
|
||||
|
||||
|
||||
return (
|
||||
<div className='mt-4'>
|
||||
|
||||
@@ -2,10 +2,10 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import * as api from "../service/TicketServiec";
|
||||
import { AddMessageTicketType, CreateCategoryType } from "../types/TicketTypes";
|
||||
|
||||
export const useGetTickets = (status: string) => {
|
||||
export const useGetTickets = (status: string, customerId?: string) => {
|
||||
return useQuery({
|
||||
queryKey: ["tickets", status],
|
||||
queryFn: () => api.getTickets(status),
|
||||
queryKey: ["tickets", status, customerId],
|
||||
queryFn: () => api.getTickets(status, customerId),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import axios from "../../../config/axios";
|
||||
import { AddMessageTicketType, CreateCategoryType } from "../types/TicketTypes";
|
||||
|
||||
export const getTickets = async (status: string) => {
|
||||
const { data } = await axios.get(`/tickets/admin?status=${status}`);
|
||||
export const getTickets = async (status: string, customerId?: string) => {
|
||||
let query = `/tickets/admin?status=${status}`;
|
||||
if (customerId) {
|
||||
query += `&userId=${customerId}`;
|
||||
}
|
||||
const { data } = await axios.get(query);
|
||||
return data;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import moment from 'moment-jalaali'
|
||||
import Pagination from '../../components/Pagination'
|
||||
import Input from '../../components/Input'
|
||||
import DatePickerComponent from '../../components/DatePicker'
|
||||
import { NumberFormat } from '../../config/func'
|
||||
|
||||
const TransactionList: FC = () => {
|
||||
|
||||
@@ -74,7 +75,7 @@ const TransactionList: FC = () => {
|
||||
<tr key={item.id}>
|
||||
<Td text={item.numericId + ''} />
|
||||
<Td text={item.description} />
|
||||
<Td text={item.amount} />
|
||||
<Td text={NumberFormat(+item.amount)} />
|
||||
<Td text={moment(item.createdAt).format('jYYYY-jMM-jDD')} />
|
||||
<Td text={''}>
|
||||
<Detail />
|
||||
|
||||
Reference in New Issue
Block a user