bug fixed
This commit is contained in:
parent
7958fff5e9
commit
398652e213
@ -161,7 +161,7 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
setShowRejectError(false);
|
setShowRejectError(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleApproveConfirm = async () => {
|
const handleApproveConfirm = async () => {
|
||||||
if (!selectedSubmission || isProcessing) return;
|
if (!selectedSubmission || isProcessing) return;
|
||||||
|
|
||||||
setIsProcessing(true);
|
setIsProcessing(true);
|
||||||
@ -176,6 +176,10 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
if (ok) {
|
if (ok) {
|
||||||
toast.success('Submission approved successfully');
|
toast.success('Submission approved successfully');
|
||||||
|
|
||||||
|
const currentUser = JSON.parse(sessionStorage.getItem("user_profile"))?.name || 'Admin';
|
||||||
|
const currentTime = new Date().toISOString();
|
||||||
|
const updatedAt = response?.data?.updated_at || new Date().toISOString();
|
||||||
|
|
||||||
// Update the status of the current item in the data array
|
// Update the status of the current item in the data array
|
||||||
setData(prevData =>
|
setData(prevData =>
|
||||||
prevData.map(item =>
|
prevData.map(item =>
|
||||||
@ -183,8 +187,8 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
? {
|
? {
|
||||||
...item,
|
...item,
|
||||||
status: 'Approved',
|
status: 'Approved',
|
||||||
reviewer: JSON.parse(sessionStorage.getItem("user_profile"))?.name || 'Admin',
|
reviewer_name: currentUser,
|
||||||
reviewerOn: new Date().toISOString()
|
reviewerOn: updatedAt
|
||||||
}
|
}
|
||||||
: item
|
: item
|
||||||
)
|
)
|
||||||
@ -200,9 +204,9 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
setShowApproveModal(false);
|
setShowApproveModal(false);
|
||||||
setSelectedSubmission(null);
|
setSelectedSubmission(null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRejectConfirm = async () => {
|
const handleRejectConfirm = async () => {
|
||||||
if (!selectedSubmission || isProcessing) {
|
if (!selectedSubmission || isProcessing) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -226,6 +230,10 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
if (ok) {
|
if (ok) {
|
||||||
toast.error('Submission has been rejected');
|
toast.error('Submission has been rejected');
|
||||||
|
|
||||||
|
const currentUser = JSON.parse(sessionStorage.getItem("user_profile"))?.name || 'Admin';
|
||||||
|
const currentTime = new Date().toISOString();
|
||||||
|
const updatedAt = response?.data?.updated_at || new Date().toISOString();
|
||||||
|
|
||||||
// Update the status of the current item in the data array
|
// Update the status of the current item in the data array
|
||||||
setData(prevData =>
|
setData(prevData =>
|
||||||
prevData.map(item =>
|
prevData.map(item =>
|
||||||
@ -233,8 +241,8 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
? {
|
? {
|
||||||
...item,
|
...item,
|
||||||
status: 'Rejected',
|
status: 'Rejected',
|
||||||
reviewer: JSON.parse(sessionStorage.getItem("user_profile"))?.name || 'Admin',
|
reviewer_name: currentUser,
|
||||||
reviewerOn: new Date().toISOString()
|
reviewerOn: updatedAt
|
||||||
}
|
}
|
||||||
: item
|
: item
|
||||||
)
|
)
|
||||||
@ -252,8 +260,7 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
setShowRejectModal(false);
|
setShowRejectModal(false);
|
||||||
setSelectedSubmission(null);
|
setSelectedSubmission(null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const headers = [
|
const headers = [
|
||||||
'Establishment',
|
'Establishment',
|
||||||
'Emirates',
|
'Emirates',
|
||||||
@ -268,20 +275,43 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
|
|||||||
'Actions',
|
'Actions',
|
||||||
];
|
];
|
||||||
|
|
||||||
const tableRows = filtered.map((item) => [
|
// const tableRows = filtered.map((item) => [
|
||||||
|
// item?.establishment?.factory_name || '-',
|
||||||
|
// item?.establishment?.establishment_emirate?.name || '-',
|
||||||
|
// item?.year || '-',
|
||||||
|
// item?.quarter || '-',
|
||||||
|
// item?.product_count || '-',
|
||||||
|
// // Submitted By - get from created_by_name field
|
||||||
|
// item?.created_by_name || '-',
|
||||||
|
// <span className="whitespace-nowrap">{formatDate(item?.created_at)}</span>,
|
||||||
|
// renderStatusBadge(item?.status),
|
||||||
|
// // Reviewer - get from reviewer_name field (person who approved/rejected)
|
||||||
|
// item?.reviewer_name || '-',
|
||||||
|
// // Reviewed On - use reviewerOn for reviewed date
|
||||||
|
// <span className="whitespace-nowrap">{formatDate(item?.reviewerOn)}</span>,
|
||||||
|
// item,
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
const tableRows = filtered.map((item) => [
|
||||||
item?.establishment?.factory_name || '-',
|
item?.establishment?.factory_name || '-',
|
||||||
item?.establishment?.establishment_emirate?.name || '-',
|
item?.establishment?.establishment_emirate?.name || '-',
|
||||||
item?.year || '-',
|
item?.year || '-',
|
||||||
item?.quarter || '-',
|
item?.quarter || '-',
|
||||||
item?.product_count || '-',
|
item?.product_count || '-',
|
||||||
userProfile?.name || '-',
|
// Submitted By - get from created_by_name field
|
||||||
|
item?.created_by_name || '-',
|
||||||
<span className="whitespace-nowrap">{formatDate(item?.created_at)}</span>,
|
<span className="whitespace-nowrap">{formatDate(item?.created_at)}</span>,
|
||||||
renderStatusBadge(item?.status),
|
renderStatusBadge(item?.status),
|
||||||
userProfile?.name || '-',
|
// Reviewer - show reviewer_name after approval/rejection, otherwise show '-'
|
||||||
<span className="whitespace-nowrap">{formatDate(item?.created_at)}</span>,
|
item?.status?.toLowerCase() === 'approved' || item?.status?.toLowerCase() === 'rejected'
|
||||||
|
? (item?.reviewer_name || JSON.parse(sessionStorage.getItem("user_profile"))?.name || 'Admin')
|
||||||
|
: '-',
|
||||||
|
// Reviewed On - show reviewerOn after approval/rejection, otherwise show '-'
|
||||||
|
item?.status?.toLowerCase() === 'approved' || item?.status?.toLowerCase() === 'rejected'
|
||||||
|
? <span className="whitespace-nowrap">{formatDate(item?.reviewerOn)}</span>
|
||||||
|
: '-',
|
||||||
item,
|
item,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const columnWidths = [220, 150, 100, 100, 130, 150, 180, 150, 150, 180, 120];
|
const columnWidths = [220, 150, 100, 100, 130, 150, 180, 150, 150, 180, 120];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -905,10 +905,21 @@ const EditCompanyProfile = () => {
|
|||||||
return (
|
return (
|
||||||
<li key={product.value} className="p-3 hover:bg-[#F9FAFB] flex justify-between items-center">
|
<li key={product.value} className="p-3 hover:bg-[#F9FAFB] flex justify-between items-center">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
{product.action_done_by === "admin_users" ? (
|
{/* {product.action_done_by === "admin_users" ? (
|
||||||
<MdAdminPanelSettings className="text-[#92722A] text-lg" title="Added by Admin" />
|
<MdAdminPanelSettings className="text-[#92722A] text-lg" title="Added by Admin" />
|
||||||
) : (
|
) : (
|
||||||
<FaBuilding className="text-[#92722A]" title="Added by Establishment" />
|
<FaBuilding className="text-[#92722A]" title="Added by Establishment" />
|
||||||
|
)} */}
|
||||||
|
{product.action_done_by === "admin_users" ? (
|
||||||
|
<MdAdminPanelSettings
|
||||||
|
className="text-[#92722A] text-lg flex-shrink-0 w-6 h-6"
|
||||||
|
title="Added by Admin"
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<FaBuilding
|
||||||
|
className="text-[#92722A] flex-shrink-0 w-6 h-5"
|
||||||
|
title="Added by Establishment"
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
<div>
|
<div>
|
||||||
<div className="text-sm font-medium text-[#111827]">
|
<div className="text-sm font-medium text-[#111827]">
|
||||||
|
|||||||
@ -1027,7 +1027,7 @@ const Survey = () => {
|
|||||||
onRemarksChange={setRemarks}
|
onRemarksChange={setRemarks}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{step === 3 && (
|
{/* {step === 3 && (
|
||||||
<ReviewSubmit
|
<ReviewSubmit
|
||||||
establishment={establishmentData}
|
establishment={establishmentData}
|
||||||
products={productsData}
|
products={productsData}
|
||||||
@ -1046,7 +1046,46 @@ const Survey = () => {
|
|||||||
hasSubmitted={false}
|
hasSubmitted={false}
|
||||||
remarks={remarks}
|
remarks={remarks}
|
||||||
/>
|
/>
|
||||||
|
)} */}
|
||||||
|
{step === 3 && (
|
||||||
|
<div className="relative">
|
||||||
|
|
||||||
|
{/* 🔄 Loader Overlay */}
|
||||||
|
{isSubmitting && (
|
||||||
|
<div className="absolute inset-0 bg-black/30 flex items-center justify-center z-50 rounded">
|
||||||
|
<div className="bg-white px-6 py-4 rounded shadow-md flex flex-col items-center">
|
||||||
|
<div className="animate-spin h-8 w-8 border-4 border-[#92722A] border-t-transparent rounded-full"></div>
|
||||||
|
<span className="text-sm text-[#92722A] mt-2">
|
||||||
|
Submitting, please wait...
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/*Your Existing Component */}
|
||||||
|
<div className={isSubmitting ? "pointer-events-none opacity-70" : ""}>
|
||||||
|
<ReviewSubmit
|
||||||
|
establishment={establishmentData}
|
||||||
|
products={productsData}
|
||||||
|
onBack={() => setStep(2)}
|
||||||
|
onSubmit={handleFinalSubmit}
|
||||||
|
submitButtonText={isResubmit ? 'Resubmit' : 'Submit'}
|
||||||
|
toast={toast}
|
||||||
|
onToastClose={() => {
|
||||||
|
if (toastTimeoutRef.current) {
|
||||||
|
window.clearTimeout(toastTimeoutRef.current);
|
||||||
|
toastTimeoutRef.current = null;
|
||||||
|
}
|
||||||
|
setToast(null);
|
||||||
|
}}
|
||||||
|
isSubmitting={isSubmitting}
|
||||||
|
hasSubmitted={false}
|
||||||
|
remarks={remarks}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user