detail.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import React, { Component } from "react";
  2. import Link from "next/link";
  3. import { getSanksi } from "@/actions/sanksi";
  4. import Header from "@/components/Main/Header";
  5. import DetailPT from "@/components/Main/DetailPT";
  6. import DetailSanksi from "@/components/Main/DetailSanksi";
  7. import ContentWrapper from "@/components/Layout/ContentWrapper";
  8. import Scrollable from "@/components/Common/Scrollable";
  9. import { Row, Col, Card, CardBody, FormGroup, Button } from "reactstrap";
  10. import { connect } from "react-redux";
  11. import Loader from "@/components/Common/Loader";
  12. import { API_URL } from "@/env";
  13. class DetailJawabanPencabutanSanksi extends Component {
  14. constructor(props) {
  15. super(props);
  16. this.state = {
  17. sanksi: {},
  18. };
  19. }
  20. static async getInitialProps({ query }) {
  21. return { query };
  22. }
  23. componentDidMount = async () => {
  24. const { user } = this.props;
  25. const { noSanksi } = this.props.query;
  26. const sanksi = await getSanksi({ noSanksi, ptId: user.peran[0].organisasi.id });
  27. console.log(sanksi);
  28. this.setState({ sanksi });
  29. };
  30. render() {
  31. const { sanksi } = this.state;
  32. const { jawaban } = (sanksi.data && sanksi.data[0].sanksi.cabut_sanksi) || {};
  33. return (
  34. <ContentWrapper unwrap>
  35. <Header data={this.props.pt[0]} />
  36. <div className="p-3">
  37. <div className="content-heading">
  38. <div>Jawaban Permohonan Pencabutan Sanksi</div>
  39. <div className="ml-auto">
  40. <Link href="/app/pt/jawaban-pencabutan-sanksi">
  41. <button className="btn btn-sm btn-secondary text-sm">&lt; kembali</button>
  42. </Link>
  43. </div>
  44. </div>
  45. <Row>
  46. {sanksi?.data ? (
  47. <Col xl="9">
  48. <Card className="card-default">
  49. <CardBody>
  50. <Row>
  51. <Col lg={12}>
  52. <DetailSanksi data={sanksi.data[0]} />
  53. <p className="lead bb">Jawaban Permohonan Pencabutan Sanksi</p>
  54. <form className="form-horizontal">
  55. <FormGroup>
  56. <label md="4">Jawaban:</label>
  57. <div md="8">
  58. <h3>{jawaban && jawaban.status}</h3>
  59. </div>
  60. </FormGroup>
  61. <FormGroup>
  62. <label md="4">Keterangan:</label>
  63. <div md="8">
  64. <p>{jawaban && jawaban.description}</p>
  65. </div>
  66. </FormGroup>
  67. <FormGroup>
  68. <label md="4">Dokumen Jawaban:</label>
  69. <div md="8">
  70. <Scrollable height="120px" className="list-group">
  71. <table className="table table-bordered bg-transparent">
  72. <tbody>
  73. {jawaban &&
  74. jawaban.files.map((e) => (
  75. <tr>
  76. <td>
  77. <em className="fa-lg far fa-file-code"></em>
  78. </td>
  79. <td>
  80. <a className="text-muted" href={API_URL + e.path} target="_blank" download={e.name}>
  81. {e.name}
  82. </a>
  83. </td>
  84. </tr>
  85. ))}
  86. </tbody>
  87. </table>
  88. </Scrollable>
  89. </div>
  90. </FormGroup>
  91. </form>
  92. {jawaban && jawaban.status === "Rekomendasi Perbaikan" && (
  93. <Link
  94. href={{
  95. pathname: "/app/pt/dokumen-perbaikan/detail",
  96. query: { noSanksi: sanksi.data[0].sanksi.no_sanksi },
  97. }}
  98. >
  99. <Button color="primary">Perbaiki Dokumen</Button>
  100. </Link>
  101. )}
  102. </Col>
  103. </Row>
  104. </CardBody>
  105. </Card>
  106. </Col>
  107. ) : (
  108. <Loader />
  109. )}
  110. <Col xl="3">{this.props.pt && <DetailPT data={this.props.pt[0]} />}</Col>
  111. </Row>
  112. </div>
  113. </ContentWrapper>
  114. );
  115. }
  116. }
  117. const mapStateToProps = (state) => ({ user: state.user, pt: state.pt });
  118. export default connect(mapStateToProps)(DetailJawabanPencabutanSanksi);