|
|
@ -7,7 +7,7 @@ import _ from 'underscore' |
|
|
|
import './style.css' |
|
|
|
import './style.css' |
|
|
|
import { formatThousand, sortBy } from '../../../const/CustomFunc'; |
|
|
|
import { formatThousand, sortBy } from '../../../const/CustomFunc'; |
|
|
|
import { BASE_OSPRO, PROYEK_SEARCH} from "../../../const/ApiConst"; |
|
|
|
import { BASE_OSPRO, PROYEK_SEARCH} from "../../../const/ApiConst"; |
|
|
|
import { Tooltip } from 'antd'; |
|
|
|
import { Tooltip, Spin } from 'antd'; |
|
|
|
import { useTranslation } from 'react-i18next'; |
|
|
|
import { useTranslation } from 'react-i18next'; |
|
|
|
import axios from "../../../const/interceptorApi" |
|
|
|
import axios from "../../../const/interceptorApi" |
|
|
|
import autoTable from "jspdf-autotable"; |
|
|
|
import autoTable from "jspdf-autotable"; |
|
|
@ -47,6 +47,7 @@ const createMarkup = (element) => { |
|
|
|
const [HR, setAssignHR] = useState("") |
|
|
|
const [HR, setAssignHR] = useState("") |
|
|
|
const formatDate = "DD-MM-YYYY"; |
|
|
|
const formatDate = "DD-MM-YYYY"; |
|
|
|
const reportTemplateRef = useRef(null); |
|
|
|
const reportTemplateRef = useRef(null); |
|
|
|
|
|
|
|
const [loading, setLoading] = useState(true); |
|
|
|
const { t } = useTranslation(); |
|
|
|
const { t } = useTranslation(); |
|
|
|
const token = localStorage.getItem("token"); |
|
|
|
const token = localStorage.getItem("token"); |
|
|
|
|
|
|
|
|
|
|
@ -85,6 +86,7 @@ const createMarkup = (element) => { |
|
|
|
setMilestone([]) |
|
|
|
setMilestone([]) |
|
|
|
setPotentialRisks("") |
|
|
|
setPotentialRisks("") |
|
|
|
setApproval([]) |
|
|
|
setApproval([]) |
|
|
|
|
|
|
|
setLoading(false) |
|
|
|
} |
|
|
|
} |
|
|
|
}, [openDialog]); |
|
|
|
}, [openDialog]); |
|
|
|
|
|
|
|
|
|
|
@ -218,7 +220,11 @@ const createMarkup = (element) => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
</tr>); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -231,7 +237,7 @@ const createMarkup = (element) => { |
|
|
|
return( |
|
|
|
return( |
|
|
|
<tr key={index}> |
|
|
|
<tr key={index}> |
|
|
|
<td style={{...tdStyle, width:50, textAlign:'center' }}><p style={{ ...pStyle, fontWeight:'normal' }}>{ ChecklistNumber }</p></td> |
|
|
|
<td style={{...tdStyle, width:50, textAlign:'center' }}><p style={{ ...pStyle, fontWeight:'normal' }}>{ ChecklistNumber }</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.item ? val.item : "-"}</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.item ?? "-"}</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'> |
|
|
|
<td style={ tdStyle } className='plr-10'> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }}> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }}> |
|
|
|
{val.status_exist === true ? "Tersedia" : "Tidak tersedia"} |
|
|
|
{val.status_exist === true ? "Tersedia" : "Tidak tersedia"} |
|
|
@ -242,7 +248,12 @@ const createMarkup = (element) => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
</tr>); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -263,7 +274,11 @@ const createMarkup = (element) => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
</tr>) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -275,17 +290,22 @@ const createMarkup = (element) => { |
|
|
|
<tr key={index}> |
|
|
|
<tr key={index}> |
|
|
|
<td style={{ ...tdStyle, width:50, textAlign:'center' }} className='plr-10'> |
|
|
|
<td style={{ ...tdStyle, width:50, textAlign:'center' }} className='plr-10'> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }}> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }}> |
|
|
|
{val.level_risk ? val.level_risk : "-"} |
|
|
|
{val.level_risk ?? "-"} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.description ? val.description : "-"}</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.description ?? "-"}</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.preventive_risk ? val.preventive_risk : "-"}</p></td> |
|
|
|
<td style={ tdStyle } className='plr-10'><p style={{ ...pStyle, fontWeight:'normal' }}>{val.preventive_risk ?? "-"}</p></td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
) |
|
|
|
) |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
</tr>) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -296,20 +316,25 @@ const createMarkup = (element) => { |
|
|
|
return( |
|
|
|
return( |
|
|
|
<tr key={index}> |
|
|
|
<tr key={index}> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<p>{val.join_first_name ? val.join_first_name : val.join_first_name}</p> |
|
|
|
<p>{val.join_first_name ? val.join_first_name : "-"}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<p>{val.join_second_name ? val.join_second_name : val.join_second_name}</p> |
|
|
|
<p>{val.join_second_name ? val.join_second_name : "-"}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<td style={tdStyle} className='plr-10'> |
|
|
|
<p>{val.join_second_description ? val.join_second_description : val.join_second_description}</p> |
|
|
|
<p>{val.join_second_description ? val.join_second_description : "-"}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
) |
|
|
|
) |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign:"center" }}>-</td> |
|
|
|
|
|
|
|
</tr>) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -330,17 +355,25 @@ const createMarkup = (element) => { |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal', textAlign:'center' }}>{milestoneLetter}</p> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal', textAlign:'center' }}>{milestoneLetter}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td className='plr-10' style={tdStyle}> |
|
|
|
<td className='plr-10' style={tdStyle}> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal', color: '#000000' }}>{val.status}</p> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal', color: '#000000' }}>{val.status ?? "-"}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td className='plr-10' style={{ ...tdStyle, textAlign:'center' }}> |
|
|
|
<td className='plr-10' style={{ ...tdStyle, textAlign:'center' }}> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal', color: '#000000' }}> {moment(val.deadline).format(formatDate)}</p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal', color: '#000000' }}> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{moment(val.deadline).format(formatDate)} |
|
|
|
|
|
|
|
</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
); |
|
|
|
); |
|
|
|
}) |
|
|
|
}) |
|
|
|
); |
|
|
|
); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return (<tr><td><br></br></td></tr>); |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
<td style={{ ...tdStyle, textAlign: "center" }}>-</td> |
|
|
|
|
|
|
|
</tr>); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -358,7 +391,10 @@ const createMarkup = (element) => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
) |
|
|
|
) |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
return (<tr><td><br></br></td></tr>) |
|
|
|
return ( |
|
|
|
|
|
|
|
<tr> |
|
|
|
|
|
|
|
<td style={{ textAlign:"center" }}> -</td> |
|
|
|
|
|
|
|
</tr>) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -420,7 +456,7 @@ const createMarkup = (element) => { |
|
|
|
<p style={ pStyle }>Project description</p> |
|
|
|
<p style={ pStyle }>Project description</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}>{description ?? '-'}</p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}>{description != "" ? description : '-'}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
@ -436,7 +472,7 @@ const createMarkup = (element) => { |
|
|
|
<p style={ pStyle }>Lokasi Proyek</p> |
|
|
|
<p style={ pStyle }>Lokasi Proyek</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<p> {lokasi ?? '-' }</p> |
|
|
|
<p> {lokasi != "" ? lokasi :'-' }</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
@ -489,7 +525,7 @@ const createMarkup = (element) => { |
|
|
|
<p style={ pStyle }>Project Manager</p> |
|
|
|
<p style={ pStyle }>Project Manager</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<td colSpan="2" style={tdStyle}> |
|
|
|
<p> {PM}</p> |
|
|
|
<p> {PM ?? "-"}</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
@ -512,7 +548,13 @@ const createMarkup = (element) => { |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<td style={tdStyle}> |
|
|
|
<td style={tdStyle}> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }} dangerouslySetInnerHTML={createMarkup(objectives ?? '-')}></p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}> |
|
|
|
|
|
|
|
{objectives ? ( |
|
|
|
|
|
|
|
<span dangerouslySetInnerHTML={createMarkup(objectives)} /> |
|
|
|
|
|
|
|
) : ( |
|
|
|
|
|
|
|
'-' |
|
|
|
|
|
|
|
)} |
|
|
|
|
|
|
|
</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
@ -528,7 +570,11 @@ const createMarkup = (element) => { |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<td style={tdStyle}> |
|
|
|
<td style={tdStyle}> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
|
|
|
|
{scoupeProyek ? ( |
|
|
|
<li style={pStyle}>{ scoupeProyek ?? '-' }</li> |
|
|
|
<li style={pStyle}>{ scoupeProyek ?? '-' }</li> |
|
|
|
|
|
|
|
) : ( |
|
|
|
|
|
|
|
"-" |
|
|
|
|
|
|
|
)} |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
@ -568,7 +614,7 @@ const createMarkup = (element) => { |
|
|
|
<th style={emptyCellStyle}> |
|
|
|
<th style={emptyCellStyle}> |
|
|
|
<p> |
|
|
|
<p> |
|
|
|
{image ? ( |
|
|
|
{image ? ( |
|
|
|
<img src={`${BASE_OSPRO}/assets/image/` + image} style={{ width: "50px" }}></img> |
|
|
|
<img src={`${BASE_OSPRO}/assets/image/` + image} style={{ maxWidth: "100%" }}></img> |
|
|
|
) : ( |
|
|
|
) : ( |
|
|
|
'-' |
|
|
|
'-' |
|
|
|
)} |
|
|
|
)} |
|
|
@ -651,7 +697,13 @@ const createMarkup = (element) => { |
|
|
|
</th> |
|
|
|
</th> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }} dangerouslySetInnerHTML={createMarkup(lateProyek ?? '-')}></p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}> |
|
|
|
|
|
|
|
{lateProyek ? ( |
|
|
|
|
|
|
|
<span dangerouslySetInnerHTML={createMarkup(lateProyek)} /> |
|
|
|
|
|
|
|
) : ( |
|
|
|
|
|
|
|
"-" |
|
|
|
|
|
|
|
)} |
|
|
|
|
|
|
|
</p> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
|
</table> |
|
|
|
</table> |
|
|
@ -665,7 +717,13 @@ const createMarkup = (element) => { |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<th> |
|
|
|
<th> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }} dangerouslySetInnerHTML={createMarkup(projectSuccess ?? '-')}></p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}> |
|
|
|
|
|
|
|
{projectSuccess ? ( |
|
|
|
|
|
|
|
<span dangerouslySetInnerHTML={createMarkup(projectSuccess)} /> |
|
|
|
|
|
|
|
) : ( |
|
|
|
|
|
|
|
'-' |
|
|
|
|
|
|
|
)} |
|
|
|
|
|
|
|
</p> |
|
|
|
</th> |
|
|
|
</th> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
@ -680,7 +738,13 @@ const createMarkup = (element) => { |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<td> |
|
|
|
<td> |
|
|
|
<p style={{ ...pStyle, fontWeight:'normal' }} dangerouslySetInnerHTML={createMarkup(assumtionProyek ?? '-')}></p> |
|
|
|
<p style={{ ...pStyle, fontWeight: 'normal' }}> |
|
|
|
|
|
|
|
{assumtionProyek ? ( |
|
|
|
|
|
|
|
<span dangerouslySetInnerHTML={createMarkup(assumtionProyek)} /> |
|
|
|
|
|
|
|
) : ( |
|
|
|
|
|
|
|
'-' |
|
|
|
|
|
|
|
)} |
|
|
|
|
|
|
|
</p> |
|
|
|
</td> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
|