tomani and use
This commit is contained in:
@@ -3,12 +3,33 @@ import ProgressCircle from "./progress-circle"
|
||||
import { AwardsResponse } from "../../types"
|
||||
import { FC } from "react"
|
||||
import { formatDateToPersian } from "../../utility/getDate"
|
||||
import { useMutation } from "@tanstack/react-query"
|
||||
import { useAward } from "../../services/api/awards"
|
||||
import toast from "react-hot-toast"
|
||||
|
||||
type Props = {
|
||||
award: AwardsResponse
|
||||
award: any
|
||||
}
|
||||
|
||||
export const AwardNotComplete: FC<Props> = ({ award }) => {
|
||||
|
||||
const { mutate, isPending } = useMutation({
|
||||
mutationFn: useAward,
|
||||
mutationKey: ["IMEI"]
|
||||
})
|
||||
|
||||
const handleUse = () => {
|
||||
mutate({ awardId: award?.id }, {
|
||||
onSuccess: (res: any) => {
|
||||
toast.success("درخواست استفاده از جایزه ثبت شد")
|
||||
window.location.reload()
|
||||
},
|
||||
onError: (err: any) => {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="w-full flex flex-col lg:items-center gap-5 bg-auth-form rounded-[40px] h-full relative p-[18px]">
|
||||
<div className="flex flex-row items-center justify-between w-full">
|
||||
@@ -16,7 +37,8 @@ export const AwardNotComplete: FC<Props> = ({ award }) => {
|
||||
<p className="font-normal text-lg text-primary-text-color">{award?.score}</p>
|
||||
<Cup className="size-4" color="#11212D" />
|
||||
</div>
|
||||
<ProgressCircle percentage={75} />
|
||||
<button onClick={handleUse} className="w-fit ">استفاده</button>
|
||||
{/* <ProgressCircle percentage={75} /> */}
|
||||
</div>
|
||||
<div className="flex flex-col items-start gap-3">
|
||||
<p className="font-normal text-base text-primary-text-color" style={{ fontFamily: "vazirmatn" }}>{award?.desc?.length >= 70 ? `${award?.desc?.slice(0, 70)} ...` : award?.desc}</p>
|
||||
|
||||
@@ -10,7 +10,7 @@ export const AwardComplete: FC<Props> = ({ award }) => {
|
||||
return (
|
||||
<div className="flex flex-col w-full h-full justify-between gap-10 bg-auth-form p-[18px] rounded-[40px]">
|
||||
<div className="flex flex-col gap-3">
|
||||
<p className="font-normal text-lg text-secondary-text-color">{award?.req?.desc}</p>
|
||||
<p className="font-normal text-lg text-secondary-text-color">{award?.title}</p>
|
||||
<p className="font-normal text-base text-secondary-text-color">{formatDateToPersian(award?.expireDate, "jYYYY/jMM/jD")}</p>
|
||||
</div>
|
||||
<div className="flex flex-row justify-between items-center">
|
||||
@@ -18,8 +18,17 @@ export const AwardComplete: FC<Props> = ({ award }) => {
|
||||
<p className="font-normal text-lg text-secondary-text-color">{award?.score}</p>
|
||||
<Cup className="size-4" color="#777577" />
|
||||
</div>
|
||||
<div className="size-10 flex items-center justify-center bg-white rounded-full cursor-pointer">
|
||||
<Transmit className="size-5" color="#777577" />
|
||||
<div className="h-10 px-4 flex items-center justify-center bg-white rounded-full cursor-pointer">
|
||||
{
|
||||
award.req.status === 0 ?
|
||||
<div className="text-orange-300">
|
||||
منتظر تایید
|
||||
</div>
|
||||
:
|
||||
<div className="text-green-400">
|
||||
تایید شده
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -23,9 +23,9 @@ export const Awards = () => {
|
||||
}, [error]);
|
||||
|
||||
useEffect(() => {
|
||||
const awardsTemp: number = data?.data?.length;
|
||||
const tempScores: any = data?.data?.filter((award: AwardsResponse) => award?.status === 1);
|
||||
const myScore = tempScores?.reduce((totalScore: number, award: AwardsResponse) => totalScore + award?.score, 0);
|
||||
const awardsTemp: number = data?.data?.awards?.length;
|
||||
const tempScores: any = data?.data?.score?.score
|
||||
const myScore = data?.data?.score?.score
|
||||
setStatus({
|
||||
awards: awardsTemp,
|
||||
my_score: myScore
|
||||
@@ -40,7 +40,10 @@ export const Awards = () => {
|
||||
<p className="font-normal text-base text-primary-text-color">امتیازهای من: {status?.my_score}</p>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6">
|
||||
{data?.data?.map((award: AwardsResponse, index: number) => award?.status === 0 ? <AwardNotComplete key={index} award={award} /> : <AwardComplete key={index} award={award} />)}
|
||||
{data?.data?.awards?.map((award: AwardsResponse, index: number) => award?.status === 0 ?
|
||||
<AwardNotComplete key={index} award={award} />
|
||||
:
|
||||
<AwardComplete key={index} award={award} />)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -13,7 +13,8 @@ type Props = {
|
||||
tableStatus?: boolean,
|
||||
isLoading?: boolean,
|
||||
totalData?: number,
|
||||
tableScore?: number
|
||||
tableScore?: number,
|
||||
totalScore?: number
|
||||
}
|
||||
|
||||
type ADSortType = {
|
||||
@@ -21,7 +22,7 @@ type ADSortType = {
|
||||
value: 1 | -1
|
||||
}
|
||||
|
||||
export const Table: FC<Props> = ({ columns, data, tableStatus = false, tableScore = 0, isLoading = false, totalData = 0 }) => {
|
||||
export const Table: FC<Props> = ({ columns, data, tableStatus = false, tableScore = 0, isLoading = false, totalData = 0, totalScore = 0 }) => {
|
||||
const [aDSort, setADSort] = useState<ADSortType>({
|
||||
key: "",
|
||||
value: -1
|
||||
@@ -76,7 +77,14 @@ export const Table: FC<Props> = ({ columns, data, tableStatus = false, tableScor
|
||||
<ComboBox placeholder={params?.rows.toString()} className="bg-auth-form" data={tableRows} mode="table" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full flex justify-start items-end text-sm lg:text-lg text-primary-text-color font-normal -mb-7 pl-2">{tableStatus && `امتیاز من : ${tableScore}`}</div>
|
||||
<div className="w-full flex gap-10 justify-start items-end text-sm lg:text-lg text-primary-text-color font-normal -mb-7 pl-2">
|
||||
<div>
|
||||
{tableStatus && `امتیاز حال حاضر : ${tableScore}`}
|
||||
</div>
|
||||
<div>
|
||||
{`امتیاز کل : ${totalScore}`}
|
||||
</div>
|
||||
</div>
|
||||
<div className="block max-w-full min-h-max overflow-x-auto overflow-y-hidden bg-auth-form rounded-[40px] shadow-sm p-4 pb-0 xl:p-9 xl:pb-0 relative">
|
||||
<table>
|
||||
<thead className="border-b border-b-secondary-color">
|
||||
|
||||
@@ -9,7 +9,7 @@ import { handleError } from "../../utility/error-handle"
|
||||
|
||||
export const Score = () => {
|
||||
const { params } = useParamsStore()
|
||||
const [data, setData] = useState<ScoreResponse>({
|
||||
const [data, setData] = useState<any>({
|
||||
data: [],
|
||||
total: 0,
|
||||
score: 0
|
||||
@@ -26,7 +26,8 @@ export const Score = () => {
|
||||
setData({
|
||||
data: res?.data?.data,
|
||||
total: res?.data?.total,
|
||||
score: res?.data?.score
|
||||
score: res?.data?.score,
|
||||
totalScore: res?.data?.totalScore,
|
||||
})
|
||||
},
|
||||
onError: (err: any) => handleError(err)
|
||||
@@ -34,6 +35,6 @@ export const Score = () => {
|
||||
})
|
||||
}, [mutate, params])
|
||||
return (
|
||||
<Table columns={scoresCol} data={data?.data} tableStatus={true} tableScore={data?.score} isLoading={isPending} totalData={data?.total} />
|
||||
<Table columns={scoresCol} data={data?.data} tableStatus={true} totalScore={data?.totalScore} tableScore={data?.score} isLoading={isPending} totalData={data?.total} />
|
||||
)
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import { AwardsResponse } from "../../types";
|
||||
import axiosInstance from "../axios";
|
||||
|
||||
|
||||
export const getAwardsList = () => axiosInstance.get<AwardsResponse[] | AwardsResponse | [], any>("/gps/award")
|
||||
|
||||
export const getAwardsList = () =>
|
||||
axiosInstance.get<AwardsResponse[] | AwardsResponse | [], any>("/gps/award");
|
||||
export const useAward = (params: any) =>
|
||||
axiosInstance.post<any>("/gps/award-request", params);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import axios from "axios";
|
||||
|
||||
const axiosInstance = axios.create({
|
||||
// baseURL: "http://192.168.0.217:7420/api",
|
||||
// baseURL: "http://192.168.0.243:7420/api",
|
||||
baseURL: "https://asan-service.com/api",
|
||||
});
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ const columnConfigs: colConfig[] | [] = [
|
||||
cellRenderer: (info) => info.getValue() === 1 ? <ShieldTick color="#11212D" className="flex w-full" /> : <ShieldCross color="#E51717" className="flex w-full" />
|
||||
},
|
||||
{
|
||||
accessor: "deviceId.dollarProfit", header: "دلار"
|
||||
accessor: "deviceId.profit", header: "سود تومانی"
|
||||
},
|
||||
{ accessor: "deviceId.score", header: "امتیاز" },
|
||||
{ accessor: "deviceId.model", header: "مدل دستگاه" },
|
||||
|
||||
Reference in New Issue
Block a user