|
|
@@ -1,191 +1,46 @@
|
|
|
import React, { Component } from "react";
|
|
|
-import Router from "next/router";
|
|
|
import ContentWrapper from "@/components/Layout/ContentWrapper";
|
|
|
-import Datetime from "react-datetime";
|
|
|
-import moment from "moment";
|
|
|
-import Scrollable from "@/components/Common/Scrollable";
|
|
|
-import Datatable from "@/components/Tables/Datatable";
|
|
|
+import { getSanksi } from "@/actions/sanksi";
|
|
|
+import Header from "@/components/Main/Header";
|
|
|
+import DetailPT from "@/components/Main/DetailPT";
|
|
|
+import DetailSanksi from "@/components/Main/DetailSanksi";
|
|
|
+import DetailJawaban from "@/components/PT/JawabanBanding/DetailJawaban";
|
|
|
import Link from "next/link";
|
|
|
-import {
|
|
|
- Row,
|
|
|
- Col,
|
|
|
- Card,
|
|
|
- CardHeader,
|
|
|
- CardBody,
|
|
|
- CardTitle,
|
|
|
- FormGroup,
|
|
|
- FormFeedback,
|
|
|
- FormText,
|
|
|
- Label,
|
|
|
- InputGroup,
|
|
|
- InputGroupAddon,
|
|
|
- InputGroupButtonDropdown,
|
|
|
- InputGroupText,
|
|
|
- Input,
|
|
|
- Button,
|
|
|
- DropdownToggle,
|
|
|
- DropdownMenu,
|
|
|
- CustomInput,
|
|
|
- DropdownItem,
|
|
|
- Modal,
|
|
|
- ModalHeader,
|
|
|
- ModalBody,
|
|
|
- ModalFooter,
|
|
|
-} from "reactstrap";
|
|
|
+import { Row, Col, Card, CardBody, Button } from "reactstrap";
|
|
|
|
|
|
-let Dropzone = null;
|
|
|
-class DropzoneWrapper extends Component {
|
|
|
- state = {
|
|
|
- isClient: false,
|
|
|
- };
|
|
|
- componentDidMount = () => {
|
|
|
- Dropzone = require("react-dropzone").default;
|
|
|
- this.setState({ isClient: true });
|
|
|
- };
|
|
|
- render() {
|
|
|
- return Dropzone ? <Dropzone {...this.props}>{this.props.children}</Dropzone> : null;
|
|
|
+class JawabanBanding extends Component {
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ this.state = {
|
|
|
+ modal: false,
|
|
|
+ };
|
|
|
}
|
|
|
-}
|
|
|
-
|
|
|
-const styleHeaderText = {
|
|
|
- color: "brown",
|
|
|
-};
|
|
|
-
|
|
|
-const selectInstanceId = 1;
|
|
|
-
|
|
|
-class FormStandard extends Component {
|
|
|
- state = {
|
|
|
- dropdownOpen: false,
|
|
|
- modal: false,
|
|
|
- modal1: false,
|
|
|
- splitButtonOpen: false,
|
|
|
- keteranganLaporan: "",
|
|
|
- tanggal: moment().format("D MMMM YYYY"),
|
|
|
- files: [],
|
|
|
- };
|
|
|
|
|
|
- static getInitialProps({ query }) {
|
|
|
- return { query };
|
|
|
+ static async getInitialProps({ query }) {
|
|
|
+ const { noSanksi } = query;
|
|
|
+ const sanksi = await getSanksi({ noSanksi, ptId: "0BCE4DB7-B207-445D-8D03-0C54B7688252" });
|
|
|
+ return { query, sanksi };
|
|
|
}
|
|
|
|
|
|
- setKeteranganPelaporan = (e) => {
|
|
|
- this.setState({ keteranganLaporan: e.target.value });
|
|
|
- };
|
|
|
-
|
|
|
- setTanggal = (moment) => {
|
|
|
- this.setState({ tanggal: moment.format("D MMMM YYYY") });
|
|
|
- };
|
|
|
-
|
|
|
- toggleDropDown = () => {
|
|
|
- this.setState({
|
|
|
- dropdownOpen: !this.state.dropdownOpen,
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- toggleSplit = () => {
|
|
|
- this.setState({
|
|
|
- splitButtonOpen: !this.state.splitButtonOpen,
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- onDrop = (files) => {
|
|
|
- this.setState({
|
|
|
- files: files.map((file) =>
|
|
|
- Object.assign(file, {
|
|
|
- preview: URL.createObjectURL(file),
|
|
|
- })
|
|
|
- ),
|
|
|
- stat: "Added " + files.length + " file(s)",
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- uploadFiles = (e) => {
|
|
|
- e.preventDefault();
|
|
|
- e.stopPropagation();
|
|
|
- this.setState({
|
|
|
- stat: this.state.files.length ? "Dropzone ready to upload " + this.state.files.length + " file(s)" : "No files added.",
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- clearFiles = (e) => {
|
|
|
- e.preventDefault();
|
|
|
- e.stopPropagation();
|
|
|
- this.setState({
|
|
|
- stat: this.state.files.length ? this.state.files.length + " file(s) cleared." : "No files to clear.",
|
|
|
- });
|
|
|
- this.setState({
|
|
|
- files: [],
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- onSubmit = async (e) => {
|
|
|
- e.preventDefault();
|
|
|
- const { number, ptId } = this.props.query;
|
|
|
- const formdata = new FormData();
|
|
|
- formdata.append("description", this.state.keteranganLaporan);
|
|
|
- formdata.append("date", this.state.tanggal);
|
|
|
- if (this.state.files.length > 0) {
|
|
|
- this.state.files.forEach((e) => {
|
|
|
- formdata.append("files", e);
|
|
|
- });
|
|
|
+ toggleModal = (value = true) => {
|
|
|
+ if (!value) {
|
|
|
+ this.setState({ modal: false });
|
|
|
+ } else {
|
|
|
+ this.setState({ modal: !this.state.modal });
|
|
|
}
|
|
|
-
|
|
|
- const inserted = await insertPemeriksaan({ number, ptId }, formdata);
|
|
|
- if (inserted) {
|
|
|
- Router.push({
|
|
|
- pathname: "/app/pemeriksaan",
|
|
|
- });
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- toggleModal = () => {
|
|
|
- this.setState({
|
|
|
- modal: !this.state.modal,
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- toggleModal1 = () => {
|
|
|
- this.setState({
|
|
|
- modal: false,
|
|
|
- });
|
|
|
- this.setState({
|
|
|
- modal1: !this.state.modal1,
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- handleSimpan = () => {
|
|
|
- this.setState({
|
|
|
- modal1: !this.state.modal1,
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- handleYaClick = (e) => {
|
|
|
- console.log("ya");
|
|
|
};
|
|
|
|
|
|
render() {
|
|
|
- const { files } = this.state;
|
|
|
+ const { sanksi } = this.props;
|
|
|
|
|
|
- const thumbs = files.map((file, index) => (
|
|
|
- <Col md={3} key={index}>
|
|
|
- <img className="img-fluid mb-2" src={file.preview} alt="Item" />
|
|
|
- </Col>
|
|
|
- ));
|
|
|
return (
|
|
|
<ContentWrapper unwrap>
|
|
|
- <div className="bg-cover" style={{ backgroundImage: "url(/static/img/profile-bg.png)" }}>
|
|
|
- <div className="p-4 text-center" style={styleHeaderText}>
|
|
|
- <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar" />
|
|
|
- <h3 className="m-0">Universitas Satyagama</h3>
|
|
|
- <p>0742/O/1990</p>
|
|
|
- <p>Jalan Kamal Raya No 2-A Cengkareng</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <Header />
|
|
|
<div className="p-3">
|
|
|
<div className="content-heading">
|
|
|
<div>Jawaban Atas Permohonan Keberatan</div>
|
|
|
<div className="ml-auto">
|
|
|
- <Link href="/app/pemeriksaan">
|
|
|
+ <Link href="/app/pt/jawaban-banding">
|
|
|
<button className="btn btn-sm btn-secondary text-sm">< back</button>
|
|
|
</Link>
|
|
|
</div>
|
|
|
@@ -196,183 +51,17 @@ class FormStandard extends Component {
|
|
|
<CardBody>
|
|
|
<Row>
|
|
|
<Col lg={6}>
|
|
|
- <p className="lead bb">Detail Laporan</p>
|
|
|
- <form className="form-horizontal">
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Nomor Laporan:</Col>
|
|
|
- <Col md="8">
|
|
|
- <strong>987654</strong>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Nama Perguruan Tinggi:</Col>
|
|
|
- <Col md="8">
|
|
|
- <strong>Universitas Satyagama</strong>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Jenis Pelanggaran:</Col>
|
|
|
- <Col md="8">
|
|
|
- <Scrollable height="75px" className="list-group">
|
|
|
- <ul>
|
|
|
- <li>Lorem ipsum dolor sit amet.</li>
|
|
|
- <li>Lorem, ipsum dolor.</li>
|
|
|
- <li>Lorem ipsum dolor sit.</li>
|
|
|
- </ul>
|
|
|
- </Scrollable>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Keterangan Laporan:</Col>
|
|
|
- <Col md="8">
|
|
|
- <Scrollable height="100px" className="list-group">
|
|
|
- <p>
|
|
|
- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Amet dicta placeat enim illo aspernatur adipisci neque repellendus itaque blanditiis fugit. Quam obcaecati sed
|
|
|
- perferendis facere.
|
|
|
- </p>
|
|
|
- </Scrollable>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Dibuat Pada:</Col>
|
|
|
- <Col md="8">
|
|
|
- <strong>23 Januari 2022</strong>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">Status</Col>
|
|
|
- <Col md="8">
|
|
|
- <div className="badge badge-info">Ditindaklanjuti</div>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup row>
|
|
|
- <Col md="4">File Pendukung</Col>
|
|
|
- <Col md="8">
|
|
|
- <Scrollable height="120px" className="list-group">
|
|
|
- <table className="table table-bordered bg-transparent">
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-code"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- database.controller.js
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-image"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- baground-lg.png
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-code"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- picture.controller.js
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-word"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- applicat-diagrams.docx
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-code"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- database.controller.js
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-code"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- database.controller.js
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </Scrollable>
|
|
|
- </Col>
|
|
|
- </FormGroup>
|
|
|
- </form>
|
|
|
+ <DetailSanksi data={sanksi.data[0]} />
|
|
|
</Col>
|
|
|
<Col lg={6}>
|
|
|
- <p className="lead bb">Jawaban Banding</p>
|
|
|
- <form className="form-horizontal">
|
|
|
- <FormGroup>
|
|
|
- <label md="4">Jawaban:</label>
|
|
|
- <div md="8">
|
|
|
- <h3>Diterima</h3>
|
|
|
- </div>
|
|
|
- </FormGroup>
|
|
|
- <FormGroup>
|
|
|
- <label md="4">Dokumen Jawaban:</label>
|
|
|
- <div md="8">
|
|
|
- <Scrollable height="120px" className="list-group">
|
|
|
- <table className="table table-bordered bg-transparent">
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <em className="fa-lg far fa-file-code"></em>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <a className="text-muted" href="">
|
|
|
- database.controller.js
|
|
|
- </a>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </Scrollable>
|
|
|
- </div>
|
|
|
- </FormGroup>
|
|
|
- </form>
|
|
|
+ <DetailJawaban data={sanksi.data[0]} />
|
|
|
</Col>
|
|
|
</Row>
|
|
|
</CardBody>
|
|
|
</Card>
|
|
|
- {/* END card */}
|
|
|
</Col>
|
|
|
<Col xl="3">
|
|
|
- <div className="card card-default">
|
|
|
- <div className="card-body">
|
|
|
- <div className="text-center">
|
|
|
- <h3 className="mt-0">Universitas Satyagama</h3>
|
|
|
- <p>0742/O/1990</p>
|
|
|
- </div>
|
|
|
- <hr />
|
|
|
- <ul className="list-unstyled px-4">
|
|
|
- <li>
|
|
|
- <em className="fa fa-globe fa-fw mr-3"></em>www.satyagama.ac.id
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status Pelanggaran : Tidak Ada
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <DetailPT />
|
|
|
</Col>
|
|
|
</Row>
|
|
|
</div>
|
|
|
@@ -381,4 +70,4 @@ class FormStandard extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-export default FormStandard;
|
|
|
+export default JawabanBanding;
|