- IncidentTimelineUI VO 추가 - 장애 타임라인 화면 구현 지원
eapim-admin CI / build (push) Has been cancelled

- PortalNoticeManService 장애 상태 타임라인 로직 추가
- 메인 CSS에 타임라인 스타일 추가
This commit is contained in:
Rinjae
2026-08-04 13:10:31 +09:00
parent 6604f7c9e8
commit cc0ef13d5d
5 changed files with 543 additions and 33 deletions
@@ -18,17 +18,43 @@
var url = '<c:url value="/onl/apim/portalnotice/portalNoticeMan.json" />';
var url_view = '<c:url value="/onl/apim/portalnotice/portalNoticeMan.view" />';
var combo;
// 코드 상수 — PortalNoticeUI 와 동기화
var NOTICE_TYPE_INCIDENT = '3';
// IncidentState 라벨 — 상세 화면과 동일하게 유지
var STATE_LABELS = {
'INVESTIGATING': '조사중',
'IDENTIFIED': '원인 파악',
'MONITORING': '모니터링',
'RESOLVED': '해소',
'CANCELED': '취소'
};
function formatIncidentState(cellvalue, options, rowObject) {
if (!cellvalue) return '';
var label = STATE_LABELS[cellvalue] || cellvalue;
var closed = (cellvalue === 'RESOLVED' || cellvalue === 'CANCELED');
return closed
? '<span title="' + cellvalue + '">' + label + '</span>'
: '<span style="color: red;" title="' + cellvalue + '">' + label + '</span>';
}
function formatNoticeType(cellvalue, options, rowObject) {
if (!combo || !combo.noticeTypeList) {
return cellvalue;
}
for (var i = 0; i < combo.noticeTypeList.length; i++) {
if (combo.noticeTypeList[i].CODE == cellvalue) {
return combo.noticeTypeList[i].NAME;
var name = cellvalue;
if (combo && combo.noticeTypeList) {
for (var i = 0; i < combo.noticeTypeList.length; i++) {
if (combo.noticeTypeList[i].CODE == cellvalue) {
name = combo.noticeTypeList[i].NAME;
break;
}
}
}
return cellvalue;
// 장애인데 종료 시각이 없으면 아직 진행 중이다
if (cellvalue == NOTICE_TYPE_INCIDENT && rowObject && !rowObject.endAt) {
return '<span style="color: red;">' + name + '-진행중</span>';
}
return name;
}
function formatuseYn(cellvalue, options, rowObject) {
@@ -115,14 +141,15 @@
searchNoticeSubject: $('input[name=searchNoticeSubject]').val(),
searchNoticeDetail: $('input[name=searchNoticeDetail]').val()
},
colNames:['id', 'No.', '게시유형', '제목', '고정여부', '사용', '마지막 수정일', '등록일', '등록자', '조회수'],
colNames:['id', 'No.', '게시유형', '제목', '고정여부', '사용', '장애상태', '마지막 수정일', '등록일', '등록자', '조회수'],
colModel:[
{ name : 'id' , align:'center', key:true, hidden:true},
{ name : 'rowNum' , align:'center', width:60 },
{ name : 'noticeType' , align:'center', width:60, formatter: formatNoticeType },
{ name : 'noticeType' , align:'center', width:100, formatter: formatNoticeType },
{ name : 'noticeSubject' , align:'left' , width:300, formatter: formatFile },
{ name : 'fixYn' , align:'center', width:60, formatter: formatFixYn },
{ name : 'useYn' , align:'center', width:60, formatter: formatuseYn },
{ name : 'state' , align:'center', width:90, sortable:false, formatter: formatIncidentState },
{ name : 'lastModifiedDate', align:'center', width:120 , formatter: timeStampFormat},
{ name : 'createdDate' , align:'center', width:120, formatter: timeStampFormat },
{ name : 'inquirerName' , align:'center', width:100 },