import React, { Component } from "react"; import { Row, Col, Input, FormGroup, Label, Progress, Button } from "reactstrap"; import Select from "react-select"; import { addDays, addMonths } from 'date-fns'; import Datetime from "react-datetime"; import moment from "moment"; import { getAutoSave } from "@/actions/autosave"; let Dropzone = null; class DropzoneWrapper extends Component { state = { isClient: false, }; componentDidMount = () => { Dropzone = require("react-dropzone").default; this.setState({ isClient: true }); }; render() { return Dropzone ? {this.props.children} : null; } } const formatOptionLabel = ({ value, sanksi, label_sanksi }) => (
{value}
{label_sanksi}
); export class UploadSurat extends Component { constructor(props) { super(props); const tmt_awal = new Date(); this.state = { files: [], nomorSanksi: "", keterangan: "", listSanksi: null, startDay: tmt_awal, maxDay: "", awalTMT: "", akhirTMT: "", tidakPerluTMTCheck: false, terimaSuratSanksi: "", tglAkhirKeberatan: "", filesTandaTerimaSS: [], selectedFile: {} }; } onDrop = (selectedFile) => { this.setState({ selectedFile: selectedFile.map((file) => Object.assign(file, { preview: URL.createObjectURL(file), }) ), stat: "Added " + selectedFile.length + " file(s)", }); const selectFile = this.state.selectedFile this.setState(prevState => ({ files: [...prevState.files, ...selectFile] })) this.props.setUploadSuratSanksi(this.state); }; onDropTandaTerimaSS = (filesTandaTerimaSS) => { this.setState({ filesTandaTerimaSS: filesTandaTerimaSS.map((file) => Object.assign(file, { preview: URL.createObjectURL(file), }) ), stat: "file tanda terima sanksi " + filesTandaTerimaSS.length + " file", }); this.props.setUploadSuratSanksi(this.state); }; componentDidMount = async () => { const { query, token } = this.props; const { id } = query; const getDataSave = await getAutoSave({ id, laporan: true }); const autosaveDataUpload = getDataSave.data?.PenetapanSanksi?.dataUpload; this.setState(autosaveDataUpload) } clearFiles = (e) => { e.preventDefault(); e.stopPropagation(); this.setState({ stat: this.state.files.length ? this.state.files.length + " file(s) cleared." : "No files to clear.", }); this.setState({ files: [], }); this.props.setUploadSuratSanksi(this.state); }; clearFilesTerimaSanksi = (e) => { e.preventDefault(); e.stopPropagation(); this.setState({ stat: this.state.filesTandaTerimaSS.length ? this.state.filesTandaTerimaSS.length + " file(s) cleared." : "No files to clear.", }); this.setState({ filesTandaTerimaSS: [], }); this.props.setUploadSuratSanksi(this.state); }; handleAutoSave = () => { this.props.handleAutoSave() } setUploadSuratSanksi = () => { this.props.setUploadSuratSanksi(this.state); }; setNomorSanksi = (e) => { // this.setState({ nomorSanksi: e.target.value }, this.setUploadSuratSanksi); this.state.nomorSanksi = e.target.value this.setUploadSuratSanksi() // this.handleAutoSave() }; setKeterangan = (e) => { // this.setState({ keterangan: e.target.value }, this.setUploadSuratSanksi); this.state.keterangan = e.target.value this.setUploadSuratSanksi() // this.handleAutoSave() }; setAkhirSanksi = (akhirTMT) => { // this.setState({ keterangan: e.target.value }, this.setUploadSuratSanksi); this.state.akhirTMT = akhirTMT this.setUploadSuratSanksi() // this.handleAutoSave() }; setListSanksi = (ls) => { this.setState({ listSanksi: ls.target.value }, this.setUploadSuratSanksi); }; handleChangeListSanksi = (listSanksi) => { this.setState({ listSanksi }, this.setUploadSuratSanksi); }; handleTmtCheck = () => { // this.setState({ tmtCheck: !this.state.tmtCheck }, this.setUploadSuratSanksi); this.state.tidakPerluTMTCheck = !this.state.tidakPerluTMTCheck this.setUploadSuratSanksi() if (this.state.tidakPerluTMTCheck) { this.setState({ awalTMT: "", akhirTMT: "", tglAkhirKeberatan: "", terimaSuratSanksi: "" }) } // this.handleAutoSave() } setsanksi = () => { if (this.state.listSanksi?.find(z => z.value === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.value === "Sanksi Administratif Berat - lupa PTN atau pencabutan izin PTS")) { this.setState({ awalTMT: "", akhirTMT: "", tglAkhirKeberatan: "", terimaSuratSanksi: "" }) } } removeFile = file => () => { const files = this.state.files const newFiles = [...files] newFiles.splice(newFiles.indexOf(file), 1) this.setState({ files: newFiles, }, () => this.props.setUploadSuratSanksi(this.state)); } removeFileTandaTerimaSS = file => () => { const filesTandaTerimaSS = this.state.filesTandaTerimaSS const newFiles = [...filesTandaTerimaSS] newFiles.splice(newFiles.indexOf(file), 1) this.setState({ filesTandaTerimaSS: newFiles, }, () => this.props.setUploadSuratSanksi(this.state)); } render() { const { files, terimaSuratSanksi, tglAkhirKeberatan, filesTandaTerimaSS, tidakPerluTMTCheck } = this.state; const thumbs = files.map((file, index) => (

  {file.path} ); }}

{thumbs}

Ukuran setiap dokumen maksimal 15mb

{!this.state.tidakPerluTMTCheck && ( { this.setState({ terimaSuratSanksi }, this.setUploadSuratSanksi) }} closeOnSelect={true} isValidDate={(e) => { return e.isAfter(new Date(this.state.awalTMT)) }} // isValidDate={(e) => { // return e.isAfter(moment(new Date) && e.isBefore(moment(new Date))) // }} /> )}
{({ getRootProps, getInputProps, isDragActive }) => { return (
{this.state.filesTandaTerimaSS.length > 0 ? (
Klik untuk tambah file
) : (
Klik untuk upload dokumen
)}
); }}
{thumbsTandaTerimaSS}

Ukuran setiap dokumen maksimal 15mb

{!this.state.tidakPerluTMTCheck && !this.state.listSanksi?.find(z => z.value === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.value === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") && ( { this.setState({ tglAkhirKeberatan }, this.setUploadSuratSanksi) }} closeOnSelect={true} isValidDate={(e) => { return e.isAfter(new Date(this.state.terimaSuratSanksi)) }} /> )} ); } } export default UploadSurat;