2025-10-15 18:13 사용자 신청화면 작업 중

This commit is contained in:
myname 2025-10-15 18:13:49 +09:00
parent 2200d1e7dd
commit 2746ccc2a7
5 changed files with 967 additions and 18 deletions

View File

@ -0,0 +1,26 @@
package kcc.ve.aplct.cmdTrgt.service;
import org.springframework.web.servlet.ModelAndView;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
public interface CmdTrgtService {
void insertVeEduAplct(VEEduAplctVO paramVO);
void updateAprvlCd(VEEduAplctVO paramVO) throws Exception;
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
// String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
//교육대상자 확인
ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO);
//교육대상자 확인 - new
ModelAndView checkSspnIdtmt(CmdTrgtMngVO cndtnTrgtInfoMngVO);
}

View File

@ -0,0 +1,297 @@
package kcc.ve.aplct.cmdTrgt.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import kcc.com.cmm.LoginVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.cmdTrgt.service.CmdTrgtService;
import kcc.ve.cmm.VeSendSMS;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctSndHstryService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.impl.CmdTrgtMngDAO;
@Service("cmdTrgtService")
public class CmdTrgtServiceImpl implements CmdTrgtService {
//과정
@Resource(name="vEEduAplctDAO")
private VEEduAplctDAO vEEduAplctDAO;
// 기소유예 관련
@Resource(name="cmdTrgtInfoMngDAO")
private CmdTrgtMngDAO cmdTrgtMngDAO;
//snd_hstry id gen
@Resource(name = "sndGnrService")
private EgovIdGnrService sndGnrService;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//강사 정보 MIX
@Resource(name="vEInstrMixService")
private VEInstrMixService vEInstrMixService;
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
vEEduAplctDAO.insertVeEduAplct(paramVO);
}
@Override
public void updateAprvlCd(VEEduAplctVO paramVO) throws Exception {
vEEduAplctDAO.updateReg(paramVO);
}
@Override
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO);
}
@Override
public ModelAndView findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String result="";
String msg="";
String id="";
String next="";
try {
result="success";
//
// // 교육 신청한 대상자 조회
id = cmdTrgtMngDAO.findByTrgtNmAndDBirthAndEduStateCd(cndtnTrgtInfoMngVO);
if(StringUtils.isNotEmpty(id)) {
msg = "이미 신청한 대상자 입니다.";
// 신청한 대상자가 없으면
// 신청하지 않은 대상자가 있는지 조회
}else {
id = cmdTrgtMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd(cndtnTrgtInfoMngVO);
msg = "대상자가 없습니다.";
if(StringUtils.isNotEmpty(id)) {
msg = "확인됐습니다.";
next = "Y";
}
}
} catch (Exception e) {
result="fail";
msg = "오류가 발생하였습니다 관리자에게 문의하세요. ";
e.printStackTrace();
// TODO: handle exception
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", result);
modelAndView.addObject("id", id);
modelAndView.addObject("next", next);
return modelAndView;
}
@Override
public ModelAndView checkSspnIdtmt(CmdTrgtMngVO cmdTrgtMngVO) {
/*
* step0.해당 계정으로 신청한 정보가 있는지 확인 하고, 있다면 동일한 정보로 신청했는지 확인 할것.
* step1.신청 가능한 대상이 있는지 찾는다.
* 있으면 신청처리 but 2개 이상이면 선택하도록, 1개면 신청 처리
* step2.대상이 없으면 기존 이력이 있는지 확인
* 있으면 기존 사유 노출
* step3.기존 이력이 없으면 관리자에게 문의 하도록 한다.
* */
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String result="";
String msg="";
String id="";
String next=""; //?
String smsYn = ""; //휴대폰 인증 번호 발송 여부
try {
result="";
//
// // step0.해당 계정으로 신청한 정보가 있는지 확인 하고, 있다면 동일한 정보로 신청했는지 확인 할것.
CmdTrgtMngVO cndtnTrgtMngVO = cmdTrgtMngDAO.checkSspnIdtmtNewStep0(cmdTrgtMngVO);
/*
if ("F".equals(cndtnTrgtMngVO.getResultCd())) { //해당 계정으로 신청한 정보중에 다른 개인정보(이름, 생년월일, 성별) 사용해서 신청한 내용이 있다.
result="fail";
msg = "하나의 계정은 한 명의 대상자만 신청할 수 있습니다.";
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", result);
return modelAndView;
}
*/
// step1.신청 가능한 대상이 있는지 찾는다.
List<CmdTrgtMngVO> cmdTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep1(cmdTrgtMngVO);
System.out.println(cmdTrgtMngVOList);
System.out.println(cmdTrgtMngVOList.size());
if (cmdTrgtMngVOList==null || cmdTrgtMngVOList.size()<=0) { //대상자가 없음
//step2.대상이 없으면 기존 이력이 있는지 확인
cmdTrgtMngVOList = cmdTrgtMngDAO.checkSspnIdtmtStep2(cmdTrgtMngVO);
if (cmdTrgtMngVOList==null || cmdTrgtMngVOList.size()<=0) { //step3.기존 이력이 없으면 관리자에게 문의 하도록 한다.
result = "fail";
msg = "대상자 정보와 입력하신 정보가 일치하지 않습니다.\n담당자에게 문의 바랍니다.\n문의: 055-792-0223";
next = "Y"; //?
}else if (cmdTrgtMngVOList.size()>0) {
//기존 이력의 사유를 사용자에게 전달한다.
result = "fail";
msg = "기존 이력을 전달한다.------";
if ("20".equals(cmdTrgtMngVOList.get(0).getEduStateCd())) {
msg = "이미 이수한 이력이 있습니다. 관리자에게 문의 바랍니다.";
next = "Y"; //?
/*
}else if ("25".equals(cmdTrgtMngVOList.get(0).getEduStateCd())) {
msg = "이미 신청한 교육이 있습니다.";
next = ""; //?
}else if ("30".equals(cmdTrgtMngVOList.get(0).getEduStateCd())) {
msg = "현재 진행중인 교육이 있습니다.";
next = ""; //?
}else if ("40".equals(cmdTrgtMngVOList.get(0).getEduStateCd())) {
msg = "미이수한 이력이 있습니다. 관리자에게 문의 바랍니다.";
next = "Y"; //?
}else if ("60".equals(cmdTrgtMngVOList.get(0).getEduStateCd())) {
msg = "교육취소 이력이 있습니다. 관리자에게 문의 바랍니다.";
next = "Y"; //?
*/
}
}
}else if (cmdTrgtMngVOList.size()==1) { //성공 신청 진행
result = "success";
msg = "";
id = cmdTrgtMngVOList.get(0).getCmdTrgtInfoOrd();
next = "Y";
smsYn = "Y";
//next = Integer.toString(cmdTrgtMngVOList.size()); //대상자
}else if (cmdTrgtMngVOList.size()>1) { //대상 리스트 던질것
//to do
result = "success";
msg = "";
id = ""; //여기에 대상 선택을 위한 데이터를 넣어준다.
next = "N";
smsYn = "Y";
modelAndView.addObject("cndtnTrgtMngVOList", cmdTrgtMngVOList);
//cndtnTrgtMngVOList.get(0).getreg
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
}
//핸드폰으로 인증번호 발송
if ("Y".equals(smsYn) && !"Y".equals(cmdTrgtMngVO.getChkYn())) {
//인증번호 생성
String code = RandomStringUtils.randomNumeric(6);
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
VeSendSMS sendSMS = new VeSendSMS();
cmdTrgtMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cmdTrgtMngVO); //핸드폰번호 복호화
vEEduAplctVO.setEduAplctOrd("기소유예 대상자 인증");
vEEduAplctVO.setSndCn("안녕하세요. 저작권배움터 기소유예 담당자입니다.\n인증번호는 " + code + " 입니다.");
vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone());
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
String snd_ord = sndGnrService.getNextStringId();
vEEduAplctVO.setSndHstryOrd(snd_ord);
vEEduAplctVO.setSndId(loginVO.getUniqId());
vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
vEEduAplctVO.setSndCd("10");
vEEduAplctVO.setTrgtId(loginVO.getUniqId());
vEEduAplctSndHstryService.insert(vEEduAplctVO);
//인증번호 row 생성 (기존 강사인증 테이블 사용)
VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO();
vEInstrDetailVO.setEmail(vEEduAplctVO.getClphone());
vEInstrDetailVO.setCrtfdNumber(code);
vEInstrDetailVO.setUserId(loginVO.getUniqId());
vEInstrMixService.deleteInstrEmailCrtfd(vEInstrDetailVO);
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
}
/*
if(StringUtils.isNotEmpty(id)) {
msg = "이미 신청한 대상자 입니다.";
// 신청한 대상자가 없으면
// 신청하지 않은 대상자가 있는지 조회
}else {
id = cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd(cndtnTrgtInfoMngVO);
msg = "대상자가 없습니다.";
if(StringUtils.isNotEmpty(id)) {
msg = "확인됐습니다.";
next = "Y";
}
}
*/
} catch (Exception e) {
result="fail";
msg = "오류가 발생하였습니다 관리자에게 문의하세요. ";
next = "Y";
e.printStackTrace();
// TODO: handle exception
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("id", id);
modelAndView.addObject("result", result);
modelAndView.addObject("next", next); //fail & Y = 관리자 문의 버튼 노출
return modelAndView;
}
}

View File

@ -34,8 +34,8 @@ import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService;
import kcc.ve.aplct.cmdTrgt.service.CmdTrgtService;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctOnlnService;
@ -50,6 +50,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
@ -165,9 +166,12 @@ public class CmdTrgtController {
private CmmUseDAO cmmUseDAO;
//온라인콘텐츠과정 관리
@Resource(name = "sspnIdtmtService")
private SspnIdtmtService sspnIdtmtService;
//@Resource(name = "sspnIdtmtService")
//private SspnIdtmtService sspnIdtmtService;
@Resource(name = "cmdTrgtService")
private CmdTrgtService cmdTrgtService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
@ -365,6 +369,10 @@ public class CmdTrgtController {
, HttpServletRequest request
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
model.addAttribute("loginVO", loginVO);
System.out.println("s_actionaaaaaaaaaaa");
String s_action = request.getParameter("action"); //insert or select
System.out.println("s_action");
System.out.println(s_action);
@ -529,7 +537,7 @@ public class CmdTrgtController {
vEEduAplctReqVO.setLctrDivCd(vEPrcsDetailVODetail.getLctrDivCd());
vEEduAplctReqVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEEduAplctReqVO.setLctrDivCd(p_lctr_div_cd);
VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO);
VEEduAplctVO vEEduAplctVO = cmdTrgtService.findByAprvlCd(vEEduAplctReqVO);
// VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null &&
if(vEEduAplctVO != null && StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) {
@ -685,7 +693,7 @@ public class CmdTrgtController {
//암호화
vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO);
vEEduAplctVO.setRndsOrd(vEPrcsDetailVO.getSspnIdtmtTrgtOrd()); //2024-02-07 추가 신청서 정보에 대상자 정보를 넣어야 추후 구분이 가능해서 추가함
sspnIdtmtService.insertVeEduAplct(vEEduAplctVO);
cmdTrgtService.insertVeEduAplct(vEEduAplctVO);
CndtnTrgtMngVO cndtnTrgtMngVO = new CndtnTrgtMngVO();
@ -920,7 +928,7 @@ public class CmdTrgtController {
String result = "false";
try {
sspnIdtmtService.updateAprvlCd(vEEduAplctVO);
cmdTrgtService.updateAprvlCd(vEEduAplctVO);
result = "success";
} catch (Exception e) {
@ -940,7 +948,7 @@ public class CmdTrgtController {
*/
@RequestMapping("/web/ve/aplct/cmdTrgt/userConfirmAjax.do")
public ModelAndView userConfirmAjax(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
@ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
@ -956,7 +964,7 @@ public class CmdTrgtController {
return modelAndView;
}
return sspnIdtmtService.checkSspnIdtmt(cndtnTrgtInfoMngVO);
return cmdTrgtService.checkSspnIdtmt(cndtnTrgtInfoMngVO);
/*
try {
@ -992,7 +1000,7 @@ public class CmdTrgtController {
*/
@RequestMapping("/web/ve/aplct/cmdTrgt/userNewConfirmAjax.do")
public ModelAndView userNewConfirmAjax(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
@ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
@ -1022,11 +1030,11 @@ public class CmdTrgtController {
System.out.println(cndtnTrgtInfoMngVO.getTrgtNm());
*/
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO);
//return modelAndView;
return sspnIdtmtService.checkSspnIdtmt(cndtnTrgtInfoMngVO);
return cmdTrgtService.checkSspnIdtmt(cndtnTrgtInfoMngVO);
}

View File

@ -366,12 +366,6 @@ public class SspnIdtmtController {
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
System.out.println("loginVO.getMembName()");
System.out.println(loginVO.getMembName());
System.out.println(loginVO.getMembBirth());
System.out.println(loginVO.getMembCelnum());
System.out.println(loginVO.getSexCode());
model.addAttribute("loginVO", loginVO);
String s_action = request.getParameter("action"); //insert or select

View File

@ -0,0 +1,624 @@
<%--
Class Name : eduAplctPopList.jsp
Description : 신청팝업
Modification Information
1.강의 종류(청소년, 성인 ... VE0011) 및 설문 종류 (10-기본, 20-신청자, 30-강사) 및 상태(등록, 완료) 에 맞는 설문 레이어 팝업을 만든다.
수정일 수정자 수정내용
------- -------- ---------------------------
2021.12.02 조용준 내용
author : 조용준
since : 2021.12.02
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<script type="text/javascript" src="${pageContext.request.contextPath}/kccadrPb/usr/script/popup.js"></script>
<script type="text/javaScript" language="javascript">
//본인인증 확인 여부 체크
var chkYn = "";
/*
function fncGoScholList(){
linkPage(1);
}
function linkPage(pageNo){
var data = {
pageIndex : pageNo,
searchKeyword : $("#searchKeyword").val(),
searchCondition : $("#searchCondition").val(),
pageUnit : 5,
formId : $("#formId").val(),
}
fncScholList(data);
}
function fncScholList(paramObj) {
if(paramObj == undefined || paramObj == ''){
paramObj = {
pageIndex : 1,
searchKeyword : "",
searchCondition : "",
pageUnit : 5,
formId : $("#formId").val(),
};
}
// 학교 리스트 팝업 호출
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/scholPopList.do"
, 500
, 600
, paramObj
, "N"
, "scholPop"
);
}
*/
function fn_qa(){
location.href = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/main.do";
}
//제출
function fn_new_confirm(p_prcsAplctPrdOrd){
var form = document.confirmForm;
console.log('$("#dBirth").val() : ' , $('#dBirth').val());
var dBirth = $('#dBirth').val().replace(/\./g, '');
var trgtNm = $('#trgtNm').val();
var sex = $('input[name="sex"]:checked').val();
var clphone = $('#clphone').val();
$('#regForm input[name="prcsAplctPrdOrd"]').val(p_prcsAplctPrdOrd);
if (trgtNm==""){
alert("성명을 입력해주세요.");
return;
}
console.log('dBirth : ' , dBirth);
if (!dBirth){
alert("주민번호앞자리를 입력해주세요.");
return;
}
if (sex==""){
alert("성별을 입력해주세요.");
return;
}
if (clphone==""){
alert("휴대폰 번호를 입력해주세요.");
return;
}
form.trgtNm.value = trgtNm;
form.dBirth.value = dBirth;
form.sex.value = sex;
form.clphone.value = clphone;
form.chkYn.value = chkYn;
var data = new FormData(document.getElementById("confirmForm"));
//var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/userConfirmAjax.do";
var url = "${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/userNewConfirmAjax.do";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
if(chkYn != 'Y'){ //본인인증 전
alert("인증번호를 확인해주세요.");
$("#chkNo").show();
$("#chkBtn").hide();
//기존정보 변경 막기
$("#trgtNm").prop('readonly', true);
$("#date").prop('readonly', true);
$("#clphone").prop('readonly', true);
$(".duet-date__toggle").remove();
$("#sexM").attr("onclick", "return(false);");
$("#sexF").attr("onclick", "return(false);");
}else{ //본인인증 후
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
// 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID
if(returnData.next == "Y")
{
//sspnIdtmtTrgtOrd = returnData.id;
//fncEduReg(trgtNm, dBirth, returnData.id);
$('#target_confirm_popup-close').click();
fn_eduRegPopup(trgtNm, dBirth, clphone, returnData.id);
}else if(returnData.next == "N"){
//동일 대상자 중에서 선택할수 있도록 처리해야 한다.
//forMulti
$('#confirmBtns').hide();
$('#VOList').show();
returnData.cndtnTrgtMngVOList.forEach(
function (el, index){
var v_forMulti = '';
v_forMulti = v_forMulti +"<tr>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.reqNmbr;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.prsctrNm;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
//v_forMulti = v_forMulti +el.sspnIdtmtTrgtOrd;
v_forMulti = v_forMulti +"<button type=\"button\" class=\"btnType05\" onclick=\"fn_new_select('"+el.sspnIdtmtTrgtOrd+"')\">선택</button>";
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"</tr>";
$('#forMulti').after(v_forMulti);
}
);
}
}
}else{
alert(returnData.msg);
if(returnData.next == "Y" && returnData.result == "fail")
{
//문의 하기 버튼 노출을 한다.
$('#qaBtn').show();
}
}
// fn_target_confirm_clean();
// location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
//$('#target_confirm_popup-close').click();
}
//선택
function fn_new_select(p_sspnIdtmtTrgtOrd){
var dBirth = $('#dBirth').val().replace(/\./g, '');
var trgtNm = $('#trgtNm').val();
var clphone = $('#clphone').val();
$('#target_confirm_popup-close').click();
fn_eduRegPopup(trgtNm, dBirth, clphone, p_sspnIdtmtTrgtOrd);
}
function fncChkNo(){
if($("#crtfdNumber").val().length != 6){
alert("인증번호 6자리를 입력해주세요.");
return false;
}
var data = new FormData(document.getElementById("newSrvyPopupForm"));
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/web/ve/instr/instrInfo/emailCrtfdChkAjax.do",
data: data,
dataType:"json",
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(returnData.result == 'success'){
alert("확인되었습니다.");
chkYn = "Y";
$("#chkNo").hide();
fn_new_confirm('${vEEduChasiVO.prcsAplctPrdOrd}');
} else {
alert("인증번호가 일치하지 않습니다.");
return false;
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
$(document).ready(function(){
/*
boardCaptionDetailToggle4();
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
var activeTarget = $('[data-tooltip-con="sub36_pop02"]');
activeTarget.hide();
$('[data-tooltip="sub01_pop02"]').focus();
});
//레이어팝업 초정 이동 시 필요한 data 값 추가
var btnLast = $('.popup_cont').find('.page').find('button:last-child');
btnLast.attr('data-focus-next','sub36_pop02');
btnLast.attr('data-focus','sub36_pop02_close');
*/
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
var activeTarget = $('[data-tooltip-con="sub36_pop02"]');
activeTarget.hide();
$('[data-info="${vEEduChasiVO.prcsAplctPrdOrd}"][data-tooltip="sub36_pop02"]').focus();
});
/* setTimeout(function(){
$('#dBirth .duet-date__input').attr("title","ex)1973.12.23 생년월일을 선택하세요.");
$('.calendar_wrap').each(function(){
//$(this).find('.duet-date__input').attr('onkeydown','this.value=dateSettingHere(this.value);');
$(this).find('.duet-date__input').attr('onblur','this.value=dateSettingHere(this.value);');
});
},10) */
//성명
if ('${loginVO.membName}'!=''){
$('#trgtNm').val('${loginVO.membName}');
}
//생년월일
if ('${fn:substring(loginVO.membBirth, 0 ,4)}'>='0'){
$('#year').val('${fn:substring(loginVO.membBirth, 0 ,4)}');
}
if ('${fn:substring(loginVO.membBirth, 4 ,6)}'>='0'){
$('#month').val('${fn:substring(loginVO.membBirth, 4 ,6)}');
}
if ('${fn:substring(loginVO.membBirth, 6 ,8)}'>='0'){
$('#day').val('${fn:substring(loginVO.membBirth, 6 ,8)}');
}
var year = $("#year").val();
var month = $("#month").val();
var day = $("#day").val();
$("#dBirth").val(year+"."+month+"."+day);
//휴대폰번호
if ('${loginVO.membCelnum}'!=''){
$('#clphone').val('${loginVO.membCelnum}');
}
//성별sexMsexM
if ('${loginVO.sexCode}'=='M'){
$('input[id="sexM"]').attr("checked", true);
}else if ('${loginVO.sexCode}'=='F'){
$('input[id="sexF"]').attr("checked", true);
}
})
</script>
<!-- 일정 상세 -->
<form id="statusChgForm" name="statusChgForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${chasiSrvyList[0].prcsAplctPrdOrd}' />"/>
<input type="hidden" name="aplctStateCd" id="aplctStateCd" value="20"/>
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${vEEduChasiVO.eduAplctOrd}">
<input type="hidden" name="lctrDivCd" value="50"/>
</form>
<form id="newSrvyPopupForm" name="newSrvyPopupForm" method="post" >
<input type="hidden" name="siteId" id="siteId" value="${vEEduChasiVO.siteId}">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${vEEduChasiVO.eduAplctOrd}">
<input type="hidden" name="eduChasiOrd" id="eduChasiOrd" value="${vEEduChasiVO.eduChasiOrd}">
<input type="hidden" name="qustnrTmplatId" id="qustnrTmplatId" value="${chasiSrvyList[0].qustnrTmplatId}">
<input type="hidden" name="qestnrId" id="qestnrId" value="${chasiSrvyList[0].qestnrId}">
<input type="hidden" name="qestmInfoSize" id="qestmInfoSize" value="${fn:length(chasiSrvyList)}">
<div class="popup_wrap popType01" data-info="${vEEduChasiVO.prcsAplctPrdOrd}" tabindex="0" data-tooltip-con="sub36_pop02" data-focus="sub36_pop02" data-focus-prev="sub36_pop02_close">
<div class="popup_tit">
<p>교육대상자 확인</p> <button class="btn_popup_close tooltip-close" data-focus="sub36_pop02_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01" style="overflow:visible;">
<table>
<caption>교육대상자 확인 : 성명, 주민번호앞자리, 성별 등의 정보입력</caption>
<colgroup>
<col style="width:38%;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">성명</th>
<td>
<label for="trgtNm" class="label">성명 입력</label>
<input type="text" id="trgtNm">
</td>
</tr>
<tr>
<th scope=“row”>생년월일 8자리 (ex.1988.01.01)</th>
<td>
<div class="calendar_wrap">
<input type="hidden" value="" id="dBirth"/>
<select name="" id="year" class="selType1">
<c:forEach var="index" begin="1925" end="2024">
<c:choose>
<c:when test="${fn:substring(loginVO.membBirth, 0 ,4) eq index}">
<option value="${index}" selected>${index}</option>
</c:when>
<c:otherwise>
<option value="${index}">${index}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>&ensp;년 &ensp;
<select name="" id="month" class="selType1">
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>&ensp;월 &ensp;
<select name="" id="day" class="selType1">
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>&ensp;일 &ensp;
<script>
$(function(){
$(".calendar_wrap select").change(function(){
var year = $("#year").val();
var month = $("#month").val();
var day = $("#day").val();
$("#dBirth").val(year+"."+month+"."+day);
})
})
</script>
<!-- <duet-date-picker identifier="date" id="dBirth" class="dBirth" min="1940-01-01"></duet-date-picker>
<script>
$(function(){
setTimeout(function(){
$('.calendar_wrap').each(function(){
//$(this).find('.duet-date__input').attr('onkeydown','this.value=dateSettingHere(this.value);');
$(this).find('.duet-date__input').attr('onblur','this.value=dateSettingHere(this.value);');
$(this).find('.duet-date__input').attr('onkeyup','this.value=dateSettingHere(this.value);');
});
},1000)
})
var dBirth = document.querySelector("#dBirth");
var DATE_FORMAT = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/
dBirth.dateAdapter = {
parse: function parse() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""
var createDate = arguments.length > 1 ? arguments[1] : undefined
var matches = value.match(DATE_FORMAT)
if (matches) {
return createDate(matches[3], matches[2], matches[1])
}
},
format: function format(date) {
if (date.getMonth() < 9) {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat(date.getDate())
}
} else {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat(date.getDate())
}
}
},
}
// 달력 플러그인 실행
dBirth.localization = {
placeholder: '날짜를 입력하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchStartDt",
name: "eduHopeDt"
}
dBirth.addEventListener("duetFocus", function (e) {
calendarSetting();
dateSettingHere();
});
function dateSettingHere(objValue) {
var v = objValue.replace("..", ".");
if (v.match(/^\d{4}$/) !== null) {
if (event.keyCode == "8") {
// 백스페이스 키를 누를 때 '.' 안생기게
} else {
v = v + '.';
}
} else if (v.match(/^\d{4}\.\d{2}$/) !== null) {
if (event.keyCode == "8") {
// 백스페이스 키를 누를 때 '.' 안생기게
} else {
v = v + '.';
}
}
if (v.length==10){
setTimeout(function(){
$('#dBirth').val(v);
},100)
}else{
$('#dBirth').val('123');
}
// '-' 막기
if (event.keyCode == "189" || event.keyCode == "109") {
event.preventDefault();
return v;
} else {}
return v;
}
</script> -->
</div>
<%-- <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script> --%>
</td>
</tr>
<tr>
<th scope=“row”>휴대폰 번호</th>
<td>
<input type="text" id="clphone" onkeyup="onlyNumber(this);" maxlength="11">
</td>
</tr>
<tr id="chkNo" style="display:none;">
<th scope=“row”>인증번호</th>
<td>
<input type="text" name="crtfdNumber" id="crtfdNumber" onkeyup="onlyNumber(this);" maxlength="6">
<button type="button" class="btnType06" onclick="fncChkNo();">인증하기</button>
</td>
</tr>
<tr>
<th scope=“row”>성별</th>
<td>
<input type="radio" id="sexM" name="sex" value="M"> <label class="" for="sexM">남성</label>
<input type="radio" id="sexF" name="sex" value="F"> <label class="" for="sexF">여성</label>
</td>
</tr>
</tbody>
</table>
</div>
<div class="pop_btn_wrap btn_layout01" id="confirmBtns">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" id="chkBtn" onclick="fn_new_confirm('${vEEduChasiVO.prcsAplctPrdOrd}')">확인</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="sub36_pop02_close" data-focus-next="sub36_pop02">취소</button>
</div>
<div class="btn_right">
</div>
</div>
<!-- <div class="pop_tb_type01" style="overflow:visible;display:none;" id="VOList"> -->
<div class="pop_tb_type01" style="display:none;" id="VOList">
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" id="qaBtn" class="btnType05" onclick="fn_qa()" style="display:none;">문의하기</button>
</div>
</div>
<table>
<colgroup>
<col style="width:30%;">
<col style="width:30%;">
<col style="width:auto;">
</colgroup>
<div>
<tr>
<td colspan="3">여러건의 데이터가 확인 되었습니다.하기 대상 데이터중 하나를 선택 바랍니다.</td>
</tr>
<tr id="forMulti">
<th>사건번호</th>
<th>검사명</th>
<th>선택</th>
</tr>
</div>
</table>
<br/><br/><br/>
</div>
</div>
</div>
</div>
</form>