Merge branch 'hylee' into advc

Conflicts:
	src/main/java/kcc/ve/aplct/fndtnEnhanceTrn/web/FndtnEnhanceTrnController.java
	src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java
This commit is contained in:
hylee 2023-11-27 10:24:50 +09:00
commit 4c671acf57
25 changed files with 2949 additions and 2007 deletions

View File

@ -46,15 +46,17 @@ public class QustnrCommonUtil {
)throws Exception{ )throws Exception{
//설문 문항 정보 //설문 문항 정보
{ {
System.out.println("===========!!===========");
VEAQestnrVO vEAQestnrVO = new VEAQestnrVO(); VEAQestnrVO vEAQestnrVO = new VEAQestnrVO();
vEAQestnrVO.setSiteId(VeConstants.LCTR_DIV_CD_10); //청소년 vEAQestnrVO.setSiteId(p_siteId); //청소년
vEAQestnrVO.setSiteIdCd("10"); //10-기본설문, 20-신청자설문, 30-강사설문 vEAQestnrVO.setSiteIdCd(p_siteIdCd); //10-기본설문, 20-신청자설문, 30-강사설문
vEAQestnrVO = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_02(vEAQestnrVO); vEAQestnrVO = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_02(vEAQestnrVO);
//문항정보 //문항정보
Map <String, Object> commandMap =new HashMap<String, Object>(); Map <String, Object> commandMap =new HashMap<String, Object>();
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001"); commandMap.put("qestnrTmplatId", p_qestnrTmplatId);
commandMap.put("qestnrId",vEAQestnrVO.getQestnrId()); //문제 ID commandMap.put("qestnrId",vEAQestnrVO.getQestnrId()); //문제 ID
System.out.println("=====");
p_model.addAttribute("Comtnqustnrqesitm", p_egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap)); p_model.addAttribute("Comtnqustnrqesitm", p_egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
p_model.addAttribute("qestnrId", vEAQestnrVO.getQestnrId()); p_model.addAttribute("qestnrId", vEAQestnrVO.getQestnrId());
p_model.addAttribute("qustnrTmplatId", vEAQestnrVO.getQustnrTmplatId()); p_model.addAttribute("qustnrTmplatId", vEAQestnrVO.getQustnrTmplatId());

View File

@ -162,4 +162,6 @@ public interface EgovQustnrRespondInfoService {
void updateQustnrRespondManage(QustnrRespondManageVO qustnrRespondManageVO); void updateQustnrRespondManage(QustnrRespondManageVO qustnrRespondManageVO);
void deleteChasiStatus(VEEduAplctVO vEEduAplctVO); void deleteChasiStatus(VEEduAplctVO vEEduAplctVO);
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO);
} }

View File

@ -111,6 +111,10 @@ public class QustnrRespondInfoVO implements Serializable {
private String qustnrIemType = ""; private String qustnrIemType = "";
// 20231124 이호영
// 강화 기반은 라디오 버튼이라 변수 추가함
private String responseRadio = "";
public List<QustnrRespondInfoVO> getResultList() { public List<QustnrRespondInfoVO> getResultList() {
return resultList; return resultList;
} }
@ -449,15 +453,21 @@ public class QustnrRespondInfoVO implements Serializable {
this.beforeAndAfter = beforeAndAfter; this.beforeAndAfter = beforeAndAfter;
} }
public String getQustnrTmplatId() { public String getQustnrTmplatId() {
return qustnrTmplatId; return qustnrTmplatId;
} }
public void setQustnrTmplatId(String qustnrTmplatId) { public void setQustnrTmplatId(String qustnrTmplatId) {
this.qustnrTmplatId = qustnrTmplatId; this.qustnrTmplatId = qustnrTmplatId;
} }
public String getResponseRadio() {
return responseRadio;
}
public void setResponseRadio(String responseRadio) {
this.responseRadio = responseRadio;
}
} }

View File

@ -245,5 +245,9 @@ public class EgovQustnrRespondInfoServiceImpl extends EgovAbstractServiceImpl im
public void deleteChasiStatus(VEEduAplctVO vEEduAplctVO) { public void deleteChasiStatus(VEEduAplctVO vEEduAplctVO) {
dao.deleteChasiStatus(vEEduAplctVO); dao.deleteChasiStatus(vEEduAplctVO);
} }
@Override
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO) {
return dao.selectQustnrDetail(qustnrVO);
}
} }

View File

@ -210,4 +210,8 @@ public class QustnrRespondInfoDao extends EgovAbstractDAO {
delete("QustnrRespondInfo.deleteChasiStatusFormLettnqustnrrespondinfo", vEEduAplctVO); delete("QustnrRespondInfo.deleteChasiStatusFormLettnqustnrrespondinfo", vEEduAplctVO);
delete("QustnrRespondInfo.deleteChasiStatusFormlettnqestnrrslt", vEEduAplctVO); delete("QustnrRespondInfo.deleteChasiStatusFormlettnqestnrrslt", vEEduAplctVO);
} }
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO) {
return (List<QustnrRespondInfoVO>) list("QustnrRespondInfo.selectQustnrDetail", qustnrVO);
}
} }

View File

@ -419,6 +419,7 @@ public class EduEndAdultController {
model.addAttribute("chasiList", vEEduChasiVOList); model.addAttribute("chasiList", vEEduChasiVOList);
//문항정보 //문항정보
try { try {
model = qustnrCommonUtil._qustnrQesItm( model = qustnrCommonUtil._qustnrQesItm(

View File

@ -16,6 +16,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.fdl.idgnr.EgovIdGnrService;
@ -26,7 +27,11 @@ import kcc.com.cmm.service.impl.CmmUseDAO;
import kcc.com.cmm.util.StringUtil; import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil; import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService;
import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.adv.tngr.stngInfo.service.VEACmpltCrtfcMixService; import kcc.ve.adv.tngr.stngInfo.service.VEACmpltCrtfcMixService;
import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService; import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService;
@ -42,6 +47,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
/** /**
* 교육신청(성인찾아가는교육) * 교육신청(성인찾아가는교육)
@ -155,6 +161,20 @@ public class FndtnEnhanceTrnController {
@Resource(name = "vEACmpltCrtfcMixService") @Resource(name = "vEACmpltCrtfcMixService")
private VEACmpltCrtfcMixService vEACmpltCrtfcMixService; private VEACmpltCrtfcMixService vEACmpltCrtfcMixService;
// 설문 복합 VEA_
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
// 설문 util
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
/** /**
* 대시보드 임시 * 대시보드 임시
*/ */
@ -603,9 +623,6 @@ public class FndtnEnhanceTrnController {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
// 페이징 없이 select를 하기 위한
vEPrcsDetailVO.setRecordCountPerPage(10000);
vEPrcsDetailVO.setFirstIndex(0);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO); List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
@ -616,6 +633,41 @@ public class FndtnEnhanceTrnController {
} }
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/selectSchduleManagerListAjax.do")
@ResponseBody
// public ModelAndView eduSelectAjax(
public List<VEPrcsDetailVO> selectSchduleManagerListAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsDetailVO.setsTodate(vEPrcsDetailVO.getsTodate().split("T")[0].replaceAll("-", ""));
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectSchduleManagerList(vEPrcsDetailVO);
// modelAndView.addObject("data", vEPrcsDetailVOList);
// modelAndView.addObject("result", "success");
return vEPrcsDetailVOList;
}
/** /**
* 교육소개 임시페이지 * 교육소개 임시페이지
*/ */
@ -643,6 +695,184 @@ public class FndtnEnhanceTrnController {
return "/web/ve/aplct/fndtnEnhanceTrn/popup/eduAplctPop"; return "/web/ve/aplct/fndtnEnhanceTrn/popup/eduAplctPop";
} }
/**
* @methodName : fndthEduPrcsAplctPrdMngRegAjax
* @author : 이호영
* @date : 2023.11.24
* @description : 설문조사 내역 select
* @param vEPrcsDetailVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/selectQustnrCommonAjax.do")
public ModelAndView selectQustnrCommonAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//문항정보
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, vEPrcsDetailVO.getLctrDivCd() //청소년 -10, 성인-20, 체험-30, 기반강화-50 , 기소유예-60 ...VE0011
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
);
}catch(Exception ex) {
ex.printStackTrace();
}
modelAndView.addAllObjects(model);
modelAndView.addObject("result", "success");
return modelAndView;
}
/**
* @methodName : fndtnmergeSrvyInfoAjax
* @author : 이호영
* @date : 2023.11.24
* @description : 기반 기소 설문조사 등록 수정
* @param request
* @param model
* @param veEduAplctVO
* @param qustnrRespondInfoVO
* @return
* @throws Exception
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/mergeSrvyInfoAjax.do")
public ModelAndView commonMergeSrvyInfoAjax( HttpServletRequest request
, ModelMap model
, VEEduAplctVO veEduAplctVO
, QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
if (loginVO == null) {
modelAndView.addObject("result", "fail");
modelAndView.addObject("msg", "로그인 해주세요.");
return modelAndView;
}
qustnrRespondInfoVO.getResultList().stream()
.forEach(item -> {
item.setQustnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId());
item.setRespondId(loginVO.getId());
item.setFrstRegisterId(loginVO.getId());
item.setLastUpdusrId(loginVO.getId());
item.setEduAplctOrd(veEduAplctVO.getEduAplctOrd());
if("verySatisfied".equals(item.getResponseRadio())) {
item.setVerySatisfied("1");
}
if("satisfied".equals(item.getResponseRadio())) {
item.setSatisfied("1");
}
if("neither".equals(item.getResponseRadio())) {
item.setNeither("1");
}
if("dissatisfied".equals(item.getResponseRadio())) {
item.setDissatisfied("1");
}
if("veryDissatisfied".equals(item.getResponseRadio())) {
item.setVeryDissatisfied("1");
}
try {
if ("update".equals(qustnrRespondInfoVO.getQustnrIemType())) {
egovQustnrRespondInfoService.updateSrvyInfo(item);
} else {
egovQustnrRespondInfoService.insertSrvyInfo(item);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
// 설문 문항 결과 등록
// for(int i=0; i < qustnrRespondInfoVO.getResultList().size(); i++) {
// qustnrRespondInfoVO.getResultList().get(i).setQustnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId());
// qustnrRespondInfoVO.getResultList().get(i).setRespondId(loginVO.getId());
// qustnrRespondInfoVO.getResultList().get(i).setFrstRegisterId(loginVO.getId());
// qustnrRespondInfoVO.getResultList().get(i).setLastUpdusrId(loginVO.getId());
// qustnrRespondInfoVO.getResultList().get(i).setLastUpdusrId(loginVO.getId());
// qustnrRespondInfoVO.getResultList().get(i).setEduAplctOrd(veEduAplctVO.getEduAplctOrd());
// if("update".equals(qustnrRespondInfoVO.getQustnrIemType())) {
// egovQustnrRespondInfoService.updateSrvyInfo(qustnrRespondInfoVO.getResultList().get(i));
// }else {
// egovQustnrRespondInfoService.insertSrvyInfo(qustnrRespondInfoVO.getResultList().get(i));
// }
// }
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/selectSrvyInfoAjax.do")
public ModelAndView fndtnInSelectSrvyInfoAjax( HttpServletRequest request
, ModelMap model
, VEEduAplctVO veEduAplctVO
, QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
if (loginVO == null) {
modelAndView.addObject("result", "fail");
modelAndView.addObject("msg", "로그인 해주세요.");
return modelAndView;
}
qustnrRespondInfoVO.setEduAplctOrd(veEduAplctVO.getEduAplctOrd());
qustnrRespondInfoVO.setRespondId(loginVO.getId());
List<QustnrRespondInfoVO> qustnrRespondInfoVOList = egovQustnrRespondInfoService.selectQustnrDetail(qustnrRespondInfoVO);
modelAndView.addObject("data", qustnrRespondInfoVOList);
modelAndView.addObject("respondId", qustnrRespondInfoVOList.get(0).getRespondId());
modelAndView.addObject("result", "success");
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
modelAndView.addObject("result", "fail");
modelAndView.addObject("msg", "관리자에게 문의해 주세요");
}
return modelAndView;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -542,7 +542,7 @@ public class EduEndTngrController {
ModelAndView modelAndView = new ModelAndView(); ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView"); modelAndView.setViewName("jsonView");
try { try {
vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_10); vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);
VEEduChasiVO ChasiInfo = vEEduMIXService.selectChasiInfo(vEEduChasiVO); VEEduChasiVO ChasiInfo = vEEduMIXService.selectChasiInfo(vEEduChasiVO);
ChasiInfo.setInstrNm(egovCryptoUtil.decrypt(ChasiInfo.getInstrNm())); ChasiInfo.setInstrNm(egovCryptoUtil.decrypt(ChasiInfo.getInstrNm()));

View File

@ -961,7 +961,7 @@ public class InstrPrflController {
schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", ""));
System.out.println("=================");
return schduleManageService.selectSchManageStatusInstrList(schduleManageVO); return schduleManageService.selectSchManageStatusInstrList(schduleManageVO);
} }
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -55,4 +55,6 @@ public interface VEPrcsAplctPrdService {
void updateEtc(VEPrcsDetailVO vEPrcsDetailVO); void updateEtc(VEPrcsDetailVO vEPrcsDetailVO);
List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -154,10 +154,10 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String mberNm; private String mberNm;
private String instrNm; //강사명 private String sTodate;
private String start;
private String send;
private String chrgNm;
private String insttNm;
@ -753,25 +753,24 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setMberNm(String mberNm) { public void setMberNm(String mberNm) {
this.mberNm = mberNm; this.mberNm = mberNm;
} }
public String getInstrNm() { public String getsTodate() {
return instrNm; return sTodate;
} }
public void setInstrNm(String instrNm) { public void setsTodate(String sTodate) {
this.instrNm = instrNm; this.sTodate = sTodate;
} }
public String getChrgNm() { public String getStart() {
return chrgNm; return start;
} }
public void setChrgNm(String chrgNm) { public void setStart(String start) {
this.chrgNm = chrgNm; this.start = start;
} }
public String getInsttNm() { public String getSend() {
return insttNm; return send;
} }
public void setInsttNm(String insttNm) { public void setSend(String send) {
this.insttNm = insttNm; this.send = send;
} }
} }

View File

@ -120,4 +120,8 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
update("VEPrcsAplctPrdDAO.updateEtc", vEPrcsDetailVO); update("VEPrcsAplctPrdDAO.updateEtc", vEPrcsDetailVO);
} }
public List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectSchduleManagerList", vEPrcsDetailVO);
}
} }

View File

@ -127,4 +127,9 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
vEPrcsAplctPrdDAO.updateEtc(vEPrcsDetailVO); vEPrcsAplctPrdDAO.updateEtc(vEPrcsDetailVO);
} }
@Override
public List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.selectSchduleManagerList(vEPrcsDetailVO);
}
} }

View File

@ -298,7 +298,7 @@ public class EduRsltMngAdultController {
try { try {
model = qustnrCommonUtil._qustnrQesItm( model = qustnrCommonUtil._qustnrQesItm(
model model
, VeConstants.LCTR_DIV_CD_10 //청소년 -10, 성인-20, ...VE0012 , VeConstants.LCTR_DIV_CD_20 //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012 , "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001" , "QTMPLA_0000000000001"
, vEALettnQestnrMIXService , vEALettnQestnrMIXService
@ -324,7 +324,7 @@ public class EduRsltMngAdultController {
try{ try{
model = qustnrCommonUtil._chasiSrvyList( model = qustnrCommonUtil._chasiSrvyList(
model model
, VeConstants.LCTR_DIV_CD_10 //청소년 -10, 성인-20, ...VE0012 , VeConstants.LCTR_DIV_CD_20 //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012 , "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEEduAplctVO.getEduAplctOrd() , vEEduAplctVO.getEduAplctOrd()
, vEEduAplctVO.getEduChasiOrd() , vEEduAplctVO.getEduChasiOrd()

View File

@ -116,6 +116,7 @@
</select> </select>
<!-- 설문조사(설문등록):: 설문등록 /설문문 항정보--> <!-- 설문조사(설문등록):: 설문등록 /설문문 항정보-->
<select id="QustnrRespondInfo.selectQustnrRespondInfoManageComtnqustnrqesitm" parameterClass="java.util.Map" resultClass="egovMap"> <select id="QustnrRespondInfo.selectQustnrRespondInfoManageComtnqustnrqesitm" parameterClass="java.util.Map" resultClass="egovMap">
/*QustnrRespondInfo.selectQustnrRespondInfoManageComtnqustnrqesitm*/
SELECT SELECT
A.QUSTNR_QESITM_ID "qestnrQesitmId", A.QUSTNR_QESITM_ID "qestnrQesitmId",
A.QESTNR_ID, A.QESTNR_ID,
@ -650,6 +651,34 @@
AND B.EDU_CHASI_ORD = #eduChasiOrd# AND B.EDU_CHASI_ORD = #eduChasiOrd#
</select> </select>
<select id="QustnrRespondInfo.selectQustnrDetail" parameterClass="QustnrRespondInfoVO" resultClass="QustnrRespondInfoVO">
SELECT
QUSTNR_TMPLAT_ID as qustnrTmplatId
, QESTNR_ID as qestnrId
, QUSTNR_QESITM_ID as qustnrQesitmId
, QUSTNR_RSLT_ID as qustnrRsltId
, EDU_APLCT_ORD as eduAplctOrd
, EDU_CHASI_ORD as eduChasiOrd
, RESPOND_ID as respondId
, VERY_SATISFIED as verySatisfied
, SATISFIED as satisfied
, NEITHER as neither
, DISSATISFIED as dissatisfied
, VERY_DISSATISFIED as veryDissatisfied
, ANSWER as answer
, FRST_REGIST_PNTTM as frstRegistPnttm
, FRST_REGISTER_ID as frstRegisterId
, LAST_UPDT_PNTTM as lastUpdtPnttm
, LAST_UPDUSR_ID as lastUpdusrId
, QUSTNR_IEM_ID as qustnrIemId
FROM LETTNQESTNRRSLTDETAIL
WHERE 1=1
AND EDU_APLCT_ORD = #eduAplctOrd#
AND RESPOND_ID = #respondId#
AND QUSTNR_TMPLAT_ID = #qustnrTmplatId#
</select>
<select id="QustnrRespondInfo.selectChasiSrvyExcelList_bak" parameterClass="QustnrRespondInfoVO" resultClass="QustnrRespondInfoVO"> <select id="QustnrRespondInfo.selectChasiSrvyExcelList_bak" parameterClass="QustnrRespondInfoVO" resultClass="QustnrRespondInfoVO">
/* QustnrRespondInfo.selectChasiSrvyExcelList_bak */ /* QustnrRespondInfo.selectChasiSrvyExcelList_bak */
SELECT SELECT

View File

@ -19,9 +19,10 @@
<!-- 응답자정보(설문조사)::수정 --> <!-- 응답자정보(설문조사)::수정 -->
<update id="QustnrRespondManage.updateQustnrRespondManage"> <update id="QustnrRespondManage.updateQustnrRespondManage">
/*QustnrRespondManage.updateQustnrRespondManage*/
UPDATE LETTNQUSTNRRESPONDINFO UPDATE LETTNQUSTNRRESPONDINFO
SET SET
LAST_UPDT_PNTTM = NOW() LAST_UPDT_PNTTM = SYSDATE
, LAST_UPDUSR_ID = #lastUpdusrId# , LAST_UPDUSR_ID = #lastUpdusrId#
<isNotNull property="qestnrParticipant"> <isNotNull property="qestnrParticipant">
, QESTNR_RESPONDENT_COUNT = #qestnrParticipant# , QESTNR_RESPONDENT_COUNT = #qestnrParticipant#

View File

@ -19,9 +19,10 @@
<!-- 응답자정보(설문조사)::수정 --> <!-- 응답자정보(설문조사)::수정 -->
<update id="QustnrRespondManage.updateQustnrRespondManage"> <update id="QustnrRespondManage.updateQustnrRespondManage">
/*QustnrRespondManage.updateQustnrRespondManage*/
UPDATE LETTNQUSTNRRESPONDINFO UPDATE LETTNQUSTNRRESPONDINFO
SET SET
LAST_UPDT_PNTTM = NOW() LAST_UPDT_PNTTM = SYSDATE
, LAST_UPDUSR_ID = #lastUpdusrId# , LAST_UPDUSR_ID = #lastUpdusrId#
<isNotNull property="qestnrParticipant"> <isNotNull property="qestnrParticipant">
, QESTNR_RESPONDENT_COUNT = #qestnrParticipant# , QESTNR_RESPONDENT_COUNT = #qestnrParticipant#

View File

@ -633,12 +633,17 @@
vadi.APLCT_STATE_CD AS aplctStateCd, vadi.APLCT_STATE_CD AS aplctStateCd,
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId, vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn, vadi.CNCL_CN AS cnclCn,
CASE WHEN EXISTS ( /* 설문조사 */ CASE
SELECT 1 WHEN EXISTS (/* 설문조사 */
FROM lettnqestnrrslt lerslt SELECT
WHERE lerslt.respond_id = 'USRCNFRM_00000002720' 1
AND vpap.PRCS_APLCT_PRD_ORD = lerslt.edu_aplct_ord FROM
) THEN 1 ELSE 0 END as qestRsltExists LETTNQESTNRRSLTDETAIL lersltD
WHERE
lersltD.respond_id = a.USER_ID
AND a.edu_aplct_ord = lersltD.edu_aplct_ord ) THEN 1
ELSE 0
END AS qestRsltExists
from from
VE_EDU_APLCT a VE_EDU_APLCT a
join ve_prcs_aplct_prd vpap join ve_prcs_aplct_prd vpap
@ -723,4 +728,23 @@
PRCS_APLCT_PRD_ORD = #prcsAplctPrdOrd# PRCS_APLCT_PRD_ORD = #prcsAplctPrdOrd#
AND EDU_APLCT_ORD = #eduAplctOrd# AND EDU_APLCT_ORD = #eduAplctOrd#
</select> </select>
<select id="VEPrcsAplctPrdDAO.selectSchduleManagerList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/*VEPrcsAplctPrdDAO.selectSchduleManagerList*/
SELECT
a.PRCS_APLCT_PRD_ORD as prcsAplctPrdOrd
, a.PRCS_ORD as prcsOrd
, TO_CHAR(TO_DATE(a.EDU_STRT_PNTTM, 'YYYY.MM.DD'), 'YYYY-MM-DD') AS "start" /*시작*/
, TO_CHAR(TO_DATE(a.EDU_DDLN_PNTTM, 'YYYY.MM.DD'), 'YYYY-MM-DD') AS "end" /*종료*/
, b.PRCS_NM AS title
, b.PRCS_CN AS prcsCn
FROM
ve_prcs_aplct_prd a
LEFT JOIN VE_PRCS b
ON a.prcs_ord = b.prcs_ord
where
a.LCTR_DIV_CD ='60'
AND SUBSTRING(a.EDU_STRT_PNTTM, 1, 7) = TO_CHAR(TO_DATE(#sTodate#,'YYYYMMDD')+ 7,'YYYY.MM')
</select>
</sqlMap> </sqlMap>

View File

@ -56,6 +56,7 @@ $(document).ready(function(){
// dayDiff 값을 추가합니다. // dayDiff 값을 추가합니다.
newRow.append('<td class="edup_days">' + dayDiff + '</td>'); newRow.append('<td class="edup_days">' + dayDiff + '</td>');
console.log('currentMonth : ' ,currentMonth);
// 교육일정 칼럼을 초기화합니다. // 교육일정 칼럼을 초기화합니다.
for (var i = 1; i <= 12; i++) { for (var i = 1; i <= 12; i++) {
// 다음 월 class // 다음 월 class
@ -68,6 +69,7 @@ $(document).ready(function(){
} else if (i === currentMonth) { } else if (i === currentMonth) {
cellClass = "edup_this"; cellClass = "edup_this";
} }
if (i === parseInt(startDt.split('.')[1])) { if (i === parseInt(startDt.split('.')[1])) {
newRow.append('<td class="' + cellClass + '" onclick="fncGoDetail(\'' + item.prcsAplctPrdOrd + '\')" style="cursor:pointer;">' + parseInt(startDt.split('.')[2]) + '</td>'); newRow.append('<td class="' + cellClass + '" onclick="fncGoDetail(\'' + item.prcsAplctPrdOrd + '\')" style="cursor:pointer;">' + parseInt(startDt.split('.')[2]) + '</td>');
} else { } else {
@ -469,7 +471,7 @@ $(document).ready(function(){
<div class="tab_content"> <div class="tab_content">
<!--
<div class="list_top"> <div class="list_top">
<div class="list_top_left"> <div class="list_top_left">
<label for="" class="label">교육과정 선택</label> <label for="" class="label">교육과정 선택</label>
@ -492,7 +494,7 @@ $(document).ready(function(){
<button type="button" class="btnType01">검색</button> <button type="button" class="btnType01">검색</button>
</div> </div>
</div> </div>
-->
<div class="edup_result"> <div class="edup_result">
<div>총 <span>6</span>개의 검색결과가 있습니다.</div> <div>총 <span>6</span>개의 검색결과가 있습니다.</div>
<ul> <ul>

View File

@ -84,6 +84,200 @@ $(document).ready(function(){
} }
// 설문조사 버튼 클릭 이벤트
function selectQestnInfo(id, action){
$('#eduAplctOrd').val(id);
if(action == 'insert'){
$('#popupUpdate').hide();
$('#popupInsert').show();
}
else if(action == 'update'){
$('#popupUpdate').show();
$('#popupInsert').hide();
}
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectQustnrCommonAjax.do"
,data: {
"lctrDivCd" : "50" // 기반강화 -> 기소유예(60)도 같이써야함
// ,"eduChasiOrd" : chId
}
,dataType:'json'
,success:function(returnData){
console.log('returnData : ', returnData);
fn_makeQestnTbody(returnData);
// update면 선택한 목록 가져오기
if(action == 'update'){
fn_selectQestnTbody();
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
// 설문조사 문항 가져오기
function fn_makeQestnTbody(returnData){
$('#qustnrTmplatId').val(returnData.qustnrTmplatId);
$('#qestnrId').val(returnData.qestnrId);
var data = returnData.Comtnqustnrqesitm; // 이 변수에 AJAX를 통해 가져온 데이터가 저장되어 있다고 가정
$('#qestmInfoSize').val(data.length);
// tbody에 새로운 행들을 추가
var $tbody = $("#qestnTbody");
$tbody.empty(); // 기존의 tbody 내용을 비웁니다.
$.each(data, function(index, item) {
var $row = $("<tr></tr>");
// hiddem값 셋팅
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrId" value="' + item.qestnrId + '">');
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrQesitmId" value="' + item.qestnrQesitmId + '">');
$row.append('<input type="hidden" id="qustnrRsltId_'+index+'" name="resultList[' + index + '].qustnrRsltId" value="">');
// 첫 번째 열: 설문 문항
$row.append('<th scope="row" class="t_left">' + (index + 1) + ') ' + item.qestnCn + '</th>');
// 평가 옵션 열 추가
var inputTypes = ['verySatisfied', 'satisfied', 'neither', 'dissatisfied', 'veryDissatisfied'];
$.each(inputTypes, function(i, type) {
var inputId = type + '_' + index;
var $cell = $('<td></td>');
var $label = $('<label for="' + inputId + '" class="label">' + type + '</label>');
var $input = $('<input type="radio" class="popupInput" id="' + inputId + '" name="resultList[' + index + '].responseRadio" value="' + type + '">');
$cell.append($label).append($input);
$row.append($cell);
});
$tbody.append($row);
});
}
function srvySendSubmit(type){
var isValid = true;
$("#qestnTbody tr").each(function(index) {
// 해당 행의 라디오 버튼이 선택되었는지 확인
if ($("input[type='radio']:checked", this).length === 0) {
isValid = false;
alert("문항 " + (index + 1) + "을(를) 확인해주세요.");
isValid = false;
return false; // 반복 중지
}
});
if (!isValid) {
return false;
}
var masage = "";
if(type == 'i'){
masage = "설문결과를 등록 하시겠습니까?";
$("#qustnrIemType").val("insert")
}else if(type == 'u'){
masage = "설문결과를 수정 하시겠습니까?";
$("#qustnrIemType").val("update")
}
if(confirm(masage)){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/mergeSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
if(type == 'i'){
alert("설문결과가 등록 되었습니다.");
}else if(type == 'u'){
alert("설문결과가 수정 되었습니다.");
}
window.location.reload();
}else if(returnData.result == 'fail'){
alert(returnData.msg);
location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fn_selectQestnTbody(){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
$('#qestnrRespondId').val(returnData.respondId);
$.each(returnData.data, function(index, item) {
console.log('#'+item.verySatisfied+'_'+index);
$('#qustnrRsltId'+'_'+index).val(item.qustnrRsltId);
if(item.verySatisfied == '1') {
$('#verySatisfied'+'_'+index).prop('checked', true);
}
if(item.satisfied == '1') {
$('#satisfied'+'_'+index).prop('checked', true);
}
if(item.neither == '1') {
$('#neither'+'_'+index).prop('checked', true);
}
if(item.dissatisfied == '1') {
$('#dissatisfied'+'_'+index).prop('checked', true);
}
if(item.veryDissatisfied == '1') {
$('#veryDissatisfied'+'_'+index).prop('checked', true);
}
});
console.log('returnData : ', returnData);
}else if(returnData.result == 'fail'){
alert(returnData.msg);
// location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script> </script>
<!-- content --> <!-- content -->
@ -103,7 +297,6 @@ $(document).ready(function(){
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" /> <input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" /> <input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit"> <div class="cont_tit">
<h2>신청목록</h2> <h2>신청목록</h2>
<div class="sns_go"> <div class="sns_go">
@ -146,7 +339,7 @@ $(document).ready(function(){
<caption>교육 목록표</caption> <caption>교육 목록표</caption>
<colgroup> <colgroup>
<col style="width:35%;"> <col style="width:35%;">
<col style="width:;"> <col style="width:10%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <col style="width:13%;">
@ -174,10 +367,11 @@ $(document).ready(function(){
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 --> <!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose> <c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }"> <c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button> <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','insert')" title="팝업 열림">설문등록</button>
<!-- <button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button> -->
</c:when> </c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }"> <c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료 <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','update')" title="팝업 열림">설문수정</button>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
- -
@ -187,7 +381,7 @@ $(document).ready(function(){
<td> <td>
<c:choose> <c:choose>
<c:when test="${list.qestRsltExists }"> <c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button> <button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증</button>
</c:when> </c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}"> <c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료 교육완료
@ -197,7 +391,6 @@ $(document).ready(function(){
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button>
</td> </td>
<!-- <td>-</td> --> <!-- <td>-</td> -->
@ -228,6 +421,72 @@ $(document).ready(function(){
</div> </div>
<!-- 강의만족도 결과 등록 팝업 -->
<form id="srvyPopupForm" name="srvyPopupForm" method="post" >
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="">
<input type="hidden" name="qustnrTmplatId" id="qustnrTmplatId" value="${qustnrTmplatId}">
<input type="hidden" name="qestnrId" id="qestnrId" value="${qestnrId}">
<input type="hidden" id="qestmInfoSize" value="${fn:length(Comtnqustnrqesitm)}">
<input type="hidden" name="qestnrRespondId" id="qestnrRespondId" value="">
<input type="hidden" name="qustnrIemType" id="qustnrIemType" value="">
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop01" data-focus="sub37_pop01" data-focus-prev="sub37_pop01_close">
<div class="popup_tit">
<p>강의만족도 결과 등록</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop01_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type02">
<table>
<caption>평가문항, 매우만족, 만족, 보통, 불만족, 매우 불만족 입력</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<th scope="col">평가문항</th>
<th scope="col">매우만족</th>
<th scope="col">만족</th>
<th scope="col">보통</th>
<th scope="col">불만족</th>
<th scope="col">매우불만족</th>
</tr>
</thead>
<tbody id="qestnTbody">
</tbody>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" id="popupInsert" onclick="srvySendSubmit('i');">제출</button>
<button type="button" class="btnType05" id="popupUpdate" onclick="srvySendSubmit('u');">수정</button>
<button type="button" class="btnType02 tooltip-close" data-focus-next="sub37_pop01" data-focus="sub37_pop01_close">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<!--// 강의만족도 결과 등록 팝업-->
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script> <script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css"> <link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
<script> <script>

View File

@ -206,9 +206,9 @@
<div class="tb_tit02_left"> <div class="tb_tit02_left">
<div class="t_best q_title">Q&amp;A</div> <div class="t_best q_title">Q&amp;A</div>
</div> </div>
<div class="btn_wrap1"> <!-- <div class="btn_wrap1"> -->
<button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='/offedu/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do'">더보기</button> <!-- <button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='/offedu/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do'">더보기</button> -->
</div> <!-- </div> -->
</div> </div>
<div class="btn_right"> <div class="btn_right">
<button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button> <button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button>

View File

@ -11,69 +11,30 @@
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" /> <un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title> <title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<style type="text/css">
.fc-day-sat { color:#0000FF; } /* 토요일 */
.fc-day-sun { color:#FF0000; } /* 일요일 */
</style>
<link type="text/css" rel="stylesheet" href="<c:url value='/js/fullcalendar/5.9.0/main.css' />" />
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/main.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/locales-all.js'/>"></script>
<script type="text/javaScript" language="javascript"> <script type="text/javaScript" language="javascript">
$(document).ready(function(){ $(document).ready(function(){
$('#schduleManager').hide();
$('.tab_button').click(function(){ $('.tab_button').click(function(){
var type = $(this).data('info'); var type = $(this).data('info');
// list 타입이면 return; // list 타입이면 return;
if(type === 'list') if(type === 'list'){
$('#schduleManager').hide();
return false; return false;
var data = fncEduSelect();
console.log('data : ', data);
// 월 하이라이트 체크
fn_MonthHL();
// 현재 날짜를 가져옵니다.
var today = new Date();
var currentMonth = today.getMonth() + 1;
// 데이터 추가 전 촐기화
$(".edu_program tbody").empty();
// 반복시작
$.each(data, function(index, item) {
var prcsNm = item.prcsNm;
var startDt = item.eduStrtPnttm;
// 교육 일수 구하기
var dayDiff = fn_dayDiff(item);
var newRow = $("<tr></tr>");
// prcsNm 값을 추가합니다.
newRow.append('<td class="edup_title">' + prcsNm + '</td>');
// dayDiff 값을 추가합니다.
newRow.append('<td class="edup_days">' + dayDiff + '</td>');
// 교육일정 칼럼을 초기화합니다.
for (var i = 1; i <= 12; i++) {
// 다음 월 class
var cellClass = "edup_pass"; // 기본값
// 전 월 class
if (i < currentMonth) {
cellClass = "edup_pre";
// 현재 월
} else if (i === currentMonth) {
cellClass = "edup_this";
} }
if (i === parseInt(startDt.split('.')[1])) {
newRow.append('<td class="' + cellClass + '" onclick="fncGoDetail(\'' + item.prcsAplctPrdOrd + '\')" style="cursor:pointer;">' + parseInt(startDt.split('.')[2]) + '</td>');
} else {
newRow.append('<td class="' + cellClass + '"></td>');
}
}
// 테이블에 새로운 행을 추가합니다.
$(".edu_program tbody").append(newRow);
$('#schduleManager').show();
}); });
//-- /반복끝
});
$(".aplctBtn button").click(function(){ $(".aplctBtn button").click(function(){
@ -103,7 +64,6 @@ $(document).ready(function(){
var ddlnCdText = ''; var ddlnCdText = '';
console.log('');
if (currentDate < strtPnttm) { if (currentDate < strtPnttm) {
ddlnCdText = "접수전"; ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) { } else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
@ -125,6 +85,118 @@ $(document).ready(function(){
}); });
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('schduleManager');
var calendar = new FullCalendar.Calendar(calendarEl, {
locale: 'ko',
timezone : "local",
weekends : true,
editable : false,
firstDay : 0, //월요일이 먼저 오게 하려면 1
dayMaxEvents: true,
navLinks: false,
customButtons: {
myCustomButton: {
text: '오늘',
click: function(event, elm) {
alert('clicked the custom button!');
}
},viewWeekends : {
text : '주말',
click : function (event, elm) {
calendar.setOption("weekends" , calendar.getOption("weekends") ? false : true);
}
}
},buttonText: {
listMonth: '일정'
},
headerToolbar: {
//left: 'prevYear nextYear today',
left: 'today',
center: 'prev title next',
//right: 'dayGridMonth,listMonth'
right: ''
},
eventSources: [
{
events: function(info, successCallback, failureCallback) {
var events = [];
console.log('info', info);
var s_todate = info.startStr;
ex_s_todate = info.startStr;
var data = fncEduSelect(s_todate);
console.log(data);
data.forEach(item => {
console.log(item);
item.url = '${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctDetail.do?prcsAplctPrdOrd='+item.prcsAplctPrdOrd; // 여기서 원하는 URL로 대체
});
events.push({
title: 'title',
start: '2023-11-10',
end: '2023-11-29',
url: '${pageContext.request.contextPath}/detail.do?seq='
}); 
// successCallback(events);
successCallback(data);
/*
$.ajax({
url: '<c:url value="/web/ve/instr/tngrVisitEdu/instrInfo/tngrSchduleManagerAjaxLoadData.do"/>',
type: 'POST',
dataType: 'json',
data: {
searchStartDt : "",
//searchStartDt : "",
searchStartDt : s_todate,
todate : info.start,
searchYearMonth : function(){
return "";
}
},
success: function(data) {
successCallback(data);
// 날짜 계산
// setCalDate(data, info.startStr);
}
}); */
}
}
],
eventContent: function(arg, createElement) {
event.preventDefault();
console.log(arg.event._def.url);
// arg.event._def.url = "#none";
},
eventClick: function(info) {
info.jsEvent.preventDefault();
console.log('info.event._def.extendedProps : ', info);
location.href = info.event.url;
// schDetailPop(info.event._def.extendedProps.schSeq, info.event._def.extendedProps.schChasiSeq);
return false;
},
});
calendar.render();
});
// 대상자 이름, 생년월일, 대상자TB ID // 대상자 이름, 생년월일, 대상자TB ID
function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){ function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){
var form = document.regForm; var form = document.regForm;
@ -191,10 +263,14 @@ $(document).ready(function(){
$("#monthTemp th:nth-child(" + currentMonth + ")").addClass("edup_this"); $("#monthTemp th:nth-child(" + currentMonth + ")").addClass("edup_this");
} }
function fncEduSelect(){ function fncEduSelect(s_todate){
var returnVal = ''; var returnVal = '';
var form = document.selectForm ;
form.sTodate.value = s_todate;
var data = new FormData(document.getElementById("selectForm")); var data = new FormData(document.getElementById("selectForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduSelectAjax.do"; var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectSchduleManagerListAjax.do";
console.log(data); console.log(data);
$.ajax({ $.ajax({
type:"POST", type:"POST",
@ -206,10 +282,9 @@ $(document).ready(function(){
contentType: false, contentType: false,
cache: false, cache: false,
success:function(returnData){ success:function(returnData){
if(returnData.result == "success"){
console.log('returnData : ', returnData); console.log('returnData : ', returnData);
returnVal = returnData.data; // returnVal = returnData.data;
} returnVal = returnData;
}, },
error:function(request , status, error){ error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
@ -307,6 +382,108 @@ $(document).ready(function(){
$('#dBirth').val(''); $('#dBirth').val('');
} }
/*
*##############################################################################
* START
*##############################################################################
*/
// 날짜 계산
function setCalDate(data, startStr) {
// 현재월 구하기
startStr = startStr.substr(0, 10);
console.log('startStr : ', startStr);
startStr = startStr.replace(/-/g, "");
console.log('startStr : ', startStr);
startStr = startStr.replace(/./g, "");
var todayYear = startStr.substring(0,4);
var todayMonth = 0;
var todayDay = startStr.substring(6,8);
if (todayDay == "01") {
todayMonth = startStr.substring(4,6);
}
else {
if (startStr.substring(4,6) == "12") {
todayMonth = "01";
}
else {
todayMonth = parseInt(startStr.substring(4,6), 10) + 1;
if (todayMonth < 10) {
todayMonth = "0" + todayMonth;
}
}
}
// End
//alert(todayMonth);
var monthCnt = 0;
var week1Cnt = 0, week2Cnt = 0, week3Cnt = 0, week4Cnt = 0, week5Cnt = 0, week6Cnt = 0;
var sHtml = "";
for (var j = 0; j < data.length; j++) {
var schStartDate = data[j].start.substr(0, 10);
schStartDate = replaceAll(schStartDate, "-", "");
schStartDate = replaceAll(schStartDate, ".", "");
schStartDate = replaceAll(schStartDate, "/", "");
var thisYear = schStartDate.substring(0,4);
var thisMonth = schStartDate.substring(4,6);
var thisDay = schStartDate.substring(6,8);
var thisWeek = getSecofWeek(schStartDate);
// 해당월 데이터만 처리
if (todayMonth == thisMonth) {
monthCnt++;
if (thisWeek == 1) {
week1Cnt++;
}
else if (thisWeek == 2) {
week2Cnt++;
}
else if (thisWeek == 3) {
week3Cnt++;
}
else if (thisWeek == 4) {
week4Cnt++;
}
else if (thisWeek == 5) {
week5Cnt++;
}
else if (thisWeek == 6) {
week6Cnt++;
}
}
}
sHtml += "전체 : " + monthCnt + "건";
sHtml += " &nbsp;(1주차 : " + week1Cnt + "건";
sHtml += ", &nbsp;&nbsp;2주차 : " + week2Cnt + "건";
sHtml += ", &nbsp;&nbsp;3주차 : " + week3Cnt + "건";
sHtml += ", &nbsp;&nbsp;4주차 : " + week4Cnt + "건";
sHtml += ", &nbsp;&nbsp;5주차 : " + week5Cnt + "건";
sHtml += ", &nbsp;&nbsp;6주차 : " + week6Cnt + "건)";
sHtml += '&nbsp;<button type="button" class="btn_down_excel" onclick="excelDownLoad();">일정현황 엑셀 다운로드</button>';
//$("#weekCnt").html(sHtml);
}
// 해당일 주차 계산
function getSecofWeek(date) {
var d = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, date.substring(6,8) );
var fd = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, 1 );
return Math.ceil((parseInt(date.substring(6,8))+fd.getDay())/7);
}
</script> </script>
<!-- content --> <!-- content -->
@ -314,6 +491,7 @@ $(document).ready(function(){
<form name="selectForm" id="selectForm"> <form name="selectForm" id="selectForm">
<input type="hidden" name="lctrDivCd" value="60"> <input type="hidden" name="lctrDivCd" value="60">
<input type="hidden" name="sTodate" value="">
</form> </form>
<form name="confirmForm" id="confirmForm"> <form name="confirmForm" id="confirmForm">
<input type="hidden" name="trgtNm"> <input type="hidden" name="trgtNm">
@ -464,84 +642,7 @@ $(document).ready(function(){
</div> </div>
</div> </div>
<div class="tab_content"> <div class="tab_content" id="schduleManager">
<!-- <div class="list_top">
<div class="list_top_left">
<label for="" class="label">교육과정 선택</label>
<select class="selType1">
<option for="">전체</option>
<option for="">지난교육일정</option>
<option for="">당월교육일정</option>
<option for="">교육예정일정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<duet-date-picker identifier="date" name="searchStartDt" class="startDate hydrated" value=""></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<duet-date-picker identifier="date" name="searchEndDt" class="endDate hydrated" value=""></duet-date-picker>
</div>
<button type="button" class="btnType01">검색</button>
</div>
</div> -->
<div class="edup_result">
<div>총 <span>6</span>개의 검색결과가 있습니다.</div>
<ul>
<li class="pass">지난교육일정</li>
<li class="this">당월교육일정</li>
<li class="pre">교육예정일정</li>
</ul>
</div>
<div class="edu_program">
<table>
<caption>교육일정표</caption>
<colgroup>
<col style="width: ;">
<col style="width: ;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
<col style="width:4%;">
</colgroup>
<thead>
<tr>
<th class="first" rowspan="2">교육과정명<br/><span class="ep_text">(상세 내용을 보시려면 과정을 클릭하세요)</span></th>
<th rowspan="2">일수</th>
<th colspan="12">교육일정<sapn class="ep_text">(교육 시작일)</sapn></th>
</tr>
<tr id="monthTemp">
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
<th>11</th>
<th>12</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div> </div>

View File

@ -200,6 +200,9 @@
<div class="tb_tit02_left"> <div class="tb_tit02_left">
<div class="t_best q_title">Q&amp;A</div> <div class="t_best q_title">Q&amp;A</div>
</div> </div>
<div class="btn_wrap1">
<button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='/offedu/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do'">더보기</button>
</div>
</div> </div>
<div class="btn_right"> <div class="btn_right">
<button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button> <button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button>

View File

@ -178,6 +178,200 @@ $(document).ready(function(){
} }
} }
// 설문조사 버튼 클릭 이벤트
function selectQestnInfo(id, action){
$('#srvyPopupForm #eduAplctOrd').val(id);
$('#eduAplctOrd').val(id);
if(action == 'insert'){
$('#popupUpdate').hide();
$('#popupInsert').show();
}
else if(action == 'update'){
$('#popupUpdate').show();
$('#popupInsert').hide();
}
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectQustnrCommonAjax.do"
,data: {
"lctrDivCd" : "60" // 기반강화 -> 기소유예(60)도 같이써야함
// ,"eduChasiOrd" : chId
}
,dataType:'json'
,success:function(returnData){
console.log('returnData : ', returnData);
fn_makeQestnTbody(returnData);
// update면 선택한 목록 가져오기
if(action == 'update'){
fn_selectQestnTbody();
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
// 설문조사 문항 가져오기
function fn_makeQestnTbody(returnData){
$('#qustnrTmplatId').val(returnData.qustnrTmplatId);
$('#qestnrId').val(returnData.qestnrId);
var data = returnData.Comtnqustnrqesitm; // 이 변수에 AJAX를 통해 가져온 데이터가 저장되어 있다고 가정
$('#qestmInfoSize').val(data.length);
// tbody에 새로운 행들을 추가
var $tbody = $("#qestnTbody");
$tbody.empty(); // 기존의 tbody 내용을 비웁니다.
$.each(data, function(index, item) {
var $row = $("<tr></tr>");
// hiddem값 셋팅
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrId" value="' + item.qestnrId + '">');
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrQesitmId" value="' + item.qestnrQesitmId + '">');
$row.append('<input type="hidden" id="qustnrRsltId_'+index+'" name="resultList[' + index + '].qustnrRsltId" value="">');
// 첫 번째 열: 설문 문항
$row.append('<th scope="row" class="t_left">' + (index + 1) + ') ' + item.qestnCn + '</th>');
// 평가 옵션 열 추가
var inputTypes = ['verySatisfied', 'satisfied', 'neither', 'dissatisfied', 'veryDissatisfied'];
$.each(inputTypes, function(i, type) {
var inputId = type + '_' + index;
var $cell = $('<td></td>');
var $label = $('<label for="' + inputId + '" class="label">' + type + '</label>');
var $input = $('<input type="radio" class="popupInput" id="' + inputId + '" name="resultList[' + index + '].responseRadio" value="' + type + '">');
$cell.append($label).append($input);
$row.append($cell);
});
$tbody.append($row);
});
}
function srvySendSubmit(type){
var isValid = true;
$("#qestnTbody tr").each(function(index) {
// 해당 행의 라디오 버튼이 선택되었는지 확인
if ($("input[type='radio']:checked", this).length === 0) {
isValid = false;
alert("문항 " + (index + 1) + "을(를) 확인해주세요.");
isValid = false;
return false; // 반복 중지
}
});
if (!isValid) {
return false;
}
var masage = "";
if(type == 'i'){
masage = "설문결과를 등록 하시겠습니까?";
$("#qustnrIemType").val("insert")
}else if(type == 'u'){
masage = "설문결과를 수정 하시겠습니까?";
$("#qustnrIemType").val("update")
}
if(confirm(masage)){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/mergeSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
if(type == 'i'){
alert("설문결과가 등록 되었습니다.");
}else if(type == 'u'){
alert("설문결과가 수정 되었습니다.");
}
window.location.reload();
}else if(returnData.result == 'fail'){
alert(returnData.msg);
location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fn_selectQestnTbody(){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
$('#qestnrRespondId').val(returnData.respondId);
$.each(returnData.data, function(index, item) {
console.log('#'+item.verySatisfied+'_'+index);
$('#qustnrRsltId'+'_'+index).val(item.qustnrRsltId);
if(item.verySatisfied == '1') {
$('#verySatisfied'+'_'+index).prop('checked', true);
}
if(item.satisfied == '1') {
$('#satisfied'+'_'+index).prop('checked', true);
}
if(item.neither == '1') {
$('#neither'+'_'+index).prop('checked', true);
}
if(item.dissatisfied == '1') {
$('#dissatisfied'+'_'+index).prop('checked', true);
}
if(item.veryDissatisfied == '1') {
$('#veryDissatisfied'+'_'+index).prop('checked', true);
}
});
console.log('returnData : ', returnData);
}else if(returnData.result == 'fail'){
alert(returnData.msg);
// location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script> </script>
<!-- content --> <!-- content -->
@ -253,7 +447,7 @@ $(document).ready(function(){
<col style="width:10%;"> <col style="width:10%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <%-- <col style="width:13%;"> --%>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
@ -261,7 +455,7 @@ $(document).ready(function(){
<th>교육일자</th> <th>교육일자</th>
<th>신청결과</th> <th>신청결과</th>
<th>설문조사</th> <th>설문조사</th>
<th>이수증</th> <!-- <th>이수증</th> -->
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -328,23 +522,23 @@ $(document).ready(function(){
and list.aplctStateCd ne 30 and list.aplctStateCd ne 30
and list.aprvlCd ne 40 and list.aprvlCd ne 40
}"> }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button> <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','insert')" title="팝업 열림">설문등록</button>
</c:when> </c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }"> <c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료 <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','update')" title="팝업 열림">설문수정</button>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
- -
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</td> </td>
<td> <!-- <td> -->
<!-- <!--
취소상태 취소상태
list.aplctStateCd ne 30 list.aplctStateCd ne 30
list.aprvlCd ne 40 list.aprvlCd ne 40
--> -->
<c:choose> <%-- <c:choose>
<c:when test="${list.qestRsltExists }"> <c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button> <button type="button" title="출력" class="btnType03">출력</button>
</c:when> </c:when>
@ -358,11 +552,11 @@ $(document).ready(function(){
<c:otherwise> <c:otherwise>
- -
</c:otherwise> </c:otherwise>
</c:choose> </c:choose> --%>
<button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button> <%-- <button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button> --%>
</td> <!-- </td> -->
<!-- <td>-</td> --> <!-- <td>-</td> -->
</tr> </tr>
</c:forEach> </c:forEach>
@ -459,6 +653,71 @@ $(document).ready(function(){
<!-- 강의만족도 결과 등록 팝업 -->
<form id="srvyPopupForm" name="srvyPopupForm" method="post" >
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="">
<input type="hidden" name="qustnrTmplatId" id="qustnrTmplatId" value="${qustnrTmplatId}">
<input type="hidden" name="qestnrId" id="qestnrId" value="${qestnrId}">
<input type="hidden" id="qestmInfoSize" value="${fn:length(Comtnqustnrqesitm)}">
<input type="hidden" name="qestnrRespondId" id="qestnrRespondId" value="">
<input type="hidden" name="qustnrIemType" id="qustnrIemType" value="">
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop01" data-focus="sub37_pop01" data-focus-prev="sub37_pop01_close">
<div class="popup_tit">
<p>강의만족도 결과 등록</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop01_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type02">
<table>
<caption>평가문항, 매우만족, 만족, 보통, 불만족, 매우 불만족 입력</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<th scope="col">평가문항</th>
<th scope="col">매우만족</th>
<th scope="col">만족</th>
<th scope="col">보통</th>
<th scope="col">불만족</th>
<th scope="col">매우불만족</th>
</tr>
</thead>
<tbody id="qestnTbody">
</tbody>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" id="popupInsert" onclick="srvySendSubmit('i');">제출</button>
<button type="button" class="btnType05" id="popupUpdate" onclick="srvySendSubmit('u');">수정</button>
<button type="button" class="btnType02 tooltip-close" data-focus-next="sub37_pop01" data-focus="sub37_pop01_close">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<!--// 강의만족도 결과 등록 팝업-->