2023-11-14 16:55 청소년 자동 배정 작업 중

This commit is contained in:
myname 2023-11-14 16:56:38 +09:00
parent 0acd86fc7f
commit ad767e0c48
13 changed files with 908 additions and 611 deletions

View File

@ -621,11 +621,13 @@ public class CommonWebController {
vEEduAplctVO.setSearchAsgnmAprvlCd("90");
//Step1.자동배정 대상 차시가져오기
//강사할당이 없는 배정 대상 차시를 가져온다.
vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO);
}
//step2.배정 대상별 가능한 대상 강사 찾기
//step2.배정 대상별 가능한 대상 강사 찾기 등록
int p=0;
{
for (int i=0;i<vEEduAplctVOList.size();i++) {
//학교 지역, 희망일자가 필요
@ -638,16 +640,58 @@ public class CommonWebController {
System.out.println(s_addr);
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트
//필수 조건
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트()
VEAutoAsgnmVO vEAutoAsgnmVO = new VEAutoAsgnmVO();
vEAutoAsgnmVO.setEduHopeMnt(s_eduHopeDt.substring(5,7));
vEAutoAsgnmVO.setYr(s_eduHopeDt.substring(0,4));
vEAutoAsgnmVO.setInstrDiv("10"); //10-청소년, 20-성인
vEAutoAsgnmVO.setEduChasiOrd(tChasiInfo.getEduChasiOrd());
List<VEAutoAsgnmVO> vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrMntAsgnmtChasiList(vEAutoAsgnmVO);
//step2-2.해당 차시 학교의 거주 강사 검색
//step2-3.희망 지역 강사 검색
//step2-2.희망 지역 강사 검색()
String s_user_id = "'aaa'";
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
}
vEAutoAsgnmVO.setUserIds(s_user_id);
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrHopeAreaList(vEAutoAsgnmVO);
//step2-3.연강가능강사검색(선택)
//step2-4.패널티 없는 강사 검색(선택)
//우선순위
//step3-1.월별시수대비할당이적은자 우선()
s_user_id = "'aaa'";
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
}
vEAutoAsgnmVO.setUserIds(s_user_id);
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrPriorityList(vEAutoAsgnmVO);
//step3-2.거주기 강사 우선=>거주지별 배정 비율 필터(선택)
//강사배정
if (vEInstrAssiEduAplctVOList.size()>0) {
VEInstrAsgnmVO p_vEInstrAsgnmVO = new VEInstrAsgnmVO();
p_vEInstrAsgnmVO.setEduAplctOrd(tChasiInfo.getEduAplctOrd());
p_vEInstrAsgnmVO.setEduChasiOrd(tChasiInfo.getEduChasiOrd());
p_vEInstrAsgnmVO.setUserId(vEInstrAssiEduAplctVOList.get(0).getUserId());
p_vEInstrAsgnmVO.setFrstRegisterId(loginVO.getUniqId());
p_vEInstrAsgnmVO.setAsgnmAprvlCd("10");
p_vEInstrAsgnmVO.setAsgnmAprvlId(loginVO.getUniqId());
p_vEInstrAsgnmVO.setRmrks("배정기준1순위");
//저장
vEEduChasiInstrAsgnmService.insert(p_vEInstrAsgnmVO);
//저장여부 확인
//step3-1.해당 차시에 강사 배정이 있는지 확인
VEInstrAsgnmVO vEInstrAsgnmVOTmp = vEEduChasiInstrAsgnmService.selectDetail(p_vEInstrAsgnmVO);
if (vEInstrAsgnmVOTmp!=null) p = p+1;
}
}
}
@ -656,6 +700,10 @@ public class CommonWebController {
//this.setInstrAsgnm(p_step01_list, vEInstrAsgnmVO, loginVO);
System.out.println("p");
System.out.println(p);
System.out.println(p);
//modelAndView.addObject("rsCnt", rs);
modelAndView.addObject("result", "success");
return modelAndView;

View File

@ -3,10 +3,18 @@ package kcc.ve.instr.tngrVisitEdu.eduInfo.service;
import java.util.List;
public interface VEAutoAsgnmMIXService {
//해당 배정 차시의 달에 강사에게 할당된 차시 정보
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트()
List<VEAutoAsgnmVO> selectInstrMntAsgnmtChasiList(VEAutoAsgnmVO paramVO) throws Exception;
//해당 차시 학교에 거주하는 강사
List<VEAutoAsgnmVO> selectRsdneInstrList(VEAutoAsgnmVO paramVO) throws Exception;
//step2-2.희망 지역 강사 검색()
List<VEAutoAsgnmVO> selectInstrHopeAreaList(VEAutoAsgnmVO paramVO) throws Exception;
//step3-1.월별시수대비할당이적은자 우선()
List<VEAutoAsgnmVO> selectInstrPriorityList(VEAutoAsgnmVO paramVO) throws Exception;
}

View File

@ -23,6 +23,12 @@ public class VEAutoAsgnmVO extends ComDefaultVO implements Serializable {
private String rsdne; //강사거주지
private String hopeEduFld; //희망교육부분
private String asgnmTm; //할당된시간
private String eduChasiOrd; //차시 고유 순번
private String userIds; //강사아이디들
private String rownum; //배정순번
public String getEduHopeMnt() {
@ -88,6 +94,30 @@ public class VEAutoAsgnmVO extends ComDefaultVO implements Serializable {
public void setAsgnmTm(String asgnmTm) {
this.asgnmTm = asgnmTm;
}
public String getEduChasiOrd() {
return eduChasiOrd;
}
public void setEduChasiOrd(String eduChasiOrd) {
this.eduChasiOrd = eduChasiOrd;
}
public String getUserIds() {
return userIds;
}
public void setUserIds(String userIds) {
this.userIds = userIds;
}
public String getRownum() {
return rownum;
}
public void setRownum(String rownum) {
this.rownum = rownum;
}
}

View File

@ -22,5 +22,17 @@ public class VEAutoAsgnmMIXDAO extends EgovAbstractDAO {
return tlist;
}
public List<VEAutoAsgnmVO> selectInstrHopeAreaList(VEAutoAsgnmVO paramVO) {
@SuppressWarnings("unchecked")
List<VEAutoAsgnmVO> tlist = (List<VEAutoAsgnmVO>) list("VEAutoAsgnmDAO.selectInstrHopeAreaList", paramVO);
return tlist;
}
public List<VEAutoAsgnmVO> selectInstrPriorityList(VEAutoAsgnmVO paramVO) {
@SuppressWarnings("unchecked")
List<VEAutoAsgnmVO> tlist = (List<VEAutoAsgnmVO>) list("VEAutoAsgnmDAO.selectInstrPriorityList", paramVO);
return tlist;
}
}

View File

@ -27,5 +27,15 @@ public class VEAutoAsgnmMIXServiceImpl implements VEAutoAsgnmMIXService {
public List<VEAutoAsgnmVO> selectRsdneInstrList(VEAutoAsgnmVO paramVO) throws Exception{
return vEAutoAsgnmMIXDAO.selectRsdneInstrList(paramVO);
}
@Override
public List<VEAutoAsgnmVO> selectInstrHopeAreaList(VEAutoAsgnmVO paramVO) throws Exception{
return vEAutoAsgnmMIXDAO.selectInstrHopeAreaList(paramVO);
}
@Override
public List<VEAutoAsgnmVO> selectInstrPriorityList(VEAutoAsgnmVO paramVO) throws Exception{
return vEAutoAsgnmMIXDAO.selectInstrPriorityList(paramVO);
}
}

View File

@ -49,9 +49,9 @@
a.pnlty_id AS pnltyId,
a.pnlty_cn AS pnltyCn,
DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm,
TO_CHAR(a.frst_regist_pnttm,'YYYY-MM-DD') AS frstRegistPnttm,
a.frst_register_id AS frstRegisterId,
DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm,
TO_CHAR(a.last_updt_pnttm,'YYYY-MM-DD') AS lastUpdtPnttm,
a.last_updusr_id AS lastUpdusrId,
a.prvs_srvy_ord AS prvsSrvyOrd,
@ -67,6 +67,7 @@
<!-- 강사 등록 C -->
<insert id="VEEduChasiInstrAsgnmDAO.insert" parameterClass="VEInstrAsgnmVO">
/* VEEduChasiInstrAsgnmDAO.insert */
MERGE INTO <include refid="VEEduChasiInstrAsgnmDAO.table_name"/> T1 USING DUAL
ON (T1.EDU_APLCT_ORD = #eduAplctOrd# AND T1.EDU_CHASI_ORD = #eduChasiOrd#)
WHEN MATCHED THEN
@ -116,6 +117,7 @@
<!-- 강사 정보 R -->
<select id="VEEduChasiInstrAsgnmDAO.selectDetail" parameterClass="VEInstrAsgnmVO" resultClass="VEInstrAsgnmVO">
/* VEEduChasiInstrAsgnmDAO.selectDetail */
SELECT
<include refid="VEEduChasiInstrAsgnmDAO.select_column_name"/>
FROM

View File

@ -107,7 +107,39 @@
<select id="VEAutoAsgnmDAO.selectInstrMntAsgnmtChasiList" parameterClass="VEAutoAsgnmVO" resultClass="VEAutoAsgnmVO" remapResults="true">
/* VEAutoAsgnmDAO.selectInstrMntAsgnmtChasiList */
SELECT NVL(aa.chasi,0) AS chasi
SELECT
dd.EDU_APLCT_ORD
, dd.EDU_CHASI_ORD
, dd.EDU_HOPE_DT
/* 해당요일 가능 여부 */
, CASE
/* 월 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=2 AND ee.mon_lctr_yn='Y'
THEN 'Y'
/* 화 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=3 AND ee.tue_lctr_yn='Y'
THEN 'Y'
/* 수 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=4 AND ee.wed_lctr_yn='Y'
THEN 'Y'
/* 목 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=5 AND ee.thu_lctr_yn='Y'
THEN 'Y'
/* 금 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=6 AND ee.fri_lctr_yn='Y'
THEN 'Y'
ELSE 'N'
END AS psblDayYn
, NVL(aa.instrSumChasi,0) AS instrSumChasi /* 해당 강사 할당된 총차시 */
, cc.userId
, cc.rsdne
, cc.hopeEduFld
@ -135,13 +167,16 @@
/*
, bb.*
*/
FROM vea_instr_indvd_mnt_tm bb /* 강사의 월별 배정가능한 시수 */
FROM
ve_edu_chasi dd
, ve_lctr_stng ee
, vea_instr_indvd_mnt_tm bb /* 강사의 월별 배정가능한 시수 */
LEFT OUTER JOIN
(
/* 강사에게 교육이 할당(확정, 반려, 요청전, 요첮우 모두 포함)된 차시수 */
SELECT
d.user_id,
sum(NVL(b.chasi, 0)) AS chasi
sum(NVL(b.chasi, 0)) AS instrSumChasi
FROM ve_edu_aplct a ,
ve_edu_chasi b
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm d
@ -206,8 +241,14 @@
cc.userId=bb.user_id
)
WHERE 1=1
AND bb.YR=#yr#
AND dd.EDU_CHASI_ORD =#eduChasiOrd#
AND bb.YR=substring(dd.edu_hope_dt,0,4)
AND ee.use_yn='Y'
AND ee.user_id=cc.userId
/* 대상 조건 1. 해당 월의 배정된 차시가 최대 차시 이내인 강사만 대상임 */
AND NVL(
CASE
WHEN '01'=#eduHopeMnt# THEN m01_tm
@ -224,7 +265,74 @@
WHEN '12'=#eduHopeMnt# THEN m12_tm
END
,0)>NVL(aa.chasi,0)
,0)>NVL(aa.instrSumChasi,0)
/* 대상 조건 2. 해당 요일에 수업 가능한 강사만 대상임 */
AND CASE
/* 월 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=2 AND ee.mon_lctr_yn='Y'
THEN 'Y'
/* 화 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=3 AND ee.tue_lctr_yn='Y'
THEN 'Y'
/* 수 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=4 AND ee.wed_lctr_yn='Y'
THEN 'Y'
/* 목 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=5 AND ee.thu_lctr_yn='Y'
THEN 'Y'
/* 금 */
WHEN to_char(to_date(dd.EDU_HOPE_DT,'YYYY.MM.DD'),'d')=6 AND ee.fri_lctr_yn='Y'
THEN 'Y'
ELSE 'N'
END ='Y'
/* 신청한 요일이 적은 강사부터 배정 대상으로 한다. */
ORDER BY CASE
/* 월 */
WHEN ee.mon_lctr_yn='Y'
THEN 1
ELSE 0
END
+
CASE
/* 화 */
WHEN ee.tue_lctr_yn='Y'
THEN 1
ELSE 0
END
+
CASE
/* 수 */
WHEN ee.wed_lctr_yn='Y'
THEN 1
ELSE 0
END
+
CASE
/* 목 */
WHEN ee.thu_lctr_yn='Y'
THEN 1
ELSE 0
END
+
CASE
/* 금 */
WHEN ee.fri_lctr_yn='Y'
THEN 1
ELSE 0
END
</select>
<!-- //해당 차시 학교에 거주하는 강사 L page -->
@ -349,5 +457,178 @@
END
,0)>NVL(aa.chasi,0)
</select>
</select>
<!-- //step2-2.희망 지역 강사 검색(필) L page -->
<select id="VEAutoAsgnmDAO.selectInstrHopeAreaList" parameterClass="VEAutoAsgnmVO" resultClass="VEAutoAsgnmVO" remapResults="true">
/* VEAutoAsgnmDAO.selectInstrHopeAreaList */
/* 희망지역 필수 */
SELECT aaaaa.userId
FROM (
SELECT
aaaa.saddr
, aaaa.sAddrTop
, aaaa.sAddrSec
, aaaa.loc_nm AS locNm
, aaaa.user_id AS userId
, aaaa.one_depth_nm AS iAddrTop
, aaaa.two_depth_nm AS iAddrSec
FROM (
/* 차시 신청 정보 와 신청 학교 주소 정보 + 학교 소재지명 + 신청 가능한 강사 리스트( 주소, 설정 정보 and 패널티) */
SELECT
aaa.addr AS sAddr ,
/* 학교주소 */
/*
SUBSTRING_INDEX(aaa.addr,' ',1) AS sAddrTop ,
SUBSTRING_INDEX(SUBSTRING_INDEX(aaa.addr,' ',2),' ',-1) AS sAddrSec ,
*/
regexp_substr(aaa.addr, '[^ ]+',1,1) AS sAddrTop ,
regexp_substr(aaa.addr, '[^ ]+',1,2) AS sAddrSec ,
aaa.loc_nm
, bbb.*
FROM (
/* 차시 신청 정보 와 신청 학교 주소 정보 + 학교 소재지명 */
SELECT
aa.isltn_schol_yn ,
cc.loc_nm ,
aa.addr
FROM (
/* 차시 신청 정보 와 신청 학교 주소 정보(학교주소교체는 여기서) */
SELECT
b.isltn_schol_yn
/* y-고립, n-*/
,b.addr
, b.stndrd_schol_cd
FROM ve_edu_chasi a ,
ve_edu_aplct b
WHERE 1 =1
AND a.edu_aplct_ord=b.edu_aplct_ord
AND a.edu_chasi_ord =#eduChasiOrd#
)
aa ,
ve_schol cc
WHERE 1 =1
AND aa.stndrd_schol_cd=cc.stndrd_schol_cd
)
aaa
,
(
/* 신청 가능한 전체 강사 리스트 (강사 주소 교체는 여기서)*/
SELECT aa.user_id
, aa.one_depth_nm
, aa.two_depth_nm
FROM (
SELECT a.user_id
, b.one_depth_nm
, regexp_substr(NVL(b.two_depth_nm, b.three_depth_nm), '[^ ]+',1,1) AS two_depth_nm
FROM ve_lctr_area a
, ve_rsdnc b
WHERE a.AREA_CD =b.POST_ID
AND a.user_id IN ($userIds$)
)aa
GROUP BY aa.user_id
, aa.one_depth_nm
, aa.two_depth_nm
)
bbb
)aaaa
)aaaaa
WHERE sign(
CASE
WHEN instr(aaaaa.sAddrTop,substr(aaaaa.iAddrTop,0,2))>0 THEN 1
ELSE 0
END
+
CASE
WHEN instr(aaaaa.iAddrTop,substr(aaaaa.sAddrTop,0,2))>0 THEN 1
ELSE 0
END
)
+
sign(
CASE
WHEN instr(aaaaa.sAddrSec,substr(aaaaa.iAddrSec,0,2))>0 THEN 1
ELSE 0
END
+
CASE
WHEN instr(aaaaa.iAddrSec,substr(aaaaa.sAddrSec,0,2))>0 THEN 1
ELSE 0
END
)>=2
GROUP BY aaaaa.userId
</select>
<!-- //step3-1.월별시수대비할당이적은자 우선(필) L page -->
<select id="VEAutoAsgnmDAO.selectInstrPriorityList" parameterClass="VEAutoAsgnmVO" resultClass="VEAutoAsgnmVO" remapResults="true">
/* VEAutoAsgnmDAO.selectInstrPriorityList */
SELECT
aaa.userId
, aaa.instrSumChasi
, aaa.asgnmTm
, rownum
FROM (
SELECT bb.*
, NVL(
CASE
WHEN '01'=#eduHopeMnt# THEN m01_tm
WHEN '02'=#eduHopeMnt# THEN m02_tm
WHEN '03'=#eduHopeMnt# THEN m03_tm
WHEN '04'=#eduHopeMnt# THEN m04_tm
WHEN '05'=#eduHopeMnt# THEN m05_tm
WHEN '06'=#eduHopeMnt# THEN m06_tm
WHEN '07'=#eduHopeMnt# THEN m07_tm
WHEN '08'=#eduHopeMnt# THEN m08_tm
WHEN '09'=#eduHopeMnt# THEN m09_tm
WHEN '10'=#eduHopeMnt# THEN m10_tm
WHEN '11'=#eduHopeMnt# THEN m11_tm
WHEN '12'=#eduHopeMnt# THEN m12_tm
END
,0)
AS asgnmTm
FROM vea_instr_indvd_mnt_tm aa
,(
/* 강사에게 교육이 할당(확정, 반려, 요청전, 요첮우 모두 포함)된 차시수 */
SELECT d.user_id AS userId,
SUM(NVL(b.chasi, 0)) AS instrSumChasi
FROM ve_edu_aplct a ,
ve_edu_chasi b
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm d
ON (
b.edu_aplct_ord=d.edu_aplct_ord
AND b.edu_chasi_ord=d.edu_chasi_ord
)
WHERE 1 =1
AND a.edu_aplct_ord =b.edu_aplct_ord
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
AND a.LCTR_DIV_CD = '10'
AND a.aprvl_cd = '60'
AND 1 =1
AND b.edu_hope_dt LIKE #yr#||'.'||#eduHopeMnt#||'%'
GROUP BY d.user_id
)bb
WHERE aa.yr=#yr#
AND aa.user_id IN ($userIds$)
AND aa.USER_ID =bb.userId
)aaa
ORDER BY aaa.instrSumChasi*10000/(aaa.asgnmTm+1) asc
</select>
</sqlMap>

View File

@ -328,40 +328,14 @@
var v_searcDivCd = $('#searcDivCd').val();
var v_searchKeyword = $('#searchKeyword').val();
//alert('/rf [http://192.168.0.59:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn="'+v_searchQlfctEndYn+'"&p_searcDivCd="'+v_searcDivCd+'"&p_searchKeyword="'+v_searchKeyword+'"]');
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]');
viewer.hideToolbarItem(["save"]);
viewer.showToolbarItem(["print_pdf"]);
//viewer.openFile('cmplt_crtfc_20231030.mrd');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='+p_prcsAplctPrdOrd+'&eduAplctOrd='+p_eduAplctOrd+']');
//viewer.openFile('sample.mrd');p_prcsAplctPrdOrd, p_eduAplctOrd
//viewer.openFile('adult_instr_20231102.mrd', '/rfn [adult_instr_20231102.json]');
//viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+('#p_instrId').val()+']');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn="'+v_searchQlfctEndYn+'"&p_searcDivCd="'+v_searcDivCd+'"&p_searchKeyword="'+v_searchKeyword+'"]');
viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn='+v_searchQlfctEndYn+'&p_searcDivCd='+v_searcDivCd+'&p_searchKeyword='+v_searchKeyword+']');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn='+v_searchQlfctEndYn+'&p_searcDivCd='+v_searcDivCd+'&p_searchKeyword='+v_searchKeyword+']');
//System.out.println(request.getParameter("searchQlfctEndYn"));
//System.out.println(request.getParameter("searcDivCd"));
//System.out.println(request.getParameter("searchKeyword"));
/*
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service',
'crownix-viewer');
viewer.openFile('cmplt_crtfc_20231030.mrd');
*/
}
/*
window.onload = function(){
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service');
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
};
*/
</script>

View File

@ -997,34 +997,16 @@
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]');
viewer.hideToolbarItem(["save"]);
viewer.showToolbarItem(["print_pdf"]);
//viewer.openFile('cmplt_crtfc_20231030.mrd');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='+p_prcsAplctPrdOrd+'&eduAplctOrd='+p_eduAplctOrd+']');
//viewer.openFile('sample.mrd');p_prcsAplctPrdOrd, p_eduAplctOrd
//viewer.openFile('adult_instr_20231102.mrd', '/rfn [adult_instr_20231102.json]');
//viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+('#p_instrId').val()+']');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn="'+v_searchQlfctEndYn+'"&p_searcDivCd="'+v_searcDivCd+'"&p_searchKeyword="'+v_searchKeyword+'"]');
//viewer.openFile('instr_activity_20231108.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
viewer.openFile('instr_activity_20231108.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
viewer.openFile('instr_activity_20231108.mrd', '/rf [http://192.168.0.59:2080/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
/*
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service',
'crownix-viewer');
viewer.openFile('cmplt_crtfc_20231030.mrd');
*/
}
/*
window.onload = function(){
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service');
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
};
*/
</script>
</body>

View File

@ -723,32 +723,15 @@
var v_userId = $('#p_instrId').val();
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]');
viewer.hideToolbarItem(["save"]);
viewer.showToolbarItem(["print_pdf"]);
//viewer.openFile('cmplt_crtfc_20231030.mrd');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='+p_prcsAplctPrdOrd+'&eduAplctOrd='+p_eduAplctOrd+']');
//viewer.openFile('sample.mrd');p_prcsAplctPrdOrd, p_eduAplctOrd
//viewer.openFile('adult_instr_20231102.mrd', '/rfn [adult_instr_20231102.json]');
//viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+('#p_instrId').val()+']');
viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+v_userId+']');
/*
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service',
'crownix-viewer');
viewer.openFile('cmplt_crtfc_20231030.mrd');
*/
}
/*
window.onload = function(){
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service');
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
};
*/
</script>

View File

@ -237,28 +237,13 @@ $(document).ready(function(){
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd){
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]');
viewer.hideToolbarItem(["save"]);
viewer.showToolbarItem(["print_pdf"]);
//viewer.openFile('cmplt_crtfc_20231030.mrd');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
viewer.openFile('cmplt_crtfc_20231030.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='+p_prcsAplctPrdOrd+'&eduAplctOrd='+p_eduAplctOrd+']');
//viewer.openFile('sample.mrd');p_prcsAplctPrdOrd, p_eduAplctOrd
/*
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service',
'crownix-viewer');
viewer.openFile('cmplt_crtfc_20231030.mrd');
*/
}
/*
window.onload = function(){
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service');
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
};
*/
</script>

View File

@ -1,507 +1,489 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<spring:eval expression="@property['Globals.Innorix.License']" var="license"/>
<script src="<c:url value='/innorix/innorix_${license}.js' />"></script>
<script src="<c:url value='/js/kccadr/innorixCommon.js' />"></script>
<link rel="stylesheet" href="<c:url value='/innorix/innorix.css'/>" type="text/css">
<style>
input:disabled {
background-color: #f9f9f9 !important;
}
input:read-only {
background-color: #f9f9f9 !important;
}
#fileControl{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
.innorix_basic div.irx_filetree.empty-uploader{background: url(/offedu/visitEdu/usr/publish/images/content/dropzone_file_before.png) no-repeat center; height: 150px !important;}
.irx_filetree,.innorix_basic div.irx_infoBox{height: 150px !important;}
</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
//대용량 업로드 세팅
/*
* ==================================================================
* INNORIX
* 파일전송 컨트롤 생성
* ==================================================================
*/
control = innorix.create({
el: '#fileControl' // 컨트롤 출력 HTML 객체 ID
, transferMode: 'both' // 업로드, 다운로드 혼합사용
, installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지
, uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />' // 업로드 URL
, height:40
, width: 650
, maxFileCount : 1 // 첨부파일 최대 갯수
, allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"]
// 가능한 확장자 txt|xls|xlsx|png|jpg|jpeg|doc|ppt|hwp|pdf|zip
});
// 업로드 완료 후 이벤트
control.on('uploadComplete', function (p) {
console.log('uploadComplete : ', p);
fn_callBackInnorix(p.files); // 파일 정보 DB isnert function
});
});
/*
* 교육 확정일떄 취소를하면 팝업이 열림
* 열리기전 데이터를 form에 넣고 팝업 오픈
*/
function fn_cnclUpdate(eduAplctOrd, prcsAplctPrdOrd){
var cnclForm = document.cnclForm;
cnclForm.eduAplctOrd.value = eduAplctOrd;
cnclForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
}
function fn_veEduAplctCnclUpdate(eduAplctOrd){
var form = document.veEduAplctForm;
form.eduAplctOrd.value = eduAplctOrd;
var data = new FormData(document.getElementById("veEduAplctForm"));
if(confirm("취소 신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/cnclUpdateAjax.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);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.do'/>";
listForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
}
//서류 요청
function insetDocReq(){
//서류명 체크
if($("input[name=cnclCn]").val() == ''){
alert("취소사유를 입력해 주세요");
return false;
}
//첨부파일 체크 및 요청
if(confirm("제출 하시겠습니까?")){
if(control.getUploadFiles().length > 0){
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control.upload(); // 업로드 시작
}else{
alert("등록된 첨부파일이 없습니다.");
return false;
}
}
}
//서류 요청 양식 업로드 후 콜백
function fn_callBackInnorix(data){
var url = "<c:url value='/web/common/insertInnorixSspnCnClAjax.do' />";
//선택된 강사 ID
var sendData = {
"fileType": "sspnForm"
, "eduAplctOrd": $('#cnclForm #eduAplctOrd').val()
, "prcsAplctPrdOrd": $('#cnclForm #prcsAplctPrdOrd').val()
, "innorixFileListVO": data
, "cnclCn" : $('#cnclCn').val()
, "successMsg" : "등록이 완료되었습니다."
}
console.log('sendData : ', sendData);
/*
* 공통 : innorixCommon.js
* fn_innorixCmmAjax() 호출 후 status가 성공(OK)이면 실행
*/
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
location.reload(true);
}
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form id="veEduAplctForm" name="veEduAplctForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="aprvlCd" name="aprvlCd" value="40">
</form>
<form id="cnclForm" name="cnclForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd">
</form>
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<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" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:10%;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</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>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<!--
10 요청
120 선정완료
140 선정취소
20 승인
230 대기
30 반려
40 취소
60 교육확정
70 수정요청
80 수정완료
90 교육미확정
-->
<c:choose>
<c:when test="${not empty list.aplctStateCd }">
<!--
VEA003 10 미이수
VEA003 20 이수완료
VEA003 30 취소
VEA003 35 취소요청
-->
<kc:code codeId="VEA003" code="${list.aplctStateCd }"/>
<!-- 취소요청 내용이 있고 미이수, 이수인 상태 -->
<c:if test="${not empty list.cnclCn and (list.aplctStateCd eq 10 or list.aplctStateCd eq 20)}">
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<button type="button" title="신청취소" class="btnType02" data-tooltip="sub37_pop02" onclick="fn_cnclUpdate('${list.eduAplctOrd }','${list.prcsAplctPrdOrd }')">취소</button>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq 10 }">
<button type="button" title="신청취소" class="btnType02" onclick="fn_veEduAplctCnclUpdate('${list.eduAplctOrd }')">취소</button>
</c:if>
</c:otherwise>
</c:choose>
<!-- <button type="button" title="신청취소" class="btnType02" data-tooltip="sub01_pop01">취소</button> -->
</td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose>
<c:when test="${list.aprvlCd eq 20
and list.dateChk eq 1
and not list.qestRsltExists
and list.aplctStateCd ne 30
and list.aprvlCd ne 40
}">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1
and not list.qestRsltExists
and list.aplctStateCd ne 30
and list.aprvlCd ne 40
}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button>
</td>
<!-- <td>-</td> -->
</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>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/sspnIdtmt/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>
<!-- 서류요청 팝업 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop02" data-focus="sub37_pop02" data-focus-prev="sub37_pop02_close">
<div class="popup_tit">
<p>취소 사용 제출</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop02_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="popup_table_top">
<button type="button" class="btnType06">취소양식 다운로드</button>
</div>
<div class="pop_tb_type01">
<table>
<colgroup>
<col style="width: 22%;">
<col style="">
</colgroup>
<tr>
<th>취소사유</th>
<td><textarea id="cnclCn" name="cnclCn"></textarea></td>
</tr>
</table>
</div>
<div class="popup_cont upload_area">
<div>
<div class="pop_search_wrap">
<label for="fileNm" class="label">첨부파일 선택</label>
<button type="button" onclick="control.openFileDialogSingle();" class="btnType01 btn_add_file">파일찾기</button>
</div>
<div id="fileControl"></div><br/>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<!-- <button type="button" class="btnType05">제출</button> -->
<button type="button" class="btnType05" id="popupSubmin" onclick="insetDocReq();">요청</button>
<button type="button" class="btnType02 tooltip-close" data-focus="sub37_pop02_close" data-focus-next="sub37_pop02">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 서류요청 팝업-->
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
<script>
/*
* 오버레이 방식
*/
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd) {
var viewer = new m2soft.crownix.Viewer(
'http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]');
//viewer.hideToolbarItem(["save"]);
//viewer.openFile('sample.mrd');
viewer.hideToolbarItem([ "save" ]);
//viewer.showToolbarItem(["print"]);
viewer.showToolbarItem([ "print_pdf" ]);
//viewer.openFile('cmplt_crtfc_20231030.mrd');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [cmplt_crtfc_20231030.json]');
viewer
.openFile(
'cmplt_crtfc_20231030.mrd',
'/rf [http://119.193.215.98:9989/offedu/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='
+ p_prcsAplctPrdOrd
+ '&eduAplctOrd='
+ p_eduAplctOrd + ']');
/*
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service',
'crownix-viewer');
viewer.openFile('cmplt_crtfc_20231030.mrd');
*/
}
/*
window.onload = function(){
var viewer = new m2soft.crownix.Viewer('http://192.168.0.176:8093/ReportingServer/service');
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
};
*/
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<spring:eval expression="@property['Globals.Innorix.License']" var="license"/>
<script src="<c:url value='/innorix/innorix_${license}.js' />"></script>
<script src="<c:url value='/js/kccadr/innorixCommon.js' />"></script>
<link rel="stylesheet" href="<c:url value='/innorix/innorix.css'/>" type="text/css">
<style>
input:disabled {
background-color: #f9f9f9 !important;
}
input:read-only {
background-color: #f9f9f9 !important;
}
#fileControl{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
.innorix_basic div.irx_filetree.empty-uploader{background: url(/offedu/visitEdu/usr/publish/images/content/dropzone_file_before.png) no-repeat center; height: 150px !important;}
.irx_filetree,.innorix_basic div.irx_infoBox{height: 150px !important;}
</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
//대용량 업로드 세팅
/*
* ==================================================================
* INNORIX
* 파일전송 컨트롤 생성
* ==================================================================
*/
control = innorix.create({
el: '#fileControl' // 컨트롤 출력 HTML 객체 ID
, transferMode: 'both' // 업로드, 다운로드 혼합사용
, installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지
, uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />' // 업로드 URL
, height:40
, width: 650
, maxFileCount : 1 // 첨부파일 최대 갯수
, allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"]
// 가능한 확장자 txt|xls|xlsx|png|jpg|jpeg|doc|ppt|hwp|pdf|zip
});
// 업로드 완료 후 이벤트
control.on('uploadComplete', function (p) {
console.log('uploadComplete : ', p);
fn_callBackInnorix(p.files); // 파일 정보 DB isnert function
});
});
/*
* 교육 확정일떄 취소를하면 팝업이 열림
* 열리기전 데이터를 form에 넣고 팝업 오픈
*/
function fn_cnclUpdate(eduAplctOrd, prcsAplctPrdOrd){
var cnclForm = document.cnclForm;
cnclForm.eduAplctOrd.value = eduAplctOrd;
cnclForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
}
function fn_veEduAplctCnclUpdate(eduAplctOrd){
var form = document.veEduAplctForm;
form.eduAplctOrd.value = eduAplctOrd;
var data = new FormData(document.getElementById("veEduAplctForm"));
if(confirm("취소 신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/cnclUpdateAjax.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);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.do'/>";
listForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
}
//서류 요청
function insetDocReq(){
//서류명 체크
if($("input[name=cnclCn]").val() == ''){
alert("취소사유를 입력해 주세요");
return false;
}
//첨부파일 체크 및 요청
if(confirm("제출 하시겠습니까?")){
if(control.getUploadFiles().length > 0){
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control.upload(); // 업로드 시작
}else{
alert("등록된 첨부파일이 없습니다.");
return false;
}
}
}
//서류 요청 양식 업로드 후 콜백
function fn_callBackInnorix(data){
var url = "<c:url value='/web/common/insertInnorixSspnCnClAjax.do' />";
//선택된 강사 ID
var sendData = {
"fileType": "sspnForm"
, "eduAplctOrd": $('#cnclForm #eduAplctOrd').val()
, "prcsAplctPrdOrd": $('#cnclForm #prcsAplctPrdOrd').val()
, "innorixFileListVO": data
, "cnclCn" : $('#cnclCn').val()
, "successMsg" : "등록이 완료되었습니다."
}
console.log('sendData : ', sendData);
/*
* 공통 : innorixCommon.js
* fn_innorixCmmAjax() 호출 후 status가 성공(OK)이면 실행
*/
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
location.reload(true);
}
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form id="veEduAplctForm" name="veEduAplctForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="aprvlCd" name="aprvlCd" value="40">
</form>
<form id="cnclForm" name="cnclForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd">
</form>
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<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" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:10%;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</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>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<!--
10 요청
120 선정완료
140 선정취소
20 승인
230 대기
30 반려
40 취소
60 교육확정
70 수정요청
80 수정완료
90 교육미확정
-->
<c:choose>
<c:when test="${not empty list.aplctStateCd }">
<!--
VEA003 10 미이수
VEA003 20 이수완료
VEA003 30 취소
VEA003 35 취소요청
-->
<kc:code codeId="VEA003" code="${list.aplctStateCd }"/>
<!-- 취소요청 내용이 있고 미이수, 이수인 상태 -->
<c:if test="${not empty list.cnclCn and (list.aplctStateCd eq 10 or list.aplctStateCd eq 20)}">
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<button type="button" title="신청취소" class="btnType02" data-tooltip="sub37_pop02" onclick="fn_cnclUpdate('${list.eduAplctOrd }','${list.prcsAplctPrdOrd }')">취소</button>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq 10 }">
<button type="button" title="신청취소" class="btnType02" onclick="fn_veEduAplctCnclUpdate('${list.eduAplctOrd }')">취소</button>
</c:if>
</c:otherwise>
</c:choose>
<!-- <button type="button" title="신청취소" class="btnType02" data-tooltip="sub01_pop01">취소</button> -->
</td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose>
<c:when test="${list.aprvlCd eq 20
and list.dateChk eq 1
and not list.qestRsltExists
and list.aplctStateCd ne 30
and list.aprvlCd ne 40
}">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1
and not list.qestRsltExists
and list.aplctStateCd ne 30
and list.aprvlCd ne 40
}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<button type="button" title="이수증" class="btnType01" onclick="fncCmpltCrtfc('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">이수증테스트</button>
</td>
<!-- <td>-</td> -->
</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>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/sspnIdtmt/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>
<!-- 서류요청 팝업 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop02" data-focus="sub37_pop02" data-focus-prev="sub37_pop02_close">
<div class="popup_tit">
<p>취소 사용 제출</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop02_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="popup_table_top">
<button type="button" class="btnType06">취소양식 다운로드</button>
</div>
<div class="pop_tb_type01">
<table>
<colgroup>
<col style="width: 22%;">
<col style="">
</colgroup>
<tr>
<th>취소사유</th>
<td><textarea id="cnclCn" name="cnclCn"></textarea></td>
</tr>
</table>
</div>
<div class="popup_cont upload_area">
<div>
<div class="pop_search_wrap">
<label for="fileNm" class="label">첨부파일 선택</label>
<button type="button" onclick="control.openFileDialogSingle();" class="btnType01 btn_add_file">파일찾기</button>
</div>
<div id="fileControl"></div><br/>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<!-- <button type="button" class="btnType05">제출</button> -->
<button type="button" class="btnType05" id="popupSubmin" onclick="insetDocReq();">요청</button>
<button type="button" class="btnType02 tooltip-close" data-focus="sub37_pop02_close" data-focus-next="sub37_pop02">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 서류요청 팝업-->
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
<script>
/*
* 오버레이 방식
*/
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd) {
var viewer = new m2soft.crownix.Viewer(
'http://119.193.215.98:8093/ReportingServer/service');
viewer.hideToolbarItem([ "save" ]);
//viewer.showToolbarItem(["print"]);
viewer.showToolbarItem([ "print_pdf" ]);
viewer.openFile(
'cmplt_crtfc_20231030.mrd',
'/rf [http://119.193.215.98:9989/offedu/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='
+ p_prcsAplctPrdOrd
+ '&eduAplctOrd='
+ p_eduAplctOrd + ']');
}
</script>

View File

@ -1065,8 +1065,8 @@ var psblFlag = "Y";//학생 신청가능기간여부 체크
<td>
<label for="eduPlace" class="label">교육장소 입력</label>
<input type="text" value="${info.eduPlace}" name="eduPlace" id="eduPlace" size="25" disabled>
<input type="checkbox" name="corpsEdu" id="corpsEdu" value="Y" <c:if test="${info.corpsEdu eq 'Y'}">checked</c:if>> <label for="corpsEdu">집체교육</label>
<input type="checkbox" name="broadroomEdu" id="broadroomEdu" value="Y" <c:if test="${info.broadroomEdu eq 'Y'}">checked</c:if>> <label for="broadroomEdu">방송실교육</label>
<%-- <input type="checkbox" name="corpsEdu" id="corpsEdu" value="Y" <c:if test="${info.corpsEdu eq 'Y'}">checked</c:if>> <label for="corpsEdu">집체교육</label> --%>
<%-- <input type="checkbox" name="broadroomEdu" id="broadroomEdu" value="Y" <c:if test="${info.broadroomEdu eq 'Y'}">checked</c:if>> <label for="broadroomEdu">방송실교육</label> --%>
<ve:radio codeId="VEA010" id="eduPlaceCd" name="eduPlaceCd"
selectedValue="${empty info.eduPlaceCd ? '01' : info.eduPlaceCd}"
onChange="eduPlaceChg();"