summaryrefslogtreecommitdiff
path: root/src/lib/merchant/components/SyaratDagang.jsx
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-01-10 13:33:16 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-01-10 13:33:16 +0700
commitc42e3256fa8f059a937629b1e44a2dc50d736928 (patch)
tree8c7fe1d9296bd1eb2337613e3754c60c02321cf8 /src/lib/merchant/components/SyaratDagang.jsx
parente1ecdbe5dd1857d1aa2f3317c0d763241ebaa6e5 (diff)
<iman> update code
Diffstat (limited to 'src/lib/merchant/components/SyaratDagang.jsx')
-rw-r--r--src/lib/merchant/components/SyaratDagang.jsx188
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'),