사용자 대상자 의뢰취소 복구 완료

This commit is contained in:
hylee 2024-01-12 10:14:53 +09:00
parent e8ced52128
commit 0787c72735
11 changed files with 637 additions and 15 deletions

View File

@ -532,6 +532,11 @@ public class SspnIdtmtController {
public ModelAndView fndthEduPrcsAplctPrdMngRegAjax( public ModelAndView fndthEduPrcsAplctPrdMngRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model , ModelMap model
// ㄴㅇㄹㄴㅇㄹㄴㅇㄹ
, HttpServletRequest request , HttpServletRequest request
) throws Exception { ) throws Exception {

View File

@ -30,6 +30,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String lastUpdusrId; // 수정자 private String lastUpdusrId; // 수정자
private String sndFlag; private String sndFlag;
private String popup;
//ve_prcs_aplct_prd //ve_prcs_aplct_prd
private String prcsAplctPrdOrd; //과정신청기간순번 private String prcsAplctPrdOrd; //과정신청기간순번
@ -50,7 +51,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
//ve_edu_aplct //ve_edu_aplct
private String eduAplctOrd; //교육신청순번 private String eduAplctOrd; //교육신청순번
private List<String> eduAplctOrdList; //교육신청순번 private List<String> eduAplctOrdList; //교육신청순번
private List<String> sspnIdtmtTrgtOrdList; //교육신청순번 private List<String> sspnIdtmtTrgtOrdList;
private String eduChasiOrd; //교육차시순번 private String eduChasiOrd; //교육차시순번
private String cnt; private String cnt;
@ -949,6 +950,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setSndFlag(String sndFlag) { public void setSndFlag(String sndFlag) {
this.sndFlag = sndFlag; this.sndFlag = sndFlag;
} }
public String getPopup() {
return popup;
}
public void setPopup(String popup) {
this.popup = popup;
}
public String getFeeSbmtYn() { public String getFeeSbmtYn() {
return feeSbmtYn; return feeSbmtYn;
} }

View File

@ -2,6 +2,8 @@ package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service;
import java.util.List; import java.util.List;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
public interface CndtnTrgtMngService { public interface CndtnTrgtMngService {
@ -27,6 +29,8 @@ public interface CndtnTrgtMngService {
//비공개메모 update //비공개메모 update
int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception; int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception;
void updateEduStateCdAndReqStateCdAjax(CndtnTrgtMngVO cndtnTrgtMngVO);

View File

@ -152,5 +152,9 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
public int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception { public int memoUpdate(CndtnTrgtMngVO cndtnTrgtInfoMngVO) throws Exception {
return update("cndtnTrgtInfoMngDAO.memoUpdate", cndtnTrgtInfoMngVO); return update("cndtnTrgtInfoMngDAO.memoUpdate", cndtnTrgtInfoMngVO);
} }
public void updateEduStateCdAndReqStateCdAjax(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
update("cndtnTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax", cndtnTrgtInfoMngVO);
}
} }

View File

@ -77,6 +77,11 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
public void bulkInsert(List<CndtnTrgtMngVO> trgtExcelVOList) { public void bulkInsert(List<CndtnTrgtMngVO> trgtExcelVOList) {
cndtnTrgtInfoMngDAO.bulkInsert(trgtExcelVOList); cndtnTrgtInfoMngDAO.bulkInsert(trgtExcelVOList);
} }
@Override
public void updateEduStateCdAndReqStateCdAjax(CndtnTrgtMngVO cndtnTrgtMngVO) {
cndtnTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO);
}
//비공개메모 update //비공개메모 update
@Override @Override
@ -84,4 +89,6 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
return cndtnTrgtInfoMngDAO.memoUpdate(cndtnTrgtInfoMngVO); return cndtnTrgtInfoMngDAO.memoUpdate(cndtnTrgtInfoMngVO);
} }
} }

View File

@ -255,6 +255,47 @@ public class CndtnTrgtMngController {
return "oprtn/cndtnSspnIdtmt/trgtList"; return "oprtn/cndtnSspnIdtmt/trgtList";
} }
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateEduStateCdAndReqStateCdAjax.do")
public ModelAndView updateEduStateCdAndReqStateCdAjax(
@ModelAttribute("vEPrcsDetailVO") CndtnTrgtMngVO cndtnTrgtMngVO
, 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(); //권한에 따른 로그인 정보 가져오기
cndtnTrgtMngVO.setLastUpdusrId(loginVO.getUniqId());
try {
cndtnTrgtInfoMngService.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO);
modelAndView.addObject("result", "success");
} catch (Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "");
}
return modelAndView;
}
/** /**
* @methodName : getUserWork * @methodName : getUserWork
* @author : 이호영 * @author : 이호영

View File

@ -1186,6 +1186,7 @@ public class CndtnPrcsInfoMngController {
return modelAndView; return modelAndView;
} }
/** /**
* 기소유예 교육확정상세 > 이수/미이수 체크버튼 처리 * 기소유예 교육확정상세 > 이수/미이수 체크버튼 처리
@ -1464,6 +1465,86 @@ public class CndtnPrcsInfoMngController {
} }
/**
* @methodName : fndthInstrAsgnmPopup
* @author : 이호영
* @date : 2024.01.11
* @description : 대상자목록에서 강제 배정하는 popup
* @param vEPrcsDetailVO
* @param model
* @param redirectAttributes
* @param session
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/popup/cndtnEduAsgnmPopup.do")
public String cndtnEduAsgnmPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
vEPrcsDetailVO.setSearchStatusArr(splited);
}
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
// 값만 존재하면됨
// popup일떄 접수중인것만 표시
vEPrcsDetailVO.setPopup("true");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "/oprtn/cndtnSspnIdtmt/popup/cndtnEduAsgnmPopup";
}
/** /**
* 1.기반강화 강사배치 팝업 function * 1.기반강화 강사배치 팝업 function

View File

@ -332,7 +332,6 @@
</select> </select>
<!-- 기소유예 대상자 확인 STEP01 --> <!-- 기소유예 대상자 확인 STEP01 -->
<select id="cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd" parameterClass="CndtnPrcsInfoMngVO" resultClass="String"> <select id="cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd" parameterClass="CndtnPrcsInfoMngVO" resultClass="String">
/* cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd */ /* cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd */
@ -455,7 +454,7 @@
)bb )bb
</select> </select>
<update id="cndtnTrgtInfoMngDAO.memoUpdate" parameterClass="CndtnPrcsInfoMngVO"> <update id="cndtnTrgtInfoMngDAO.memoUpdate" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.memoUpdate */ /* cndtnTrgtInfoMngDAO.memoUpdate */
UPDATE <include refid="CndtnTrgtInfoMngDAO.table_name"/> UPDATE <include refid="CndtnTrgtInfoMngDAO.table_name"/>
SET SET
@ -464,4 +463,19 @@
,RMRKS = #rmrks# ,RMRKS = #rmrks#
WHERE SSPN_IDTMT_TRGT_ORD = #sspnIdtmtTrgtOrd# WHERE SSPN_IDTMT_TRGT_ORD = #sspnIdtmtTrgtOrd#
</update> </update>
<update id="cndtnTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.memoUpdate */
UPDATE <include refid="CndtnTrgtInfoMngDAO.table_name"/>
SET
REQ_STATE_CD = #reqStateCd#
, EDU_STATE_CD = #eduStateCd#
, LAST_UPDT_PNTTM = SYSDATE
, LAST_UPDUSR_ID = #lastUpdusrId#
WHERE SSPN_IDTMT_TRGT_ORD IN
<iterate property="sspnIdtmtTrgtOrdList" open="(" close=")" conjunction=",">
#sspnIdtmtTrgtOrdList[]#
</iterate>
</update>
</sqlMap> </sqlMap>

View File

@ -408,7 +408,12 @@
<isNotEmpty property="searchKeyword"> <isNotEmpty property="searchKeyword">
AND b.prcs_nm LIKE '%'|| #searchKeyword# ||'%' AND b.prcs_nm LIKE '%'|| #searchKeyword# ||'%'
</isNotEmpty> </isNotEmpty>
<isNotEmpty property="popup">
AND a.DDLN_CD IS null
AND TO_DATE(a.STRT_PNTTM , 'YYYY.MM.DD') <![CDATA[ <= ]]> TO_DATE(SYSDATE , 'YYYY.MM.DD')
AND TO_DATE(a.END_PNTTM , 'YYYY.MM.DD') >= TO_DATE(SYSDATE , 'YYYY.MM.DD')
</isNotEmpty>

View File

@ -0,0 +1,245 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : instrAsgnmPopup.jsp
* @Description : 강사배치 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 안주영
* @since 2022.1.8
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%-- <script type="text/javascript" src="<c:url value='/js/ve/tmapJS.js'/>"></script> --%>
<script type="text/javascript">
</script>
<title>강사배치 팝업</title>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
console.log('<c:out value="${vEPrcsDetailVO.sspnIdtmtTrgtOrdList}" />')
});
function chkAll(obj) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked'));
}
function fn_insert() {
// 대상자 의뢰취소 - 취소에 취소 (복구)
function fn_updateCancelReqStatus(p_eduStateCd, p_reqStateCd) {
var prcsAplctPrdOrdList = [];
console.log('Start');
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
prcsAplctPrdOrdList.push($(this).val());
});
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (prcsAplctPrdOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"prcsAplctPrdOrdList" : prcsAplctPrdOrdList
// , "eduStateCd" : p_eduStateCd
// , "reqStateCd" : p_reqStateCd
};
if(!confirm("교육배정을 하시겠습니까?")){
return;
}
//================
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduStateCdAndReqStateCdAjax.do'/>";
// AJAX 호출을 통해 서버에 데이터 전송
$.ajax({
type : "POST",
url : url,
data : $.param(dataToSend, true), // 직렬화 , 컨트롤러에서 @ModelAttribute로 받을 수 있음
// contentType : 'application/json',
dataType : 'json',
success : function(returnData) {
if (returnData.result == "success") {
alert("변경 처리 되었습니다.");
window.location.reload();
} else {
alert("변경 중 오류가 발생하였습니다.");
}
},
error : function(jqXHR, textStatus, errorThrown) {
console.error("AJAX Error:", textStatus, errorThrown);
console.error("Response:", jqXHR.responseText);
}
});
}
}
</script>
</head>
<body>
<div class="area_popup supm_popup">
<div class="cont_popup">
<form:form id="insertForm" name="insertForm" method="post" onsubmit="return false;">
<!-- <input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/> -->
<!-- <input type="hidden" name="eduChasiOrd" id="eduChasiOrd"/> -->
<!-- <input type="hidden" name="userId" id="userId" /> -->
<!-- <input type="hidden" name="asgnmAprvlCd" id="asgnmAprvlCd" value="30"/> VE0019 배정 승인 코드 30 확정 -->
<input type="hidden" name="sspnIdtmtTrgtOrdList" id="sspnIdtmtTrgtOrdList" value="<c:out value="${vEPrcsDetailVO.sspnIdtmtTrgtOrdList}" />" />
</form:form>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="pageUnit" value="5" />
<input type="hidden" name="rsdne" value="" />
<div class="area_popup">
<div class="cont_popup">
<!-- list_top -->
<%-- <div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>강사검색</p>
</div>
<ve:select codeId="VE0008" name="searchEduSlctAreaCd" id="searchEduSlctAreaCd" css="class='sel_type1'"
selectedText="${vEEduAplctVO.rsdne}" defaultValue=''
defaultText='전체'
/>
<div class="util_right">
<input type="text" id="searchKeyword" name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="${vEPrcsDetailVO.searchKeyword }">
<button type="button" class="btn_type08" onclick="linkPage(1); return false;">검색</button>
</div>
</div>
</div> --%>
<div class="pop_tb_tit01">
<p>교육목록</p>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<div class="pop_tb_type01">
<!-- list -->
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 10%">
<col style="width: auto">
<col style="width: 180px;">
<col style="width: 180px;">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>NO</th>
<th>대면구분</th>
<th>과정명</th>
<th>신청기간</th>
<th>교육일자</th>
<th>신청자/정원</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td>
<input name="chk"
value="${list.prcsAplctPrdOrd}" title="Check" type="checkbox"/>
</td>
<td>
<c:out value="${status.count}"/>
</td>
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td>
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/>
</td>
<td>
<%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<div class="btn_wrap_pop btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type03" onclick="self.close();">닫기</button>
<button type="button" class="btn_type04" onclick="fn_insert();">신청</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</form:form>
</div>
</div>
</body>
</html>

View File

@ -239,10 +239,211 @@
$(".memoTr").fadeIn(); $(".memoTr").fadeIn();
} }
} }
function chkAll(obj) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked'));
}
// 대상자 의뢰취소
function fn_updateReqStatus(p_eduStateCd, p_reqStateCd) {
var sspnIdtmtTrgtOrdList = [];
console.log('Start');
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrdValue = $(this).val();
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrdValue);
// 교육상태가 대기/ 연기 인지 확인
// 그 외에 값이면 loop 나온 뒤 경고 alert 실행 후 function 종료
if($(this).data('eduinfo') != 10
&& $(this).data('eduinfo') != 50
){
chk = true;
return;
}
});
if(chk){
alert("교육상태가 '교육대기','연기' 외에 다른 상태값이 있습니다.");
// 초기화
sspnIdtmtTrgtOrdList = [];
return;
}
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList" : sspnIdtmtTrgtOrdList,
"eduStateCd" : p_eduStateCd,
"reqStateCd" : p_reqStateCd
};
if(!confirm("의뢰취소를 하시겠습니까?")){
return;
}
// AJAX 호출을 통해 서버에 데이터 전송
this.fn_cmmAjax(dataToSend);
}
// 대상자 의뢰취소 - 취소에 취소 (복구)
function fn_updateCancelReqStatus(p_eduStateCd, p_reqStateCd) {
var sspnIdtmtTrgtOrdList = [];
console.log('Start');
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrdValue = $(this).val();
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrdValue);
// 교육상태가 대기/ 연기 인지 확인
// 그 외에 값이면 loop 나온 뒤 경고 alert 실행 후 function 종료
if($(this).data('eduinfo') != 60
){
chk = true;
return;
}
});
if(chk){
alert("교육상태가 '교육취소'외에 다른 상태값이 있습니다.");
// 초기화
sspnIdtmtTrgtOrdList = [];
return;
}
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList" : sspnIdtmtTrgtOrdList,
"eduStateCd" : p_eduStateCd,
"reqStateCd" : p_reqStateCd
};
if(!confirm("의뢰취소복구를 하시겠습니까?")){
return;
}
this.fn_cmmAjax(dataToSend);
}
function fn_cmmAjax(dataToSend){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduStateCdAndReqStateCdAjax.do'/>";
// AJAX 호출을 통해 서버에 데이터 전송
$.ajax({
type : "POST",
url : url,
data : $.param(dataToSend, true), // 직렬화 , 컨트롤러에서 @ModelAttribute로 받을 수 있음
// contentType : 'application/json',
dataType : 'json',
success : function(returnData) {
if (returnData.result == "success") {
alert("변경 처리 되었습니다.");
window.location.reload();
} else {
alert("변경 중 오류가 발생하였습니다.");
}
},
error : function(jqXHR, textStatus, errorThrown) {
console.error("AJAX Error:", textStatus, errorThrown);
console.error("Response:", jqXHR.responseText);
}
});
}
// 강사 배치
function fn_eduAsgnm(prcsAplctPrdOrd) {
var sspnIdtmtTrgtOrdList = [];
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrdValue = $(this).val();
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrdValue);
// 교육상태가 대기/ 연기 인지 확인
// 그 외에 값이면 loop 나온 뒤 경고 alert 실행 후 function 종료
if($(this).data('eduinfo') != 10
){
chk = true;
return;
}
});
if(chk){
alert("교육상태가 '교육대기'외에 다른 상태값이 있습니다.");
// 초기화
sspnIdtmtTrgtOrdList = [];
return;
}
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList" : sspnIdtmtTrgtOrdList
};
var form = document.popForm;
form.sspnIdtmtTrgtOrdList.value = sspnIdtmtTrgtOrdList;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/fndthInstrAsgnmPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/cndtnEduAsgnmPopup.do'/>";
window.open("#", "_securityPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_securityPop";
form.submit();
}
</script> </script>
<title>교육과정관리</title> <title>교육과정관리</title>
</head> </head>
<body> <body>
<form id="popForm" name="popForm" method="post" >
<input type="hidden" id="sspnIdtmtTrgtOrdList" name="sspnIdtmtTrgtOrdList" value="" />
</form>
<form id="excelForm" name="excelForm" method="post" > <form id="excelForm" name="excelForm" method="post" >
</form> </form>
<form id="detailForm" name="detailForm" method="post" > <form id="detailForm" name="detailForm" method="post" >
@ -374,6 +575,7 @@
<div class="tb_type01"> <div class="tb_type01">
<table> <table>
<colgroup> <colgroup>
<col style="width: 5%">
<col style="width: 10%"> <col style="width: 10%">
<col style="width: 10%"> <col style="width: 10%">
<col style="width: 2px"> <col style="width: 2px">
@ -388,6 +590,7 @@
</colgroup> </colgroup>
<thead> <thead>
<tr> <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> <th>관할청</th>
@ -403,34 +606,37 @@
</thead> </thead>
<tbody> <tbody>
<c:forEach var="list" items="${list}" varStatus="status"> <c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount" onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> <tr class="listCount">
<%-- <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value='${list.prcsNm}'/> --%>
<!-- </td> -->
<td> <td>
<input name="chk"
value="${list.sspnIdtmtTrgtOrd}" data-eduInfo="${list.eduStateCd }"
data-reqInfo="${list.reqStateCd }" title="Check" type="checkbox"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" /> <c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%> <%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" /> <c:out value="${reqPnttm }" />
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" /> <c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="VEA008" code="${list.cmptntAthrt }"/> <ve:code codeId="VEA008" code="${list.cmptntAthrt }"/>
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.dBirth }" /> <c:out value="${list.dBirth }" />
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.trgtNm }" /> <c:out value="${list.trgtNm }" />
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="COM014" code="${list.sex }"/> <ve:code codeId="COM014" code="${list.sex }"/>
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.reqNmbr }" /> <c:out value="${list.reqNmbr }" />
</td> </td>
<td> <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/> <ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td> </td>
<td> <td>
@ -473,6 +679,9 @@
<div class="btn_center"> <div class="btn_center">
</div> </div>
<div class="btn_right"> <div class="btn_right">
<button type="button" class="btn_type04" onclick="fn_updateCancelReqStatus(10, 10); return false;">의뢰취소복구</button>
<button type="button" class="btn_type05" onclick="fn_updateReqStatus(60, 40); return false;">의뢰취소</button>
<!-- <button type="button" class="btn_type02" onclick="fn_eduAsgnm(); return false;">교육배정</button> -->
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button> <button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div> </div>
</div> </div>