| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import React, { Component } from "react";
- import Select from "react-select";
- import Scrollable from "@/components/Common/Scrollable";
- import { addStatus } from "@/actions/pelaporan";
- import { Card, CardBody, CardHeader, CardTitle } from "reactstrap";
- const status = [
- { value: "Ditindaklanjuti Dikti Ristek", label: "Ditindaklanjuti Dikti Ristek", className: "State-ACT" },
- { value: "Delegasi ke LLDIKTI", label: "Delegasi ke LLDIKTI", className: "State-ACT" },
- { value: "Ditutup", label: "Ditutup", className: "State-ACT" },
- ];
- const selectInstanceId = 1;
- export class DetailLaporan extends Component {
- constructor(props) {
- super(props);
- this.state = {
- selectedOption: null,
- };
- }
- componentDidMount = () => {
- const { data } = this.props;
- if (data.status) {
- const selectedOption = status.filter((e) => e.value === data.status)[0];
- this.setState({ selectedOption });
- } else {
- this.setState({ selectedOption: { value: "Ditindaklanjuti", label: "Ditindaklanjuti Dikti Ristek", className: "State-ACT" } });
- // const tes = await addStatus({ number, ptId }, { status: data.status || "ditindaklanjuti" });
- }
- };
- handleChangeSelect = async (selectedOption) => {
- const { ptId, number } = this.props.query;
- this.props.handleChangeSelect(selectedOption);
- this.setState({ selectedOption });
- await addStatus({ number, ptId }, { status: selectedOption.value });
- };
- render() {
- const { data } = this.props;
- return (
- <Card className="card b">
- <CardHeader>
- <CardTitle tag="h4">Detail Laporan</CardTitle>
- </CardHeader>
- <CardBody>
- <table className="table">
- <tbody>
- <tr>
- <td>
- <strong>Status</strong>
- </td>
- <td>
- <Select instanceId={selectInstanceId + 1} value={this.state.selectedOption} onChange={this.handleChangeSelect} options={status} required />
- </td>
- </tr>
- <tr>
- <td>
- <strong>Nomor Laporan</strong>
- </td>
- <td>{data._number}</td>
- </tr>
- <tr>
- <td>
- <strong>Perguruan Tinggi</strong>
- </td>
- <td>Universitas Satyagama</td>
- </tr>
- <tr>
- <td>
- <strong>Jenis Pelanggaran</strong>
- </td>
- <td>
- <Scrollable height="75px" className="list-group">
- <ul>{data.pelanggaran ? data.pelanggaran.map((e) => <li>{e.pelanggaran}</li>) : ""}</ul>
- </Scrollable>
- </td>
- </tr>
- <tr>
- <td>
- <strong>Keterangan Laporan</strong>
- </td>
- <td>
- <Scrollable height="100px" className="list-group">
- <p>{data.description}</p>
- </Scrollable>
- </td>
- </tr>
- <tr>
- <td>
- <strong>File Pendukung</strong>
- </td>
- <td>
- <Scrollable height="120px" className="list-group">
- <table className="table table-bordered bg-transparent">
- <tbody>
- {data.files
- ? data.files.map((e) => (
- <tr>
- <td>
- <em className="fa-lg far fa-file-code"></em>
- </td>
- <td>
- <a className="text-muted" href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
- {e.name}
- </a>
- </td>
- </tr>
- ))
- : ""}
- </tbody>
- </table>
- </Scrollable>
- </td>
- </tr>
- </tbody>
- </table>
- </CardBody>
- </Card>
- );
- }
- }
- export default DetailLaporan;
|