diff --git a/bun.lock b/bun.lock index 2640de7..543e7e9 100644 --- a/bun.lock +++ b/bun.lock @@ -22,6 +22,7 @@ "@types/lodash": "^4.17.20", "@types/uuid": "^11.0.0", "add": "^2.0.6", + "dayjs": "^1.11.19", "echarts": "^6.0.0", "echarts-for-react": "^3.0.5", "elysia": "^1.4.15", diff --git a/package.json b/package.json index 1cb8768..eeba8ad 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@types/lodash": "^4.17.20", "@types/uuid": "^11.0.0", "add": "^2.0.6", + "dayjs": "^1.11.19", "echarts": "^6.0.0", "echarts-for-react": "^3.0.5", "elysia": "^1.4.15", diff --git a/src/components/NotFoundPengajuanSurat.tsx b/src/components/NotFoundPengajuanSurat.tsx new file mode 100644 index 0000000..e63ea48 --- /dev/null +++ b/src/components/NotFoundPengajuanSurat.tsx @@ -0,0 +1,51 @@ +import { + Button, + Center, + Group, + Stack, + Text, + Title +} from "@mantine/core" +import { IconSearch } from "@tabler/icons-react" + +export function DataNotFound({ + onRetry, + backTo +}: { + onRetry?: () => void + backTo?: () => void +}) { + return ( +
+ + + + Data Pengajuan Tidak Ditemukan + + + Kami tidak dapat menemukan data pengajuan dengan nomor pengajuan yg diinputkan. Silakan periksa kembali data Anda. + + + + {/* {onRetry && ( + + )} */} + + + + +
+ ) +} diff --git a/src/lib/categoryPelayananSurat.ts b/src/lib/categoryPelayananSurat.ts index 914c8ef..e771614 100644 --- a/src/lib/categoryPelayananSurat.ts +++ b/src/lib/categoryPelayananSurat.ts @@ -1,3 +1,5 @@ +import { enumAgama, enumJenisKelamin, enumStatusHidup, enumStatusPerkawinan } from "./valueEnum"; + export const categoryPelayananSurat = [ { id: "skbedabiodata", @@ -21,17 +23,43 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan" }, - { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir pemohon" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir pemohon" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin pemohon" }, - { key: "alamat", name: "Alamat", desc: "Alamat lengkap tempat tinggal" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon" }, - { key: "dokumen", name: "Nama Dokumen", desc: "Jenis dokumen yang mengalami perbedaan biodata (cth : ijazah, sertifikat, dll)" }, - { key: "data_dokumen", name: "Data Dokumen", desc: "Data dokumen yg berbeda (cth : nama, tempat lahir, tanggal lahir, jenis kelamin, alamat, pekerjaan)" }, - { key: "dokumen_a", name: "Data pada Dokumen A", desc: "Data biodata yang tertulis pada dokumen pertama" }, - { key: "dokumen_b", name: "Data pada Dokumen B", desc: "Data biodata yang tertulis pada dokumen kedua" } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan", type: "number" }, + { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir pemohon", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir pemohon", type: "date" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin pemohon", + type: "enum", + options: enumJenisKelamin + }, + { key: "alamat", name: "Alamat", desc: "Alamat lengkap tempat tinggal", type: "text" }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon", type: "text" }, + { + key: "dokumen", + name: "Nama Dokumen", + desc: "Jenis dokumen yang mengalami perbedaan biodata (cth : ijazah, sertifikat, dll)", + type: "text" + }, + { + key: "data_dokumen", + name: "Data Dokumen", + desc: "Data dokumen yg berbeda (cth : nama, tempat lahir, tanggal lahir, jenis kelamin, alamat, pekerjaan)", + type: "text" + }, + { + key: "dokumen_a", + name: "Data pada Dokumen A", + desc: "Data biodata yang tertulis pada dokumen pertama", + type: "text" + }, + { + key: "dokumen_b", + name: "Data pada Dokumen B", + desc: "Data biodata yang tertulis pada dokumen kedua", + type: "text" + } ] }, { @@ -56,14 +84,26 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan" }, - { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir pemohon" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir pemohon" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin pemohon" }, - { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal" }, - { key: "agama", name: "Agama", desc: "Agama pemohon" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon" } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan", type: "number" }, + { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir pemohon", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir pemohon", type: "date" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin pemohon", + type: "enum", + options: enumJenisKelamin + }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal", type: "text" }, + { + key: "agama", + name: "Agama", + desc: "Agama pemohon", + type: "enum", + options: enumAgama + }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon", type: "text" } ] }, { @@ -88,12 +128,12 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nama_organisasi", name: "Nama Organisasi", desc: "Nama resmi organisasi" }, - { key: "jenis_organisasi", name: "Jenis Organisasi", desc: "Jenis atau bentuk organisasi" }, - { key: "alamat_organisasi", name: "Alamat Organisasi", desc: "Alamat sekretariat organisasi" }, - { key: "no_telepon", name: "Nomor Telepon", desc: "Nomor telepon organisasi" }, - { key: "nama_pimpinan", name: "Nama Pimpinan", desc: "Nama pimpinan organisasi" }, - { key: "keperluan", name: "Keperluan", desc: "Keperluan pembuatan surat" } + { key: "nama_organisasi", name: "Nama Organisasi", desc: "Nama resmi organisasi", type: "text" }, + { key: "jenis_organisasi", name: "Jenis Organisasi", desc: "Jenis atau bentuk organisasi", type: "text" }, + { key: "alamat_organisasi", name: "Alamat Organisasi", desc: "Alamat sekretariat organisasi", type: "text" }, + { key: "no_telepon", name: "Nomor Telepon", desc: "Nomor telepon organisasi", type: "text" }, + { key: "nama_pimpinan", name: "Nama Pimpinan", desc: "Nama pimpinan organisasi", type: "text" }, + { key: "keperluan", name: "Keperluan", desc: "Keperluan pembuatan surat", type: "text" } ] }, { @@ -113,28 +153,35 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nama_anak", name: "Nama Anak", desc: "Nama bayi/anak" }, - { key: "tanggal_lahir_anak", name: "Tanggal Lahir Anak", desc: "Tanggal lahir anak" }, - { key: "pukul_lahir", name: "Pukul Lahir", desc: "Waktu kelahiran anak" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat kelahiran anak" }, - { key: "jenis_kelamin", name: "Jenis Kelamin Anak", desc: "Jenis kelamin anak" }, - { key: "anak_ke", name: "Anak Ke-", desc: "Urutan kelahiran anak" }, - { key: "nik_ibu", name: "NIK Ibu", desc: "NIK ibu kandung" }, - { key: "nama_ibu", name: "Nama Ibu", desc: "Nama lengkap ibu" }, - { key: "tempat_lahir_ibu", name: "Tempat Lahir Ibu", desc: "Tempat lahir ibu kandung" }, - { key: "tanggal_lahir_ibu", name: "Tanggal Lahir Ibu", desc: "Tanggal lahir ibu kandung" }, - { key: "pekerjaan_ibu", name: "Pekerjaan Ibu", desc: "Pekerjaan ibu kandung" }, - { key: "alamat_ibu", name: "Alamat Ibu", desc: "Alamat ibu kandung" }, - { key: "nama_ayah", name: "Nama Ayah", desc: "Nama lengkap ayah" }, - { key: "nik_ayah", name: "NIK Ayah", desc: "NIK ayah kandung" }, - { key: "tempat_lahir_ayah", name: "Tempat Lahir Ayah", desc: "Tempat lahir ayah kandung" }, - { key: "tanggal_lahir_ayah", name: "Tanggal Lahir Ayah", desc: "Tanggal lahir ayah kandung" }, - { key: "pekerjaan_ayah", name: "Pekerjaan Ayah", desc: "Pekerjaan ayah kandung" }, - { key: "alamat_ayah", name: "Alamat Ayah", desc: "Alamat ayah kandung" }, - { key: "nama_pelapor", name: "Nama Pelapor", desc: "Nama pihak yang melaporkan" }, - { key: "hubungan_pelapor", name: "Hubungan Pelapor", desc: "Hubungan pelapor dengan anak" }, - { key: "alamat_pelapor", name: "Alamat Pelapor", desc: "Alamat pelapor" } + { key: "nama_anak", name: "Nama Anak", desc: "Nama bayi/anak", type: "text" }, + { key: "tanggal_lahir_anak", name: "Tanggal Lahir Anak", desc: "Tanggal lahir anak", type: "date" }, + { key: "pukul_lahir", name: "Pukul Lahir", desc: "Waktu kelahiran anak", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat kelahiran anak", type: "text" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin Anak", + desc: "Jenis kelamin anak", + type: "enum", + options: enumJenisKelamin + }, + { key: "anak_ke", name: "Anak Ke-", desc: "Urutan kelahiran anak", type: "number" }, + { key: "nik_ibu", name: "NIK Ibu", desc: "NIK ibu kandung", type: "number" }, + { key: "nama_ibu", name: "Nama Ibu", desc: "Nama lengkap ibu", type: "text" }, + { key: "tempat_lahir_ibu", name: "Tempat Lahir Ibu", desc: "Tempat lahir ibu kandung", type: "text" }, + { key: "tanggal_lahir_ibu", name: "Tanggal Lahir Ibu", desc: "Tanggal lahir ibu kandung", type: "date" }, + { key: "pekerjaan_ibu", name: "Pekerjaan Ibu", desc: "Pekerjaan ibu kandung", type: "text" }, + { key: "alamat_ibu", name: "Alamat Ibu", desc: "Alamat ibu kandung", type: "text" }, + { key: "nama_ayah", name: "Nama Ayah", desc: "Nama lengkap ayah", type: "text" }, + { key: "nik_ayah", name: "NIK Ayah", desc: "NIK ayah kandung", type: "number" }, + { key: "tempat_lahir_ayah", name: "Tempat Lahir Ayah", desc: "Tempat lahir ayah kandung", type: "text" }, + { key: "tanggal_lahir_ayah", name: "Tanggal Lahir Ayah", desc: "Tanggal lahir ayah kandung", type: "date" }, + { key: "pekerjaan_ayah", name: "Pekerjaan Ayah", desc: "Pekerjaan ayah kandung", type: "text" }, + { key: "alamat_ayah", name: "Alamat Ayah", desc: "Alamat ayah kandung", type: "text" }, + { key: "nama_pelapor", name: "Nama Pelapor", desc: "Nama pihak yang melaporkan", type: "text" }, + { key: "hubungan_pelapor", name: "Hubungan Pelapor", desc: "Hubungan pelapor dengan anak", type: "text" }, + { key: "alamat_pelapor", name: "Alamat Pelapor", desc: "Alamat pelapor", type: "text" } ] + }, { id: "skkelakuanbaik", @@ -153,16 +200,29 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan" }, - { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin pemohon" }, - { key: "agama", name: "Agama", desc: "Agama pemohon" }, - { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon" }, - { key: "polsek", name: "Polsek Tujuan", desc: "Polsek tujuan pembuatan SKCK" } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan", type: "number" }, + { key: "nama", name: "Nama Lengkap", desc: "Nama sesuai KTP", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir", type: "date" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin pemohon", + type: "enum", + options: enumJenisKelamin + }, + { + key: "agama", + name: "Agama", + desc: "Agama pemohon", + type: "enum", + options: enumAgama + }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal", type: "text" }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon", type: "text" }, + { key: "polsek", name: "Polsek Tujuan", desc: "Polsek tujuan pembuatan SKCK", type: "text" } ] + }, { id: "skkematian", @@ -186,21 +246,27 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik_pelapor", name: "NIK Pelapor", desc: "Nomor Induk Kependudukan pelapor" }, - { key: "nama_pelapor", name: "Nama Pelapor", desc: "Nama lengkap pelapor" }, - { key: "pekerjaan_pelapor", name: "Pekerjaan Pelapor", desc: "Pekerjaan pelapor" }, - { key: "alamat_pelapor", name: "Alamat Pelapor", desc: "Alamat tempat tinggal pelapor" }, - { key: "hubungan_pelapor", name: "Hubungan dengan Almarhum", desc: "Hubungan pelapor dengan almarhum" }, - { key: "nama_almarhum", name: "Nama Almarhum", desc: "Nama lengkap almarhum" }, - { key: "nik_almarhum", name: "NIK Almarhum", desc: "Nomor Induk Kependudukan almarhum" }, - { key: "tempat_lahir_almarhum", name: "Tempat Lahir Almarhum", desc: "Tempat lahir almarhum" }, - { key: "tanggal_lahir_almarhum", name: "Tanggal Lahir Almarhum", desc: "Tanggal lahir almarhum" }, - { key: "alamat_almarhum", name: "Alamat Almarhum", desc: "Alamat terakhir almarhum" }, - { key: "agama_almarhum", name: "Agama Almarhum", desc: "Agama almarhum" }, - { key: "tanggal_kematian", name: "Tanggal Kematian", desc: "Tanggal meninggal dunia" }, - { key: "waktu_kematian", name: "Waktu Kematian", desc: "Waktu meninggal dunia" }, - { key: "tempat_kematian", name: "Tempat Kematian", desc: "Tempat meninggal dunia" }, - { key: "penyebab_kematian", name: "Penyebab Kematian", desc: "Penyebab meninggal dunia" } + { key: "nik_pelapor", name: "NIK Pelapor", desc: "Nomor Induk Kependudukan pelapor", type: "number" }, + { key: "nama_pelapor", name: "Nama Pelapor", desc: "Nama lengkap pelapor", type: "text" }, + { key: "pekerjaan_pelapor", name: "Pekerjaan Pelapor", desc: "Pekerjaan pelapor", type: "text" }, + { key: "alamat_pelapor", name: "Alamat Pelapor", desc: "Alamat tempat tinggal pelapor", type: "text" }, + { key: "hubungan_pelapor", name: "Hubungan dengan Almarhum", desc: "Hubungan pelapor dengan almarhum", type: "text" }, + { key: "nama_almarhum", name: "Nama Almarhum", desc: "Nama lengkap almarhum", type: "text" }, + { key: "nik_almarhum", name: "NIK Almarhum", desc: "Nomor Induk Kependudukan almarhum", type: "number" }, + { key: "tempat_lahir_almarhum", name: "Tempat Lahir Almarhum", desc: "Tempat lahir almarhum", type: "text" }, + { key: "tanggal_lahir_almarhum", name: "Tanggal Lahir Almarhum", desc: "Tanggal lahir almarhum", type: "date" }, + { key: "alamat_almarhum", name: "Alamat Almarhum", desc: "Alamat terakhir almarhum", type: "text" }, + { + key: "agama_almarhum", + name: "Agama Almarhum", + desc: "Agama almarhum", + type: "enum", + options: enumAgama + }, + { key: "tanggal_kematian", name: "Tanggal Kematian", desc: "Tanggal meninggal dunia", type: "date" }, + { key: "waktu_kematian", name: "Waktu Kematian", desc: "Waktu meninggal dunia", type: "text" }, + { key: "tempat_kematian", name: "Tempat Kematian", desc: "Tempat meninggal dunia", type: "text" }, + { key: "penyebab_kematian", name: "Penyebab Kematian", desc: "Penyebab meninggal dunia", type: "text" } ] }, { @@ -225,14 +291,20 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nama", name: "Nama Lengkap", desc: "Nama pemohon" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin pemohon" }, - { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon/orang tua" }, - { key: "penghasilan", name: "Penghasilan", desc: "Jumlah penghasilan per bulan" }, - { key: "alasan", name: "Alasan Permohonan", desc: "Alasan pengajuan surat penghasilan" } + { key: "nama", name: "Nama Lengkap", desc: "Nama pemohon", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir", type: "date" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin pemohon", + type: "enum", + options: enumJenisKelamin + }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal", type: "text" }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemohon/orang tua", type: "text" }, + { key: "penghasilan", name: "Penghasilan", desc: "Jumlah penghasilan per bulan", type: "number" }, + { key: "alasan", name: "Alasan Permohonan", desc: "Alasan pengajuan surat penghasilan", type: "text" } ] }, { @@ -262,18 +334,18 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan" }, - { key: "nama_pemilik", name: "Nama Pemilik", desc: "Nama pemilik usaha" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir" }, - { key: "alamat_pemilik", name: "Alamat Pemilik", desc: "Alamat pemilik usaha" }, - { key: "nama_usaha", name: "Nama Usaha", desc: "Nama usaha" }, - { key: "bidang_usaha", name: "Bidang Usaha", desc: "Bidang atau jenis usaha" }, - { key: "alamat_usaha", name: "Alamat Usaha", desc: "Alamat lokasi usaha" }, - { key: "status_tempat", name: "Status Tempat Usaha", desc: "Status kepemilikan tempat usaha" }, - { key: "luas_usaha", name: "Luas Tempat Usaha", desc: "Luas tempat usaha (m²)" }, - { key: "jumlah_karyawan", name: "Jumlah Karyawan", desc: "Jumlah tenaga kerja" }, - { key: "tujuan", name: "Tujuan Pembuatan Surat", desc: "Tujuan pembuatan surat keterangan" } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan", type: "number" }, + { key: "nama_pemilik", name: "Nama Pemilik", desc: "Nama pemilik usaha", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir", type: "date" }, + { key: "alamat_pemilik", name: "Alamat Pemilik", desc: "Alamat pemilik usaha", type: "text" }, + { key: "nama_usaha", name: "Nama Usaha", desc: "Nama usaha", type: "text" }, + { key: "bidang_usaha", name: "Bidang Usaha", desc: "Bidang atau jenis usaha", type: "text" }, + { key: "alamat_usaha", name: "Alamat Usaha", desc: "Alamat lokasi usaha", type: "text" }, + { key: "status_tempat", name: "Status Tempat Usaha", desc: "Status kepemilikan tempat usaha", type: "text" }, + { key: "luas_usaha", name: "Luas Tempat Usaha", desc: "Luas tempat usaha (m²)", type: "number" }, + { key: "jumlah_karyawan", name: "Jumlah Karyawan", desc: "Jumlah tenaga kerja", type: "number" }, + { key: "tujuan", name: "Tujuan Pembuatan Surat", desc: "Tujuan pembuatan surat keterangan", type: "text" } ] }, { @@ -293,36 +365,12 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { - key: "nik", - name: "NIK", - desc: "Nomor Induk Kependudukan pemohon" - }, - { - key: "nama", - name: "Nama Lengkap", - desc: "Nama lengkap pemohon" - }, - { - key: "tempat_lahir", - name: "Tempat Lahir", - desc: "Tempat lahir pemohon" - }, - { - key: "tanggal_lahir", - name: "Tanggal Lahir", - desc: "Tanggal lahir pemohon" - }, - { - key: "alamat", - name: "Alamat", - desc: "Alamat tempat tinggal pemohon" - }, - { - key: "alasan", - name: "Alasan Permohonan", - desc: "Alasan pengajuan Surat Keterangan Tidak Mampu" - } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan pemohon", type: "number" }, + { key: "nama", name: "Nama Lengkap", desc: "Nama lengkap pemohon", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir pemohon", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir pemohon", type: "date" }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal pemohon", type: "text" }, + { key: "alasan", name: "Alasan Permohonan", desc: "Alasan pengajuan Surat Keterangan Tidak Mampu", type: "text" } ] }, { @@ -347,17 +395,35 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nama", name: "Nama Lengkap", desc: "Nama pemilik usaha" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin pemilik usaha" }, - { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir" }, - { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir" }, - { key: "negara", name: "Kewarganegaraan", desc: "Kewarganegaraan pemilik usaha" }, - { key: "agama", name: "Agama", desc: "Agama pemilik usaha" }, - { key: "status_perkawinan", name: "Status Perkawinan", desc: "Status perkawinan" }, - { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemilik usaha" }, - { key: "jenis_usaha", name: "Jenis Usaha", desc: "Jenis usaha yang dijalankan" }, - { key: "alamat_usaha", name: "Alamat Usaha", desc: "Alamat lokasi usaha" } + { key: "nama", name: "Nama Lengkap", desc: "Nama pemilik usaha", type: "text" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin pemilik usaha", + type: "enum", + options: enumJenisKelamin + }, + { key: "tempat_lahir", name: "Tempat Lahir", desc: "Tempat lahir", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir", desc: "Tanggal lahir", type: "date" }, + { key: "negara", name: "Kewarganegaraan", desc: "Kewarganegaraan pemilik usaha", type: "text" }, + { + key: "agama", + name: "Agama", + desc: "Agama pemilik usaha", + type: "enum", + options: enumAgama + }, + { + key: "status_perkawinan", + name: "Status Perkawinan", + desc: "Status perkawinan", + type: "enum", + options: enumStatusPerkawinan + }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal", type: "text" }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan pemilik usaha", type: "text" }, + { key: "jenis_usaha", name: "Jenis Usaha", desc: "Jenis usaha yang dijalankan", type: "text" }, + { key: "alamat_usaha", name: "Alamat Usaha", desc: "Alamat lokasi usaha", type: "text" } ] }, { @@ -377,17 +443,37 @@ export const categoryPelayananSurat = [ ], dataText: [], dataPelengkap: [ - { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan" }, - { key: "nama", name: "Nama Lengkap", desc: "Nama anak" }, - { key: "tempat_lahir", name: "Tempat Lahir Anak", desc: "Tempat lahir anak" }, - { key: "tanggal_lahir", name: "Tanggal Lahir Anak", desc: "Tanggal lahir anak" }, - { key: "jenis_kelamin", name: "Jenis Kelamin", desc: "Jenis kelamin anak" }, - { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal" }, - { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan (jika ada)" }, - { key: "nama_ayah", name: "Nama Ayah", desc: "Nama ayah kandung" }, - { key: "status_ayah", name: "Status Ayah", desc: "Status ayah (hidup / meninggal)" }, - { key: "nama_ibu", name: "Nama Ibu", desc: "Nama ibu kandung" }, - { key: "status_ibu", name: "Status Ibu", desc: "Status ibu (hidup / meninggal)" } + { key: "nik", name: "NIK", desc: "Nomor Induk Kependudukan", type: "number" }, + { key: "nama", name: "Nama Lengkap", desc: "Nama anak", type: "text" }, + { key: "tempat_lahir", name: "Tempat Lahir Anak", desc: "Tempat lahir anak", type: "text" }, + { key: "tanggal_lahir", name: "Tanggal Lahir Anak", desc: "Tanggal lahir anak", type: "date" }, + { + key: "jenis_kelamin", + name: "Jenis Kelamin", + desc: "Jenis kelamin anak", + type: "enum", + options: enumJenisKelamin + }, + { key: "alamat", name: "Alamat", desc: "Alamat tempat tinggal", type: "text" }, + { key: "pekerjaan", name: "Pekerjaan", desc: "Pekerjaan (jika ada)", type: "text" }, + + { key: "nama_ayah", name: "Nama Ayah", desc: "Nama ayah kandung", type: "text" }, + { + key: "status_ayah", + name: "Status Ayah", + desc: "Status ayah (hidup / meninggal)", + type: "enum", + options: enumStatusHidup + }, + { key: "nama_ibu", name: "Nama Ibu", desc: "Nama ibu kandung", type: "text" }, + { + key: "status_ibu", + name: "Status Ibu", + desc: "Status ibu (hidup / meninggal)", + type: "enum", + options: enumStatusHidup + } ] + } ]; diff --git a/src/lib/valueEnum.ts b/src/lib/valueEnum.ts new file mode 100644 index 0000000..01c84ca --- /dev/null +++ b/src/lib/valueEnum.ts @@ -0,0 +1,25 @@ +export const enumJenisKelamin = [ + { label: "Laki-laki", value: "Laki-laki" }, + { label: "Perempuan", value: "Perempuan" } +]; + +export const enumAgama = [ + { label: "Islam", value: "Islam" }, + { label: "Kristen", value: "Kristen" }, + { label: "Katolik", value: "Katolik" }, + { label: "Hindu", value: "Hindu" }, + { label: "Buddha", value: "Buddha" }, + { label: "Konghucu", value: "Konghucu" } +]; + +export const enumStatusHidup = [ + { label: "Hidup", value: "Hidup" }, + { label: "Meninggal", value: "Meninggal" } +]; + +export const enumStatusPerkawinan = [ + { label: "Belum Kawin", value: "Belum Kawin" }, + { label: "Kawin", value: "Kawin" }, + { label: "Cerai Hidup", value: "Cerai Hidup" }, + { label: "Cerai Mati", value: "Cerai Mati" } +]; diff --git a/src/pages/darmasaba/surat.tsx b/src/pages/darmasaba/surat.tsx index 167dda6..0b6d33b 100644 --- a/src/pages/darmasaba/surat.tsx +++ b/src/pages/darmasaba/surat.tsx @@ -22,13 +22,19 @@ import { TextInput, Tooltip, } from "@mantine/core"; +import { DateInput } from "@mantine/dates"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { IconBuildingCommunity, + IconCategory, + IconFiles, IconInfoCircle, - IconUpload, - IconUser, + IconNotes, + IconPhone, + IconUpload } from "@tabler/icons-react"; +import dayjs from "dayjs"; +import "dayjs/locale/id"; import React, { useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import useSWR from "swr"; @@ -310,44 +316,15 @@ export default function FormSurat() { - Form Length: 3 Sections + Form Length: 4 Sections - {/* Header Section */} } - description="Informasi identitas pemohon" + title="Jenis Surat Pengajuan" + icon={} > - - } - placeholder="Budi Setiawan" - value={formSurat.nama} - onChange={(e) => - validationForm({ key: "nama", value: e.target.value }) - } - /> - - - - - } - placeholder="08123456789" - value={formSurat.phone} - onChange={(e) => - validationForm({ key: "phone", value: e.target.value }) - } - /> - - + } + data={item.options ?? []} + placeholder={item.name} + onChange={(e) => { + validationForm({ + key: "dataPelengkap", + value: { key: item.key, value: e } + }) + }} + value={formSurat.dataPelengkap.find((n: any) => n.key == item.key)?.value} + /> + : item.type == "date" + ? + + } + placeholder={item.name} + onChange={(e) => { + const formatted = e + ? dayjs(e).locale("id").format("DD MMMM YYYY") + : ""; + validationForm({ + key: "dataPelengkap", + value: { key: item.key, value: formatted }, + }) + }} + /> + : + + } + placeholder={item.name} + onChange={(e) => + validationForm({ + key: "dataPelengkap", + value: { key: item.key, value: e.target.value }, + }) + } + value={ + formSurat.dataPelengkap.find( + (n: any) => n.key == item.key, + )?.value + } + /> + } + ))} @@ -405,6 +460,7 @@ export default function FormSurat() { } > {dataSurat.syaratDokumen.map((item: any, index: number) => ( diff --git a/src/pages/darmasaba/update_data_surat.tsx b/src/pages/darmasaba/update_data_surat.tsx index ee135a9..43b4aae 100644 --- a/src/pages/darmasaba/update_data_surat.tsx +++ b/src/pages/darmasaba/update_data_surat.tsx @@ -1,8 +1,10 @@ import FullScreenLoading from "@/components/FullScreenLoading"; import ModalFile from "@/components/ModalFile"; +import { DataNotFound } from "@/components/NotFoundPengajuanSurat"; import notification from "@/components/notificationGlobal"; import SuccessPengajuan from "@/components/SuccessPengajuanSurat"; import apiFetch from "@/lib/apiFetch"; +import { parseTanggalID } from "@/server/lib/stringToDate"; import { ActionIcon, Alert, @@ -18,17 +20,23 @@ import { Grid, Group, Modal, + Select, Stack, Text, TextInput, Tooltip } from "@mantine/core"; +import { DateInput } from "@mantine/dates"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { IconBuildingCommunity, + IconFiles, IconInfoCircle, + IconNotes, IconUpload } from "@tabler/icons-react"; +import dayjs from "dayjs"; +import "dayjs/locale/id"; import _ from "lodash"; import React, { useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; @@ -72,34 +80,41 @@ export default function UpdateDataSurat() { const { search } = useLocation(); const query = new URLSearchParams(search); const noPengajuan = query.get("pengajuan"); + const [found, setFound] = useState(true); return ( - - - -
- - Update Data Pengajuan Surat Administrasi - - - Formulir ini digunakan untuk memperbarui data pengajuan surat administrasi yang telah diajukan sebelumnya. - -
+ { + found && + + + +
+ + Update Data Pengajuan Surat Administrasi + + + Formulir ini digunakan untuk memperbarui data pengajuan surat administrasi yang telah diajukan sebelumnya. + +
+
-
+ } { !noPengajuan ? ( ) : - + found ? ( + { setFound(e) }} /> + ) : ( + navigate("/darmasaba/update-data-surat")} /> + ) } -
@@ -338,7 +353,7 @@ function SearchData() { } -function DataUpdate({ noPengajuan }: { noPengajuan: string }) { +function DataUpdate({ noPengajuan, onValidate }: { noPengajuan: string, onValidate: (e: boolean) => void }) { const [opened, { open, close }] = useDisclosure(false) const navigate = useNavigate() const [sukses, setSukses] = useState(false) @@ -356,20 +371,23 @@ function DataUpdate({ noPengajuan }: { noPengajuan: string }) { try { const res = await apiFetch.api.pelayanan["detail-data"].post({ nomerPengajuan: noPengajuan }); if (res.data && res.data.success === true) { + onValidate(true) setDataPelengkap(res.data.dataPelengkap || []); setDataSyaratDokumen(res.data.syaratDokumen || []); setDataPengajuan(res.data.pengajuan || {}); setStatus(res.data.pengajuan && 'status' in res.data.pengajuan ? res.data.pengajuan.status : ""); } else { - notification({ - title: "Error", - message: res.data?.message || "Gagal memuat data", - type: "error", - }); + // notification({ + // title: "Error", + // message: res.data?.message || "Gagal memuat data", + // type: "error", + // }); + onValidate(false) setDataPelengkap([]); setDataSyaratDokumen([]); setDataPengajuan({}); + } } catch (error) { console.error('Error fetching data:', error); @@ -559,26 +577,73 @@ function DataUpdate({ noPengajuan }: { noPengajuan: string }) { && ⚠} /> } } > {dataPelengkap.map((item: any, index: number) => ( - - } - placeholder={item.name} - onChange={(e) => - validationForm({ - kategori: "dataPelengkap", - value: { id: item.id, key: item.key, value: e.target.value }, - }) - } - value={formSurat.dataPelengkap.find((n) => n.id === item.id)?.value ?? dataPelengkap.find((n: any) => n.key == item.key,)?.value} - disabled={status != "ditolak" && status != "antrian"} - /> + { + item.type == "enum" + ? +