diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-01-10 13:33:16 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-01-10 13:33:16 +0700 |
| commit | c42e3256fa8f059a937629b1e44a2dc50d736928 (patch) | |
| tree | 8c7fe1d9296bd1eb2337613e3754c60c02321cf8 /src/lib/merchant/components/SyaratDagang.jsx | |
| parent | e1ecdbe5dd1857d1aa2f3317c0d763241ebaa6e5 (diff) | |
<iman> update code
Diffstat (limited to 'src/lib/merchant/components/SyaratDagang.jsx')
| -rw-r--r-- | src/lib/merchant/components/SyaratDagang.jsx | 188 |
1 files changed, 164 insertions, 24 deletions
diff --git a/src/lib/merchant/components/SyaratDagang.jsx b/src/lib/merchant/components/SyaratDagang.jsx index 0e34c5cf..c09db65d 100644 --- a/src/lib/merchant/components/SyaratDagang.jsx +++ b/src/lib/merchant/components/SyaratDagang.jsx @@ -78,6 +78,13 @@ const SyaratDagang = () => { const recaptchaRef = useRef(null); const router = useRouter(); + useEffect(() => { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }); + }, []); + const auth = useAuth(); if (auth == false) { router.push(`/login?next=${encodeURIComponent('/daftar-merchant')}`); @@ -92,11 +99,15 @@ const SyaratDagang = () => { { value: 2, label: 'CV' }, { value: 3, label: 'Perorangan' }, ]; - const dataTempo = [ - { value: 24, label: 'Tempo 14 Hari' }, - { value: 25, label: 'Tempo 30 Hari' }, - { value: 28, label: 'Tempo 60 Hari' }, - { value: 31, label: 'Tempo 90 Hari' }, + const dataGaransi = [ + { value: 1, label: '6 Bulan Garansi' }, + { value: 2, label: '1 Tahun Garansi' }, + { value: 3, label: '2 Tahun Garansi' }, + ]; + const dataMinimumOrderQuantity = [ + { value: 1, label: 'Dus' }, + { value: 2, label: 'Lusin' }, + { value: 3, label: 'Minimum pembelian' }, ]; const dataCategoryPerusahaan = [ @@ -117,10 +128,10 @@ const SyaratDagang = () => { const firstColumn = category_produk; const [selectedIds, setSelectedIds] = useState( - watch('categoryProduk') - ? watch('categoryProduk').split(',').map(Number) + watch('sertifikatProduk') + ? watch('sertifikatProduk').split(',').map(Number) : [] - // form.categoryProduk ? form.categoryProduk.split(',').map(Number) : [] // Parse string menjadi array angka + // form.sertifikatProduk ? form.sertifikatProduk.split(',').map(Number) : [] // Parse string menjadi array angka // [] // Parse string menjadi array angka ); @@ -132,7 +143,7 @@ const SyaratDagang = () => { setSelectedIds(updatedSelected); // Mengubah array kembali menjadi string yang dipisahkan oleh koma - setValue('categoryProduk', updatedSelected.join(',')); + setValue('sertifikatProduk', updatedSelected.join(',')); }; const isChecked = (id) => selectedIds.includes(id); @@ -140,6 +151,9 @@ const SyaratDagang = () => { const handleCheckboxReturChange = (value) => { setValue('isKembaliBarang', `${value}`); }; + const handleCheckboxOrderQuantityChange = (value) => { + setValue('isOrderQuantity', `${value}`); + }; const handleCheckboxTenggatWaktuChange = (value) => { setValue('tenggatWaktu', `${value}`); @@ -528,32 +542,158 @@ const SyaratDagang = () => { <div className={`flex flex-row justify-between items-start`}> <div className='w-2/5 text-nowrap'> <label className='form-label '> - Dokumen/Sertifikat yang Dimiliki Oleh Merk + Dokumen/Sertifikat yang Dimiliki Oleh Brand </label> <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'> + <div className='flex flex-row justify-between w-full'> <div - className='flex flex-col gap-2' + className='flex flex-col gap-2 w-full' // ref={categoryProdukRef} > - {firstColumn.map((item) => ( + <Checkbox + colorScheme='red' + key={1} + onChange={() => handleCheckboxChange(1)} + isChecked={isChecked(1)} + > + TKDN + </Checkbox> + <Checkbox + colorScheme='red' + key={2} + onChange={() => handleCheckboxChange(2)} + isChecked={isChecked(2)} + > + SNI + </Checkbox> + <Checkbox + colorScheme='red' + key={3} + onChange={() => handleCheckboxChange(3)} + isChecked={isChecked(3)} + > + K3L + </Checkbox> + <div className='flex flex-row gap-2 w-full'> <Checkbox colorScheme='red' - key={item.id} - onChange={() => handleCheckboxChange(item.id)} - isChecked={isChecked(item.id)} - > - {item.name} - </Checkbox> - ))} + key={4} + onChange={() => handleCheckboxChange(4)} + isChecked={isChecked(4)} + ></Checkbox> + <input + {...register('customSertifikatProduk')} + placeholder='Masukkan Dokumen/Sertifikat yang dimiliki oleh brand' + type='text' + onFocus={() => setSelectedIds([...selectedIds, 4])} + onChange={() => setSelectedIds([...selectedIds, 4])} + className='form-input mt-2' + /> + </div> + </div> + </div> + <div className='text-caption-2 text-danger-500 mt-1'> + {errors.sertifikatProduk?.message} + </div> + </div> + </div> + + <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> + </div> + <div className='w-3/5 flex flex-col '> + <div className='flex flex-row items-center gap-3'> + <div className={`w-[25%]`}> + <Controller + name='tempoGaransi' + control={control} + render={(props) => ( + <HookFormSelect + {...props} + options={dataGaransi} + placeholder={'Pilih durasi garansi'} + /> + )} + /> + + <div className='text-caption-2 text-danger-500 mt-1'> + {errors.tempoGaransi?.message} + </div> </div> </div> + </div> + </div> + + <div className='w-full flex flex-row'> + <div className='w-2/5'> + <label className='form-label text-nowrap'> + Jelaskan Garansi yang dimaksud! + </label> + </div> + <div className='w-3/5'> + <textarea + {...register('explainGaransi')} + placeholder='Jelaskan bagian apa yang termasuk garansi' + type='textarea' + className='form-input' + rows={4} + cols={40} + /> + <div className='text-caption-2 text-danger-500 mt-1'> + {errors.explainGaransi?.message} + </div> + </div> + </div> + + <div className='flex flex-row justify-between items-start'> + <div className='w-2/5'> + <label className='form-label text-wrap '> + Apakah Memiliki Minimum Order Quantity (MOQ) + </label> + </div> + <div className='w-3/5 flex flex-row justify-start'> + <div className='flex gap-x-4 flex-col w-full'> + <RadioGroup + onChange={handleCheckboxOrderQuantityChange} + value={watch('isOrderQuantity')} + > + <Stack direction='column'> + <div className='flex flex-row text-nowrap gap-2'> + <Radio colorScheme='red' value='ya'> + Ya + </Radio> + + <Controller + name='minimumPembelian' + control={control} + render={(props) => ( + <HookFormSelect + {...props} + options={dataMinimumOrderQuantity} + placeholder={ + 'Pilih jenis minimum order quantity' + } + /> + )} + /> + </div> + <Radio colorScheme='red' value='tidak'> + Tidak Ada + </Radio> + </Stack> + </RadioGroup> + </div> + <div className='text-caption-2 text-danger-500 mt-1'> - {errors.categoryProduk?.message} + {errors.isOrderQuantity?.message} </div> </div> </div> @@ -1232,10 +1372,10 @@ const SyaratDagang = () => { }; const validationSchema = Yup.object().shape({ tenggatWaktu: Yup.string().required('Harus di-isi'), - categoryProduk: Yup.string().required('Harus di-isi'), + sertifikatProduk: Yup.string().required('Harus di-isi'), merkDagang: Yup.string().required('Harus di-isi'), - tempoDuration: Yup.string().required('Harus di-isi'), - kreditLimit: Yup.string().required('Harus di-isi'), + tempoGaransi: Yup.string().required('Harus di-isi'), + explainGaransi: Yup.string().required('Harus di-isi'), waktuPengiriman: Yup.string().required('Harus di-isi'), terhitungSejak: Yup.string().required('Harus di-isi'), pejabatName: Yup.string().required('Harus di-isi'), |
