diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-01-20 10:33:19 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-01-20 10:33:19 +0700 |
| commit | cb083185ce59df7143ea258e147a118a1e416e56 (patch) | |
| tree | 8b003da0e6630df422931215f67cf51095659f08 /src/lib/merchant/components/SyaratDagang.jsx | |
| parent | dde82979c57ab0261a802ab4134e65272e3d4a37 (diff) | |
<iman> update merchant
Diffstat (limited to 'src/lib/merchant/components/SyaratDagang.jsx')
| -rw-r--r-- | src/lib/merchant/components/SyaratDagang.jsx | 144 |
1 files changed, 77 insertions, 67 deletions
diff --git a/src/lib/merchant/components/SyaratDagang.jsx b/src/lib/merchant/components/SyaratDagang.jsx index 83faf520..362302fd 100644 --- a/src/lib/merchant/components/SyaratDagang.jsx +++ b/src/lib/merchant/components/SyaratDagang.jsx @@ -4,7 +4,13 @@ import stateApi from '@/lib/address/api/stateApi.js'; import districtApi from '@/lib/address/api/districtApi'; import subDistrictApi from '@/lib/address/api/subDistrictApi'; import { yupResolver } from '@hookform/resolvers/yup'; -import React, { useEffect, useRef, useState } from 'react'; +import React, { + useEffect, + useRef, + useState, + forwardRef, + useImperativeHandle, +} from 'react'; import ReCAPTCHA from 'react-google-recaptcha'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; @@ -25,7 +31,7 @@ import MobileView from '@/core/components/views/MobileView'; import DesktopView from '@/core/components/views/DesktopView'; import getFileBase64 from '@/core/utils/getFileBase64'; import odooApi from '~/libs/odooApi'; -const SyaratDagang = ({ handleIsError }) => { +const SyaratDagang = forwardRef(({ handleIsError, isKonfirmasi }, ref) => { const isError = (value) => { // Logika menentukan error const result = value ? true : false; @@ -91,32 +97,36 @@ const SyaratDagang = ({ handleIsError }) => { const data = await getMerchantApi(); setbigData(data); console.log('data vendor', data); - reset({ - isKembaliBarang: data.isKembaliBarang || '', - textReturn: data.textReturn || '', - tenggatWaktu: (() => { - const waktu = data.tenggatWaktu - ? data.tenggatWaktu.split(' ')[0] - : ''; - if (waktu === '14') return '14'; - if (waktu === '30') return '30'; - return 'custom'; - })(), - customTenggatWaktu: (() => { - if (watch('tenggatWaktu') === 'custom') return data.tenggatWaktu; - return ''; - })(), - sertifikatProduk: data.sertifikatProduk || '', - customSertifikatProduk: data.customSertifikatProduk || '', - tempoGaransi: parseInt(data.tempoGaransi) || '', - explainGaransi: data.explainGaransi || '', - minimumPembelian: data.minimumPembelian || '', - isOrderQuantity: data.isOrderQuantity || '', - }); - // handleKreditLimitChange(data.kreditLimit); - setSelectedIds(watch('sertifikatProduk').split(',').map(Number)); - if (watch('customSertifikatProduk')) { - // setSelectedIds([...selectedIds, 4]); + if (data) { + reset({ + isKembaliBarang: data.isKembaliBarang || '', + textReturn: data.textReturn || '', + tenggatWaktu: (() => { + const waktu = data.tenggatWaktu + ? data.tenggatWaktu.split(' ')[0] + : ''; + if (waktu === '14') return '14'; + if (waktu === '30') return '30'; + return 'custom'; + })(), + customTenggatWaktu: (() => { + if (watch('tenggatWaktu') === 'custom') + return data.tenggatWaktu ? data.tenggatWaktu : ''; + return ''; + })(), + sertifikatProduk: data.sertifikatProduk || '', + customSertifikatProduk: data.customSertifikatProduk || '', + tempoGaransi: parseInt(data.tempoGaransi) || '', + explainGaransi: data.explainGaransi || '', + minimumPembelian: + data.isOrderQuantity == 'tidak' ? '' : data.minimumPembelian || '', + isOrderQuantity: data.isOrderQuantity || '', + }); + // handleKreditLimitChange(data.kreditLimit); + setSelectedIds(watch('sertifikatProduk').split(',').map(Number)); + if (watch('customSertifikatProduk')) { + // setSelectedIds([...selectedIds, 4]); + } } }; @@ -129,7 +139,9 @@ const SyaratDagang = ({ handleIsError }) => { behavior: 'smooth', }); }, []); - + useImperativeHandle(ref, () => () => { + handleSubmit(onSubmitHandler)(); + }); const auth = useAuth(); if (auth == false) { router.push(`/login?next=${encodeURIComponent('/daftar-merchant')}`); @@ -357,7 +369,6 @@ const SyaratDagang = ({ handleIsError }) => { const onSubmitHandler = async (values) => { const toastId = toast.loading('Mengirimkan formulir merchant...'); const data = { - ...values, is_kembali_barang: values.isKembaliBarang, text_return: values.textReturn, tenggat_waktu: values.tenggatWaktu, @@ -448,12 +459,16 @@ const SyaratDagang = ({ handleIsError }) => { </div> </BottomPopup> <DesktopView> - <div className='container flex flex-col items-star py-4 '> + <div + className={`container flex flex-col h-fit items-start ${ + !isKonfirmasi && 'py-4' + }`} + > <h2 className='text-xs md:text-title-sm font-semibold mb-6'> Syarat Perdagangan </h2> - <div className='w-full mt-4'> + <div className='w-full mt-4 '> <form onSubmit={handleSubmit(onSubmitHandler)} className='flex flex-col gap-4' @@ -544,12 +559,16 @@ const SyaratDagang = ({ handleIsError }) => { <div className={`flex flex-row justify-between items-start`}> <div className='w-2/5 text-nowrap'> - <label className='form-label '> + <label + className={`form-label ${isKonfirmasi && 'text-wrap'}`} + > Dokumen/Sertifikat yang Dimiliki Oleh Brand </label> - <span className='text-xs opacity-60'> - Pilih dokumen/sertifikat bisa lebih dari 1 - </span> + {!isKonfirmasi && ( + <span className='text-xs opacity-60'> + Pilih dokumen/sertifikat bisa lebih dari 1 + </span> + )} </div> <div className='w-3/5 flex flex-col'> <div className='flex flex-row justify-between w-full'> @@ -610,13 +629,15 @@ const SyaratDagang = ({ handleIsError }) => { <div className='flex flex-row justify-between items-center'> <div className='w-2/5'> <label className='form-label text-nowrap'>Garansi</label> - <span className='text-xs opacity-60'> - Pilih waktu garansi yang diberikan - </span> + {!isKonfirmasi && ( + <span className='text-xs opacity-60'> + Pilih waktu garansi yang diberikan + </span> + )} </div> <div className='w-3/5 flex flex-col '> <div className='flex flex-row items-center gap-3'> - <div className={`w-[25%]`}> + <div className={`${!isKonfirmasi && 'w-[25%]'}`}> <Controller name='tempoGaransi' control={control} @@ -717,34 +738,23 @@ const SyaratDagang = ({ handleIsError }) => { </div> </div> - <div className=''> - {/* <div> - <ReCAPTCHA - ref={recaptchaRef} - sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE} - /> - </div> */} - </div> - <div className='flex justify-start'> - {/* <Button - colorScheme='red' - className='w-full md:w-fit' - type='submit' - > - Daftar Merchant{' '} - {<ChevronRightIcon className='w-5' color='white' />} - </Button> */} - <div> - <button - type='submit' - className='btn-light bg-red-500 rounded-lg text-white w-full md:w-fit mt-6 ml-0 md:ml-auto flex justify-between hover:bg-red-400' - > - <span>Daftar Merchant </span> - </button> + {!isKonfirmasi && ( + <div className='flex justify-end'> + <div> + <span className='text-xs opacity-60'> + *Pastikan data yang anda masukan sudah benar dan sesuai + </span> + <button + type='submit' + className='btn-light bg-red-500 rounded-lg text-white w-fit py-2 px-4 md:w-fit mt-2 ml-0 md:ml-auto flex justify-between hover:bg-red-400' + > + <span className={` `}>Langkah Selanjutnya</span> + {<ChevronRightIcon className='w-5' />} + </button> + </div> </div> - </div> + )} </form> - <PageContent path='/daftar-merchant' /> </div> </div> </DesktopView> @@ -1388,7 +1398,7 @@ const SyaratDagang = ({ handleIsError }) => { </MobileView> </> ); -}; +}); const validationSchema = Yup.object().shape({ isKembaliBarang: Yup.string().required('Harus di-pilih'), tenggatWaktu: Yup.string().required('Harus di-pilih'), |
