This commit is contained in:
myname 2023-11-20 20:11:28 +09:00
commit 4bcb8e5ffe
33 changed files with 2136 additions and 1205 deletions

View File

@ -3,6 +3,8 @@ package kcc.com.cmm.service;
import java.util.List;
import java.util.Map;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
/**
* @Class Name : EgovFileMngService.java
* @Description : 파일정보의 관리를 위한 서비스 인터페이스
@ -127,4 +129,6 @@ public interface EgovFileMngService {
public void deleteFmsFileInf(FileVO fileVO) throws Exception;
public void updateFileName(FileVO fileVO) throws Exception;
public void deleteOffeduFile(FileVO fvo, VEEduAplctVO vEEduAplctVO) throws Exception;
}

View File

@ -12,6 +12,8 @@ import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO;
/**
* @Class Name : EgovFileMngServiceImpl.java
@ -196,4 +198,20 @@ public class EgovFileMngServiceImpl extends EgovAbstractServiceImpl implements E
public void updateFileName(FileVO fileVO) throws Exception {
fileMngDAO.updateFileName(fileVO);
}
@Override
public void deleteOffeduFile(FileVO fileVO, VEEduAplctVO vEEduAplctVO) throws Exception {
//결과 보고 첨부파일 ID 삭제 처리
fileMngDAO.updateOffeduFileNull(vEEduAplctVO);
//파일 삭제처리
FileVO returnFileVO = new FileVO();
returnFileVO = fileMngDAO.selectFileInf(fileVO);
if(returnFileVO !=null) {
File delFile = new File(returnFileVO.getFileStreCours()+returnFileVO.getStreFileNm());
delFile.delete();
}
fileMngDAO.deleteFileInf(fileVO); //DB삭제
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import kcc.com.cmm.service.FileVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
/**
* @Class Name : EgovFileMngDAO.java
@ -198,4 +199,8 @@ public class FileManageDAO extends EgovComAbstractDAO {
public void updateFileName(FileVO vo) throws Exception {
insert("FileManageDAO.updateFileName", vo);
}
public int updateOffeduFileNull(VEEduAplctVO vEEduAplctVO) throws Exception {
return update("FileManageDAO.updateOffeduFileNull", vEEduAplctVO);
}
}

View File

@ -12,10 +12,15 @@ 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.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.com.uss.ion.fms.service.FmsFileVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
/**
* 파일 조회, 삭제, 다운로드 처리를 위한 컨트롤러 클래스
@ -40,6 +45,9 @@ public class EgovFileMngController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
/**
* 첨부파일에 대한 목록을 조회한다.
*
@ -410,4 +418,61 @@ public class EgovFileMngController {
return "cmm/fms/selectForNmChgFile";
}
/**
* ve_edu_aplct 첨부파일 목록 - 타입별로 첨부파일 삭제 데이터 null 처리를 위한
*
* @param fileVO
* @param commandMap
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cmm/fms/selectOffeduFile.do")
public String selectEduAplctFile(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
String atchFileId = (String) commandMap.get("param_atchFileId");
String type = (String) commandMap.get("type");
String deleteFlag = (String) commandMap.get("deleteFlag");
String dateFlag = (String) commandMap.get("dateFlag");
String table = (String) commandMap.get("table");
String eduAplctOrd = (String) commandMap.get("eduAplctOrd");
fileVO.setAtchFileId(atchFileId);
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
model.addAttribute("atchFileId", atchFileId);
model.addAttribute("type", type);
model.addAttribute("deleteFlag", deleteFlag);
model.addAttribute("dateFlag", dateFlag);
model.addAttribute("table", table);
model.addAttribute("eduAplctOrd", eduAplctOrd);
return "cmm/fms/selectEduAplctFile";
}
/* 교육신청관리 첨부파일 삭제 */
@RequestMapping(value = "/cmm/fms/offedufileDeleteAjax.do")
public ModelAndView fmsfileDeleteAjax(
FmsFileVO fmsFileVO,
@ModelAttribute("fileVO") FileVO fileVO,
VEEduAplctVO vEEduAplctVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
try {
fileService.deleteOffeduFile(fileVO, vEEduAplctVO);
modelAndView.addObject("result", "success");
}catch (Exception e) {
modelAndView.addObject("result", "fail");
System.out.println("Exception Occured!!!");
return modelAndView;
}
return modelAndView;
}
}

View File

@ -223,6 +223,8 @@ public class InnorixFileServiceImpl extends EgovAbstractServiceImpl implements I
vEEduAplctVO.setAttendAtchFileId(atchFileId); //강사 참석 확인서 첨부파일
} else if("PHT".equals(fileType)) {
vEEduAplctVO.setPhtAtchFileId(atchFileId); //교육사진 첨부파일
} else if("RSLT".equals(fileType)) {
vEEduAplctVO.setRsltAtchFileId(atchFileId); //결과보고 첨부파일
}

View File

@ -195,6 +195,7 @@ public class EgovBBSAttributeManageServiceImpl extends EgovAbstractServiceImpl i
List<EgovMap> result = attrbMngDAO.selectBBSIdList(searchVO);
int cnt = attrbMngDAO.selectBBSIdListCnt(searchVO);
System.out.println("22222222222222222222");
Map<String, Object> map = new HashMap<String, Object>();
map.put("resultList", result);

View File

@ -640,6 +640,9 @@ public class EgovBBSAttributeManageController {
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
System.out.println("===========");
/*OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY*/
Map<String, Object> map = bbsAttrbService.selectBBSIdList(searchVO);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));

View File

@ -200,6 +200,8 @@ public class CommonWebController {
fileVO.setAtchFileId(vEEduAplctVO.getAttendAtchFileId());
} else if("PHT".equals(fileType)) {
fileVO.setAtchFileId(vEEduAplctVO.getPhtAtchFileId());
} else if("RSLT".equals(fileType)) {
fileVO.setAtchFileId(vEEduAplctVO.getRsltAtchFileId());
}
List<FileVO> result = fileService.selectFileInfs(fileVO);

View File

@ -1,7 +1,10 @@
package kcc.ve.aplct.fndtnEnhanceTrn.service;
import java.util.List;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
public interface FndtnEnhanceTrnService {
@ -9,5 +12,9 @@ public interface FndtnEnhanceTrnService {
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO);
List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -48,4 +48,15 @@ public class FndtnEnhanceTrnServiceImpl implements FndtnEnhanceTrnService {
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO);
}
@Override
public void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
vEEduAplctDAO.insertVeEduQna(vEPrcsDetailVO);
}
@Override
public List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
return vEEduAplctDAO.selectVeEduQna(vEPrcsDetailVO);
}
}

View File

@ -131,6 +131,10 @@ public class FndtnEnhanceTrnController {
@Resource(name="eduChasiGnrService")
private EgovIdGnrService eduChasiGnrService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
//교육신청온라인
@Resource(name = "vEEduAplctOnlnService")
private VEEduAplctOnlnService vEEduAplctOnlnService;
@ -219,6 +223,12 @@ public class FndtnEnhanceTrnController {
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
// Q&A 영역
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO);
model.addAttribute("qnaList", vEPrcsDetailQnaVOList);
//3.pageing step3
return "/web/ve/aplct/fndtnEnhanceTrn/main";
}
@ -501,6 +511,65 @@ public class FndtnEnhanceTrnController {
return modelAndView;
}
/**
* @methodName : fndthEduPrcsAplctPrdMngRegAjax
* @author : 이호영
* @date : 2023.11.16
* @description :
* @param vEPrcsDetailVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/qnaRegAjax.do")
public ModelAndView qnaRegAjax(
@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.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
String msg = "등록되었습니다";
try {
fndtnEnhanceTrnService.insertVeEduQna(vEPrcsDetailVO);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
msg = "등록에 실패하였습니다. 관리자에게 문의해주세요";
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", "success");
return modelAndView;
}
/**

View File

@ -99,6 +99,7 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String broadroomEdu; //방송실교육 여부
private String rndsOrd; //회차순번(해당 신청이 속하는 회차 고유 순번)
private String rsltAtchFileId; //결과보고첨부파일아이디
@ -324,6 +325,9 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String lastYear; //불성실여부 작년
private String type; //첨부파일 삭제 종류
private String table; //첨부파일 삭제 테이블
public String getPrcsAplctPrdOrd() {
return prcsAplctPrdOrd;
@ -1708,6 +1712,25 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setTrgtId(String trgtId) {
this.trgtId = trgtId;
}
public String getRsltAtchFileId() {
return rsltAtchFileId;
}
public void setRsltAtchFileId(String rsltAtchFileId) {
this.rsltAtchFileId = rsltAtchFileId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
}

View File

@ -105,6 +105,9 @@ public class VEEduChasiVO extends ComDefaultVO implements Serializable {
private String onewayDstnc;
private String acmdtAprvlCd;
private String rsltAtchFileId; //ve_edu_aplct 결과보고 첨부파일아이디
public String getQustnrRespondId() {
return qustnrRespondId;
}
@ -569,4 +572,11 @@ public class VEEduChasiVO extends ComDefaultVO implements Serializable {
public void setMemoCn(String memoCn) {
this.memoCn = memoCn;
}
public String getRsltAtchFileId() {
return rsltAtchFileId;
}
public void setRsltAtchFileId(String rsltAtchFileId) {
this.rsltAtchFileId = rsltAtchFileId;
}
}

View File

@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@Repository("vEEduAplctDAO")
public class VEEduAplctDAO extends EgovAbstractDAO {
@ -159,4 +160,14 @@ public class VEEduAplctDAO extends EgovAbstractDAO {
public void updateSbmtAtchFileId(VEEduAplctVO paramVO) throws Exception {
insert("VEEduAplctDAO.updateSbmtAtchFileId", paramVO);
}
public void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
insert("VEEduAplctDAO.insertVeEduQna", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEEduAplctDAO.selectVeEduQna", vEPrcsDetailVO);
}
}

View File

@ -143,6 +143,13 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String prcsAplctPrdEtcOrd;
private String prcsAplctPrdQnaOrd;
private String qnaRegist;
private String qnaCn;
private String qnaAnswerCn;
private String qnaAnswerer;
public String getSearchDiv() {
@ -686,6 +693,36 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setPrcsAplctPrdEtcOrd(String prcsAplctPrdEtcOrd) {
this.prcsAplctPrdEtcOrd = prcsAplctPrdEtcOrd;
}
public String getPrcsAplctPrdQnaOrd() {
return prcsAplctPrdQnaOrd;
}
public void setPrcsAplctPrdQnaOrd(String prcsAplctPrdQnaOrd) {
this.prcsAplctPrdQnaOrd = prcsAplctPrdQnaOrd;
}
public String getQnaRegist() {
return qnaRegist;
}
public void setQnaRegist(String qnaRegist) {
this.qnaRegist = qnaRegist;
}
public String getQnaCn() {
return qnaCn;
}
public void setQnaCn(String qnaCn) {
this.qnaCn = qnaCn;
}
public String getQnaAnswerCn() {
return qnaAnswerCn;
}
public void setQnaAnswerCn(String qnaAnswerCn) {
this.qnaAnswerCn = qnaAnswerCn;
}
public String getQnaAnswerer() {
return qnaAnswerer;
}
public void setQnaAnswerer(String qnaAnswerer) {
this.qnaAnswerer = qnaAnswerer;
}
}

View File

@ -208,6 +208,54 @@ public class FndthPrcsInfoMngController {
///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
}
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduQnaMngList.do")
public String fndthEduQnaMngList(
@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("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/fndthEnhanceTrn/fndthEduQnaMngList";
// return "oprtn/fndthEnhanceTrn/fndthEduPrcsMngList";
}
/**
* 기반강화연수과정 등록 화면
*/

View File

@ -3014,4 +3014,19 @@
<property name="fillChar" value="0" />
</bean>
<!-- Q&A -->
<bean name="prcsAplctPrdQnaOrdGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="strategy" ref="prcsAplctPrdQnaOrdStrategy" /><!-- strategy 값 수정 -->
<property name="blockSize" value="10"/>
<property name="table" value="IDS"/>
<property name="tableName" value="PRCS_APLCT_QNA_ORD"/><!-- tableName 값 수정 -->
</bean>
<!-- 과정신청기간 ID Generation Strategy Config -->
<bean name="prcsAplctPrdQnaOrdStrategy" class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl"><!-- bean name 값에 strategy 값 입력 -->
<property name="prefix" value="prcsAplctQna_" /><!-- prefix 값 수정 -->
<property name="cipers" value="7" /><!-- 일련번호(순번) 전체 길이(prefix길이 미포함) -->
<property name="fillChar" value="0" />
</bean>
</beans>

View File

@ -5,6 +5,7 @@
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="FileVO" type="kcc.com.cmm.service.FileVO"/>
<typeAlias alias="vEEduAplctVO" type="kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO"/>
<resultMap id="fileList" class="kcc.com.cmm.service.FileVO">
<result property="atchFileId" column="ATCH_FILE_ID" columnIndex="1"/>
@ -243,4 +244,13 @@
AND ATCH_FILE_ID = #atchFileId#
AND FILE_SN = #fileSn#
</update>
<update id="FileManageDAO.updateOffeduFileNull" parameterClass="VEEduAplctVO" >
UPDATE
$table$
SET
$type$ = null
WHERE 1=1
AND edu_aplct_ord = #eduAplctOrd#
</update>
</sqlMap>

View File

@ -606,20 +606,23 @@
</delete>
<select id="BBSAttributeManageDAO.selectBBSIdList" parameterClass="ComDefaultVO" resultClass="egovMap" >
SELECT BBS_ID
,BBS_NM , IF(B.MENU_NM='root' , '', B.MENU_NM) AS MENU_NM
FROM LETTNBBSMASTER A LEFT OUTER JOIN LETTNMENUINFO B ON A.MENU_NO = B.MENU_NO
SELECT A.BBS_ID
, A.BBS_NM
, CASE WHEN B.MENU_NM = 'root' THEN '' ELSE B.MENU_NM END AS MENU_NM
FROM LETTNBBSMASTER A
LEFT OUTER JOIN LETTNMENUINFO B
ON A.MENU_NO = B.MENU_NO
WHERE USE_AT = 'Y'
AND BBS_NM LIKE CONCAT('%', #searchKeyword#, '%')
AND BBS_NM LIKE '%'|| #searchKeyword# ||'%'
ORDER BY BBS_NM
LIMIT #recordCountPerPage# OFFSET #firstIndex#
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select>
<select id="BBSAttributeManageDAO.selectBBSIdListCnt" parameterClass="ComDefaultVO" resultClass="java.lang.Integer" >
SELECT COUNT(1)
FROM LETTNBBSMASTER A
WHERE USE_AT = 'Y'
AND BBS_NM LIKE CONCAT('%', #searchKeyword#, '%')
AND BBS_NM LIKE '%'|| #searchKeyword# ||'%'
<isNotEmpty property="siteId">
AND SITE_ID = #siteId#
</isNotEmpty>

View File

@ -5,6 +5,7 @@
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="VEEduAplctVO" type="kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO"/>
<typeAlias alias="VEAStngVO" type="kcc.ve.adv.tngr.stngInfo.service.VEAStngVO"/>
<typeAlias alias="VEPrcsDetailVO" type="kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO"/>
<!-- 공통 테이블 명 -->
@ -159,6 +160,7 @@
A.BROADROOM_EDU AS broadroomEdu
, A.RNDS_ORD AS rndsOrd
, A.APLCT_CN AS aplctCn
, A.RSLT_ATCH_FILE_ID AS rsltAtchFileId
</sql>
<!-- 강사 등록 C -->
@ -855,6 +857,9 @@
<isNotEmpty property="phtAtchFileId">
, PHT_ATCH_FILE_ID = #phtAtchFileId#
</isNotEmpty>
<isNotEmpty property="rsltAtchFileId">
, RSLT_ATCH_FILE_ID = #rsltAtchFileId#
</isNotEmpty>
<isNotEmpty property="isWait">
, IS_WAIT = #isWait#
</isNotEmpty>
@ -1317,4 +1322,44 @@
WHERE
EDU_DOC_REQ_ORD = #eduDocReqOrd#
</update>
<insert id="VEEduAplctDAO.insertVeEduQna" parameterClass="VEPrcsDetailVO">
INSERT INTO VEA_PRCS_APLCT_PRD_QNA
(
PRCS_APLCT_PRD_QNA_ORD
, LCTR_DIV_CD
, QNA_REGIST
, QNA_CN
, FRST_REGIST_PNTTM
, FRST_REGISTER_ID
)VALUES(
#prcsAplctPrdQnaOrd#
, #lctrDivCd#
, #qnaRegist#
, #qnaCn#
, SYSDATE
, #frstRegisterId#
)
</insert>
<select id="VEEduAplctDAO.selectVeEduQna" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
SELECT
PRCS_APLCT_PRD_QNA_ORD as prcsAplctPrdQnaOrd
, LCTR_DIV_CD as lctrDivCd
, QNA_REGIST as qnaRegist
, QNA_CN as qnaCn
, QNA_ANSWER_CN as qnaAnswerCn
, QNA_ANSWERER as qnaAnswerer
, FRST_REGIST_PNTTM as frstRegistPnttm
, FRST_REGISTER_ID as frstRegisterId
, LAST_UPDT_PNTTM as lastUpdtPnttm
, LAST_UPDUSR_ID as lastUpdusrId
FROM
VEA_PRCS_APLCT_PRD_QNA
WHERE
QNA_REGIST = #qnaRegist#
</select>
</sqlMap>

View File

@ -3640,6 +3640,7 @@
, G.sbmt_yn AS acmdtSbmtYn
, G.aprvl_cd AS acmdtAprvlCd
, H.oneway_dstnc AS onewayDstnc
, A.rslt_atch_file_id AS rsltAtchFileId
FROM
VE_EDU_APLCT A
, VE_EDU_CHASI B

View File

@ -158,6 +158,7 @@
<pattern>*/kccadr/oprtn/cpyrgExprnClsrm/cautionGuidePreView.do</pattern> <!-- 관리자 저작권체험교실 교육과정안내 미리보기 팝업 -->
<pattern>*/kccadr/oprtn/cpyrgExprnClsrm/popup/slctnTeacherPopup.do</pattern> <!-- 관리자 저작권체험교실 교육과정안내 미리보기 팝업 -->
<pattern>*/cop/bbs/EgovBBSIdListSearch.do</pattern> <!-- 관리자 저작권체험교실 교육과정안내 미리보기 팝업 -->
<!-- <pattern>*/tngrVisitEdu/popup/*Popup.do</pattern>
<pattern>*/adultVisitEdu/popup/*Popup.do</pattern> -->

View File

@ -0,0 +1,104 @@
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
/**
* @Class Name : selectScholSealInfs.jsp
* @Description : 파일 목록화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ---------- ------ ---------------------------
* @ 2009.03.26 이삼섭 최초 생성
* @ 2011.07.20 옥찬우 <Input> Tag id속성 추가( Line : 68 )
*
* @author 공통서비스 개발팀 이삼섭
* @since 2009.03.26
* @version 1.0
* @see
*
*/
%>
<!-- link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css"-->
<script type="text/javascript">
function fn_egov_downFile(atchFileId, fileSn){
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
}
/* 등록되어 있는 파일 삭제버튼 클릭시 */
function delEduAplctFile(itemId , fileSn){
if(!confirm("삭제하시겠습니까?")){
return false;
}
$.ajax({
type: "POST",
url: "<c:url value='/cmm/fms/offedufileDeleteAjax.do' />",
data:{ "atchFileId" : itemId , "fileSn" : fileSn, "eduAplctOrd" : "${eduAplctOrd}", "type" : '${type}', "table" : '${table}'},
dataType:'json',
cache: false,
async: false,
timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){
if(returnData.result == 'fail'){
alert("삭제처리가 실패하였습니다.");
}else if(returnData.result == 'auth_fail'){
alert("세션이 종료되었습니다.");
}else if(returnData.result =='success'){
$('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove();
alert("삭제되었습니다.");
window.location.reload()
}
}else{
alert("삭제처리에 실패하였습니다.");
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
</script>
<style type="text/css">
.cursor {
cursor: pointer;
vertical-align: middle;
}
</style>
<!-- <form name="fileForm" action="" method="post" > -->
<input type="hidden" name="atchFileId" value="${atchFileId}">
<input type="hidden" name="fileSn" >
<input type="hidden" name="fileListCnt" id="fileListCnt" value="${fileListCnt}">
<input type="hidden" name="chgNm" id="chgNm" value="${chgNm}">
<input type="hidden" name="type" id="type" value="${type}">
<input type="hidden" name="table" id="table" value="${table}">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${eduAplctOrd}">
<c:set var="fileCount" value="${fn:length(fileList) }" />
<!-- </form> -->
<!--<title>파일목록</title> -->
<c:forEach var="fileVO" items="${fileList}" varStatus="status">
<a href="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')" class="file_download_a" title="다운로드" style="display:inline-block;">
<c:out value="${fileVO.orignlFileNm}"/>
<c:if test="${dateFlag eq 'Y' }">
<fmt:parseDate value="${fileVO.creatDt}" var="creatDt" pattern="yyyy-MM-dd HH:mm:ss"/>
(<fmt:formatDate value="${creatDt}" pattern="yyyy년MM월dd일"/>)
</c:if>
</a>
<c:if test="${deleteFlag eq 'Y' }">
<img src="<c:url value='/images/egovframework/com/cmm/btn/btn_del.png' />" class="cursor" onClick="delEduAplctFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}" />'); return false;" alt="첨부파일">
</c:if>
<br/>
</c:forEach>
<c:if test="${fn:length(fileList) == 0}">
</c:if>

View File

@ -314,11 +314,14 @@
</td>
</tr>
<tr>
<th scope="row"><p>교육사진파일</p></th>
<th scope="row"><p>결과보고</p></th>
<td>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.phtAtchFileId}" />
<c:param name="pdf_view" value="Y" />
<c:import url="/cmm/fms/selectOffeduFile.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.rsltAtchFileId}" />
<c:param name="type" value="rslt_atch_file_id" />
<c:param name="table" value="ve_edu_aplct" />
<c:param name="deleteFlag" value="Y" />
<c:param name="eduAplctOrd" value="${vEEduAplctVO.eduAplctOrd}" />
</c:import>
</td>
</tr>

View File

@ -36,7 +36,6 @@
}
</style>
<script type="text/javascript">
function fncGoList(){
linkPage(1);
}

View File

@ -0,0 +1,287 @@
<!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 : fndthEduPrcsMngList.jsp
* @Description : 기반강화연수 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @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 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/fndthEnhanceTrn/fndthEduPrcsMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsOrd){
var listForm = document.listForm ;
listForm.prcsOrd.value = prcsOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngDetail.do'/>";
listForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngReg.do'/>";
listForm.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 fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.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 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>교육과정관리</title>
</head>
<body>
<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">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>실무자역량강화(기반강화연수관리)</p>
</li>
<li><span class="cur_nav">과정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 과정 관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA001" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue=""
defaultText="전체"
/>
<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='${vEEduAplctVO.searchFullName}'/>">
<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>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 20%">
<col style="width: auto">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>교육부문</th>
<th>과정명</th>
<th>설명</th>
<th>등록일시</th>
<th>사용여부 </th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsNm}'/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsCn}'/>
</td>
<td>
<c:out value='${list.frstRegistPnttm}'/>
</td>
<td>
<c:if test="${list.useYn eq 'Y'}">
사용
</c:if>
<c:if test="${list.useYn ne 'Y'}">
미사용
</c:if>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="5"><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

@ -1031,18 +1031,18 @@
</tr>
<tr>
<th scope="row"><p>교육 사진</p></th>
<th scope="row"><p>결과보고</p></th>
<td colspan="3">
<c:choose>
<c:when test="${info.phtAtchFileId ne null}">
<c:when test="${info.rsltAtchFileId ne null}">
<c:import url="/cmm/fms/selectSimpleDownInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.phtAtchFileId}" />
<c:param name="param_atchFileId" value="${info.rsltAtchFileId}" />
</c:import>
<button type="button" class="btnType01 updownRoad" data-tooltip="sub35_pop01" id="PHT" onclick="filePopupLayer('PHT')" title="팝업 열림">교육 사진 변경</button>
<!-- <button type="button" class="btnType01 updownRoad" data-tooltip="sub35_pop01" id="PHT" onclick="filePopupLayer('PHT')" title="팝업 열림">결과보고 변경</button> -->
</c:when>
<c:otherwise>
<button type="button" class="btnType01 updownRoad" data-tooltip="sub35_pop01" id="PHT" onclick="filePopupLayer('PHT')" title="팝업 열림">교육 사진 업로드</button>
<button type="button" class="btnType01 updownRoad" data-tooltip="sub35_pop01" id="PHT" onclick="filePopupLayer('RSLT')" title="팝업 열림">결과보고 업로드</button>
</c:otherwise>
</c:choose>
</td>

View File

@ -165,7 +165,7 @@
<td>
<a href="javascript:goDetail('<c:out value="${list.eduAplctOrd}"/>', '<c:out value="${list.eduChasiOrd}"/>');">
<c:choose>
<c:when test="${not empty list.qustnrRespondId}">
<c:when test="${not empty list.rsltAtchFileId}">
제출
</c:when>
<c:otherwise>

View File

@ -39,6 +39,62 @@
$(this).val('');
});
}
//FAQ 답변 open&close
function faqOpen(item) {
if($(item).is(".slide_open") == true) {
$(item).removeClass("slide_open");
$(item).next(".answer").slideUp(300);
$(item).attr("title","답변 열기");
} else {
$(item).addClass("slide_open");
$(item).next(".answer").slideDown(300);
$(item).attr("title","답변 닫기");
$(item).closest("li").siblings("li").children(".question").removeClass("slide_open");
$(item).closest("li").siblings("li").children(".answer").slideUp(300);
$(item).closest("li").siblings("li").children(".question").attr("title","답변 열기");
}
}
function fn_qnaReg(){
var data = new FormData(document.getElementById("qnaForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/qnaRegAjax.do";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
alert(returnData.msg);
}else{
alert(returnData.msg);
}
// fn_target_confirm_clean();
location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
$('#target_confirm_popup-close').click();
}
</script>
<!-- content -->
@ -71,7 +127,7 @@
</div>
</div>
<div class="tb_list02">
<div class="tb_list02" style="padding: 0 0 40px 0;">
<table>
<caption>최근 교육 목록표</caption>
<colgroup>
@ -137,5 +193,100 @@
</table>
</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="btnType04" data-info="prcsAplctPrd_0000220" data-tooltip="target_confirm_popup">교육문의</button>
</div>
</div>
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best">Q&A</div>
</div>
<div class="btn_wrap1">
<%-- <button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='<c:url value="/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do" />'">더보기</button> --%>
</div>
</div>
<div class="tb_list02">
<div class="faq_Wrap">
<ul class="faq">
<c:forEach var="list" items="${qnaList}" varStatus="status">
<li>
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<p class="qst_cont">${list.qnaCn }</p>
</button>
<div class="answer">
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<p class="awr_cont">
<c:choose>
<c:when test="${not empty list.qnaAnswerCn }">
${list.qnaAnswerCn }
</c:when>
<c:otherwise>
내용이 없습니다.
</c:otherwise>
</c:choose>
</p>
</div>
</div>
</li>
</c:forEach>
<c:if test="${empty list}">
<li><spring:message code="common.nodata.msg" /></li>
</c:if>
</ul>
</div>
</div>
</form:form>
</div>
<form id="qnaForm" name="qnaForm" method="post">
<!-- 교육대상자 확인 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="target_confirm_popup" data-focus="target_confirm_popup" data-focus-prev="target_confirm_popup_close">
<div class="popup_tit">
<p>교육문의하기</p>
<button class="btn_popup_close tooltip-close" data-focus="target_confirm_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01" style="overflow:visible;">
<table>
<colgroup>
<col style="width:27%;">
<col style="width:auto;">
</colgroup>
<tr>
<th>문의내용</th>
<td>
<textarea type="text" id="qnaCn" name="qnaCn" style="height: 220px;width: 100%;"></textarea>
</td>
</tr>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_qnaReg()">문의</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="target_confirm_popup-close" data-focus-next="target_confirm_popup">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->
</form>

View File

@ -454,7 +454,7 @@ $(document).ready(function(){
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button>
<!-- <button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button> -->
</div>
</div>

View File

@ -233,6 +233,8 @@
setMsg = "강사 참석 확인서";
} else if (type == 'PHT') {
setMsg = "교육사진";
} else if (type == 'RSLT') {
setMsg = "결과보고";
}
var url = "<c:url value='/web/common/insertInnorixFileAjax.do' />";
@ -278,6 +280,7 @@
<c:if test="${fileType eq 'PLAN'}">계획서</c:if>
<c:if test="${fileType eq 'ATTEND'}">강사 참석 확인서</c:if>
<c:if test="${fileType eq 'PHT'}">교육 사진</c:if>
<c:if test="${fileType eq 'RSLT'}">결과보고</c:if>
업로드
</p>
<button class="btn_popup_close tooltip-close" data-focus="list_popup_close" title="팝업 닫기"><i></i></button>

View File

@ -305,13 +305,6 @@ $( document ).ready(function() {
</c:import>
</td>
</tr>
<tr>
<th scope="row">
<p>교육 사진</p>
</th>
<td colspan="3"><c:out value="${cryptoUtil.decrypt(info.chrgNm)}"/></td>
</tr>
</tbody>
</table>
</div>

View File

@ -297,7 +297,7 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
.best_list .best_con img {border-radius:20px 0 0 0; width: 100%; height: 215px; object-fit: cover;}
.best_list .best_con ul {padding: 14px;}
.best_list .best_con .con_title {display: inline-block; font-size:22px; font-weight:500; padding:5px 0; width:100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.best_list .best_con .con_date {background: url(../images/content/calendar1_icon.jpg) no-repeat 5px; font-size: 18px; color:#444; padding:5px 0 10px 25px; font-weight: 300; letter-spacing:-0.5px; }
.best_list .best_con .con_date {background: url(../images/content/calendar1_icon.jpg) no-repeat 5px 5px; font-size: 18px; color:#444; padding:5px 0 10px 25px; font-weight: 300; letter-spacing:-0.5px; overflow-wrap: break-word;}
.best_list .best_con .con_btn button {position: relative; width:100%; background-color: #666666; color:#fff; text-align: center; border-radius:3px; padding:3px 0 5px 0; font-size:18px; z-index: 1;}
.best_list .best_con:hover .con_btn button {width:100%; background-color: #ed5908; color:#fff; text-align: center; border-radius:3px; padding:3px 0 5px 0; font-size:18px;}