This commit is contained in:
myname 2025-10-23 16:56:53 +09:00
commit 0ab67063f4
28 changed files with 1973 additions and 45 deletions

View File

@ -357,7 +357,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
userManageVO.setUniqId(uniqId); userManageVO.setUniqId(uniqId);
String pass = "1"; String pass = "1";
if("ROLE_ADMIN".equals(userManageVO.getAuthorCode()) || "ROLE_VISIT".equals(userManageVO.getAuthorCode())){ if(
"ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
){
//패스워드 암호화 //패스워드 암호화
//pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId()); //pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword()); pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
@ -368,8 +374,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
userManageVO.setEmplyrSttusCode("P"); //강제승인 userManageVO.setEmplyrSttusCode("P"); //강제승인
if( !("ROLE_ADMIN".equals(userManageVO.getAuthorCode()) if( !(
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) )) { "ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
)) {
userManageDAO.insertOffeudUser(userManageVO); userManageDAO.insertOffeudUser(userManageVO);
}else { }else {
@ -380,8 +391,14 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
authorGroup.setUniqId(uniqId); authorGroup.setUniqId(uniqId);
authorGroup.setAuthorCode(userManageVO.getAuthorCode()); authorGroup.setAuthorCode(userManageVO.getAuthorCode());
//authorGroup.setAuthorCode("ROLE_ADMIN"); //authorGroup.setAuthorCode("ROLE_ADMIN");
if(!"ROLE_ADMIN".equals(userManageVO.getAuthorCode()) if(!(
|| !"ROLE_VISIT".equals(userManageVO.getAuthorCode())){ "ROLE_ADMIN".equals(userManageVO.getAuthorCode()) //최고 관리자
|| "ROLE_VISIT".equals(userManageVO.getAuthorCode()) //찾교 관리자
|| "ROLE_ADR_JRSDC".equals(userManageVO.getAuthorCode()) //기소유예관할
|| "ROLE_ADR_KIPO".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
|| "ROLE_ADR_PREV".equals(userManageVO.getAuthorCode()) //부정경쟁행위 시정명령
)
){
authorGroup.setMberTyCode("GNR"); authorGroup.setMberTyCode("GNR");
}else { }else {

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.cmdTrgt.web; package kcc.ve.aplct.cmdTrgt.web;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -1250,14 +1251,23 @@ public class CmdTrgtController {
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd()); notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
} }
//FAQ 조회 //FAQ 조회
BoardVO boardVO = new BoardVO(); VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
boardVO.setFirstIndex(0); //페이징 미처리 vEPrcsDetailVO2.setFirstIndex(0);
boardVO.setRecordCountPerPage(1000); //페이징 미처리 vEPrcsDetailVO2.setRecordCountPerPage(10000);
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null); List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList");
model.addAttribute("FAQList", resultList); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회 //Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.prevent.web; package kcc.ve.aplct.prevent.web;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -1251,13 +1252,21 @@ public class PreventController {
} }
//FAQ 조회 //FAQ 조회
BoardVO boardVO = new BoardVO(); VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
boardVO.setFirstIndex(0); //페이징 미처리 vEPrcsDetailVO2.setFirstIndex(0);
boardVO.setRecordCountPerPage(1000); //페이징 미처리 vEPrcsDetailVO2.setRecordCountPerPage(10000);
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null); List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList");
model.addAttribute("FAQList", resultList); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회 //Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -1,6 +1,7 @@
package kcc.ve.aplct.sspnIdtmt.web; package kcc.ve.aplct.sspnIdtmt.web;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -1241,14 +1242,22 @@ public class SspnIdtmtController {
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd()); notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
} }
//FAQ 조회 VEPrcsDetailVO vEPrcsDetailVO2 = new VEPrcsDetailVO();
BoardVO boardVO = new BoardVO(); vEPrcsDetailVO2.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID vEPrcsDetailVO2.setFirstIndex(0);
boardVO.setFirstIndex(0); //페이징 미처리 vEPrcsDetailVO2.setRecordCountPerPage(10000);
boardVO.setRecordCountPerPage(1000); //페이징 미처리 List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO2);
Map<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
List<BoardVO> resultList = (List<BoardVO>)map.get("resultList"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
model.addAttribute("FAQList", resultList); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
vEPrcsDetailVOList.forEach(t -> {
LocalDateTime ldt = LocalDateTime.parse(t.getFrstRegistPnttm(), dtf);
String dateOnly = ldt.format(outputFormatter);
t.setFrstRegistPnttm(dateOnly);
});
model.addAttribute("FAQList", vEPrcsDetailVOList);
//Q&A 조회 //Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값

View File

@ -43,15 +43,30 @@ public class VeConstants {
*/ */
public static final String LCTR_DIV_CD_60 = "60"; public static final String LCTR_DIV_CD_60 = "60";
/**
* 조건부 기소유예 Faq
*/
public static final String LCTR_DIV_CD_65 = "65";
/** /**
* 시정명령 * 시정명령
*/ */
public static final String LCTR_DIV_CD_70 = "70"; public static final String LCTR_DIV_CD_70 = "70";
/**
* 시정명령 Faq
*/
public static final String LCTR_DIV_CD_75 = "75";
/** /**
* 예방교육 * 예방교육
*/ */
public static final String LCTR_DIV_CD_80 = "80"; public static final String LCTR_DIV_CD_80 = "80";
/**
* 예방교육 Faq
*/
public static final String LCTR_DIV_CD_85 = "85";
public static final String STATUS_CD_SBMT = "10"; // 요청 public static final String STATUS_CD_SBMT = "10"; // 요청

View File

@ -39,4 +39,7 @@ public interface VEPrcsService {
void qnaUpdate(VEPrcsDetailVO vEPrcsDetailVO); void qnaUpdate(VEPrcsDetailVO vEPrcsDetailVO);
void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO);
void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -97,4 +97,13 @@ public class VEPrcsDAO extends EgovAbstractDAO {
update("VEPrcsDAO.qnaUpdate", vEPrcsDetailVO); update("VEPrcsDAO.qnaUpdate", vEPrcsDetailVO);
} }
public void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO) {
update("VEPrcsDAO.updateFaqUpsert", vEPrcsDetailVO);
}
public void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO) {
delete("VEPrcsDAO.deleteFaq", vEPrcsDetailVO);
}
} }

View File

@ -85,4 +85,17 @@ public class VEPrcsServiceImpl implements VEPrcsService {
vEPrcsDAO.qnaUpdate(vEPrcsDetailVO); vEPrcsDAO.qnaUpdate(vEPrcsDetailVO);
} }
@Override
public void updateFaqUpsert(VEPrcsDetailVO vEPrcsDetailVO) {
vEPrcsDAO.updateFaqUpsert(vEPrcsDetailVO);
}
@Override
public void deleteFaq(VEPrcsDetailVO vEPrcsDetailVO) {
vEPrcsDAO.deleteFaq(vEPrcsDetailVO);
}
} }

View File

@ -146,6 +146,10 @@ public class CmdTrgtMngController {
@Resource(name = "vEEduMIXService") @Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService; private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/* /*
// 교육신청 서비스단 // 교육신청 서비스단
@ -2668,6 +2672,157 @@ public class CmdTrgtMngController {
return modelAndView; return modelAndView;
} }
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cmdTrgt/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
if(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/cmdTrgt/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@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.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_75);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@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 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -141,6 +141,10 @@ public class CndtnTrgtMngController {
@Resource(name = "vEEduMIXService") @Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService; private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/* /*
// 교육신청 서비스단 // 교육신청 서비스단
@ -2662,6 +2666,154 @@ public class CndtnTrgtMngController {
return modelAndView; return modelAndView;
} }
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
if(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@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.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_65);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@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 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -146,6 +146,10 @@ public class PreventNewMngController {
@Resource(name = "vEEduMIXService") @Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService; private VEEduMIXService vEEduMIXService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
/* /*
// 교육신청 서비스단 // 교육신청 서비스단
@ -2652,6 +2656,157 @@ public class PreventNewMngController {
return modelAndView; return modelAndView;
} }
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngList.do")
public String cndtnEduFaqMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
// }
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/prevent/cndtnEduFaqMngList";
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngDetail.do")
public String cndtnEduFaqMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
if(vEPrcsDetailVO != null && StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
}
return "oprtn/prevent/cndtnEduFaqMngDetail";
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngUpdateAjax.do")
public ModelAndView cndtnEduFaqMngUpdateAjax(
@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.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_85);
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsAplctPrdQnaOrd())) {
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
}
vEPrcsService.updateFaqUpsert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
@RequestMapping("/kccadr/oprtn/prevent/cndtnEduFaqMngDeleteAjax.do")
public ModelAndView cndtnEduFaqMngDeleteAjax(
@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 로그인 정보 가져오기
vEPrcsService.deleteFaq(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -55,6 +55,12 @@
roleHierarchyString=" roleHierarchyString="
ROLE_ADMIN > ROLE_ADR_ADMIN ROLE_ADMIN > ROLE_ADR_ADMIN
ROLE_ADMIN > ROLE_VISIT ROLE_ADMIN > ROLE_VISIT
ROLE_ADMIN > ROLE_ADR_JRSDC
ROLE_ADMIN > ROLE_ADR_KIPO
ROLE_ADMIN > ROLE_ADR_PREV
ROLE_ADR_JRSDC > ROLE_USER_MANAGER
ROLE_ADR_KIPO > ROLE_USER_MANAGER
ROLE_ADR_PREV > ROLE_USER_MANAGER
ROLE_ADR_ADMIN > ROLE_USER_MANAGER ROLE_ADR_ADMIN > ROLE_USER_MANAGER
ROLE_VISIT > ROLE_USER_MANAGER ROLE_VISIT > ROLE_USER_MANAGER
ROLE_USER_MANAGER > ROLE_USER_MEMBER ROLE_USER_MANAGER > ROLE_USER_MEMBER

View File

@ -215,7 +215,7 @@
GROUP BY A.MENU_NO GROUP BY A.MENU_NO
</isEqual> </isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS"> <isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT') AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
GROUP BY A.MENU_NO GROUP BY A.MENU_NO
</isNotEqual> </isNotEqual>
ORDER BY ORDER BY

View File

@ -158,7 +158,7 @@
GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN
</isEqual> </isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS"> <isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT') AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN GROUP BY A.MENU_NO, A.MENU_NM, A.PROGRM_FILE_NM, A.UPPER_MENU_NO, A.MENU_ORDR, A.MENU_DC, A.RELATE_IMAGE_PATH, A.RELATE_IMAGE_NM, A.MENU_USER_TYPE, B.USE_YN
</isNotEqual> </isNotEqual>
ORDER BY ORDER BY

View File

@ -246,7 +246,7 @@
</isEqual> </isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS"> <isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT') AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
/* /*
GROUP BY A.MENU_NO GROUP BY A.MENU_NO
*/ */

View File

@ -102,7 +102,7 @@
AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER') AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER')
</isEqual> </isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS"> <isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT') AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
</isNotEqual> </isNotEqual>
</isNotEmpty> </isNotEmpty>
LIMIT 1 LIMIT 1

View File

@ -102,7 +102,7 @@
AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER') AND B.AUTHOR_CODE IN ('ROLE_ANONYMOUS', 'ROLE_USER_MEMBER', 'ROLE_USER_MANAGER')
</isEqual> </isEqual>
<isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS"> <isNotEqual property="authorCode" compareValue="ROLE_ANONYMOUS">
AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT') AND B.AUTHOR_CODE IN ('ROLE_ADMIN', 'ROLE_ADR_ADMIN', 'ROLE_VISIT', 'ROLE_ADR_JRSDC', 'ROLE_ADR_KIPO', 'ROLE_ADR_PREV')
</isNotEqual> </isNotEqual>
</isNotEmpty> </isNotEmpty>
LIMIT 1 LIMIT 1

View File

@ -660,4 +660,44 @@
edu_aplct_ord = #eduAplctOrd# edu_aplct_ord = #eduAplctOrd#
</update> </update>
<!-- Faq upsert -->
<update id="VEPrcsDAO.updateFaqUpsert" parameterClass="VEPrcsDetailVO" >
/* VEPrcsDAO.FaqUpsert */
INSERT INTO VEA_PRCS_APLCT_PRD_QNA (
PRCS_APLCT_PRD_QNA_ORD,
LCTR_DIV_CD,
QNA_CN,
QNA_ANSWER_CN,
FRST_REGISTER_ID,
FRST_REGIST_PNTTM
)
VALUES (
#prcsAplctPrdQnaOrd#,
#lctrDivCd#,
#qnaCn#,
#qnaAnswerCn#,
#frstRegisterId#,
NOW()
)
ON CONFLICT (PRCS_APLCT_PRD_QNA_ORD)
DO UPDATE
SET
QNA_CN = #qnaCn#,
QNA_ANSWER_CN = #qnaAnswerCn#,
LAST_UPDUSR_ID = #lastUpdusrId#,
LAST_UPDT_PNTTM = NOW()
</update>
<!-- Faq delete -->
<update id="VEPrcsDAO.deleteFaq" parameterClass="VEPrcsDetailVO" >
/* VEPrcsDAO.deleteFaq */
DELETE
FROM VEA_PRCS_APLCT_PRD_QNA
WHERE PRCS_APLCT_PRD_QNA_ORD = #prcsAplctPrdQnaOrd#
</update>
</sqlMap> </sqlMap>

View File

@ -72,6 +72,7 @@ $( document ).ready(function(){
$('#userWork_case1').show(); $('#userWork_case1').show();
$('#userWork_case2').hide(); $('#userWork_case2').hide();
$('#userWork_case3').hide();
}); });
@ -89,18 +90,20 @@ function authorChange(obj) {
} }
if (obj.options[obj.selectedIndex].value=='ROLE_ADR_JRSDC' if (obj.options[obj.selectedIndex].value=='ROLE_ADR_JRSDC'
|| obj.options[obj.selectedIndex].value=='ROLE_ADR_KIPO' // || obj.options[obj.selectedIndex].value=='ROLE_ADR_KIPO'
){ //기소유예검찰담당자 ){ //기소유예검찰담당자
$('#userWork_case1').hide(); $('#userWork_case1').hide();
$('#userWork_case2').show(); $('#userWork_case2').show();
$('#userWork_case3').hide(); $('#userWork_case3').hide();
}else if (obj.options[obj.selectedIndex].value=='ROLE_VISIT'){ //찾교담당자 }
/* else if (obj.options[obj.selectedIndex].value=='ROLE_VISIT'){ //찾교담당자
$('#userWork_case1').hide(); $('#userWork_case1').hide();
$('#userWork_case2').hide(); $('#userWork_case2').hide();
$('#userWork_case3').show(); $('#userWork_case3').show();
}else{ } */
else{
$('#userWork_case1').show(); $('#userWork_case1').show();
$('#userWork_case2').hide(); $('#userWork_case2').hide();
$('#userWork_case3').hide(); $('#userWork_case3').hide();

View File

@ -0,0 +1,196 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : fndthEduPrcsMngDetail.jsp
* @Description : 기반강화연수 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function updateQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngUpdateAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function deleteQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDeleteAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="listForm" name="listForm" method="post">
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdQnaOrd" id="prcsAplctPrdQnaOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdQnaOrd}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육문의상세</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<tr>
<th scope="row">등록자</th>
<td>
<c:out value='${info.frstRegisterId}'/>
</td>
</tr>
<tr>
<th scope="row">등록일시</th>
<td>
<c:out value='${info.frstRegistPnttm}'/>
</td>
</tr>
<c:if test="${not empty info.lastUpdusrId}">
<tr>
<th scope="row">수정자</th>
<td>
<c:out value='${info.lastUpdusrId}'/>
</td>
</tr>
<tr>
<th scope="row">수정일시</th>
<td>
<c:out value='${info.lastUpdtPnttm}'/>
</td>
</tr>
</c:if>
</c:if>
<tr>
<th scope="row">질문</th>
<td class="tb_alram">
<div>
<textarea name="qnaCn" id="qnaCn"><c:out value="${info.qnaCn}" /></textarea>
</div>
</td>
</tr>
<tr>
<th scope="row">내용</th>
<td class="tb_alram">
<div>
<textarea name="qnaAnswerCn" id="qnaAnswerCn"><c:out value="${info.qnaAnswerCn}" /></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="deleteQnaAnswerCn(); return false;">삭제</button>
</c:if>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<c:choose>
<c:when test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">수정</button>
</c:when>
<c:otherwise>
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">등록</button>
</c:otherwise>
</c:choose>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,246 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : fndthEduQnaMngList.jsp
* @Description : 기반강화연수 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2023.11.17 이호영 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdQnaOrd){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = prcsAplctPrdQnaOrd ;
form.action = "<c:url value='/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
function fncCreate(){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = '';
form.action = "<c:url value='/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
/*
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
} */
//초기화
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if ($(this).prop("tagName") == 'SELECT') {
// 초기화 시 무조건 select option 첫번째 지정
$(this).find("option:first-child").prop("selected",true);
} else if ($(this).attr('type') == 'radio') {
var radioName = $(this).attr("name");
var radioFirst = $("[name="+radioName+"]")[0];
$(radioFirst).prop("checked",true)
} else {
$(this).val('');
}
});
}
</script>
<title>교육문의</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" id="prcsAplctPrdQnaOrd" name="prcsAplctPrdQnaOrd" value="" />
</form>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<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" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/cmdTrgt/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<div class="tb_tit01">
<p>Faq관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<%-- <div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div> --%>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="질문내용을 입력해 주세요" title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>" onkeyDown="press(event);">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 40$">
<col style="width: 40%">
<col style="width: 20%">
</colgroup>
<thead>
<tr>
<th>질문내용</th>
<th>답변</th>
<th>등록일시</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaCn}'/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaAnswerCn}'/>
</td>
<td>
<c:out value='${list.frstRegistPnttm }'/>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -0,0 +1,196 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : fndthEduPrcsMngDetail.jsp
* @Description : 기반강화연수 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function updateQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngUpdateAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function deleteQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDeleteAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="listForm" name="listForm" method="post">
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdQnaOrd" id="prcsAplctPrdQnaOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdQnaOrd}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육문의상세</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<tr>
<th scope="row">등록자</th>
<td>
<c:out value='${info.frstRegisterId}'/>
</td>
</tr>
<tr>
<th scope="row">등록일시</th>
<td>
<c:out value='${info.frstRegistPnttm}'/>
</td>
</tr>
<c:if test="${not empty info.lastUpdusrId}">
<tr>
<th scope="row">수정자</th>
<td>
<c:out value='${info.lastUpdusrId}'/>
</td>
</tr>
<tr>
<th scope="row">수정일시</th>
<td>
<c:out value='${info.lastUpdtPnttm}'/>
</td>
</tr>
</c:if>
</c:if>
<tr>
<th scope="row">질문</th>
<td class="tb_alram">
<div>
<textarea name="qnaCn" id="qnaCn"><c:out value="${info.qnaCn}" /></textarea>
</div>
</td>
</tr>
<tr>
<th scope="row">내용</th>
<td class="tb_alram">
<div>
<textarea name="qnaAnswerCn" id="qnaAnswerCn"><c:out value="${info.qnaAnswerCn}" /></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="deleteQnaAnswerCn(); return false;">삭제</button>
</c:if>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<c:choose>
<c:when test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">수정</button>
</c:when>
<c:otherwise>
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">등록</button>
</c:otherwise>
</c:choose>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,246 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : fndthEduQnaMngList.jsp
* @Description : 기반강화연수 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2023.11.17 이호영 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdQnaOrd){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = prcsAplctPrdQnaOrd ;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
function fncCreate(){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = '';
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
/*
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
} */
//초기화
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if ($(this).prop("tagName") == 'SELECT') {
// 초기화 시 무조건 select option 첫번째 지정
$(this).find("option:first-child").prop("selected",true);
} else if ($(this).attr('type') == 'radio') {
var radioName = $(this).attr("name");
var radioFirst = $("[name="+radioName+"]")[0];
$(radioFirst).prop("checked",true)
} else {
$(this).val('');
}
});
}
</script>
<title>교육문의</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" id="prcsAplctPrdQnaOrd" name="prcsAplctPrdQnaOrd" value="" />
</form>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<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" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<div class="tb_tit01">
<p>Faq관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<%-- <div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div> --%>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="질문내용을 입력해 주세요" title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>" onkeyDown="press(event);">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 40$">
<col style="width: 40%">
<col style="width: 20%">
</colgroup>
<thead>
<tr>
<th>질문내용</th>
<th>답변</th>
<th>등록일시</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaCn}'/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaAnswerCn}'/>
</td>
<td>
<c:out value='${list.frstRegistPnttm }'/>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -0,0 +1,196 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : fndthEduPrcsMngDetail.jsp
* @Description : 기반강화연수 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/prevent/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function updateQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/prevent/cndtnEduFaqMngUpdateAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function deleteQnaAnswerCn(){
var data1 = new FormData(document.getElementById("detailForm"));
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/prevent/cndtnEduFaqMngDeleteAjax.do",
data:data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
<body>
<form id="listForm" name="listForm" method="post">
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdQnaOrd" id="prcsAplctPrdQnaOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdQnaOrd}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/prevent/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육문의상세</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<tr>
<th scope="row">등록자</th>
<td>
<c:out value='${info.frstRegisterId}'/>
</td>
</tr>
<tr>
<th scope="row">등록일시</th>
<td>
<c:out value='${info.frstRegistPnttm}'/>
</td>
</tr>
<c:if test="${not empty info.lastUpdusrId}">
<tr>
<th scope="row">수정자</th>
<td>
<c:out value='${info.lastUpdusrId}'/>
</td>
</tr>
<tr>
<th scope="row">수정일시</th>
<td>
<c:out value='${info.lastUpdtPnttm}'/>
</td>
</tr>
</c:if>
</c:if>
<tr>
<th scope="row">질문</th>
<td class="tb_alram">
<div>
<textarea name="qnaCn" id="qnaCn"><c:out value="${info.qnaCn}" /></textarea>
</div>
</td>
</tr>
<tr>
<th scope="row">내용</th>
<td class="tb_alram">
<div>
<textarea name="qnaAnswerCn" id="qnaAnswerCn"><c:out value="${info.qnaAnswerCn}" /></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<c:if test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="deleteQnaAnswerCn(); return false;">삭제</button>
</c:if>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<c:choose>
<c:when test="${not empty vEPrcsDetailVO.prcsAplctPrdQnaOrd}">
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">수정</button>
</c:when>
<c:otherwise>
<button type="button" class="btn_type01" onclick="updateQnaAnswerCn(); return false;">등록</button>
</c:otherwise>
</c:choose>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,246 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : fndthEduQnaMngList.jsp
* @Description : 기반강화연수 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2023.11.17 이호영 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/prevent/cndtnEduFaqMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdQnaOrd){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = prcsAplctPrdQnaOrd ;
form.action = "<c:url value='/kccadr/oprtn/prevent/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
function fncCreate(){
var form = document.detailForm ;
form.prcsAplctPrdQnaOrd.value = '';
form.action = "<c:url value='/kccadr/oprtn/prevent/cndtnEduFaqMngDetail.do'/>";
form.submit();
}
/*
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/prevent/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
} */
//초기화
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if ($(this).prop("tagName") == 'SELECT') {
// 초기화 시 무조건 select option 첫번째 지정
$(this).find("option:first-child").prop("selected",true);
} else if ($(this).attr('type') == 'radio') {
var radioName = $(this).attr("name");
var radioFirst = $("[name="+radioName+"]")[0];
$(radioFirst).prop("checked",true)
} else {
$(this).val('');
}
});
}
</script>
<title>교육문의</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" id="prcsAplctPrdQnaOrd" name="prcsAplctPrdQnaOrd" value="" />
</form>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<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" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<c:import url="/cmm/navi/adminContNav.do">
<c:param name="url" value="/kccadr/oprtn/prevent/cndtnEduFaqMngList.do"/>
<c:param name="name1" value=""/>
<c:param name="name2" value=""/>
<c:param name="name3" value=""/>
</c:import>
<div class="cont">
<div class="tb_tit01">
<p>Faq관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<%-- <div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div> --%>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="질문내용을 입력해 주세요" title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>" onkeyDown="press(event);">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 40$">
<col style="width: 40%">
<col style="width: 20%">
</colgroup>
<thead>
<tr>
<th>질문내용</th>
<th>답변</th>
<th>등록일시</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaCn}'/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.qnaAnswerCn}'/>
</td>
<td>
<c:out value='${list.frstRegistPnttm }'/>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -180,8 +180,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);"> <button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p> <p class="qst_text"><span>질문</span>Q</p>
<div> <div>
<p class="qst_cont">${FAQList.nttSj}</p> <%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="date">${FAQList.frstRegisterPnttm}</p> <p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div> </div>
</button> </button>
@ -189,7 +190,8 @@
<div class="answer_in"> <div class="answer_in">
<p class="qst_text"><span>답변</span>A</p> <p class="qst_text"><span>답변</span>A</p>
<div> <div>
<p class="awr_cont">${FAQList.nttCn }</p> <%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -180,8 +180,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);"> <button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p> <p class="qst_text"><span>질문</span>Q</p>
<div> <div>
<p class="qst_cont">${FAQList.nttSj}</p> <%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="date">${FAQList.frstRegisterPnttm}</p> <p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div> </div>
</button> </button>
@ -189,7 +190,8 @@
<div class="answer_in"> <div class="answer_in">
<p class="qst_text"><span>답변</span>A</p> <p class="qst_text"><span>답변</span>A</p>
<div> <div>
<p class="awr_cont">${FAQList.nttCn }</p> <%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -180,8 +180,9 @@
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);"> <button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p> <p class="qst_text"><span>질문</span>Q</p>
<div> <div>
<p class="qst_cont">${FAQList.nttSj}</p> <%-- <p class="qst_cont">${FAQList.nttSj}</p> --%>
<p class="date">${FAQList.frstRegisterPnttm}</p> <p class="qst_cont">${FAQList.qnaCn}</p>
<p class="date">${FAQList.frstRegistPnttm}</p>
</div> </div>
</button> </button>
@ -189,7 +190,8 @@
<div class="answer_in"> <div class="answer_in">
<p class="qst_text"><span>답변</span>A</p> <p class="qst_text"><span>답변</span>A</p>
<div> <div>
<p class="awr_cont">${FAQList.nttCn }</p> <%-- <p class="awr_cont">${FAQList.nttCn }</p> --%>
<p class="awr_cont" style="white-space: pre-line;">${FAQList.qnaAnswerCn }</p>
</div> </div>
</div> </div>
</div> </div>