index.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import Link from "next/link";
  4. import { Row, Col, Button } from "reactstrap";
  5. import { getPelaporan } from "@/actions/pelaporan";
  6. import CaseProgress from "@/components/Main/CaseProgress";
  7. import TableLaporan from "@/components/Main/TableLaporan";
  8. import { connect } from "react-redux";
  9. class Pelaporan extends Component {
  10. constructor(props) {
  11. super(props);
  12. this.state = {
  13. user: {
  14. pelaporan: {},
  15. },
  16. };
  17. }
  18. componentDidMount = async () => {
  19. const { organisasi, peran } = this.props.user.peran[0];
  20. const query = { role: peran.id === 2021 ? "lldikti" : "dikti" };
  21. if (peran.id === 2021) query.orgId = organisasi.id;
  22. const pelaporan = await getPelaporan(query);
  23. this.setState({ pelaporan });
  24. };
  25. render() {
  26. const { pelaporan } = this.state;
  27. return (
  28. <ContentWrapper>
  29. <div className="content-heading">Pelaporan</div>
  30. <Row>
  31. <Col lg="4">
  32. <CaseProgress />
  33. </Col>
  34. <Col lg="8">
  35. <div className="mb-3 d-flex">
  36. <div>
  37. <Link href="/app/pelaporan/search">
  38. <Button color="primary">Laporan Baru</Button>
  39. </Link>
  40. </div>
  41. </div>
  42. <TableLaporan listData={pelaporan?.data} to="/app/pelaporan/detail" linkName="Detail" />
  43. </Col>
  44. </Row>
  45. </ContentWrapper>
  46. );
  47. }
  48. }
  49. const mapStateToProps = (state) => ({ user: state.user });
  50. export default connect(mapStateToProps)(Pelaporan);