이지우 관리자 기소유예에 메모 기능 추가 및 목록에서 메모 일괄오픈 추가

This commit is contained in:
jiwoo 2024-01-11 09:52:01 +09:00
parent 49a5efadca
commit d3cc667db2
16 changed files with 348 additions and 11 deletions

View File

@ -215,7 +215,9 @@ public class NotifyManageServiceImpl extends EgovAbstractServiceImpl implements
// 상태값 text
String aprvlNm = this.getCodeNm(aprvlCd, "VE0003");
notifyManageVO.setNotifyCn("["+lctrDivNm+"]교육 상태값이 "+aprvlNm+"(으)로 변경되었습니다.");
//24.1.10 기소유예 담당자 요청으로 문구 변경
//notifyManageVO.setNotifyCn("["+lctrDivNm+"]교육 상태값이 "+aprvlNm+"(으)로 변경되었습니다.");
notifyManageVO.setNotifyCn("["+lctrDivNm+"]교육 상태값이 "+aprvlNm+"되었습니다.");
String notifyPath = "";

View File

@ -645,6 +645,7 @@ public class EgovCryptoUtil {
vo.setChrgNm(this.decrypt(vo.getChrgNm()));
vo.setUserNm(this.decrypt(vo.getUserNm()));
vo.setPhone(this.decrypt(vo.getPhone()));
if (StringUtils.isNotEmpty( vo.getTrgtNm()) ) vo.setTrgtNm(this.decrypt(vo.getTrgtNm().trim()));
// }
}

View File

@ -471,6 +471,7 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private List<String> rsltList; //결과보고 타겟ORD 목록
private String prfsnFld; //강사 전문분야
private String mberId; //사용자 로그인 ID
public String getSpecialWorkAllow() {
@ -2051,6 +2052,12 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setPrfsnFld(String prfsnFld) {
this.prfsnFld = prfsnFld;
}
public String getMberId() {
return mberId;
}
public void setMberId(String mberId) {
this.mberId = mberId;
}
}

View File

@ -2,6 +2,7 @@ package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service;
import java.util.List;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -25,7 +26,8 @@ public interface CndtnTrgtMngService {
List<CndtnTrgtMngVO> selectDuplChk(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
//비공개메모 update
int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception;

View File

@ -5,6 +5,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
@Repository("cndtnTrgtInfoMngDAO")
@ -144,6 +145,8 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
public List<CndtnTrgtMngVO> selectDuplChk(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return (List<CndtnTrgtMngVO>) list("cndtnTrgtInfoMngDAO.selectDuplChk", cndtnTrgtInfoMngVO);
}
public int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception {
return update("cndtnTrgtInfoMngDAO.memoUpdate", cndtnTrgtInfoMngVO);
}
}

View File

@ -8,6 +8,7 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
@ -74,4 +75,10 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
return cndtnTrgtInfoMngDAO.selectDuplChk(cndtnTrgtInfoMngVO);
}
//비공개메모 update
@Override
public int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception {
return cndtnTrgtInfoMngDAO.memoUpdate(cndtnTrgtInfoMngVO);
}
}

View File

@ -39,6 +39,7 @@ import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO;
@ -1741,6 +1742,49 @@ public class CndtnTrgtMngController {
return modelAndView;
}
/**
* 특이사항 등록/수정 처리
*/
@RequestMapping("/oprtn/cndtnSspnIdtmt/updateRmrksAjax.do")
public ModelAndView updateRmrksAjax(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
int successCnt = 0;
try {
cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
cndtnTrgtInfoMngService.memoUpdate(cndtnTrgtInfoMngVO);
successCnt = successCnt+1;
} catch (Exception ex) {
ex.printStackTrace();
}
if (successCnt == 0) {
modelAndView.addObject("result", "fail");
} else {
modelAndView.addObject("result", "success");
}
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//

View File

@ -68,6 +68,7 @@
, a.req_state_cd AS reqStateCd
, a.atch_file_id AS atchFileId
, a.prcs_aplct_prd_ord_cmplt AS prcsAplctPrdOrdCmplt
, a.rmrks AS rmrks
, a.edu_aplct_ord AS eduAplctOrd
</sql>
@ -413,5 +414,15 @@
AND b.D_BIRTH = #dBirth#
AND b.SEX = #sex#
)bb
</select>
</select>
<update id="cndtnTrgtInfoMngDAO.memoUpdate" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.memoUpdate */
UPDATE <include refid="CndtnTrgtInfoMngDAO.table_name"/>
SET
LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
,RMRKS = #rmrks#
WHERE SSPN_IDTMT_TRGT_ORD = #sspnIdtmtTrgtOrd#
</update>
</sqlMap>

View File

@ -260,7 +260,7 @@
AND a.use_yn = 'Y'
AND a.aprvl_cd != '40' /* 취소된 내역 안 보여줌 */
AND le.MBER_NM IS NOT NULL
<!-- AND le.MBER_NM IS NOT NULL -->
</select>
@ -271,6 +271,7 @@
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
le.MBER_NM AS userNm,
le.mber_id AS mberId,
<include refid="VEEduMIXDAO.select_column_name"/>,
CASE
WHEN EXISTS (/* 설문조사 */
@ -282,7 +283,8 @@
lersltD.respond_id = a.USER_ID
AND a.edu_aplct_ord = lersltD.edu_aplct_ord ) THEN 1
ELSE 0
END AS qestRsltExists
END AS qestRsltExists,
vsit.TRGT_NM AS trgtNm
FROM
<include refid="VEEduMIXDAO.table_name"/> a
JOIN ve_prcs_aplct_prd vpap ON
@ -292,6 +294,8 @@
/* AND vpap.PRCS_APLCT_PRD_ORD = vadi.PRCS_APLCT_PRD_ORD */
JOIN LETTNGNRLMBER le ON
a.USER_ID = le.ESNTL_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit ON
a.USER_ID = vsit.USER_ID
WHERE
1=1
<isNotEmpty property="prcsOrd">
@ -318,7 +322,7 @@
</isNotEmpty>
AND a.use_yn = 'Y'
AND le.MBER_NM IS NOT NULL
<!-- AND le.MBER_NM IS NOT NULL -->
/* 취소된 내역 안 보여줌 */
/*
@ -5833,7 +5837,7 @@ VALUES
INNER JOIN lettngnrlmber b
ON a.scrty_dtrmn_trget_id = b.mber_id
WHERE a.author_code = 'ROLE_USER_MEMBER'
AND b.MBER_NM IS NOT NULL
<!-- AND b.MBER_NM IS NOT NULL -->
<isNotEmpty property="searchKeyword">
AND
b.MBER_NM LIKE '%'||#searchKeyword#||'%'

View File

@ -507,6 +507,7 @@
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 10%">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 5%">
@ -518,6 +519,7 @@
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>신청자</th>
<th>아이디</th>
<th>이메일</th>
<th>핸드폰</th>
<th>신청일</th>
@ -542,7 +544,10 @@
</c:choose>
</td>
<td>
<c:out value="${list.userNm}"/>
<c:out value="${list.trgtNm}"/>
</td>
<td>
<c:out value="${list.mberId}"/>
</td>
<td>
<c:out value="${list.email}"/>

View File

@ -132,10 +132,40 @@
}
function updateHiddenMemo(){
$("#rmrks").val($("#hiddenMemo").val());
var data1 = new FormData(document.getElementById("hiddenMemoForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/oprtn/cndtnSspnIdtmt/updateRmrksAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="hiddenMemoForm" name="hiddenMemoForm" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value="${info.sspnIdtmtTrgtOrd}" />" />
<input type="hidden" name="rmrks" id="rmrks" value="" />
</form>
<form id="delForm" name="delForm">
<input type="hidden" name="sspnIdtmtTrgtOrd" value=""/>
@ -537,6 +567,30 @@
</div>
</c:if>
<!-- 비공개 메보 정보 -->
<div class="tb_tit01">
<p>비공개 메모</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tr>
<th scope="row">
<p>내용</p>
</th>
<td class="tb_alram">
<div>
<textarea name="hiddenMemo" id="hiddenMemo"><c:out value="${info.rmrks}" /></textarea>
<button type="button" class="btn_type08" onclick="updateHiddenMemo(); return false;">메모 저장</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@ -34,6 +34,18 @@
input:read-only{
background-color: #ededed;
}
button.memoBtn{
height: 40px;
font-size: 18px;
text-align: center;
vertical-align: middle;
letter-spacing: -0.8px;
border-radius: 5px;
box-sizing: border-box;
border: 1px solid #888;
background-color: #131de14a;
color: #888;
}
</style>
<script type="text/javascript">
@ -73,6 +85,15 @@
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltExcel.do'/>";
listForm.submit();
}
function showMemo(obj){
if($(obj).is(".on") == true){
$(obj).removeClass("on");
$(".memoTr").fadeOut();
}else{
$(obj).addClass("on");
$(".memoTr").fadeIn();
}
}
</script>
<title>교육과정관리</title>
</head>
@ -163,6 +184,7 @@
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<button class="memoBtn" onclick="showMemo(this);">메모열기</button>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '10' or cndtnTrgtInfoMngVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '20'}">selected</c:if>>20줄</option>
@ -249,6 +271,14 @@
<c:out value="${list.prsctrNm }" />
</td>
</tr>
<c:if test="${!empty list.rmrks }">
<tr class="memoTr" style="display:none;">
<td colspan="11" style="text-align:left; background-color:#131de14a;">
<c:out value="${list.rmrks}" />
</td>
</tr>
</c:if>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>

View File

@ -143,10 +143,40 @@
}
}
function updateHiddenMemo(){
$("#rmrks").val($("#hiddenMemo").val());
var data1 = new FormData(document.getElementById("hiddenMemoForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/oprtn/cndtnSspnIdtmt/updateRmrksAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="hiddenMemoForm" name="hiddenMemoForm" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value="${info.sspnIdtmtTrgtOrd}" />" />
<input type="hidden" name="rmrks" id="rmrks" value="" />
</form>
<form id="delForm" name="delForm">
<input type="hidden" name="sspnIdtmtTrgtOrd" value=""/>
@ -567,6 +597,30 @@
</c:if>
<!-- 비공개 메보 정보 -->
<div class="tb_tit01">
<p>비공개 메모</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tr>
<th scope="row">
<p>내용</p>
</th>
<td class="tb_alram">
<div>
<textarea name="hiddenMemo" id="hiddenMemo"><c:out value="${info.rmrks}" /></textarea>
<button type="button" class="btn_type08" onclick="updateHiddenMemo(); return false;">메모 저장</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@ -34,6 +34,18 @@
input:read-only{
background-color: #ededed;
}
button.memoBtn{
height: 40px;
font-size: 18px;
text-align: center;
vertical-align: middle;
letter-spacing: -0.8px;
border-radius: 5px;
box-sizing: border-box;
border: 1px solid #888;
background-color: #131de14a;
color: #888;
}
</style>
<script type="text/javascript">
@ -217,6 +229,16 @@
}
});
}
function showMemo(obj){
if($(obj).is(".on") == true){
$(obj).removeClass("on");
$(".memoTr").fadeOut();
}else{
$(obj).addClass("on");
$(".memoTr").fadeIn();
}
}
</script>
<title>교육과정관리</title>
</head>
@ -336,6 +358,7 @@
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<button class="memoBtn" onclick="showMemo(this);">메모열기</button>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '10' or cndtnTrgtInfoMngVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '20'}">selected</c:if>>20줄</option>
@ -422,6 +445,14 @@
<c:out value="${list.prsctrNm }" />
</td>
</tr>
<c:if test="${!empty list.rmrks }">
<tr class="memoTr" style="display:none;">
<td colspan="11" style="text-align:left; background-color:#131de14a;">
<c:out value="${list.rmrks}" />
</td>
</tr>
</c:if>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>

View File

@ -143,10 +143,39 @@
}
}
function updateHiddenMemo(){
$("#rmrks").val($("#hiddenMemo").val());
var data1 = new FormData(document.getElementById("hiddenMemoForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/oprtn/cndtnSspnIdtmt/updateRmrksAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="hiddenMemoForm" name="hiddenMemoForm" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value="${info.sspnIdtmtTrgtOrd}" />" />
<input type="hidden" name="rmrks" id="rmrks" value="" />
</form>
<form id="delForm" name="delForm">
<input type="hidden" name="sspnIdtmtTrgtOrd" value=""/>
@ -566,7 +595,30 @@
</c:if>
<!-- 비공개 메보 정보 -->
<div class="tb_tit01">
<p>비공개 메모</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tr>
<th scope="row">
<p>내용</p>
</th>
<td class="tb_alram">
<div>
<textarea name="hiddenMemo" id="hiddenMemo"><c:out value="${info.rmrks}" /></textarea>
<button type="button" class="btn_type08" onclick="updateHiddenMemo(); return false;">메모 저장</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@ -38,6 +38,18 @@
input:read-only{
background-color: #ededed;
}
button.memoBtn{
height: 40px;
font-size: 18px;
text-align: center;
vertical-align: middle;
letter-spacing: -0.8px;
border-radius: 5px;
box-sizing: border-box;
border: 1px solid #888;
background-color: #131de14a;
color: #888;
}
</style>
<script type="text/javascript">
@ -243,7 +255,16 @@
}
}
});
}
}
function showMemo(obj){
if($(obj).is(".on") == true){
$(obj).removeClass("on");
$(".memoTr").fadeOut();
}else{
$(obj).addClass("on");
$(".memoTr").fadeIn();
}
}
</script>
<title>교육과정관리</title>
</head>
@ -406,6 +427,7 @@
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<button class="memoBtn" onclick="showMemo(this);">메모열기</button>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '10' or cndtnTrgtInfoMngVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '20'}">selected</c:if>>20줄</option>
@ -509,6 +531,14 @@
<c:out value="${list.prsctrNm }" />
</td>
</tr>
<c:if test="${!empty list.rmrks }">
<tr class="memoTr" style="display:none;">
<td colspan="11" style="text-align:left; background-color:#131de14a;">
<c:out value="${list.rmrks}" />
</td>
</tr>
</c:if>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>