BeritaAcara.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. import React, { useRef, Component } from 'react';
  2. import { Row, Col, Button, Popover, PopoverHeader, PopoverBody, Card, CardBody, Modal, ModalBody, ModalFooter } from "reactstrap";
  3. import ComponentToPrint from "./SuratBA_A";
  4. import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
  5. import DatePicker from "react-datepicker";
  6. import "react-datepicker/dist/react-datepicker.css";
  7. import id from 'date-fns/locale/id';
  8. import CopyToClipboard from "react-copy-to-clipboard";
  9. import { getAutoSave } from "@/actions/autosave";
  10. import ContentEditable from 'react-contenteditable'
  11. import { removePesertaPleno } from '../../actions/sanksi';
  12. import { ToastContainer, toast } from "react-toastify";
  13. import Router from "next/router";
  14. import { getCsrf } from '../../actions/security';
  15. import { ENV } from '../../env';
  16. class BeritaAcara_Bypass extends Component {
  17. constructor(props) {
  18. super(props);
  19. this.state = {
  20. isEditTempat: false,
  21. tempat: "",
  22. isEditTanggal: false,
  23. isEditTanggal_2: false,
  24. tanggal: "",
  25. tanggal_2: "",
  26. setTanggal: false,
  27. setTanggal_2: false,
  28. isEditNamaPeserta: false,
  29. isEditTemuanLain: false,
  30. temuanLain: [],
  31. memberatkan: [],
  32. isEditKeberatan: false,
  33. isEditMeringankan: false,
  34. meringankan: [],
  35. sanksi: "",
  36. isEditSanksi: false,
  37. copied: false,
  38. setmeState: true,
  39. descPelanggaran: [],
  40. modalRemovePeserta: false,
  41. selectedPeserta: ""
  42. };
  43. }
  44. static getInitialProps = async ({ query }) => {
  45. return { query };
  46. };
  47. // componentDidMount = async () => {
  48. // const { query, token, dataPelanggaran } = this.props;
  49. // const { id } = query;
  50. // const getDataSave = await getAutoSave({ id, laporan: true });
  51. // const autosaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
  52. // this.setState(autosaveDataSuratBA)
  53. // };
  54. componentDidUpdate = (prevProps) => {
  55. const { dataPelanggaran } = this.state;
  56. if (prevProps.dataPelanggaran != this.state.dataPelanggaran) {
  57. const descPelanggaran = {}
  58. dataPelanggaran?.forEach(e => {
  59. descPelanggaran[e._id] = {
  60. simpulan: 'simpulan',
  61. rekomendasi: 'rekomendasi'
  62. }
  63. });
  64. }
  65. }
  66. updateValueSimpulan = (evt, id) => {
  67. const descPelanggaran = this.state.descPelanggaran
  68. this.state.descPelanggaran = {
  69. ...descPelanggaran, [id]: {
  70. ...descPelanggaran[id], simpulan: evt.target.value
  71. }
  72. }
  73. // this.handleAutoSave()
  74. // this.setState((prevState) => ({
  75. // ...prevState, descPelanggaran: {
  76. // ...prevState.descPelanggaran, [id]: {
  77. // ...prevState.descPelanggaran[id], simpulan: evt.target.value
  78. // }
  79. // }
  80. // }), this.handleAutoSave)
  81. }
  82. updateValueRekomendasi = (evt, id) => {
  83. const descPelanggaran = this.state.descPelanggaran
  84. this.state.descPelanggaran = {
  85. ...descPelanggaran, [id]: {
  86. ...descPelanggaran[id], rekomendasi: evt.target.value
  87. }
  88. }
  89. // this.handleAutoSave()
  90. // this.setState((prevState) => ({
  91. // ...prevState, descPelanggaran: {
  92. // ...prevState.descPelanggaran, [id]: {
  93. // ...prevState.descPelanggaran[id], rekomendasi: evt.target.value
  94. // }
  95. // }
  96. // }), this.handleAutoSave)
  97. }
  98. setDataSuratBA = () => {
  99. this.props.setDataSuratBA(this.state);
  100. }
  101. // handleAutoSave = () => {
  102. // this.props.handleAutoSave()
  103. // }
  104. isEditTempat = () => {
  105. this.state.isEditTempat = !this.state.isEditTempat
  106. this.setDataSuratBA()
  107. // this.handleAutoSave()
  108. // this.setState({
  109. // isEditTempat: !this.state.isEditTempat,
  110. // }, this.setDataSuratBA, this.handleAutoSave())
  111. }
  112. isEditTanggal = () => {
  113. this.state.isEditTanggal = !this.state.isEditTanggal
  114. this.setDataSuratBA()
  115. // this.handleAutoSave()
  116. // this.setState({
  117. // isEditTanggal: !this.state.isEditTanggal,
  118. // }, this.setDataSuratBA, this.handleAutoSave())
  119. }
  120. isEditTanggal_2 = () => {
  121. this.state.isEditTanggal_2 = !this.state.isEditTanggal_2
  122. this.setDataSuratBA()
  123. // this.handleAutoSave()
  124. // this.setState({
  125. // isEditTanggal: !this.state.isEditTanggal,
  126. // }, this.setDataSuratBA, this.handleAutoSave())
  127. }
  128. isEditTemuanLain = () => {
  129. this.state.isEditTemuanLain = !this.state.isEditTemuanLain
  130. this.setDataSuratBA()
  131. // this.handleAutoSave()
  132. // this.setState({
  133. // isEditTemuanLain: !this.state.isEditTemuanLain,
  134. // }, this.setDataSuratBA, this.handleAutoSave())
  135. }
  136. isEditKeberatan = () => {
  137. this.state.isEditKeberatan = !this.state.isEditKeberatan
  138. this.setDataSuratBA()
  139. // this.handleAutoSave()
  140. // this.setState({
  141. // isEditKeberatan: !this.state.isEditKeberatan,
  142. // }, this.setDataSuratBA, this.handleAutoSave())
  143. }
  144. isEditMeringankan = () => {
  145. this.state.isEditMeringankan = !this.state.isEditMeringankan
  146. this.setDataSuratBA()
  147. // this.handleAutoSave()
  148. // this.setState({
  149. // isEditMeringankan: !this.state.isEditMeringankan,
  150. // }, this.setDataSuratBA, this.handleAutoSave())
  151. }
  152. isEditSanksi = () => {
  153. this.state.isEditSanksi = !this.state.isEditSanksi
  154. this.setDataSuratBA()
  155. // this.handleAutoSave()
  156. // this.setState({
  157. // isEditSanksi: !this.state.isEditSanksi,
  158. // }, this.setDataSuratBA, this.handleAutoSave())
  159. }
  160. updateValueTemuanLain = () => {
  161. const addTemuanLain = this.refs.inputTemuan.value
  162. this.state.temuanLain.push(addTemuanLain)
  163. this.setDataSuratBA(this.state)
  164. // this.handleAutoSave()
  165. }
  166. updateValueMemringankan = () => {
  167. const addMeringankan = this.refs.inputMeringankan.value
  168. this.state.meringankan.push(addMeringankan)
  169. this.setDataSuratBA(this.state)
  170. // this.handleAutoSave()
  171. }
  172. updateValueMemberatkan = () => {
  173. const addKeberatan = this.refs.inputMemberatkan.value
  174. this.state.memberatkan.push(addKeberatan)
  175. this.setDataSuratBA(this.state)
  176. // this.handleAutoSave()
  177. }
  178. Copied = () => this.setState({
  179. copied: !this.state.copied
  180. },
  181. // this.handleAutoSave()
  182. )
  183. CloseCopied = () => {
  184. setTimeout(() => {
  185. // this.state.copied = !this.state.copied
  186. this.setState({
  187. copied: !this.state.copied
  188. },
  189. // this.handleAutoSave()
  190. );
  191. }, 1000);
  192. }
  193. setModalRemovePeserta = (modalRemovePeserta) => {
  194. this.setState({
  195. modalRemovePeserta: !this.state.modalRemovePeserta
  196. })
  197. }
  198. removeTemuanLain = index => () => {
  199. const temuanLain = this.state.temuanLain
  200. const data = [...temuanLain]
  201. data.splice(index, 1);
  202. this.setState({
  203. temuanLain: data,
  204. }, this.setDataSuratBA()
  205. );
  206. }
  207. removeMemberatkan = index => () => {
  208. const memberatkan = this.state.memberatkan
  209. const data = [...memberatkan]
  210. data.splice(index, 1);
  211. this.setState({
  212. memberatkan: data,
  213. }, this.setDataSuratBA()
  214. );
  215. }
  216. removeMeringankan = index => () => {
  217. const meringankan = this.state.meringankan
  218. const data = [...meringankan]
  219. data.splice(index, 1);
  220. this.setState({
  221. meringankan: data,
  222. }, this.setDataSuratBA()
  223. );
  224. }
  225. render() {
  226. const { dataLaporan, dataSuratBA, dataPelanggaran, pt } = this.props
  227. const { descPelanggaran, tanggal, setTanggal, setTanggal_2, tanggal_2, temuanLain } = this.state
  228. return (
  229. <div>
  230. <div className=' content-heading border-radius-login'>
  231. <span className="btn-radius">
  232. <ReactToPrint
  233. trigger={() => {
  234. return <span>
  235. <Button color className="btn-labeled-4">
  236. <h4 className="p-0 mt-2">Print dan Download</h4>
  237. </Button>
  238. </span>
  239. }}
  240. content={() => this.componentRef}
  241. />
  242. </span>
  243. </div>
  244. <div style={{ display: "none" }}>
  245. <ComponentToPrint ref={el => (this.componentRef = el)} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} pt={this.props.pt} />
  246. </div>
  247. <div className='page py-5 m-0 '>
  248. <div className='BA-Header'>
  249. <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
  250. <h4 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h4>
  251. {pt?.data && (<h4 className='text-uppercase' >{pt.data.nama}</h4>)}
  252. </div>
  253. <div className='BA-body px-5 pt-3'>
  254. <p>
  255. Pada hari ini
  256. {dataSuratBA?.isEditTanggal &&
  257. <span style={{ textIndent: "0rem" }}>
  258. <DatePicker
  259. selected={tanggal ? new Date(tanggal) : tanggal}
  260. onChange={(tanggal) => {
  261. this.setState({ tanggal, setTanggal: true }, this.setDataSuratBA)
  262. }}
  263. dateFormat="dd/MM/yyyy"
  264. placeholderText="Isi Tanggal"
  265. locale={id}
  266. className="form-control bg-white"
  267. />
  268. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTanggal} />
  269. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={this.isEditTanggal}
  270. />
  271. </span>
  272. }
  273. {setTanggal === true || this.state?.setTanggal === true ?
  274. <span onClick={this.isEditTanggal}> {moment(tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(tanggal || this.state?.tanggal).format("YYYY")},</span> :
  275. <span onClick={this.isEditTanggal}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
  276. }
  277. &nbsp;bertempat di
  278. {dataSuratBA?.isEditTempat &&
  279. <span>
  280. <input type='text'
  281. defaultValue={""}
  282. ref="inputTempat"
  283. onChange={() => {
  284. this.setState({ tempat: this.refs.inputTempat.value }, this.setDataSuratBA)
  285. }}
  286. />
  287. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTempat} />
  288. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditTempat() }} />
  289. </span>
  290. }
  291. {this.state?.tempat ?
  292. <span onClick={this.isEditTempat} className='hhh'>
  293. &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
  294. </span>
  295. :
  296. <span onClick={this.isEditTempat}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
  297. }
  298. ,
  299. telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt?.data && (<span>{pt.data.nama}</span>)}, yang dihadiri oleh:
  300. {/* <ol>
  301. {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) =>
  302. <li>
  303. {value.nama}
  304. <button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
  305. onClick={() => {
  306. this.setState({
  307. selectedPeserta: value._id
  308. })
  309. this.setModalRemovePeserta()
  310. }} />
  311. </li>)}
  312. </ol> */}
  313. </p>
  314. <p>
  315. Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt?.data && (<span>{pt.data.nama}</span>)}, disampaikan sebagai berikut:
  316. <ol className='mt-3'>
  317. <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi {pt?.data && (<span>{pt.data.nama}</span>)}, tanggal
  318. {/* {setTanggal === true || this.state?.setTanggal === true ?
  319. <span> &nbsp;{moment(tanggal || this.state?.tanggal).format("DD-MM-YYYY")}</span>
  320. :
  321. <span> &nbsp;....... &nbsp;</span>
  322. } */}
  323. {dataSuratBA?.isEditTanggal_2 &&
  324. <span style={{ textIndent: "0rem" }}>
  325. <DatePicker
  326. selected={tanggal_2 ? new Date(tanggal_2) : tanggal_2}
  327. onChange={(tanggal_2) => {
  328. this.setState({ tanggal_2, setTanggal_2: true }, this.setDataSuratBA)
  329. }}
  330. dateFormat="dd/MM/yyyy"
  331. placeholderText="Isi Tanggal"
  332. locale={id}
  333. className="form-control bg-white"
  334. />
  335. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTanggal_2} />
  336. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={this.isEditTanggal_2}
  337. />
  338. </span>
  339. }
  340. {setTanggal_2 === true || this.state?.setTanggal_2 === true ?
  341. <span onClick={this.isEditTanggal_2}> {moment(tanggal_2 || this.state?.tanggal_2).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("D")}&nbsp; bulan &nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("MMMM")} tahun &nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("YYYY")},</span> :
  342. <span onClick={this.isEditTanggal_2}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
  343. }
  344. </li>
  345. <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
  346. </ol>
  347. </p>
  348. <div className='table-a my-4' >
  349. <table>
  350. <thead >
  351. <tr>
  352. <th rowspan="2">NO</th>
  353. <th rowspan="2">NAMA DAN IZIN PRODI</th>
  354. <th colspan="3">PELANGGARAN TERHADAP PERMENDIKBUD NO.7 TAHUN 2020</th>
  355. <th rowspan="2">SIMPULAN</th>
  356. <th rowspan="2">REKOMENDASI</th>
  357. </tr>
  358. <tr>
  359. <th>PASAL</th>
  360. <th>BUTIR PELANGGARAN</th>
  361. <th>DESKRIPSI PELANGGARAN</th>
  362. </tr>
  363. </thead>
  364. <tbody>
  365. {dataPelanggaran?.data?.map((e, i) => (
  366. <tr key={e._id}>
  367. <td>{++i}</td>
  368. {pt.data && (<td >{pt.data.nama}</td>)}
  369. <td>{e.pasal}</td>
  370. <td>{e.butir_pelanggaran}</td>
  371. <td>{e.pelanggaran}</td>
  372. <td >
  373. <ContentEditable
  374. html={descPelanggaran[e._id]?.simpulan || ""}
  375. disabled={false}
  376. onChange={(evt) => {
  377. this.updateValueSimpulan(evt, e._id), this.setDataSuratBA()
  378. }}
  379. />
  380. </td>
  381. <td style={{ maxWidth: "80px" }}>
  382. {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
  383. </td>
  384. </tr>
  385. ))}
  386. </tbody>
  387. </table>
  388. </div>
  389. <p>
  390. <ol start="3">
  391. <li>Temuan Lain:
  392. {this.props.dataSuratBA?.isEditTemuanLain ?
  393. <span>
  394. <input style={{ height: "30px", width: "250px" }} type='textarea' defaultValue={""} ref="inputTemuan"
  395. />
  396. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => {
  397. this.updateValueTemuanLain(), this.isEditTemuanLain()
  398. }} />
  399. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTemuanLain} />
  400. </span>
  401. : <Button onClick={this.isEditTemuanLain} className=" p-0 m-0" color="success">Input Data</Button>}
  402. <ol type="a">
  403. {
  404. // dataSuratBA?.temuanLain?.map((value, index) =>
  405. // <li>
  406. // {value}
  407. // <button onClick={removeTemuanLain(index)} className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
  408. // />
  409. // </li>) ||
  410. this.state?.temuanLain?.map((value, index) =>
  411. <li>
  412. {value}
  413. <button onClick={
  414. this.removeTemuanLain(index)
  415. } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
  416. />
  417. </li>)}
  418. </ol>
  419. </li>
  420. <li>Hal-hal yang memberatkan, sebagai berikut:
  421. {this.props.dataSuratBA?.isEditKeberatan ?
  422. <span>
  423. <input style={{ height: "30px", width: "250px" }} type='text' defaultValue={""} ref="inputMemberatkan" />
  424. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemberatkan(), this.isEditKeberatan() }} />
  425. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditKeberatan} />
  426. </span>
  427. : <Button onClick={this.isEditKeberatan} className=" p-0 m-0" color="success">Input Data</Button>}
  428. <ol type="a">
  429. {
  430. // dataSuratBA?.memberatkan?.map((value) =>
  431. // <li>
  432. // {value}
  433. // </li>)
  434. // ||
  435. this.state?.memberatkan?.map((value, index) =>
  436. <li>
  437. {value}
  438. <button onClick={
  439. this.removeMemberatkan(index)
  440. } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
  441. />
  442. </li>
  443. )}
  444. </ol>
  445. </li>
  446. <li>hal-hal yang meringankan, sebagai berikut:
  447. {this.props.dataSuratBA?.isEditMeringankan ?
  448. <span>
  449. <input type='text' defaultValue={""} ref="inputMeringankan" />
  450. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemringankan(), this.isEditMeringankan() }} />
  451. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditMeringankan} />
  452. </span>
  453. : <Button onClick={this.isEditMeringankan} className=" p-0 m-0" color="success">Input Data</Button>}
  454. <ol type="a">
  455. {
  456. // dataSuratBA?.meringankan?.map((value) =>
  457. // <li>
  458. // {value}
  459. // </li>)
  460. // ||
  461. this.state?.meringankan?.map((value, index) =>
  462. <li>
  463. {value}
  464. <button onClick={
  465. this.removeMeringankan(index)
  466. } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
  467. />
  468. </li>
  469. )}
  470. </ol>
  471. </li>
  472. <li>
  473. Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong>“Sanksi Administratif berupa
  474. {dataSuratBA?.isEditSanksi &&
  475. <span>
  476. <input type='text'
  477. defaultValue=""
  478. ref="inputsanksi"
  479. onChange={() => {
  480. this.setState({ sanksi: this.refs.inputsanksi.value }, this.setDataSuratBA)
  481. }}
  482. />
  483. <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditSanksi} />
  484. <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditSanksi() }} />
  485. </span>
  486. }
  487. {dataSuratBA?.sanksi || this.state?.sanksi ?
  488. <span onClick={this.isEditSanksi}>
  489. &nbsp;{dataSuratBA?.sanksi || this.state?.sanksi}
  490. </span>
  491. :
  492. <span onClick={this.isEditSanksi}>[Mohon Diisi]</span>
  493. }
  494. </strong>
  495. </li>
  496. </ol>
  497. </p>
  498. <p>
  499. Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
  500. </p>
  501. {/* {ENV === "production" &&
  502. <CopyToClipboard
  503. text={`https://sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
  504. options={{ asHtml: true }}
  505. >
  506. <div>
  507. <span className="btn-radius">
  508. <Button color id="Popover1" className="ml-0 mt-2 mb-2 btn-v1-outline-purple" onClick={() => {
  509. this.CloseCopied()
  510. }} ><span><em className="fas fa-project-diagram float-left mt-1 mr-1" />&nbsp;Link Dokumen</span>
  511. </Button>
  512. </span>
  513. <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
  514. <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
  515. </Popover>
  516. </div>
  517. </CopyToClipboard>
  518. }
  519. {ENV === "development" &&
  520. <CopyToClipboard
  521. text={`https://dev.sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
  522. options={{ asHtml: true }}
  523. >
  524. <div>
  525. <span className="btn-radius">
  526. <Button color id="Popover1" className="ml-0 mt-2 mb-2 btn-v1-outline-purple" onClick={() => {
  527. this.CloseCopied()
  528. }} ><span><em className="fas fa-project-diagram float-left mt-1 mr-1" />&nbsp;Link Dokumen</span>
  529. </Button>
  530. </span>
  531. <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
  532. <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
  533. </Popover>
  534. </div>
  535. </CopyToClipboard>
  536. } */}
  537. <div >
  538. <div className='header-ttd signature-border pt-1 pb-1'>
  539. <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
  540. </div>
  541. {/* <div id="ttd">
  542. {dataLaporan
  543. ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
  544. <div className='ttd-div'>
  545. <div className='sign-ttd'>
  546. <img
  547. className='sign-ttd'
  548. src={value.ttd.path} />
  549. </div>
  550. <div className='sign-nama'>
  551. <text>
  552. {value.nama}
  553. </text>
  554. </div>
  555. </div>
  556. )) : ""}
  557. </div> */}
  558. </div>
  559. </div>
  560. </div>
  561. </div >
  562. );
  563. }
  564. }
  565. // const mapStateToProps = (state) => ({ user: state.user, token: state.token });
  566. // export default connect(mapStateToProps)(BeritaAcara)
  567. export default BeritaAcara_Bypass