TableLaporan.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. <div className="ml-auto">
  74. <Link
  75. href={{
  76. pathname: data.sanksi ? "/app/sanksi/detail" : "/app/sanksi/proses",
  77. query: { id: data.sanksi?._id || data._id },
  78. }}
  79. >
  80. <Button className="btn-login" color style={{ borderRadius: "7px" }}>
  81. <span className="font-color-white">
  82. {data.sanksi ? "Detail" : "Proses Sanksi"}
  83. </span>
  84. </Button>
  85. </Link>
  86. </div>
  87. </td>
  88. </tr>
  89. );
  90. })}
  91. </tbody>
  92. </table>
  93. </Datatable>
  94. )}
  95. </div>
  96. </div>
  97. );
  98. }
  99. export default TableLaporan;