This commit is contained in:
myname 2023-11-07 14:33:49 +09:00
commit 0d1f1558b5
42 changed files with 11923 additions and 9922 deletions

View File

@ -228,4 +228,21 @@ public final class DateUtil {
LocalDate date = LocalDate.parse(p_date, formatter);
return date;
}
// 2023 => 23
public static String getStringToLocalDateYear() {
// 현재 날짜를 얻기
LocalDate currentDate = LocalDate.now();
// 올해의 년도를 얻기
int currentYear = currentDate.getYear();
// 년도를 String으로 변환
String yearString = Integer.toString(currentYear);
// 마지막 자리 추출
String lastTwoDigits = yearString.substring(yearString.length() - 2);
// 출력
return lastTwoDigits;
}
}

View File

@ -600,6 +600,7 @@ public class EgovLoginController {
// 1. 로그인 처리
LoginVO resultVO = loginService.actionLogin(loginVO);
System.out.println("UserWork :: "+resultVO.getUserWork());
if (loginService.getUserAuth(resultVO) != null) {
resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority());
@ -665,7 +666,7 @@ public class EgovLoginController {
// 2. spring security 연동
request.getSession().setAttribute("LoginVO", resultVO);
System.out.println("===============!==============");
UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter();
ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
@ -1697,6 +1698,8 @@ public class EgovLoginController {
return "redirect:/web/main/mainPage.do";
} else if ("ROLE_VISIT".equals(user.getAuthority())) {
return "redirect:/cmm/main/mainPage.do";
} else if ("ROLE_ADR_JRSDC".equals(user.getAuthority())) {
return "redirect:/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do";
} else if ("ROLE_USER_MEMBER".equals(user.getAuthority())) {
System.out.println("비정상적인 사용자 redirect 임");
return "redirect:/web/main/mainPage.do";

View File

@ -527,6 +527,7 @@ public class EgovUserManageController {
}
}
//관리자등록일 경우
System.out.println("userManageVO.getGnrlUser() :: "+ userManageVO.getGnrlUser());
if(userManageVO.getGnrlUser().equals("N")) {
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do");
return redirectUrlMaker.getRedirectUrl();

View File

@ -15,6 +15,8 @@ public interface CndtnTrgtMngService {
void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO);
int findCntreqNmber(String reqNmbrTemp);

View File

@ -35,9 +35,11 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
private String cmptntAthrt; // 관할청
private String sex; // 성별
private String reqNmbr; // 의뢰번호
private String reqNmbrTemp; // 의뢰번호
private String prsctrNm; // 검사성명
private String reqStateCd; // 의뢰상태코드
private String prcsAplctPrdOrdCmplt;// 중복확인을 위한 신청강의 PK
private String atchFileId;// 첨부파일 ID
@ -165,6 +167,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
public void setReqNmbr(String reqNmbr) {
this.reqNmbr = reqNmbr;
}
public String getReqNmbrTemp() {
return reqNmbrTemp;
}
public void setReqNmbrTemp(String reqNmbrTemp) {
this.reqNmbrTemp = reqNmbrTemp;
}
public String getPrsctrNm() {
return prsctrNm;
}
@ -183,6 +191,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
public void setPrcsAplctPrdOrdCmplt(String prcsAplctPrdOrdCmplt) {
this.prcsAplctPrdOrdCmplt = prcsAplctPrdOrdCmplt;
}
public String getAtchFileId() {
return atchFileId;
}
public void setAtchFileId(String atchFileId) {
this.atchFileId = atchFileId;
}

View File

@ -121,5 +121,9 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd", cndtnTrgtInfoMngVO);
}
public int findCntreqNmber(String reqNmbrTemp) {
return (int) select("cndtnTrgtInfoMngDAO.findCntreqNmber", reqNmbrTemp);
}
}

View File

@ -53,6 +53,11 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
cndtnTrgtInfoMngDAO.updateUserId(cndtnTrgtMngVO);
}
@Override
public int findCntreqNmber(String reqNmbrTemp) {
return cndtnTrgtInfoMngDAO.findCntreqNmber(reqNmbrTemp);
}
/*
//C
public void insert(VEPrcsDetailVO vEPrcsDetailVO) throws Exception {

View File

@ -1,10 +1,14 @@
package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -13,12 +17,17 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.util.DateUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
@ -85,6 +94,18 @@ public class CndtnTrgtMngController {
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//파일 체크 util
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
//파일정보의 관리
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
/*
// 교육신청 서비스단
@ -133,16 +154,21 @@ public class CndtnTrgtMngController {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
// LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority());
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
String userWork = this.getUserWork(request);
cndtnTrgtInfoMngVO.setSearchCondition(userWork);
//1.pageing step1
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
@ -186,6 +212,90 @@ public class CndtnTrgtMngController {
return "oprtn/cndtnSspnIdtmt/trgtList";
}
/**
* @methodName : getUserWork
* @author : 이호영
* @date : 2023.11.07
* @description : 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기
* @param request
* @return
*/
private String getUserWork(HttpServletRequest request) {
String userWork = "";
HttpSession session = request.getSession();
LoginVO loginVO = (LoginVO) session.getAttribute("LoginVO");
String authority = loginVO.getAuthority();
// 관할청 담당자일때
if("ROLE_ADR_JRSDC".equals(authority)) {
userWork = loginVO.getUserWork();
}
// TODO Auto-generated method stub
return userWork;
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngList.do")
public String trgtMngList(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority());
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
//검색 조회
if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
String selectCondition = "";
String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
}
// List<CndtnTrgtInfoMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = null;
try {
cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//3.pageing step3
paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", cndtnTrgtInfoMngVOList);
return "oprtn/cndtnSspnIdtmt/trgtMngList";
}
/**
* @methodName : trgtCmpltList
* @author : 이호영
@ -262,6 +372,7 @@ public class CndtnTrgtMngController {
public String cndtnEduPrcsMngReg(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
@ -272,6 +383,8 @@ public class CndtnTrgtMngController {
//로그인 처리====================================
String userWork = this.getUserWork(request);
model.addAttribute("userWork", userWork);
return "oprtn/cndtnSspnIdtmt/trgtReg";
}
@ -283,8 +396,8 @@ public class CndtnTrgtMngController {
public ModelAndView cndtnEduPrcsMngRegAjax(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
, final MultipartHttpServletRequest multiRequest
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
@ -305,12 +418,35 @@ public class CndtnTrgtMngController {
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//step2.파일 처리====================================
//파일 정상 처리 여부와 첨부 파일 정보
//String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
//파일 제한 수량 가져오기, 없으면 기본값 사용
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
, "APLCT_" //file_name_prefix
, s_file_exts
, i_limit_size
, i_file_limit
); //EXT, MB size and ea
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
// 사건번호
// 형식 : - 예시로 A-서울중앙-100-23-1 경우
// A (성인/미성년 구분), 서울중앙, 100, 23, 1
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId());
cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
// vEPrcsDetailVO.setPrcsOrd(prcsOrd);
// vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
// vEPrcsDetailVO.setUseYn("Y");
// vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
@ -322,6 +458,48 @@ public class CndtnTrgtMngController {
}
// 사건번호
// 형식 : - 예시로 A-서울중앙-100-23-1 경우
// A (성인/미성년 구분), 서울중앙, 100, 23, 1
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
//성인 미성년 구분
String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getdBirth());
String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+LocalDate.now().getYear()+"-";
int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
return adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear()+"-"+(cnt+1);
}
/**
* @methodName : getIsAdultInKorea
* @author : 이호영
* @date : 2023.11.07
* @description : 성인이면 A, 미성년이면 Y
* @param birthDateString
* @return
*/
public static String getIsAdultInKorea(String birthDateString) {
String returnData = "Y";
// 생년월일 포맷 정의 (예시: "yyyy-MM-dd")
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
// 문자열로부터 LocalDate 객체 생성
LocalDate birthDate = LocalDate.parse(birthDateString, formatter);
// 현재 날짜 얻기
LocalDate now = LocalDate.now();
// 생년월일과 현재 날짜 사이의 기간 계산
Period period = Period.between(birthDate, now);
if(period.getYears() >= 19) {
returnData="A";
}
// 나이가 19세 이상인지 확인
return returnData;
}
/**
* 조건부기소유예과정 등록
*/
@ -331,6 +509,7 @@ public class CndtnTrgtMngController {
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
, final MultipartHttpServletRequest multiRequest
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
@ -351,6 +530,56 @@ public class CndtnTrgtMngController {
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//step2.첨부파일 체크 저장 하기
String s_scholSealAtchFileId = "";
s_scholSealAtchFileId = cndtnTrgtInfoMngVO.getAtchFileId();
//DB에서 실제 첨부파일 존재 여부 확인
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(s_scholSealAtchFileId);
List<FileVO> result = fileService.selectFileInfs(fileVO);
if (result.size()<=0) {
s_scholSealAtchFileId = "";
}
//step3.파일 처리====================================
//파일 정상 처리 여부와 첨부 파일 정보
//String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
//파일 제한 수량 가져오기, 없으면 기본값 사용
int i_file_limit = checkFileUtil.getLimitCount(request); // file count
int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
String s_file_exts = checkFileUtil.getS_exts(); // file exts
//기존 파일 존재 여부에 따라서 insert or update 처리
if ("".equals(s_scholSealAtchFileId)) {
//atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert(
multiRequest, modelAndView
, "APLCT_"
, s_file_exts
, i_limit_size
, i_file_limit
); //EXT, MB size and ea
cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId);
}else {
//atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea
s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate(
multiRequest, modelAndView
, "APLCT_"
, s_file_exts
, i_limit_size
, i_file_limit
, s_scholSealAtchFileId
); //EXT, MB size and ea
}
if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView;
cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
cndtnTrgtInfoMngService.update(cndtnTrgtInfoMngVO);
@ -363,7 +592,7 @@ public class CndtnTrgtMngController {
}
/**
* 조건부기소유예과정 상세화면
* 대상자목록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtDetail.do")
public String trgtDetail(
@ -383,10 +612,49 @@ public class CndtnTrgtMngController {
//과정 조회
CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
model.addAttribute("info", cndtnTrgtInfoVO);
//세부과정 목록 조회
//파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId());
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
return "oprtn/cndtnSspnIdtmt/trgtDetail";
}
/**
* 대상자목록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngDetail.do")
public String trgtMngDetail(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//과정 조회
CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
model.addAttribute("info", cndtnTrgtInfoVO);
//파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId());
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
return "oprtn/cndtnSspnIdtmt/trgtMngDetail";
}
/**
* 조건부기소유예과정 수료자 상세화면
*/
@ -449,10 +717,49 @@ public class CndtnTrgtMngController {
CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
model.addAttribute("info", cndtnTrgtInfoVO);
//파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId());
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
return "oprtn/cndtnSspnIdtmt/trgtMdfy";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngMdfy.do")
public String trgtMngMdfy(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//과정 조회
CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO);
model.addAttribute("info", cndtnTrgtInfoVO);
//파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId());
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", result);
model.addAttribute("fileListCnt", result.size());
return "oprtn/cndtnSspnIdtmt/trgtMngMdfy";
}

View File

@ -67,7 +67,7 @@
, #authorNm#
, #authorDc#
, (SELECT CAST(MAX(sort_num)+1 AS VARCHAR(2)) FROM LETTNAUTHORINFO)
, DATE_FORMAT(NOW(), '%Y-%m-%d'))
, TO_CHAR(SYSDATE, 'YYYY-MM-DD'))
]]>
</insert>

View File

@ -40,7 +40,6 @@
, mber_sttus AS emplyrSttusCode
, mbtlnum AS membCelnum
, birth_day AS membBirth
FROM lettngnrlmber a
WHERE mber_id = #id#
AND PASSWORD = #password#

View File

@ -20,11 +20,13 @@
<result property="emplyrSttusCode" column="emplyrSttusCode" columnIndex="10"/>
<result property="membCelnum" column="membCelnum" columnIndex="11"/>
<result property="membBirth" column="membBirth" columnIndex="12"/>
<result property="userWork" column="userWork" columnIndex="13"/>
</resultMap>
<!-- SSO용 ESNTL_ID를 이용한 로그인처리 (210818 이준호) GNR -> 일반회원, USR -> 업무담당자 -->
<select id="loginDAO.actionLogin" resultMap="login">
/*loginDAO.actionLogin*/
<!-- 일반회원 -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
@ -62,6 +64,7 @@
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
, user_work AS userWork
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
AND PASSWORD = #password#
@ -74,6 +77,7 @@
<!-- 개발자 아이디 선택용 -->
<select id="loginDAO.actionLoginDev" resultMap="login">
/*loginDAO.actionLoginDev*/
<!-- 일반회원 loginDAO.actionLoginDev -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
@ -110,6 +114,7 @@
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
, user_work AS userWork
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
<isEmpty property="statusAll">
@ -121,6 +126,7 @@
<!-- e배움터 연동 후 mber_seq가 아닌 mber_id로 로그인 -->
<select id="loginDAO.actionLoginMberId" resultMap="login">
/*loginDAO.actionLoginMberId*/
<!-- 일반회원 loginDAO.actionLoginDev -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
@ -157,6 +163,7 @@
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
, user_work AS userWork
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
<isEmpty property="statusAll">

View File

@ -35,6 +35,7 @@
, req_nmbr
, prsctr_nm
, req_state_cd
, atch_file_id
</sql>
<!-- 조회용 공통 컬럼 명 -->
@ -62,6 +63,7 @@
, a.req_nmbr AS reqNmbr
, a.prsctr_nm AS prsctrNm
, a.req_state_cd AS reqStateCd
, a.atch_file_id AS atchFileId
</sql>
@ -93,6 +95,7 @@
, #reqNmbr#
, #prsctrNm#
, #reqStateCd#
, #atchFileId#
)
</insert>
@ -132,10 +135,20 @@
, req_nmbr = #reqNmbr#
, prsctr_nm = #prsctrNm#
, req_state_cd = #reqStateCd#
, atch_file_id = #atchFileId#
WHERE
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update>
<select id="cndtnTrgtInfoMngDAO.findCntreqNmber" resultClass="int" parameterClass="String">
SELECT
count(*)
FROM
vea_sspn_idmt_trgt
WHERE
req_nmbr LIKE #reqNmbrTemp# ;
</select>
<!-- 대상자 조회 후 대상자에 로그인 ID update -->
<update id="cndtnTrgtInfoMngDAO.updateUserId" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.updateSspnIdtmtTrgtOrd */
@ -164,6 +177,11 @@
AND a.EDU_STATE_CD = #eduStateCd#
</isNotEmpty>
/* 관할청 담당자를 위한 조건 */
<isNotEmpty property="searchCondition">
AND a.CMPTNT_ATHRT = #searchCondition#
</isNotEmpty>
/* 수료자 중복 리스트를 위한 조건문 */
<isNotEmpty property="trgtNm">
AND a.TRGT_NM = #trgtNm#

View File

@ -950,7 +950,7 @@
,LAST_UPDUSR_ID = #lastUpdusrId#
<isNotEmpty property="sbmtYn">
, SBMT_YN = #sbmtYn#
, SBMT_PNTTM = IF(#sbmtYn# = 'Y', SYSDATE, NULL)
, SBMT_PNTTM = CASE WHEN #sbmtYn# = 'Y' THEN SYSDATE ELSE NULL END
</isNotEmpty>
<isNotEmpty property="aprvlCd">
, APRVL_CD = #aprvlCd#

View File

@ -107,7 +107,7 @@
<tr>
<th scope="row">관할청</th>
<td>
<c:out value="${info.cmptntAthrt }" />
<ve:code codeId="VEA008" code="${info.cmptntAthrt }"/>
</td>
</tr>
<tr>
@ -170,6 +170,17 @@
</div>
</td>
</tr>
<tr>
<th scope="row">
<p>첨부파일</p>
</th>
<td>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.atchFileId}" />
<c:param name="pdf_view" value="Y" />
</c:import>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -303,7 +303,7 @@
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
<ve:code codeId="VEA008" code="${list.cmptntAthrt }"/>
</td>
<td>
<c:out value="${list.dBirth }" />
@ -334,7 +334,7 @@
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>

View File

@ -29,7 +29,16 @@
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//세부과정 추가 버튼 클릭 시 세부과정 추가
$(document).ready(function() {
//파일첨부관련 설정들===============================================
$(".btn_type01").on('click', function(){
$("#file_temp").click();
});
//파일첨부관련 설정들===============================================
});
function addPro() {
var addQuest = $(".addPro_wrap");
var questLen = addQuest.children("div").length;
@ -105,28 +114,36 @@
}
var data = new FormData(document.getElementById("createForm"));
if(confirm("수정하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtMdfyAjax.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("수정되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
if(confirm("수정하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtMdfyAjax.do'/>";
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
url: url,
data: data,
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);
}
});
}
}
@ -147,7 +164,7 @@
}
// 관할청 검사
if($("input[name='cmptntAthrt']").val().trim() == ""){
if($("input[name='cmptntAthrt']").val()){
alert("관할청을 입력해주세요.");
$("input[name='cmptntAthrt']").focus();
return true;
@ -181,11 +198,11 @@
}
// 의뢰상태 검사
if($("#reqStateCd").val().trim() == ""){
/* if($("#reqStateCd").val().trim() == ""){
alert("의뢰상태를 입력해주세요.");
$("input[name='reqStateCd']").focus();
return true;
}
} */
// 교육상태 검사
/* if($("input[name='eduStateCd']").val().trim() == ""){
@ -219,6 +236,39 @@
listForm.submit();
}
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
function handleFileUpload(files,obj) //업로드 function
{
var limitsize = 20*1024*1024; //파일 제한 체크(1개, 20MB)
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 20MB이하만 업로드 가능합니다.");
return ;
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
</script>
</head>
@ -227,6 +277,7 @@
</form:form>
<form:form id="createForm" name="createForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value='${info.sspnIdtmtTrgtOrd}' />"/>
<input type="hidden" name="atchFileId" value="<c:out value='${info.atchFileId}' />" />
<!-- cont -->
<div class="cont_wrap">
<div class="box">
@ -281,7 +332,10 @@
<tr>
<th scope="row">관할청</th>
<td>
<input type="text" name="cmptntAthrt" value="<c:out value="${info.cmptntAthrt }" />" />
<ve:select codeId="VEA008" name="cmptntAthrt" id="cmptntAthrt" css="class='sel_type1'"
selectedText="${info.cmptntAthrt }" defaultValue=""
defaultText='선택'
/>
</td>
</tr>
<tr>
@ -358,6 +412,87 @@
</div>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>첨부파일</p>
</th>
<td class="upload_area" colspan="3">
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton" class="btn_type01">파일 첨부하기</button>
<p style="padding-left:30px;">첨부파일 가능 용량은 20MB입니다. </p><p style="color:red;font-weight:500">업로드 순서는 1.신청서 2.안내문 입니다.</p>
<div class="file_wrap file_upload_box no_img_box">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist" class="tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -0,0 +1,367 @@
<!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 : cndtnEduPrcsMngList.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">
$(document).ready(function(){
searchInit();
// 검색 select box
$('#searchStatus').change(function(){
$('#searchKeyword').val('');
$('#searchSmbtStartDt').val('');
$('#searchSmbtEndDt').val('');
if($(this).val() == 'frstRegistPnttm'){
$('#searchKeyword').hide();
$('#calendar').show();
}
if($(this).val() == 'trgt_nm'){
$('#searchKeyword').attr('placeholder', '이름을 입력해 주세요.');
$('#calendar').hide();
$('#searchKeyword').show();
}
if($(this).val() == 'd_birth'){
$('#searchKeyword').attr('placeholder', '생년월일을 입력해 주세요.');
$('#calendar').hide();
$('#searchKeyword').show();
}
});
});
function searchInit(){
var selecedTxt = $('#searchStatus option:checked').val();
console.log('selecedTxt : ', selecedTxt);
if(selecedTxt == 'trgt_nm' || selecedTxt == 'd_birth'){
$('#calendar').hide();
}else{
$('#searchKeyword').hide();
}
}
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/trgtList.do'/>";
listForm.submit();
}
function fncGoDetail(sspnIdtmtTrgtOrd){
var detailForm = document.detailForm ;
detailForm.sspnIdtmtTrgtOrd.value = sspnIdtmtTrgtOrd;
detailForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtDetail.do'/>";
detailForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtReg.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 id="detailForm" name="detailForm" method="post" >
<input type="hidden" id="sspnIdtmtTrgtOrd" name="sspnIdtmtTrgtOrd" 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">
<!-- 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">
<select name="searchStatus" id="searchStatus" class="sel_type1">
<option value="trgt_nm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'trgt_nm' }">selected="selected"</c:if>>이름</option>
<option value="d_birth" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'd_birth' }">selected="selected"</c:if>>생년월일</option>
<option value="frstRegistPnttm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'frstRegistPnttm' }">selected="selected"</c:if>>기간별</option>
</select>
<div id="calendar">
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="시작일" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${cndtnTrgtInfoMngVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="종료일" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${cndtnTrgtInfoMngVO.searchSmbtEndDt}">
</div>
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="이름을 입력해주세요." title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.searchKeyword}'/>">
<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="${cndtnTrgtInfoMngVO.pageUnit == '10' or cndtnTrgtInfoMngVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${cndtnTrgtInfoMngVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${cndtnTrgtInfoMngVO.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: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
</colgroup>
<thead>
<tr>
<th>의뢰일</th>
<th>사건번호</th>
<th>관할청</th>
<th>생년월일</th>
<th>성명</th>
<th>성별</th>
<th>의뢰번호</th>
<th>의뢰상태</th>
<th>교육상태</th>
<th>주소</th>
<th>검사명</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount" onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<%-- <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value='${list.prcsNm}'/> --%>
<!-- </td> -->
<td>
<c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td>
<td>
<ve:code codeId="VEA008" code="${list.cmptntAthrt }"/>
</td>
<td>
<c:out value="${list.dBirth }" />
</td>
<td>
<c:out value="${list.trgtNm }" />
</td>
<td>
<ve:code codeId="COM014" code="${list.sex }"/>
</td>
<td>
<c:out value="${list.reqNmbr }" />
</td>
<td>
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td>
<td>
<ve:code codeId="VEA002" code="${list.eduStateCd }"/>
</td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
</td>
<td>
<c:out value="${list.prsctrNm }" />
</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,518 @@
<!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 : cndtnEduPrcsMngMdfy.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">
$(document).ready(function() {
//파일첨부관련 설정들===============================================
$(".btn_type01").on('click', function(){
$("#file_temp").click();
});
//파일첨부관련 설정들===============================================
});
function addPro() {
var addQuest = $(".addPro_wrap");
var questLen = addQuest.children("div").length;
questLen = Number(questLen+1);
var trHtml="";
trHtml += '<div class="tbody_one">';
trHtml += '<span><span class="span_num3">'+ questLen +'</span>.</span>';
trHtml += '<div>';
trHtml += '<input type="text" name="detailPrcsNm" id="detailPrcsNm"> ';
trHtml += '<button type="button" class="table_del3" onclick="delPro(this)"><img src="${pageContext.request.contextPath}/visitEdu/adm/publish/image/content/btn_del.png"></button>';
trHtml += '</div>';
trHtml += '</div>';
addQuest.append(trHtml);
}
//삭제 버튼 클릭 시 현재 div 삭제 후 지문 숫자 재선언
function delPro(item) {
var bodyThis = $(item).closest('.tbody_one');
var tb = $(item).closest('.addPro_wrap').find('.tbody_one');
var len = $(item).closest('.addPro_wrap').children('.tbody_one').length;
var idx = bodyThis.index();
if(len == 1){
alert("세부과정은 최소1개가 존재해야합니다.");
return false;
}else{
bodyThis.remove();
for(var i=0;i<len;i++){
if(idx>i){
tb.eq(i).find('.span_num3').text(i+1);
}else{
tb.eq(i).find('.span_num3').text(i);
}
}
}
}
function fncAddUser(){
var obj = $(".memList:first").clone(true);
obj.children('input').val('')
/*
var len = $(".memList").length;
$.each(obj.find("input"), function(idx, objInput){
objInput.name = objInput.name.replace(/\[.*\]/,'['+(len+1)+']');
console.log(objInput.name);
if(objInput.name.indexOf("memGrade") < 0){
objInput.value = '';
}
});
obj.find("button").attr("id", obj.find("button").attr("id").replace(/[0-9]/gi, len+2));
obj.find("tr:last > td").text("");
*/
$(".memList:last").after(obj);
}
function fncDelUser(obj){
if($(".memList").length <= 1){
alert("담당자은 최소1개가 존재해야합니다.");
}else{
$(obj).closest("td").remove();
}
}
function fncSave(){
if(fn_valChk())
{
return false;
}
var data = new FormData(document.getElementById("createForm"));
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
if(confirm("수정하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtMdfyAjax.do'/>";
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
url: url,
data: data,
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 fn_valChk(){
// 의뢰일 검사
if($("#reqPnttm").val().trim() == ""){
alert("의뢰일을 입력해주세요.");
$("#reqPnttm").focus();
return true;
}
// 사건번호 검사
if($("input[name='vntNmbr']").val().trim() == ""){
alert("사건번호를 입력해주세요.");
$("input[name='vntNmbr']").focus();
return true;
}
// 관할청 검사
if($("input[name='cmptntAthrt']").val()){
alert("관할청을 입력해주세요.");
$("input[name='cmptntAthrt']").focus();
return true;
}
if($("#sex").val() == "선택" || $("#sex").val().trim() == ""){
alert("성별을 선택해주세요.");
$("#sex").focus();
return true;
}
// 성명 검사
if($("input[name='trgtNm']").val().trim() == ""){
alert("성명을 입력해주세요.");
$("input[name='trgtNm']").focus();
return true;
}
// 생년월일 검사
if($("#dBirth").val().trim() == ""){
alert("생년월일을 입력해주세요.");
$("#dBirth").focus();
return true;
}
// 의뢰번호 검사
if($("input[name='reqNmbr']").val().trim() == ""){
alert("의뢰번호를 입력해주세요.");
$("input[name='reqNmbr']").focus();
return true;
}
// 의뢰상태 검사
/* if($("#reqStateCd").val().trim() == ""){
alert("의뢰상태를 입력해주세요.");
$("input[name='reqStateCd']").focus();
return true;
} */
// 교육상태 검사
/* if($("input[name='eduStateCd']").val().trim() == ""){
alert("교육상태를 입력해주세요.");
$("input[name='eduStateCd']").focus();
return true;
}
*/
// 검사명 검사
if($("input[name='prsctrNm']").val().trim() == ""){
alert("검사명을 입력해주세요.");
$("input[name='prsctrNm']").focus();
return true;
}
// 주소 검사
if($("#post").val().trim() == "" || $("#addr").val().trim() == ""){
alert("주소를 입력해주세요.");
$("#post").focus();
return true;
}
return false; // 모든 검사를 통과하면 false 반환
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do'/>";
listForm.submit();
}
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
function handleFileUpload(files,obj) //업로드 function
{
var limitsize = 20*1024*1024; //파일 제한 체크(1개, 20MB)
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 20MB이하만 업로드 가능합니다.");
return ;
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form:form id="createForm" name="createForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" value="<c:out value='${info.sspnIdtmtTrgtOrd}' />"/>
<input type="hidden" name="atchFileId" value="<c:out value='${info.atchFileId}' />" />
<!-- cont -->
<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>
<li><span class="cur_nav">대상자 수정</span></li>
</ul>
</div>
<!-- //cont_tit -->
<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>
<tr>
<th scope="row">의뢰일</th>
<td>
<div id="calendar">
<div class="calendar_wrap">
<c:set var="reqPnttm" value="${fn:substring(info.reqPnttm, 0, 10)}" />
<input type="text" class="calendar" placeholder="의뢰일" title="의뢰일 선택" id="reqPnttm" name="reqPnttm" value="<c:out value="${reqPnttm }" />" />
</div>
</div>
</td>
</tr>
<tr>
<th scope="row">사건번호</th>
<td>
<input type="text" name="vntYear" style="width: 150px;margin-right: 10px;" value="<c:out value="${info.vntYear }" />"/>형제
<input type="text" name="vntNmbr" style="width: 150px;margin-left: 10px;" value="<c:out value="${info.vntNmbr }" />"/>
</td>
</tr>
<tr>
<th scope="row">관할청</th>
<td>
<ve:select codeId="VEA008" name="cmptntAthrt" id="cmptntAthrt" css="class='sel_type1'"
selectedText="${info.cmptntAthrt }" defaultValue=""
defaultText='선택'
/>
</td>
</tr>
<tr>
<th scope="row">성별</th>
<td>
<%-- <c:set var="reqPnttm" value="<ve:code codeId="COM014" code="${info.sex }"/>" /> --%>
<ve:select codeId="COM014" name="sex" id="sex" css="class='sel_type1'"
selectedValue="${info.sex }" defaultValue=""
defaultText='선택'
/>
</td>
<th scope="row">연락처</th>
<td>
<input type="text" name="clphone" id="clphone" placeholder="00000000000" maxlength="11" value="<c:out value="${info.clphone }" />" />
</td>
</tr>
<tr>
<th scope="row">성명</th>
<td>
<input type="text" name="trgtNm" value="<c:out value="${info.trgtNm }" />" />
</td>
<th scope="row">생년월일</th>
<td>
<input type="text" name="dBirth" id="dBirth" placeholder="00000000" maxlength="8" value="<c:out value="${info.dBirth }" />" />
</td>
</tr>
<!-- <tr>
<th scope="row">연락처(핸드폰)</th>
<td>
<input type="text" name="clphone" />
</td>
</tr> -->
<tr>
<th scope="row">의뢰번호</th>
<td>
<input type="text" name="reqNmbr" value="<c:out value="${info.reqNmbr }" />" />
</td>
<th scope="row">의뢰상태</th>
<td>
<ve:select codeId="VEA005" name="reqStateCd" id="reqStateCd" css="class='sel_type1'"
selectedValue="${info.reqStateCd }" defaultValue=""
defaultText='선택'
/>
</td>
</tr>
<tr>
<th scope="row">교육상태</th>
<td>
<ve:select codeId="VEA002" name="eduStateCd" id="eduStateCd" css="class='sel_type1'"
selectedValue="${info.eduStateCd }" defaultValue=""
defaultText='선택'
/>
</td>
<th scope="row">검사명</th>
<td>
<input type="text" name="prsctrNm" value="<c:out value="${info.prsctrNm }" />" />
</td>
</tr>
<tr class="input_adress">
<th scope="row">
<p>주소</p>
</th>
<td colspan="3">
<label for="post" class="label">우편번호 입력</label>
<input type="text" size="20" name="post" id="post" class="adr_input" style="background-color: #eee;" value="<c:out value='${info.post}'/>" readonly>
<button class="btnType01 btn_adr_search" onclick="fn_postCode(this); return false;">우편번호 검색</button>
<div class="detail_address">
<label for="addr" class="label">주소 입력</label>
<input type="text" size="60" name="addr" id="addr" class="searchResultAddr" value="<c:out value='${info.addr}'/>" readonly>
<label for="addrDetail" class="label">나머지 주소 입력</label>
<input type="text" size="20" name="addrDetail" id="addrDetail" class="usrInsertAddr" value="<c:out value='${info.addrDetail}'/>" maxLength="100" placeholder="나머지 주소">
</div>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>첨부파일</p>
</th>
<td class="upload_area" colspan="3">
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton" class="btn_type01">파일 첨부하기</button>
<p style="padding-left:30px;">첨부파일 가능 용량은 20MB입니다. </p><p style="color:red;font-weight:500">업로드 순서는 1.신청서 2.안내문 입니다.</p>
<div class="file_wrap file_upload_box no_img_box">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist" class="tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<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_type02" onclick="fncSave(); return false;">수정</button>
<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,458 @@
<!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 : cndtnEduPrcsMngReg.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">
//세부과정 추가 버튼 클릭 시 세부과정 추가
$(document).ready(function() {
$(".btn_type01").on('click', function(){
$("#file_temp").click();
});
});
function fncSave(){
if(fn_valChk())
{
return false;
}
var data = new FormData(document.getElementById("createForm"));
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
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"){
alert("저장되었습니다.");
fncGoList();
}else if(returnData.result == "fail"){
alert(returnData.message);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fn_valChk(){
// 의뢰일 검사
if($("#reqPnttm").val().trim() == ""){
alert("의뢰일을 입력해주세요.");
$("#reqPnttm").focus();
return true;
}
// 사건번호 검사
if($("input[name='vntYear']").val().trim() == ""){
alert("사건번호를 입력해주세요.");
$("input[name='vntYear']").focus();
return true;
}
// 사건번호 검사
if($("input[name='vntNmbr']").val().trim() == ""){
alert("사건번호를 입력해주세요.");
$("input[name='vntNmbr']").focus();
return true;
}
// 관할청 검사
if($("input[name='cmptntAthrt']").val()){
alert("관할청을 입력해주세요.");
$("input[name='cmptntAthrt']").focus();
return true;
}
if($("#sex").val() == "선택" || $("#sex").val().trim() == ""){
alert("성별을 선택해주세요.");
$("#sex").focus();
return true;
}
// 성명 검사
if($("input[name='trgtNm']").val().trim() == ""){
alert("성명을 입력해주세요.");
$("input[name='trgtNm']").focus();
return true;
}
// 생년월일 검사
if($("#dBirth").val().trim() == ""){
alert("생년월일을 입력해주세요.");
$("#dBirth").focus();
return true;
}
// 의뢰번호 검사
if($("input[name='reqNmbr']").val().trim() == ""){
alert("의뢰번호를 입력해주세요.");
$("input[name='reqNmbr']").focus();
return true;
}
// 의뢰상태 검사
/* if($("#reqStateCd").val().trim() == ""){
alert("의뢰상태를 입력해주세요.");
$("input[name='reqStateCd']").focus();
return true;
} */
// 교육상태 검사
/* if($("input[name='eduStateCd']").val().trim() == ""){
alert("교육상태를 입력해주세요.");
$("input[name='eduStateCd']").focus();
return true;
}
*/
// 검사명 검사
if($("input[name='prsctrNm']").val().trim() == ""){
alert("검사명을 입력해주세요.");
$("input[name='prsctrNm']").focus();
return true;
}
// 주소 검사
if($("#post").val().trim() == "" || $("#addr").val().trim() == ""){
alert("주소를 입력해주세요.");
$("#post").focus();
return true;
}
return false; // 모든 검사를 통과하면 false 반환
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do'/>";
listForm.submit();
}
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
function handleFileUpload(files,obj) //업로드 function
{
console.log('files', files);
var limitsize = 20*1024*1024; //파일 제한 체크(1개, 20MB)
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 20MB이하만 업로드 가능합니다.");
return ;
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form:form id="createForm" name="createForm" commandName="adjustDeptManageVO" method="post">
<!-- cont -->
<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>
<li><span class="cur_nav">대상자 등록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<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>
<tr>
<th scope="row">의뢰일</th>
<td>
<div id="calendar">
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="의뢰일" title="의뢰일 선택" id="reqPnttm" name="reqPnttm" value="">
</div>
</div>
</td>
</tr>
<tr>
<th scope="row">사건번호</th>
<td>
<input type="text" name="vntYear" style="width: 150px;margin-right: 10px;"/>형제
<input type="text" name="vntNmbr" style="width: 150px;margin-left: 10px;" />
</td>
</tr>
<tr>
<th scope="row">관할청</th>
<td>
<ve:select codeId="VEA008" name="cmptntAthrt" id="cmptntAthrt" css="class='sel_type1'"
selectedText="" defaultValue=""
defaultText='선택'
/>
</td>
</tr>
<tr>
<th scope="row">성별</th>
<td>
<ve:select codeId="COM014" name="sex" id="sex" css="class='sel_type1'"
selectedText="" defaultValue=""
defaultText='선택'
/>
</td>
<th scope="row">연락처</th>
<td>
<input type="text" name="clphone" id="clphone" placeholder="00000000000" maxlength="11"/>
</td>
</tr>
<tr>
<th scope="row">성명</th>
<td>
<input type="text" name="trgtNm" />
</td>
<th scope="row">생년월일</th>
<td>
<input type="text" name="dBirth" id="dBirth" placeholder="00000000" maxlength="8"/>
</td>
</tr>
<!-- <tr>
<th scope="row">연락처(핸드폰)</th>
<td>
<input type="text" name="clphone" />
</td>
</tr> -->
<tr>
<th scope="row">의뢰번호</th>
<td>
<input type="text" name="reqNmbr" />
</td>
<th scope="row">의뢰상태</th>
<td>
<ve:select codeId="VEA005" name="reqStateCd" id="reqStateCd" css="class='sel_type1'"
selectedText="" defaultValue=""
defaultText='선택'
/>
</td>
</tr>
<tr>
<th scope="row">교육상태</th>
<td>
교육대기
<input type="hidden" name="eduStateCd" id="eduStateCd" value="10"/>
<%-- <ve:select codeId="VEA002" name="eduStateCd" id="eduStateCd" css="class='sel_type1'"
selectedText="" defaultValue=""
defaultText='선택'
/> --%>
</td>
<th scope="row">검사명</th>
<td>
<input type="text" name="prsctrNm" />
</td>
</tr>
<tr class="input_adress">
<th scope="row">
<p>주소</p>
</th>
<td colspan="3">
<label for="post" class="label">우편번호 입력</label>
<input type="text" size="20" name="post" id="post" class="adr_input" style="background-color: #eee;" value="<c:out value='${info.post}'/>" readonly>
<button class="btnType01 btn_adr_search" onclick="fn_postCode(this); return false;">우편번호 검색</button>
<div class="detail_address">
<label for="addr" class="label">주소 입력</label>
<input type="text" size="60" name="addr" id="addr" class="searchResultAddr" value="<c:out value='${info.addr}'/>" readonly>
<label for="addrDetail" class="label">나머지 주소 입력</label>
<input type="text" size="20" name="addrDetail" id="addrDetail" class="usrInsertAddr" value="<c:out value='${info.addrDetail}'/>" maxLength="100" placeholder="나머지 주소">
</div>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>첨부파일</p>
</th>
<td class="upload_area" colspan="3">
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton" class="btn_type01">파일 첨부하기</button>
<p style="padding-left:30px;">첨부파일 가능 용량은 20MB입니다. </p><!-- <p style="color:red;font-weight:500">업로드 순서는 1.신청서 2.안내문 입니다.</p> -->
<div class="file_wrap file_upload_box no_img_box">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist" class="tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<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_type02" onclick="fncSave(); return false;">저장</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -31,22 +31,12 @@
<script type="text/javascript">
//세부과정 추가 버튼 클릭 시 세부과정 추가
$(document).ready(function() {
/* $('#dBirth').on('input', function() {
var input = $(this).val();
var length = input.length;
var lastChar = input.charAt(length - 1);
$(".btn_type01").on('click', function(){
$("#file_temp").click();
});
// 숫자만 입력되도록 검사
if (!lastChar.match(/[0-9]/)) {
$(this).val(input.substring(0, length - 1));
return;
}
// 포맷 적용
if (length === 4 || length === 7) {
$(this).val(input + '-');
}
}); */
});
function fncSave(){
@ -57,29 +47,43 @@
}
var data = new FormData(document.getElementById("createForm"));
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.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("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
$('#cmptntAthrt').prop('disabled', false);
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
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"){
alert("저장되었습니다.");
// fncGoList();
}else if(returnData.result == "fail"){
alert(returnData.message);
$('#cmptntAthrt').prop('disabled', true);
}
});
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
$('#cmptntAthrt').prop('disabled', true);
}
});
}
}
@ -107,11 +111,11 @@
}
// 관할청 검사
if($("input[name='cmptntAthrt']").val().trim() == ""){
alert("관할청을 입력해주세요.");
$("input[name='cmptntAthrt']").focus();
return true;
}
// if($("input[name='cmptntAthrt']").val()){
// alert("관할청을 입력해주세요.");
// $("input[name='cmptntAthrt']").focus();
// return true;
// }
if($("#sex").val() == "선택" || $("#sex").val().trim() == ""){
alert("성별을 선택해주세요.");
@ -134,11 +138,11 @@
}
// 의뢰번호 검사
if($("input[name='reqNmbr']").val().trim() == ""){
/* if($("input[name='reqNmbr']").val().trim() == ""){
alert("의뢰번호를 입력해주세요.");
$("input[name='reqNmbr']").focus();
return true;
}
} */
// 의뢰상태 검사
/* if($("#reqStateCd").val().trim() == ""){
@ -179,6 +183,40 @@
listForm.submit();
}
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
function handleFileUpload(files,obj) //업로드 function
{
console.log('files', files);
var limitsize = 20*1024*1024; //파일 제한 체크(1개, 20MB)
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 20MB이하만 업로드 가능합니다.");
return ;
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
</script>
</head>
@ -239,7 +277,18 @@
<tr>
<th scope="row">관할청</th>
<td>
<input type="text" name="cmptntAthrt" />
<c:choose>
<c:when test="${empty userWork }">
<ve:select codeId="VEA008" name="cmptntAthrt" id="cmptntAthrt" css="class='sel_type1'"
selectedText="" selectedValue="" defaultValue=""
defaultText='선택'
/>
</c:when>
<c:otherwise>
<ve:code codeId="VEA008" code="${userWork }"/>
<input type="hidden" name="cmptntAthrt" value="${userWork }">
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
@ -273,10 +322,10 @@
</td>
</tr> -->
<tr>
<th scope="row">의뢰번호</th>
<!-- <th scope="row">의뢰번호</th>
<td>
<input type="text" name="reqNmbr" />
</td>
</td> -->
<th scope="row">의뢰상태</th>
<td>
<ve:select codeId="VEA005" name="reqStateCd" id="reqStateCd" css="class='sel_type1'"
@ -284,6 +333,10 @@
defaultText='선택'
/>
</td>
<th scope="row">검사명</th>
<td>
<input type="text" name="prsctrNm" />
</td>
</tr>
<tr>
<th scope="row">교육상태</th>
@ -295,10 +348,6 @@
defaultText='선택'
/> --%>
</td>
<th scope="row">검사명</th>
<td>
<input type="text" name="prsctrNm" />
</td>
</tr>
<tr class="input_adress">
<th scope="row">
@ -316,6 +365,88 @@
</div>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>첨부파일</p>
</th>
<td class="upload_area" colspan="3">
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
<button type="button" id="filebutton" class="btn_type01">파일 첨부하기</button>
<p style="padding-left:30px;">첨부파일 가능 용량은 20MB입니다. </p><!-- <p style="color:red;font-weight:500">업로드 순서는 1.신청서 2.안내문 입니다.</p> -->
<div class="file_wrap file_upload_box no_img_box">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist" class="tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -215,6 +215,16 @@
</c:choose>
</td>
</tr>
<c:if test="${info.aprvlCd eq '70'}">
<tr>
<th scope="row">
<p>수정요청사유</p>
</th>
<td colspan="3">
<c:out value="${info.aprvlCn}"/>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
@ -344,13 +354,13 @@
<tbody>
<tr>
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<th scope="row">
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr>
<th scope="row">

View File

@ -305,12 +305,6 @@
$("#trgtGrade").focus();
return false;
}
if($('#trgtClsrm').val() == ''){
alert('대상반을 입력해주세요.');
$("#trgtClsrm").focus();
return false;
}
if($('#trgtPrsnl').val() == ''){
alert('학생수를 입력해주세요.');
$("#trgtPrsnl").focus();

View File

@ -494,13 +494,13 @@
<tbody>
<tr>
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<th scope="row">
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr>
<th scope="row">

View File

@ -83,8 +83,8 @@
<table>
<colgroup>
<col style="width: 10%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 15%">
<col style="width: 20%;">
<col style="width: 15%;">
@ -92,8 +92,8 @@
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">운영 연도</th>
<th scope="col">교육내용</th>
<th scope="col">접수종료일</th>
<th scope="col">신청일</th>
<th scope="col">학교명</th>
<th scope="col">처리상태</th>
@ -108,13 +108,13 @@
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
${list.chrgMjr}
<fmt:parseDate value="${list.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy년"/>
</a>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<fmt:parseDate value="${list.prcsEndPnttm}" var="prcsEndPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${prcsEndPnttm}" pattern="yyyy.MM.dd"/>
${list.chrgMjr}
</a>
</td>
<td>

View File

@ -119,13 +119,6 @@
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="tit_box">
<i class="tit_box_icon1"></i>
<div>
<p>찾아가는 저작권 교육</p>
<span>‘찾아가는 저작권 교육’은 저작권 교육이 필요한 <span>전국 초ㆍ중ㆍ고등학교, 청소년ㆍ아동복지ㆍ노인ㆍ장애인 기관 및 단체 등</span>에 직접 방문하여 무료로 강의를 지원하는 맞춤형 교육 서비스입니다.</span>
</div>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
@ -150,7 +143,7 @@
<c:choose>
<c:when test="${not empty info.sbmtPnttmDetail}">
<fmt:parseDate value="${info.sbmtPnttmDetail}" var="sbmtPnttm" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${sbmtPnttm}" pattern="yyyy-MM-dd HH시 mm분"/>
<fmt:formatDate value="${sbmtPnttm}" pattern="yyyy-MM-dd HH:mm:ss"/>
</c:when>
<c:otherwise>
-
@ -158,12 +151,6 @@
</c:choose>
</td>
<th scope="row">
<p>접수종료일</p>
</th>
<td>
<c:out value="${endPnttm }"/>
</td>
</tr>
<tr class="trLength2">
<th scope="row">
@ -181,21 +168,6 @@
</c:choose>
</td>
</tr>
<tr class="trLength2">
<th scope="row">
<p>접수종료일</p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${not empty endPnttm}">
<c:out value="${endPnttm }"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<th scope="row">
<p>처리상태</p>
@ -231,6 +203,14 @@
<td colspan="3">${info.aprvlCn}</td>
</tr>
</c:if>
<c:if test="${info.aprvlCd eq VeConstants.APRVL_CD_70}">
<tr>
<th scope="row">
<p>수정요청사유</p>
</th>
<td colspan="3">${info.aprvlCn}</td>
</tr>
</c:if>
</tbody>
</table>
</div>
@ -283,12 +263,6 @@
<kc:code codeId="COM014" code="${info.chrgSexCd}"/>
</td>
</tr>
<tr>
<th scope="row">
<p>이메일</p>
</th>
<td>${info.email}</td>
</tr>
<tr>
<th scope="row">
<p>휴대폰</p>
@ -300,6 +274,12 @@
<p>전화</p>
</th>
<td>${info.phone}</td>
</tr
<tr>
<th scope="row">
<p>이메일</p>
</th>
<td>${info.email}</td>
</tr>
<tr>
<th scope="row">
@ -367,26 +347,26 @@
<tbody>
<tr class="trLength4">
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<th scope="row">
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr class="trLength2">
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td colspan="3">${info.trgtGrade}</td>
</tr>
<tr class="trLength2">
<%-- <tr class="trLength2">
<th scope="row">
<p>대상반</p>
</th>
<td colspan="3">${info.trgtClsrm}</td>
</tr>
</tr> --%>
<tr class="trLength4">
<th scope="row">
<p>대상학생수</p>

View File

@ -124,8 +124,8 @@
<table>
<colgroup>
<col style="width: 10%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 15%">
<col style="width: 20%;">
<col style="width: 15%;">
@ -133,8 +133,8 @@
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">운영 연도</th>
<th scope="col">교육내용</th>
<th scope="col">접수종료일</th>
<th scope="col">신청일</th>
<th scope="col">학교명</th>
<th scope="col">처리상태</th>
@ -149,13 +149,13 @@
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
${list.chrgMjr}
<fmt:parseDate value="${list.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy년"/>
</a>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<fmt:parseDate value="${list.prcsEndPnttm}" var="prcsEndPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${prcsEndPnttm}" pattern="yyyy.MM.dd"/>
${list.chrgMjr}
</a>
</td>
<td>

View File

@ -168,7 +168,7 @@
function fncSave(type){
if(type == 'S'){
if(type == 'S' || type == 'E'){
if (!validCheck()) return;
}
@ -180,6 +180,9 @@
if(confirm("교육신청을 "+(type == 'I'? '임시저장' : '등록')+"하시겠습니까?")){
if(type == 'I'){
$("#sbmtYn").val("N");
}else if(type == 'E'){
$("#sbmtYn").val("Y");
$("#aprvlCd").val(VeConstants.APRVL_CD_80);
}else{
$("#sbmtYn").val("Y");
$("#aprvlCd").val(VeConstants.APRVL_CD_10);
@ -394,15 +397,21 @@
$("#trgtGrade").focus();
return false;
}
if($('#trgtClsrm').val() == ''){
/* if($('#trgtClsrm').val() == ''){
alert('대상반을 입력해주세요.');
$("#trgtClsrm").focus();
return false;
}
} */
if($('#trgtPrsnl').val() == ''){
alert('학생수를 입력해주세요.');
alert('전체학생 수를 입력해주세요.');
$("#trgtPrsnl").focus();
return
false;
}
if($('#needTxtbNum').val() == ''){
alert('필요 교재 수량을 입력해주세요.');
$("#needTxtbNum").focus();
return false;
}
@ -567,7 +576,7 @@
}
$("#trgtGrade").val(info.trgtGrade);
$("#trgtClsrm").val(info.trgtClsrm);
/* $("#trgtClsrm").val(info.trgtClsrm); */
$("#trgtPrsnl").val(info.trgtPrsnl);
$("#needTxtbNum").val(info.needTxtbNum);
@ -687,13 +696,12 @@
script="onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;'"/>
<label for="scholInsttNm" class="label">학교(기관)명 입력</label>
<input type="text" value="${info.scholInsttNm}" size="25" readonly id="scholInsttNm" name="scholInsttNm">
<button type="button" class="btnType01" data-tooltip="sub01_pop02" onclick="fncScholList();" title="팝업 열림">학교검색</button>
<button type="button" class="btnType01" data-tooltip="sub01_pop02" onclick="fncScholList();" title="팝업 열림">학교검색</button> ※ 학교명이 검색되지 않을 경우, 담당자에게 연락
<input type="hidden" size="25" title="학교명코드" id="stndrdScholCd" name="stndrdScholCd" value="${info.stndrdScholCd}">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학교구분</p>
</th>
<td colspan="3">
@ -785,7 +793,6 @@
</tr>
<tr class="input_adress">
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>주소</p>
</th>
<td colspan="3">
@ -897,25 +904,26 @@
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학년수</p>
<p>대상학년/반</p>
</th>
<td>
<label for="trgtGrade" class="label">대상 학년 입력</label>
<input type="text" name="trgtGrade" id="trgtGrade" onkeyup="onlyNumber(this);" maxlength="3" value="${info.trgtGrade}" size="20"> 학년
<input type="text" name="trgtGrade" id="trgtGrade" maxlength="20" value="${info.trgtGrade}" size="20">
</td>
<th scope="row">
<!-- 231107 학년과 대상 통합 요청 -->
<%--<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>대상 반</p>
</th>
<td>
<label for="trgtClsrm" class="label">대상 반 입력</label>
<input type="text" name="trgtClsrm" id="trgtClsrm" value="${info.trgtClsrm}" title="교육인원" size="20"> 반
</td>
</td> --%>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학생수</p>
<p>전체학생 수</p>
</th>
<td>
<label for="trgtPrsnl" class="label">학생 수 입력</label>
@ -964,10 +972,11 @@
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>필요 교재 수량</p>
</th>
<td>
<label for="trgtGrade" class="label">필요 교재 수량 입력</label>
<label for="needTxtbNum" class="label">필요 교재 수량 입력</label>
<input type="text" name="needTxtbNum" id="needTxtbNum" onkeyup="onlyNumber(this);" value="${info.trgtPrsnlReal}" title="전체 교육인원" size="20" maxlength="4">
</td>
</tr>

View File

@ -71,26 +71,26 @@
<tbody>
<tr class="trLength4">
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<th scope="row">
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr class="trLength2">
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td colspan="3">${info.trgtGrade}</td>
</tr>
<tr class="trLength2">
<%-- <tr class="trLength2">
<th scope="row">
<p>대상반</p>
</th>
<td colspan="3">${info.trgtClsrm}</td>
</tr>
</tr> --%>
<tr class="trLength4">
<th scope="row">
<p>대상학생수</p>

View File

@ -492,13 +492,13 @@
<tbody>
<tr>
<th scope="row">
<p>대상학년</p>
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<th scope="row">
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr>
<th scope="row">

View File

@ -36,6 +36,12 @@
frm.submit();
}
function goMain(){
var frm = document.getElementById("prcsOrdForm");
frm.action = "<c:url value='/web/main/mainPage.do'/>";
frm.submit();
}
</script>
<form id="prcsOrdForm" name="prcsOrdForm">
@ -59,21 +65,23 @@
</c:if>
</dl>
</div>
<div class="title">· 신청서 접수 시 유의사항</div>
<div class="list">
<ol>
<li><span class="number">1.</span>저작권 체험교실 운영 신청만 가능합니다. 찾아가는 저작권 교육 신청은 불가능합니다.<span>- 찾아가는 저작권 교육 신청은 해당 사이트(www.copyright.or.kr/offedu)에서 이용하여</br>
&nbsp&nbsp주시기 바랍니다.</span></li>
<li><span class="number">2.</span>신청 시 공문양식을 다운로드 받아서 반드시 학교장 직인된 공문을 첨부해야 합니다.</li>
<li><span class="number">3.</span>신청 시 반드시 본인 계정으로 신청해야 하며, 타인 계정으로 신청 시 신청 취소 처리됩니다.</li>
<li><span class="number">4.</span>체험교실 신규 운영 교사는 체험교실 운영 교사 연수(1일, 8시간)를 반드시 이수해야 하며, 체험교실 운영 기간내에 저작권 e-배움터에서 제공하는 온라인 강좌를 의무 이수해야 합니다.</li>
<li><span class="number">5.</span>신청기간 내 위원회 업무시간(09:00 ~ 18:00)동안 이용이 가능합니다.</li>
<!-- <li><span class="number">6.</span>신청기간 내 학교급별(초등, 중등, 고등) 게시판을 반드시 확인 후 신청해 주시기 바랍니다.</li> -->
<li><span class="number">6.</span>신청교사가 교내에서 확인 가능한 메일 계정을 기재해 주시기 바랍니다.</li>
<li><span class="number">7.</span>신청 중 문의사항은 위원회 체험교실 담당자에게 연락을 주시기 바랍니다(055-792-0234)</li>
<li><span class="number">8.</span>선정 후 취소(신규 운영 교사 사전 연수 불참 등) 및 운영 포기교실은 차년도 참여를 제한합니다.<br>(해당 내용 학교 공문 발송 예정)</li>
</ol>
</div>
<c:if test="${detailVO.checkYn eq 'Y' }">
<div class="title">· 신청서 접수 시 유의사항</div>
<div class="list">
<ol>
<li><span class="number">1.</span>저작권 체험교실 운영 신청만 가능합니다. 찾아가는 저작권 교육 신청은 불가능합니다.<span>- 찾아가는 저작권 교육 신청은 해당 사이트(www.copyright.or.kr/offedu)에서 이용하여</br>
&nbsp&nbsp주시기 바랍니다.</span></li>
<li><span class="number">2.</span>신청 시 공문양식을 다운로드 받아서 반드시 학교장 직인된 공문을 첨부해야 합니다.</li>
<li><span class="number">3.</span>신청 시 반드시 본인 계정으로 신청해야 하며, 타인 계정으로 신청 시 신청 취소 처리됩니다.</li>
<li><span class="number">4.</span>체험교실 신규 운영 교사는 체험교실 운영 교사 연수(1일, 8시간)를 반드시 이수해야 하며, 체험교실 운영 기간내에 저작권 e-배움터에서 제공하는 온라인 강좌를 의무 이수해야 합니다.</li>
<li><span class="number">5.</span>신청기간 내 위원회 업무시간(09:00 ~ 18:00)동안 이용이 가능합니다.</li>
<!-- <li><span class="number">6.</span>신청기간 내 학교급별(초등, 중등, 고등) 게시판을 반드시 확인 후 신청해 주시기 바랍니다.</li> -->
<li><span class="number">6.</span>신청교사가 교내에서 확인 가능한 메일 계정을 기재해 주시기 바랍니다.</li>
<li><span class="number">7.</span>신청 중 문의사항은 위원회 체험교실 담당자에게 연락을 주시기 바랍니다(055-792-0234)</li>
<li><span class="number">8.</span>선정 후 취소(신규 운영 교사 사전 연수 불참 등) 및 운영 포기교실은 차년도 참여를 제한합니다.<br>(해당 내용 학교 공문 발송 예정)</li>
</ol>
</div>
</c:if>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
@ -82,6 +90,9 @@
<c:if test="${detailVO.checkYn eq 'Y' }">
<button type="button" class="btnType05" onclick="goWrite();">확인</button>
</c:if>
<c:if test="${detailVO.checkYn ne 'Y' }">
<button type="button" class="btnType05" onclick="goMain();">찾아가는 저작권 교육</button>
</c:if>
<button type="button" class="btnType02 tooltip-close" data-focus="list_popup_close" data-focus-next="sub40_pop01">취소</button>
</div>
<div class="btn_right">