Pārlūkot izejas kodu

update to production 18/05/2023

andi 2 gadi atpakaļ
vecāks
revīzija
237e835a88

+ 9 - 0
actions/sanksi.js

@@ -67,18 +67,27 @@ export const addRekomendasiDelegasi = async (token, id, data) => {
 		return false;
 		return false;
 	}
 	}
 };
 };
+
 export const editTmt = async (token, id, data) => {
 export const editTmt = async (token, id, data) => {
 	const res = await axios.put(`sanksi/tmt/update/${id}`, data, { headers: { Authorization: token } });
 	const res = await axios.put(`sanksi/tmt/update/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil perpanjangan sanksi, id: ${id}` });
 	await createLog(token, { aktivitas: `Berhasil perpanjangan sanksi, id: ${id}` });
 	return res.data;
 	return res.data;
 };
 };
+
 export const update = async (token, id, data) => {
 export const update = async (token, id, data) => {
 	const res = await axios.put(`sanksi/update/${id}`, data, { headers: { Authorization: token } });
 	const res = await axios.put(`sanksi/update/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil Merubah Sanksi, id: ${id}` });
 	await createLog(token, { aktivitas: `Berhasil Merubah Sanksi, id: ${id}` });
 	return res.data;
 	return res.data;
 };
 };
+
 export const updatePT = async (token, id, data) => {
 export const updatePT = async (token, id, data) => {
 	const res = await axiosAPI.put(`/sanksi/update-pt/${id}`, data, { headers: { Authorization: token } });
 	const res = await axiosAPI.put(`/sanksi/update-pt/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil mengubah status sanksi, id: ${id}` });
 	await createLog(token, { aktivitas: `Berhasil mengubah status sanksi, id: ${id}` });
 	return res.data;
 	return res.data;
 };
 };
+
+export const removePesertaPleno = async (token, data) => {
+	const res = await axios.delete(`sanksi/remove-peserta-pleno/`, { headers: { Authorization: token }, data });
+	await createLog(token, { aktivitas: `Berhasil hapus peserta pleno` });
+	return res.data;
+};

+ 5 - 2
components/Extras/calendar.view.js

@@ -127,6 +127,7 @@ class Calendar extends Component {
 		const { query, token } = this.props;
 		const { query, token } = this.props;
 		const { id } = query;
 		const { id } = query;
 		const { color, laporan } = this.state;
 		const { color, laporan } = this.state;
+		console.log(data.dari_tanggal)
 
 
 		await toast.promise(
 		await toast.promise(
 			updateJadwal(token, id, {
 			updateJadwal(token, id, {
@@ -314,9 +315,10 @@ class Calendar extends Component {
 																						locale="id"
 																						locale="id"
 																						inputProps={{ className: "form-control" }}
 																						inputProps={{ className: "form-control" }}
 																						value={field.value}
 																						value={field.value}
+																						dateFormat="DD MMMM YYYY"
 																						closeOnSelect={true}
 																						closeOnSelect={true}
 																						onChange={(e) => {
 																						onChange={(e) => {
-																							form.setFieldValue(field.name, e.format("DD MMMM YYYY"));
+																							form.setFieldValue(field.name, e);
 																						}}
 																						}}
 																					/>
 																					/>
 																				)}
 																				)}
@@ -332,11 +334,12 @@ class Calendar extends Component {
 																					<Datetime
 																					<Datetime
 																						timeFormat={false}
 																						timeFormat={false}
 																						locale="id"
 																						locale="id"
+																						dateFormat="DD MMMM YYYY"
 																						inputProps={{ className: "form-control" }}
 																						inputProps={{ className: "form-control" }}
 																						value={field.value}
 																						value={field.value}
 																						closeOnSelect={true}
 																						closeOnSelect={true}
 																						onChange={(e) => {
 																						onChange={(e) => {
-																							form.setFieldValue(field.name, e.format("DD MMMM YYYY"));
+																							form.setFieldValue(field.name, e);
 																						}}
 																						}}
 																					/>
 																					/>
 																				)}
 																				)}

+ 7 - 1
components/Pelaporan/TableLaporan.js

@@ -18,7 +18,13 @@ function TableLaporan({ listData, to, linkName, status = false, noBy = false })
                     </Link>
                     </Link>
                 </div>
                 </div>
                 {listData && (
                 {listData && (
-                    <Datatable options={{ responsive: false, ordering: true }}>
+                    <Datatable options={{
+                        responsive: false, ordering: true, 
+                        // paging: false,
+                        // searching:false,
+                        // ordering: false,
+                        // info: false,
+                    }}>
                         <table className="table w-100" data-order='[[3, "desc"]]'>
                         <table className="table w-100" data-order='[[3, "desc"]]'>
                             <thead>
                             <thead>
                                 <tr>
                                 <tr>

+ 512 - 0
components/Sanksi/BeritaAcara.js

@@ -0,0 +1,512 @@
+import React, { useRef, Component } from 'react';
+import { Row, Col, Button, Popover, PopoverHeader, PopoverBody, Card, CardBody, Modal, ModalBody, ModalFooter } from "reactstrap";
+import ComponentToPrint from "./SuratBA_A";
+import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
+import DatePicker from "react-datepicker";
+import "react-datepicker/dist/react-datepicker.css";
+import id from 'date-fns/locale/id';
+import CopyToClipboard from "react-copy-to-clipboard";
+import { getAutoSave } from "@/actions/autosave";
+import ContentEditable from 'react-contenteditable'
+import { removePesertaPleno } from '../../actions/sanksi';
+import { ToastContainer, toast } from "react-toastify";
+import Router from "next/router";
+
+
+
+class BeritaAcara extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            isEditTempat: false,
+            tempat: "",
+            isEditTanggal: false,
+            tanggal: "",
+            setTanggal: false,
+            isEditNamaPeserta: false,
+            isEditTemuanLain: false,
+            temuanLain: [],
+            memberatkan: [],
+            isEditKeberatan: false,
+            isEditMeringankan: false,
+            meringankan: [],
+            sanksi: "",
+            isEditSanksi: false,
+            copied: false,
+            setmeState: true,
+            descPelanggaran: [],
+            modalRemovePeserta: false,
+            selectedPeserta: ""
+        };
+    }
+
+    static getInitialProps = async ({ query }) => {
+        return { query };
+    };
+
+    componentDidMount = async () => {
+        const { query, token, dataPelanggaran } = this.props;
+        const { id } = query;
+        const getDataSave = await getAutoSave({ id, laporan: true });
+        const autosaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
+        this.setState(autosaveDataSuratBA)
+    };
+
+    componentDidUpdate = (prevProps) => {
+        const { dataPelanggaran } = this.state;
+        if (prevProps.dataPelanggaran != this.state.dataPelanggaran) {
+            const descPelanggaran = {}
+            dataPelanggaran?.forEach(e => {
+                descPelanggaran[e._id] = {
+                    simpulan: 'simpulan',
+                    rekomendasi: 'rekomendasi'
+                }
+            });
+        }
+    }
+
+    updateValueSimpulan = (evt, id) => {
+        const descPelanggaran = this.state.descPelanggaran
+        this.state.descPelanggaran = {
+            ...descPelanggaran, [id]: {
+                ...descPelanggaran[id], simpulan: evt.target.value
+            }
+        }
+        this.handleAutoSave()
+        // this.setState((prevState) => ({
+        //     ...prevState, descPelanggaran: {
+        //         ...prevState.descPelanggaran, [id]: {
+        //             ...prevState.descPelanggaran[id], simpulan: evt.target.value
+        //         }
+        //     }
+        // }), this.handleAutoSave)
+    }
+    updateValueRekomendasi = (evt, id) => {
+        const descPelanggaran = this.state.descPelanggaran
+        this.state.descPelanggaran = {
+            ...descPelanggaran, [id]: {
+                ...descPelanggaran[id], rekomendasi: evt.target.value
+            }
+        }
+        this.handleAutoSave()
+        // this.setState((prevState) => ({
+        //     ...prevState, descPelanggaran: {
+        //         ...prevState.descPelanggaran, [id]: {
+        //             ...prevState.descPelanggaran[id], rekomendasi: evt.target.value
+        //         }
+        //     }
+        // }), this.handleAutoSave)
+    }
+
+    setDataSuratBA = () => {
+        this.props.setDataSuratBA(this.state);
+    }
+    handleAutoSave = () => {
+        this.props.handleAutoSave()
+    }
+    isEditTempat = () => {
+        this.state.isEditTempat = !this.state.isEditTempat
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditTempat: !this.state.isEditTempat,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+    }
+    isEditTanggal = () => {
+        this.state.isEditTanggal = !this.state.isEditTanggal
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditTanggal: !this.state.isEditTanggal,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+
+    }
+
+    isEditTemuanLain = () => {
+        this.state.isEditTemuanLain = !this.state.isEditTemuanLain
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditTemuanLain: !this.state.isEditTemuanLain,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+    }
+
+    isEditKeberatan = () => {
+        this.state.isEditKeberatan = !this.state.isEditKeberatan
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditKeberatan: !this.state.isEditKeberatan,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+
+    }
+    isEditMeringankan = () => {
+        this.state.isEditMeringankan = !this.state.isEditMeringankan
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditMeringankan: !this.state.isEditMeringankan,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+    }
+    isEditSanksi = () => {
+        this.state.isEditSanksi = !this.state.isEditSanksi
+        this.setDataSuratBA()
+        this.handleAutoSave()
+        // this.setState({
+        //     isEditSanksi: !this.state.isEditSanksi,
+        // }, this.setDataSuratBA, this.handleAutoSave())
+    }
+    updateValueTemuanLain = () => {
+        const addTemuanLain = this.refs.inputTemuan.value
+        this.state.temuanLain.push(addTemuanLain)
+        this.setDataSuratBA(this.state)
+        // this.handleAutoSave()
+
+    }
+    updateValueMemringankan = () => {
+        const addMeringankan = this.refs.inputMeringankan.value
+        this.state.meringankan.push(addMeringankan)
+        this.setDataSuratBA(this.state)
+        // this.handleAutoSave()
+
+    }
+    updateValueMemberatkan = () => {
+        const addKeberatan = this.refs.inputMemberatkan.value
+        this.state.memberatkan.push(addKeberatan)
+        this.setDataSuratBA(this.state)
+        // this.handleAutoSave()
+    }
+
+
+    Copied = () => this.setState({
+        copied: !this.state.copied
+    }, this.handleAutoSave())
+
+    CloseCopied = () => {
+
+        setTimeout(() => {
+            // this.state.copied = !this.state.copied
+            this.setState({
+                copied: !this.state.copied
+            }, this.handleAutoSave());
+        }, 1000);
+    }
+
+    setModalRemovePeserta = (modalRemovePeserta) => {
+        this.setState({
+            modalRemovePeserta: !this.state.modalRemovePeserta
+        })
+    }
+
+    render() {
+        const { dataLaporan, dataSuratBA, dataPelanggaran } = this.props
+        const { descPelanggaran, tanggal, setTanggal } = this.state
+        return (
+            <div>
+                <Modal isOpen={this.state.modalRemovePeserta} >
+                    <ModalBody>Apakah anda ingin menghapus peserta pleno?</ModalBody>
+                    <ModalFooter>
+
+                        <Button color className="btn-login"
+                            onClick={async () => {
+                                const { query, token } = this.props;
+                                const { id: laporan_id } = query;
+                                let update = null;
+                                const toastid = toast.loading("Please wait...");
+                                const peserta_id = this.state.selectedPeserta;
+                                update = await removePesertaPleno(token, { laporan_id, peserta_id });
+                                if (!update) {
+                                    toast.update(toastid, { render: "Gagal hapus peserta pleno", type: "error", isLoading: false, autoClose: true, closeButton: true });
+                                } else {
+                                    toast.update(toastid, { render: "Berhasil hapus peserta pleno", type: "success", isLoading: false, autoClose: true, closeButton: true });
+                                    Router.push(`/app/sanksi/proses?id=${laporan_id}`);
+                                    this.setModalRemovePeserta()
+                                }
+                            }}
+                        >
+
+                            <span className="font-color-white">Ya</span>
+                        </Button>
+                        <Button color className="btn-v2" onClick={this.setModalRemovePeserta}>
+                            Tidak
+                        </Button>
+                    </ModalFooter>
+                </Modal>
+                <div className=' content-heading border-radius-login'>
+                    <span className="btn-radius">
+                        <ReactToPrint
+                            trigger={() => {
+                                return <span>
+                                    <Button color className="btn-labeled-4">
+                                        <h4 className="p-0 mt-2">Print dan Download</h4>
+                                    </Button>
+                                </span>
+                            }}
+                            content={() => this.componentRef}
+                        />
+                    </span>
+                </div>
+                <div style={{ display: "none" }}>
+                    <ComponentToPrint ref={el => (this.componentRef = el)} query={this.props.query} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} />
+                </div>
+                <div className='page py-5 m-0 '>
+                    <div className='BA-Header'>
+                        <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
+                        <h4 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h4>
+                        {dataLaporan.data && (<h4 className='text-uppercase' >{dataLaporan.data.pt.nama}</h4>)}
+                    </div>
+                    <div className='BA-body px-5 pt-3'>
+                        <p>
+                            Pada hari ini
+                            {dataSuratBA?.isEditTanggal &&
+                                <span style={{ textIndent:"0rem"}}>
+                                    <DatePicker
+                                        selected={tanggal ? new Date(tanggal) : tanggal}
+                                        onChange={(tanggal) => {
+                                            this.setState({ tanggal, setTanggal: true }, this.setDataSuratBA)
+                                        }}
+                                        dateFormat="dd/MM/yyyy"
+                                        placeholderText="Isi Tanggal"
+                                        locale={id}
+                                        className="form-control bg-white"
+                                    />
+                                    <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTanggal} />
+                                    <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={this.isEditTanggal}
+                                    />
+                                </span>
+                            }
+                            {setTanggal === true || this.state?.setTanggal === true ?
+                                <span onClick={this.isEditTanggal}> {moment(tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(tanggal || this.state?.tanggal).format("YYYY")},</span> :
+                                <span onClick={this.isEditTanggal}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
+                            }
+                            &nbsp;bertempat di
+                            {dataSuratBA?.isEditTempat &&
+                                <span>
+                                    <input type='text'
+                                        defaultValue={""}
+                                        ref="inputTempat"
+                                        onChange={() => {
+                                            this.setState({ tempat: this.refs.inputTempat.value }, this.setDataSuratBA)
+                                        }}
+                                    />
+                                    <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTempat} />
+                                    <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditTempat() }} />
+                                </span>
+                            }
+                            {this.state?.tempat ?
+                                <span onClick={this.isEditTempat} className='hhh'>
+                                    &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
+                                </span>
+                                :
+                                <span onClick={this.isEditTempat}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
+                            }
+
+                            ,
+                            telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, yang dihadiri oleh:
+
+                            <ol>
+                                {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) =>
+                                    <li>
+                                        {value.nama}
+                                        <button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
+                                            onClick={() => {
+                                                this.setState({
+                                                    selectedPeserta: value._id
+                                                })
+                                                this.setModalRemovePeserta()
+                                            }} />
+                                    </li>)}
+                            </ol>
+                        </p>
+                        <p>
+                            Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, disampaikan sebagai berikut:
+
+                            <ol className='mt-3'>
+                                <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
+                                    {setTanggal === true || this.state?.setTanggal === true ?
+                                        <span> &nbsp;{moment(tanggal || this.state?.tanggal).format("DD-MM-YYYY")}</span>
+                                        :
+                                        <span> &nbsp;....... &nbsp;</span>
+                                    }
+                                </li>
+                                <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
+                            </ol>
+                        </p>
+
+                        <div className='table-a my-4' >
+                            <table>
+                                <thead >
+                                    <tr>
+                                        <th rowspan="2">NO</th>
+                                        <th rowspan="2">NAMA DAN IZIN PRODI</th>
+                                        <th colspan="3">PELANGGARAN TERHADAP PERMENDIKBUD NO.7 TAHUN 2020</th>
+                                        <th rowspan="2">SIMPULAN</th>
+                                        <th rowspan="2">REKOMENDASI</th>
+                                    </tr>
+                                    <tr>
+                                        <th>PASAL</th>
+                                        <th>BUTIR PELANGGARAN</th>
+                                        <th>DESKRIPSI PELANGGARAN</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    {dataPelanggaran?.data?.map((e, i) => (
+                                        <tr key={e._id}>
+                                            <td>{++i}</td>
+                                            {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
+                                            <td>{e.pasal}</td>
+                                            <td>{e.butir_pelanggaran}</td>
+                                            <td>{e.pelanggaran}</td>
+                                            <td >
+                                                <ContentEditable
+                                                    html={descPelanggaran[e._id]?.simpulan || ""}
+                                                    disabled={false}
+                                                    onChange={(evt) => {
+                                                        this.updateValueSimpulan(evt, e._id), this.setDataSuratBA()
+
+                                                    }}
+                                                />
+                                            </td>
+                                            <td style={{ maxWidth: "80px" }}>
+                                                {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
+                                                {/* <ContentEditable
+                                                    html={`Sanksi Administratif berupa ${dataSuratBA?.sanksi||this.state.sanksi}` || ""}
+                                                    // html={descPelanggaran[e._id]?.rekomendasi || ""}
+
+                                                    disabled={false}
+                                                    // onChange={(evt) => {
+                                                    //     this.updateValueRekomendasi(evt, e._id), this.setDataSuratBA()
+                                                    // }}
+                                                /> */}
+                                            </td>
+                                        </tr>
+                                    ))}
+                                </tbody>
+                            </table>
+                        </div>
+                        <p>
+                            <ol start="3">
+                                <li>Temuan Lain:
+                                    {this.props.dataSuratBA?.isEditTemuanLain ?
+                                        <span>
+                                            <input style={{ height: "30px", width: "250px" }} type='textarea' defaultValue={""} ref="inputTemuan"
+                                            />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => {
+                                                this.updateValueTemuanLain(), this.isEditTemuanLain()
+                                            }} />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTemuanLain} />
+                                        </span>
+
+                                        : <Button onClick={this.isEditTemuanLain} className=" p-0 m-0" color="success">Input Data</Button>}
+                                    <ol type="a">
+                                        {dataSuratBA?.temuanLain?.map((value) => <li>{value}</li>) || this.state?.temuanLain?.map((value) => <li>{value}</li>)}
+                                    </ol>
+                                </li>
+                                <li>Hal-hal yang memberatkan, sebagai berikut:
+                                    {this.props.dataSuratBA?.isEditKeberatan ?
+                                        <span>
+                                            <input style={{ height: "30px", width: "250px" }} type='text' defaultValue={""} ref="inputMemberatkan" />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemberatkan(), this.isEditKeberatan() }} />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditKeberatan} />
+                                        </span>
+
+                                        : <Button onClick={this.isEditKeberatan} className=" p-0 m-0" color="success">Input Data</Button>}
+                                    <ol type="a">
+                                        {dataSuratBA?.memberatkan?.map((value) => <li>{value}</li>) || this.state?.memberatkan?.map((value) => <li>{value}</li>)}
+                                    </ol>
+                                </li>
+                                <li>hal-hal yang meringankan, sebagai berikut:
+                                    {this.props.dataSuratBA?.isEditMeringankan ?
+                                        <span>
+                                            <input type='text' defaultValue={""} ref="inputMeringankan" />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemringankan(), this.isEditMeringankan() }} />
+                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditMeringankan} />
+                                        </span>
+
+                                        : <Button onClick={this.isEditMeringankan} className=" p-0 m-0" color="success">Input Data</Button>}
+                                    <ol type="a">
+                                        {dataSuratBA?.meringankan?.map((value) => <li>{value}</li>) || this.state?.meringankan?.map((value) => <li>{value}</li>)}
+                                    </ol>
+                                </li>
+                                <li>
+                                    Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong>“Sanksi Administratif berupa
+                                        {dataSuratBA?.isEditSanksi &&
+                                            <span>
+                                                <input type='text'
+                                                    defaultValue=""
+                                                    ref="inputsanksi"
+                                                    onChange={() => {
+                                                        this.setState({ sanksi: this.refs.inputsanksi.value }, this.setDataSuratBA)
+                                                    }}
+                                                />
+                                                <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditSanksi} />
+                                                <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditSanksi() }} />
+                                            </span>
+                                        }
+                                        {dataSuratBA?.sanksi || this.state?.sanksi ?
+                                            <span onClick={this.isEditSanksi}>
+                                                &nbsp;{dataSuratBA?.sanksi || this.state?.sanksi}
+                                            </span>
+                                            :
+                                            <span onClick={this.isEditSanksi}>[Mohon Diisi]</span>
+                                        }
+                                    </strong>
+                                </li>
+                            </ol>
+                        </p>
+                        <p>
+                            Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
+                        </p>
+                        <CopyToClipboard
+                            text={`https://dev.sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
+                            options={{ asHtml: true }}
+                        >
+                            <div>
+                                <span className="btn-radius">
+                                    <Button color id="Popover1" className="ml-0 mt-2 mb-2 btn-v1-outline-purple" onClick={() => {
+                                        this.CloseCopied()
+                                    }} ><span><em className="fas fa-project-diagram float-left mt-1 mr-1" />&nbsp;Link Dokumen</span>
+
+                                        {/* <h5 className="p-0 mt-3 float-right"> <em className="fas fa-project-diagram float-left mt-1" /> &nbsp;Link Dokumen</h5> */}
+                                    </Button>
+                                </span>
+                                <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
+                                    <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
+                                </Popover>
+                            </div>
+
+                        </CopyToClipboard>
+
+                        <div  >
+                            <div className='header-ttd signature-border pt-1 pb-1'>
+                                <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
+                            </div>
+                            <div id="ttd">
+                                {dataLaporan
+                                    ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
+                                        <div className='ttd-div'>
+                                            <div className='sign-ttd'>
+                                                <img
+                                                    className='sign-ttd'
+                                                    src={value.ttd.path} />
+                                            </div>
+                                            <div className='sign-nama'>
+                                                <text>
+                                                    {value.nama}
+                                                </text>
+                                            </div>
+                                        </div>
+                                    )) : ""}
+                            </div>
+                        </div>
+                    </div>
+
+                </div>
+            </div >
+        );
+    }
+}
+
+// const mapStateToProps = (state) => ({ user: state.user, token: state.token });
+// export default connect(mapStateToProps)(BeritaAcara)
+export default BeritaAcara

+ 31 - 9
components/Sanksi/BeritaAcara_A.js

@@ -20,7 +20,7 @@ class BeritaAcara extends Component {
         super(props);
         super(props);
         this.state = {
         this.state = {
             isEditTempat: false,
             isEditTempat: false,
-            tempat: "[Mohon Diisi]",
+            tempat: <strong>[Mohon Diisi]</strong>,
             isEditTanggal: false,
             isEditTanggal: false,
             tanggal: "",
             tanggal: "",
             setTanggal: false,
             setTanggal: false,
@@ -244,7 +244,7 @@ class BeritaAcara extends Component {
                                 }
                                 }
                                 {setTanggal === true || this.state?.setTanggal === true ?
                                 {setTanggal === true || this.state?.setTanggal === true ?
                                     <span onClick={this.isEditTanggal}> {moment(tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(tanggal || this.state?.tanggal).format("YYYY")},</span> :
                                     <span onClick={this.isEditTanggal}> {moment(tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(tanggal || this.state?.tanggal).format("YYYY")},</span> :
-                                    <span onClick={this.isEditTanggal}> &nbsp;[Mohon Diisi] &nbsp;</span>
+                                    <span onClick={this.isEditTanggal}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
                                 }
                                 }
 
 
 
 
@@ -253,7 +253,7 @@ class BeritaAcara extends Component {
                                 {dataSuratBA?.isEditTempat &&
                                 {dataSuratBA?.isEditTempat &&
                                     <span>
                                     <span>
                                         <input type='text'
                                         <input type='text'
-                                            defaultValue={dataSuratBA?.tempat}
+                                            defaultValue={""}
                                             ref="inputTempat"
                                             ref="inputTempat"
                                             onChange={() => {
                                             onChange={() => {
                                                 this.setState({ tempat: this.refs.inputTempat.value }, this.setDataSuratBA)
                                                 this.setState({ tempat: this.refs.inputTempat.value }, this.setDataSuratBA)
@@ -263,12 +263,12 @@ class BeritaAcara extends Component {
                                         <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditTempat() }} />
                                         <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditTempat() }} />
                                     </span>
                                     </span>
                                 }
                                 }
-                                {dataSuratBA?.tempat || this.state?.tempat ?
+                                {this.state?.tempat ?
                                     <span onClick={this.isEditTempat}>
                                     <span onClick={this.isEditTempat}>
                                         &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
                                         &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
                                     </span>
                                     </span>
                                     :
                                     :
-                                    <span onClick={this.isEditTempat}>[Mohon Diisi]</span>
+                                    <span onClick={this.isEditTempat}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
                                 }
                                 }
 
 
                                 ,
                                 ,
@@ -415,7 +415,7 @@ class BeritaAcara extends Component {
                         </p>
                         </p>
                         <p>
                         <p>
                             <CopyToClipboard
                             <CopyToClipboard
-                                text={`https://sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
+                                text={`https://dev.sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
                                 options={{ asHtml: true }}
                                 options={{ asHtml: true }}
                             >
                             >
                                 <div>
                                 <div>
@@ -434,7 +434,7 @@ class BeritaAcara extends Component {
 
 
                             </CopyToClipboard>
                             </CopyToClipboard>
                         </p>
                         </p>
-                        <table className='demo'>
+                        {/* <table className='demo'>
                             <tbody>
                             <tbody>
 
 
                                 <tr>
                                 <tr>
@@ -459,7 +459,7 @@ class BeritaAcara extends Component {
                                             </td>
                                             </td>
                                         </tr>)) : ""}
                                         </tr>)) : ""}
                             </tbody>
                             </tbody>
-                        </table>
+                        </table> */}
                         {/* <div>
                         {/* <div>
                             <div id="ttd-header" className='text-center signature-border'>
                             <div id="ttd-header" className='text-center signature-border'>
                                 <span className='text-center'> PESERTA RAPAT PENYUSUNAN REKOMENDASI</span>
                                 <span className='text-center'> PESERTA RAPAT PENYUSUNAN REKOMENDASI</span>
@@ -477,10 +477,32 @@ class BeritaAcara extends Component {
                                     )) : ""}
                                     )) : ""}
                             </div>
                             </div>
                         </div> */}
                         </div> */}
+                        <div  >
+                            <div className='header-ttd signature-border pt-1 pb-1'>
+                                <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
+                            </div>
+                            <div id="ttd">
+                                {dataLaporan
+                                    ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
+                                        <div className='ttd-div'>
+                                            <div className='sign-ttd'>
+                                                <img
+                                                    className='sign-ttd'
+                                                    src={value.ttd.path} />
+                                            </div>
+                                            <div className='sign-nama'>
+                                                <text>
+                                                    {value.nama}
+                                                </text>
+                                            </div>
+                                        </div>
+                                    )) : ""}
+                            </div>
+                        </div>
 
 
 
 
                     </page>
                     </page>
-                </div>
+                </div >
             </div >
             </div >
 
 
         );
         );

+ 280 - 238
components/Sanksi/Ringkasan.js

@@ -1,203 +1,228 @@
 import Scrollable from "@/components/Common/Scrollable";
 import Scrollable from "@/components/Common/Scrollable";
-import { Card, Row, Col, Table, FormGroup, Label } from "reactstrap";
+import { Card, Row, Col, Table, FormGroup, Label, Button } from "reactstrap";
 import moment from "moment";
 import moment from "moment";
 import 'moment/locale/id'
 import 'moment/locale/id'
 moment.locale('id')
 moment.locale('id')
+import ComponentToPrint from "./SuratBA_A";
+import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
+import React, { Component } from "react";
+import { getAutoSave, inputAutoSave } from "@/actions/autosave";
 
 
-function Ringkasan({ dataLaporan, dataPelanggaran, dataUpload }) {
-	return (
-		<>
-			<Row>
-				<Col>
-					<p className="lead bb">Detail Laporan</p>
-					<form className="form-horizontal">
-						<FormGroup row>
-							<Col md="4">Nomor Laporan:</Col>
-							<Col md="8">
-								<strong>{dataLaporan.no_laporan}</strong>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Nama Perguruan Tinggi:</Col>
-							<Col md="8">
-								<strong>{dataLaporan.pt.nama}</strong>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Jenis Pelanggaran:</Col>
-							<Col md="8">
-								<Scrollable height="125px" className="list-group">
-									<ul>
-										{dataLaporan.pelanggaran.map((e) => (
-											<li>{e.pelanggaran}</li>
-										))}
-									</ul>
-								</Scrollable>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Keterangan Laporan:</Col>
-							<Col md="8">
-								<Scrollable height="100px" className="list-group">
-									<p>{dataLaporan.keterangan}</p>
-								</Scrollable>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Dibuat Pada:</Col>
-							<Col md="8">
-								<strong>{moment(dataLaporan.createAt).format("D MMMM YYYY")}</strong>
-							</Col>
-						</FormGroup>
-					</form>
-				</Col>
-			</Row>
-			<Row>
-				<Col>
-					<p className="lead bb">Penetapan Sanksi</p>
-					<Card className="card-default">
-						<Table bordered hover responsive>
-							<thead>
-								<tr>
-									<th>No</th>
-									<th>Jenis Pelanggaran</th>
-									<th>Sanksi</th>
-								</tr>
-							</thead>
-							<tbody>
 
 
-								{dataPelanggaran
-									? dataPelanggaran.map((e, i) => (
-										<tr key={e._id}>
-											<td>{++i}</td>
-											<td>
-												<div className="media align-items-center">
-													<div className="media-body d-flex">
-														<div>
-															<p>{e.pelanggaran}</p>
-															<p>TMT : {e.tmt_bulan} Bulan</p>
-															<p>Level Pelanggaran : {e.label_sanksi}</p>
+
+export class Ringkasan extends Component {
+	constructor(props) {
+		super(props);
+		this.state = {
+
+
+		};
+	}
+	// function Ringkasan({ dataLaporan, dataPelanggaran, dataUpload }) {
+	// 	return (
+		componentDidMount = async () => {
+			const { query, token } = this.props;
+			const { id } = query;
+			const getDataSave = await getAutoSave({ token, id, laporan: true });
+			const saveData = getDataSave.data?.penetapanSanksi;
+			this.setState(saveData)
+		}
+
+	render() {
+		const { dataLaporan, dataPelanggaran, dataUpload } = this.props
+		return (
+			<>
+				<Row>
+					<Col>
+						<p className="lead bb">Detail Laporan</p>
+						<form className="form-horizontal">
+							<FormGroup row>
+								<Col md="4">Nomor Laporan:</Col>
+								<Col md="8">
+									<strong>{dataLaporan.no_laporan}</strong>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Nama Perguruan Tinggi:</Col>
+								<Col md="8">
+									<strong>{dataLaporan.pt.nama}</strong>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Jenis Pelanggaran:</Col>
+								<Col md="8">
+									<Scrollable height="125px" className="list-group">
+										<ul>
+											{dataLaporan.pelanggaran.map((e) => (
+												<li>{e.pelanggaran}</li>
+											))}
+										</ul>
+									</Scrollable>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Keterangan Laporan:</Col>
+								<Col md="8">
+									<Scrollable height="100px" className="list-group">
+										<p>{dataLaporan.keterangan}</p>
+									</Scrollable>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Dibuat Pada:</Col>
+								<Col md="8">
+									<strong>{moment(dataLaporan.createAt).format("D MMMM YYYY")}</strong>
+								</Col>
+							</FormGroup>
+						</form>
+					</Col>
+				</Row>
+				<Row>
+					<Col>
+						<p className="lead bb">Penetapan Sanksi</p>
+						<Card className="card-default">
+							<Table bordered hover responsive>
+								<thead>
+									<tr>
+										<th>No</th>
+										<th>Jenis Pelanggaran</th>
+										<th>Sanksi</th>
+									</tr>
+								</thead>
+								<tbody>
+
+									{dataPelanggaran
+										? dataPelanggaran.map((e, i) => (
+											<tr key={e._id}>
+												<td>{++i}</td>
+												<td>
+													<div className="media align-items-center">
+														<div className="media-body d-flex">
+															<div>
+																<p>{e.pelanggaran}</p>
+																<p>TMT : {e.tmt_bulan} Bulan</p>
+																<p>Level Pelanggaran : {e.label_sanksi}</p>
+															</div>
 														</div>
 														</div>
 													</div>
 													</div>
-												</div>
-											</td>
-											<td>
-												<div className="media align-items-center">
-													<div className="media-body d-flex">
-														<div>
-															<p>{e.sanksi}</p>
-															<p>Keterangan : {e.keterangan_sanksi}</p>
+												</td>
+												<td>
+													<div className="media align-items-center">
+														<div className="media-body d-flex">
+															<div>
+																<p>{e.sanksi}</p>
+																<p>Keterangan : {e.keterangan_sanksi}</p>
+															</div>
 														</div>
 														</div>
 													</div>
 													</div>
-												</div>
-											</td>
-										</tr>
-									))
-									: ""}
-							</tbody>
-						</Table>
-					</Card>
-				</Col>
-			</Row>
-			<Row>
-				<Col>
-					<p className="lead bb">Nomor Surat Keputusan Sanksi</p>
-					<form className="form-horizontal">
-						<FormGroup row>
-							<Col md="4">Nomor Surat:</Col>
-							<Col md="8">
-								<strong>{dataUpload ? dataUpload.nomorSanksi : ""}</strong>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Keterangan:</Col>
-							<Col md="8">
-								<strong>{dataUpload ? dataUpload.keterangan : ""}</strong>
-							</Col>
-						</FormGroup>
-						{dataUpload && !dataUpload.tmtCheck ? (
+												</td>
+											</tr>
+										))
+										: ""}
+								</tbody>
+							</Table>
+						</Card>
+					</Col>
+				</Row>
+				<Row>
+					<Col>
+						<p className="lead bb">Nomor Surat Keputusan Sanksi</p>
+						<form className="form-horizontal">
 							<FormGroup row>
 							<FormGroup row>
-								<Col md="4">TMT Berlaku:</Col>
+								<Col md="4">Nomor Surat:</Col>
 								<Col md="8">
 								<Col md="8">
-									<strong>
-										{dataUpload && dataUpload.akhirsanksi ? (
-											<p>
-												{moment(dataUpload.awalsanksi).locale("id").format("DD MMMM YYYY")} - {moment(dataUpload.akhirsanksi).locale("id").format("DD MMMM YYYY")}
-											</p>
-										) : (
-											""
-										)}
-									</strong>
+									<strong>{dataUpload ? dataUpload.nomorSanksi : ""}</strong>
 								</Col>
 								</Col>
 							</FormGroup>
 							</FormGroup>
-						) : (
 							<FormGroup row>
 							<FormGroup row>
-								<Col md="4">Tanggal Penetapan Sanksi:</Col>
+								<Col md="4">Keterangan:</Col>
 								<Col md="8">
 								<Col md="8">
-									<strong>
-										{dataUpload && dataUpload.awalsanksi ? (
-											<p>
-												{moment(dataUpload.awalsanksi).locale("id").format("DD MMMM YYYY")}
-											</p>
-										) : (
-											""
-										)}
-									</strong>
+									<strong>{dataUpload ? dataUpload.keterangan : ""}</strong>
 								</Col>
 								</Col>
 							</FormGroup>
 							</FormGroup>
-						)}
-						{dataUpload && !dataUpload.tmtCheck ? (
+							{dataUpload && !dataUpload.tmtCheck ? (
+								<FormGroup row>
+									<Col md="4">TMT Berlaku:</Col>
+									<Col md="8">
+										<strong>
+											{dataUpload && dataUpload.akhirsanksi ? (
+												<p>
+													{moment(dataUpload.awalsanksi).locale("id").format("DD MMMM YYYY")} - {moment(dataUpload.akhirsanksi).locale("id").format("DD MMMM YYYY")}
+												</p>
+											) : (
+												""
+											)}
+										</strong>
+									</Col>
+								</FormGroup>
+							) : (
+								<FormGroup row>
+									<Col md="4">Tanggal Penetapan Sanksi:</Col>
+									<Col md="8">
+										<strong>
+											{dataUpload && dataUpload.awalsanksi ? (
+												<p>
+													{moment(dataUpload.awalsanksi).locale("id").format("DD MMMM YYYY")}
+												</p>
+											) : (
+												""
+											)}
+										</strong>
+									</Col>
+								</FormGroup>
+							)}
+							{dataUpload && !dataUpload.tmtCheck ? (
+								<FormGroup row>
+									<Col md="4">TMT :</Col>
+									<Col md="8">
+										<strong>
+											{dataUpload && dataUpload.akhirsanksi ? (
+												<p>
+													{moment(dataUpload.akhirsanksi).diff(dataUpload.awalsanksi, 'month')} bulan
+												</p>
+											) : (
+												""
+											)}
+										</strong>
+									</Col>
+								</FormGroup>
+							) : ("")}
 							<FormGroup row>
 							<FormGroup row>
-								<Col md="4">TMT :</Col>
+								<Col md="4">Sanksi:</Col>
 								<Col md="8">
 								<Col md="8">
-									<strong>
-										{dataUpload && dataUpload.akhirsanksi ? (
-											<p>
-												{moment(dataUpload.akhirsanksi).diff(dataUpload.awalsanksi, 'month')} bulan
-											</p>
-										) : (
-											""
-										)}
-									</strong>
+									<strong>{dataUpload && dataUpload.listSanksi?.length ? dataUpload.listSanksi.map((e, index) => <p>{index + 1 + " " + e.value}</p>) : ""}</strong>
 								</Col>
 								</Col>
 							</FormGroup>
 							</FormGroup>
-						) : ("")}
-						<FormGroup row>
-							<Col md="4">Sanksi:</Col>
-							<Col md="8">
-								<strong>{dataUpload && dataUpload.listSanksi?.length ? dataUpload.listSanksi.map((e, index) => <p>{index + 1 + " " + e.value}</p>) : ""}</strong>
-							</Col>
-						</FormGroup>
 
 
-						<FormGroup row>
-							<Col md="4">Surat Sanksi:</Col>
-							<Col md="8">
-								<Scrollable height="120px" className="list-group">
-									<table className="table table-bordered bg-transparent">
-										<tbody>
-											{dataUpload
-												? dataUpload.files.map((e) => (
-													<tr>
-														<td>
-															<em className="fa-lg far fa-file-code"></em>
-														</td>
-														<td>
-															<a className="text-muted" href={e.preview} download={e.name}>
-																{e.name}
-															</a>
-														</td>
-													</tr>
-												))
-												: ""}
-										</tbody>
-									</table>
-								</Scrollable>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Surat Berita Acara:</Col>
-							<Col md="8">
-								<Scrollable height="120px" className="list-group">
+							<FormGroup row>
+								<Col md="4">Surat Sanksi:</Col>
+								<Col md="8">
+									<Scrollable height="120px" className="list-group">
+										<table className="table table-bordered bg-transparent">
+											<tbody>
+												{dataUpload
+													? dataUpload.files.map((e) => (
+														<tr>
+															<td>
+																<em className="fa-lg far fa-file-code"></em>
+															</td>
+															<td>
+																<a className="text-muted" href={e.preview} download={e.name}>
+																	{e.name}
+																</a>
+															</td>
+														</tr>
+													))
+													: ""}
+											</tbody>
+										</table>
+									</Scrollable>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Surat Berita Acara:</Col>
+								<Col md="8">
+									{/* <Scrollable height="120px" className="list-group">
 									<table className="table table-bordered bg-transparent">
 									<table className="table table-bordered bg-transparent">
 										<tbody>
 										<tbody>
 											{dataUpload
 											{dataUpload
@@ -216,67 +241,84 @@ function Ringkasan({ dataLaporan, dataPelanggaran, dataUpload }) {
 												: ""}
 												: ""}
 										</tbody>
 										</tbody>
 									</table>
 									</table>
-								</Scrollable>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Tanggal Terima Surat Sanksi :</Col>
-							<Col md="8">
-								<strong>
-									{dataUpload && dataUpload.terimaSuratSanksi ? (
-										<p>
-											{moment(dataUpload.terimaSuratSanksi).locale("id").format("DD MMMM YYYY")}
-										</p>
-									) : (
-										""
-									)}
-								</strong>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Dokumen Tanda Terima Surat Sanksi:</Col>
-							<Col md="8">
-								<Scrollable height="120px" className="list-group">
-									<table className="table table-bordered bg-transparent">
-										<tbody>
-											{dataUpload
-												? dataUpload.filesTandaTerimaSS.map((e) => (
-													<tr>
-														<td>
-															<em className="fa-lg far fa-file-code"></em>
-														</td>
-														<td>
-															<a className="text-muted" href={e.preview} download={e.name}>
-																{e.name}
-															</a>
-														</td>
-													</tr>
-												))
-												: ""}
-										</tbody>
-									</table>
-								</Scrollable>
-							</Col>
-						</FormGroup>
-						<FormGroup row>
-							<Col md="4">Akhir Permohonan Keberatan Sanksi :</Col>
-							<Col md="8">
-								<strong>
-									{dataUpload && dataUpload.tglAkhirKeberatan ? (
-										<p>
-											{moment(dataUpload.tglAkhirKeberatan).locale("id").format("DD MMMM YYYY")}
-										</p>
-									) : (
-										""
-									)}
-								</strong>
-							</Col>
-						</FormGroup>
-					</form>
-				</Col>
-			</Row>
-		</>
-	);
+								</Scrollable> */}
+										<ReactToPrint
+											trigger={() => {
+												return <span>
+													<Button color className="btn-labeled-4 mt-0">
+														<h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
+													</Button>
+												</span>
+											}}
+											content={() => this.componentRef}
+										/>
+										<div style={{ display: "none" }}>
+											<ComponentToPrint ref={el => (this.componentRef = el)} query={this.props.query} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} />
+										</div>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Tanggal Terima Surat Sanksi :</Col>
+								<Col md="8">
+									<strong>
+										{dataUpload && dataUpload.terimaSuratSanksi ? (
+											<p>
+												{moment(dataUpload.terimaSuratSanksi).locale("id").format("DD MMMM YYYY")}
+											</p>
+										) : (
+											""
+										)}
+									</strong>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Dokumen Tanda Terima Surat Sanksi:</Col>
+								<Col md="8">
+									<Scrollable height="120px" className="list-group">
+										<table className="table table-bordered bg-transparent">
+											<tbody>
+												{dataUpload
+													? dataUpload.filesTandaTerimaSS.map((e) => (
+														<tr>
+															<td>
+																<em className="fa-lg far fa-file-code"></em>
+															</td>
+															<td>
+																<a className="text-muted" href={e.preview} download={e.name}>
+																	{e.name}
+																</a>
+															</td>
+														</tr>
+													))
+													: ""}
+											</tbody>
+										</table>
+									</Scrollable>
+								</Col>
+							</FormGroup>
+							<FormGroup row>
+								<Col md="4">Akhir Permohonan Keberatan Sanksi :</Col>
+								<Col md="8">
+									<strong>
+										{dataUpload && dataUpload.tglAkhirKeberatan ? (
+											<p>
+												{moment(dataUpload.tglAkhirKeberatan).locale("id").format("DD MMMM YYYY")}
+											</p>
+										) : (
+											""
+										)}
+									</strong>
+								</Col>
+							</FormGroup>
+						</form>
+					</Col>
+				</Row>
+			</>
+		)
+	}
 }
 }
 
 
+// 	);
+// }
+
 export default Ringkasan;
 export default Ringkasan;

+ 24 - 2
components/Sanksi/SuratBA.js

@@ -164,7 +164,7 @@ class ComponentToPrint extends React.Component {
                     <p className='BA-body'>
                     <p className='BA-body'>
                         Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
                         Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
                     </p>
                     </p>
-                    <table className='demo'>
+                    {/* <table className='demo'>
                         <tbody>
                         <tbody>
 
 
                             <tr>
                             <tr>
@@ -189,7 +189,29 @@ class ComponentToPrint extends React.Component {
                                         </td>
                                         </td>
                                     </tr>)) : ""}
                                     </tr>)) : ""}
                         </tbody>
                         </tbody>
-                    </table>
+                    </table> */}
+                    <div  >
+                        <div className='header-ttd signature-border pt-1 pb-1'>
+                            <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
+                        </div>
+                        <div id="ttd">
+                            {dataLaporan
+                                ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
+                                    <div className='ttd-div'>
+                                        <div className='sign-ttd'>
+                                            <img
+                                                className='sign-ttd'
+                                                src={value.ttd.path} />
+                                        </div>
+                                        <div className='sign-nama'>
+                                            <text>
+                                                {value.nama}
+                                            </text>
+                                        </div>
+                                    </div>
+                                )) : ""}
+                        </div>
+                    </div>
                 </div>
                 </div>
                 <div id="footer">
                 <div id="footer">
                     <span>*LAPORAN HASIL EVALUASI DAN PEMBAHASAN …………. – …bulan&tahun…</span>
                     <span>*LAPORAN HASIL EVALUASI DAN PEMBAHASAN …………. – …bulan&tahun…</span>

+ 202 - 0
components/Sanksi/SuratBA_A.js

@@ -0,0 +1,202 @@
+import React, { Component } from 'react';
+import SignatureCanvas from 'react-signature-canvas'
+import { getOneLaporan, updateLaporan } from "@/actions/pelaporan";
+import { Row, Col, Input, FormGroup, Label, Progress } from "reactstrap";
+import { connect } from "react-redux";
+import moment from "moment";
+import 'moment/locale/id'
+moment.locale('id')
+import { getAutoSave } from "@/actions/autosave";
+
+
+
+
+class ComponentToPrint extends React.Component {
+    formData = {}
+    constructor(props) {
+        super(props);
+        this.state = {
+            dataLaporan: {},
+
+        };
+    }
+
+    static getInitialProps = async ({ query }) => {
+        return { query };
+    };
+
+
+    componentDidMount = async () => {
+        const { query, token } = this.props;
+        const { id } = query;
+        const dataLaporan = await getOneLaporan(token, id);
+        const getDataSave = await getAutoSave({ id, laporan: true });
+        const autoSaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
+        const dataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran?.data;
+        this.setState({ dataLaporan });
+        this.setState(dataPelanggaran)
+        this.setState(autoSaveDataSuratBA)
+
+    };
+
+    render() {
+        const { dataLaporan, descPelanggaran } = this.state
+        const { dataPelanggaran, dataSuratBA } = this.props
+        return (
+            <page>
+                <div className='BA-Header'>
+                    <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
+                    <h3 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h3>
+                    {dataLaporan.data && (<h3 className='text-uppercase' >{dataLaporan.data.pt.nama}</h3>)}
+                </div>
+                <div className='BA-body pt-3'>
+                    <p>
+                        Pada hari ini
+                        {dataSuratBA?.setTanggal === true || this.state?.setTanggal === true ?
+                            <span > {moment(dataSuratBA?.tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("YYYY")},</span> :
+                            <span> &nbsp;- &nbsp;</span>
+                        }
+                        bertempat di
+                        {dataSuratBA?.tempat || this.state?.tempat ?
+                            <span>
+                                &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
+                            </span>
+                            :
+                            <span>-</span>
+                        }
+                        ,
+                        telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, yang dihadiri oleh:
+                        <ol>
+                            {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => <li>{value.nama}</li>)}
+                        </ol>
+                    </p>
+                    <p>
+                        Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, disampaikan sebagai berikut:
+
+                        <ol className='mt-3'>
+                            <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
+                                {dataSuratBA?.setTanggal === true || this.state?.setTanggal === true ?
+                                    <span> &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("DD-MM-YYYY")}</span>
+                                    :
+                                    <span> &nbsp;....... &nbsp;</span>
+                                }
+                            </li>
+                            <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
+                        </ol>
+                    </p>
+                    <div className='table-a my-4' >
+                        <table >
+                            <thead>
+                                <tr>
+                                    <th rowspan="2">NO</th>
+                                    <th rowspan="2">NAMA DAN IZIN PRODI</th>
+                                    <th colspan="3">PELANGGARAN TERHADAP PERMENDIKBUD NO.7 TAHUN 2020</th>
+                                    <th rowspan="2">SIMPULAN</th>
+                                    <th rowspan="2">REKOMENDASI</th>
+                                </tr>
+                                <tr>
+                                    <th>PASAL</th>
+                                    <th>BUTIR PELANGGARAN</th>
+                                    <th>DESKRIPSI PELANGGARAN</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                {dataPelanggaran?.data?.map((e, i) => (
+                                    <tr key={e._id}>
+                                        <td>{++i}</td>
+                                        {dataLaporan.data && (<td className='BA-header'>{dataLaporan.data.pt.nama}</td>)}
+                                        <td>{e.pasal}</td>
+                                        <td>{e.butir_pelanggaran}</td>
+                                        <td>{e.pelanggaran}</td>
+                                        {this.state.descPelanggaran ?
+                                            (
+                                                <td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
+                                                    || this.state.descPelanggaran[e?._id]?.simpulan
+                                                }</td>
+                                            ) :
+                                            (<td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
+                                                // || this.state.descPelanggaran[e?._id]?.simpulan
+                                            }</td>)
+                                        }
+                                        {/* <td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
+                                            || this.state.descPelanggaran[e?._id]?.simpulan
+                                        }</td> */}
+                                        <td style={{ minWidth: "215px" }}>{`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}</td>
+                                    </tr>
+
+                                ))}
+                            </tbody>
+                        </table>
+                    </div>
+                    <p>
+                        <ol start="3">
+                            <li>Temuan Lain:
+                                <ol type="a">
+                                    {dataSuratBA?.temuanLain || this.state?.temuanLain ?
+                                        <span>{dataSuratBA?.temuanLain || this.state?.temuanLain.map((value) => <li>{value}</li>)}</span>
+                                        : "Belum Diisi"}
+                                </ol>
+                            </li>
+                            <li>Hal-hal yang memberatkan, sebagai berikut:
+                                <ol type="a">
+                                    {dataSuratBA?.memberatkan || this.state?.memberatkan ?
+                                        <span>{dataSuratBA?.memberatkan || this.state?.memberatkan.map((value) => <li>{value}</li>)}</span>
+                                        : "Belum Diisi"}
+                                </ol>
+                            </li>
+                            <li>hal-hal yang meringankan, sebagai berikut:
+                                <ol type="a">
+                                    {dataSuratBA?.meringankan || this.state?.meringankan ?
+                                        <span>{dataSuratBA?.meringankan || this.state?.meringankan.map((value) => <li>{value}</li>)}</span>
+                                        : "Belum Diisi"}
+                                </ol>
+                            </li>
+                            <li>
+                                Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong contenteditable='true'>“Sanksi Administratif berupa
+                                    {dataSuratBA?.sanksi || this.state?.sanksi ?
+                                        <span>{dataSuratBA?.sanksi || this.state?.sanksi}</span>
+                                        : "Belum Diisi"}
+                                    ”.</strong>
+                            </li>
+                        </ol>
+                    </p>
+                    <p>
+                        Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
+                    </p>
+                    <div className='mt-5'>
+                        <div className='header-ttd signature-border pt-1 pb-1'>
+                            <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
+                        </div>
+                        <div id="ttd">
+                            {dataLaporan
+                                ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
+                                    <div className='ttd-div'>
+                                        <div className='sign-ttd'>
+                                            <img
+                                                className='sign-ttd'
+                                                src={value.ttd.path} />
+                                        </div>
+                                        <div className='sign-nama'>
+                                            <text>
+                                                {value.nama}
+                                            </text>
+                                        </div>
+                                    </div>
+                                )) : ""}
+                        </div>
+                    </div>
+
+                </div>
+
+
+
+                <div id="footer">
+                    <span>*LAPORAN HASIL EVALUASI DAN PEMBAHASAN …………. – …bulan&tahun…</span>
+                </div>
+            </page>
+
+
+        );
+    }
+}
+export default ComponentToPrint

+ 64 - 64
components/Sanksi/TablePenetapanSanksi.js

@@ -7,6 +7,7 @@ import { getOneLaporan, updateLaporan } from "@/actions/pelaporan";
 import Router from "next/router";
 import Router from "next/router";
 import { ToastContainer, toast } from "react-toastify";
 import { ToastContainer, toast } from "react-toastify";
 import { getAutoSave } from "@/actions/autosave";
 import { getAutoSave } from "@/actions/autosave";
+import Datatable from "@/components/Tables/Datatable";
 
 
 
 
 
 
@@ -17,7 +18,7 @@ export class TablePenetapanSanksi extends Component {
 	constructor(props) {
 	constructor(props) {
 		super(props);
 		super(props);
 		this.state = {
 		this.state = {
-			pelanggaran: null,
+			// pelanggaran: null,
 			checkedData: [],
 			checkedData: [],
 			labelSanksi: [],
 			labelSanksi: [],
 			btnDelegasi: false,
 			btnDelegasi: false,
@@ -33,6 +34,7 @@ export class TablePenetapanSanksi extends Component {
 		const autoSaveDataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran;
 		const autoSaveDataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran;
 		this.setState({ pelanggaran, checkedData: autoSaveDataPelanggaran ? autoSaveDataPelanggaran.data.map(e => e._id) : [] });
 		this.setState({ pelanggaran, checkedData: autoSaveDataPelanggaran ? autoSaveDataPelanggaran.data.map(e => e._id) : [] });
 		this.checkedData = this.state.checkedData
 		this.checkedData = this.state.checkedData
+		this.setState({ labelSanksi: autoSaveDataPelanggaran ? autoSaveDataPelanggaran?.data?.map(e => ({ value: e._id, labelSanksi: e.label_sanksi })) : [] })
 	};
 	};
 
 
 	onHandleChange = (evt) => {
 	onHandleChange = (evt) => {
@@ -60,76 +62,74 @@ export class TablePenetapanSanksi extends Component {
 		const { pelanggaran, labelSanksi, checkedData } = this.state;
 		const { pelanggaran, labelSanksi, checkedData } = this.state;
 
 
 		return (
 		return (
-			<Card className="card-default">
-				<Table bordered hover responsive>
-					<thead>
-						<tr>
-							<th>No</th>
-							<th>Jenis Pelanggaran</th>
-							<th>Sanksi</th>
-							<th></th>
-						</tr>
-					</thead>
-					<tbody>
-						{pelanggaran
-							? pelanggaran.data.map((jp, index) => (
-								<tr key={jp._id}>
-									<td>
-										<label>{index + 1}</label>
-									</td>
-									<td>
-										<div className="media align-items-center">
-											<div className="media-body d-flex">
-												<div>
-													<p>{jp.pelanggaran}</p>
-													{/* <p>TMT : {jp.tmt_bulan} Bulan</p> */}
-													<p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
+			<div className="card b ">
+				<div className="card-body card-over">
+					{pelanggaran && <Datatable options={{
+						responsive: false, ordering: true,
+						paging: false,
+						// searching:false,
+						ordering: false,
+						// info: false,
+					}}>
+						<table className="table w-100" >
+							<thead>
+								<tr>
+									<th>No</th>
+									<th>Jenis Pelanggaran</th>
+									<th>Sanksi</th>
+									<th></th>
+								</tr>
+							</thead>
+							<tbody>
+								{pelanggaran?.data?.map((jp, index) =>
+									<tr key={jp._id}>
+										<td>
+											<label>{index + 1}</label>
+										</td>
+										<td>
+											<div className="media align-items-center">
+												<div className="media-body d-flex">
+													<div>
+														<p>{jp.pelanggaran}</p>
+														{/* <p>TMT : {jp.tmt_bulan} Bulan</p> */}
+														<p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
+													</div>
 												</div>
 												</div>
 											</div>
 											</div>
-										</div>
-									</td>
-									<td>
-										<div className="media align-items-center">
-											<div className="media-body d-flex">
-												<div>
-													<p>{jp.sanksi}</p>
-													<p>Keterangan : {jp.keterangan_sanksi}</p>
+										</td>
+										<td>
+											<div className="media align-items-center">
+												<div className="media-body d-flex">
+													<div>
+														<p>{jp.sanksi}</p>
+														<p>Keterangan : {jp.keterangan_sanksi}</p>
+													</div>
 												</div>
 												</div>
 											</div>
 											</div>
-										</div>
-									</td>
-									<td>
-										<div className="checkbox c-checkbox">
-											<label>
-												<input type="checkbox" checked={checkedData.find(id => id === jp._id)} value={jp._id} onChange={(evt) => {
-													this.onHandleChange(evt)
-													this.setLabelSanksi(evt, jp.label_sanksi)
-													this.props.handleAutoSave()
-												}} />
-												<span className="fa fa-check"></span>
-											</label>
-										</div>
-									</td>
-								</tr>
-							))
-							: ""}
-					</tbody>
-				</Table>
-				<div className="float-right m-2 ">
-					{this.props.user?.role.id === 2020 ? (
-						labelSanksi.length && labelSanksi.filter((e) => e.labelSanksi === "Ringan" || e.labelSanksi === "Sedang").length === labelSanksi.length ? (
-							<Button className="btn-login float-right" color onClick={this.ondelegasi} >
-								<span className="font-color-white">
-									Delegasi ke LLDIKTI
-								</span>
-							</Button>
-						) : ("")
-					) : ("")
+										</td>
+										<td>
+											<div className="checkbox c-checkbox">
+												<label>
+													<input type="checkbox" checked={checkedData.find(id => id === jp._id)} value={jp._id} onChange={(evt) => {
+														this.onHandleChange(evt)
+														this.setLabelSanksi(evt, jp.label_sanksi)
+														this.props.handleAutoSave()
+													}} />
+													<span className="fa fa-check"></span>
+												</label>
+											</div>
+										</td>
+									</tr>
+								)
+								}
+							</tbody>
+						</table>
+
+					</Datatable>
 					}
 					}
 
 
 				</div>
 				</div>
-
-			</Card>
+			</div>
 		);
 		);
 	}
 	}
 }
 }

+ 22 - 73
components/Sanksi/UploadSurat.js

@@ -1,5 +1,5 @@
 import React, { Component } from "react";
 import React, { Component } from "react";
-import { Row, Col, Input, FormGroup, Label, Progress } from "reactstrap";
+import { Row, Col, Input, FormGroup, Label, Progress, Button } from "reactstrap";
 import Select from "react-select";
 import Select from "react-select";
 import DatePicker from "react-datepicker";
 import DatePicker from "react-datepicker";
 import "react-datepicker/dist/react-datepicker.css";
 import "react-datepicker/dist/react-datepicker.css";
@@ -9,6 +9,8 @@ import { addDays, addMonths } from 'date-fns';
 import id from 'date-fns/locale/id';
 import id from 'date-fns/locale/id';
 // registerLocale('id', id)
 // registerLocale('id', id)
 import { getAutoSave, inputAutoSave } from "@/actions/autosave";
 import { getAutoSave, inputAutoSave } from "@/actions/autosave";
+import ComponentToPrint from "./SuratBA_A";
+import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
 
 
 let Dropzone = null;
 let Dropzone = null;
 class DropzoneWrapper extends Component {
 class DropzoneWrapper extends Component {
@@ -82,7 +84,6 @@ export class UploadSurat extends Component {
 			awalsanksi: "",
 			awalsanksi: "",
 			akhirsanksi: "",
 			akhirsanksi: "",
 			tmtCheck: false,
 			tmtCheck: false,
-			filesBeritaAcara: [],
 			saveData: [],
 			saveData: [],
 			terimaSuratSanksi: "",
 			terimaSuratSanksi: "",
 			tglAkhirKeberatan: "",
 			tglAkhirKeberatan: "",
@@ -102,18 +103,6 @@ export class UploadSurat extends Component {
 		});
 		});
 		this.props.setUploadSuratSanksi(this.state);
 		this.props.setUploadSuratSanksi(this.state);
 	};
 	};
-
-	onDropBA = (filesBeritaAcara) => {
-		this.setState({
-			filesBeritaAcara: filesBeritaAcara.map((file) =>
-				Object.assign(file, {
-					preview: URL.createObjectURL(file),
-				})
-			),
-			stat: "Added " + filesBeritaAcara.length + " file(s)",
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
 	onDropTandaTerimaSS = (filesTandaTerimaSS) => {
 	onDropTandaTerimaSS = (filesTandaTerimaSS) => {
 		this.setState({
 		this.setState({
 			filesTandaTerimaSS: filesTandaTerimaSS.map((file) =>
 			filesTandaTerimaSS: filesTandaTerimaSS.map((file) =>
@@ -164,17 +153,6 @@ export class UploadSurat extends Component {
 		});
 		});
 		this.props.setUploadSuratSanksi(this.state);
 		this.props.setUploadSuratSanksi(this.state);
 	};
 	};
-	clearFilesBA = (e) => {
-		e.preventDefault();
-		e.stopPropagation();
-		this.setState({
-			stat: this.state.filesBeritaAcara.length ? this.state.filesBeritaAcara.length + " file(s) cleared." : "No files to clear.",
-		});
-		this.setState({
-			filesBeritaAcara: [],
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
 	clearFilesTerimaSanksi = (e) => {
 	clearFilesTerimaSanksi = (e) => {
 		e.preventDefault();
 		e.preventDefault();
 		e.stopPropagation();
 		e.stopPropagation();
@@ -217,13 +195,6 @@ export class UploadSurat extends Component {
 				files: newFiles,
 				files: newFiles,
 			});
 			});
 		}
 		}
-		const removeFileBA = file => () => {
-			const newFiles = [...filesBeritaAcara]
-			newFiles.splice(newFiles.indexOf(file), 1)
-			this.setState({
-				filesBeritaAcara: newFiles,
-			});
-		}
 		const removeFileTandaTerimaSS = file => () => {
 		const removeFileTandaTerimaSS = file => () => {
 			const newFiles = [...filesTandaTerimaSS]
 			const newFiles = [...filesTandaTerimaSS]
 			newFiles.splice(newFiles.indexOf(file), 1)
 			newFiles.splice(newFiles.indexOf(file), 1)
@@ -237,12 +208,6 @@ export class UploadSurat extends Component {
 				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFile(file)} />
 				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFile(file)} />
 			</p>
 			</p>
 		));
 		));
-		const thumbsBA = filesBeritaAcara.map((file, index) => (
-			<p>
-				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
-				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFileBA(file)} />
-			</p>
-		));
 		const thumbsTandaTerimaSS = filesTandaTerimaSS.map((file, index) => (
 		const thumbsTandaTerimaSS = filesTandaTerimaSS.map((file, index) => (
 			<p>
 			<p>
 				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
 				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
@@ -405,42 +370,23 @@ export class UploadSurat extends Component {
 				</FormGroup>
 				</FormGroup>
 				<FormGroup row>
 				<FormGroup row>
 					<label className="col-md-2 col-form-label">
 					<label className="col-md-2 col-form-label">
-						Dokumen Laporan Evaluasi dan Pembahasan<span>: &nbsp;</span><span className="text-danger">*</span>
+						Dokumen Laporan Evaluasi dan Pembahasan<span>: &nbsp;</span>
 					</label>
 					</label>
 					<div className="col-md-10">
 					<div className="col-md-10">
-						<DropzoneWrapper className="" onDrop={this.onDropBA}>
-							{({ getRootProps, getInputProps, isDragActive }) => {
-								return (
-									<div {...getRootProps()} className={"dropzone card" + (isDragActive ? "dropzone-drag-active" : "")}>
-										<input {...getInputProps()} />
-										<div className="dropzone-style-1">
-											<div className="center-ver-hor dropzone-previews flex">
-												{this.state.filesBeritaAcara.length > 0 ? (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk tambah file</h5>
-													</div>
-												) : (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk upload dokumen</h5>
-													</div>
-												)}
-											</div>
-										</div>
-										<div className="d-flex align-items-center">
-											<small className="ml-auto">
-												<button type="button" className="btn btn-link" onClick={this.clearFilesBA}>
-													Reset dokumen
-												</button>
-											</small>
-										</div>
-									</div>
-								);
-							}}
-						</DropzoneWrapper>
-						<div>
-							{thumbsBA}
+
+						<div style={{ display: "none" }}>
+							<ComponentToPrint ref={el => (this.componentRef = el)} query={this.props.query} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} />
 						</div>
 						</div>
-						<p className="mrgn-top-5 font-color-black">Ukuran setiap dokumen maksimal 15mb</p>
+						<ReactToPrint
+							trigger={() => {
+								return <span>
+									<Button color className="btn-labeled-4 mt-0">
+										<h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
+									</Button>
+								</span>
+							}}
+							content={() => this.componentRef}
+						/>
 					</div>
 					</div>
 				</FormGroup>
 				</FormGroup>
 				<FormGroup row className="mt-3">
 				<FormGroup row className="mt-3">
@@ -471,7 +417,7 @@ export class UploadSurat extends Component {
 										<input {...getInputProps()} />
 										<input {...getInputProps()} />
 										<div className="dropzone-style-1">
 										<div className="dropzone-style-1">
 											<div className="center-ver-hor dropzone-previews flex">
 											<div className="center-ver-hor dropzone-previews flex">
-												{this.state.filesBeritaAcara.length > 0 ? (
+												{this.state.filesTandaTerimaSS.length > 0 ? (
 													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
 													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
 														<h5 className="text-center dz-default dz-message">Klik untuk tambah file</h5>
 														<h5 className="text-center dz-default dz-message">Klik untuk tambah file</h5>
 													</div>
 													</div>
@@ -500,7 +446,10 @@ export class UploadSurat extends Component {
 					</div>
 					</div>
 				</FormGroup>
 				</FormGroup>
 				<FormGroup row className="mt-3">
 				<FormGroup row className="mt-3">
-					<label className="col-md-2 col-form-label">Akhir Permohonan Keberatan Sanksi</label>
+					<label className="col-md-2 col-form-label">Akhir Permohonan Keberatan Sanksi
+						<p>
+							Note : 21 hari kerja						</p>
+					</label>
 					<span className="col-sm-3 float-left">
 					<span className="col-sm-3 float-left">
 						<DatePicker
 						<DatePicker
 							selected={tglAkhirKeberatan}
 							selected={tglAkhirKeberatan}

+ 13 - 14
pages/app/sanksi/proses.js

@@ -16,7 +16,7 @@ import { getPelanggaran, getPelanggaranSanksi } from "@/actions/pelanggaran";
 import { connect } from "react-redux";
 import { connect } from "react-redux";
 import Loader from "@/components/Common/Loader";
 import Loader from "@/components/Common/Loader";
 import { ToastContainer, toast } from "react-toastify";
 import { ToastContainer, toast } from "react-toastify";
-import BeritaAcara from "@/components/Sanksi/BeritaAcara_A";
+import BeritaAcara from "@/components/Sanksi/BeritaAcara";
 import { getAutoSave, inputAutoSave } from "@/actions/autosave";
 import { getAutoSave, inputAutoSave } from "@/actions/autosave";
 
 
 
 
@@ -26,7 +26,7 @@ const stepNavitemStyle = {
 };
 };
 
 
 class ProsesSanksi extends Component {
 class ProsesSanksi extends Component {
-	dataUpload = {};
+	// dataUpload = {};
 	constructor(props) {
 	constructor(props) {
 		super(props);
 		super(props);
 		this.state = {
 		this.state = {
@@ -50,18 +50,19 @@ class ProsesSanksi extends Component {
 		const { data: listSanksi } = await getPelanggaranSanksi(token)
 		const { data: listSanksi } = await getPelanggaranSanksi(token)
 		const getDataSave = await getAutoSave({ id, laporan: true });
 		const getDataSave = await getAutoSave({ id, laporan: true });
 		const autoSaveDataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran;
 		const autoSaveDataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran;
-		this.setState({ pelaporan, listSanksi });
+		const activeStep = getDataSave.data?.PenetapanSanksi?.activeStep
+		this.setState({ pelaporan, listSanksi, activeStep: activeStep || "1" });
 		this.setState({ dataPelanggaran: autoSaveDataPelanggaran })
 		this.setState({ dataPelanggaran: autoSaveDataPelanggaran })
 
 
 	};
 	};
 
 
 
 
-	handleAutoSave = async (data) => {
+	handleAutoSave = async (data, activeStep) => {
 
 
 		const { query, token } = this.props;
 		const { query, token } = this.props;
 		const { id } = query;
 		const { id } = query;
 		const { dataSuratBA, dataUpload } = this.state
 		const { dataSuratBA, dataUpload } = this.state
-		await inputAutoSave({ data: { PenetapanSanksi: { dataSuratBA, dataUpload, dataPelanggaran: data } }, token, id, laporan: true })
+		await inputAutoSave({ data: { PenetapanSanksi: { dataSuratBA, dataUpload, dataPelanggaran: data, activeStep } }, token, id, laporan: true })
 	}
 	}
 	done = async (e) => {
 	done = async (e) => {
 		const toastid = toast.loading("Please wait...");
 		const toastid = toast.loading("Please wait...");
@@ -82,11 +83,6 @@ class ProsesSanksi extends Component {
 					formdata.append("dokumen", e);
 					formdata.append("dokumen", e);
 				});
 				});
 			}
 			}
-			if (this.state.dataUpload.filesBeritaAcara && this.state.dataUpload.filesBeritaAcara.length > 0) {
-				this.state.dataUpload.filesBeritaAcara.forEach((e) => {
-					formdata.append("berita_acara", e);
-				});
-			}
 			if (this.state.dataUpload.fileTandaTerimaSS && this.state.dataUpload.fileTandaTerimaSS.length > 0) {
 			if (this.state.dataUpload.fileTandaTerimaSS && this.state.dataUpload.fileTandaTerimaSS.length > 0) {
 				this.state.dataUpload.fileTandaTerimaSS.forEach((e) => {
 				this.state.dataUpload.fileTandaTerimaSS.forEach((e) => {
 					formdata.append("dokumen_terima_sanksi", e);
 					formdata.append("dokumen_terima_sanksi", e);
@@ -123,8 +119,11 @@ class ProsesSanksi extends Component {
 	toggleStep = (activeStep) => () => {
 	toggleStep = (activeStep) => () => {
 		if (this.state.activeStep !== activeStep) {
 		if (this.state.activeStep !== activeStep) {
 			this.setState({
 			this.setState({
-				activeStep,
+				activeStep: activeStep
 			});
 			});
+			this.handleAutoSave(this.state.dataPelanggaran, activeStep)// parameter 1 untuk data pelanggaran 1 untuk activestep
+			// this.state.activeStep = activeStep;
+
 		}
 		}
 	};
 	};
 
 
@@ -145,7 +144,7 @@ class ProsesSanksi extends Component {
 	};
 	};
 
 
 	render() {
 	render() {
-		const { dataUpload, dataPelanggaran, pelaporan, dataSuratBA, autoSaveDataPelanggaran } = this.state;
+		const { dataUpload, dataPelanggaran, pelaporan, dataSuratBA } = this.state
 		return (
 		return (
 			<ContentWrapper unwrap>
 			<ContentWrapper unwrap>
 				{/* <Header /> */}
 				{/* <Header /> */}
@@ -301,7 +300,7 @@ class ProsesSanksi extends Component {
 										<TabPane tabId="5">
 										<TabPane tabId="5">
 											<div className="pt-3 mb-3">
 											<div className="pt-3 mb-3">
 												<h2>Penetapan Sanksi</h2>
 												<h2>Penetapan Sanksi</h2>
-												{this.state.listSanksi && <UploadSurat setUploadSuratSanksi={this.setUploadSuratSanksi} listSanksi={this.state.listSanksi} dataPelanggaran={dataPelanggaran?.data} query={this.props.query} handleAutoSave={this.handleAutoSave} />}
+												{this.state.listSanksi && <UploadSurat setUploadSuratSanksi={this.setUploadSuratSanksi} listSanksi={this.state.listSanksi} query={this.props.query} handleAutoSave={this.handleAutoSave} dataPelanggaran={this.state.dataPelanggaran} dataSuratBA={dataSuratBA} />}
 											</div>
 											</div>
 											<hr />
 											<hr />
 											<div className="d-flex">
 											<div className="d-flex">
@@ -316,7 +315,7 @@ class ProsesSanksi extends Component {
 										<TabPane tabId="6">
 										<TabPane tabId="6">
 											<div className="pt-3 mb-3">
 											<div className="pt-3 mb-3">
 												<h2>Ringkasan</h2>
 												<h2>Ringkasan</h2>
-												{pelaporan.data ? <Ringkasan dataLaporan={pelaporan.data} autoSaveDataPelanggaran={autoSaveDataPelanggaran} dataPelanggaran={dataPelanggaran?.data} dataUpload={dataUpload} /> : <Loader />}
+												{pelaporan.data ? <Ringkasan dataSuratBA={dataSuratBA} query={this.props.query} dataLaporan={pelaporan.data} dataPelanggaran={dataPelanggaran?.data} dataUpload={dataUpload} /> : <Loader />}
 											</div>
 											</div>
 											<hr />
 											<hr />
 											<div className="d-flex">
 											<div className="d-flex">

+ 48 - 0
pages/pageDone.js

@@ -0,0 +1,48 @@
+import React, { Component } from 'react';
+import BasePage from "@/components/Layout/BasePage";
+import ContentWrapper from "@/components/Layout/ContentWrapper";
+import { Row, Col, Card, CardBody, Button, Modal, ModalBody, ModalFooter, FormGroup, Input, Navbar, NavItem, NavLink, NavbarBrand } from "reactstrap";
+
+import Link from 'next/dist/client/link';
+class PlenoSanksi extends React.Component {
+    render() {
+        return (
+            <div>
+                <Navbar className="navbar-color" expand="md" dark>
+                    <NavbarBrand href="/">
+                        <img className="width-133" src="/static/img/Logo-Sidali.png" alt="App Logo" />
+                    </NavbarBrand>
+                </Navbar>
+                <ContentWrapper>
+                    <div id="pageDone-TTD">
+                        <div className=' float-lg-right'>
+                            <span className=''>
+                                <img className=" main-logo-1" src="/static/img/ditbaga-logo.png" alt="gambar" />
+                                <img className="main-logo" src="/static/img/logo_kemdikbudristek.png" alt="gambar" />
+                            </span>
+                        </div>
+                        <div className='main text-center'>
+                            <img className="main" src="/static/img/success_ttd.png" alt="gambar" />
+
+                        </div>
+                        <div className='text-center'>
+                            <text className='text-1'>Tanda tangan Anda berhasil tersimpan!</text>
+                            <p className=' pt-2 text-center font-color-black '>Terima kasih, dengan demikian Anda telah memberikan persetujuan pleno untuk Universitas Satyagama</p>
+                        </div>
+                        <Link href="/app">
+                            <div className="btn-radius d-block text-center">
+                                <Button color className="btn-labeled-3">
+                                    <h4 className="p-0 mt-2">Kunjung Aplikasi SIDALI</h4>
+                                </Button>
+                            </div>
+                        </Link>
+                    </div>
+
+                </ContentWrapper>
+            </div>
+
+        );
+    }
+}
+PlenoSanksi.Layout = BasePage;
+export default PlenoSanksi;

+ 3 - 2
pages/pt/jawaban-keberatan/detail.js

@@ -105,7 +105,8 @@ class JawabanKeberatan extends Component {
 													<DetailSanksi data={sanksi.data} />
 													<DetailSanksi data={sanksi.data} />
 													<DetailJawaban data={sanksi.data.jawaban.keberatan} />
 													<DetailJawaban data={sanksi.data.jawaban.keberatan} />
 													{sanksi.data.jawaban?.keberatan?.status !== "Membatalkan Keputusan" &&
 													{sanksi.data.jawaban?.keberatan?.status !== "Membatalkan Keputusan" &&
-														(new Date(sanksi.data.batas_waktu.banding).getTime() > Date.now() ? (
+														(new Date(sanksi.data.jawaban?.keberatan?.tanggal_akhir_banding).getTime() + 86400000 > Date.now() ? (
+
 															<>
 															<>
 																<p style={{ fontSize: '1vw' }}>
 																<p style={{ fontSize: '1vw' }}>
 																	<strong>
 																	<strong>
@@ -113,7 +114,7 @@ class JawabanKeberatan extends Component {
 																	</strong>
 																	</strong>
 																</p>
 																</p>
 																<p style={{ fontSize: '0.9vw' }}>
 																<p style={{ fontSize: '0.9vw' }}>
-																	Pengajuan dilakukan paling lambat tanggal {moment(sanksi.data.batas_waktu.banding).locale("id").format("DD MMMM YYYY")}
+																	Pengajuan dilakukan paling lambat tanggal {moment(sanksi.data.jawaban?.keberatan?.tanggal_akhir_banding).locale("id").format("DD MMMM YYYY")}
 																</p>
 																</p>
 																<p className="lead">
 																<p className="lead">
 																	<span className="btn-radius">
 																	<span className="btn-radius">

+ 2 - 2
pages/pt/sanksi/detail.js

@@ -86,7 +86,7 @@ class Sanksi extends Component {
 										<Row>
 										<Row>
 											<Col lg={12}>
 											<Col lg={12}>
 												<DetailSanksi data={sanksi.data} />
 												<DetailSanksi data={sanksi.data} />
-												{new Date(sanksi.data.batas_waktu.keberatan).getTime() > Date.now() ? (
+												{new Date(sanksi.data.tanggal_akhir_keberatan).getTime() + 86400000 > Date.now() ? (
 													<>
 													<>
 														<p style={{ fontSize: '1vw' }}>
 														<p style={{ fontSize: '1vw' }}>
 															<strong>
 															<strong>
@@ -94,7 +94,7 @@ class Sanksi extends Component {
 															</strong>
 															</strong>
 														</p>
 														</p>
 														<p style={{ fontSize: '0.9vw' }}>
 														<p style={{ fontSize: '0.9vw' }}>
-															Pengajuan dilakukan paling lambat tanggal {moment(sanksi.data.batas_waktu.keberatan).locale("id").format("DD MMMM YYYY")}
+															Pengajuan dilakukan paling lambat tanggal {moment(sanksi.data.tanggal_akhir_keberatan).locale("id").format("DD MMMM YYYY")}
 														</p>
 														</p>
 														<p className="lead">
 														<p className="lead">
 															<Link href={{ pathname: "/pt/keberatan/detail", query: { id: sanksi.data._id } }}>
 															<Link href={{ pathname: "/pt/keberatan/detail", query: { id: sanksi.data._id } }}>

+ 98 - 90
pages/signature/pleno-sanksi/[id].js

@@ -4,7 +4,7 @@ import BasePage from "@/components/Layout/BasePage";
 import { getOneLaporanPublic } from '../../../actions/public';
 import { getOneLaporanPublic } from '../../../actions/public';
 import { getAutoSave } from "@/actions/autosave";
 import { getAutoSave } from "@/actions/autosave";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
-import { Row, Col, Card, CardBody, Button, Modal, ModalBody, ModalFooter, FormGroup, Input } from "reactstrap";
+import { Row, Col, Card, CardBody, Button, Modal, ModalBody, ModalFooter, FormGroup, Input, Navbar, NavItem, NavLink, NavbarBrand } from "reactstrap";
 import { Formik, Form, Field, ErrorMessage } from "formik";
 import { Formik, Form, Field, ErrorMessage } from "formik";
 import * as Yup from "yup";
 import * as Yup from "yup";
 import SignatureCanvas from 'react-signature-canvas'
 import SignatureCanvas from 'react-signature-canvas'
@@ -12,6 +12,10 @@ import { addPesertaPleno } from '../../../actions/public';
 import { toast } from "react-toastify";
 import { toast } from "react-toastify";
 import Router from "next/router";
 import Router from "next/router";
 import swal from "sweetalert2";
 import swal from "sweetalert2";
+import Link from 'next/dist/client/link';
+import moment from 'moment';
+
+
 
 
 
 
 
 
@@ -24,7 +28,8 @@ class PlenoSanksi extends Component {
             signature: "",
             signature: "",
             nama: "",
             nama: "",
             data: {},
             data: {},
-            changesign: false
+            changesign: false,
+            pageDone: false,
 
 
         }
         }
     }
     }
@@ -39,7 +44,7 @@ class PlenoSanksi extends Component {
         const dataLaporan = await getOneLaporanPublic(id);
         const dataLaporan = await getOneLaporanPublic(id);
         const getDataSave = await getAutoSave({ id, laporan: true });
         const getDataSave = await getAutoSave({ id, laporan: true });
         const dataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
         const dataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
-        const dataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran.data;
+        const dataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran?.data;
         this.setState({ dataLaporan, dataSuratBA, dataPelanggaran });
         this.setState({ dataLaporan, dataSuratBA, dataPelanggaran });
     };
     };
 
 
@@ -93,10 +98,8 @@ class PlenoSanksi extends Component {
                 title: "Berhasil Input Tanda Tangan",
                 title: "Berhasil Input Tanda Tangan",
                 icon: "success",
                 icon: "success",
                 confirmButtonColor: "#3e3a8e",
                 confirmButtonColor: "#3e3a8e",
-
             });
             });
-            Router.push("/app");
-
+            Router.push(`/signature/pleno-sanksi/done/${id}`);
         }
         }
     };
     };
 
 
@@ -105,13 +108,14 @@ class PlenoSanksi extends Component {
 
 
     render() {
     render() {
         const { dataPelanggaran, dataLaporan, dataSuratBA, signature, nama, changesign } = this.state
         const { dataPelanggaran, dataLaporan, dataSuratBA, signature, nama, changesign } = this.state
+
         return (
         return (
             <ContentWrapper unwrap>
             <ContentWrapper unwrap>
                 <Modal isOpen={this.state.modal} >
                 <Modal isOpen={this.state.modal} >
 
 
                     <ModalBody>
                     <ModalBody>
                         <FormGroup row>
                         <FormGroup row>
-                            <label className="col-md-2 col-form-label">Nama <span className=' text-danger'>*</span>:</label>
+                            <label className="col-md-2 col-form-label">Nama:<span className=' text-danger'>*</span></label>
                             <div className="col-md-10">
                             <div className="col-md-10">
                                 <Input type="text" value={this.state.nama} onChange={(e) => { this.updateValueNama(e) }} />
                                 <Input type="text" value={this.state.nama} onChange={(e) => { this.updateValueNama(e) }} />
                             </div>
                             </div>
@@ -132,27 +136,33 @@ class PlenoSanksi extends Component {
                             </Button>
                             </Button>
                         </ModalFooter>
                         </ModalFooter>
                         <ModalFooter>
                         <ModalFooter>
-                            <Button color disabled={signature === "" || signature === "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAAtJREFUGFdjYAACAAAFAAGq1chRAAAAAElFTkSuQmCC" || nama === "" || changesign === false} className="btn-labeled-notHover pt-2 pb-2 " onClick={this.onSubmit}>
-                                <span className="font-color-white">Kirim</span>
+                            <Button color className="bg-danger" onClick={this.toggleModal}>
+                                Batal
+                            </Button>
+                            <Button color disabled={signature === "" || signature === "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAAtJREFUGFdjYAACAAAFAAGq1chRAAAAAElFTkSuQmCC" || nama === "" || changesign === false} className=" color-3e3a8e" onClick={this.onSubmit}>
+                                <span className="font-color-white ">Kirim</span>
                             </Button>
                             </Button>
+
                         </ModalFooter>
                         </ModalFooter>
 
 
                     </ModalBody>
                     </ModalBody>
                 </Modal>
                 </Modal>
-                <div className='page'>
-                    <div className='BA-logo'>
+
+                <div className='page-sign'>
+                    <div className='BA-Header'>
                         <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
                         <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
+                        <h4 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h4>
+                        {dataLaporan.data && (<h4 className='text-uppercase' >{dataLaporan.data.pt.nama}</h4>)}
                     </div>
                     </div>
-                    <h3 className='BA-header'>LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h3>
-                    {dataLaporan.data && (<h3 className='BA-header'>{dataLaporan.data.pt.nama}</h3>)}
-                    <div className='body'>
-                        <p className='body'>
+                    <div className='BA-body px-5 pt-3'>
+                        <p>
                             Pada hari ini
                             Pada hari ini
                             {dataSuratBA?.setTanggal === true ?
                             {dataSuratBA?.setTanggal === true ?
                                 <span > {moment(dataSuratBA.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(dataSuratBA.tanggal).format("D")}&nbsp;bulan&nbsp;{moment(dataSuratBA.tanggal).locale("id").format("MMMM")} tahun &nbsp;{moment(dataSuratBA.tanggal).format("YYYY")},</span> :
                                 <span > {moment(dataSuratBA.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(dataSuratBA.tanggal).format("D")}&nbsp;bulan&nbsp;{moment(dataSuratBA.tanggal).locale("id").format("MMMM")} tahun &nbsp;{moment(dataSuratBA.tanggal).format("YYYY")},</span> :
                                 <span> &nbsp;......... &nbsp;</span>
                                 <span> &nbsp;......... &nbsp;</span>
                             }
                             }
                             &nbsp;bertempat di
                             &nbsp;bertempat di
+                            &nbsp;bertempat di
                             {dataSuratBA?.tempat === "[Mohon Diisi]" ?
                             {dataSuratBA?.tempat === "[Mohon Diisi]" ?
                                 <span>Belum Diisi Oleh Dikti</span>
                                 <span>Belum Diisi Oleh Dikti</span>
                                 :
                                 :
@@ -163,34 +173,26 @@ class PlenoSanksi extends Component {
                             ,
                             ,
                             telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, yang dihadiri oleh:
                             telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, yang dihadiri oleh:
 
 
-                        </p>
-                        <div className=''>
                             <ol>
                             <ol>
-                                {dataLaporan.data?.peserta_penetapan_sanksi ?
-                                    <span>
-                                        {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => <li>{value.nama}</li>)}
-                                    </span>
-                                    :
-                                    <span>Belum Ada Data</span>
-                                }
+                                {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => <li>{value.nama}</li>)}
+                            </ol>
+                        </p>
+                        <p>
+                            Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, disampaikan sebagai berikut:
 
 
+                            <ol className='mt-3'>
+                                <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
+                                    {dataSuratBA?.setTanggal === true ?
+                                        <span> &nbsp;{moment(dataSuratBA.tanggal).format("DD-MM-YYYY")}</span>
+                                        :
+                                        <span> &nbsp;....... &nbsp;</span>
+                                    }</li>
+                                <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
                             </ol>
                             </ol>
-                        </div>
-                    </div>
-                    <p>
-                        Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, disampaikan sebagai berikut:
-                    </p>
-                    <div className='body'>
-                        <ol>
-                            <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
-                                {dataSuratBA?.setTanggal === true ?
-                                    <span> &nbsp;{moment(dataSuratBA.tanggal).format("DD-MM-YYYY")}</span>
-                                    :
-                                    <span> &nbsp;....... &nbsp;</span>
-                                }</li>
-                            <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
-                            <table className='table-a'>
-                                <thead>
+                        </p>
+                        <div className='table-a my-4' >
+                            <table>
+                                <thead >
                                     <tr>
                                     <tr>
                                         <th rowspan="2">NO</th>
                                         <th rowspan="2">NO</th>
                                         <th rowspan="2">NAMA DAN IZIN PRODI</th>
                                         <th rowspan="2">NAMA DAN IZIN PRODI</th>
@@ -205,60 +207,66 @@ class PlenoSanksi extends Component {
                                     </tr>
                                     </tr>
                                 </thead>
                                 </thead>
                                 <tbody>
                                 <tbody>
-                                    {dataPelanggaran
-                                        ? dataPelanggaran.map((e, i) => (
-                                            <tr key={e._id}>
-                                                <td>{++i}</td>
-                                                {dataLaporan.data && (<td className='BA-header'>{dataLaporan.data.pt.nama}</td>)}
-                                                <td>{e.pasal}</td>
-                                                <td>{e.butir_pelanggaran}</td>
-                                                <td>{e.pelanggaran}</td>
-                                                <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
-                                                <td >{dataSuratBA?.descPelanggaran[e._id]?.rekomendasi || ""}</td>
-                                            </tr>
-
-                                        ))
-                                        : ""}
+                                    {dataPelanggaran?.map((e, i) => (
+                                        <tr key={e._id}>
+                                            <td>{++i}</td>
+                                            {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
+                                            <td>{e.pasal}</td>
+                                            <td>{e.butir_pelanggaran}</td>
+                                            <td>{e.pelanggaran}</td>
+                                            <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
+                                            <td style={{ maxWidth: "80px" }}>
+                                                {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
+                                            </td>
+                                        </tr>
+                                    ))}
                                 </tbody>
                                 </tbody>
                             </table>
                             </table>
-                            <li>Temuan Lain:
-                                <ol type="a">
-                                    {dataSuratBA?.temuanLain ?
-                                        <span>{dataSuratBA.temuanLain.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>Hal-hal yang memberatkan, sebagai berikut:
-                                <ol type="a">
-                                    {dataSuratBA?.memberatkan ?
-                                        <span>{dataSuratBA.memberatkan.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>hal-hal yang meringankan, sebagai berikut:
-                                <ol type="a">
-                                    {dataSuratBA?.meringankan ?
-                                        <span>{dataSuratBA.meringankan.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>
-                                Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong >“Sanksi Administratif berupa&nbsp;
-                                    {dataSuratBA?.sanksi === "[Mohon Diisi]" ?
-                                        "Belum Diisi Oleh Dikti"
-                                        : <span>{dataSuratBA?.sanksi}</span>}
-                                    ”.</strong>
-                            </li>
-                        </ol>
+                        </div>
+                        <p>
+                            <ol start="3">
+                                <li>Temuan Lain:
+
+                                    <ol type="a">
+                                        {dataSuratBA?.temuanLain ?
+                                            <span>{dataSuratBA.temuanLain.map((value) => <li>{value}</li>)}</span>
+                                            : "Belum Diisi"}
+                                    </ol>
+                                </li>
+                                <li>Hal-hal yang memberatkan, sebagai berikut:
+                                    <ol type="a">
+                                        {dataSuratBA?.memberatkan ?
+                                            <span>{dataSuratBA.memberatkan.map((value) => <li>{value}</li>)}</span>
+                                            : "Belum Diisi"}
+                                    </ol>
+                                </li>
+                                <li>hal-hal yang meringankan, sebagai berikut:
+                                    <ol type="a">
+                                        {dataSuratBA?.meringankan ?
+                                            <span>{dataSuratBA.meringankan.map((value) => <li>{value}</li>)}</span>
+                                            : "Belum Diisi"}
+                                    </ol>
+                                </li>
+                                <li>
+                                    Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong >“Sanksi Administratif berupa&nbsp;
+                                        {dataSuratBA?.sanksi === "[Mohon Diisi]" ?
+                                            "-"
+                                            : <span>{dataSuratBA?.sanksi}</span>}
+                                        ”.</strong>
+                                </li>
+                            </ol>
+                        </p>
+                        <p >
+                            Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
+                        </p>
+                        <p><strong>Note: Jika Anda menyetujui laporan hasil evaluasi dan pembahasan tersebut, maka klik tombol dibawah ini untuk melakukan tanda tangan sebagai bukti telah menyetujui.</strong> </p>
+                        <Button color="" className="btn-labeled-2" onClick={this.toggleModal}>
+                            <h4 className="mt-2 mb-md-2 text-center font-color-white pl-3 pr-3">Setuju</h4>
+                        </Button>
                     </div>
                     </div>
-                    <p className='body'>
-                        Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
-                    </p>
-                    <p><strong>Note: Jika Anda menyetujui laporan hasil evaluasi dan pembahasan tersebut, maka klik tombol dibawah ini untuk melakukan tanda tangan sebagai bukti telah menyetujui.</strong> </p>
-                    <Button color="" className="btn-labeled-notHover" onClick={this.toggleModal}>
-                        <h4 className="mt-2 mb-md-2 text-center font-color-white pl-3 pr-3">Setuju</h4>
-                    </Button>
                 </div>
                 </div>
+
+
             </ContentWrapper>
             </ContentWrapper>
         );
         );
     }
     }

+ 69 - 0
pages/signature/pleno-sanksi/done/[id].js

@@ -0,0 +1,69 @@
+import React, { Component } from 'react';
+import BasePage from "@/components/Layout/BasePage";
+import ContentWrapper from "@/components/Layout/ContentWrapper";
+import { Row, Col, Card, CardBody, Button, Modal, ModalBody, ModalFooter, FormGroup, Input, Navbar, NavItem, NavLink, NavbarBrand } from "reactstrap";
+import { getOneLaporanPublic } from '@/actions/public';
+
+import Link from 'next/dist/client/link';
+class PlenoSanksi extends Component {
+
+    constructor(props) {
+        super(props);
+        this.state = {
+            dataLaporan: {},
+
+
+        }
+    }
+    static getInitialProps = async ({ query }) => {
+        return { query };
+
+    };
+    componentDidMount = async () => {
+        const { query } = this.props;
+        const { id } = query;
+        const dataLaporan = await getOneLaporanPublic(id);
+        this.setState({ dataLaporan });
+    };
+    render() {
+        const { dataLaporan } = this.state
+        return (
+            <div>
+                <Navbar className="navbar-color" expand="md" dark>
+                    <NavbarBrand href="/">
+                        <img className="width-133" src="/static/img/Logo-Sidali.png" alt="App Logo" />
+                    </NavbarBrand>
+                </Navbar>
+                <ContentWrapper>
+                    <div id="pageDone-TTD">
+                        <div className=' float-lg-right'>
+                            <span className=''>
+                                <img className=" main-logo-1" src="/static/img/ditbaga-logo.png" alt="gambar" />
+                                <img className="main-logo" src="/static/img/logo_kemdikbudristek.png" alt="gambar" />
+                            </span>
+                        </div>
+                        <div className='main text-center'>
+                            <img className="main" src="/static/img/success_ttd.png" alt="gambar" />
+
+                        </div>
+                        <div className='text-center'>
+                            <text className='text-1'>Tanda tangan Anda berhasil tersimpan!</text>
+                            <p className=' pt-2 text-center font-color-black '>Terima kasih, dengan demikian Anda telah memberikan persetujuan terhadap Laporan Hasil Evaluasi dan Pembahasan.</p>
+                        </div>
+                        <Link href="/app">
+                            <div className="btn-radius d-block text-center">
+                                <Button color className="btn-labeled-3">
+                                    <h4 className="p-0 mt-2">Kunjungi Aplikasi SIDALI</h4>
+                                </Button>
+                            </div>
+                        </Link>
+                    </div>
+
+                </ContentWrapper>
+            </div>
+
+        );
+    }
+}
+PlenoSanksi.Layout = BasePage;
+export default PlenoSanksi;

BIN
public/static/img/ditbaga-logo.png


BIN
public/static/img/logo_kemdikbudristek.png


BIN
public/static/img/success_ttd.png


+ 177 - 4
styles/app/app/mycss.scss

@@ -1,7 +1,5 @@
-.huruf-besar{
-
-}
-
+@media screen {
+///////// Home
 #video-css video{
 #video-css video{
     width: 450px;
     width: 450px;
 
 
@@ -31,3 +29,178 @@
         margin-top: -15px; 
         margin-top: -15px; 
     }
     }
 }
 }
+
+#pageDone-TTD{
+   .main{
+    width: 500px;
+    margin-left: auto;
+    margin-right: auto;
+    padding-top: 20px;
+    margin-bottom: -13px;
+   }
+   .main-logo{
+    width: 250px; 
+    margin-right: 5px;
+    float: right;
+   }
+   .main-logo-1{
+    width: 50px;
+    float: right;
+   }
+   .text-1{
+    font-family:Verdana, Geneva, Tahoma, sans-serif;
+    font-style: normal;
+    font-weight: 550;
+    font-size: 15px;
+   }
+}
+
+///////////////////////////////////////////<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>
+
+
+  //////////////////////////////////Table Pelanggaran
+  
+  .table-a th {
+    border: 1px solid #C0C0C0;
+    padding: 5px;
+    background: #F0F0F0;
+    text-align: center;
+    font-size: small;
+  }
+  
+  .table-a td {
+    border: 1px solid #C0C0C0;
+    padding: 5px;
+    word-wrap: break-word;
+    // max-width: 130px;
+    font-size: 0.8rem;
+    @media only screen and (min-width: 1546px) {
+      word-wrap: break-word;
+    }
+    @media only screen and ( max-width:1546px) {
+      max-width: 130px;
+     }
+
+  }
+  .table-a{
+    border-collapse: collapse;
+    table-layout: fixed;
+    overflow: auto;
+    margin: -20px ;
+
+  }
+
+
+////////////////////////////////////////table signature in berita acara
+#ttd{
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+    display: flex;
+    flex-wrap: wrap;
+   
+
+    .ttd-div{
+        width: 50%;
+        border: 1px solid #C0C0C0;
+    }
+    .sign-ttd{
+        width:90% ;
+        height: 150px;
+        margin-right: auto;
+        margin-left: auto;
+    }
+    .sign-nama{
+                background-color: rgb(206, 206, 206);
+                text-align: center;
+                padding: 2px;
+                word-wrap: break-word;
+                color: black;
+              }
+  }
+  .header-ttd{
+    background-color: #C0C0C0; 
+    text-align: center;
+    color: black;
+    margin-left: auto;
+    margin-right: auto;
+}
+//////////////////////////////////////>>>>>>>BeritaAcara
+.page {
+  // width: 21cm;
+  // min-height: 29.7cm;
+  // padding-top: 2cm;
+  // padding-bottom: 2cm;
+  // margin: 1cm auto;
+  // display: flex;
+  border: 1px #D3D3D3 solid;
+  border-radius: 5px;
+  background: white;
+  box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+.BA-Header {
+  margin-left: auto;
+  margin-right: auto;
+  text-align: center;
+  font-family: "Times New Roman", Times, serif;
+}
+.BA-logo{
+  width: 30%;
+  margin-bottom: 10px;
+}
+.BA-body p{
+  font-family: "Times New Roman", Times, serif;
+  font-size: 0.8rem;
+  text-indent: 2rem;
+}
+.BA-body ol{
+  margin-top: 1px;
+  text-indent: 0px;
+}
+//////////////////////////////////////////////////////siganature public
+.signature-style{
+  border: 1px solid#c9c8c8;
+width: 380px;
+height: 190px;
+margin-left: auto;
+margin-right: auto;
+border-radius: 4px;
+}
+
+.page-sign {
+  width: 21cm;
+  min-height: 29.7cm;
+  padding-top: 2cm;
+  padding-bottom: 2cm;
+  margin: 1cm auto;
+  // display: flex;
+  border: 1px #D3D3D3 solid;
+  border-radius: 5px;
+  background: white;
+  box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+/////////////////////////////////////// style Component 
+.btn-v1-outline-purple {
+  color: #3e3a8e;
+  border-color: #3e3a8e; }
+  .btn-v1-outline-purple:hover {
+    color: #fff;
+    background-color: #7266ba;
+    border-color: #7266ba; }
+  .btn-va-outline-purple:focus, .btn-v1-outline-purple.focus {
+    box-shadow: 0 0 0 0.2rem rgba(114, 102, 186, 0.5); }
+  .btn-v1-outline-purple.disabled, .btn-v1-outline-purple:disabled {
+    color: #7266ba;
+    background-color: transparent; }
+  .btn-v1-outline-purple:not(:disabled):not(.disabled):active, .btn-v1-outline-purple:not(:disabled):not(.disabled).active,
+  .show > .btn-v1-outline-purple.dropdown-toggle {
+    color: #fff;
+    background-color: #7266ba;
+    border-color: #7266ba; }
+    .btn-v1-outline-purple:not(:disabled):not(.disabled):active:focus, .btn-v1-outline-purple:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-v1-outline-purple.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0.2rem rgba(114, 102, 186, 0.5); }
+
+    }

+ 91 - 182
styles/bootstrap/_print.scss

@@ -88,6 +88,7 @@
     // don't use `!important` on `size` as it breaks in Chrome.
     // don't use `!important` on `size` as it breaks in Chrome.
     @page {
     @page {
       size: $print-page-size;
       size: $print-page-size;
+      margin: 11mm 10mm 17mm 17mm;
     }
     }
     body {
     body {
       min-width: $print-body-min-width !important;
       min-width: $print-body-min-width !important;
@@ -136,193 +137,101 @@
       border-color: $table-border-color;
       border-color: $table-border-color;
     }
     }
 
 
-    // Bootstrap specific changes end
-  }
-}
-
-
-
-.BA-logo {
-  width: 250px;
-  margin-left: auto;
-  margin-right: auto;
-  padding-bottom: 10px;
-}
-
-.BA-header {
-  font-family: "Times New Roman", Times, serif;
-  text-align: center;
-  padding-bottom: 20px;
-}
-
-.BA-div {
-  padding-top: 100px;
-}
-
-.BA-p p {
-  padding: 10px;
-}
-
-.BA-body {
-  font-family: "Times New Roman", Times, serif;
-  padding-top: 0px;
-  padding-left: 50px;
-  padding-right: 50px;
-}
-
-.demo {
-  border: 1px solid #C0C0C0;
-  border-collapse: collapse;
-  padding: 5px;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.demo .thdemo {
-  border: 1px solid #C0C0C0;
-  padding: 5px;
-  background: #F0F0F0;
-  text-align: center;
-}
-.demo .trdemo{
-  border: 1px solid #C0C0C0;
-  padding: 5px;
-}
-
-.demo .tddemo  {
-  border: 1px solid #C0C0C0;
-  padding: 5px;
-  height: 100px;
-  min-width: 200px;
-}
-
-.table-a {
-  border: 1px solid #C0C0C0;
-  border-collapse: collapse;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  padding: 5px;
-  margin-left: -128px auto;
-  margin-right: auto;
-  table-layout: fixed;
-}
-
-.table-a th {
-  border: 1px solid #C0C0C0;
-  padding: 5px;
-  background: #F0F0F0;
-  text-align: center;
-}
-
-.table-a td {
-  border: 1px solid #C0C0C0;
-  padding: 5px;
-  word-wrap: break-word;
-  max-width: 150px;
-}
-
-#footer {
-  position: fixed;
-  width: 100%;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  text-align: center;
-  color: #979595;
-  padding-bottom: 30px;
-}
-
-////////////////////////////-----SuratBA_A
 
 
-body {
-  margin: 0;
-  padding: 0;
-  background-color: #FAFAFA;
-  font: 12pt "Tahoma";
-}
-
-* {
-  box-sizing: border-box;
-  -moz-box-sizing: border-box;
-}
-
-.page {
-  width: 21cm;
-  min-height: 29.7cm;
-  padding: 2cm;
-  margin: 1cm auto;
-  border: 1px #D3D3D3 solid;
-  border-radius: 5px;
-  background: white;
-  box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
-}
-
-.subpage {
-  padding: 1cm;
-  border: 5px red solid;
-  height: 256mm;
-  outline: 2cm #FFEAEA solid;
-}
-
-@page {
-  size: A4;
-  margin: 0;
-}
-
-@media print {
+    #footer {
+      position: fixed;
+      width: 100%;
+      bottom: 0;
+      left: 0;
+      right: 0;
+      text-align: center;
+      color: #979595;
+      padding-bottom: -15px;
+    }
+    .BA-Header {
+      margin-left: auto;
+      margin-right: auto;
+      text-align: center;
+      font-family: "Times New Roman", Times, serif;
+    }
+    .BA-logo{
+      width: 30%;
+      margin-bottom: 10px;
+    }
+    .BA-body p{
+      font-family: "Times New Roman", Times, serif;
+      font-size: 15px;
+      text-indent: 15px;
+      page-break-after: avoid;
+    }
 
 
-  body,
-  page[size="A4"] {
-    // margin: 0;
-    box-shadow: 0;
-    margin-bottom: 50px;
+    //////////////////////////////////////////////////
+    .table-a th {
+      border: 1px solid #C0C0C0;
+      padding: 5px;
+      background: #F0F0F0;
+      text-align: center;
+      font-size: small;
+    }
+    
+    .table-a td {
+      border: 1px solid #C0C0C0;
+      padding: 5px;
+      word-wrap: break-word;
+      max-width: 215px;
+      font-size: 0.8rem;
+  
+    }
+    .table-a{
+      border-collapse: collapse;
+      table-layout: fixed;
+      margin-left: auto;
+      margin-right: auto;
+  
+    }
+    .BA-body ol{
+      margin-top: 1px;
+      text-indent: 0px;
+    }
+    //////////////////////////////////////////////////
+    #ttd{
+      width: 600px;
+      margin-left: auto;
+      margin-right: auto;
+      display: flex;
+      flex-wrap: wrap;
+     
+  
+      .ttd-div{
+          width: 50%;
+          border: 1px solid #C0C0C0;
+      }
+      .sign-ttd{
+          width:100% ;
+          height: 150px;
+          margin-right: auto;
+          margin-left: auto;
+      }
+      .sign-nama{
+                  background-color: rgb(206, 206, 206);
+                  text-align: center;
+                  padding: 2px;
+                  word-wrap: break-word;
+                  color: black;
+                }
+    }
+    .header-ttd{
+      background-color: #C0C0C0; 
+      text-align: center;
+      color: black;
+      margin-left: auto;
+      margin-right: auto;
+      max-width: 600px;
   }
   }
+  }
+}
 
 
 
 
 
 
-}
-.signature-style{
-  border: 1px solid#c9c8c8;
-width: 380px;
-height: 200px;
-margin-left: auto;
-margin-right: auto;
-border-radius: 4px;
-}
-  
-
 
 
-  /////////////////////Coba pake flex wrap
-// #ttd {
-//   width: 410px;
-//   display: flex;
-//   flex-wrap: wrap;
-//   margin-left: auto;
-//   margin-right: auto;
-//     text-align: center;
-// }
-// #ttd-header {
-//   width: 410px;
-//   margin-left: auto;
-//   margin-right: auto;
-//   text-align: center;
-// }
-// .ttd-div{
-//   width: 205px;
-//   // height: 100px;
-// }
-// .sign-nama{
-//   background-color: rgb(206, 206, 206);
-//   text-align: center;
-//   // width: 215px;
-//   border: 1px solid#d9d6d6;
-//   padding: 2px;
-  
-// }
-// .sign-ttd{
-//   width: 205px;
-//   height: 80px;
-//   border: 1px solid#d9d6d6;
-//   padding: 5px;
 
 
-// }