DetailLaporan.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import React, { Component } from "react";
  2. import Select from "react-select";
  3. import Scrollable from "@/components/Common/Scrollable";
  4. import { addStatus } from "@/actions/pelaporan";
  5. import { Card, CardBody, CardHeader, CardTitle } from "reactstrap";
  6. const selectInstanceId = 1;
  7. export class DetailLaporan extends Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. selectedOption: null,
  12. };
  13. }
  14. componentDidMount = async () => {
  15. this.setState({ selectedOption: { value: "ditindaklanjuti", label: "Ditindaklanjuti Dikti Ristek", className: "State-ACT" } });
  16. // const tes = await addStatus({ number, ptId }, { status: data.status || "ditindaklanjuti" });
  17. };
  18. handleChangeSelect = async (selectedOption) => {
  19. const { ptId, number } = this.props.query;
  20. this.props.handleChangeSelect(selectedOption);
  21. this.setState({ selectedOption });
  22. const tes = await addStatus({ number, ptId }, { status: selectedOption.value });
  23. };
  24. render() {
  25. const { data } = this.props;
  26. console.log(data);
  27. return (
  28. <Card className="card b">
  29. <CardHeader>
  30. <CardTitle tag="h4">Detail Laporan</CardTitle>
  31. </CardHeader>
  32. <CardBody>
  33. <table className="table">
  34. <tbody>
  35. <tr>
  36. <td>
  37. <strong>Status</strong>
  38. </td>
  39. <td>
  40. <Select
  41. instanceId={selectInstanceId + 1}
  42. value={this.state.selectedOption}
  43. onChange={this.handleChangeSelect}
  44. options={[
  45. { value: "ditindaklanjuti", label: "Ditindaklanjuti Dikti Ristek", className: "State-ACT" },
  46. { value: "delegasi ke lldikti", label: "Delegasi ke LLDIKTI", className: "State-ACT" },
  47. { value: "ditutup", label: "Ditutup", className: "State-ACT" },
  48. ]}
  49. required
  50. />
  51. </td>
  52. </tr>
  53. <tr>
  54. <td>
  55. <strong>Nomor Laporan</strong>
  56. </td>
  57. <td>{data._number}</td>
  58. </tr>
  59. <tr>
  60. <td>
  61. <strong>Perguruan Tinggi</strong>
  62. </td>
  63. <td>Universitas Satyagama</td>
  64. </tr>
  65. <tr>
  66. <td>
  67. <strong>Jenis Pelanggaran</strong>
  68. </td>
  69. <td>
  70. <Scrollable height="75px" className="list-group">
  71. <ul>
  72. <li>Lorem ipsum dolor sit amet.</li>
  73. <li>Lorem, ipsum dolor.</li>
  74. <li>Lorem ipsum dolor sit.</li>
  75. </ul>
  76. </Scrollable>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td>
  81. <strong>Keterangan Laporan</strong>
  82. </td>
  83. <td>
  84. <Scrollable height="100px" className="list-group">
  85. <p>{data.description}</p>
  86. </Scrollable>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td>
  91. <strong>File Pendukung</strong>
  92. </td>
  93. <td>
  94. <Scrollable height="120px" className="list-group">
  95. <table className="table table-bordered bg-transparent">
  96. <tbody>
  97. {data.files
  98. ? data.files.map((e) => (
  99. <tr>
  100. <td>
  101. <em className="fa-lg far fa-file-code"></em>
  102. </td>
  103. <td>
  104. <a className="text-muted" href={`data:${e.type};base64, ${Buffer.from(e.data).toString("base64")}`} download={e.name}>
  105. {e.name}
  106. </a>
  107. </td>
  108. </tr>
  109. ))
  110. : ""}
  111. </tbody>
  112. </table>
  113. </Scrollable>
  114. </td>
  115. </tr>
  116. </tbody>
  117. </table>
  118. </CardBody>
  119. </Card>
  120. );
  121. }
  122. }
  123. export default DetailLaporan;