TableLaporan.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import Datatable from "@/components/Tables/Datatable";
  2. import { Button } from "reactstrap";
  3. import Link from "next/link";
  4. import moment from "moment";
  5. import "moment/locale/id";
  6. moment.locale("id");
  7. function TableLaporan({ listData }) {
  8. const sanksiMap = {
  9. 1: { label: "Ringan", className: "badge badge-success" },
  10. 2: { label: "Sedang", className: "badge badge-warning" },
  11. 3: { label: "Berat", className: "badge badge-danger" },
  12. };
  13. console.log(listData)
  14. return (
  15. <div className="card b">
  16. <div className="card-body card-over">
  17. {listData && (
  18. <Datatable options={{ responsive: false }}>
  19. <table className="table w-100" data-order='[[3, "asc"]]'>
  20. <thead>
  21. <tr>
  22. <th>No.Laporan</th>
  23. <th>Deskripsi Laporan</th>
  24. <th>Status TMT</th>
  25. <th>Status</th>
  26. <th>Aksi</th>
  27. </tr>
  28. </thead>
  29. <tbody>
  30. {listData.map((data) => {
  31. return (
  32. <tr key={data._id}>
  33. {/* <td>{data.no_laporan}</td> */}
  34. <td>
  35. <div className="media align-items-center">
  36. <div className="media-body d-flex">
  37. <div>
  38. <p style={{ display: "none" }}>{data.createdAt}</p>
  39. <h4>{data.no_laporan}</h4>
  40. <p>{moment(data.createdAt).format("DD-MM-YYYY")}</p>
  41. </div>
  42. </div>
  43. </div>
  44. </td>
  45. <td>
  46. <div className="table-desc">
  47. <div className="media align-items-center">
  48. <div className="media-body d-flex">
  49. <div>
  50. <h4 className="m-0">{data.pt.nama.length > 65 ? data.pt.nama.substring(0, 65) + "..." : data.pt.nama}</h4>
  51. <p className="w-105">{data.keterangan}</p>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </td>
  57. {/* <td>
  58. {data.sanksi?.masa_berlaku ? (
  59. new Date(data.sanksi?.masa_berlaku.to_date).getTime() + 86400000 > Date.now() ? <div className="badge badge-primary">Berlaku</div> : <div className="badge badge-red">Tidak berlaku</div>
  60. ) : ""}
  61. <p>
  62. {data.sanksi?.masa_berlaku?.to_date ? (<span className="m-0"> {moment(data.sanksi.masa_berlaku?.from_date).format("DD MMMM YYYY")} - {moment(data.sanksi.masa_berlaku?.to_date).format("DD MMMM YYYY")}</span>) : (<span className="m-0">6 Bulan</span>)}
  63. </p>
  64. </td>
  65. <td>{data.sanksi ? <div className="badge badge-green">Sudah ditetapkan</div> : <div className="badge badge-red">Belum ditetapkan</div>}
  66. {data?.sanksi?.levelSanksi && (
  67. <div className={sanksiMap[data.sanksi.levelSanksi]?.className}>
  68. Sanksi Administratif : {sanksiMap[data.sanksi.levelSanksi]?.label}
  69. </div>
  70. )}
  71. </td> */}
  72. <td>
  73. {data?.sanksi && (
  74. data.sanksi?.masa_berlaku?.to_date ? (
  75. <>
  76. {new Date(data.sanksi.masa_berlaku.to_date).getTime() + 86400000 > Date.now() ? (
  77. <div className="badge badge-primary">Berlaku</div>
  78. ) : (
  79. <div className="badge badge-red">Tidak berlaku</div>
  80. )}
  81. <p>
  82. <span className="m-0">
  83. {moment(data.sanksi.masa_berlaku.from_date).format("DD MMMM YYYY")}
  84. {" - "}
  85. {moment(data.sanksi.masa_berlaku.to_date).format("DD MMMM YYYY")}
  86. </span>
  87. </p>
  88. </>
  89. ) : (
  90. <p>
  91. <span className="m-0">6 Bulan</span>
  92. </p>
  93. )
  94. )}
  95. </td>
  96. <td>
  97. {data?.sanksi ? (
  98. <>
  99. <div className="badge badge-green">Sudah ditetapkan</div>
  100. {data?.sanksi?.levelSanksi && (
  101. <div className={sanksiMap[data.sanksi.levelSanksi]?.className}>
  102. Sanksi Administratif : {sanksiMap[data.sanksi.levelSanksi]?.label}
  103. </div>
  104. )}
  105. </>
  106. ) : (
  107. <div className="badge badge-red">Belum ditetapkan</div>
  108. )}
  109. </td>
  110. <td>
  111. <div className="ml-auto">
  112. <Link
  113. href={{
  114. pathname: data.sanksi ? "/app/sanksi/detail" : "/app/sanksi/proses",
  115. query: { id: data.sanksi?._id || data._id },
  116. }}
  117. >
  118. <Button className="btn-login" color style={{ borderRadius: "7px" }}>
  119. <span className="font-color-white">
  120. {data.sanksi ? "Detail" : "Proses Sanksi"}
  121. </span>
  122. </Button>
  123. </Link>
  124. </div>
  125. </td>
  126. </tr>
  127. );
  128. })}
  129. </tbody>
  130. </table>
  131. </Datatable>
  132. )}
  133. </div>
  134. </div>
  135. );
  136. }
  137. export default TableLaporan;