detail.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import { getLog } from "@/actions/log";
  4. import { Card, CardBody, TabContent, TabPane, Nav, NavItem, NavLink, Button, Row, Col, FormGroup } from "reactstrap";
  5. import Timeline from "@/components/Main/Timeline";
  6. import { getOnePT } from "@/actions/PT";
  7. import { connect } from "react-redux";
  8. import { getOneLaporan, getPelaporan } from "../../../actions/pelaporan";
  9. import DetailLaporan from "@/components/Main/DetailLaporan";
  10. import Link from "next/link";
  11. import Loader from "@/components/Common/Loader";
  12. import DetailPT from "@/components/Main/DetailPT";
  13. import moment from "moment";
  14. import Datatable from "@/components/Tables/Datatable";
  15. import classnames from "classnames";
  16. import BeritaAcara_Bypass from "../../../components/BypassII/BeritaAcara";
  17. import { UploadSurat_Bypass } from "../../../components/BypassII/UploadSurat";
  18. import { TablePenetapanSanksi_Bypass } from "../../../components/BypassII/TablePenetapanSanksi";
  19. import { getPelanggaran, getPelanggaranSanksi } from "@/actions/pelanggaran";
  20. import ComponentToPrint from "../../../components/BypassII/SuratBA_A";
  21. import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
  22. const stepNavitemStyle = {
  23. backgroundColor: "#fcfcfc",
  24. };
  25. class bypassIIDetail extends Component {
  26. constructor(props) {
  27. super(props);
  28. this.state = {
  29. activeStep: "1",
  30. log: {},
  31. detailLaporanPt: {},
  32. pelaporan: {},
  33. pt: {},
  34. };
  35. }
  36. static async getInitialProps({ query }) {
  37. return { query };
  38. }
  39. componentDidMount = async () => {
  40. const { query, token } = this.props;
  41. const ptId = query.ptId;
  42. const pelaporan = await getPelaporan(token, { pt_id: ptId, all: true, aktif: true });
  43. const { data: listSanksi } = await getPelanggaranSanksi(token)
  44. const pt = await getOnePT(token, ptId);
  45. this.setState({ pelaporan, pt, listSanksi });
  46. };
  47. toggleStep = (activeStep) => () => {
  48. if (this.state.activeStep !== activeStep) {
  49. this.setState({
  50. activeStep: activeStep
  51. });
  52. // this.handleAutoSave(this.state.dataPelanggaran, activeStep)
  53. }
  54. };
  55. setDataSuratBA = (data) => {
  56. this.setState({ dataSuratBA: data });
  57. };
  58. setCheckedData = async (data) => {
  59. const { token } = this.props;
  60. const result = await getPelanggaran(token, { id: data.join(",") });
  61. this.setState({ dataPelanggaran: result });
  62. // this.handleAutoSave(result)
  63. };
  64. setUploadSuratSanksi = (data) => {
  65. this.setState({ dataUpload: data });
  66. };
  67. render() {
  68. const { dataUpload, dataPelanggaran, pelaporan, dataSuratBA } = this.state
  69. return (
  70. <ContentWrapper unwrap>
  71. {/* <Header /> */}
  72. <div className="p-3">
  73. <div className="content-heading">
  74. <span className="font-color-white">Bypass II</span>
  75. <div className="ml-auto">
  76. <Link href="/app/bypassII">
  77. <Button className="color-3e3a8e" color>
  78. <span className="font-color-white">&lt; Kembali</span>
  79. </Button>
  80. </Link>
  81. </div>
  82. </div>
  83. <Card className="card-default">
  84. <CardBody>
  85. <Row>
  86. <Col xs="4">
  87. <Nav pills vertical={true} className="cursor-pointer">
  88. <NavItem style={stepNavitemStyle}>
  89. <NavLink
  90. tag="div"
  91. className={classnames({
  92. active: this.state.activeStep === "1",
  93. })}
  94. onClick={this.toggleStep("1")}
  95. >
  96. <h4 className="text-left my-3">1. Penetapan Sanksi</h4>
  97. </NavLink>
  98. </NavItem>
  99. <NavItem style={stepNavitemStyle}>
  100. <NavLink
  101. tag="div"
  102. className={classnames({
  103. active: this.state.activeStep === "2",
  104. })}
  105. onClick={this.toggleStep("2")}
  106. >
  107. <h4 className="text-left my-3">2. Penetapan Jenis Pelanggaran</h4>
  108. </NavLink>
  109. </NavItem>
  110. <NavItem style={stepNavitemStyle}>
  111. <NavLink
  112. tag="div"
  113. className={classnames({
  114. active: this.state.activeStep === "3",
  115. })}
  116. onClick={this.toggleStep("3")}
  117. >
  118. <h4 className="text-left my-3">3. Berita Acara Pleno</h4>
  119. </NavLink>
  120. </NavItem>
  121. </Nav>
  122. </Col>
  123. <Col xs="8">
  124. <TabContent activeTab={this.state.activeStep} className="border-0">
  125. <TabPane tabId="1">
  126. <div className="pt-3 mb-3">
  127. <h2>Penetapan Sanksi</h2>
  128. {this.state.listSanksi && <UploadSurat_Bypass setUploadSuratSanksi={this.setUploadSuratSanksi} listSanksi={this.state.listSanksi} />}
  129. </div>
  130. <FormGroup row className="mt-3">
  131. <label className="col-md-4 col-form-label">
  132. Dokumen Laporan Evaluasi dan Pembahasan
  133. </label>
  134. <div className="col-md-10">
  135. <div style={{ display: "none" }}>
  136. <ComponentToPrint ref={el => (this.componentRef = el)} dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataSuratBA={dataSuratBA} pt={this.state.pt} />
  137. </div>
  138. <ReactToPrint
  139. trigger={() => {
  140. return <span>
  141. <Button color className="btn-labeled-4 mt-0">
  142. <h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
  143. </Button>
  144. </span>
  145. }}
  146. content={() => this.componentRef}
  147. />
  148. </div>
  149. </FormGroup>
  150. <hr />
  151. <div className="d-flex">
  152. {/* <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("4")}>
  153. <span className="font-color-white">Previous</span>
  154. </Button> */}
  155. <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("2")}>
  156. <span className="font-color-white">Next</span>
  157. </Button>
  158. </div>
  159. </TabPane>
  160. <TabPane tabId="2">
  161. <div className="pt-3 mb-3">
  162. <h2>Penetapan Jenis Pelanggaran</h2>
  163. <TablePenetapanSanksi_Bypass setCheckedData={this.setCheckedData} />
  164. </div>
  165. <hr />
  166. <div className="d-flex">
  167. <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("1")}>
  168. <span className="font-color-white">Previous</span>
  169. </Button>
  170. <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("3")}>
  171. <span className="font-color-white">Next</span>
  172. </Button>
  173. </div>
  174. </TabPane>
  175. <TabPane tabId="3">
  176. <Card>
  177. <BeritaAcara_Bypass dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataSuratBA={dataSuratBA} pt={this.state.pt} />
  178. </Card>
  179. <div className="d-flex">
  180. <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("2")}>
  181. <span className="font-color-white">Previous</span>
  182. </Button>
  183. <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("3")}>
  184. <span className="font-color-white">Next</span>
  185. </Button>
  186. </div>
  187. </TabPane>
  188. </TabContent>
  189. </Col>
  190. </Row>
  191. </CardBody>
  192. </Card>
  193. </div>
  194. </ContentWrapper>
  195. )
  196. }
  197. }
  198. const mapStateToProps = (state) => ({ user: state.user, token: state.token });
  199. export default connect(mapStateToProps)(bypassIIDetail);