andifebri 3 年之前
父節點
當前提交
a400d8df03

+ 2 - 2
actions/log.js

@@ -1,9 +1,9 @@
 import { get } from "../config/request";
 import axios from "@/config/axios";
 
-export const getLog = async (token, ptId) => {
+export const getLog = async (token, laporan_id) => {
 	try {
-		let url = `/pemantauan/${ptId}`;
+		let url = `/pemantauan/${laporan_id}`;
 		const res = await axios.get(url, {
 			headers: {
 				Authorization: token,

+ 6 - 1
actions/pelaporan.js

@@ -5,13 +5,18 @@ export const getPelaporan = async (token, query = {}) => {
 	try {
 		let url = "/laporan";
 		if (query != null) {
-			const { jadwal, evaluasi } = query;
+			const { jadwal, evaluasi, pt_id, delegasi } = query;
 			url += "?";
 			const parseURL = [];
 			if (jadwal) {
 				parseURL.push(`jadwal=true`);
 			} else if (evaluasi) {
 				parseURL.push(`evaluasi=true`);
+			} else if (delegasi) {
+				parseURL.push(`delegasi=true`);
+			}
+			if (pt_id) {
+				parseURL.push(`pt_id=${pt_id}`);
 			}
 
 			url += parseURL.join("&");

+ 6 - 0
components/Layout/Menu.js

@@ -9,6 +9,12 @@ const Menu = [
 		icon: "icon-notebook",
 		translate: "sidebar.nav.PEMANTAUAN",
 	},
+	{
+		name: "Laporan Delegasi",
+		path: "/app/laporan-delegasi",
+		icon: "icon-notebook",
+		translate: "sidebar.nav.LAPORAN_DELEGASI",
+	},
 	{
 		name: "Pelaporan",
 		path: "/app/pelaporan",

+ 6 - 0
components/Layout/MenuLLDIKTI.js

@@ -9,6 +9,12 @@ const Menu = [
 		icon: "icon-notebook",
 		translate: "sidebar.nav.PEMANTAUAN",
 	},
+	{
+		name: "Laporan Delegasi",
+		path: "/app/laporan-delegasi",
+		icon: "icon-notebook",
+		translate: "sidebar.nav.LAPORAN_DELEGASI",
+	},
 	{
 		name: "Pelaporan",
 		path: "/app/pelaporan",

+ 3 - 1
components/Main/DetailLaporan.js

@@ -27,7 +27,9 @@ function DetailLaporan({ data, noTitle = false, noStatus = false }) {
 					<FormGroup row>
 						<Col md="4">Nomor yang dapat dihubungi:</Col>
 						<Col md="8">
-							<strong>{data.user.no_hp}</strong>
+							<strong>
+								{data.user.no_hp} {data.user.verified && "(Terverifikasi)"}
+							</strong>
 						</Col>
 					</FormGroup>
 					{data.user.email && (

+ 21 - 6
components/Main/Timeline.js

@@ -1,8 +1,9 @@
 import moment from "moment";
-import { API_URL } from "@/env";
+import { useSelector } from "react-redux";
 
 function Timeline({ data, noFile = false, noJadwal = false }) {
 	const date = data && [...new Set(data.map((e) => moment(e.createdAt).format("DD MMMM YYYY")))];
+	const user = useSelector((state) => state.user);
 	return (
 		<ul className="timeline-alt">
 			{date.map((value) => (
@@ -29,24 +30,38 @@ function Timeline({ data, noFile = false, noJadwal = false }) {
 													/>
 													<p className="m-0">
 														<strong>
-															{data.user.nama} - {data.user.isPublic ? "Umum" : data.user.role.nama}
+															{!data.user.isPrivate && data.user.nama ? data.user.nama : "Rahasia"} - {data.user.isPublic ? "Umum" : data.user.role.nama}
 														</strong>
 														<br />
 														{data.keterangan}
 														<br />
+														{data.alasan && (
+															<>
+																{data.alasan}
+																<br />
+															</>
+														)}
 														{data.sanksi?.no_sanksi ? `No. Sanksi ${data.sanksi.no_sanksi}` : `No. Laporan ${data.laporan.no_laporan}`}
 														<p className="text-muted m-0">{moment(data.createdAt).format("hh:mm")}</p>
 													</p>
 												</div>
-												{!noJadwal && data.jadwal && (
+												{!data.user.isPublic && user?.role.id !== 2022 && data.jawaban && (
+													<>
+														<p className="text-muted my-2">Jawaban</p>
+														<div className="p-2">
+															<b>{data.jawaban}</b>
+														</div>
+													</>
+												)}
+												{!data.user.isPublic && data.jadwal && (
 													<>
 														<p className="text-muted my-2">Jadwal Pemeriksaan</p>
-														<p>
+														<div className="p-2">
 															Tanggal {moment(data.jadwal.dari_tanggal).format("DD MMMM YYYY")} - {moment(data.jadwal.sampai_tanggal).format("DD MMMM YYYY")}
-														</p>
+														</div>
 													</>
 												)}
-												{!noFile && data.dokumen.length ? (
+												{!data.user.isPublic && data.dokumen?.length ? (
 													<>
 														<p className="text-muted my-2">Dokumen</p>
 														{data.dokumen.map((e) => (

+ 2 - 3
components/PT/JawabanBanding/DetailJawaban.js

@@ -1,9 +1,8 @@
 import { FormGroup, Button } from "reactstrap";
 import Scrollable from "@/components/Common/Scrollable";
 import Link from "next/link";
-import { API_URL } from "@/env";
 
-function DetailJawaban({ data }) {
+function DetailJawaban({ data, sanksiId }) {
 	return (
 		<>
 			<p className="lead bb">Jawaban Permohonan Banding</p>
@@ -46,7 +45,7 @@ function DetailJawaban({ data }) {
 				<Link
 					href={{
 						pathname: "/pt/dokumen-perbaikan/detail",
-						query: { id: data._id },
+						query: { id: sanksiId },
 					}}
 				>
 					<Button color="primary">Perbaiki Dokumen</Button>

+ 1 - 1
components/PT/JawabanBanding/TableSanksiJawaban.js

@@ -26,7 +26,7 @@ function TableSanksi({ listData, to, linkName }) {
 											<div className="media-body d-flex">
 												<div>
 													<h4 className="m-0">{data.laporan.pt.nama}</h4>
-													<p>{data.keterangan.length > 70 ? dataketerangan.substring(0, 70) + "..." : data.keterangan}</p>
+													<p>{data.keterangan.length > 70 ? data.keterangan.substring(0, 70) + "..." : data.keterangan}</p>
 												</div>
 											</div>
 										</div>

+ 0 - 1
components/PT/JawabanKeberatan/ModalPermohonan.js

@@ -192,7 +192,6 @@ export class ModalPermohonan extends Component {
 											)}
 										</Field>
 										<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-										<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 									</div>
 								</FormGroup>
 							</ModalBody>

+ 0 - 1
components/PT/Keberatan/ModalPermohonan.js

@@ -194,7 +194,6 @@ export class ModalPermohonan extends Component {
 											)}
 										</Field>
 										<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-										<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 									</div>
 								</FormGroup>
 							</ModalBody>

+ 1 - 1
components/PT/TableSanksi.js

@@ -25,7 +25,7 @@ function TableSanksi({ listData, to, linkName }) {
 											<div className="media-body d-flex">
 												<div>
 													<h4 className="m-0">{data.laporan.pt.nama}</h4>
-													<p>{data.keterangan.length > 70 ? data.sanksi.description.substring(0, 70) + "..." : data.keterangan}</p>
+													<p>{data.keterangan.length > 70 ? data.keterangan.substring(0, 70) + "..." : data.keterangan}</p>
 												</div>
 											</div>
 										</div>

+ 0 - 1
components/Pemeriksaan/InputEvaluasi.js

@@ -218,7 +218,6 @@ export default class InputEvaluasi extends Component {
 									)}
 								</Field>
 								<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-								<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 							</div>
 						</FormGroup>
 						<FormGroup row>

+ 2 - 2
components/Sanksi/Ringkasan.js

@@ -12,7 +12,7 @@ function Ringkasan({ dataLaporan, dataPelanggaran, dataUpload }) {
 						<FormGroup row>
 							<Col md="4">Nomor Laporan:</Col>
 							<Col md="8">
-								<strong>{dataLaporan._number}</strong>
+								<strong>{dataLaporan.no_laporan}</strong>
 							</Col>
 						</FormGroup>
 						<FormGroup row>
@@ -37,7 +37,7 @@ function Ringkasan({ dataLaporan, dataPelanggaran, dataUpload }) {
 							<Col md="4">Keterangan Laporan:</Col>
 							<Col md="8">
 								<Scrollable height="100px" className="list-group">
-									<p>{dataLaporan.description}</p>
+									<p>{dataLaporan.keterangan}</p>
 								</Scrollable>
 							</Col>
 						</FormGroup>

+ 1 - 2
components/Sanksi/UploadSurat.js

@@ -111,8 +111,7 @@ export class UploadSurat extends Component {
 								);
 							}}
 						</DropzoneWrapper>
-						{/* <span className="form-text">Multiple files upload</span> */}
-						<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
+						<span className="form-text">Multiple files upload</span>
 					</div>
 				</FormGroup>
 			</form>

+ 1 - 2
pages/app/banding/detail.js

@@ -59,7 +59,7 @@ const checkIfFilesAreCorrectType = (files) => {
 };
 const jawabanBandingSchema = Yup.object().shape({
 	status: Yup.string().required("Harap Diisi"),
-	dokumen: Yup.array().min(1, " ").required("Required").test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
+	dokumen: Yup.array().min(1, "Minimal terdapat 1 dokumen").required("Required").test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
 });
 class JawabanBanding extends Component {
 	constructor(props) {
@@ -255,7 +255,6 @@ class JawabanBanding extends Component {
 																		)}
 																	</Field>
 																	<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-																	<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 																</div>
 															</FormGroup>
 															<FormGroup row>

+ 0 - 1
pages/app/keberatan/detail.js

@@ -278,7 +278,6 @@ class DetailKeberatan extends Component {
 																		)}
 																	</Field>
 																	<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-																	<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 																</div>
 															</FormGroup>
 															{/* <FormGroup>

+ 1 - 1
pages/app/pelaporan/index.js

@@ -29,7 +29,7 @@ class Pelaporan extends Component {
 					Pelaporan
 					<div className="ml-auto"></div>
 					<Link href="/app/penjadwalan">
-						<button className="btn btn-sm btn-secondary text-sm">Penjadwalan Evaluasi &gt;</button>
+						<button className="btn btn-sm btn-secondary text-sm">next &gt;</button>
 					</Link>
 				</div>
 				<Row>

+ 2 - 2
pages/app/pemeriksaan/index.js

@@ -30,10 +30,10 @@ class Pemeriksaan extends Component {
 					<div>Evaluasi</div>
 					<div className="ml-auto">
 						<Link href="/app/penjadwalan">
-							<button className="btn btn-sm btn-secondary text-sm">&lt; Penjadwalan Evaluasi</button>
+							<button className="btn btn-sm btn-secondary text-sm">&lt; back</button>
 						</Link>
 						<Link href="/app/sanksi">
-							<button className="btn btn-sm btn-secondary text-sm">Sanksi &gt;</button>
+							<button className="btn btn-sm btn-secondary text-sm">next &gt;</button>
 						</Link>
 					</div>
 				</div>

+ 0 - 1
pages/app/pencabutan-sanksi/detail.js

@@ -272,7 +272,6 @@ class JawabanPencabutanSanksi extends Component {
 																		)}
 																	</Field>
 																	<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
-																	<p className="mrgn-top-5">Ukuran setiap dokumen maksimal 15mb</p>
 																</div>
 															</FormGroup>
 															<FormGroup>

+ 2 - 2
pages/app/penjadwalan/index.js

@@ -30,10 +30,10 @@ class Penjadwalan extends Component {
 					<div>Penjadwalan Evaluasi</div>
 					<div className="ml-auto">
 						<Link href="/app/pelaporan">
-							<button className="btn btn-sm btn-secondary text-sm">&lt; Pelaporan</button>
+							<button className="btn btn-sm btn-secondary text-sm">&lt; back</button>
 						</Link>
 						<Link href="/app/pemeriksaan">
-							<button className="btn btn-sm btn-secondary text-sm">Pemeriksaan &gt;</button>
+							<button className="btn btn-sm btn-secondary text-sm">next &gt;</button>
 						</Link>
 					</div>
 				</div>

+ 1 - 1
pages/pt/jawaban-banding/detail.js

@@ -51,7 +51,7 @@ class JawabanBanding extends Component {
 										<Row>
 											<Col lg={12}>
 												<DetailSanksi data={sanksi.data} />
-												<DetailJawaban data={sanksi.data.jawaban.banding} />
+												<DetailJawaban data={sanksi.data.jawaban.banding} sanksiId={sanksi.data._id} />
 											</Col>
 										</Row>
 									</CardBody>