mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
fix(FE): fixing issue reject modal show up when creating project flock
This commit is contained in:
@@ -308,7 +308,10 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
<Button
|
<Button
|
||||||
color='primary'
|
color='primary'
|
||||||
className='w-full sm:w-fit'
|
className='w-full sm:w-fit'
|
||||||
href='/production/project-flock/add'
|
onClick={() => {
|
||||||
|
setRowSelection({});
|
||||||
|
router.push('/production/project-flock/add');
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Icon icon='ic:round-plus' width={24} height={24} />
|
<Icon icon='ic:round-plus' width={24} height={24} />
|
||||||
Tambah
|
Tambah
|
||||||
|
|||||||
@@ -38,11 +38,6 @@ import { BaseApiResponse } from '@/types/api/api-general';
|
|||||||
import { FLOCK_CATEGORY_OPTIONS } from '@/config/constant';
|
import { FLOCK_CATEGORY_OPTIONS } from '@/config/constant';
|
||||||
import { useModal } from '@/components/Modal';
|
import { useModal } from '@/components/Modal';
|
||||||
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
||||||
import ApprovalSteps, {
|
|
||||||
useApprovalSteps,
|
|
||||||
} from '@/components/pages/ApprovalSteps';
|
|
||||||
import { PROJECT_FLOCK_APPROVAL_LINE } from '@/config/approval-line';
|
|
||||||
import ConfirmationModalWithNotes from '@/components/modal/ConfirmationModalWithNotes';
|
|
||||||
import NumberInput from '@/components/input/NumberInput';
|
import NumberInput from '@/components/input/NumberInput';
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import ProjectFlockKandangTable from '@/components/pages/production/project-flock/form/ProjectFlockKandangTable';
|
import ProjectFlockKandangTable from '@/components/pages/production/project-flock/form/ProjectFlockKandangTable';
|
||||||
@@ -90,18 +85,8 @@ const ProjectFlockForm = ({
|
|||||||
const setIsValid = useUiStore((s) => s.setIsValid);
|
const setIsValid = useUiStore((s) => s.setIsValid);
|
||||||
|
|
||||||
const deleteModal = useModal();
|
const deleteModal = useModal();
|
||||||
const confirmModal = useModal();
|
|
||||||
|
|
||||||
const [isDeleteLoading, setIsDeleteLoading] = useState(false);
|
const [isDeleteLoading, setIsDeleteLoading] = useState(false);
|
||||||
const [isApproveLoading, setIsApproveLoading] = useState(false);
|
|
||||||
const [isApprovedDisabled, setIsApprovedDisabled] = useState(
|
|
||||||
initialValues?.approval?.step_name == 'Pengajuan' ? false : true
|
|
||||||
);
|
|
||||||
const [isRejectedDisabled, setIsRejectedDisabled] =
|
|
||||||
useState(!isApprovedDisabled);
|
|
||||||
const [approvalAction, setApprovalAction] = useState<'APPROVED' | 'REJECTED'>(
|
|
||||||
!isApprovedDisabled ? 'APPROVED' : 'REJECTED'
|
|
||||||
);
|
|
||||||
|
|
||||||
const [rowSelection, setRowSelection] = useState<Record<string, boolean>>(
|
const [rowSelection, setRowSelection] = useState<Record<string, boolean>>(
|
||||||
() =>
|
() =>
|
||||||
@@ -163,17 +148,6 @@ const ProjectFlockForm = ({
|
|||||||
isLoadingOptions: isLoadingNonstocks,
|
isLoadingOptions: isLoadingNonstocks,
|
||||||
} = useSelect<Nonstock>(NonstockApi.basePath, 'id', 'name');
|
} = useSelect<Nonstock>(NonstockApi.basePath, 'id', 'name');
|
||||||
|
|
||||||
const {
|
|
||||||
approvals,
|
|
||||||
isLoading: approvalsLoading,
|
|
||||||
refresh: refreshApprovals,
|
|
||||||
} = useApprovalSteps({
|
|
||||||
latestApproval: initialValues?.approval,
|
|
||||||
approvalLines: PROJECT_FLOCK_APPROVAL_LINE,
|
|
||||||
moduleName: 'PROJECT_FLOCKS',
|
|
||||||
moduleId: initialValues?.id.toString() ?? '',
|
|
||||||
});
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isResponseSuccess(kandang)) {
|
if (isResponseSuccess(kandang)) {
|
||||||
if (selectedLocation) {
|
if (selectedLocation) {
|
||||||
@@ -522,19 +496,6 @@ const ProjectFlockForm = ({
|
|||||||
return unsub;
|
return unsub;
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (initialValues?.approval?.step_name) {
|
|
||||||
const pengajuanRejected =
|
|
||||||
initialValues.approval.step_number == 1 &&
|
|
||||||
initialValues.approval.action == 'REJECTED';
|
|
||||||
const approvedDisabled =
|
|
||||||
initialValues.approval.step_number !== 1 || pengajuanRejected;
|
|
||||||
setIsApprovedDisabled(approvedDisabled);
|
|
||||||
setIsRejectedDisabled(!approvedDisabled || pengajuanRejected);
|
|
||||||
setApprovalAction(!approvedDisabled ? 'APPROVED' : 'REJECTED');
|
|
||||||
}
|
|
||||||
}, [initialValues]);
|
|
||||||
|
|
||||||
// Actions handler
|
// Actions handler
|
||||||
const confirmationModalDeleteClickHandler = async () => {
|
const confirmationModalDeleteClickHandler = async () => {
|
||||||
setIsDeleteLoading(true);
|
setIsDeleteLoading(true);
|
||||||
@@ -588,29 +549,6 @@ const ProjectFlockForm = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const confirmApprovalHandler = async (
|
|
||||||
notes: string,
|
|
||||||
approvalAction: 'REJECTED' | 'APPROVED'
|
|
||||||
) => {
|
|
||||||
if (initialValues?.id === undefined) return;
|
|
||||||
setIsApproveLoading(true);
|
|
||||||
|
|
||||||
const approvalRes =
|
|
||||||
approvalAction == 'APPROVED'
|
|
||||||
? await ProjectFlockApi.approve(initialValues?.id, notes)
|
|
||||||
: await ProjectFlockApi.reject(initialValues?.id, notes);
|
|
||||||
if (isResponseSuccess(approvalRes)) {
|
|
||||||
refreshProjectFlocks?.();
|
|
||||||
toast.success(approvalRes.message as string);
|
|
||||||
}
|
|
||||||
if (isResponseError(approvalRes)) {
|
|
||||||
toast.error(approvalRes?.message as string);
|
|
||||||
}
|
|
||||||
refreshApprovals();
|
|
||||||
confirmModal.closeModal();
|
|
||||||
setIsApproveLoading(false);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleBudgetChange = (
|
const handleBudgetChange = (
|
||||||
index: number,
|
index: number,
|
||||||
fieldName: 'qty' | 'price' | 'total_price',
|
fieldName: 'qty' | 'price' | 'total_price',
|
||||||
@@ -744,47 +682,7 @@ const ProjectFlockForm = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{approvals && !approvalsLoading && formType == 'detail' && (
|
|
||||||
<ApprovalSteps approvals={approvals} />
|
|
||||||
)}
|
|
||||||
{formType == 'detail' && (
|
|
||||||
<div className='w-full flex flex-col sm:flex-row gap-2 py-4'>
|
|
||||||
<RequirePermission permissions='lti.production.project_flocks.approve'>
|
|
||||||
<Button
|
|
||||||
variant='outline'
|
|
||||||
color='success'
|
|
||||||
onClick={() => {
|
|
||||||
if (initialValues?.id) {
|
|
||||||
setApprovalAction('APPROVED');
|
|
||||||
confirmModal.openModal();
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
disabled={!initialValues?.id || isApprovedDisabled}
|
|
||||||
className='w-full sm:w-fit'
|
|
||||||
>
|
|
||||||
<Icon icon='material-symbols:check' width={24} height={24} />
|
|
||||||
Approve
|
|
||||||
</Button>
|
|
||||||
</RequirePermission>
|
|
||||||
<RequirePermission permissions='lti.production.project_flocks.approve'>
|
|
||||||
<Button
|
|
||||||
variant='outline'
|
|
||||||
color='error'
|
|
||||||
onClick={() => {
|
|
||||||
if (initialValues?.id) {
|
|
||||||
setApprovalAction('REJECTED');
|
|
||||||
confirmModal.openModal();
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
disabled={!initialValues?.id || isRejectedDisabled}
|
|
||||||
className='w-full sm:w-fit'
|
|
||||||
>
|
|
||||||
<Icon icon='mdi:times' width={24} height={24} />
|
|
||||||
Reject
|
|
||||||
</Button>
|
|
||||||
</RequirePermission>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<form
|
<form
|
||||||
className='w-auto h-auto'
|
className='w-auto h-auto'
|
||||||
onSubmit={formik.handleSubmit}
|
onSubmit={formik.handleSubmit}
|
||||||
@@ -1154,14 +1052,6 @@ const ProjectFlockForm = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='flex flex-row justify-center gap-2 flex-wrap my-6 px-4'>
|
<div className='flex flex-row justify-center gap-2 flex-wrap my-6 px-4'>
|
||||||
{/* <div className='w-120'>
|
|
||||||
<div className='text-primary text-sm'>
|
|
||||||
{JSON.stringify(formik.values)}
|
|
||||||
</div>
|
|
||||||
<div className='text-error text-sm'>
|
|
||||||
{JSON.stringify(formik.errors)}
|
|
||||||
</div>
|
|
||||||
</div> */}
|
|
||||||
{formType !== 'detail' && (
|
{formType !== 'detail' && (
|
||||||
<RequirePermission
|
<RequirePermission
|
||||||
permissions={
|
permissions={
|
||||||
@@ -1200,27 +1090,6 @@ const ProjectFlockForm = ({
|
|||||||
onClick: confirmationModalDeleteClickHandler,
|
onClick: confirmationModalDeleteClickHandler,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ConfirmationModalWithNotes
|
|
||||||
ref={confirmModal.ref}
|
|
||||||
type={approvalAction == 'APPROVED' ? 'success' : 'error'}
|
|
||||||
text={`Apakah anda yakin ingin ${
|
|
||||||
approvalAction == 'APPROVED' ? 'approve' : 'reject'
|
|
||||||
} Project Flock berikut? (${initialValues?.flock_name} - ${
|
|
||||||
initialValues?.area?.name
|
|
||||||
})?`}
|
|
||||||
secondaryButton={{
|
|
||||||
text: 'Tidak',
|
|
||||||
}}
|
|
||||||
primaryButton={{
|
|
||||||
text: 'Ya',
|
|
||||||
color: approvalAction == 'APPROVED' ? 'success' : 'error',
|
|
||||||
isLoading: isApproveLoading,
|
|
||||||
onClick: (notes) => {
|
|
||||||
confirmApprovalHandler(notes, approvalAction);
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user