Merge branch 'advc' of
http://yongjoon.cho@vcs.iten.co.kr:9999/hylee/offedu into advc Conflicts: src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduAplctVO.java
This commit is contained in:
commit
35f26dc753
@ -46,15 +46,17 @@ public class QustnrCommonUtil {
|
||||
)throws Exception{
|
||||
//설문 문항 정보
|
||||
{
|
||||
System.out.println("===========!!===========");
|
||||
VEAQestnrVO vEAQestnrVO = new VEAQestnrVO();
|
||||
vEAQestnrVO.setSiteId(VeConstants.LCTR_DIV_CD_10); //청소년
|
||||
vEAQestnrVO.setSiteIdCd("10"); //10-기본설문, 20-신청자설문, 30-강사설문
|
||||
vEAQestnrVO.setSiteId(p_siteId); //청소년
|
||||
vEAQestnrVO.setSiteIdCd(p_siteIdCd); //10-기본설문, 20-신청자설문, 30-강사설문
|
||||
vEAQestnrVO = p_vEALettnQestnrMIXService.selectDetail_MIX_LQI_02(vEAQestnrVO);
|
||||
|
||||
//문항정보
|
||||
Map <String, Object> commandMap =new HashMap<String, Object>();
|
||||
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
|
||||
commandMap.put("qestnrTmplatId", p_qestnrTmplatId);
|
||||
commandMap.put("qestnrId",vEAQestnrVO.getQestnrId()); //문제 ID
|
||||
System.out.println("=====");
|
||||
p_model.addAttribute("Comtnqustnrqesitm", p_egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
|
||||
p_model.addAttribute("qestnrId", vEAQestnrVO.getQestnrId());
|
||||
p_model.addAttribute("qustnrTmplatId", vEAQestnrVO.getQustnrTmplatId());
|
||||
|
||||
@ -162,4 +162,6 @@ public interface EgovQustnrRespondInfoService {
|
||||
void updateQustnrRespondManage(QustnrRespondManageVO qustnrRespondManageVO);
|
||||
|
||||
void deleteChasiStatus(VEEduAplctVO vEEduAplctVO);
|
||||
|
||||
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO);
|
||||
}
|
||||
|
||||
@ -111,6 +111,10 @@ public class QustnrRespondInfoVO implements Serializable {
|
||||
|
||||
private String qustnrIemType = "";
|
||||
|
||||
// 20231124 이호영
|
||||
// 강화 기반은 라디오 버튼이라 변수 추가함
|
||||
private String responseRadio = "";
|
||||
|
||||
public List<QustnrRespondInfoVO> getResultList() {
|
||||
return resultList;
|
||||
}
|
||||
@ -449,15 +453,21 @@ public class QustnrRespondInfoVO implements Serializable {
|
||||
this.beforeAndAfter = beforeAndAfter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getQustnrTmplatId() {
|
||||
return qustnrTmplatId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setQustnrTmplatId(String qustnrTmplatId) {
|
||||
this.qustnrTmplatId = qustnrTmplatId;
|
||||
}
|
||||
|
||||
public String getResponseRadio() {
|
||||
return responseRadio;
|
||||
}
|
||||
|
||||
public void setResponseRadio(String responseRadio) {
|
||||
this.responseRadio = responseRadio;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -245,5 +245,9 @@ public class EgovQustnrRespondInfoServiceImpl extends EgovAbstractServiceImpl im
|
||||
public void deleteChasiStatus(VEEduAplctVO vEEduAplctVO) {
|
||||
dao.deleteChasiStatus(vEEduAplctVO);
|
||||
}
|
||||
@Override
|
||||
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO) {
|
||||
return dao.selectQustnrDetail(qustnrVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -210,4 +210,8 @@ public class QustnrRespondInfoDao extends EgovAbstractDAO {
|
||||
delete("QustnrRespondInfo.deleteChasiStatusFormLettnqustnrrespondinfo", vEEduAplctVO);
|
||||
delete("QustnrRespondInfo.deleteChasiStatusFormlettnqestnrrslt", vEEduAplctVO);
|
||||
}
|
||||
|
||||
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO) {
|
||||
return (List<QustnrRespondInfoVO>) list("QustnrRespondInfo.selectQustnrDetail", qustnrVO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -419,6 +419,7 @@ public class EduEndAdultController {
|
||||
|
||||
model.addAttribute("chasiList", vEEduChasiVOList);
|
||||
|
||||
|
||||
//문항정보
|
||||
try {
|
||||
model = qustnrCommonUtil._qustnrQesItm(
|
||||
|
||||
@ -16,6 +16,7 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
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.utl.user.service.CheckFileUtil;
|
||||
import kcc.com.utl.user.service.CheckLoginUtil;
|
||||
import kcc.com.utl.user.service.QustnrCommonUtil;
|
||||
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.ve.adv.tngr.stngInfo.service.VEACmpltCrtfcMixService;
|
||||
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.VEPrcsOnlnCntntService;
|
||||
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")
|
||||
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(); //권한에 따른 로그인 정보 가져오기
|
||||
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
|
||||
|
||||
// 페이징 없이 select를 하기 위한
|
||||
vEPrcsDetailVO.setRecordCountPerPage(10000);
|
||||
vEPrcsDetailVO.setFirstIndex(0);
|
||||
|
||||
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";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
//
|
||||
|
||||
@ -542,7 +542,7 @@ public class EduEndTngrController {
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
try {
|
||||
vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_10);
|
||||
vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);
|
||||
|
||||
VEEduChasiVO ChasiInfo = vEEduMIXService.selectChasiInfo(vEEduChasiVO);
|
||||
ChasiInfo.setInstrNm(egovCryptoUtil.decrypt(ChasiInfo.getInstrNm()));
|
||||
|
||||
@ -407,6 +407,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
|
||||
private String sbmtAtchFileId; //제출 서류 파일 아이디
|
||||
private String sbmtId; //제출자
|
||||
|
||||
private Boolean qestRsltExists; //설문여부
|
||||
|
||||
|
||||
|
||||
public String getSpecialWorkAllow() {
|
||||
|
||||
@ -961,7 +961,7 @@ public class InstrPrflController {
|
||||
|
||||
|
||||
schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", ""));
|
||||
|
||||
System.out.println("=================");
|
||||
return schduleManageService.selectSchManageStatusInstrList(schduleManageVO);
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -55,4 +55,6 @@ public interface VEPrcsAplctPrdService {
|
||||
|
||||
void updateEtc(VEPrcsDetailVO vEPrcsDetailVO);
|
||||
|
||||
List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO);
|
||||
|
||||
}
|
||||
|
||||
@ -154,10 +154,14 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
|
||||
|
||||
private String mberNm;
|
||||
|
||||
private String instrNm; //강사명
|
||||
private String sTodate;
|
||||
private String start;
|
||||
private String send;
|
||||
|
||||
private String chrgNm;
|
||||
private String insttNm;
|
||||
private String instrNm;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -753,11 +757,23 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
|
||||
public void setMberNm(String mberNm) {
|
||||
this.mberNm = mberNm;
|
||||
}
|
||||
public String getInstrNm() {
|
||||
return instrNm;
|
||||
public String getsTodate() {
|
||||
return sTodate;
|
||||
}
|
||||
public void setInstrNm(String instrNm) {
|
||||
this.instrNm = instrNm;
|
||||
public void setsTodate(String sTodate) {
|
||||
this.sTodate = sTodate;
|
||||
}
|
||||
public String getStart() {
|
||||
return start;
|
||||
}
|
||||
public void setStart(String start) {
|
||||
this.start = start;
|
||||
}
|
||||
public String getSend() {
|
||||
return send;
|
||||
}
|
||||
public void setSend(String send) {
|
||||
this.send = send;
|
||||
}
|
||||
public String getChrgNm() {
|
||||
return chrgNm;
|
||||
@ -771,7 +787,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
|
||||
public void setInsttNm(String insttNm) {
|
||||
this.insttNm = insttNm;
|
||||
}
|
||||
|
||||
public String getInstrNm() {
|
||||
return instrNm;
|
||||
}
|
||||
public void setInstrNm(String instrNm) {
|
||||
this.instrNm = instrNm;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -120,4 +120,8 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
|
||||
update("VEPrcsAplctPrdDAO.updateEtc", vEPrcsDetailVO);
|
||||
}
|
||||
|
||||
public List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO) {
|
||||
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectSchduleManagerList", vEPrcsDetailVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -127,4 +127,9 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
|
||||
vEPrcsAplctPrdDAO.updateEtc(vEPrcsDetailVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VEPrcsDetailVO> selectSchduleManagerList(VEPrcsDetailVO vEPrcsDetailVO) {
|
||||
return vEPrcsAplctPrdDAO.selectSchduleManagerList(vEPrcsDetailVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -298,7 +298,7 @@ public class EduRsltMngAdultController {
|
||||
try {
|
||||
model = qustnrCommonUtil._qustnrQesItm(
|
||||
model
|
||||
, VeConstants.LCTR_DIV_CD_10 //청소년 -10, 성인-20, ...VE0012
|
||||
, VeConstants.LCTR_DIV_CD_20 //청소년 -10, 성인-20, ...VE0012
|
||||
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
|
||||
, "QTMPLA_0000000000001"
|
||||
, vEALettnQestnrMIXService
|
||||
@ -324,7 +324,7 @@ public class EduRsltMngAdultController {
|
||||
try{
|
||||
model = qustnrCommonUtil._chasiSrvyList(
|
||||
model
|
||||
, VeConstants.LCTR_DIV_CD_10 //청소년 -10, 성인-20, ...VE0012
|
||||
, VeConstants.LCTR_DIV_CD_20 //청소년 -10, 성인-20, ...VE0012
|
||||
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
|
||||
, vEEduAplctVO.getEduAplctOrd()
|
||||
, vEEduAplctVO.getEduChasiOrd()
|
||||
|
||||
@ -116,6 +116,7 @@
|
||||
</select>
|
||||
<!-- 설문조사(설문등록):: 설문등록 /설문문 항정보-->
|
||||
<select id="QustnrRespondInfo.selectQustnrRespondInfoManageComtnqustnrqesitm" parameterClass="java.util.Map" resultClass="egovMap">
|
||||
/*QustnrRespondInfo.selectQustnrRespondInfoManageComtnqustnrqesitm*/
|
||||
SELECT
|
||||
A.QUSTNR_QESITM_ID "qestnrQesitmId",
|
||||
A.QESTNR_ID,
|
||||
@ -650,6 +651,34 @@
|
||||
AND B.EDU_CHASI_ORD = #eduChasiOrd#
|
||||
</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">
|
||||
/* QustnrRespondInfo.selectChasiSrvyExcelList_bak */
|
||||
SELECT
|
||||
|
||||
@ -19,9 +19,10 @@
|
||||
|
||||
<!-- 응답자정보(설문조사)::수정 -->
|
||||
<update id="QustnrRespondManage.updateQustnrRespondManage">
|
||||
/*QustnrRespondManage.updateQustnrRespondManage*/
|
||||
UPDATE LETTNQUSTNRRESPONDINFO
|
||||
SET
|
||||
LAST_UPDT_PNTTM = NOW()
|
||||
LAST_UPDT_PNTTM = SYSDATE
|
||||
, LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
<isNotNull property="qestnrParticipant">
|
||||
, QESTNR_RESPONDENT_COUNT = #qestnrParticipant#
|
||||
|
||||
@ -19,9 +19,10 @@
|
||||
|
||||
<!-- 응답자정보(설문조사)::수정 -->
|
||||
<update id="QustnrRespondManage.updateQustnrRespondManage">
|
||||
/*QustnrRespondManage.updateQustnrRespondManage*/
|
||||
UPDATE LETTNQUSTNRRESPONDINFO
|
||||
SET
|
||||
LAST_UPDT_PNTTM = NOW()
|
||||
LAST_UPDT_PNTTM = SYSDATE
|
||||
, LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
<isNotNull property="qestnrParticipant">
|
||||
, QESTNR_RESPONDENT_COUNT = #qestnrParticipant#
|
||||
|
||||
@ -123,12 +123,22 @@
|
||||
<select id="VEEduMIXDAO.selectList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
|
||||
/* VEEduMIXDAO.selectList */
|
||||
SELECT
|
||||
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
|
||||
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
|
||||
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
|
||||
vadi.CNCL_CN AS cnclCn,
|
||||
le.MBER_NM AS userNm,
|
||||
<include refid="VEEduMIXDAO.select_column_name"/>
|
||||
<include refid="VEEduMIXDAO.select_column_name"/>,
|
||||
CASE
|
||||
WHEN EXISTS (/* 설문조사 */
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
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
|
||||
<include refid="VEEduMIXDAO.table_name"/> a
|
||||
JOIN ve_prcs_aplct_prd vpap ON
|
||||
@ -138,8 +148,6 @@
|
||||
/* AND vpap.PRCS_APLCT_PRD_ORD = vadi.PRCS_APLCT_PRD_ORD */
|
||||
JOIN LETTNGNRLMBER le ON
|
||||
a.USER_ID = le.MBER_ID
|
||||
LEFT JOIN LETTNQESTNRINFO qe ON
|
||||
a.USER_ID = qe.FRST_REGISTER_ID
|
||||
WHERE
|
||||
1=1
|
||||
<isNotEmpty property="prcsOrd">
|
||||
|
||||
@ -633,12 +633,17 @@
|
||||
vadi.APLCT_STATE_CD AS aplctStateCd,
|
||||
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
|
||||
vadi.CNCL_CN AS cnclCn,
|
||||
CASE WHEN EXISTS ( /* 설문조사 */
|
||||
SELECT 1
|
||||
FROM lettnqestnrrslt lerslt
|
||||
WHERE lerslt.respond_id = 'USRCNFRM_00000002720'
|
||||
AND vpap.PRCS_APLCT_PRD_ORD = lerslt.edu_aplct_ord
|
||||
) THEN 1 ELSE 0 END as qestRsltExists
|
||||
CASE
|
||||
WHEN EXISTS (/* 설문조사 */
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
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
|
||||
VE_EDU_APLCT a
|
||||
join ve_prcs_aplct_prd vpap
|
||||
@ -723,4 +728,23 @@
|
||||
PRCS_APLCT_PRD_ORD = #prcsAplctPrdOrd#
|
||||
AND EDU_APLCT_ORD = #eduAplctOrd#
|
||||
</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>
|
||||
|
||||
@ -418,6 +418,8 @@
|
||||
<th>신청자</th>
|
||||
<th>교육이수여부</th>
|
||||
<th>교육이수상태변경</th>
|
||||
<th>설문조사</th>
|
||||
<th>이수증</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -438,6 +440,26 @@
|
||||
<button type="button" class="btn_type04" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '20')">이수</button>
|
||||
<button type="button" class="btn_type05" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '10')">미이수</button>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.qestRsltExists }">
|
||||
<button type="button" class="btn_type04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">설문결과</button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
미입력
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.qestRsltExists }">
|
||||
<button type="button" title="이수증" class="btn_type04" onclick="fncCmpltCrtfc('<c:out value="${info.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증</button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
-
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
@ -471,5 +493,26 @@
|
||||
</div>
|
||||
</form:form>
|
||||
<!-- //cont -->
|
||||
|
||||
<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">
|
||||
<script>
|
||||
/*
|
||||
* 오버레이 방식
|
||||
*/
|
||||
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd){
|
||||
|
||||
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
|
||||
|
||||
viewer.hideToolbarItem(["save"]);
|
||||
viewer.showToolbarItem(["print_pdf"]);
|
||||
|
||||
//viewer.openFile('cmplt_crtfc_20231030.mrd');
|
||||
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
|
||||
viewer.openFile('cmplt_crtfc_20231030.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='+p_prcsAplctPrdOrd+'&eduAplctOrd='+p_eduAplctOrd+']');
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -470,8 +470,8 @@
|
||||
<th>신청일</th>
|
||||
<th>확정여부</th>
|
||||
<th>이수여부</th>
|
||||
<th>설문조사</th>
|
||||
<th>이수증</th>
|
||||
<!-- <th>설문조사</th>
|
||||
<th>이수증</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -495,9 +495,9 @@
|
||||
<td>
|
||||
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
|
||||
</td>
|
||||
<td>
|
||||
<%-- <td>
|
||||
<c:choose>
|
||||
<c:when test="${list.qestnrId }">
|
||||
<c:when test="${list.qestRsltExists }">
|
||||
<button type="button" class="btn_type04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">설문결과</button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
@ -508,13 +508,13 @@
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.qestnrId }">
|
||||
<%-- <button type="button" class="btnType04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">출력</button> --%>
|
||||
<button type="button" class="btnType04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">출력</button>
|
||||
<button type="button" class="btn_type04">출력</button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</td> --%>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
|
||||
@ -0,0 +1,149 @@
|
||||
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%
|
||||
/**
|
||||
* @Class Name : instrCostPopup.jsp
|
||||
* @Description : 강사비용 팝업
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2021.08.09 김봉호 최초 생성
|
||||
* @author 안주영
|
||||
* @since 2022.01.04
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
%>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<title>강의배정팝업</title>
|
||||
<script type="text/javaScript" language="javascript">
|
||||
$(document).ready(function(){
|
||||
numberSum();
|
||||
|
||||
$("input:text[numberOnly]").on("keyup", function() {
|
||||
$(this).val($(this).val().replace(/[^0-9]/g,""));
|
||||
$(this).val($(this).val().replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
||||
numberSum();
|
||||
});
|
||||
});
|
||||
|
||||
function numberSum(){
|
||||
// 강사료 계산 [시작]
|
||||
var instrFee = $("#instrFee").val();
|
||||
instrFee = instrFee.replaceAll(",", "");
|
||||
|
||||
var trafficFee = $("#trafficFee").val();
|
||||
trafficFee = trafficFee.replaceAll(",", "");
|
||||
|
||||
var instrFeeSum = Number(instrFee) + Number(trafficFee);
|
||||
|
||||
$("#instrFeeSum").val(instrFeeSum);
|
||||
$("#instrFeeSum").val($("#instrFeeSum").val().replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
||||
|
||||
// 강사료 계산 [끝]
|
||||
|
||||
// 전체 계산 [시작]
|
||||
var totalSum;
|
||||
$("#totalSum").val(instrFeeSum);
|
||||
$("#totalSum").val($("#totalSum").val().replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
||||
// 전체 계산 [끝]
|
||||
}
|
||||
|
||||
function fnSaveFee(flag){
|
||||
var msg = "";
|
||||
var msgDetail = "";
|
||||
|
||||
$("#instrFee").val($("#instrFee").val().replaceAll(',',''));
|
||||
$("#trafficFee").val($("#trafficFee").val().replaceAll(',',''));
|
||||
|
||||
if(flag == 'Y') {
|
||||
msg = "확정";
|
||||
msgDetail = "(확정 후에는 수정이 불가능합니다.)"
|
||||
} else {
|
||||
msg = "저장(미확정)"
|
||||
}
|
||||
|
||||
$("#sbmtYn").val(flag);
|
||||
|
||||
var data1 = new FormData(document.getElementById("createForm"));
|
||||
|
||||
if (confirm(msg+" 하시겠습니까?" +"\n"+msgDetail)) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "${pageContext.request.contextPath}/kccadr/oprtn/adultVisitEdu/popup/instrFeeRegAjax.do",
|
||||
//data: JSON.stringify(data),
|
||||
data: data1,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
cache: false,
|
||||
success: function (returnData, status) {
|
||||
if(returnData.result == 'success'){
|
||||
alert("정상적으로 "+ msg +" 되었습니다.");
|
||||
opener.location.reload();
|
||||
self.close();
|
||||
}else{
|
||||
alert(returnData.message);
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function fncPopClose(){
|
||||
self.close();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form:form id="createForm" name="createForm" method="post" commandName="vEInstrFeeAcmdtVO" onsubmit="return false;">
|
||||
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="<c:out value="${info.eduAplctOrd}" />">
|
||||
<input type="hidden" name="eduChasiOrd" id="eduChasiOrd" value="<c:out value="${info.eduChasiOrd}" />">
|
||||
<input type="hidden" name="instrFeeOrd" id="instrFeeOrd" value="<c:out value="${info.instrFeeOrd}" />" />
|
||||
<input type="hidden" name="sbmtYn" id="sbmtYn" value="" />
|
||||
<div class="area_popup">
|
||||
<div class="cont_popup">
|
||||
|
||||
<div class="tb_tit01">
|
||||
<p>교육 내용에 대한 전반적 만족도 평가</p>
|
||||
</div>
|
||||
|
||||
<div class="btn_wrap_pop btn_layout01">
|
||||
<div class="btn_left">
|
||||
</div>
|
||||
<div class="btn_center">
|
||||
<c:if test="${info != null }">
|
||||
<c:if test="${info.sbmtYn ne 'Y'}">
|
||||
<button type="button" class="btn_type04" onclick="fnSaveFee('Y')">확정</button>
|
||||
<button type="button" class="btn_type04" onclick="fnSaveFee('N')">저장</button>
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
<button type="button" class="btn_type02" onclick="fncPopClose()">닫기</button>
|
||||
</div>
|
||||
<div class="btn_right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form:form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -56,6 +56,7 @@ $(document).ready(function(){
|
||||
// dayDiff 값을 추가합니다.
|
||||
newRow.append('<td class="edup_days">' + dayDiff + '</td>');
|
||||
|
||||
console.log('currentMonth : ' ,currentMonth);
|
||||
// 교육일정 칼럼을 초기화합니다.
|
||||
for (var i = 1; i <= 12; i++) {
|
||||
// 다음 월 class
|
||||
@ -68,6 +69,7 @@ $(document).ready(function(){
|
||||
} 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 {
|
||||
@ -469,7 +471,7 @@ $(document).ready(function(){
|
||||
|
||||
|
||||
<div class="tab_content">
|
||||
<!--
|
||||
|
||||
<div class="list_top">
|
||||
<div class="list_top_left">
|
||||
<label for="" class="label">교육과정 선택</label>
|
||||
@ -492,7 +494,7 @@ $(document).ready(function(){
|
||||
<button type="button" class="btnType01">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="edup_result">
|
||||
<div>총 <span>6</span>개의 검색결과가 있습니다.</div>
|
||||
<ul>
|
||||
|
||||
@ -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>
|
||||
|
||||
<!-- content -->
|
||||
@ -103,7 +297,6 @@ $(document).ready(function(){
|
||||
<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="eduAplctOrd" id="eduAplctOrd" value="" />
|
||||
<div class="cont_tit">
|
||||
<h2>신청목록</h2>
|
||||
<div class="sns_go">
|
||||
@ -146,7 +339,7 @@ $(document).ready(function(){
|
||||
<caption>교육 목록표</caption>
|
||||
<colgroup>
|
||||
<col style="width:35%;">
|
||||
<col style="width:;">
|
||||
<col style="width:10%;">
|
||||
<col style="width:13%;">
|
||||
<col style="width:13%;">
|
||||
<col style="width:13%;">
|
||||
@ -174,10 +367,11 @@ $(document).ready(function(){
|
||||
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
|
||||
<c:choose>
|
||||
<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 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:otherwise>
|
||||
-
|
||||
@ -187,7 +381,7 @@ $(document).ready(function(){
|
||||
<td>
|
||||
<c:choose>
|
||||
<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 test="${list.dateChk eq 1 and not list.qestRsltExists}">
|
||||
교육완료
|
||||
@ -197,7 +391,6 @@ $(document).ready(function(){
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button>
|
||||
|
||||
</td>
|
||||
<!-- <td>-</td> -->
|
||||
@ -228,6 +421,72 @@ $(document).ready(function(){
|
||||
</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>
|
||||
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
|
||||
<script>
|
||||
@ -236,6 +495,8 @@ $(document).ready(function(){
|
||||
*/
|
||||
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd){
|
||||
|
||||
console.log('p_eduAplctOrd : ', p_eduAplctOrd);
|
||||
console.log('p_prcsAplctPrdOrd : ', p_prcsAplctPrdOrd);
|
||||
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
|
||||
|
||||
viewer.hideToolbarItem(["save"]);
|
||||
|
||||
@ -206,9 +206,9 @@
|
||||
<div class="tb_tit02_left">
|
||||
<div class="t_best q_title">Q&A</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 class="btn_wrap1"> -->
|
||||
<!-- <button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='/offedu/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do'">더보기</button> -->
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
<div class="btn_right">
|
||||
<button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button>
|
||||
|
||||
@ -11,69 +11,30 @@
|
||||
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
|
||||
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
|
||||
<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">
|
||||
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
$('#schduleManager').hide();
|
||||
|
||||
$('.tab_button').click(function(){
|
||||
var type = $(this).data('info');
|
||||
// list 타입이면 return;
|
||||
if(type === 'list')
|
||||
if(type === 'list'){
|
||||
$('#schduleManager').hide();
|
||||
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(){
|
||||
@ -103,7 +64,6 @@ $(document).ready(function(){
|
||||
|
||||
var ddlnCdText = '';
|
||||
|
||||
console.log('');
|
||||
if (currentDate < strtPnttm) {
|
||||
ddlnCdText = "접수전";
|
||||
} 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
|
||||
function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){
|
||||
var form = document.regForm;
|
||||
@ -191,10 +263,14 @@ $(document).ready(function(){
|
||||
$("#monthTemp th:nth-child(" + currentMonth + ")").addClass("edup_this");
|
||||
}
|
||||
|
||||
function fncEduSelect(){
|
||||
function fncEduSelect(s_todate){
|
||||
var returnVal = '';
|
||||
|
||||
var form = document.selectForm ;
|
||||
form.sTodate.value = s_todate;
|
||||
|
||||
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);
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
@ -206,10 +282,9 @@ $(document).ready(function(){
|
||||
contentType: false,
|
||||
cache: false,
|
||||
success:function(returnData){
|
||||
if(returnData.result == "success"){
|
||||
console.log('returnData : ', returnData);
|
||||
returnVal = returnData.data;
|
||||
}
|
||||
// returnVal = returnData.data;
|
||||
returnVal = returnData;
|
||||
},
|
||||
error:function(request , status, error){
|
||||
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
||||
@ -307,6 +382,108 @@ $(document).ready(function(){
|
||||
$('#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 += " (1주차 : " + week1Cnt + "건";
|
||||
sHtml += ", 2주차 : " + week2Cnt + "건";
|
||||
sHtml += ", 3주차 : " + week3Cnt + "건";
|
||||
sHtml += ", 4주차 : " + week4Cnt + "건";
|
||||
sHtml += ", 5주차 : " + week5Cnt + "건";
|
||||
sHtml += ", 6주차 : " + week6Cnt + "건)";
|
||||
|
||||
sHtml += ' <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>
|
||||
|
||||
<!-- content -->
|
||||
@ -314,6 +491,7 @@ $(document).ready(function(){
|
||||
|
||||
<form name="selectForm" id="selectForm">
|
||||
<input type="hidden" name="lctrDivCd" value="60">
|
||||
<input type="hidden" name="sTodate" value="">
|
||||
</form>
|
||||
<form name="confirmForm" id="confirmForm">
|
||||
<input type="hidden" name="trgtNm">
|
||||
@ -464,84 +642,7 @@ $(document).ready(function(){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab_content">
|
||||
|
||||
|
||||
<!-- <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 class="tab_content" id="schduleManager">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@ -200,6 +200,9 @@
|
||||
<div class="tb_tit02_left">
|
||||
<div class="t_best q_title">Q&A</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 class="btn_right">
|
||||
<button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button>
|
||||
|
||||
@ -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>
|
||||
|
||||
<!-- content -->
|
||||
@ -253,7 +447,7 @@ $(document).ready(function(){
|
||||
<col style="width:10%;">
|
||||
<col style="width:13%;">
|
||||
<col style="width:13%;">
|
||||
<col style="width:13%;">
|
||||
<%-- <col style="width:13%;"> --%>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
@ -261,7 +455,7 @@ $(document).ready(function(){
|
||||
<th>교육일자</th>
|
||||
<th>신청결과</th>
|
||||
<th>설문조사</th>
|
||||
<th>이수증</th>
|
||||
<!-- <th>이수증</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -328,23 +522,23 @@ $(document).ready(function(){
|
||||
and list.aplctStateCd ne 30
|
||||
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 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:otherwise>
|
||||
-
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<!-- <td> -->
|
||||
<!--
|
||||
취소상태
|
||||
list.aplctStateCd ne 30
|
||||
list.aprvlCd ne 40
|
||||
-->
|
||||
<c:choose>
|
||||
<%-- <c:choose>
|
||||
<c:when test="${list.qestRsltExists }">
|
||||
<button type="button" title="출력" class="btnType03">출력</button>
|
||||
</c:when>
|
||||
@ -358,11 +552,11 @@ $(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>
|
||||
<%-- <button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button> --%>
|
||||
|
||||
</td>
|
||||
<!-- </td> -->
|
||||
<!-- <td>-</td> -->
|
||||
</tr>
|
||||
</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>
|
||||
<!--// 강의만족도 결과 등록 팝업-->
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user