프로젝트 등록자가 (관리자가 수정요청 한)프로젝트의 요청사항[수정] 클릭하여 입력메세지와, 항목화 된 수정요청 대상을 확인하여 수정작업 하도록 한다.
parent
5cf28edb71
commit
d160f60216
|
|
@ -1766,13 +1766,16 @@ public class RegiController {
|
|||
ModelAndView mav, HttpServletRequest request, HttpServletResponse response)throws Exception {
|
||||
|
||||
LOGGER.info("세션 아이디 : " + request.getSession().getAttribute("USERID") + " params userid : " + params.get("USER_ID"));
|
||||
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 관리자가 체크한 항목 조회
|
||||
|
||||
if(request.getSession().getAttribute("USERID").equals(params.get("USER_ID"))) {
|
||||
mav.setViewName("web/manage/select_modeify_call_reason");
|
||||
|
||||
EgovMap result = masterService.selectModeifyCallReason(params);
|
||||
MODI_ITEM_LIST = masterService.selectModifyItemBitmask(params);
|
||||
|
||||
mav.addObject("result", result);
|
||||
mav.addObject("modiItem", MODI_ITEM_LIST);
|
||||
}
|
||||
return mav;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -194,4 +194,6 @@ public interface RegiPageMapper {
|
|||
public ArrayList<HashMap<String, Object>> getHoleNamesByProjectCode(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -199,4 +199,6 @@ public interface RegiPageService {
|
|||
public int deleteOldDatas(HashMap<String, Object> params) throws Exception;
|
||||
|
||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -500,4 +500,10 @@ public class RegiPageServiceImpl implements RegiPageService {
|
|||
public List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception {
|
||||
return regiPageMapper.getInputdateRangeByUserid(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
||||
return regiPageMapper.selectModifyItemBitmask(params);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,19 @@
|
|||
DECODE(A.STATE,'4','insert','5','insert','') AS INS,
|
||||
DECODE(A.STATE,'4','delete','') AS DEL,
|
||||
DECODE(A.STATE,'5','true','false') AS CURSOR,
|
||||
B.SMS_MSG
|
||||
FROM TEMP_PROJECT_INFO A, TEMP_SMS_LOG B
|
||||
B.SMS_MSG,
|
||||
ST.MODIFY_ITEM
|
||||
FROM TEMP_PROJECT_INFO A
|
||||
LEFT JOIN (SELECT *
|
||||
FROM (SELECT L.*
|
||||
,ROW_NUMBER() OVER (PARTITION BY PROJECT_CODE ORDER BY REG_DATE DESC) AS RN
|
||||
FROM TEMP_SMS_LOG L)
|
||||
WHERE RN = 1) B ON A.PROJECT_CODE = B.PROJECT_CODE
|
||||
LEFT JOIN TEMP_MANAGE_STATE ST ON ST.PROJECT_CODE = A.PROJECT_CODE
|
||||
AND ST.STATE = '5'
|
||||
|
||||
WHERE
|
||||
NVL(A.USE_YN,' ') <> 'N' AND A.USERID = #{userId} AND
|
||||
A.PROJECT_CODE = B.PROJECT_CODE (+)
|
||||
NVL(A.USE_YN,' ') <> 'N' AND A.USERID = #{userId}
|
||||
]]>
|
||||
|
||||
<if test="projectName != null and projectName != ''">
|
||||
|
|
@ -1410,8 +1417,11 @@ INSERT INTO TEMP_SMS_LOG (
|
|||
<select id="selectModeifyCallReason" parameterType="map" resultType="EgovMap">
|
||||
<![CDATA[
|
||||
SELECT SMS_MSG
|
||||
FROM TEMP_SMS_LOG
|
||||
WHERE PROJECT_CODE = #{PROJECT_CODE}
|
||||
FROM (SELECT L.SMS_MSG
|
||||
,ROW_NUMBER() OVER (PARTITION BY L.PROJECT_CODE ORDER BY L.REG_DATE DESC) AS RN
|
||||
FROM TEMP_SMS_LOG L
|
||||
WHERE L.PROJECT_CODE = #{PROJECT_CODE})
|
||||
WHERE RN = 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
|
@ -1440,4 +1450,17 @@ INSERT INTO TEMP_SMS_LOG (
|
|||
AND tmi.REPORT_TYPE = 'CH'
|
||||
</select>
|
||||
|
||||
<!-- 수정요청사유 팝업 > 관리자가 체크한 수정대상 항목 조회 -->
|
||||
<select id="selectModifyItemBitmask" parameterType="map" resultType="java.util.HashMap">
|
||||
SELECT GRP.GRP_IDX
|
||||
,IT.IT_IDX
|
||||
,GRP.NAME AS GRP_NAME
|
||||
,GRP."DESC" AS GRP_DESC
|
||||
,IT.NAME AS ITEM_NAME
|
||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
||||
WHERE BITAND(#{MODIFY_ITEM}, IT.IT_IDX) > 0
|
||||
AND IT.USE_YN = 'Y'
|
||||
ORDER BY GRP."ORDER", IT."ORDER"
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -119,9 +119,11 @@ function delBtnClick(report_type, project_code) {
|
|||
|
||||
|
||||
// 수정 버튼
|
||||
function msgBtnTemplate(report_type, project_code, message){
|
||||
// function msgBtnTemplate(report_type, project_code, message){
|
||||
function msgBtnTemplate(report_type, project_code, modify_item, message){
|
||||
if (msg = "message"){
|
||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
||||
// return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"','"+modify_item+"'"+');">수정</button>';
|
||||
}
|
||||
else{
|
||||
return " ";
|
||||
|
|
@ -129,11 +131,11 @@ function msgBtnTemplate(report_type, project_code, message){
|
|||
}
|
||||
|
||||
//수정요청 클릭
|
||||
function selectModifycallBtnClick(projectCode, createUserid) {
|
||||
function selectModifycallBtnClick(projectCode, createUserid, modifyItem) {
|
||||
var url = "/selectModeifyCallReason.do";
|
||||
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid;
|
||||
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid + "&MODIFY_ITEM=" + modifyItem;
|
||||
|
||||
fn_openPopup(url, param, '480', '330');
|
||||
fn_openPopup(url, param, '480', '665');
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -199,7 +201,8 @@ function kendoGrid() {
|
|||
field: "message",
|
||||
width: 70,
|
||||
title: "요청사항",
|
||||
template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
||||
// template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
||||
template: "#if (data.state == '5') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid, data.modifyItem) #</div>#}#"
|
||||
},
|
||||
{
|
||||
field: "excelUpload",
|
||||
|
|
|
|||
|
|
@ -11,6 +11,83 @@
|
|||
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||
|
||||
<style>
|
||||
/* 1depth UL 전체 */
|
||||
.pop_contents > ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
visibility: visible !important;
|
||||
}
|
||||
|
||||
/* 1depth LI (제목) */
|
||||
.pop_contents > ul > li {
|
||||
margin-bottom: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
||||
.pop_contents ul ul {
|
||||
list-style: none;
|
||||
margin: 6px 0 0 0;
|
||||
padding-left: 0;
|
||||
|
||||
display: flex; /* 가로 정렬 핵심 */
|
||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
||||
gap: 10px; /* 라디오 간 간격 */
|
||||
}
|
||||
|
||||
.pop_contents ul ul input[type="checkbox"] {
|
||||
vertical-align: middle;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
/* 2depth 항목 */
|
||||
.pop_contents ul ul li {
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
i.help {
|
||||
position: relative;
|
||||
margin-left: 5px;
|
||||
border: 2px solid #89c2ff;
|
||||
padding: 0px 3px;
|
||||
border-radius: 10px;
|
||||
color: #89c2ff;
|
||||
background: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 800;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.help:hover::after {
|
||||
content: attr(data-tooltip);
|
||||
position: absolute;
|
||||
top: 24px;
|
||||
left: 0;
|
||||
white-space: normal;
|
||||
width: 240px;
|
||||
background: #333;
|
||||
color: #fff;
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
z-index: 9999;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.help:hover::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
left: 8px;
|
||||
border-width: 6px;
|
||||
border-style: solid;
|
||||
border-color: #333 transparent transparent transparent;
|
||||
z-index: 9999;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
|
||||
//html이 ready 된 상태에서 내용 적용.
|
||||
|
|
@ -36,10 +113,46 @@ function resize(){
|
|||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
||||
|
||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${result.smsMsg}</div>
|
||||
|
||||
</div>
|
||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${result.smsMsg}</div>
|
||||
</div>
|
||||
<c:choose>
|
||||
<c:when test="${empty modiItem }">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
||||
<div class="pop_contents">
|
||||
<c:set var="prevGrp" value="" />
|
||||
<ul>
|
||||
<c:forEach var="item" items="${modiItem}" varStatus="st">
|
||||
<!-- 새로운 그룹이 시작되는 경우 -->
|
||||
<c:if test="${prevGrp ne item.GRP_IDX}">
|
||||
<!-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 -->
|
||||
<c:if test="${!st.first}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
<!-- 그룹 제목 표시 -->
|
||||
<li data-grp="${item.GRP_IDX }">
|
||||
${item.GRP_NAME} <c:if test="${not empty item.GRP_DESC }"><i class="help" data-tooltip="${ item.GRP_DESC }">?</i></c:if>
|
||||
<ul>
|
||||
</c:if>
|
||||
<!-- 아이템 출력 -->
|
||||
<li>${item.ITEM_NAME}<c:if test="${!(st.last or item.GRP_IDX ne modiItem[st.index + 1].GRP_IDX)}">,</c:if>
|
||||
</li>
|
||||
<!-- prevGrp 최신화 -->
|
||||
<c:set var="prevGrp" value="${item.GRP_IDX}" />
|
||||
<!-- 마지막 루프일 경우 태그 닫기 -->
|
||||
<c:if test="${st.last}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Reference in New Issue