DetailSanksi.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. import Scrollable from "@/components/Common/Scrollable";
  2. import moment from "moment";
  3. import { Col, FormGroup, Table, Button } from "reactstrap";
  4. import { API_URL } from "@/env";
  5. import React, { Component } from "react";
  6. import { getOneSanksi } from "../../actions/sanksi";
  7. import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
  8. import ComponentBA from "../Sanksi/SuratBA _detail";
  9. import Link from "next/dist/client/link";
  10. class DetailSanksi extends Component {
  11. constructor(props) {
  12. super(props);
  13. this.state = {
  14. sanksi: {},
  15. };
  16. }
  17. static getInitialProps = async ({ query }) => {
  18. return { query };
  19. };
  20. componentDidMount = async () => {
  21. const { query, token } = this.props;
  22. const sanksi = await getOneSanksi(token, query.id);
  23. this.setState({ sanksi });
  24. };
  25. render() {
  26. const { sanksi } = this.state
  27. return (
  28. <>
  29. <p className="lead bb">Detail Sanksi</p>
  30. {sanksi.data &&
  31. <form className="form-horizontal">
  32. <FormGroup row>
  33. <Col md="4">Nomor Sanksi:</Col>
  34. <Col md="8">
  35. <strong>{sanksi.data.no_sanksi}</strong>
  36. </Col>
  37. </FormGroup>
  38. <FormGroup row>
  39. <Col md="4">Nama Perguruan Tinggi:</Col>
  40. <Col md="8">
  41. <strong>{sanksi.data.laporan.pt.nama}</strong>
  42. </Col>
  43. </FormGroup>
  44. <FormGroup row>
  45. <Col md="4">Keterangan:</Col>
  46. <Col md="8">
  47. <Scrollable height="100px" className="list-group">
  48. <p>{sanksi.data.keterangan}</p>
  49. </Scrollable>
  50. </Col>
  51. </FormGroup>
  52. <FormGroup row>
  53. <Col md="4">Tanggal Penetapan Sanksi:</Col>
  54. <Col md="8">
  55. <strong>{moment(sanksi.data.masa_berlaku?.from_date).locale("id").format("D MMMM YYYY")}</strong>
  56. </Col>
  57. </FormGroup>
  58. {
  59. sanksi.data.tanggal_akhir_keberatan &&
  60. <FormGroup row>
  61. <Col md="4">Tanggal Akhir Pengajuan Keberatan</Col>
  62. <Col md="8">
  63. <strong>{moment(sanksi.data.tanggal_akhir_keberatan).locale("id").format("D MMMM YYYY")}</strong>
  64. </Col>
  65. </FormGroup>
  66. }
  67. {
  68. sanksi.data.jawaban?.keberatan?.tanggal_akhir_banding &&
  69. <FormGroup row>
  70. <Col md="4">Tanggal Akhir Pengajuan Banding:</Col>
  71. <Col md="8">
  72. <strong>{moment(sanksi.data.jawaban?.keberatan?.tanggal_akhir_banding).locale("id").format("D MMMM YYYY")}</strong>
  73. </Col>
  74. </FormGroup>
  75. }
  76. <FormGroup row>
  77. <Col md="4">Dokumen Sanksi:</Col>
  78. <Col md="8">
  79. <Scrollable height="120px" className="list-group">
  80. <table className="table table-bordered bg-transparent">
  81. <tbody>
  82. {sanksi.data.dokumen.map((e) => (
  83. <tr>
  84. <td style={{ width: "30px" }}>
  85. <em className="fa-lg far fa-file-code"></em>
  86. </td>
  87. <td>
  88. <a className="text-muted" href={e.path} target="_blank" download={e.judul}>
  89. {e.judul}
  90. </a>
  91. </td>
  92. </tr>
  93. ))}
  94. </tbody>
  95. </table>
  96. </Scrollable>
  97. </Col>
  98. </FormGroup>
  99. <FormGroup row>
  100. <Col md="4">Dokumen Acara Pleno:</Col>
  101. <Col md="8">
  102. <div>
  103. <ReactToPrint
  104. trigger={() => {
  105. return <span>
  106. <Link
  107. href={{
  108. pathname: "/app/sanksi/detail",
  109. query: { id: this.props.query.id },
  110. }}>
  111. <Button color className="btn-labeled-4 mt-0">
  112. <h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
  113. </Button>
  114. </Link>
  115. </span>
  116. }}
  117. content={() => this.componentRef}
  118. />
  119. <div style={{ display: "none" }}>
  120. <ComponentBA ref={el => (this.componentRef = el)} query={this.props.query} />
  121. </div>
  122. </div>{/* <BeritaAcara
  123. query={this.props.query}
  124. /> */}
  125. </Col>
  126. </FormGroup>
  127. <FormGroup row>
  128. <Col md={12}>
  129. <div className="card b">
  130. <div className="card-body bb">
  131. <Table responsive>
  132. <thead>
  133. <tr>
  134. <th>Jenis Pelanggaran</th>
  135. <th>Sanksi</th>
  136. </tr>
  137. </thead>
  138. <tbody>
  139. {sanksi.data.pelanggaran.map((jp, index) => (
  140. <tr key={jp._id}>
  141. <td width={50}>
  142. <div className="media align-items-center">
  143. <div className="media-body d-flex">
  144. <div>
  145. <p>{jp.pelanggaran}</p>
  146. <p>TMT : {jp.tmt_bulan} Bulan</p>
  147. <p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
  148. </div>
  149. </div>
  150. </div>
  151. </td>
  152. <td width={50}>
  153. <div className="media align-items-center">
  154. <div className="media-body d-flex">
  155. <div>
  156. <p>{jp.sanksi}</p>
  157. <p>Keterangan : {jp.keterangan_sanksi}</p>
  158. </div>
  159. </div>
  160. </div>
  161. </td>
  162. </tr>
  163. ))}
  164. </tbody>
  165. </Table>
  166. </div>
  167. </div>
  168. </Col>
  169. </FormGroup>
  170. </form>
  171. }
  172. </>
  173. )
  174. }
  175. }
  176. // function DetailSanksi({ data, noTitle = false, query }) {
  177. // return (
  178. // <>
  179. // {noTitle ? "" : <p className="lead bb">Detail Sanksi</p>}
  180. // <form className="form-horizontal">
  181. // <FormGroup row>
  182. // <Col md="4">Nomor Sanksi:</Col>
  183. // <Col md="8">
  184. // <strong>{data.no_sanksi}</strong>
  185. // </Col>
  186. // </FormGroup>
  187. // <FormGroup row>
  188. // <Col md="4">Nama Perguruan Tinggi:</Col>
  189. // <Col md="8">
  190. // <strong>{data.laporan.pt.nama}</strong>
  191. // </Col>
  192. // </FormGroup>
  193. // <FormGroup row>
  194. // <Col md="4">Keterangan:</Col>
  195. // <Col md="8">
  196. // <Scrollable height="100px" className="list-group">
  197. // <p>{data.keterangan}</p>
  198. // </Scrollable>
  199. // </Col>
  200. // </FormGroup>
  201. // <FormGroup row>
  202. // <Col md="4">Tanggal Penetapan Sanksi:</Col>
  203. // <Col md="8">
  204. // <strong>{moment(data.masa_berlaku?.from_date).locale("id").format("D MMMM YYYY")}</strong>
  205. // </Col>
  206. // </FormGroup>
  207. // {
  208. // data.tanggal_akhir_keberatan &&
  209. // <FormGroup row>
  210. // <Col md="4">Tanggal Akhir Pengajuan Keberatan</Col>
  211. // <Col md="8">
  212. // <strong>{moment(data.tanggal_akhir_keberatan).locale("id").format("D MMMM YYYY")}</strong>
  213. // </Col>
  214. // </FormGroup>
  215. // }
  216. // {
  217. // data.jawaban?.keberatan?.tanggal_akhir_banding &&
  218. // <FormGroup row>
  219. // <Col md="4">Tanggal Akhir Pengajuan Banding:</Col>
  220. // <Col md="8">
  221. // <strong>{moment(data.jawaban?.keberatan?.tanggal_akhir_banding).locale("id").format("D MMMM YYYY")}</strong>
  222. // </Col>
  223. // </FormGroup>
  224. // }
  225. // <FormGroup row>
  226. // <Col md="4">Dokumen Sanksi:</Col>
  227. // <Col md="8">
  228. // <Scrollable height="120px" className="list-group">
  229. // <table className="table table-bordered bg-transparent">
  230. // <tbody>
  231. // {data.dokumen.map((e) => (
  232. // <tr>
  233. // <td style={{ width: "30px" }}>
  234. // <em className="fa-lg far fa-file-code"></em>
  235. // </td>
  236. // <td>
  237. // <a className="text-muted" href={e.path} target="_blank" download={e.judul}>
  238. // {e.judul}
  239. // </a>
  240. // </td>
  241. // </tr>
  242. // ))}
  243. // </tbody>
  244. // </table>
  245. // </Scrollable>
  246. // </Col>
  247. // </FormGroup>
  248. // <FormGroup row>
  249. // <Col md="4">Dokumen Acara Pleno:</Col>
  250. // <Col md="8">
  251. // <BeritaAcara
  252. // query={query}
  253. // />
  254. // </Col>
  255. // </FormGroup>
  256. // <FormGroup row>
  257. // <Col md={12}>
  258. // <div className="card b">
  259. // <div className="card-body bb">
  260. // <Table responsive>
  261. // <thead>
  262. // <tr>
  263. // <th>Jenis Pelanggaran</th>
  264. // <th>Sanksi</th>
  265. // </tr>
  266. // </thead>
  267. // <tbody>
  268. // {data.pelanggaran.map((jp, index) => (
  269. // <tr key={jp._id}>
  270. // <td width={50}>
  271. // <div className="media align-items-center">
  272. // <div className="media-body d-flex">
  273. // <div>
  274. // <p>{jp.pelanggaran}</p>
  275. // <p>TMT : {jp.tmt_bulan} Bulan</p>
  276. // <p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
  277. // </div>
  278. // </div>
  279. // </div>
  280. // </td>
  281. // <td width={50}>
  282. // <div className="media align-items-center">
  283. // <div className="media-body d-flex">
  284. // <div>
  285. // <p>{jp.sanksi}</p>
  286. // <p>Keterangan : {jp.keterangan_sanksi}</p>
  287. // </div>
  288. // </div>
  289. // </div>
  290. // </td>
  291. // </tr>
  292. // ))}
  293. // </tbody>
  294. // </Table>
  295. // </div>
  296. // </div>
  297. // </Col>
  298. // </FormGroup>
  299. // </form>
  300. // </>
  301. // );
  302. // }
  303. export default DetailSanksi;