This commit is contained in:
kdh0120 2021-11-03 06:19:08 +00:00
parent fe916b938f
commit ad2031a0ce
72 changed files with 3748 additions and 405 deletions

View File

@ -495,6 +495,7 @@
<Content Include="Content\file\examusers.xlsx" />
<Content Include="Content\file\YNICTEManualaxds.pdf" />
<Content Include="Content\file\documentspast.xlsx" />
<Content Include="libman.json" />
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" />
<Content Include="js\Chart.utils.js" />
<Content Include="Spring\ControllersStaging.xml" />
@ -685,6 +686,11 @@
<Content Include="Views\Shared\Partial\AssignBox2.cshtml" />
<Content Include="Views\croom\documentspast.cshtml" />
<Content Include="Views\Shared\Partial\CMScdBox2.cshtml" />
<Content Include="Views\croom\gradeall.cshtml" />
<Content Include="Views\croom\gradeall0.cshtml" />
<Content Include="Views\croom\gradeall2.cshtml" />
<Content Include="Views\croom\gradeall4.cshtml" />
<Content Include="Views\croom\attscds.cshtml" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />

View File

@ -165,7 +165,7 @@ namespace NP.BO.Controllers
{
return Redirect("/");
}
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno } });
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno },{"isscd",0 } });
vm.CMPRs = Dao.Get<CMPR>("cm.cmprs", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno } });
vm.CMs = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "ismaster",1 },{ "cshapes", "0,2"},{ "orderby","a.cname"} });
ViewBag.fronturl = GetConfig("fronturl");
@ -260,7 +260,7 @@ namespace NP.BO.Controllers
{
return Redirect("/");
}
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "isonline", 0 } });
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "isonline", 0 },{"isscd",1 } });
vm.CMInningscds = new List<CMinningscd>() { };
if (vm.CMInnings.Count > 0)
{

View File

@ -7,6 +7,7 @@ using NP.Model;
using NP.Base.Popbill;
using Popbill.Taxinvoice;
using System.Collections;
using Spring.Expressions;
namespace NP.BO.Controllers
{
@ -485,6 +486,18 @@ namespace NP.BO.Controllers
vm.pagetotalcount = GetCount(vm.LectInnings.FirstOrDefault());
return View(vm);
}
public ActionResult attscds(VMLect vm)
{
vm.ComCodes = GetComCodes("studyplace");
ViewBag.reporturl = GetConfig("reporturl");
var ht = SetHash(vm);
ht.Add("edate", vm.stringval);
ht.Add("cname", vm.stringval2);
ht.Add("studyplace", vm.stringval3);
vm.Lects = Dao.Get<Lect>("lect.lectinnings.forattscd", ht);
vm.pagetotalcount = GetCount(vm.Lects.FirstOrDefault());
return View(vm);
}
public ActionResult grades(NP.Model.VMCM vm)
{
var ht = SetHash(vm, false);
@ -546,14 +559,21 @@ namespace NP.BO.Controllers
{
vm.CMEV = new CMEV() { };
}
vm.Lects = Dao.Get<Lect>("grade.lectgrades", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "ustatus", 1 }, { "isrebate", vm.addstringval }, { "orderby", "ua.asname,ua.asno,u.username" } });
vm.Lects = Dao.Get<Lect>("grade.lectgrades", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "ustatus", 1 }, { "isrebate", vm.addstringval },{"iscomplete",vm.addstringval2 },{"cmisno",vm.addstringval3 },{ "ispasss", vm.addstringval4 },{"ispassa",vm.addstringval5 },{"ispassex",vm.addstringval6 },{"usernameid",vm.addstringval7 }, { "orderby", "ua.asname,ua.asno,u.username" } });
vm.CMInnings = new List<CMInning>() { };
vm.CMinningscds = new List<CMinningscd>() { };
if(vm.CMEV.cshape ==2)
{
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "isonline", 0 },{"isscd",1 } });
vm.CMinningscds = Dao.Get<CMinningscd>("cm.cminningscds", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno } });
}
}
break;
case 1:
{
vm.Lects = Dao.Get<Lect>("lect.atts", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "status", 1 }, { "ustatus", 1 }, { "isrebate", vm.addstringval } });
vm.pagetotalcount = GetCount(vm.Lects.FirstOrDefault());
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "isonline", 0 } });
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", vm.CM.cmno }, { "isonline", 0 },{"isscd",0 } });
}
break;
case 2:
@ -615,10 +635,79 @@ namespace NP.BO.Controllers
}
return View(vm);
}
public ActionResult gradeall(VMLect vm)
{
vm.IsAdmin = SUserInfo.IsAdmin;
vm.ComCodes = GetComCodes("studyplace");
ViewBag.fronturl = GetConfig("fronturl");
ViewBag.reporturl = GetConfig("reporturl");
if (ViewBag.IsSubAdmin97)
{
vm.tabidx = 4;
}
int pcnt = vm.pagerowcount == 0 ? 100 : vm.pagerowcount;
var ht = SetHash(vm);
if(vm.isexceldown == 1)
{
ht.Remove("pagerowsize");
ht.Add("pagerowsize",pcnt);
}
ht.Add("edate", vm.stringval);
ht.Add("cshape", vm.stringval2);
ht.Add("cname", vm.stringval3);
ht.Add("cnamestr", vm.stringval3);
ht.Add("iscomplete", vm.stringval4);
ht.Add("studyplace", vm.stringval5);
ht.Add("sdateall", vm.stringval8);
ht.Add("edateall", vm.stringval9);
ht.Add("asname", vm.stringval10);
if (!string.IsNullOrEmpty(vm.stringval6))
{
ht.Add(vm.stringval6, vm.stringval7);
}
switch (vm.tabidx)
{
case 0:
ht.Add("ustatus", 1);
ht.Add("orderby", "ua.asname,ua.asno,u.username");
vm.Lects = Dao.Get<Lect>("grade.lectgrades", ht);
if (vm.isexceldown == 1)
{
return ExportExcel(
new String[] { "No", "운영기수", "구분", "고객사", "교육장", "과정명", "교육생(ID)", "교육시작일", "교육종료일", "진도율", "진행평가", "최종평가", "과제", "환산점수", "집합교육출석여부", "강의평가", "수료여부"},
new String[] { "rno", "sseqname", "isrebatename", "asname", "studyplacename", "cname", "usernameid", "sdatestr", "edatestr", "attrate", "ex0point", "ex1point", "sd0point", "tpointstr", "isoffabsstr", "rs0point", "iscompletename" },
vm.Lects,
"성적처리전체" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day);
}
vm.pagetotalcount = GetCount(vm.Lects.FirstOrDefault());
break;
case 2:
case 3:
{
ht.Add("extype", vm.tabidx == 2 ? 0 : 1);
vm.LectEXes = Dao.Get<LectEX>("lect.lectexes.all", ht);
vm.pagetotalcount = GetCount(vm.LectEXes.FirstOrDefault());
}
break;
case 4:
{
ht.Add("sdtype", 0);
vm.LectSDs = new List<LectSD>() { };
ht.Add("sdstate", vm.addstringval2);
vm.LectSDs = Dao.Get<LectSD>("lect.lectsds.all", ht);
vm.pagetotalcount = GetCount(vm.LectSDs.FirstOrDefault());
}
break;
default:break;
}
return View(vm);
}
public ActionResult atts(VMLect vm)
{
vm.Lect = Dao.Get<Lect>("lect.lects", new System.Collections.Hashtable() { { "lectno", vm.longval } }).First();
vm.LectInningPages = Dao.Get<LectInningPage>("lect.lectinningpages", new System.Collections.Hashtable() { { "lectno", vm.Lect.lectno } });
vm.LectInningPages = Dao.Get<LectInningPage>("lect.lectinningpages", new System.Collections.Hashtable() { { "lectno", vm.Lect.lectno },{"isscd", 0} });
vm.PageLogs = Dao.Get<PageLog>("lect.pagelogs", new System.Collections.Hashtable() { { "start", vm.Lect.sstime }, { "end", vm.Lect.setime.Value.ToString("yyyy-MM-dd 23:59:59") }, { "userno", vm.Lect.userno }, { "logsite", 1 } });
return View(vm);
}
@ -690,8 +779,8 @@ namespace NP.BO.Controllers
payItem.cmistudyplacename = vm.ComCodes.Where(w => w.cgroup.ToString() == "studyplace" && w.ccode == payItem.cmistudyplace).FirstOrDefault()?.cname;
}
return ExportExcel(
new String[] { "결제번호", "신청자이름", "ID", "회사명", "상품유형", "환급여부", "상품명", "결제금액", "결제방법", "입금금액", "환불금액", "신청일", "입금일", "결제상태", "환급은행명", "환급계좌번호", "환급예금주", "교육장소", "강좌교육시작일", "강좌교육종료일", "신청교육장소", "교육신청일" },
new String[] { "payno", "username", "userid", "asname", "cshapename", "isrebatename", "itemname", "payamt", "pptypename", "payamt", "refundamt", "cdtymd", "payymd", "pstatusname2", "rbank", "rbankaccnum", "tbankuser", "studyplacename", "sdateymd", "edateymd", "cmistudyplacename", "cmiestartymd" },
new String[] { "결제번호", "신청자이름", "ID", "회사명", "상품유형", "환급여부", "상품명", "결제금액", "결제방법", "입금금액", "환불금액", "신청일", "입금일", "결제상태", "환급은행명", "환급계좌번호", "환급예금주", "교육장소", "강좌교육시작일", "강좌교육종료일", "신청교육장소", "교육신청일","등급","목적","수료여부" },
new String[] { "payno", "username", "userid", "asname", "cshapename", "isrebatename", "itemname", "payamt", "pptypename", "payamt", "refundamt", "cdtymd", "payymd", "pstatusname2", "rbank", "rbankaccnum", "tbankuser", "studyplacename", "sdateymd", "edateymd", "cmistudyplacename", "cmiestartymd","tgname","tename", "completename" },
vm.PayItems,
"ProductSales_" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day);
}
@ -740,11 +829,11 @@ namespace NP.BO.Controllers
vm.PayRfds = Dao.Get<PayRfd>("cr.payrfditems2", vm.rfdno);
vm.FileList = new List<File>() { };
vm.FileList2 = new List<File>() { };
if ((vm.PayRfds.First().fgnor??0) > 0)
if (vm.PayRfds != null && (vm.PayRfds.First().fgnor??0) > 0)
{
vm.FileList = GetFiles(vm.PayRfds.First().fgnor.Value);
}
if ((vm.PayRfds.First().fgnob??0) > 0)
if (vm.PayRfds != null && (vm.PayRfds.First().fgnob??0) > 0)
{
vm.FileList2 = GetFiles(vm.PayRfds.First().fgnob.Value);
}
@ -1040,7 +1129,7 @@ namespace NP.BO.Controllers
ht.Add("scompletetime", vm.stringval8);
ht.Add("ecompletetime", vm.stringval9);
ht.Add("typegrade", vm.stringval10);
ht.Add("typeedu", vm.stringval11);
ht.Add("typeedu", vm.stringval11);
vm.Completions = Dao.Get<Completion>("cr.completions", ht);
vm.pagetotalcount = GetCount(vm.Completions.FirstOrDefault());

View File

@ -42,7 +42,7 @@
<th width="80">회차</th>
<th>학습방식</th>
<th>강의주제</th>
<th>강사</th>
@*<th>강사</th>*@
<th>최근수정일</th>
</tr>
</thead>
@ -53,9 +53,9 @@
{
<tr>
<td>@item.iseq @(item.istaste == 1 ? "(S)" : "")</td>
<td>@item.isonlinename</td>
<td>@item.scdtypename</td>
<td class="link"><a href="#" onclick="reg(@item.cmino)">@item.ititle</a></td>
<td>@item.username</td>
@*<td>@item.username</td>*@
<td>@item.udtymd</td>
</tr>
}
@ -64,7 +64,7 @@
</table>
</div>
</section>
<div class="tar buttonbox"><a href="#" onclick="regscd(0,0);" class="btn btn-s-xs btn-info">일정등록</a></div>
<div class="tar buttonbox"><a href="#" onclick="regscd(0,0,@(Model.CMInnings.Count() > 0 ? Model.CMInnings.FirstOrDefault().scdtype : -1));" class="btn btn-s-xs btn-info">일정등록</a></div>
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교육일정등록<span class=""></span></strong></header>
<div class="table-responsive" id="excel1">
@ -72,7 +72,9 @@
<thead>
<tr>
<th width="80">순서</th>
<th>교육일정</th>
<th width="80">운영기수</th>
<th width="80">교육장소</th>
<th>교육종료일</th>
<th>제한인원</th>
<th>등록인원</th>
<th>최근수정일</th>
@ -85,8 +87,10 @@
{
<tr>
<td>@item.scdseq</td>
<td>@item.sseq</td>
<td>@item.studyplacename</td>
<td class="link"><a href="#" onclick="regscd(@item.cmino, @item.cmisno)">@item.estart ~ @item.eend</a></td>
<td>@item.quota</td>
<td>@item.quotastr</td>
<td>@item.regmem</td>
<td>@item.udt</td>
</tr>
@ -105,24 +109,12 @@
<table class="regtable">
<colgroup><col style="width:150px;" /><col /></colgroup>
<tr>
<th class="req">강의주제</th>
<td>@Html.TextBox("ititle", "", new { @class = "form-control", @style = "", @maxlength = "100" })</td>
<th>학습방식</th>
<td>@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "0:오프라인;1:온라인대체" },{ "checked",0}, { "name", "scdtype" } })</td>
</tr>
<tr>
<th>교안</th>
<td>
<input type="hidden" name="fgnotf" id="fgnotf" />
<input type="file" name="filetf" id="filetf" />
<div id="files"></div>
</td>
</tr>
<tr>
<th class="req">강사</th>
<td>@Html.Partial("./Partial/Select", Model.CMPRs, new ViewDataDictionary { { "special", "reg" }, { "name", "userno" }, { "selected", "" }, { "df", ":-강사선택" }, { "class", "disp-init" } })</td>
</tr>
<tr>
<tr style="display:none;">
<th class="req">회차(순서)</th>
<td>@Html.TextBox("iseq", "", new { @class = "form-control disp-init int nocomma text-center", @style = "width: 80px;", @maxlength = "3" })</td>
<td>@Html.TextBox("iseq", "", new {@class = "form-control disp-init int nocomma text-center", @style = "width: 80px;", @maxlength = "3" })</td>
</tr>
</table>
<div class="findboxbtnbox">
@ -137,17 +129,21 @@
<table class="regtable">
<colgroup><col style="width:150px;" /><col /></colgroup>
<tr>
<th class="req">교육일정</th>
<td>
@Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "idate" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "isth" }, { "start", 0 }, { "end", 23 }, { "textadd", "시" }, { "df", ":-시" }, { "class", "disp-init" }, { "style", "width: 80px;" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "istm" }, { "start", 0 }, { "end", 59 }, { "textadd", "분" }, { "df", ":-분" }, { "class", "disp-init" }, { "style", "width: 80px;" } })
~
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "ieth" }, { "start", 0 }, { "end", 23 }, { "textadd", "시" }, { "df", ":-시" }, { "class", "disp-init" }, { "style", "width: 80px;" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "ietm" }, { "start", 0 }, { "end", 59 }, { "textadd", "분" }, { "df", ":-분" }, { "class", "disp-init" }, { "style", "width: 80px;" } })
</td>
<th class="req">운영기수</th>
<td>@Html.TextBox("sseq", "", new { @class = "form-control disp-init int nocomma text-center", @style = "width: 80px;", @maxlength = "3" }) 기</td>
</tr>
<tr>
<th class="req">교육종료일</th>
<td>
@Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "idate" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "isth" }, { "start", 0 }, { "end", 23 }, { "textadd", "시" }, { "df", ":-시" }, { "class", "disp-init idoff" }, { "style", "width: 80px;" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "istm" }, { "start", 0 }, { "end", 59 }, { "textadd", "분" }, { "df", ":-분" }, { "class", "disp-init idoff" }, { "style", "width: 80px;" } })
<span class="idoff">~</span>
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "ieth" }, { "start", 0 }, { "end", 23 }, { "textadd", "시" }, { "df", ":-시" }, { "class", "disp-init idoff" }, { "style", "width: 80px;" } })
@Html.Partial("./Partial/Select", "", new ViewDataDictionary { { "special", "fromto" }, { "name", "ietm" }, { "start", 0 }, { "end", 59 }, { "textadd", "분" }, { "df", ":-분" }, { "class", "disp-init idoff" }, { "style", "width: 80px;" } })
</td>
</tr>
<tr class="troff">
<th class="req">교육장소</th>
<td>
@*@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup == "studyplace"), new ViewDataDictionary() { { "checked", Model.CM.studyplace }, { "name", "istudyplace" }, { "isreadonly", 0 } })*@
@ -158,9 +154,9 @@
}
</td>
</tr>
<tr>
<tr class="troff">
<th class="req">제한인원</th>
<td>@Html.TextBox("iquota", "", new { @class = "form-control disp-init int nocomma text-center", @style = "width: 80px;", @maxlength = "3" })</td>
<td>@Html.TextBox("iquota", "", new { @class = "form-control disp-init int nocomma text-center", @style = "width: 80px;", @maxlength = "5" })</td>
</tr>
</table>
<div class="findboxbtnbox">
@ -177,23 +173,29 @@
}
@section scripts{
<script>
$(document).ready(function () {
});
var _cmino = 0;
var _cmisno = 0;
var _isonline = @(Model.CMInnings.Count()>0 ? Model.CMInnings.FirstOrDefault().scdtype == 1 ? "true" : "false" : "false");
$(document).ready(function () {
if (_isonline) {
$(".troff").hide();
$(".idoff").hide();
} else {
$(".troff").show();
$(".idoff").show();
}
});
function save() {
setrv("isonline", 0); //교육일정에서는 오프라인 교육만 추가 가능
if (check("ititle", null, "강의주제를 입력해주세요.", true)) { }
else if (check("userno", null, "강사를 선택해주세요.", true)) { }
else if (getint(val("iseq")) < 1) { focus("iseq"); msg2("회차를 입력해주세요."); }
else if (confirm("저장하시겠습니까?")) {
if (confirm("저장하시겠습니까?")) {
var data = new FormData();
data.append("isscd", 1);
data.append("cmino", _cmino);
data.append("cmno", @Model.CM.cmno);
data.append("isonline", getrv("isonline"));
data.append("ititle", getv("ititle"));
data.append("ititle", "집체교육");
data.append("idate", null);
data.append("iday", null);
data.append("ist", null);
@ -204,12 +206,8 @@
data.append("atime", 0);
data.append("mstime", 0);
data.append("metime", 0);
data.append("fgnotf", val("fgnotf"));
if ($("#filetf")[0].files.length > 0) {
data.append("filetf", $("#filetf")[0].files[0]);
}
data.append("userno", val("userno"));
data.append("iseq", val("iseq"));
data.append("iseq", 99);
data.append("scdtype", getrv("scdtype"));
capfile("/acommon/cminningsave", data, "cbcminningsave", null, null, true);
}
}
@ -222,28 +220,38 @@
}
function savescd() {
if (@Model.CM.ismaster == 0 && check("idate", null, "학습일자를 입력해주세요.", true)) { }
else if (val("isth") == "") { focus("isth"); msg2("학습시간을 확인해주세요."); }
else if (val("istm") == "") { focus("istm"); msg2("학습시간을 확인해주세요."); }
else if (val("ieth") == "") { focus("ieth"); msg2("학습시간을 확인해주세요."); }
else if (val("ietm") == "") { focus("ietm"); msg2("학습시간을 확인해주세요."); }
else if (getint(val("isth")) > getint(val("ieth"))) { focus("ieth"); msg2("학습시간을 확인해주세요(종료시간이 더 빠름)"); }
else if (getint(val("isth")) == getint(val("ieth")) && getint(val("istm")) > getint(val("ietm"))) { focus("ieth"); msg2("학습시간을 확인해주세요(종료시간이 더 빠름)"); }
if (val("sseq") == "") { focus("sseq"); msg2("운영기수를 입력해주세요."); }
else if (@Model.CM.ismaster == 0 && check("idate", null, "학습일자를 입력해주세요.", true)) { }
//오프라인일때만 체크
else if (!_isonline && val("isth") == "") { focus("isth"); msg2("학습시간을 확인해주세요."); }
else if (!_isonline && val("istm") == "") { focus("istm"); msg2("학습시간을 확인해주세요."); }
else if (!_isonline && val("ieth") == "") { focus("ieth"); msg2("학습시간을 확인해주세요."); }
else if (!_isonline && val("ietm") == "") { focus("ietm"); msg2("학습시간을 확인해주세요."); }
else if (!_isonline && getint(val("isth")) > getint(val("ieth"))) { focus("ieth"); msg2("학습시간을 확인해주세요(종료시간이 더 빠름)"); }
else if (!_isonline && getint(val("isth")) == getint(val("ieth")) && getint(val("istm")) > getint(val("ietm"))) { focus("ieth"); msg2("학습시간을 확인해주세요(종료시간이 더 빠름)"); }
else if (confirm("저장하시겠습니까?")) {
var date = getv("idate");
var isth = getv("isth");
var istm = getv("istm");
var ieth = getv("ieth");
var ietm = getv("ietm");
var estart = (date + " " + fillzero(isth, true, 2) + ":" + fillzero(istm, true, 2) + ":00").toString();
var eend = (date + " " + fillzero(ieth, true, 2) + ":" + fillzero(ietm, true, 2) + ":00").toString();
var estart = "";
var eend = "";
if (!_isonline) {
estart = (date + " " + fillzero(isth, true, 2) + ":" + fillzero(istm, true, 2) + ":00").toString();
eend = (date + " " + fillzero(ieth, true, 2) + ":" + fillzero(ietm, true, 2) + ":59").toString();
} else {
estart = (date + " 00:00:00").toString();
eend = (date + " 00:23:59").toString();
}
capp("/acommon/cminningscdsave", {
cmisno: _cmisno,
cmino: @(Model.CMInnings.Count() > 0 ? Model.CMInnings[0].cmino : 0),
estart2: estart,
eend2: eend,
quota: getv("iquota"),
studyplace: $(":input:radio[name=istudyplace]:checked").val()
quota: _isonline ? 99999 : getv("iquota"),
sseq : getv("sseq"),
studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val()
}, "cbcminningscdsave", null, null, null, true);
}
}
@ -302,7 +310,8 @@
if (capResult.code == 1000) {
var d = capResult.obj;
$("#btndel").show();
setrv("isonline", d.isonline);
//setrv("isonline", d.isonline);
setrv("scdtype",d.scdtype)
setv("ititle", d.ititle);
setv("userno", d.userno);
setv("iseq", d.iseq);
@ -346,7 +355,10 @@
setv("ieth", getint(endMinute));
setv("ietm", getint(endSec));
setv("iquota", getint(d.quota));
$("input:radio[name=istudyplace][value=" + d.studyplace + "]").attr("checked", true);
setv("sseq", getint(d.sseq));
if (d.studyplace != null) {
$("input:radio[name=istudyplace][value=" + d.studyplace + "]").attr("checked", true);
}
}
bglayer(); $("#scdbox").slideDown("fast", function () { $("#scdbox").scrollTop(0); });
}

View File

@ -34,7 +34,7 @@
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 평가기준 및 비율<span class=""></span></strong></header>
<table class="regtable" id="esttable">
<colgroup><col style="width: 80px;display:none;" /><col style="width: 100px;" /><col /><col /><col /><col /><col /><col /><col style="display:none;" /></colgroup>
<tr><th style="display:none;">기준</th><th>평가항목</th><th>출석(%)</th><th>진행평가(%)</th><th>최종평가(%)</th><th>과제(%)</th><th>토론(%)</th><th style="display:none;">기타(%)</th><th>합계(총점)</th></tr>
<tr><th style="display:none;">기준</th><th>평가항목</th><th>진도율</th><th>진행평가(%)</th><th>최종평가(%)</th><th>과제(%)</th><th style="display:none;">토론(%)</th><th style="display:none;">기타(%)</th><th>합계(총점)</th></tr>
<tr class="auto" id="trest">
<th rowspan="2" style="display:none;">비환급</th>
<th>비율(점수)</th>
@ -42,7 +42,7 @@
<td><input type="text" class="form-control int nocomma" maxlength="100" name="mid" id="mid" value="@Model.CMEV.mid" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="final" id="final" value="@Model.CMEV.final" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="subject" id="subject" value="@Model.CMEV.subject" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="discuss" id="discuss" value="@Model.CMEV.discuss" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="discuss" id="discuss" value="@Model.CMEV.discuss" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="etc" id="etc" value="@Model.CMEV.etc" /></td>
<td><input type="text" class="form-control int nocomma tot" maxlength="100" name="tot" id="tot" value="@(Model.CMEV.attend+Model.CMEV.mid+Model.CMEV.final+Model.CMEV.subject+Model.CMEV.discuss+Model.CMEV.etc)" readonly="readonly" /></td>
</tr>
@ -52,7 +52,7 @@
<td><input type="text" class="form-control int nocomma" maxlength="100" name="midcut" id="midcut" value="@Model.CMEV.midcut" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="finalcut" id="finalcut" value="@Model.CMEV.finalcut" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="subjectcut" id="subjectcut" value="@Model.CMEV.subjectcut" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="discusscut" id="discusscut" value="@Model.CMEV.discusscut" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="discusscut" id="discusscut" value="@Model.CMEV.discusscut" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="etccut" id="etccut" value="@Model.CMEV.etccut" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="cut" id="cut" value="@Model.CMEV.cut" /></td>
</tr>
@ -63,7 +63,7 @@
<td><input type="text" class="form-control int nocomma" maxlength="100" name="midrfd" id="midrfd" value="@Model.CMEV.midrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="finalrfd" id="finalrfd" value="@Model.CMEV.finalrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="subjectrfd" id="subjectrfd" value="@Model.CMEV.subjectrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="discussrfd" id="discussrfd" value="@Model.CMEV.discussrfd" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="discussrfd" id="discussrfd" value="@Model.CMEV.discussrfd" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="etcrfd" id="etcrfd" value="@Model.CMEV.etcrfd" /></td>
<td><input type="text" class="form-control int nocomma tot" maxlength="100" name="totrfd" id="totrfd" value="@(Model.CMEV.attendrfd+Model.CMEV.midrfd+Model.CMEV.finalrfd+Model.CMEV.subjectrfd+Model.CMEV.discussrfd+Model.CMEV.etcrfd)" readonly="readonly" /></td>
</tr>
@ -73,7 +73,7 @@
<td><input type="text" class="form-control int nocomma" maxlength="100" name="midcutrfd" id="midcutrfd" value="@Model.CMEV.midcutrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="finalcutrfd" id="finalcutrfd" value="@Model.CMEV.finalcutrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="subjectcutrfd" id="subjectcutrfd" value="@Model.CMEV.subjectcutrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="discusscutrfd" id="discusscutrfd" value="@Model.CMEV.discusscutrfd" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="discusscutrfd" id="discusscutrfd" value="@Model.CMEV.discusscutrfd" /></td>
<td style="display:none;"><input type="text" class="form-control int nocomma" maxlength="100" name="etccutrfd" id="etccutrfd" value="@Model.CMEV.etccutrfd" /></td>
<td><input type="text" class="form-control int nocomma" maxlength="100" name="cutrfd" id="cutrfd" value="@Model.CMEV.cutrfd" /></td>
</tr>
@ -81,7 +81,9 @@
</section>
@if (Model.CM.cshape == 2)//혼합유형
{
<label><input type="checkbox" name="isoffabs" id="isoffabs" @(Model.CMEV.isoffabs != 0 ? "checked" : "") /> 집합교육 출석 필수</label>
<div id="divoffabs" style="@(Model.CMEV.scdtype == 1 ? "display:none;" : "")">
<label><input type="checkbox" @(Model.CMEV.scdtype == 1 ? "disabled" : "") name="isoffabs" id="isoffabs" @(Model.CMEV.isoffabs != 0 ? "checked" : "") /> 집합교육 출석 필수</label>
</div>
}
<div style="padding-left: 0px; font-weight: bold;">
※ 비율의 합은 100%가 되어야 하며, 합계(총점) 수료기준은 반드시 입력하셔야 합니다.<br />
@ -91,7 +93,7 @@
<br />
<div class="tar buttonbox">
<a href="#" onclick="add(0, 0);" class="btn btn-s-xs btn-primary">진행평가/최종평가추가</a>
<a href="#" onclick="add(1, 0);" class="btn btn-s-xs btn-primary">과제/토론추가</a>
<a href="#" onclick="add(1, 0);" class="btn btn-s-xs btn-primary">과제추가</a>
<a href="#" onclick="add(2, 0);" class="btn btn-s-xs btn-primary">설문추가</a>
</div>
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
@ -163,8 +165,10 @@
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
}, t);
}
var _isonline = @(Model.CMEV.scdtype == 1 ? "true" : "false");
function save() {
var isok = true;
$("#isoffabs").attr("disabled", false);
$.each($("tr td input.tot"), function (i, c) {
if (getint($(c).val()) != 100) {
isok = false; $(c).focus(); msg("평가항목의 " + ($(c).hasClass("tot") ? "합이" : "기준이") +" [100]이 되도록 입력해주세요."); return false;
@ -209,6 +213,7 @@
}
function cbsave() {
$("#isoffabs").attr("disabled", _isonline);
if (capResult.code == 1000) {
msg("평가기준/비율을 저장했습니다.", null, true, null, true);
gotab(3, 500);

View File

@ -259,13 +259,14 @@
else if (getint(val("iseq")) < 1) { focus("iseq"); msg2("회차를 입력해주세요."); }
else if (confirm("저장하시겠습니까?")) {
if (getrv("isonline") == "1") {
capp("/acommon/cminningsave", { cmino: _cmino, cmno: @Model.CM.cmno, isonline: getrv("isonline"), ititle: getv("ititle"), ctno: $("#contentdatabox li").attr("data-no"), istaste: getrv("istaste"), sttime: getint(val("sttime")), atime: getint(val("atime")), mstime: getint(val("mstime")), metime: getint(val("metime")), userno: val("userno"), iseq: val("iseq") }, "cbcminningsave", null, null,null,true);
capp("/acommon/cminningsave", { cmino: _cmino, cmno: @Model.CM.cmno, isonline: getrv("isonline"), ititle: getv("ititle"), ctno: $("#contentdatabox li").attr("data-no"), istaste: getrv("istaste"), sttime: getint(val("sttime")), atime: getint(val("atime")), mstime: getint(val("mstime")), metime: getint(val("metime")), userno: val("userno"), iseq: val("iseq"), isscd:0 }, "cbcminningsave", null, null,null,true);
} else {
if (@Model.CM.cshape == 2) {
msg2("온라인 교육시 교육장 회차는 등록 할 수 없습니다.");
return;
}
var data = new FormData();
data.append("isscd", 0);
data.append("cmino", _cmino);
data.append("cmno", @Model.CM.cmno);
data.append("isonline", getrv("isonline"));

View File

@ -19,7 +19,8 @@
<div class="col-sm-8 col-md-10">
@if (Model.examsavable == "")
{
@Html.Partial("./Partial/Radio", "0:과제;1:토론", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMSD.sdtype" }, { "checked", Model.CMSD.sdtype } })
@Html.Partial("./Partial/Radio", "0:과제", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMSD.sdtype" }, { "checked", 0 } })
@*@Html.Partial("./Partial/Radio", "0:과제;1:토론", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMSD.sdtype" }, { "checked", Model.CMSD.sdtype } })*@
}
else
{

View File

@ -0,0 +1,269 @@
@model NP.Model.VMLect
<form id="mform" method="post">
<input type="hidden" id="mform_tabidx" name="tabidx" value="@Model.tabidx" />
<section class="panel panel-default clearfix devsearch" data-cleartbody="tbody1">
@*@Html.Partial("./Partial/SearchCaption")*@
<div class="table-responsive">
<table class="table b-t b-light viewtable">
<colgroup>
<col width="15%" />
<col width="35%" />
<col width="15%" />
<col width="*" />
<col />
</colgroup>
<tbody id="searchtbody">
<tr>
<th>교육종료일</th>
<td>
<div class="col-md-6">
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval) ? (DateTime?)null : Convert.ToDateTime(Model.stringval), new ViewDataDictionary { { "name", "stringval" } })
</div>
</td>
<th>교육생</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "name", "searchtype" }, { "selected", Model.searchtype }, { "valuetext", "usernamestr:이름;useridstr:ID" } })
@Html.Partial("./Partial/Text", Model.searchtext, Helpers.DicText(new NP.Model.TextDic() { Name = "searchtext", Style = "width:70%; display:inline-block;", Value = Model.searchtext, CssClass = "ff" }))
</div>
</td>
</tr>
<tr>
<th>과정명</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Text", Model.stringval2, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval2", Value = Model.stringval2 }))
</div>
</td>
<th>교육장</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "studyplace"), new ViewDataDictionary { { "name", "stringval3" }, { "selected", Model.stringval3 }, { "style", "width: 100%" }, { "df", ":교육장선택" } })
</div>
</td>
</tr>
</table>
</div>
</section>
<div style="text-align: left; border-bottom: 1px solid #ddd; padding-bottom: 5px;">
<span style="color:red; font-weight:bold;">* 온라인 교육만 해당되며, 교육장교육은 검색되지 않습니다. 교육장교육은 <u>성적처리</u> 기능을 이용해주세요.</span>
<div style="text-align:right;">
<button class="btn btn-default btn-s-xs" type="button" onclick="javascript:submit();"><i class="fa fa-search"></i></button>
</div>
</div>
<br />
<section class="panel panel-default">
<div style="padding:5px 10px; text-align:right;">
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
<a href="#" class="btn btn-primary" onclick="save(2);">출석처리</a>
<a href="#" class="btn btn-danger" onclick="save(0);">결석처리</a>
<a href="#" class="btn btn-danger" onclick="save(-1);">미입력처리</a>
</div>
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="20">No</th>
<th width="30">운영기수</th>
<th>교육장</th>
<th>과정명</th>
<th>교육생(ID)</th>
<th>교육시작일</th>
<th>교육종료일</th>
<th>집합교육출석여부</th>
<th>수료여부</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.Lects)
{
<tr>
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-usernameid="@d.usernameid" data-userno="@d.userno" data-cmino="@d.cmino" /></td>
<td>@d.rnorvt</td>
@if (d.cshape == 2)
{
<td>@d.sseq</td>
}
else
{
<td>-</td>
}
<td>@d.studyplacename</td>
<td>@d.cname</td>
<td>@d.usernameid</td>
<td>@((d.cshape == 0 && d.isrebate == 0 ? d.payoktime : d.sdate).Value.ToShortDateString())</td>
@if (d.cshape == 2)
{
if (d.estart != null && d.estart > Convert.ToDateTime("1900-01-01") && d.estart.ToShortDateString() != "0001-01-01" && d.estart >= DateTime.Now)
{
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.cmno,@d.lectno,@d.cmisno);">@d.eend.ToShortDateString()</a></td>
}
else
{
<td>@d.eend.ToShortDateString()</td>
}
}
else
{
<td>@d.edate.Value.ToShortDateString()</td>
}
<td>@d.istatusname</td>
@if (!ViewBag.IsSubAdmin96)
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("<a href=\"#\" onclick=\"viewcert({0})\">{1}</a>", d.lectno, "수료") : d.iscompletename)</td>
}
else
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename)</td>
}
</tr>
}
</tbody>
</table>
</div>
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
</section>
</form>
<div id="scdbox" class="findbox draggable regbox" style="width: 400px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">교육일정변경</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<ul id="ulScd"></ul>
<div class="findboxbtnbox" id="btnsavelect">
<a href="#" class="btn btn-primary" onclick="updateScd();">선택완료</a>
</div>
</div>
@section styles{
<style type="text/css">
</style>
}
@section scriptsHeader{
@Html.Partial("./Partial/FileScript")
@Html.Partial("./Partial/ScriptDate")
}
@section scripts{
<script>
var _authtype = 1;
var _lectno;
function viewcert(lectno) {
_lectno = lectno;
capp("/acommon/authkey", { authtype: _authtype, jobkey: lectno }, "cbauthkey");
}
function cbauthkey() {
if (capResult.code == 1000) {
@*var pop = window.open('@ViewBag.fronturl/Open/CertPrint?userno=@ViewBag.SSUserNo&authtype=' + _authtype + '&randkey=' + capResult.obj, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");*@
var pop = window.open('@ViewBag.reporturl/certification.aspx?lectno='+_lectno, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");
if (pop == null) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
var selectedcmno;
var selectedLectno;
var selectedCmisno;
function setScd() {
capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled><span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label></label>");
}
else {
if (d.quota != 0) {
if (d.remainPeople <= 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled<span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label></label>");
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
}
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
}
}
seq++;
ulScd.append(li);
});
$("input:radio[name='rdoScds']:radio[value='" + selectedCmisno + "']").prop('checked', true);
}
function openScd(cmno, lectno, cmisno) {
selectedcmno = cmno;
selectedLectno = lectno;
selectedCmisno = cmisno;
$.when(
setScd()
).done(function () {
setTimeout(function () {
bglayer();
$("#scdbox").slideDown("fast");
}, 200);
});
}
function updateScd() {
if (confirm("교육일정을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
capp("/acommon/LectScdChange", { lectno: selectedLectno, cmisno: cmisno }, "afterUpdateScd");
}
}
function afterUpdateScd() {
if (capResult.code > 0) {
msgok(1, "", true);
submit("mform", 800, true);
}
else {
msg("관리자에게 문의하세요.");
return;
}
}
var amsg;
function save(no) {
if (no == 2) { amsg = "출석"; }
else if (no == 0) { amsg = "결석"; }
else { amsg = "미입력"; }
if ($("#tbody1 tr input.autocheck:checked").length < 1) {
msg(amsg + "처리할 교육생을 선택해주세요.");
} else if (confirm("선택한 교육생을 "+amsg+"처리하시겠습니까?")) {
var userinfos ="";
var cuis="";
$.each($("#tbody1 tr input.autocheck:checked"), function (i, c) {
if ($(c).attr("data-cmino") == "" || $(c).attr("data-cmino") < 1) {
cuis += "," + $(c).attr("data-usernameid");
} else {
userinfos += "," + $(c).attr("data-cmino") + ":" + $(c).val();
}
});
userinfos = userinfos.substr(1);
cuis = cuis.substr(1);
if (cuis != "") {
msg(cuis + "교육생들은 " + amsg + "처리가 불가능합니다.");
} else {
capp("/acommon/offattscdsave", { userinfos : userinfos,istatus:no }, "cboffattscdsave");
}
}
}
function cboffattscdsave() {
if (capResult.code == 1000) {
msgf2("저장했습니다.", "submit('mform', 0, true)");
} else { msgdev(true); }
}
</script>
}

View File

@ -103,7 +103,7 @@
<td class="link text-center"><a href="#" onclick="viewrefund(@d.payno, @d.pstatus, @d.payuserno)">@d.pstatusname</a></td>
@if (d.cshape == 2 && d.estart != null && d.estart > Convert.ToDateTime("1900-01-01") && d.estart.ToShortDateString() != "0001-01-01" && d.estart >= DateTime.Now) //혼합모드라면
{
<td class="link text-center"><a href="#" onclick="jabscript: openScd(@d.lectno, @d.cmisno);">@d.estart.ToShortDateString()</a></td>
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.lectno, @d.cmisno);">@d.estart.ToShortDateString()</a></td>
}
else
{

View File

@ -34,7 +34,7 @@
<li class="@(Model.tabidx == 2 ? "active" : "")"><a href="#" onclick="gotab(2);" data-toggle="tab">진행평가</a></li>
<li class="@(Model.tabidx == 3 ? "active" : "")"><a href="#" onclick="gotab(3);" data-toggle="tab">최종평가</a></li>
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="gotab(4);" data-toggle="tab">과제</a></li>
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="gotab(5);" data-toggle="tab">토론</a></li>
@*<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="gotab(5);" data-toggle="tab">토론</a></li>*@
}
</ul>
@Html.Partial("grade" + (Model.tabidx==2 || Model.tabidx == 3 ? 2 : Model.tabidx), Model)

View File

@ -3,7 +3,7 @@
var ev = Model.Lects.FirstOrDefault() ?? new NP.Model.Lect() { };
}
<form id="mform" method="post">
@if(Model.CMEV.isoffabs == 1)
@if (Model.CMEV.isoffabs == 1)
{
<span style="padding:10px; font-weight:700; color:red;">집합교육 출석 필수강좌입니다.</span>
}
@ -12,7 +12,7 @@
<table class="table table-striped b-t b-light no-odd">
<colgroup><col style="width: 80px;display:none;" /><col style="width: 100px;" /><col /><col /><col /><col /><col /><col /><col /></colgroup>
<thead>
<tr><th style="display:none;">기준</th><th>평가항목</th><th>출석(%)</th><th>진행평가(%)</th><th>최종평가(%)</th><th>과제(%)</th><th>토론(%)</th><th>기타(%)</th><th>합계(총점)</th></tr>
<tr><th style="display:none;">기준</th><th>평가항목</th><th>진도율</th><th>진행평가(%)</th><th>최종평가(%)</th><th>과제(%)</th><th style="display:none;">토론(%)</th><th style="display:none;">기타(%)</th><th>합계(총점)</th></tr>
</thead>
<tr>
<th rowspan="2" style="display:none;">비환급</th>
@ -21,8 +21,8 @@
<td>@Model.CMEV.mid</td>
<td>@Model.CMEV.final</td>
<td>@Model.CMEV.subject</td>
<td>@Model.CMEV.discuss</td>
<td>@Model.CMEV.etc</td>
<td style="display:none;">@Model.CMEV.discuss</td>
<td style="display:none;">@Model.CMEV.etc</td>
<td>@(Model.CMEV.attend + Model.CMEV.mid + Model.CMEV.final + Model.CMEV.subject + Model.CMEV.discuss + Model.CMEV.etc )</td>
</tr>
<tr>
@ -31,8 +31,8 @@
<td>@Model.CMEV.midcut</td>
<td>@Model.CMEV.finalcut</td>
<td>@Model.CMEV.subjectcut</td>
<td>@Model.CMEV.discusscut</td>
<td>@Model.CMEV.etccut</td>
<td style="display:none;">@Model.CMEV.discusscut</td>
<td style="display:none;">@Model.CMEV.etccut</td>
<td>@Model.CMEV.cut</td>
</tr>
@if (Model.CM.isrefund == 1)
@ -44,8 +44,8 @@
<td>@Model.CMEV.midrfd</td>
<td>@Model.CMEV.finalrfd</td>
<td>@Model.CMEV.subjectrfd</td>
<td>@Model.CMEV.discussrfd</td>
<td>@Model.CMEV.etcrfd</td>
<td style="display:none;">@Model.CMEV.discussrfd</td>
<td style="display:none;">@Model.CMEV.etcrfd</td>
<td>@(Model.CMEV.attendrfd + Model.CMEV.midrfd + Model.CMEV.finalrfd + Model.CMEV.subjectrfd + Model.CMEV.discussrfd + Model.CMEV.etcrfd)</td>
</tr>
<tr>
@ -54,8 +54,8 @@
<td>@Model.CMEV.midcutrfd</td>
<td>@Model.CMEV.finalcutrfd</td>
<td>@Model.CMEV.subjectcutrfd</td>
<td>@Model.CMEV.discusscutrfd</td>
<td>@Model.CMEV.etccutrfd</td>
<td style="display:none;">@Model.CMEV.discusscutrfd</td>
<td style="display:none;">@Model.CMEV.etccutrfd</td>
<td>@Model.CMEV.cutrfd</td>
</tr>
}
@ -63,6 +63,20 @@
</section>
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교육생 평가현황<span class=""></span></strong></header>
<div class="step-content">
<div class="step-pane active form-inline">
@if (Model.CMEV.cshape != 1)
{
@Html.Partial("./Partial/Select", Model.CMinningscds, new ViewDataDictionary { { "special", "reg" }, { "name", "addstringval3" }, { "selected", Model.addstringval3 }, { "df", ":교육일정" }, { "onchange", "findme()" } })
}
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":수료여부;1:수료;0:미수료" }, { "name", "addstringval2" }, { "selected", Model.addstringval2 }, { "onchange", "findme()" } })
<label><input type="checkbox" name="addstringval4" value="1" @(Model.addstringval4 == "1" ? "checked" : "") onchange="findme()" /> 과제제출완료</label>&nbsp;&nbsp;
<label><input type="checkbox" name="addstringval5" value="1" @(Model.addstringval5 == "1" ? "checked" : "") onchange="findme()" /> 진도율조건충족</label>&nbsp;&nbsp;
<label><input type="checkbox" name="addstringval6" value="1" @(Model.addstringval6 == "1" ? "checked" : "") onchange="findme()" /> 시험기준충족</label>&nbsp;&nbsp;
@Html.Partial("./Partial/Text", Model.addstringval7, Helpers.DicText(new NP.Model.TextDic() { Name = "addstringval7", Value = Model.addstringval7, PH = "ID 또는 이름을 입력하세요.", CssClass = "ff" }))
<button class="btn btn-default btn-s-xs" type="button" onclick="javascript:findme();"><i class="fa fa-search"></i></button>
</div>
</div>
<div style="padding: 5px 10px; text-align: right;">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":전체;1:환급;0:비환급" }, { "name", "addstringval" }, { "selected", Model.addstringval }, { "style", "position: absolute; left: 0; margin-left: 50px;" + (Model.CM.isrefund == 1 ? "" : "display:none;") }, { "onchange", "findme()" } })
@Html.Partial("./Partial/sembtns", "#tbody1;" + (Model.IsAdmin ? "1;1" : "0;0") + ";1;1;0;평가안내")
@ -72,8 +86,8 @@
<a href="#" class="btn btn-primary" onclick="save();">수료확인</a>
if (!ViewBag.IsSubAdmin96)
{
<a href="#" class="btn btn-danger" onclick="save2();">강제수료처리</a>
<a href="#" class="btn btn-danger" onclick="save3();">강제수료취소</a>
<a href="#" class="btn btn-danger" onclick="save2();">수료처리</a>
<a href="#" class="btn btn-danger" onclick="save3();">수료취소</a>
}
}
&nbsp;&nbsp;&nbsp;
@ -85,22 +99,28 @@
<tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="20">No</th>
@if(Model.CMEV.cshape == 2)
{
<th width="30">운영기수</th>
}
<th>구분</th>
<th>고객사</th>
<th>교육생(ID)</th>
<th>교육시작일</th>
<th>교육종료일</th>
<th>진도율</th>
<th>진행평가(@ev.ex0cnt)</th>
<th>최종평가(@ev.ex1cnt)</th>
<th>과제(@ev.sd0cnt)</th>
<th>토론(@ev.sd1cnt)</th>
<th style="display:none;">토론(@ev.sd1cnt)</th>
<th>환산점수</th>
@if(Model.CMEV.isoffabs == 1)
{
<th>OFF출석</th>
<th>집합교육출석여부</th>
}
<th>환산점수</th>
<th>강의평가</th>
<th>수료여부</th>
<th>수료일변경</th>
@*<th>수료일변경</th>*@
</tr>
</thead>
<tbody class="data" id="tbody1">
@ -109,10 +129,29 @@
<tr>
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-userno="@d.userno" /></td>
<td>@d.rnorvt</td>
@if(Model.CMEV.cshape == 2)
{
<td>@d.sseq</td>
}
<td>@d.isrebatename</td>
<td>@d.asname</td>
<td>@d.usernameid</td>
<td>@((Model.CM.cshape == 0 && d.isrebate == 0 ? d.payoktime : d.sdate).Value.ToShortDateString())</td>
@if(Model.CMEV.cshape == 2)
{
if(d.estart != null && d.estart > Convert.ToDateTime("1900-01-01") && d.estart.ToShortDateString() != "0001-01-01" && d.estart >= DateTime.Now)
{
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.lectno,@d.cmisno);">@d.eend.ToShortDateString()</a></td>
}
else
{
<td>@d.eend.ToShortDateString()</td>
}
}
else
{
<td>@d.edate.Value.ToShortDateString()</td>
}
@if (!ViewBag.IsSubAdmin96)
{
<td class="link text-center"><a onclick="viewatt(@d.lectno)" href="#">@d.attrate %</a></td>
@ -124,16 +163,17 @@
<td>@( d.ex0cnt < 1 ? "-" : d.ex0lectcnt < 1 && d.ex0cnt > 0 ? "미제출" : d.ex0lectpoint.ToString())</td>
<td>@(d.ex1cnt < 1 ? "-" :d.ex1lectcnt < 1 && d.ex1cnt > 0 ? "미제출" : d.ex1lectpoint.ToString())</td>
<td>@(d.sd0cnt < 1 ? "-" :d.sd0lectcnt < 1 && d.sd0cnt > 0 ? "미제출" : d.sd0lectpoint.ToString())</td>
<td>@( d.sd1cnt < 1 ? "-" :d.sd1lectcnt < 1 && d.sd1cnt > 0 ? "미제출" : d.sd1lectpoint.ToString())</td>
<td style="display:none;">@( d.sd1cnt < 1 ? "-" :d.sd1lectcnt < 1 && d.sd1cnt > 0 ? "미제출" : d.sd1lectpoint.ToString())</td>
<td>@(((d.apoint + d.mpoint + d.fpoint + d.spoint + d.dpoint)).ToString())</td>
@*<td>@((d.isrebate == 1 && Model.CMEV.midrfd < 1) || (d.isrebate == 0 && Model.CMEV.mid < 1) ? "-" : d.ex0cnt < 1 ? "-" : d.ex0lectcnt < 1 && d.ex0cnt > 0 ? "미제출" : d.ex0lectpoint.ToString())</td>
<td>@((d.isrebate == 1 && Model.CMEV.finalrfd < 1) || (d.isrebate == 0 && Model.CMEV.final < 1) ? "-" : d.ex1cnt < 1 ? "-" : d.ex1lectcnt < 1 && d.ex1cnt > 0 ? "미제출" : d.ex1lectpoint.ToString())</td>
<td>@((d.isrebate == 1 && Model.CMEV.subjectrfd < 1) || (d.isrebate == 0 && Model.CMEV.subject < 1) ? "-" : d.sd0cnt < 1 ? "-" : d.sd0lectcnt < 1 && d.sd0cnt > 0 ? "미제출" : d.sd0lectpoint.ToString())</td>
<td>@((d.isrebate == 1 && Model.CMEV.discussrfd < 1) || (d.isrebate == 0 && Model.CMEV.discuss < 1) ? "-" : d.sd1cnt < 1 ? "-" : d.sd1lectcnt < 1 && d.sd1cnt > 0 ? "미제출" : d.sd1lectpoint.ToString())</td>*@
<td>@((d.isrebate == 1 && Model.CMEV.finalrfd < 1) || (d.isrebate == 0 && Model.CMEV.final < 1) ? "-" : d.ex1cnt < 1 ? "-" : d.ex1lectcnt < 1 && d.ex1cnt > 0 ? "미제출" : d.ex1lectpoint.ToString())</td>
<td>@((d.isrebate == 1 && Model.CMEV.subjectrfd < 1) || (d.isrebate == 0 && Model.CMEV.subject < 1) ? "-" : d.sd0cnt < 1 ? "-" : d.sd0lectcnt < 1 && d.sd0cnt > 0 ? "미제출" : d.sd0lectpoint.ToString())</td>
<td>@((d.isrebate == 1 && Model.CMEV.discussrfd < 1) || (d.isrebate == 0 && Model.CMEV.discuss < 1) ? "-" : d.sd1cnt < 1 ? "-" : d.sd1lectcnt < 1 && d.sd1cnt > 0 ? "미제출" : d.sd1lectpoint.ToString())</td>*@
@if (Model.CMEV.isoffabs == 1)
{
<th>@(d.ispassat == 1 ? "O" : "X")</th>
<td class="link text-center"><a href="#" onclick="save4();">@d.istatusname</a></td>
}
<td>@(((d.apoint + d.mpoint + d.fpoint + d.spoint + d.dpoint)).ToString())</td>
<td>@(d.rs0lectcnt) / @(d.rs0cnt)</td>
@if (!ViewBag.IsSubAdmin96)
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("<a href=\"#\" onclick=\"viewcert({0})\">{1}</a>", d.lectno, "수료") : d.iscompletename)</td>
@ -142,13 +182,14 @@
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename)</td>
}
<td><a style="@(d.iscomplete == 1 ? "":"display:none;")" href="#" class="btn btn-select btn-xxs" onclick="changecompt('@(d.completetime != null ? d.completetime.Value.ToString("yyyy-MM-dd") : "0001-01-01")','@d.username','@d.userid',@d.lectno,'@d.cshape')">변경</a></td>
@*<td><a style="@(d.iscomplete == 1 ? "":"display:none;")" href="#" class="btn btn-select btn-xxs" onclick="changecompt('@(d.completetime != null ? d.completetime.Value.ToString("yyyy-MM-dd") : "0001-01-01")','@d.username','@d.userid',@d.lectno,'@d.cshape')">변경</a></td>*@
</tr>
}
</tbody>
</table>
</div>
</section>
@Html.Partial("./Partial/dform", Model)
</form>
<div id="thisbox" class="findbox draggable regbox" style="width: 600px; z-index: 1041; top: 30%; left:30%; overflow: auto;">
@ -163,6 +204,80 @@
</div>
<br /><br />
</div>
<div id="scdbox" class="findbox draggable regbox" style="width: 400px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">교육일정변경</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<ul id="ulScd"></ul>
<div class="findboxbtnbox" id="btnsavelect">
<a href="#" class="btn btn-primary" onclick="updateScd();">선택완료</a>
</div>
</div>
<div id="thisbox2" class="findbox draggable regbox" style="width: 800px; z-index: 1041; top: 60px; bottom: 30px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">OFF출결관리</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<br />
<table class="regtable">
<colgroup><col width="100"/><col/></colgroup>
<tr style="display:none;">
<th>회차선택</th>
<td>
<select id="cmino" class="form-control" onchange="getoff()">
<option value="">-회차선택</option>
@foreach (var d in Model.CMInnings)
{
if (Model.CM.cshape == 2)
{
<option value="@d.cmino">@string.Format("{0}.{1}", d.iseq, d.ititle)</option>
}
else
{
<option value="@d.cmino">@string.Format("{0}.{1}({2} {3}:{4}~{5}:{6})", d.iseq, d.ititle, d.idate.ToString("yy-MM-dd"), d.ist.Substring(0, 2), d.ist.Substring(2, 2), d.iet.Substring(0, 2), d.iet.Substring(2, 2))</option>
}
}
</select>
</td>
</tr>
<tr>
<th>근거자료</th>
<td id="tdfile"></td>
</tr>
<tr>
<td colspan="2">
<select id="cmisno" class="form-control" onchange="getoff()">
<option value="">신청교육일</option>
@foreach(var d in Model.CMinningscds)
{
<option value="@d.cmisno">@d.estart.ToString("yyyy-MM-dd")</option>
}
</select>
</td>
</tr>
</table>
<br />
<section class="panel panel-default">
<div class="table-responsive">
<table class="table table-striped b-t b-light">
<colgroup><col width="50" /><col /><col /><col /><col /><col /><col /><col /></colgroup>
<thead>
<tr>
<th>No</th>
<th>고객사</th>
<th>교육생(ID)</th>
<th>입실</th>
<th>퇴실</th>
<th>미입력&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('-1')" /></th>
<th>출석&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('2')" /></th>
<th>결석&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('0')" /></th>
<th>최근수정일 {ID}</th>
</tr>
</thead>
<tbody id="tbodyoff"></tbody>
</table>
</div>
</section>
<div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="saveatt();">저장</a>
</div>
<br /><br />
</div>
<script>
var _no = 0;
@ -271,5 +386,153 @@
submit("mform", 500, true);
} else { msgadmin2(); }
}
var selectedLectno;
var selectedCmisno;
function setScd() {
capp("/acommon/GetScdForMixEdu", { cmno: @Model.CM.cmno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true)
{
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled><span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label></label>");
}
else
{
if (d.quota != 0) {
if (d.remainPeople <= 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled<span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label></label>");
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
}
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
}
}
seq++;
ulScd.append(li);
});
$("input:radio[name='rdoScds']:radio[value='" + selectedCmisno + "']").prop('checked', true);
}
function openScd(lectno, cmisno) {
selectedLectno = lectno;
selectedCmisno = cmisno;
$.when(
setScd()
).done(function () {
setTimeout(function () {
bglayer();
$("#scdbox").slideDown("fast");
},200);
});
}
function updateScd() {
if (confirm("교육일정을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
capp("/acommon/LectScdChange", { lectno: selectedLectno, cmisno: cmisno }, "afterUpdateScd");
}
}
function afterUpdateScd() {
if (capResult.code > 0) {
msgok(1, "", true);
submit("mform", 800, true);
}
else {
msg("관리자에게 문의하세요.");
return;
}
}
function save4() {
bglayer(); $("#thisbox2").slideDown("fast", function () { $("#thisbox2").scrollTop(0); });
if ($("#cmino option").length > 1) {
setv("cmino", $("#cmino option:eq(1)").val());
//setv("cmisno", $("#cmisno option:eq(1)").val());
getoff();
}
}
function getoff() {
$("#tdfile").html("");
$("#tbodyoff tr").remove();
$("input[name='attradio']:checked").prop("checked", false);
if ($("#cmino").val() != "" || $("#cmisno").val() != "") {
capp("/acommon/cminninggetforoff", { cmino: val("cmino"), cmisno: val("cmisno") }, "cbcmiget", null, null, null, true);
}
}
function cbcmiget() {
var ci = capResult.obj.ci;
setv("fgnooff", getdb(ci.fgnooff));
_fgno = ci.fgnooff;
if (ci.fileno3 > 0) {
$("#tdfile").html("<div class=\"fileitembox\"><a href=\"/aCommon/DownFile?fno=" + ci.fileno3 + "\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">" + ci.orgname3 + "</span></a>&nbsp;&nbsp;" +
"<a href=\"#\" class=\"btn_txt btn btn-xxs btn-danger\" onclick=\"javascript:fnFileDeleteNew(" + ci.fileno3 + ", this, '', true, 'cbthisfiledel()');\" title=\"삭제\">삭제</a></div>");
}
else {
$("#tdfile").html("<input type=\"file\" id=\"file2\" name=\"file2\" />");
}
$.each(capResult.obj.li, function (i, d) {
$("#tbodyoff").append("<tr data-no=\"" + d.lectno + "\" data-attorg=\"" + getdb(d.istatus) + "\">" +
"<td>" + d.rnorvt + "</td>" +
"<td>" + getdb(d.asname) + "</td>" +
"<td>" + getdb(d.username) + "(" + getdb(d.userid) + ")" + "</td>" +
"<td>" + d.stimehm + "</td>" +
"<td>" + d.etimehm + "</td>" +
"<td><input type=\"radio\" class=\"att att-1\" name=\"istatus" + d.lectno + "\" " + (isnull(d.istatus) ? "checked" : "") + " value=\"\" /></td>" +
"<td><input type=\"radio\" class=\"att att2\" name=\"istatus" + d.lectno + "\" " + (getdb(d.istatus) == "2" ? "checked" : "") + " value=\"2\" /></td>" +
"<td><input type=\"radio\" class=\"att att0\" name=\"istatus" + d.lectno + "\" " + (!isnull(d.istatus) && getdb(d.istatus) == "" || getdb(d.istatus) == "1" ? "checked" : "") + " value=\"0\" /></td>"+
"<td>" + d.udtymdhm +" {"+d.unoid+"} </td ></tr > ");
});
}
function changeatt(idx) {
$("input.att" + idx).prop("checked", true);
}
function saveatt() {
if (val("cmino") == "") { focus("cmino"); msg2("회차를 선택해주세요."); }
else if ($("#tbodyoff tr").length < 1) { msg2("저장할 출석데이터가 없습니다."); }
else if (confirm("출석데이터를 저장하시겠습니까?")) {
var data = new FormData();
data.append("cmino", val("cmino"));
if ($("#file2").length > 0 && $("#file2")[0].files.length > 0) {
data.append("file2", $("#file2")[0].files[0]);
}
var lis = "";
$.each($("#tbodyoff tr"), function (i, r) {
//if ($(r).find("input.att:checked").val() != $(r).attr("data-attorg")) {
lis += ";" + $(r).attr("data-no") + ":" + $(r).find("input.att:checked").val();
//}
});
//if (lis == "") {
// msg2("저장했습니다.");
//} else {
data.append("lis", lis.substr(1));
data.append("fgnooff", _fgno);
capfile("/acommon/offattsave", data, "cboffattsave", false, null, true, true);
//}
}
}
function cboffattsave() {
if (capResult.code == 1000) {
msgf2("저장했습니다.", "submit('mform', 0, true)");
} else { msgdev(true); }
}
</script>

View File

@ -214,7 +214,7 @@
"<td><input type=\"radio\" class=\"att att2\" name=\"istatus" + d.lectno + "\" " + (getdb(d.istatus) == "2" ? "checked" : "") + " value=\"2\" /></td>" +
"<td><input type=\"radio\" class=\"att att0\" name=\"istatus" + d.lectno + "\" " + (!isnull(d.istatus) && getdb(d.istatus)=="" || getdb(d.istatus) == "1" ? "checked" : "") + " value=\"0\" /></td></tr>");
});
}
}
function changeatt(idx) {
$("input.att" + idx).prop("checked", true);
}

View File

@ -1,4 +1,7 @@
@model NP.Model.VMLect
@{
int idx = 1;
}
<form id="mform" method="post">
@if (Model.CMEXes.Count() < 1)
{
@ -50,12 +53,13 @@ else
<th>응시상태</th>
<th>총점</th>
<th>관리</th>
<th>응시기록</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.LectEXes)
{
<tr>
<tr data-exno="@d.exno" data-lectno="@d.lectno">
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-userno="@d.userno" /></td>
<td>@d.rnorvt</td>
<td>@d.isrebatename</td>
@ -65,13 +69,16 @@ else
<td>@d.eseterm</td>
<td>@d.eip</td>
<td class="estate@(d.estate)">@d.estatename</td>
<td><a class="btn btn-xxs btn-select" onclick="viewex(@d.exno, @d.lectno)" href="#">@d.tpoint</a></td>
<td><a class="btn btn-xxs btn-select" onclick="viewex(@d.exno, @d.lectno,@(idx++))" href="#">@d.tpoint</a></td>
<td class="link text-center">
@if (d.estart != null)
{
<a style="color:#fff" onclick="reexam(@d.exno, @d.lectno)" href="#" class="btn btn-select btn-xxs">재응시</a>
<a style="color:#fff" onclick="reexam(@d.exno, @d.lectno)" href="#" class="btn btn-select btn-xxs">재응시</a>
}
</td>
<td class="link text-center">
<a style="color:#fff" onclick="viewreexam(@d.exno, @d.lectno)" href="#" class="btn btn-select btn-xxs">조회</a>
</td>
</tr>
}
</tbody>
@ -113,7 +120,27 @@ else
<br /><br />
<div class="botfixempty">&nbsp;</div>
<div style="position: fixed; bottom: 30px; left: 200px; width: 800px; height: 50px; background-color: #fff; text-align: center;">
<a href="#" class="btn btn-default btn-xs closethisbox" data-click="checkclose()">닫기</a></div>
<a href="#" id="btnpre" class="btn btn-info btn-xs" onclick="gopage(-1)">◀이전</a>
<a href="#" id="btnnext" class="btn btn-info btn-xs" onclick="gopage(1)">다음▶</a>
<a href="#" class="btn btn-default btn-xs closethisbox" data-click="checkclose()">닫기</a>
</div>
</div>
<div id="thisbox2" class="findbox draggable regbox" style="width: 600px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">응시기록확인</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<table class="regtable">
<colgroup><col style="width:10%" /><col/><col /><col /><col /> </colgroup>
<thead>
<tr>
<th>No</th>
<th>응시일자</th>
<th>제출일자</th>
<th>경과시간</th>
<th>IP</th>
</tr>
</thead>
<tbody id="tbody2">
</tbody>
</table>
</div>
<style type="text/css">
td.estate0{background-color: #ffd7bb !important; color: red;}
@ -153,6 +180,23 @@ else
function findme() {
bglayer(); submit();
}
var _saveidx = 0;
function gopage(idx) {
if (idx != 0) {
_saveidx = idx;
hidelayermsg(true);
getexs(true);
}
}
var _isprenext = false;
function getexs(isprenext) {
_isprenext = isprenext;
if (isprenext) {
$("#tbody1 tr").remove();
capp("/acommon/lectexes", { cmno: @Model.CM.cmno, exno: $("#addstringval").val(), isrebate: valnull("addstringval2"), sdstate: valnull("addstringval3") }, "cblectexes", null, null, null, true);
}
}
function changeex(s) {
$("tr.extr").addClass("hidden");
$("tr.ex" + ($(s).find("option").index($(s).find("option:selected")) + 1)).removeClass("hidden");
@ -161,7 +205,7 @@ else
}
function cblectexes() {
$.each(capResult.obj, function (i, d) {
$("#tbody1").append(("<tr>" +
$("#tbody1").append(("<tr data-exno=\"{12}\" data-lectno=\"{0}\">" +
"<td><input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" data-userno=\"{1}\" /></td>" +
"<td>{2}</td>" +
"<td>{3}</td>" +
@ -171,13 +215,17 @@ else
"<td>{8}</td>" +
"<td>{9}</td>" +
"<td class=\"estate{10}\">{11}</td>" +
"<td><a class=\"btn btn-xxs btn-select\" onclick =\"viewex({12}, {0})\" href=\"#\">{13}</a></td>" +
"<td><a class=\"btn btn-xxs btn-select\" onclick =\"viewex({12}, {0},{15})\" href=\"#\">{13}</a></td>" +
"<td class=\"link text-center\">{14}</td>" +
"<td class=\"link text-center\"><a style=\"color:#fff;\" onclick=\"viewreexam({12},{0})\" href=\"#\" class=\"btn btn-select btn-xxs\">조회</a></td>" +
"</tr>").format(d.lectno, d.userno, d.rnorvt, d.isrebatename, getdb(d.asname)
, d.usernameid, d.estartymdhm, getdb(d.eend) == "" ? "" : "({0})".format(d.eendymdhm), d.eseterm, getdb(d.eip)
, d.estate, d.estatename, d.exno, d.tpoint
, (getdb(d.estart) != "" && getdb(d.eend) == "") ? ("<a style=\"color:#fff;\" onclick=\"reexam({12}, {0})\" href=\"#\" class=\"btn btn-select btn-xxs\">재응시</a>") : ""));
, (getdb(d.estart) != "") ? ("<a style=\"color:#fff;\" onclick=\"reexam({12}, {0})\" href=\"#\" class=\"btn btn-select btn-xxs\">재응시</a>") : "",(i+1)));
});
if (_isprenext) {
viewex($("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-exno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-lectno"), _ridx + _saveidx);
}
}
function reexam(exno, lectno) {
capp("/acommon/reexam", { exno: exno, lectno: lectno }, "cbreexam");
@ -188,11 +236,29 @@ else
submit("mform", 500);
}
}
function viewreexam(exno, lectno) {
capp("/acommon/reexamlog", { exno: exno, lectno: lectno }, "cbviewreexam");
}
function cbviewreexam() {
$("#tbody2 tr").remove();
if (capResult.obj.length > 0) {
$.each(capResult.obj, function (i, d) {
$("#tbody2").append("<tr><td style=\"text-align:center;\">" + d.rnorvt + "</td><td>" + d.estartymdhm + "</td><td>" + (d.eend == null ? "" : d.eendymdhm) + "</td><td>" + d.eseterm + "</td><td>" + d.eip + "</td></tr>");
});
} else {
$("#tbody2").append("<tr><td colspan=\"5\" style=\"text-align:center; font-weight:bold;\">- 재응시 이력이 없습니다.</td></tr>");
}
setTimeout(function () {
bglayer(); $("#thisbox2").slideDown("fast", function () { $("#thisbox2").scrollTop(0); });
}, 10);
}
var _exno = 0;
var _lectno = 0;
function viewex(exno, lectno) {
var _ridx = 0;
function viewex(exno, lectno,ridx) {
_exno = exno;
_lectno = lectno;
_ridx = ridx;
$("#exdata tr").remove();
capp("/acommon/lectex", { lectno: lectno, exno: exno }, "cblectex");
}
@ -282,8 +348,18 @@ else
}
});
$("#exdata").append(html);
$("#btnpre,#btnnext").show();
if (_ridx == 1) {
$("#btnpre").hide();
}
if (_ridx == $("#tbody1 tr").length) {
$("#btnnext").hide();
}
setTimeout(function () {
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
bglayer2(false);
}, 10);
}
function checkclose() {

View File

@ -0,0 +1,134 @@
@model NP.Model.VMLect
<form id="mform" method="post">
<input type="hidden" id="mform_tabidx" name="tabidx" value="@Model.tabidx" />
<section class="panel panel-default clearfix devsearch" data-cleartbody="tbody1">
@*@Html.Partial("./Partial/SearchCaption")*@
<div class="table-responsive">
<table class="table b-t b-light viewtable">
<colgroup>
<col width="15%" />
<col width="35%" />
<col width="15%" />
<col width="*" />
<col />
</colgroup>
<tbody id="searchtbody">
<tr>
<th>교육종료일</th>
<td>
<div class="col-md-6">
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval) ? (DateTime?)null : Convert.ToDateTime(Model.stringval), new ViewDataDictionary { { "name", "stringval" } })
</div>
</td>
<th>교육유형</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":전체;2:온라인교육;1:교육장교육" }, { "name", "stringval2" }, { "selected", Model.stringval2 } })
</div>
</td>
</tr>
<tr>
<th>과정명</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Text", Model.stringval3, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval3", Value = Model.stringval3 }))
</div>
</td>
<th>수료여부</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":수료여부;0:미수료;1:수료" }, { "name", "stringval4" }, { "selected", Model.stringval4 } })
</div>
</td>
</tr>
<tr>
<th>교육장</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "studyplace"), new ViewDataDictionary { { "name", "stringval5" }, { "selected", Model.stringval5 }, { "style", "width: 100%" }, { "df", ":교육장선택" } })
</div>
</td>
<th>교육생</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "name", "stringval6" }, { "selected", Model.stringval6 }, { "valuetext", "usernamestr:이름;useridstr:ID" } })
@Html.Partial("./Partial/Text", Model.stringval7, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval7", Style = "width:70%; display:inline-block;", Value = Model.stringval7, CssClass = "ff" }))
</div>
</td>
</tr>
<tr>
<th>교육기간</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval8) ? (DateTime?)null : Convert.ToDateTime(Model.stringval8), new ViewDataDictionary { { "name", "stringval8" } }) ~ @Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval9) ? (DateTime?)null : Convert.ToDateTime(Model.stringval9), new ViewDataDictionary { { "name", "stringval9" } })
</div>
</td>
<th>고객사</th>
<td>
<div class="col-md-12">
@Html.Partial("./Partial/Text", Model.stringval10, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval10", Style = "width:70%; display:inline-block;", Value = Model.stringval10, CssClass = "ff" }))
</div>
</td>
</tr>
</table>
</div>
</section>
<div style="text-align: right; border-bottom: 1px solid #ddd; padding-bottom: 5px;">
<button class="btn btn-default btn-s-xs" type="button" onclick="javascript:submit();"><i class="fa fa-search"></i></button>
</div><br />
<ul class="pagination pagination-md">
@if (ViewBag.IsSubAdmin96)
{
<li class="@(Model.tabidx == 0 ? "active" : "")"><a href="#" onclick="gotab(0);" data-toggle="tab">종합</a></li>
<li class="@(Model.tabidx == 2 ? "active" : "")"><a href="#" onclick="gotab(2);" data-toggle="tab">진행평가</a></li>
<li class="@(Model.tabidx == 3 ? "active" : "")"><a href="#" onclick="gotab(3);" data-toggle="tab">최종평가</a></li>
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="gotab(4);" data-toggle="tab">과제</a></li>
}
else if (ViewBag.IsSubAdmin97)
{
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="gotab(4);" data-toggle="tab">과제</a></li>
}
else
{
<li class="@(Model.tabidx == 0 ? "active" : "")"><a href="#" onclick="gotab(0);" data-toggle="tab">종합</a></li>
<li class="@(Model.tabidx == 2 ? "active" : "")"><a href="#" onclick="gotab(2);" data-toggle="tab">진행평가</a></li>
<li class="@(Model.tabidx == 3 ? "active" : "")"><a href="#" onclick="gotab(3);" data-toggle="tab">최종평가</a></li>
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="gotab(4);" data-toggle="tab">과제</a></li>
}
</ul>
@Html.Partial("gradeall" + (Model.tabidx == 2 || Model.tabidx == 3 ? 2 : Model.tabidx), Model)
</form>
@section styles{
<style type="text/css">
#bglayer2 {
display: block;
}
#mform2 {
display: none;
}
</style>
}
@section scriptsHeader{
@Html.Partial("./Partial/semscript")
@Html.Partial("./Partial/FileScript")
@Html.Partial("./Partial/ScriptDate")
}
@section scripts{
<script>
function gotab(idx) {
if (idx != @Model.tabidx) {
setv("mform_tabidx", idx);
bglayer();
$("#mform").attr("action", "/croom/gradeall").submit();
}
}
$(window).on("load", function () {
$("#mform2").show();
$("#bglayer2").hide();
});
</script>
}

View File

@ -0,0 +1,437 @@
@model NP.Model.VMLect
@{
}
<form id="mform2" method="post" action="/croom/gradeall">
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교육생 평가현황<span class=""></span></strong></header>
<div style="padding: 5px 10px; text-align: right;">
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
@Html.Partial("./Partial/sembtns", "#tbody1;" + (Model.IsAdmin ? "1;1" : "0;0") + ";1;1;0;평가안내")
<a href="#" onclick="javascript:exceldown('mform', '/croom/gradeall', 'tbody1', '성적처리전체');" class="btn btn-s-xs btn-success" style="margin-left: 5px;">엑셀다운로드</a>
@if (Model.IsAdmin)
{
<a href="#" class="btn btn-primary" onclick="save();">수료확인</a>
if (!ViewBag.IsSubAdmin96)
{
<a href="#" class="btn btn-danger" onclick="save2();">수료처리</a>
<a href="#" class="btn btn-danger" onclick="save3();">수료취소</a>
}
}
&nbsp;&nbsp;&nbsp;
</div>
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="20">No</th>
<th width="30">운영기수</th>
<th>구분</th>
<th>고객사</th>
<th>교육장</th>
<th>과정명</th>
<th>교육생(ID)</th>
<th>교육시작일</th>
<th>교육종료일</th>
<th>진도율</th>
<th>진행평가</th>
<th>최종평가</th>
<th>과제</th>
<th style="display:none;">토론</th>
<th>환산점수</th>
<th>집합교육출석여부</th>
<th>강의평가</th>
<th>수료여부</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.Lects)
{
<tr>
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-userno="@d.userno" /></td>
<td>@d.rnorvt</td>
@if(d.cshape == 2)
{
<td>@d.sseq</td>
}
else
{
<td>-</td>
}
<td>@d.isrebatename</td>
<td>@d.asname</td>
<td>@d.studyplacename</td>
<td>@d.cname</td>
<td>@d.usernameid</td>
<td>@((d.cshape == 0 && d.isrebate == 0 ? d.payoktime : d.sdate).Value.ToShortDateString())</td>
@if(d.cshape == 2)
{
if(d.estart != null && d.estart > Convert.ToDateTime("1900-01-01") && d.estart.ToShortDateString() != "0001-01-01" && d.estart >= DateTime.Now)
{
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.cmno,@d.lectno,@d.cmisno);">@d.eend.ToShortDateString()</a></td>
}
else
{
<td>@d.eend.ToShortDateString()</td>
}
}
else
{
<td>@d.edate.Value.ToShortDateString()</td>
}
@if (!ViewBag.IsSubAdmin96)
{
<td class="link text-center"><a onclick="viewatt(@d.lectno)" href="#">@d.attrate %</a></td>
}
else
{
<td class="link text-center">@d.attrate %</td>
}
<td>@( d.ex0cnt < 1 ? "-" : d.ex0lectcnt < 1 && d.ex0cnt > 0 ? "미제출" : d.ex0lectpoint.ToString())</td>
<td>@(d.ex1cnt < 1 ? "-" :d.ex1lectcnt < 1 && d.ex1cnt > 0 ? "미제출" : d.ex1lectpoint.ToString())</td>
<td>@(d.sd0cnt < 1 ? "-" :d.sd0lectcnt < 1 && d.sd0cnt > 0 ? "미제출" : d.sd0lectpoint.ToString())</td>
<td style="display:none;">@( d.sd1cnt < 1 ? "-" :d.sd1lectcnt < 1 && d.sd1cnt > 0 ? "미제출" : d.sd1lectpoint.ToString())</td>
<td>@(((d.apoint + d.mpoint + d.fpoint + d.spoint + d.dpoint)).ToString())</td>
@if (d.isoffabs == 1)
{
<td class="link text-center"><a href="#" onclick="save4(@d.cmno,@d.lectno);">@d.istatusname</a></td>
}else{
<td class="text-center">-</td>
}
<td>@(d.rs0lectcnt) / @(d.rs0cnt)</td>
@if (!ViewBag.IsSubAdmin96)
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("<a href=\"#\" onclick=\"viewcert({0})\">{1}</a>", d.lectno, "수료") : d.iscompletename)</td>
}
else
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename)</td>
}
</tr>
}
</tbody>
</table>
</div>
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
</section>
</form>
<div id="scdbox" class="findbox draggable regbox" style="width: 400px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">교육일정변경</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<ul id="ulScd"></ul>
<div class="findboxbtnbox" id="btnsavelect">
<a href="#" class="btn btn-primary" onclick="updateScd();">선택완료</a>
</div>
</div>
<div id="thisbox2" class="findbox draggable regbox" style="width: 800px; z-index: 1041; top: 60px; bottom: 30px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">OFF출결관리</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<br />
<table class="regtable">
<colgroup><col width="100"/><col/></colgroup>
<tr style="display:none;">
<th>회차선택</th>
<td>
<select id="cmino" class="form-control" onchange="getoff()">
<option value="">-회차선택</option>
</select>
</td>
</tr>
<tr>
<th>근거자료</th>
<td id="tdfile"></td>
</tr>
<tr>
<td colspan="2">
<select id="cmisno" class="form-control" onchange="getoff()">
<option value="">신청교육일</option>
@*@foreach(var d in Model.CMinningscds)
{
<option value="@d.cmisno">@d.estart.ToString("yyyy-MM-dd")</option>
}*@
</select>
</td>
</tr>
</table>
<br />
<section class="panel panel-default">
<div class="table-responsive">
<table class="table table-striped b-t b-light">
<colgroup><col width="50" /><col /><col /><col /><col /><col /><col /><col /></colgroup>
<thead>
<tr>
<th>No</th>
<th>고객사</th>
<th>교육생(ID)</th>
<th>입실</th>
<th>퇴실</th>
<th>미입력&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('-1')" /></th>
<th>출석&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('2')" /></th>
<th>결석&nbsp;&nbsp;<input type="radio" name="attradio" onchange="changeatt('0')" /></th>
<th>최근수정일 {ID}</th>
</tr>
</thead>
<tbody id="tbodyoff"></tbody>
</table>
</div>
</section>
<div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="saveatt();">저장</a>
</div>
<br /><br />
</div>
<script>
var _no = 0;
function viewatt(no) {
_no = no;
showramemainlayer("/croom/atts?longval=" + no);
}
function save() {
var lectnos = "";
$.each($("#tbody1 tr td input.autocheck:checked"), function () {
lectnos += "," + $(this).val();
});
if (lectnos == "") {
msg("수료처리할 대상자를 선택해주세요.");
} else if (confirm("선택한 대상자를 수료처리하시겠습니까?")) {
capp("/acommon/lectcomplete", { lectnos: lectnos.substr(1), type: 'calc' }, "cbsave");
}
}
function cbsave() {
if (capResult.code == 1000) {
msgf(capResult.obj.completecount + "건을 수료, " + capResult.obj.cancelcount + "건을 미수료 처리했습니다.", "submit('mform', 0, true)");
} else {
msgdev();
}
}
function save2() {
var lectnos = "";
$.each($("#tbody1 tr td input.autocheck:checked"), function () {
lectnos += "," + $(this).val();
});
if (lectnos == "") {
msg("강제수료처리할 대상자를 선택해주세요.");
} else if (confirm("선택한 대상자를 강제 수료처리하시겠습니까?")) {
capp("/acommon/lectcomplete", { lectnos: lectnos.substr(1), type: 'abs' }, "cbsave2");
}
}
function cbsave2() {
if (capResult.code == 1000) {
msgf(capResult.obj + "건을 강제 수료 처리했습니다.", "submit('mform', 0, true)");
} else {
msgdev();
}
}
function save3() {
var lectnos = "";
$.each($("#tbody1 tr td input.autocheck:checked"), function () {
lectnos += "," + $(this).val();
});
if (lectnos == "") {
msg("강제수료취소할 대상자를 선택해주세요.");
} else if (confirm("선택한 대상자를 강제 수료취소하시겠습니까?")) {
capp("/acommon/lectcompletecancel", { lectnos: lectnos.substr(1) }, "cbsave3");
}
}
function cbsave3() {
if (capResult.code == 1000) {
msgf(capResult.obj.cancelcount + "건을 강제 수료 취소했습니다.", "submit('mform', 0, true)");
} else {
msgdev();
}
}
var _authtype = 1;
var _lectno;
function viewcert(lectno) {
_lectno = lectno;
capp("/acommon/authkey", { authtype: _authtype, jobkey: lectno }, "cbauthkey");
}
function cbauthkey() {
if (capResult.code == 1000) {
@*var pop = window.open('@ViewBag.fronturl/Open/CertPrint?userno=@ViewBag.SSUserNo&authtype=' + _authtype + '&randkey=' + capResult.obj, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");*@
var pop = window.open('@ViewBag.reporturl/certification.aspx?lectno='+_lectno, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");
if (pop == null) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
var selectedcmno;
var selectedLectno;
var selectedCmisno;
function setScd() {
capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true)
{
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled><span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label></label>");
}
else
{
if (d.quota != 0) {
if (d.remainPeople <= 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled<span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label></label>");
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
}
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
}
}
seq++;
ulScd.append(li);
});
$("input:radio[name='rdoScds']:radio[value='" + selectedCmisno + "']").prop('checked', true);
}
function openScd(cmno, lectno, cmisno) {
selectedcmno = cmno;
selectedLectno = lectno;
selectedCmisno = cmisno;
$.when(
setScd()
).done(function () {
setTimeout(function () {
bglayer();
$("#scdbox").slideDown("fast");
},200);
});
}
function updateScd() {
if (confirm("교육일정을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
capp("/acommon/LectScdChange", { lectno: selectedLectno, cmisno: cmisno }, "afterUpdateScd");
}
}
function afterUpdateScd() {
if (capResult.code > 0) {
msgok(1, "", true);
submit("mform", 800,true);
}
else {
msg("관리자에게 문의하세요.");
return;
}
}
var cmicmno;
var cmilectno;
function setcmis(){
capp("/acommon/GetCmiForMixEdu", { cmno: cmicmno }, "renderCmi", null, null, null, true);
}
function renderCmi() {
var cmi = capResult.obj.cmi;
$("#cmino").children('option:not(:first)').remove();
$("#cmisno").children('option:not(:first)').remove();
$.each(capResult.obj.cmi, function (i, d) {
if (d.cshape == 2) {
$("#cmino").append("<option value='" + d.cmino + "'>" + d.iseq + "." + getdb(d.ititle) + "</option>");
} else {
$("#cmino").append("<option value='" + d.cmino + "'>" + d.iseq + "." + getdb(d.ititle) + "(" + getdb(d.idateymd2) + " "+ getdb(d.isthh)+":"+getdb(d.istmm)+"~"+getdb(d.iethh)+":"+getdb(d.ietmm)+")</option>");
}
});
var cmis = capResult.obj.cmis;
$.each(capResult.obj.cmis, function (i,d) {
$("#cmisno").append("<option value='" + d.cmisno + "'>" + d.estartShortDateString + "</option>");
});
if ($("#cmino option").length > 1) {
setv("cmino", $("#cmino option:eq(1)").val());
getoff();
}
}
function save4(cmno,lectno) {
cmicmno = cmno;
cmilectno = lectno;
bglayer(); $("#thisbox2").slideDown("fast", function () { $("#thisbox2").scrollTop(0); });
if (cmno != "" && cmno > 0) {
setcmis();
}
}
function getoff() {
$("#tdfile").html("");
$("#tbodyoff tr").remove();
$("input[name='attradio']:checked").prop("checked", false);
if ($("#cmino").val() != "" || $("#cmisno").val() != "") {
capp("/acommon/cminninggetforoff", { cmino: val("cmino"), cmisno: val("cmisno") }, "cbcmiget", null, null, null, true);
}
}
function cbcmiget() {
var ci = capResult.obj.ci;
setv("fgnooff", getdb(ci.fgnooff));
_fgno = ci.fgnooff;
if (ci.fileno3 > 0) {
$("#tdfile").html("<div class=\"fileitembox\"><a href=\"/aCommon/DownFile?fno=" + ci.fileno3 + "\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">" + ci.orgname3 + "</span></a>&nbsp;&nbsp;" +
"<a href=\"#\" class=\"btn_txt btn btn-xxs btn-danger\" onclick=\"javascript:fnFileDeleteNew(" + ci.fileno3 + ", this, '', true, 'cbthisfiledel()');\" title=\"삭제\">삭제</a></div>");
}
else {
$("#tdfile").html("<input type=\"file\" id=\"file2\" name=\"file2\" />");
}
$.each(capResult.obj.li, function (i, d) {
$("#tbodyoff").append("<tr data-no=\"" + d.lectno + "\" data-attorg=\"" + getdb(d.istatus) + "\">" +
"<td>" + d.rnorvt + "</td>" +
"<td>" + getdb(d.asname) + "</td>" +
"<td>" + getdb(d.username) + "(" + getdb(d.userid) + ")" + "</td>" +
"<td>" + d.stimehm + "</td>" +
"<td>" + d.etimehm + "</td>" +
"<td><input type=\"radio\" class=\"att att-1\" name=\"istatus" + d.lectno + "\" " + (isnull(d.istatus) ? "checked" : "") + " value=\"\" /></td>" +
"<td><input type=\"radio\" class=\"att att2\" name=\"istatus" + d.lectno + "\" " + (getdb(d.istatus) == "2" ? "checked" : "") + " value=\"2\" /></td>" +
"<td><input type=\"radio\" class=\"att att0\" name=\"istatus" + d.lectno + "\" " + (!isnull(d.istatus) && getdb(d.istatus) == "" || getdb(d.istatus) == "1" ? "checked" : "") + " value=\"0\" /></td>"+
"<td>" + d.udtymdhm +" {"+d.unoid+"} </td ></tr > ");
});
}
function changeatt(idx) {
$("input.att" + idx).prop("checked", true);
}
function saveatt() {
if (val("cmino") == "") { focus("cmino"); msg2("회차를 선택해주세요."); }
else if ($("#tbodyoff tr").length < 1) { msg2("저장할 출석데이터가 없습니다."); }
else if (confirm("출석데이터를 저장하시겠습니까?")) {
var data = new FormData();
data.append("cmino", val("cmino"));
if ($("#file2").length > 0 && $("#file2")[0].files.length > 0) {
data.append("file2", $("#file2")[0].files[0]);
}
var lis = "";
$.each($("#tbodyoff tr"), function (i, r) {
//if ($(r).find("input.att:checked").val() != $(r).attr("data-attorg")) {
lis += ";" + $(r).attr("data-no") + ":" + $(r).find("input.att:checked").val();
//}
});
//if (lis == "") {
// msg2("저장했습니다.");
//} else {
data.append("lis", lis.substr(1));
data.append("fgnooff", _fgno);
capfile("/acommon/offattsave", data, "cboffattsave", false, null, true, true);
//}
}
}
function cboffattsave() {
if (capResult.code == 1000) {
msgf2("저장했습니다.", "submit('mform', 0, true)");
} else { msgdev(true); }
}
</script>

View File

@ -0,0 +1,446 @@
@model NP.Model.VMLect
@{
int idx = 1;
}
<form id="mform2" method="post">
<br />
<section class="panel panel-default">
<div style="padding: 10px 10px">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-응시상태;2:응시완료;1:응시중;0:미응시" }, { "name", "addstringval2" }, { "selected", Model.addstringval2 }, { "onchange", "submit()" } })
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
@Html.Partial("./Partial/sembtns", "#tbody1;" + (Model.IsAdmin ? "1;1;1" : "0;0;0") + ";1;right;평가안내")
</div>
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="20">No</th>
<th width="20">운영기수</th>
<th>구분</th>
<th>고객사</th>
<th>교육장</th>
<th>과정명</th>
<th>시험명</th>
<th>교육생(ID)</th>
<th>교육시작일</th>
<th>교육종료일</th>
<th>응시일자<br />(제출일자)</th>
<th>경과시간</th>
<th>IP</th>
<th width="30">응시상태</th>
<th>총점</th>
<th>관리</th>
<th>수료여부</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.LectEXes)
{
<tr data-exno="@d.exno" data-lectno="@d.lectno">
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-userno="@d.userno" /></td>
<td>@d.rnorvt</td>
@if (d.cshape == 2)
{
<td>@d.sseq</td>
}
else
{
<td>-</td>
}
<td>@d.isrebatename</td>
<td>@d.asname</td>
<td>@d.studyplacename</td>
<td>@d.cname</td>
<td>@d.exname</td>
<td>@d.usernameid</td>
<td>@((d.cshape == 0 && d.isrebate == 0 ? d.payoktime : d.sdate).Value.ToShortDateString())</td>
@if (d.cshape == 2)
{
if (d.lestart != null && d.lestart > Convert.ToDateTime("1900-01-01") && d.lestart.ToShortDateString() != "0001-01-01" && d.lestart >= DateTime.Now)
{
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.cmno,@d.lectno,@d.cmisno);">@d.leend.ToShortDateString()</a></td>
}
else
{
<td>@d.leend.ToShortDateString()</td>
}
}
else
{
<td>@d.edate.Value.ToShortDateString()</td>
}
<td>@(d.estartymdhm)<br />@(d.eend == null ? "": string.Format("({0})", d.eendymdhm))</td>
<td>@d.eseterm</td>
<td>@d.eip</td>
<td class="estate@(d.estate)">@d.estatename</td>
<td><a class="btn btn-xxs btn-select" onclick="viewex(@d.exno, @d.lectno,@(idx++))" href="#">@d.tpoint</a></td>
<td class="link text-center">
@if (d.estart != null)
{
<a style="color:#fff" onclick="reexam(@d.exno, @d.lectno)" href="#" class="btn btn-select btn-xxs">재응시</a>
}
</td>
@if (!ViewBag.IsSubAdmin96)
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("<a href=\"#\" onclick=\"viewcert({0})\">{1}</a>", d.lectno, "수료") : d.iscompletename)</td>
}
else
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename)</td>
}
</tr>
}
</tbody>
</table>
</div>
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
</section>
</form>
<div id="scdbox" class="findbox draggable regbox" style="width: 400px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">교육일정변경</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<ul id="ulScd"></ul>
<div class="findboxbtnbox" id="btnsavelect">
<a href="#" class="btn btn-primary" onclick="updateScd();">선택완료</a>
</div>
</div>
<div id="thisbox" class="findbox draggable regbox" style="width: 800px; z-index: 1041; top: 60px; bottom: 30px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">시험 상세결과</span><a href="#" class="btn btn-default btn-xs f-r closethisbox" data-click="checkclose()">닫기</a></h4>
<br />
<h5><i class="fa fa-bars"></i> 개요</h5>
<table class="regtable" id="exsummary">
<tr>
<th>소속</th>
<th>이름(ID)</th>
<th>총점</th>
<th>객관식</th>
<th>단답형</th>
<th>서술형</th>
</tr>
<tr>
<td id="asname"></td>
<td id="usernameid"></td>
<td id="tpoint"></td>
<td id="a0point"></td>
<td id="a1point"></td>
<td id="a2point"></td>
</tr>
</table>
<br />
<h5><i class="fa fa-bars"></i> 채점결과</h5>
<div>
<table class="regtable">
<colgroup><col width="100" /><col /></colgroup>
<tbody id="exdata"></tbody>
</table>
</div>
<br /><br />
<div class="botfixempty">&nbsp;</div>
<div style="position: fixed; bottom: 30px; left: 200px; width: 800px; height: 50px; background-color: #fff; text-align: center;">
<a href="#" id="btnpre" class="btn btn-info btn-xs" onclick="nextex(-1)">◀이전</a>
<a href="#" id="btnnext" class="btn btn-info btn-xs" onclick="nextex(1)">다음▶</a>
<a href="#" class="btn btn-default btn-xs closethisbox" data-click="checkclose()">닫기</a>
</div>
</div>
<style type="text/css">
td.estate0{background-color: #ffd7bb !important; color: red;}
.tablea0{word-break: break-all; width: 100%;}
.tablea0 tr td{text-align: center;}
.tablea0 tr td.qi{text-align: left;}
.regtable tr td .tablea0 tr td {padding: 6px 5px;}
#exsummary tr td{text-align: center;}
td.qi div.imgbox.active{position: fixed; left: 10%; top: 10%; height: 80%; width: 80%; z-index: 3000; background-color: #999; text-align: center;padding-top: 10%;}
td.qi div.imgbox.active img{height: 60%; max-width: 60%;}
</style>
<script>
$(document).ready(function () {
$("tr.ex" + ($("#addstringval").find("option").index($("#addstringval").find("option:selected")) + 1)).removeClass("hidden");
$("body").on("click", "td.qi div.imgbox", function () {
$(this).toggleClass("active");
});
$("body").on("click", "td.save a.btn-danger", function () {
var input = $(this).closest("td").find("input");
if (getint(input.val()) > getint(input.attr("data-max"))) {
$(input).focus();
msg2(input.attr("data-max") + "점 이하로 입력해주세요.");
} else if (confirm("점수를 수정하시겠습니까?")) {
capp("/acommon/lectexqpoint", { exno: _exno, lectno: _lectno, eqno: input.attr("data-eqno"), cpoint: getint(input.val()) }, "cblectexqpoint", null, null, null, true);
}
});
});
var _ispointchanged = false;
function cblectexqpoint() {
if (capResult.code == 1000) {
_ispointchanged = true;
msg2("점수를 변경하였습니다(수료처리는 별도로 진행해야합니다.)");
} else {
msgdev(true);
}
}
function findme() {
bglayer(); submit();
}
function reexam(exno, lectno) {
capp("/acommon/reexam", { exno: exno, lectno: lectno }, "cbreexam");
}
function cbreexam() {
if (capResult.code == 1000) {
msg("재응시 처리했습니다.", null, null, null, true);
submit("mform", 500);
}
}
var _exno = 0;
var _lectno = 0;
var _ridx = 0;
function viewex(exno, lectno,ridx) {
_exno = exno;
_lectno = lectno;
_ridx = ridx;
$("#exdata tr").remove();
capp("/acommon/lectex", { lectno: lectno, exno: exno }, "cblectex");
}
function cblectex() {
var lectex = capResult.obj.lectex;
var lectexq = capResult.obj.lectexq;
var lectexqs = capResult.obj.lectexqs;
var qis = capResult.obj.qis;
sett("asname", getdb(lectex.asname));
sett("usernameid", getdb(lectex.usernameid))
sett("tpoint", "{0}/{1}".format(lectex.tpoint, lectex.extpoint));
var v1 = 0;
var v2 = 0;
$.each(lectexq, function (i, d) {
if (d.atype == 0) {
v1 += d.cpoint;
v2 += d.dpoint;
}
});
sett("a0point", "{0}/{1}".format(v1, v2));
v1 = 0;
v2 = 0;
$.each(lectexq, function (i, d) {
if (d.atype == 1) {
v1 += d.cpoint;
v2 += d.dpoint;
}
});
sett("a1point", "{0}/{1}".format(v1, v2));
v1 = 0;
v2 = 0;
$.each(lectexq, function (i, d) {
if (d.atype == 2) {
v1 += d.cpoint;
v2 += d.dpoint;
}
});
sett("a2point", "{0}/{1}".format(v1, v2));
var html = "";
$.each(lectexq, function (i, d) {
if (d.atype == 0) {
html += "" +
"<tr><th>문제" + (i + 1) + "</th>" +
"<td>" + d.qtext + "</td></tr>" +
"<tr><th>보기</th>" +
"<td><table class=\"tablea0\"><colgroup><col width=\"50\" /><col width=\"50\" /><col width=\"80\" /><col /></colgroup><tr><th>정답</th><th>선택</th><th>비율</th><th>보기</th></tr>";
$.each(qis, function (i2, d2) {
if (d2.qno == d.qno) {
var tqi = null;
$.each(lectexqs, function (i3, d3) {
if (d3.qno == d2.qno) {
tqi = d3;
return false;
}
});
html += "" +
"<tr><td>" + (d2.isright == 1 ? "[정답]" : "") + "</td>" +
"<td>" + (("," + getdb(d.atext) + ",").indexOf("," + d2.qino + ",") > -1 ? "[선택]" : "") + "</td>" +
"<td>[" + (tqi == null ? 0 : tqi.countselect) + "명, " + (tqi == null ? 0 : tqi.avgselect) + "%]</td>" +
"<td class=\"qi\">" + (d2.fileurl == null ? "":"<div class=\"imgbox\"><img style='max-width: 90%;' src='@Model.Files" + getdb(d2.fileurl) + "' alt='' style=\"max-width: 50%;\" /></div>") + (d2.qitext) + "</td></tr>";
}
});
html += "</table></td></tr>" +
"<tr><th>점수</th>" +
"<td class=\"save\">선다형) <input type=\"text\" data-eqno=\"" + d.eqno + "\" data-max=\"" + d.dpoint + "\" data-org=\"" + d.cpoint + "\" class=\"form-control disp-init int text-center\" maxlength\"2\" style=\"width: 100px;\" value=\""+d.cpoint+"\" /> / " + d.dpoint + "점 <a href=\"#\" class=\"btn btn-danger\">저장</a></td></tr><tr><td colspan=\"2\">&nbsp;</td></tr>";
}
else if (d.atype == 1) {
var rights = "";
$.each(qis, function (i2, d2) {
if (d2.qno == d.qno) {
rights += "," + d2.qitext;
}
});
rights = rights == "" ? "" : rights.substr(1);
html += "<tr><th>문제" + (i + 1) + "</th><td>" + d.qtext + "</td></tr>" +
"<tr><th>정답</th><td>" + rights + "</td></tr>" +
"<tr><th>응시자답안</th><td>" + getdb(d.atext) + "</td></tr>" +
"<tr><th>점수</th>" +
"<td class=\"save\">단답형) <input type=\"text\" data-eqno=\"" + d.eqno + "\" data-max=\"" + d.dpoint + "\" data-org=\"" + d.cpoint + "\" class=\"form-control disp-init int text-center\" maxlength\"2\" style=\"width: 100px;\" value=\"" + d.cpoint +"\" /> / " + d.dpoint + "점 <a href=\"#\" class=\"btn btn-danger\">저장</a></td></tr><tr><td colspan=\"2\">&nbsp;</td></tr>";
}
else if (d.atype == 2) {
html += "<tr><th>문제" + (i + 1) + "</th><td>" + d.qtext + "</td></tr>" +
"<tr><th>응시자답안</th><td>" + getdb(d.atext) + "</td></tr>" +
"<tr><th>점수</th>" +
"<td class=\"save\">서술형) <input type=\"text\" data-eqno=\"" + d.eqno + "\" data-max=\"" + d.dpoint + "\" data-org=\"" + d.cpoint + "\" class=\"form-control disp-init int text-center\" maxlength\"2\" style=\"width: 100px;\" value=\"" + d.cpoint +"\" /> / " + d.dpoint + "점 <a href=\"#\" class=\"btn btn-danger\">저장</a></td></tr><tr><td colspan=\"2\">&nbsp;</td></tr>";
}
});
$("#exdata").append(html);
$("#btnpre,#btnnext").show();
if (_ridx == 1) {
$("#btnpre").hide();
}
if (_ridx == $("#tbody1 tr").length) {
$("#btnnext").hide();
}
setTimeout(function () {
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
bglayer2(false);
}, 10);
}
function checkclose() {
//191223.kfcf-req 점수변경시 페이지 갱신 안되도록 수정
self.close();
bglayer(false);
}
var _authtype = 1;
var _lectno;
function viewcert(lectno) {
_lectno = lectno;
capp("/acommon/authkey", { authtype: _authtype, jobkey: lectno }, "cbauthkey");
}
function cbauthkey() {
if (capResult.code == 1000) {
@*var pop = window.open('@ViewBag.fronturl/Open/CertPrint?userno=@ViewBag.SSUserNo&authtype=' + _authtype + '&randkey=' + capResult.obj, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");*@
var pop = window.open('@ViewBag.reporturl/certification.aspx?lectno='+_lectno, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");
if (pop == null) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
var selectedcmno;
var selectedLectno;
var selectedCmisno;
function setScd() {
capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled><span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label></label>");
}
else {
if (d.quota != 0) {
if (d.remainPeople <= 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled<span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label></label>");
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
}
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
}
}
seq++;
ulScd.append(li);
});
$("input:radio[name='rdoScds']:radio[value='" + selectedCmisno + "']").prop('checked', true);
}
function openScd(cmno, lectno, cmisno) {
selectedcmno = cmno;
selectedLectno = lectno;
selectedCmisno = cmisno;
$.when(
setScd()
).done(function () {
setTimeout(function () {
bglayer();
$("#scdbox").slideDown("fast");
}, 200);
});
}
function updateScd() {
if (confirm("교육일정을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
capp("/acommon/LectScdChange", { lectno: selectedLectno, cmisno: cmisno }, "afterUpdateScd");
}
}
function afterUpdateScd() {
if (capResult.code > 0) {
msgok(1, "", true);
submit("mform", 800, true);
}
else {
msg("관리자에게 문의하세요.");
return;
}
}
var _saveidx = 0;
function nextex(idx) {
if (idx != 0) {
_saveidx = idx;
hidelayermsg(true);
getexs(true);
}
}
var _isprenext = false;
function getexs(isprenext) {
_isprenext = isprenext;
if (isprenext) {
$("#tbody1 tr").remove();
capp("/acommon/lectallexes", { pagenum: @((int)Model.pagenum), pagerowcount:@(Model.pagerowcount), sdstate: valnull("addstringval2"), edate: valnull("stringval"), cshape: valnull("stringval2"), cname: valnull("stringval3"), cnamestr: valnull("stringval3"), iscomplete: valnull("stringval4"), studyplace: valnull("stringval5"), searchtype: valnull("stringval6"), searchtext: valnull("stringval7"), extype: @(Model.tabidx == 2 ? 0 : 1), sdateall: valnull("stringval8"), edateall: valnull("stringval9"), asname: valnull("stringval10") }, "cblectexes", null, null, null, true);
}
}
function cblectexes() {
$.each(capResult.obj, function (i, d) {
$("#tbody1").append(("<tr data-exno=\"{12}\" data-lectno=\"{0}\">" +
"<td><input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" data-userno=\"{1}\" /></td>" +
"<td>{2}</td>" +
"<td>{16}</td>" +
"<td>{3}</td>" +
"<td>{4}</td>" +
"<td>{17}</td>" +
"<td>{18}</td>" +
"<td>{19}</td>" +
"<td>{5}</td>" +
"<td>{20}</td>" +
"{21}" +
"<td>{6}<br />{7}</td>" +
"<td>{8}</td>" +
"<td>{9}</td>" +
"<td class=\"estate{10}\">{11}</td>" +
"<td><a class=\"btn btn-xxs btn-select\" onclick =\"viewex({12}, {0},{15})\" href=\"#\">{13}</a></td>" +
"<td class=\"link text-center\">{14}</td>" +
"{22}</tr>").format(d.lectno, d.userno, d.rnorvt, d.isrebatename, getdb(d.asname)
, d.usernameid, d.estartymdhm, getdb(d.eend) == "" ? "" : "({0})".format(d.eendymdhm), d.eseterm, getdb(d.eip)
, d.estate, d.estatename, d.exno, d.tpoint
, (getdb(d.estart) != "") ? ("<a style=\"color:#fff;\" onclick=\"reexam({12}, {0})\" href=\"#\" class=\"btn btn-select btn-xxs\">재응시</a>") : "", (i + 1)
, d.cshape == 2 ? d.sseq : "-",getdb(d.studyplacename), getdb(d.cname), getdb(d.exname), d.leststr, d.leestr
, '@(!ViewBag.IsSubAdmin96)' == 'True' ? d.scomplete : d.scomplete96));
});
if (_isprenext) {
viewex($("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-exno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-lectno"), _ridx + _saveidx);
}
}
</script>

View File

@ -0,0 +1,408 @@
@model NP.Model.VMLect
@{
int idx = 1;
}
<form id="mform" method="post">
<section class="panel panel-default">
<div style="padding: 10px 10px">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-응시상태;1:제출;0:미제출" }, { "name", "addstringval2" }, { "selected", Model.addstringval2}, { "onchange", "findme()" } })
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
@Html.Partial("./Partial/sembtns", "#tbody1;" + (Model.IsAdmin ? "1;11;" : "0;0;0") + ";1;right;평가안내")
</div>
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
<th width="20">No</th>
<th>운영기수</th>
<th>교육장</th>
<th>과정명</th>
<th>교육생(ID)</th>
<th>교육시작일</th>
<th>교육종료일</th>
<th>상태</th>
<th>점수</th>
<th>첨삭</th>
<th>모사</th>
<th>최근제출일(IP)</th>
<th>최근평가일(IP)</th>
<th>수료여부</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.LectSDs)
{
<tr data-sdno="@d.sdno" data-lectno="@d.lectno">
<td><input type="checkbox" class="autocheck" value="@d.lectno" data-userno="@d.userno" /></td>
<td>@d.rnorvt</td>
@if(d.cshape== 2)
{
<td>@d.sseq</td>
}
else
{
<td>-</td>
}
<td>@d.studyplacename</td>
<td>@d.cname</td>
<td>@d.usernameid</td>
<td>@((d.cshape == 0 && d.isrebate == 0 ? d.payoktime : d.sdate).Value.ToShortDateString())</td>
@if (d.cshape == 2)
{
if (d.lestart != null && d.lestart > Convert.ToDateTime("1900-01-01") && d.lestart.ToShortDateString() != "0001-01-01" && d.lestart >= DateTime.Now)
{
<td class="link text-center"><a href="#" onclick="javascript: openScd(@d.cmno,@d.lectno,@d.cmisno);">@d.leend.ToShortDateString()</a></td>
}
else
{
<td>@d.leend.ToShortDateString()</td>
}
}
else
{
<td>@d.edate.Value.ToShortDateString()</td>
}
<td class="estate@(d.sdstate)">@d.sdstatename</td>
<td><a class="btn btn-xxs btn-select" onclick="viewsd(@d.sdno, @d.lectno, @(idx++))" href="#">@d.cpoint2</a></td>
<td>@d.feedbox</td>
<td><a class="btn btn-xxs btn-select iscopy@(d.iscopy)" onclick="viewcopy(@d.sdno, @d.lectno)" href="#">@d.copyratename</a></td>
<td>@Html.Raw(d.submittimeip)</td>
<td>@Html.Raw(d.checktimeip)</td>
@if (!ViewBag.IsSubAdmin96)
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("<a href=\"#\" onclick=\"viewcert({0})\">{1}</a>", d.lectno, "수료") : d.iscompletename)</td>
}
else
{
<td class="@(d.iscomplete == 1 ? "link text-center" : "")">@Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename)</td>
}
</tr>
}
</tbody>
</table>
</div>
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
</section>
</form>
<div id="scdbox" class="findbox draggable regbox" style="width: 400px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">교육일정변경</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<ul id="ulScd"></ul>
<div class="findboxbtnbox" id="btnsavelect">
<a href="#" class="btn btn-primary" onclick="updateScd();">선택완료</a>
</div>
</div>
<div id="thisbox" class="findbox draggable regbox" style="height: 850px; width: 800px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">개별 과제제출 내용</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<br />
<table class="regtable" id="exsummary">
<tr>
<th>제출자</th>
<td id="userinfo"></td>
</tr>
<tr>
<th>제출내용</th>
<td id="atext"></td>
</tr>
<tr>
<th>첨부파일</th>
<td id="fileinfo"></td>
</tr>
<tr>
<th>점수</th>
<td><input type="text" class="form-control int disp-init text-center" style="width: 70px;" max="3" id="cpoint" onchange="checkmax(this)" /></td>
</tr>
<tr>
<th>피드백</th>
<td><textarea class="form-control" id="feedb" style="resize: none; height: 250px;" maxlength="800"></textarea></td>
</tr>
</table>
<br /><br /><br />
<div class="text-center">
<a href="#" id="btnpre" class="btn btn-info btn-xs" onclick="save(-1)">◀이전</a>
<a href="#" class="btn btn-primary btn-xs" onclick="save(0)">저장</a>
<a href="#" id="btnnext" class="btn btn-info btn-xs" onclick="save(1)">다음▶</a>
&nbsp;&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs closethisbox">닫기</a>
</div>
<br /><br />
</div>
<style type="text/css">
td.estate0 {
background-color: #ffd7bb !important;
color: red;
}
td a.iscopy1 {
background-color: red !important;
}
.tablea0 {
word-break: break-all;
width: 100%;
}
.tablea0 tr td {
text-align: center;
}
.tablea0 tr td.qi {
text-align: left;
}
.regtable tr td .tablea0 tr td {
padding: 6px 5px;
}
/*#exsummary tr td{text-align: center;}*/
td.qi div.imgbox.active {
position: fixed;
left: 10%;
top: 10%;
height: 80%;
width: 80%;
z-index: 3000;
background-color: #999;
text-align: center;
padding-top: 10%;
}
td.qi div.imgbox.active img {
height: 60%;
max-width: 60%;
}
</style>
<script>
var ischange = false;
$(document).ready(function () {
$("body").on("click", "td.qi div.imgbox", function () {
$(this).toggleClass("active");
});
$("#cpoint,#feedb,#feedb2").on("propertychange change keyup paste input", function () {
ischange = true;
})
});
function findme() {
bglayer(); submit();
}
var _isprenext = false;
function getsds(isprenext) {
_isprenext = isprenext;
if (isprenext) {
$("#tbody1 tr").remove();
capp("/acommon/lectallsds", { pagenum: @((int)Model.pagenum), pagerowcount:@(Model.pagerowcount), sdstate: valnull("addstringval2"), edate: valnull("stringval"), cshape: valnull("stringval2"), cname: valnull("stringval3"), cnamestr: valnull("stringval3"), iscomplete: valnull("stringval4"), studyplace: valnull("stringval5"), searchtype: valnull("stringval6"), searchtext: valnull("stringval7"), sdtype: 0, sdateall: valnull("stringval8"), edateall: valnull("stringval9"), asname: valnull("stringval10") }, "cblectsds", null, null, null, true);
} else {
capp("/acommon/lectallsds", { pagenum: @((int)Model.pagenum), pagerowcount:@(Model.pagerowcount), sdstate: valnull("addstringval2"), edate: valnull("stringval"), cshape: valnull("stringval2"), cname: valnull("stringval3"), cnamestr: valnull("stringval3"), iscomplete: valnull("stringval4"), studyplace: valnull("stringval5"), searchtype: valnull("stringval6"), searchtext: valnull("stringval7"), sdtype: 0, sdateall: valnull("stringval8"), edateall: valnull("stringval9"), asname: valnull("stringval10") }, "cblectsds");
}
}
function cblectsds() {
$.each(capResult.obj, function (i, d) {
$("#tbody1").append(("<tr data-sdno=\"{8}\" data-lectno=\"{0}\">" +
"<td><input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" data-userno=\"{1}\" /></td>" +
"<td>{2}</td>" +
"<td>{16}</td>" +
"<td>{17}</td>" +
"<td>{18}</td>" +
"<td>{5}</td>" +
"<td>{19}</td>" +
"{20}"+
"<td class=\"estate{6}\">{7}</td>" +
"<td><a class=\"btn btn-xxs btn-select viewsd\" onclick=\"viewsd({8}, {0}, {15})\" href=\"#\">{9}</a></td>" +
"<td>{10}</td>" +
"<td><a class=\"btn btn-xxs btn-select iscopy{11}\" onclick=\"viewcopy({8}, {0})\" href=\"#\">{12}</a></td>" +
"<td>{13}</td>" +
"<td>{14}</td>"+
"{21}").format(d.lectno, d.userno, d.rnorvt, d.isrebatename, d.asname
, d.usernameid, d.sdstate, d.sdstatename, d.sdno, d.cpoint2
, d.feedbox, d.iscopy, d.copyratename, d.submittimeip, d.checktimeip, (i + 1), d.cshape == 2 ? d.sseq : '-', d.studyplacename
, d.cname, d.leststr, d.leestr, '@(!ViewBag.IsSubAdmin96)' == 'True' ? d.scomplete : d.scomplete96));
});
if (_isprenext) {
viewsd($("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-sdno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-lectno"), _ridx + _saveidx);
}
}
var _sdno = 0;
var _lectno = 0;
var _ridx=0;
function viewsd(sdno, lectno, ridx) {
ischange = false;
_sdno = sdno;
_lectno = lectno;
_ridx = ridx;
capp("/acommon/lectsd", { lectno: lectno, sdno: sdno }, "cblectsd");
}
function cblectsd() {
var d = capResult.obj;
$("#userinfo").text("[{0}]{1} | {2}".format(d.isrebatename, d.asname, d.usernameid));
if (getdb(d.atext) == "") {
$("#atext").html("- 미제출");
} else {
$("#atext").html(getdb(d.atext).replace(/\n/gi, "<br />"));
}
var _html = "- 제출파일 없음<br />";
if (getdb(d.fileurl) != "") {
_html = "<a href=\"/aCommon/DownFile?fno={0}&loginfo=&issubject=1\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">{1}</span></a><br />".format(d.fileno, d.orgname);
}
_html += "(모사율: {0})&nbsp;&nbsp;&nbsp;".format(d.copyratename);
$("#fileinfo").html(_html + ("<label><input id=\"iscopy\" type=\"checkbox\" " + (d.iscopy == 1 ? "checked" : "") + " /> 모사답안신고</label>"));
setv("cpoint", d.cpoint);
$("#feedb").val(d.feedb);
$("#feedb").removeAttr("readonly");
//if (getdb(d.feedb) != '') {
// $("#feedb").attr("readonly", "readonly");
//}
$("#btnpre,#btnnext").show();
if (_ridx == 1) {
$("#btnpre").hide();
}
if (_ridx == $("#tbody1 tr").length) {
$("#btnnext").hide();
}
setTimeout(function () {
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
bglayer2(false);
$("#cpoint").focus();
}, 10);
}
var _saveidx = 0;
function save(idx) {
if (idx != 0 && ischange == false) {
_saveidx = idx;
hidelayermsg2(true);
getsds(true);
} else {
if (getint($("#cpoint").val()) < 0) {
$("#cpoint").focus();
msg2("0점 이상으로 입력해주세요.");
} else if (getint($("#cpoint").val()) > getint($("#addstringval").find("option:selected").attr("data-tpoint"))) {
$("#cpoint").focus();
msg2(getint($("#addstringval").find("option:selected").attr("data-tpoint")) + "점 이하으로 입력해주세요.");
} else if (confirm("저장하시겠습니까?")) {
_saveidx = idx;
capp("/acommon/lectsdsave", { lectno: _lectno, sdno: val("addstringval"), iscopy: $("#iscopy").prop("checked") ? 1 : 0, cpoint: val("cpoint"), feedb: val("feedb") }, "cbsave", null, null, null, true);
}
}
}
function cbsave() {
if (capResult.code == 1000) {
if (_saveidx == 0) {
msg2("저장했습니다.");
//submit("mform", 500);
} else {
//리스트 갱신 후 다음 또는 이전 수강생과제 표시
msg2("저장했습니다.", null, null, null, true);
setTimeout(function () {
hidelayermsg2(true);
getsds(true);
}, 300);
}
} else {
msgdev(true);
}
}
function checkmax(p) {
if (getint($(p).val()) < 0) {
$(p).focus();
msg2("0점 이상으로 입력해주세요.");
} else if (getint($(p).val()) > getint($("#addstringval").find("option:selected").attr("data-tpoint"))) {
$(p).focus();
msg2(getint($("#addstringval").find("option:selected").attr("data-tpoint"))+"점 이하으로 입력해주세요.");
}
}
function viewcopy(sdno,lectno) {
var winl = (screen.width - 840) / 2;
var wint = (screen.height - 410) / 2;
var opt = 'height=410, width=840, top=' + wint + ', left=' + winl + ',location=no, noresizable';
window.open("http://118.219.255.225:7614/memechecker/score.html?domain=v_lectsd_list&docId="+sdno+"_"+lectno, "iscopyWin", opt);
}
var _authtype = 1;
var _lectno;
function viewcert(lectno) {
_lectno = lectno;
capp("/acommon/authkey", { authtype: _authtype, jobkey: lectno }, "cbauthkey");
}
function cbauthkey() {
if (capResult.code == 1000) {
@*var pop = window.open('@ViewBag.fronturl/Open/CertPrint?userno=@ViewBag.SSUserNo&authtype=' + _authtype + '&randkey=' + capResult.obj, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");*@
var pop = window.open('@ViewBag.reporturl/certification.aspx?lectno='+_lectno, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");
if (pop == null) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
var selectedcmno;
var selectedLectno;
var selectedCmisno;
function setScd() {
capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled><span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label></label>");
}
else {
if (d.quota != 0) {
if (d.remainPeople <= 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled<span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label></label>");
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "<label style='color: red'> (" + d.remainPeople + "명 남음)</label></label>");
}
}
}
else {
if (seq == 0) {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
else {
li.append("<label style='cursor: pointer'><input type='radio' name='rdoScds' value='" + d.cmisno + "'>" + d.scdInfoSummary + "</label>");
}
}
}
seq++;
ulScd.append(li);
});
$("input:radio[name='rdoScds']:radio[value='" + selectedCmisno + "']").prop('checked', true);
}
function openScd(cmno, lectno, cmisno) {
selectedcmno = cmno;
selectedLectno = lectno;
selectedCmisno = cmisno;
$.when(
setScd()
).done(function () {
setTimeout(function () {
bglayer();
$("#scdbox").slideDown("fast");
}, 200);
});
}
function updateScd() {
if (confirm("교육일정을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
capp("/acommon/LectScdChange", { lectno: selectedLectno, cmisno: cmisno }, "afterUpdateScd");
}
}
function afterUpdateScd() {
if (capResult.code > 0) {
msgok(1, "", true);
submit("mform", 800, true);
}
else {
msg("관리자에게 문의하세요.");
return;
}
}
</script>
<iframe id="ifrthis" style="display: none;"></iframe>

View File

@ -13,6 +13,7 @@
<br />
<form id="mform" name="mform">
<input type="hidden" name="rfdno" value="@r.rfdno" />
<input type="hidden" name="payno" value="@r.payno" />
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 환불정보<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
@ -58,13 +59,17 @@
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 검토결과<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
<tr><th>검토상태</th><td>@Html.Partial("./Partial/Radio", r.rstatus, new ViewDataDictionary() { { "valuetext", "0:접수(검토중);2:환불완료;1:환불거절;4:취소" }, { "checked", r.rstatus }, { "name", "rstatus" } })</td></tr>
<tr><th>검토상태</th><td>@Html.Partial("./Partial/Radio", r.rstatus, new ViewDataDictionary() { { "valuetext", "0:접수(검토중);2:환불완료;1:환불거절" }, { "checked", r.rstatus }, { "name", "rstatus" } })</td></tr>
<tr><th>검토상태</th><td>@*@Html.Partial("./Partial/Radio", r.rstatus, new ViewDataDictionary() { { "valuetext", "0:접수(검토중);2:환불완료;1:환불거절;4:취소" }, { "checked", r.rstatus }, { "name", "rstatus" } })*@</td></tr>
<tr><th>검토의견</th><td><input type="text" class="form-control" id="rback" name="rback" value="@r.rback" /></td></tr>
</table>
</form>
@if (r.rstatus == 0)
{
<div style="padding: 5px 10px; text-align: center"><a href="#" class="btn btn-primary" onclick="save();">저장</a></div>
<div style="padding: 5px 10px; text-align: center">
<a href="#" class="btn btn-primary" onclick="save();">저장</a>
<a href="#" class="btn btn-danger" onclick="cancel();">취소</a>
</div>
}
<br /><br /><br />
@section styles{
@ -109,5 +114,19 @@
opener.thisrefresh();
}
}
function cancel() {
if (confirm("취소 시 환불요청서가 삭제됩니다.\n취소하시겠습니까?")) {
gocancel();
}
}
function gocancel() {
cap("/acommon/payrfdcancel", "mform", "cbcancel");
}
function cbcancel() {
if (capResult.code == 1000) {
msg("취소되었습니다.", null, null, null, null, "self.close()");
opener.thisrefresh();
}
}
</script>
}

View File

@ -73,7 +73,7 @@
</tr>
<tr>
<th>기본담당자연락처</th>
<td colspan="3">@Html.TextBoxFor(m => m.Assign.mphone, new { @class = "form-control telnofmt nocomma", @data_zero = "1", @maxlength = "13" })</td>
<td colspan="3">@Html.TextBoxFor(m => m.Assign.mphone, new { @class = "form-control telnofmt mobilefmt nocomma", @data_zero = "1", @maxlength = "13" })</td>
</tr>
<tr>
<th>계산서이메일</th>
@ -131,7 +131,7 @@
setv("Assign_brno", val("Assign_brno").replace(/-/gi, ''));
setv("Assign_grno", val("Assign_grno").replace(/-/gi, ''));
if (check("Assign_asname", null, "법인명을 입력해주세요.")) { }
else if (val("Assign_mphone") != "" && !isphone(val("Assign_mphone"))) { msg("잘못된 연락처입니다."); }
else if (val("Assign_mphone") != "" && (!isphone(val("Assign_mphone")) && !ismobile(val("Assign_mphone")))) { msg("잘못된 연락처입니다."); }
else if (confirm("저장하시겠습니까?")) {
capfileform("/acommon/assignsave", "mform", "cbsave");
}

View File

@ -508,7 +508,7 @@
setv("User_birthday", makebirthday(val("userpno1") + val("userpno2")));
if (val("User_usertype") == "0" || val("User_usertype") == "") { focus("User_usertype");msg("권한을 선택해주세요."); }
else if (check("User_userid", null, "ID를 입력해주세요.")) { }
else if (val("User_userid").length < 6) {focus("User_userid"); msg("ID를 6글자 이상으로 입력해주세요.");}
else if (val("User_userid").length < 4) {focus("User_userid"); msg("ID를 4글자 이상으로 입력해주세요.");}
else if (val("User_userno") == '0' && !ispassword(val("User_userpass"))) { focus("User_userpass"); msg("6글자이상의 비밀번호를 입력해주세요."); }
else if (val("userpno1") != "" && val("userpno2") == "") { focus("userpno2"); msg("주민등록번호를 제대로 입력해주세요."); }
else if ((val("userpno1") != "" && val("userpno2") != "") && $("#User_userpno").val().length < 13) { focus("userpno2"); msg("주민등록번호를 제대로 입력해주세요."); }

View File

@ -34,7 +34,7 @@
<add key="adminurl" value="http://admin.ynicte.com" />
<add key="adminips" value="118.219.255.223;118.219.255.225"/>
<add key="reporturl" value="http://ynicter.nptc.kr" />
<add key="isstaging" value="0" />
<add key="isstaging" value="1" />
<!--<add key="masteremail" value="edu@ynicte.or.kr;mail.ynicte.or.kr;25;ynicte@ynicte.or.kr;k7758870!%" />-->
<add key="masteremail" value="yicte@cte.or.kr;smtp.daum.net;465;yicte2020;yicte04003" />
<add key="usessl" value="Y" />

View File

@ -62,7 +62,7 @@ img.wideviewable.activeon{
.form-control .searchcon{width: auto;}
.searchbutton{}
.datepicker-input.dev{width: 130px; text-align: center; display: initial;}
.fa-calendar.dev{margin-left: -20px; margin-right: 10px;}
.fa-calendar.dev{margin-left: -22px; margin-right: 10px;}
input[type="file"].fileitem{display: none;}
.devfile{margin-top: -5px;}
.itemfind {margin-top: -3px;}

5
BO/libman.json Normal file
View File

@ -0,0 +1,5 @@
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": []
}

View File

@ -297,6 +297,12 @@ namespace NP.Base.Controllers
{
rtn = Dao.Save("cm.cminnings." + (cmi.cmino > 0 ? "up" : "in"), cmi);
}
//집체교육일정,온라인일시
if(cmi.cmino > 0 && cmi.isscd == 1 && cmi.scdtype == 1)
{
Dao.Save("cm.cminningscd.clear", cmi);
Dao.Save("cm.cmev.clear", cmi);
}
if (cmi.istaste == 1){
Dao.Save("cm.cminnings.istasteclear", cmi);
}
@ -320,6 +326,7 @@ namespace NP.Base.Controllers
else
{
rtn = Dao.Save("cm.cminningscd." + (cmis.cmisno > 0 ? "up" : "in"), cmis);
Dao.Save("cm.cminningscd.up.lect",cmis);
}
return JsonOK(rtn, true);
}

View File

@ -439,21 +439,25 @@ namespace NP.Base.Controllers
return JsonBack(new JsonRtn() { code = 1000, msg = "OK", obj = new { cancelcount } });
}
[HttpPost]
public JsonResult CMInningGetForOff(Int64 cmino)
public JsonResult CMInningGetForOff(Int64? cmino,Int64? cmisno,Int64? lectno)
{
var rtn = new Hashtable() { };
rtn.Add("ci", Dao.Get<CMInning>("cm.cminnings", new Hashtable() { { "cmino", cmino } }).First());
rtn.Add("li", Dao.Get<LectInning>("lect.lectinnings.bycmino", new Hashtable() { { "cmino", cmino } }));
rtn.Add("ci", Dao.Get<CMInning>("cm.cminnings", new Hashtable() { { "cmino", cmino },{"cmisno",cmisno } }).First());
rtn.Add("li", Dao.Get<LectInning>("lect.lectinnings.bycmino", new Hashtable() { { "cmino", cmino }, { "cmisno", cmisno },{"lectno",lectno } }));
return JsonBack(rtn);
}
[HttpPost]
public JsonResult OffAttSave(Int64 cmino, String lis, Int64? fgno)
public JsonResult OffAttSave(Int64 cmino, String lis, Int64? fgno,Int64? fgnooff)
{
var cmi = new CMInning() { cmino = cmino, fgno = fgno, Ds = new List<CMInning>() { }, uno = SUserInfo.UserNo, uip = GetUserIP() };
var cmi = new CMInning() { cmino = cmino, fgno = fgno,fgnooff=fgnooff, Ds = new List<CMInning>() { }, uno = SUserInfo.UserNo, uip = GetUserIP() };
if (Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
cmi.fgno = SetFile(Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), cmi.fgno ?? 0, "cminning", "fgno");
}
if (Request.Files.GetMultiple("file2").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
cmi.fgnooff = SetFile(Request.Files.GetMultiple("file2").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), cmi.fgnooff ?? 0, "cminning", "fgnooff");
}
var lectnos = "";
foreach (var s in lis.Split(';'))
{
@ -465,9 +469,33 @@ namespace NP.Base.Controllers
{
Dao.Save("cm.cminning.fgno", cmi);
}
if(cmi.fgnooff != null)
{
Dao.Save("cm.cminning.fgnooff", cmi);
}
return JsonOK(Dao.Save("att.off.save", cmi));
}
[HttpPost]
public JsonResult offattscdsave(int istatus,String userinfos)
{
var lectnos = "";
var cmi = new CMInning() { Ds = new List<CMInning>() { }, uno = SUserInfo.UserNo, uip = GetUserIP() };
if (string.IsNullOrEmpty(userinfos))
{
return JsonOK(-1);
}
else
{
foreach(var s in userinfos.Split(','))
{
lectnos += "," + s.Split(':')[1];
cmi.Ds.Add(new CMInning() { cmino = GetInt64(s.Split(':')[0]), lectno = GetInt64(s.Split(':')[1]), istatus = istatus < 0 ? (Int32?)null : istatus });
}
cmi.lectnos = lectnos.Substring(1);
}
return JsonOK(Dao.Save("att.scd.save", cmi));
}
[HttpPost]
public JsonResult AttABS(Int64 lectno, Int64 cmino, String reason)
{
return JsonOK(Dao.Save("att.abs", new Hashtable() { { "lectno", lectno }, { "cmino", cmino }, { "statusreason", reason }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }) == 2 ? 1 : 0);
@ -482,12 +510,24 @@ namespace NP.Base.Controllers
{
return JsonBack(Dao.Get<LectEX>("lect.lectexes", new System.Collections.Hashtable() { { "cmno", cmno }, { "exno", exno }, { "isrebate", isrebate }, { "estate", estate } }));
}
public JsonResult LectAllEXes(int pagenum, int pagerowcount,int extype, String edate, String cname, String cnamestr, String searchtype, String searchtext,String sdateall,String edateall,String asname, int? studyplace = null, int? iscomplete = null, int? cshape = null, int? sdstate = null)
{
pagenum = pagenum < 1 ? 1 : pagenum;
pagerowcount = pagerowcount < 1 ? PageRowCount : pagerowcount;
return JsonBack(Dao.Get<LectEX>("lect.lectexes.all", new System.Collections.Hashtable() { {"extype",extype },{ "estate", sdstate }, { "pagenum", pagenum }, { "pagerowsize", pagerowcount }, { "edate", edate },{"sdateall",sdateall },{"edateall",edateall }, { "cshape", cshape }, { "cname", cname }, { "cnamestr", cnamestr }, { "iscomplete", iscomplete }, { "studyplace", studyplace }, { "searchtype", searchtype }, { "searchtext", searchtext },{"asname",asname } }));
}
[HttpPost]
public JsonResult ReExam(int exno, Int64 lectno)
{
return JsonOK(Dao.Save("lect.reexam", new Hashtable() { { "exno", exno }, { "lectno", lectno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }) > 1 ? 1 : 0);
}
[HttpPost]
public JsonResult ReExamLog(int exno, Int64 lectno)
{
return JsonBack(Dao.Get<LectEX>("lect.reexam.log", new System.Collections.Hashtable() { { "exno", exno }, { "lectno", lectno } }));
}
[HttpPost]
public JsonResult LectEX(Int64 lectno, int exno)
{
var rtn = new Hashtable() { };
@ -503,7 +543,26 @@ namespace NP.Base.Controllers
[HttpPost]
public JsonResult LectEXQPoint(int exno, Int64 lectno, int eqno, int cpoint)
{
return JsonOK(Dao.Save("lect.lectexq.point", new Hashtable() { { "lectno", lectno }, { "exno", exno }, { "eqno", eqno }, { "cpoint", cpoint }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
IList<QuestionItem> qis = Dao.Get<QuestionItem>("lect.eqno.listforcheck", new Hashtable() { { "lectno", lectno }, { "eqno", eqno }, { "exno", exno } });
int? iscorrect = null;
if(qis.Count() > 0)
{
var qi = qis.FirstOrDefault();
if(qi.atype == 0)
{
iscorrect = string.Join(",", qis.Where(w => w.eqno == eqno).ToList().Select(s => s.qino)) == qi.atext ? 1 : 0;
}
else if (qi.isignorecase == 0)
{
iscorrect = qis.Where(w => w.eqno == eqno).Where(w => (w.qitext ?? "").Replace(qi.ispassspace == 1 ? " " : "박건박건박효동", "") == (qi.atext.Replace("$$$PHDPHD$$$", ";").Replace("$$$PHD$$$", ":") ?? "").Replace(qi.ispassspace == 1 ? " " : "박건박건박효동", "")).Count() > 0 ? 1 : 0;
}
else
{
iscorrect = qis.Where(w => w.eqno == eqno).Where(w => (w.qitext ?? "").Replace(qi.ispassspace == 1 ? " " : "박건박건박효동", "").ToLower() == (qi.atext.Replace("$$$PHDPHD$$$", ";").Replace("$$$PHD$$$", ":") ?? "").Replace(qi.ispassspace == 1 ? " " : "박건박건박효동", "").ToLower()).Count() > 0 ? 1 : 0;
}
}
return JsonOK(Dao.Save("lect.lectexq.point", new Hashtable() { { "lectno", lectno }, { "exno", exno }, { "eqno", eqno },{"iscorrect"+(iscorrect == null ? "x" : ""),iscorrect }, { "cpoint", cpoint }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
public JsonResult ExamUserBatch(int intval, String datas)
{
@ -537,6 +596,14 @@ namespace NP.Base.Controllers
return JsonBack(Dao.Get<LectSD>("lect.lectsds", new System.Collections.Hashtable() { { "cmno", cmno }, { "sdno", sdno }, { "isrebate", isrebate }, { "estate", sdstate } }));
}
[HttpPost]
public JsonResult LectAllSDs(int pagenum,int pagerowcount,String edate,String cname,String cnamestr,String searchtype,String searchtext,String sdateall,String edateall,String asname, int? studyplace = null, int? iscomplete = null, int? cshape = null, int? sdstate = null,int? sdtype = 0)
{
pagenum = pagenum < 1 ? 1 : pagenum;
pagerowcount = pagerowcount < 1 ? PageRowCount : pagerowcount;
return JsonBack(Dao.Get<LectSD>("lect.lectsds.all", new System.Collections.Hashtable() { { "estate", sdstate }, { "pagenum", pagenum }, { "pagerowsize", pagerowcount }, { "edate", edate },{"sdateall",sdateall },{"edateall",edateall }, { "cshape", cshape }, { "cname", cname }, { "cnamestr", cnamestr }, { "iscomplete", iscomplete }, { "studyplace", studyplace }, { "searchtype", searchtype }, {"searchtext",searchtext } ,{"sdtype",sdtype },{"asname",asname } }));
}
[HttpPost]
public JsonResult LectSD(Int64 lectno, int sdno)
{
return JsonBack(Dao.Get<LectSD>("lect.lectsd", new Hashtable() { { "lectno", lectno }, { "sdno", sdno } }).First());
@ -666,6 +733,14 @@ namespace NP.Base.Controllers
d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
return JsonOK(Dao.Save("cr.payrfd.save", d));
}
[HttpPost]
public JsonResult PayRfdCancel(PayRfd d)
{
d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
d.rstatus = 4;
return JsonOK(Dao.Save("pay.payrfdcancel.up", d));
}
[HttpPost]
public JsonResult PayRefund(Int64 payno, String sd, int isrefunddvr,bool iscancel)
{
@ -1324,6 +1399,15 @@ namespace NP.Base.Controllers
return JsonBack(result);
}
[HttpPost]
public JsonResult GetCmiForMixEdu(int cmno)
{
var rtn = new Hashtable();
rtn.Add("cmi", Dao.Get<CMInning>("cm.cminnings", new System.Collections.Hashtable() { { "cmno", cmno }, { "isonline", 0 }, { "isscd", 1 } }));
rtn.Add("cmis", Dao.Get<CMinningscd>("cm.cminningscds", new System.Collections.Hashtable() { { "cmno", cmno } }));
return JsonBack(rtn);
}
[HttpPost]
public JsonResult LectScdChange(Int64 lectno, Int64 cmisno)
{

View File

@ -193,6 +193,7 @@ namespace NP.Base
ViewBag.mainmenuexam = data.First().intval8;
ViewBag.mainmenuresearch = data.First().intval9;
ViewBag.mainmenugrade = data.First().intval10;
ViewBag.maincshape = data.First().intval12;
ViewBag.maincgname = data.First().strval;
ViewBag.maincname = data.First().strval2;
ViewBag.mainboardmaster = data.First().strval3;

View File

@ -231,7 +231,8 @@ namespace NP.Base.Controllers
[HttpPost]
public JsonResult ReExamForUser(int exno, Int64 lectno)
{
return JsonOK(Dao.Save("lect.reexam", new System.Collections.Hashtable() { { "exno", exno }, { "lectno", lectno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }) > 1 ? 1 : 0);
//재응시로그추가로인해 업데이트건 3개일때부터 정상처리
return JsonOK(Dao.Save("lect.reexam", new System.Collections.Hashtable() { { "exno", exno }, { "lectno", lectno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }) > 2 ? 1 : 0);
}
}

View File

@ -450,7 +450,7 @@ namespace NP.Base.Controllers
foreach (var item in result)
{
//item.scdInfoSummary = string.Format("[{0}] {1}", item.studyplacename, item.estart.ToString("yyyy년 MM월 dd일 ddd요일 HH:mm"));
item.scdInfoSummary = string.Format("{0}", item.estart.ToString("yyyy년 MM월 dd일 ddd요일 HH:mm"));
item.scdInfoSummary = string.Format("{0}", item.estart.ToString("yyyy년 MM월 dd일까지"));
if (item.estart < DateTime.Now)
item.isEnd = true;
}

View File

@ -481,7 +481,10 @@ create table cminning (
,metime smallint not null
,userno int
,fgno bigint
,fgnooff bigint
,orgcmino bigint
,isscd tinyint not null default 0
,scdtype tinyint DEFAULT NULL
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL
,primary key(cmino));
@ -490,7 +493,8 @@ create table cminningscd (
,cmino bigint not null
,estart datetime not null
,eend datetime not null
,quota smallint not null
,quota int(5) not null
,sseq int(11) not null default 0
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL
,primary key(cmisno));
@ -1053,7 +1057,7 @@ create table lect (
,completeno varchar(50)
,isattcheck tinyint(4)
,lakey varchar(6)
,lakey varchar(6)
,latime datetime
,sdate datetime
,edate datetime
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL
@ -1124,6 +1128,14 @@ create table lectexq (
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL
,primary key(lectno,exno,eqno));
create table lectexrelog (
lectno bigint not null
,exno int not null
,estart datetime
,eend datetime
,eip varchar(50)
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL);
create table lectsd (
lectno bigint not null
,sdno int not null
@ -1570,5 +1582,4 @@ CREATE TABLE docprintpast (
)
COLLATE=utf8_general_ci
ENGINE=InnoDB
AUTO_INCREMENT=181866
;

View File

@ -57,6 +57,7 @@ alter table cminning add constraint foreign key fkcminningct (ctno) references c
alter table cminning add constraint foreign key fkcminningu (userno) references users(userno);
alter table cminning add constraint foreign key fkcminningfg (fgno) references filegroup(fgno);
alter table cminning add constraint foreign key fkcminningfg2 (fgnotf) references filegroup(fgno);
alter table cminning add constraint foreign key fkcminningfgoff (fgnooff) references filegroup(fgno);
alter table cminningscd add constraint foreign key fkcmiscmi (cmino) references cminning(cmino);
alter table cmev add constraint foreign key fkcmevcm (cmno) references cm(cmno);
alter table cmex add constraint foreign key fkcmexcm (cmno) references cm(cmno);
@ -155,6 +156,8 @@ alter table lectex add constraint foreign key fklectexcmex (exno) references cme
alter table lectexq add constraint foreign key fklectexqlect (lectno) references lect(lectno);
alter table lectexq add constraint foreign key fklectexqcmex (exno) references cmex(exno);
alter table lectexq add constraint foreign key fklectexqcmexq (eqno) references cmexq(eqno);
alter table lectexrelog add constraint foreign key fklectexreloglect (lectno) references lect(lectno);
alter table lectexrelog add constraint foreign key fklectexrelogcmex (exno) references cmex(exno);
alter table lectsd add constraint foreign key fklectsdlect (lectno) references lect(lectno);
alter table lectsd add constraint foreign key fklectsdcmsd (sdno) references cmsd(sdno);
alter table lectsd add constraint foreign key fklectsdfg (fgno) references filegroup(fgno);

View File

@ -72,7 +72,7 @@
inner join (
select a.lectno,convert(100*count(c.lectno)/count(b.cmino), int) attrate
from lect a
inner join cminning b on b.cmno=a.cmno
inner join cminning b on b.cmno=a.cmno and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus in (1,2)
where a.lectno in ($lectnos$)
group by a.lectno
@ -86,6 +86,48 @@
,a.ispce=case when a.ispce is null then 1 else a.ispce end
</update>
<update id="att.scd.save" parameterClass="cminning">
update lectinning a
inner join (
<iterate property="Ds" open="" conjunction="union all" close=""> select #Ds[].lectno# lectno,#Ds[].cmino# cmino,#Ds[].istatus# istatus </iterate>
) b on b.lectno=a.lectno and b.cmino = a.cmino
set a.uip=#uip#,a.uno=#uno#
,a.istatus=b.istatus
,a.stime = a.stime
,a.etime = a.etime
,a.sip = case when a.sip is null then #uip# else a.sip end
,a.eip = case when a.eip is null then #uip# else a.eip end
,a.ispcs = case when a.ispcs is null then 1 else a.ispcs end
,a.ispce = case when a.ispce is null then 1 else a.ispce end;
insert into lectinning (lectno,cmino,totstudy<!--,stime,etime-->,istatus,statustime,statusreason,sip,eip,ispcs,ispce,<include refid="sql.inc"></include>)
select a.lectno,a.cmino,0
,a.istatus,null,null,#uip#,#uip#,1,1,<include refid="sql.inv"></include>
from (
<iterate property="Ds" open="" conjunction="union all" close=""> select #Ds[].lectno# lectno,#Ds[].cmino# cmino,#Ds[].istatus# istatus </iterate>
) a
left outer join lectinning b on b.cmino=a.cmino and b.lectno=a.lectno
where b.lectno is null;
update lect a
inner join (
select a.lectno,convert(100*count(c.lectno)/count(b.cmino), int) attrate
from lect a
inner join cminning b on b.cmno=a.cmno and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus in (1,2)
where a.lectno in ($lectnos$)
group by a.lectno
) b on b.lectno=a.lectno
set a.attrate=b.attrate
,a.stime=case when a.stime is null then <include refid="sql.now"></include> else a.stime end
,a.etime=case when a.etime is null then <include refid="sql.now"></include> else a.etime end
,a.sip=case when a.sip is null then #uip# else a.sip end
,a.eip=case when a.eip is null then #uip# else a.eip end
,a.ispcs=case when a.ispcs is null then 1 else a.ispcs end
,a.ispce=case when a.ispce is null then 1 else a.ispce end;
</update>
<update id="att.att.in" parameterClass="hashtable">
update lectinning set <include refid="sql.up"></include>
,lectno=#lectno#,cmino=#cmino#,totstudy=0
@ -118,7 +160,7 @@
inner join (
select a.lectno,convert(100*count(c.lectno)/count(b.cmino), int) attrate
from lectinning a
inner join cminning b on b.cmino=a.cmino
inner join cminning b on b.cmino=a.cmino and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus=2
where a.lectno=#lectno# and a.cmino=#cmino# and a.istatus=2
group by a.lectno
@ -151,7 +193,7 @@
select a.lectno,convert(100*count(c.lectno)/count(b.cmino), int) attrate
from lectinning a
inner join lect a2 on a2.lectno=a.lectno
inner join cminning b on b.cmno=a2.cmno
inner join cminning b on b.cmno=a2.cmno and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus=2
where a.lectno=#lectno# and a.cmino=#cmino# and a.istatus=2
group by a.lectno

View File

@ -509,23 +509,31 @@
</update>
<select id="cm.cminnings" parameterClass="hashtable" resultClass="cminning">
select distinct cmino,a.cmno,a.week,a.iseq,a.isonline,a.ititle,a.icontent,a.idate,a.iday,a.ist,a.iet,a.ctno,a.istaste,a.sttime,a.atime,a.mstime,a.metime,a.fgnotf
,a.userno,a.fgno,a.cdt,a.udt
select distinct a.cmino,a.cmno,a2.cshape,a.week,a.iseq,a.isonline,a.ititle,a.icontent,a.idate,a.iday,a.ist,a.iet,a.ctno,a.istaste,a.sttime,a.atime,a.mstime,a.metime,a.fgnotf
,a.userno,a.fgno,a.fgnotf,a.fgnooff,a.scdtype,a.isscd,a.cdt,a.udt
,b.ctname,b.ccode,b.ctype,b.ismenu
,b2.srcp,b2.srcm
,c.username
,d.fileno,d.fileurl,d.orgname
,e.fileno fileno2,e.fileurl fileurl2,e.orgname orgname2
,g.fileno fileno3,g.fileurl fileulr3,g.orgname orgname3
from cminning a
inner join cm a2 on a2.cmno = a.cmno
left outer join ct b on b.ctno=a.ctno and b.isdel=0
left outer join ctpage b2 on b2.ctno=b.ctno and b2.pseq=1
left outer join users c on c.userno=a.userno and c.status = 1
left outer join fileinfo d on d.fgno=a.fgno and d.isdel=0
left outer join fileinfo e on e.fgno=a.fgnotf and e.isdel=0
left outer join fileinfo g on g.fgno=a.fgnooff and g.isdel=0
<isNotNull property="cmisno">
left outer join cminningscd f on f.cmino = a.cmino
</isNotNull>
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="cmino" prepend="and">a.cmino=#cmino#</isNotNull>
<isNotNull property="cmisno" prepend="and">f.cmisno=#cmisno#</isNotNull>
<isNotNull property="isonline" prepend="and">a.isonline=#isonline#</isNotNull>
<isNotNull property="isscd" prepend="and">a.isscd=#isscd#</isNotNull>
</dynamic>
order by a.week,a.iseq
</select>
@ -533,14 +541,21 @@
<select id="cm.cminningscds" parameterClass="hashtable" resultClass="cminningscd">
select a.*
from (
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.sseq
,a.cmisno value,date_format(a.estart,'%Y-%m-%d') text
,b.scdtype
,case when b.scdtype =1 then '온라인' else c.cname end studyplacename
,(select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0) regmem
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.estart</isNull>) scdseq
,count(a.cmisno) over() totalnum
from cminningscd a
inner join cminning b on b.cmino = a.cmino
inner join cm d on d.cmno = b.cmno
left outer join comcode c on c.ccode = a.studyplace
<dynamic prepend="where">
<isNotNull property="cmino" prepend="and">a.cmino=#cmino#</isNotNull>
<isNotNull property="cmisno" prepend="and">a.cmisno=#cmisno#</isNotNull>
<isNotNull property="cmno" prepend="and">d.cmno=#cmno#</isNotNull>
</dynamic>
) a
order by a.scdseq
@ -555,8 +570,8 @@
</update>
<insert id="cm.cminnings.in" parameterClass="cminning">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
insert into cminning (cmno,week,iseq,isonline,ititle,icontent,idate,iday,ist,iet,fgnotf,ctno,istaste,sttime,atime,mstime,metime,userno,<include refid="sql.inc"></include>)
select #cmno#,#week#,#iseq#,#isonline#,#ititle#,#icontent#,#idate#,#iday#,#ist#,#iet#,#fgnotf#,#ctno#,#istaste#,#sttime#,#atime#,#mstime#,#metime#,#userno#,<include refid="sql.inv"></include>
insert into cminning (cmno,week,iseq,isonline,ititle,icontent,idate,iday,ist,iet,fgnotf,ctno,istaste,sttime,atime,mstime,metime,userno,isscd,scdtype,<include refid="sql.inc"></include>)
select #cmno#,#week#,#iseq#,#isonline#,#ititle#,#icontent#,#idate#,#iday#,#ist#,#iet#,#fgnotf#,#ctno#,#istaste#,#sttime#,#atime#,#mstime#,#metime#,#userno#,#isscd#,#scdtype#,<include refid="sql.inv"></include>
from (select 1 col1) a
left outer join cminning b on b.cmno=#cmno# and b.iseq=#iseq#
where b.cmino is null
@ -564,8 +579,8 @@
</insert>
<insert id="cm.cminningscd.in" parameterClass="cminningscd">
SELECT * FROM (SELECT LAST_INSERT_ID(0) col1) a WHERE col1 > 0;
insert into cminningscd(cmino,estart,eend,quota,studyplace,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,<include refid="sql.inv"></include>)
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,<include refid="sql.inc"></include>)
values(#cmino#,#estart#,#eend#,#quota#,#studyplace#,#sseq#,<include refid="sql.inv"></include>)
<selectKey type="post" property="cmisno" resultClass="long">SELECT last_insert_id()</selectKey>
</insert>
<update id="cm.cminnings.up" parameterClass="cminning">
@ -577,13 +592,30 @@
,week =#week#,iseq =#iseq#,isonline =#isonline#,ititle =#ititle#,icontent =#icontent#
,idate=#idate#,iday =#iday#,ist =#ist#,iet =#iet#,fgnotf=#fgnotf#
,ctno =#ctno#,istaste =#istaste#,sttime=#sttime#,atime =#atime#,mstime =#mstime#,metime =#metime#,userno =#userno#
,isscd = #isscd#,scdtype=#scdtype#
where a.cmino=#cmino# and b.cmino is null
</update>
<update id="cm.cminningscd.up" parameterClass="cminningscd">
update cminningscd a
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#,studyplace=#studyplace#
set <include refid="sql.up"></include>,cmino=#cmino#,estart=#estart#,eend=#eend#,quota=#quota#,studyplace=#studyplace#,sseq=#sseq#
where a.cmisno=#cmisno#
</update>
<update id="cm.cminningscd.clear" parameterClass="cminning">
update cminningscd a
set <include refid="sql.up"></include>,quota=99999,studyplace=null
where a.cmino = #cmino#
</update>
<update id="cm.cminningscd.up.lect" parameterClass="cminningscd">
update lect a
left outer join cminningscd b on b.cmisno = a.cmisno
set a.edate = b.eend
where a.cmisno = #cmisno#;
</update>
<update id="cm.cmev.clear" parameterClass="cminning">
update cmev a
set <include refid="sql.up"></include>,isoffabs=null
where a.cmno = #cmno#
</update>
<update id="cm.cminnings.istasteclear" parameterClass="hashtable">
update cminning set istaste=0 where cmno=#cmno# and cmino &lt;&gt; #cmino#
</update>
@ -637,7 +669,12 @@
<select id="cm.cmev" parameterClass="int" resultClass="cmev">
select a.cmno,a.attend,a.attendcut,a.attendrfd,a.attendcutrfd,a.mid,a.midcut,a.midrfd,a.midcutrfd,a.final,a.finalcut,a.finalrfd,a.finalcutrfd,a.subject,a.subjectcut,a.subjectrfd
,a.subjectcutrfd,a.discuss,a.discusscut,a.discussrfd,a.discusscutrfd,a.etc,a.etccut,a.etcrfd,a.etccutrfd,a.cut,a.cutrfd,a.isoffabs
from cmev a where a.cmno=#cmno#
,b.scdtype
,c.cshape
from cmev a
inner join cm c on c.cmno = a.cmno
left outer join cminning b on b.cmno = a.cmno and b.isscd = 1
where a.cmno=#cmno#
</select>
<select id="cm.est" parameterClass="int" resultClass="est">
select 0 gubun,case when a.extype = 0 then 1 else 2 end estkind
@ -1339,8 +1376,8 @@
inner join cm b on b.cmno=#cmno#
where a.cmno=#orgcmno#;
insert into cminningscd(cmino,estart,eend,quota,studyplace,<include refid="sql.inc"></include>)
select c.cmino,b.estart,b.eend,b.quota,b.studyplace,<include refid="sql.inv"></include>
insert into cminningscd(cmino,estart,eend,quota,studyplace,sseq,<include refid="sql.inc"></include>)
select c.cmino,b.estart,b.eend,b.quota,b.studyplace,sseq,<include refid="sql.inv"></include>
from cminning a
inner join cminningscd b on b.cmino=a.cmino
inner join cminning c on c.cmno=#cmno# and c.isonline=0
@ -1636,6 +1673,9 @@
<update id="cm.cminning.fgno" parameterClass="hashtable">
update cminning set fgno=#fgno# where cmino=#cmino#
</update>
<update id="cm.cminning.fgnooff" parameterClass="hashtable">
update cminning set fgnooff=#fgnooff# where cmino=#cmino#
</update>
<select id="cm.cms.forbuy" parameterClass="hashtable" resultClass="cm">
select a.cmno,a.cname,a.cshape,a.studyplace,a.studytime,a.infee,a.outfee,a.rstime,a.retime,a.sstime,a.setime,a.quota,a.difficulty,a.isrefund,a.fgnocm
,a.introhtml,a.targethtml,a.goalhtml,a.contenthtml,a.fgnocm
@ -1826,36 +1866,40 @@
<isNotNull property="studyplace">and a.studyplace=#studyplace#</isNotNull>
</select>
<select id="cm.cminningscds.applyedu" parameterClass="hashtable" resultClass="cminningscd">
select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.studyplace, a.studyplacename,a.remainPeople
,a.isselected
,case when a.estart &lt; now() or a.remainPeople &lt;= 0 then 0 else 1 end isend
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0)) remainPeople
,a.studyplace, e.cname studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace
select a.*
from (
select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.remainPeople
,a.isselected
,case when a.estart &lt; date_add(date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval 6 day ),interval -1 second) or a.remainPeople &lt;= 0 then 0 else 1 end isend
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0)) remainPeople
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
</dynamic>
)a
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic>
)a
<dynamic prepend="where">
<isNotNull property="month" prepend="and">a.startmonth=#month#</isNotNull>
</dynamic>
order by isend desc,a.estart
) a
where a.isend = 1 and a.remainPeople &gt; 0
order by a.estart
</select>
<select id="cm.cminningscds.applyedu.lectno" parameterClass="hashtable" resultClass="cminningscd">
select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.studyplace, a.studyplacename,a.remainPeople
,a.isselected
,case when a.estart &lt; now() or a.remainPeople &lt;= 0 then 0 else 1 end isend
,case when a.estart &lt; date_add(date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval 6 day ),interval -1 second) or a.remainPeople &lt;= 0 then 0 else 1 end isend
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
@ -1983,16 +2027,21 @@
update lect set <include refid="sql.up"></include>
,cmisno =case when #cmisno# is not null then #cmisno# else cmisno end
where lectno=#lectno#;
update pplog a
left outer join (
select a.lectno,a.payno,b.pplno,a.cmisno
from lect a
inner join pay b on b.payno = a.payno
where a.lectno = #lectno#
) b on b.pplno = a.pplno
select a.lectno,a.payno,b.pplno,a.cmisno
from lect a
inner join pay b on b.payno = a.payno
where a.lectno = #lectno#
) b on b.pplno = a.pplno
set a.cmisno = case when b.cmisno is not null then b.cmisno else a.cmisno end
where b.lectno = #lectno#;
update lect a
left outer join cminningscd b on b.cmisno = a.cmisno
set a.edate = case when b.eend is not null then b.eend else a.edate end
where a.lectno = #lectno#;
</update>
<select id="cm.cms.offs" parameterClass="hashtable" resultClass="cm">
select

View File

@ -38,12 +38,18 @@
,case when b.isrebate = 1 then d.finalrfd else d.final end fportion
,case when b.isrebate = 1 then d.subjectrfd else d.subject end sportion
,case when b.isrebate = 1 then d.discussrfd else d.discuss end dportion
,d.isoffabs,li.istatus
,e.estart,e.eend,f.cname studyplacename
from (
<include refid="grade.query"></include>
) a
inner join lect b on b.lectno=a.lectno
inner join users u on u.userno=b.userno
inner join cmev d on d.cmno=b.cmno
left outer join cminningscd e on e.cmisno = b.cmisno
left outer join cminning ci on ci.cmino = e.cmino
left outer join comcode f on f.ccode = e.studyplace
left outer join lectinning li on li.cmino = e.cmino
</select>
<select id="cr.main.boardalarm" parameterClass="hashtable" resultClass="data">
select a.*
@ -187,7 +193,7 @@
left outer join ctpage e on e.ctno=d.ctno and e.pseq=1
left outer join cminningscd scd on a.cmisno = scd.cmisno
left outer join comcode com on scd.studyplace = com.ccode
where a.lectno=#lectno# and a.userno=#userno#
where a.lectno=#lectno# and a.userno=#userno# and ifnull(b.isscd,0) = 0
<isNotNull property="notstudy">and ifnull(c.istatus,0) &lt; 2 and a.sdate &lt; now() and a.edate &gt; now()</isNotNull>
order by b.iseq
<isNotNull property="limit">limit $limit$</isNotNull>
@ -230,7 +236,7 @@
inner join (
select a.lectno,truncate(count(c.lectno) / count(b.cmino) * 100, 0) attrate
from lect a
inner join cminning b on b.cmno=a.cmno
inner join cminning b on b.cmno=a.cmno and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus=2
where a.lectno=#lectno# and a.userno=#userno#
group by a.lectno
@ -310,7 +316,7 @@
inner join (
select a.lectno,truncate(count(c.lectno) / count(b.cmino) * 100, 0) attrate
from lect a
inner join cminning b on b.cmno=a.cmno
inner join cminning b on b.cmno=a.cmno and ifnull(b.isscd,0)=0
left outer join lectinning c on c.lectno=a.lectno and c.cmino=b.cmino and c.istatus=2
where a.lectno=#lectno# and a.userno=#userno#
group by a.lectno
@ -491,15 +497,30 @@
</select>
<select id="cr.lectex" parameterClass="hashtable" resultClass="lectex">
select a.lectno,a.attrate,a.iscomplete,a.sdate,a.edate
,b.sstime,b.setime
,c.exno,c.exname,c.extype,c.edesc,c.econdition,c.etime,c.evtype,c.eqtype,c.israndq,c.israndqi,c.qcount,c.isblur,c.tpoint,ifnull(c.relaylimit,999) relaylimit,c.isusebackup,c.isseq,c.isreexamable,c.isresultopen
,d.lectno exlectno,d.estart,d.eend,d.tpoint,d.recount,d.rechecktime,ifnull(d.entercount,0) entercount,d.cblock
,case when a.etime = 0 then 99999999 else TIMESTAMPDIFF(MINUTE, now(), date_add(ifnull(d.estart, now()), interval c.etime MINUTE)) end rtime
,d.recount
,b.sstime,b.setime
,c.exno,c.exname,c.extype,c.edesc,c.econdition,c.etime,c.evtype,c.eqtype,c.israndq,c.israndqi,c.qcount,c.isblur,c.tpoint,ifnull(c.relaylimit,999) relaylimit,c.isusebackup,c.isseq,c.isreexamable,c.isresultopen
,d.lectno exlectno,d.estart,d.eend,d.tpoint,d.recount,d.rechecktime,ifnull(d.entercount,0) entercount,d.cblock
,case when a.etime = 0 then 99999999 else TIMESTAMPDIFF(MINUTE, now(), date_add(ifnull(d.estart, now()), interval c.etime MINUTE)) end rtime
,d.recount
,case when
case when case when a.isrebate = 1 then f.midcutrfd else f.midcut end &lt;= ifnull(e.ex0lectpoint,0) then 1 else 0 end = 1 and case when case when a.isrebate = 1 then f.finalcutrfd else f.finalcut end &lt;= ifnull(e.ex1lectpoint,0) then 1 else 0 end = 1
then 1 else 0 end ispass
from lect a
inner join cm b on b.cmno=a.cmno
inner join cmex c on c.exno=#exno#
inner join cmev f on f.cmno = b.cmno
left outer join lectex d on d.lectno=a.lectno and d.exno=c.exno
left outer join (
select a.lectno
,count(b1.exno) ex0cnt,count(c1.lectno) ex0lectcnt,avg(ifnull(c1.tpoint,0) / b1.tpoint * 100) ex0lectpoint
,count(b2.exno) ex1cnt,count(c2.lectno) ex1lectcnt,avg(ifnull(c2.tpoint,0) / b2.tpoint * 100) ex1lectpoint
from lect a
left outer join cmex b1 on b1.cmno = a.cmno and b1.extype = 0 and b1.isdel=0
left outer join lectex c1 on c1.exno = b1.exno and c1.lectno = a.lectno
left outer join cmex b2 on b2.cmno = a.cmno and b2.extype = 1 and b2.isdel=0
left outer join lectex c2 on c2.exno = b2.exno and c2.lectno = a.lectno
where a.lectno = #lectno#
) e on e.lectno = a.lectno
where a.lectno=#lectno# and a.userno=#userno#
</select>
<select id="cr.userexamdata.start" parameterClass="hashtable" resultClass="lectexq">
@ -777,13 +798,14 @@
,u.userno,u.userid,u.username
,ua.asname,ua.isjoin
,cm.cshape,cm.sstime,cm.setime,cm.studyplace
,le.sdate,le.edate
,le.sdate,le.edate,le.iscomplete
,case when a.isexamready=1 then uee.exname else case pi.ptype when 2 then bk.bkname when 3 then ex.exname else cm.cname end end itemname
,ppl.rbankname,CAST(AES_DECRYPT(UNHEX(ppl.rbankacc), <include refid="sql.digest"></include>) AS char) rbankacc,ppl.rbankowner
,row_number() over(order by case when pr.rstatus=0 and pri.rfdno is not null then 0 else 1 end, case when a.isexamready=1 then ue.cdt else p.cdt end desc) rno
,count(p.payno) over() pagetotalcount
,scd.estart cmiestart, scd.eend cmieeend, scd.studyplace cmistudyplace
,pi.rbank , CAST(AES_DECRYPT(UNHEX(pi.rbankaccnum), <include refid="sql.digest"></include>) AS char) rbankaccnum, pi.tbankuser
,cc1.cname tgname,cc2.cname tename
from (
select 0 isexamready,p.payno,max(case when pi.ptype in (0,1,3,4) then pi.pino else 0 end) pi1,min(pi.pino) pi2,count(pi.pino) ccount
from pay p
@ -863,6 +885,8 @@
left outer join examuser exu on exu.exno=ex.exno and exu.userno=p.userno
left outer join pplog ppl on ppl.pplno = p.pplno
left outer join cminningscd scd on scd.cmisno = le.cmisno
left outer join comcode cc1 on cc1.ccode = ppl.typegrade
left outer join comcode cc2 on cc2.ccode = ppl.typeedu
<dynamic prepend="where">
<isNotNull property="estart" prepend="and">scd.estart &gt;= #estart#</isNotNull>
<isNotNull property="eend" prepend="and">scd.eend &lt;= #eend#</isNotNull>
@ -1108,7 +1132,7 @@
,CAST(AES_DECRYPT(UNHEX(b.rphone), <include refid="sql.digest"></include>) AS char) rphone
,b.rback
,CAST(AES_DECRYPT(UNHEX(b.bankno), <include refid="sql.digest"></include>) AS char) bankno
,p.isgroup
,p.isgroup,p.payno
,pi.payamt
,case pi.ptype when 2 then bk.bkname when 3 then ex.exname else cm.cname end itemname
,u.username,u.userid
@ -1531,7 +1555,7 @@
select a.*
from (
select
l.lectno,l.iscomplete,l.completetime,l.completeno,l.cmisno
l.lectno,l.iscomplete,l.completetime,replace(replace(l.completeno,' ',''),'제','제 ') completeno,l.cmisno
,l.sdate
,l.edate
,l.cmno,l.payno

View File

@ -55,12 +55,12 @@
<select id="common.check.frontcroom" parameterClass="hashtable" resultClass="data">
select a.dtype,sum(a.intval) intval,sum(a.intval2) intval2,sum(a.intval3) intval3,sum(a.intval4) intval4,sum(a.intval5) intval5
,sum(a.intval6) intval6,sum(a.intval7) intval7,sum(a.intval8) intval8,sum(a.intval9) intval9,sum(a.intval10) intval10
,sum(a.intval11) intval11
,sum(a.intval11) intval11,sum(a.intval12) intval12
,max(a.strval) strval,max(a.strval2) strval2,max(a.strval3) strval3
from (
select a.userno dtype,count(b.mno) intval,0 intval2,0 intval3,0 intval4,0 intval5
,0 intval6,0 intval7,0 intval8,0 intval9,0 intval10
,0 intval11
,0 intval11,0 intval12
,null strval,null strval2,null strval3
from users a
left outer join memouser b on b.userno=a.userno and b.isread=0 and b.isdel=0
@ -69,7 +69,7 @@
union all
select a.userno dtype,0 intval,count(b.userno) intval2,0 intval3,0 intval4,0 intval5
,0 intval6,0 intval7,0 intval8,0 intval9,0 intval10
,0 intval11
,0 intval11,0 intval12
,null strval,null strval2,null strval3
from users a
left outer join alarms b on b.userno=a.userno and b.isdel=0
@ -77,7 +77,7 @@
union all
select a.userno dtype,0 intval,0 intval2,c.tyear intval3,c.tseq intval4,b.classno intval5
,b2.isplan intval6,b2.iscontent intval7,b2.isev intval8,b2.isrs intval9,b2.isgrade intval10
,b.cmno intval11
,b.cmno intval11,b.cshape intval12
,d.cgname strval,b.cname strval2
,group_concat(case when f.bmno is null then null else concat(f.bmno,':',f.bmname,':',f.bmtype) end separator ';') strval3
from users a0

View File

@ -25,10 +25,10 @@
,case when case when b.isrebate=1 then d.finalcutrfd else d.finalcut end &lt;= a.ex1lectpoint then 1 else 0 end ispassf
,case when case when b.isrebate=1 then d.subjectcutrfd else d.subjectcut end &lt;= a.sd0lectpoint then 1 else 0 end ispasss
,case when case when b.isrebate=1 then d.discusscutrfd else d.discusscut end &lt;= a.sd1lectpoint then 1 else 0 end ispassd
,case when case when d.isoffabs=1 then ifnull(a.at0cnt,0) else 0 end &lt;= ifnull(a.at0lectcnt,0) then 1 else 0 end ispassat
,case when case when ifnull(d.isoffabs,0)=1 then ifnull(a.at0cnt,0) else 0 end &lt;= ifnull(a.at0lectcnt,0) then 1 else 0 end ispassat
,case when
case when case when d.isoffabs=1 then ifnull(a.at0cnt,0) else 0 end &lt;= ifnull(a.at0lectcnt,0) then 1 else 0 end = 1 and
case when case when ifnull(d.isoffabs,0)=1 then ifnull(a.at0cnt,0) else 0 end &lt;= ifnull(a.at0lectcnt,0) then 1 else 0 end = 1 and
case when case when b.isrebate=1 then d.attendcutrfd else d.attendcut end &lt;= b.attrate then 1 else 0 end =1 and
case when case when b.isrebate=1 then d.midcutrfd else d.midcut end &lt;= a.ex0lectpoint then 1 else 0 end =1 and
case when case when b.isrebate=1 then d.finalcutrfd else d.finalcut end &lt;= a.ex1lectpoint then 1 else 0 end =1 and
@ -232,7 +232,7 @@
<isNotNull property="cshapes">and a.cshape in ($cshapes$)</isNotNull>
<!--and a.isuse=1--> and a.isdel=0
) a
left outer join cminning b on b.cmno=a.cmno and b.isonline =0
left outer join cminning b on b.cmno=a.cmno and b.isonline =0 and b.isscd = 1
left outer join lectinning c on c.cmino=b.cmino and c.lectno = a.lectno and c.istatus = 2
group by a.lectno
) a
@ -242,39 +242,72 @@
inner join cmev d on d.cmno=b.cmno
</sql>
<select id="grade.lectgrades" parameterClass="hashtable" resultClass="lect">
select a.lectno,b.userno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">c.cname,c.cmno,u.username</isNull> ) rno
,count(a.lectno) over() pagetotalcount
,b.isrebate,ua.asname,u.username,u.userid,b.iscomplete,b.completetime,b.sdate
,p.payoktime
,c.sstime,c.cmno,c.cname,c.classno
,b.attrate
,a.apoint
,a.ex0cnt,a.ex0lectcnt,a.ex0lectpoint,a.mpoint
,a.ex1cnt,a.ex1lectcnt,a.ex1lectpoint,a.fpoint
,a.sd0cnt,a.sd0lectcnt,a.sd0lectpoint,a.spoint
,a.sd1cnt,a.sd1lectcnt,a.sd1lectpoint,a.dpoint
,a.rs0cnt,a.rs0lectcnt,a.rs0lectpoint
,a.ispassat
select a.*
from (
select a.*
from (
<include refid="grade.query"></include>
select a.lectno,b.userno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">c.cname,c.cmno,u.username</isNull> ) rno
,count(a.lectno) over() pagetotalcount
,b.isrebate,ua.asname,u.username,u.userid,b.iscomplete,b.completetime,b.sdate,b.edate
,b.cmisno
,p.payoktime
,c.cshape,c.sstime,c.cmno,c.cname,c.classno
,d.isoffabs
,b.attrate
,a.apoint
,a.ex0cnt,a.ex0lectcnt,a.ex0lectpoint,a.mpoint
,a.ex1cnt,a.ex1lectcnt,a.ex1lectpoint,a.fpoint
,a.sd0cnt,a.sd0lectcnt,a.sd0lectpoint,a.spoint
,a.sd1cnt,a.sd1lectcnt,a.sd1lectpoint,a.dpoint
,a.rs0cnt,a.rs0lectcnt,a.rs0lectpoint
,a.ispassat
,e.sseq,e.estart,e.eend,e.studyplace
,f.istatus
,cc.cname studyplacename
,date_format((case when c.cshape = 2 and e.eend is not null then e.eend else b.edate end),'%Y-%m-%d') edatestring
from (
<include refid="grade.query"></include>
) a
inner join lect b on b.lectno=a.lectno
inner join pay p on p.payno=b.payno
inner join users u on u.userno=b.userno <isNotNull property="ustatus">and u.status=#ustatus#</isNotNull>
left outer join assign ua on ua.asno=u.asno
inner join cm c on c.cmno=b.cmno
inner join cm c2 on c2.cmno=c.pcmno
inner join cmev d on d.cmno=c.cmno
left outer join cminningscd e on e.cmisno = b.cmisno
left outer join lectinning f on f.lectno = b.lectno and f.cmino = e.cmino
left outer join comcode cc on cc.ccode = e.studyplace and cc.isuse=1
<dynamic prepend="where">
<isNotNull property="cshape" prepend="and">c.cshape = #cshape#</isNotNull>
<isNotNull property="studyplace" prepend="and">e.studyplace = #studyplace#</isNotNull>
<isNotNull property="est1not" prepend="and">a.ex0lectcnt &lt; a.ex0cnt</isNotNull>
<isNotNull property="est2not" prepend="and">a.ex1lectcnt &lt; a.ex1cnt</isNotNull>
<isNotNull property="est11not" prepend="and">a.sd0lectcnt &lt; a.sd0cnt</isNotNull>
<isNotNull property="est12not" prepend="and">a.sd1lectcnt &lt; a.sd1cnt</isNotNull>
<isNotNull property="est21not" prepend="and">a.rs0lectcnt &lt; a.rs0cnt</isNotNull>
<isNotNull property="cname" prepend="and">c2.cname like concat('%',#cname#,'%')</isNotNull>
<isNotNull property="cnamestr" prepend="and">c.cname like concat('%',#cnamestr#,'%')</isNotNull>
<isNotNull property="iscomplete" prepend="and">ifnull(b.iscomplete,0)=#iscomplete#</isNotNull>
<isNotNull property="cmisno" prepend="and">b.cmisno = #cmisno#</isNotNull>
<isNotNull property="ispasss" prepend="and">((a.sd0cnt &gt; 0 and a.sd0lectcnt &gt; 0))</isNotNull>
<isNotNull property="ispassa" prepend="and">a.ispassa = #ispassa#</isNotNull>
<isNotNull property="ispassex" prepend="and">(a.ispassm = #ispassex# and a.ispassf = #ispassex#) </isNotNull>
<isNotNull property="usernamestr" prepend="and">u.username like concat('%',#usernamestr#,'%')</isNotNull>
<isNotNull property="useridstr" prepend="and">u.userid like concat('%',#useridstr#,'%')</isNotNull>
<isNotEmpty property="usernameid" prepend="and">(u.userid like concat('%',#usernameid#,'%') or u.username like concat('%',#usernameid#,'%') or u.usernameeng like concat('%',#usernameid#,'%')) </isNotEmpty>
<isNotEmpty property="sdateall" prepend="and">(case when c.cshape = 0 and b.isrebate = 0 then p.payoktime else b.sdate end) &gt;= date_format(#sdateall#,'%Y-%m-%d 00:00:00')</isNotEmpty>
<isNotEmpty property="edateall" prepend="and">(case when c.cshape = 2 then e.eend else b.edate end) &lt;= date_format(#edateall#,'%Y-%m-%d 23:59:59')</isNotEmpty>
<isNotNull property="asname" prepend="and">ua.asname like concat('%',#asname#,'%')</isNotNull>
</dynamic>
) a
inner join lect b on b.lectno=a.lectno
inner join pay p on p.payno=b.payno
inner join users u on u.userno=b.userno <isNotNull property="ustatus">and u.status=#ustatus#</isNotNull>
left outer join assign ua on ua.asno=u.asno
inner join cm c on c.cmno=b.cmno
inner join cm c2 on c2.cmno=c.pcmno
inner join cmev d on d.cmno=c.cmno
<dynamic prepend="where">
<isNotNull property="est1not" prepend="and">a.ex0lectcnt &lt; a.ex0cnt</isNotNull>
<isNotNull property="est2not" prepend="and">a.ex1lectcnt &lt; a.ex1cnt</isNotNull>
<isNotNull property="est11not" prepend="and">a.sd0lectcnt &lt; a.sd0cnt</isNotNull>
<isNotNull property="est12not" prepend="and">a.sd1lectcnt &lt; a.sd1cnt</isNotNull>
<isNotNull property="est21not" prepend="and">a.rs0lectcnt &lt; a.rs0cnt</isNotNull>
<isNotNull property="cname" prepend="and">c2.cname like concat('%',#cname#,'%')</isNotNull>
<isNotNull property="edate" prepend="and">a.edatestring = #edate#</isNotNull>
</dynamic>
order by rno
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<update id="grade.lectcomplete.abs" parameterClass="hashtable">
update lect set <include refid="sql.up"></include>

View File

@ -680,6 +680,40 @@
where a.cmino=#cmino#
order by rno
</select>
<select id="lect.lectinnings.forattscd" parameterClass="hashtable" resultClass="lect">
select a.*
from (
select a.lectno,c.cmino,b.cmno,b.cshape,b.cname,b2.isoffabs
,a.isrebate,p.payoktime,a.iscomplete
,a.sdate,a.edate
,a.cmisno
,d.sseq,f.cname studyplacename
,d.estart,d.eend
,e.userno,e.userid, e.username
,g.istatus
,row_number() over(order by a.cdt desc,e.username) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join pay p on p.payno = a.payno
inner join cm b on b.cmno = a.cmno
inner join cmev b2 on b2.cmno = b.cmno
inner join cminning c on c.cmno = b.cmno
left outer join cminningscd d on d.cmisno = a.cmisno and d.cmino = c.cmino
inner join users e on e.userno = a.userno
left outer join comcode f on f.ccode = d.studyplace and f.isuse =1
left outer join lectinning g on g.cmino = c.cmino and g.lectno = a.lectno
where a.status=1 and a.ischanged=0 and c.isscd=1 and c.scdtype=0 and b.cshape=2
<isNotNull property="edate">and date_format(a.edate,'%Y%m%d') = date_format(#edate#,'%Y%m%d')</isNotNull>
<isNotNull property="cname">and b.cname like concat('%',#cname#,'%')</isNotNull>
<isNotNull property="studyplace">and d.studyplace = #studyplace#</isNotNull>
<isNotEmpty property="searchtext">
<isEqual property="searchtype" compareValue="usernamestr">and e.username like concat('%',#searchtext#,'%')</isEqual>
<isEqual property="searchtype" compareValue="useridstr">and e.userid like concat('%',#searchtext#,'%')</isEqual>
</isNotEmpty>
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<select id="lect.atts" parameterClass="hashtable" resultClass="lect">
select a.lectno,a.isrebate,a.attrate,a.stime,a.sip,a.etime,a.eip
@ -705,6 +739,7 @@
,u.userno,u.userid,u.username
,ua.asname
,c.stime,c.etime,c.istatus
,c.udt,d.userid unoid
,row_number() over(order by u.username) rno
,count(b.lectno) over() pagetotalcount
from cminning a
@ -712,7 +747,13 @@
inner join users u on u.userno=b.userno and u.status=1
left outer join assign ua on ua.asno=u.asno
left outer join lectinning c on c.lectno=b.lectno and c.cmino=a.cmino
where a.cmino=#cmino#
left outer join users d on d.userno = c.uno
left outer join cminningscd e on e.cmisno = b.cmisno
<dynamic prepend="where">
<isNotNull property="cmino" prepend="and">a.cmino=#cmino#</isNotNull>
<isNotNull property="cmisno" prepend="and">e.cmisno=#cmisno#</isNotNull>
<isNotNull property="lectno" prepend="and">b.lectno=#lectno#</isNotNull>
</dynamic>
group by b.lectno,a.cmino,u.userno,u.userid,u.username,ua.asname,c.stime,c.etime,c.istatus
order by u.username
</select>
@ -733,6 +774,7 @@
<dynamic prepend="where">
<isNotNull property="lectno" prepend="and">a.lectno=#lectno#</isNotNull>
<isNotNull property="userno" prepend="and">a.userno=#userno#</isNotNull>
<isNotNull property="isscd" prepend="and">ifnull(b.isscd,0)=#isscd#</isNotNull>
</dynamic>
order by b.iseq,d.stime
</select>
@ -760,36 +802,101 @@
order by cdt desc
</select>
<select id="lect.lectexes" parameterClass="hashtable" resultClass="lectex">
select a.lectno,a.userno,a.cmno,a.isrebate
,b.exno
,c.estart,c.eend,c.eip,c.tpoint,c.recount,c.entercount,c.cblock
,d.username,d.userid
,e.asname
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">d.username</isNull>) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join cmex b on b.isdel=0 <isNotNull property="exno">and b.exno=#exno#</isNotNull>
left outer join lectex c on c.lectno=a.lectno and c.exno=b.exno
inner join users d on d.userno=a.userno
left outer join assign e on e.asno=d.asno
where a.cmno=#cmno# and a.status=1 and a.ischanged=0
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull>
<isNotNull property="estate">
<isEqual property="estate" compareValue="0">and c.estart is null</isEqual>
<isEqual property="estate" compareValue="1">and c.estart is not null and c.eend is null</isEqual>
<isEqual property="estate" compareValue="2">and c.eend is not null</isEqual>
</isNotNull>
order by rno
select a.*
from (
select a.lectno,a.userno,a.cmno,a.isrebate
,b.exno
,c.estart,c.eend,c.eip,c.tpoint,c.recount,c.entercount,c.cblock
,d.username,d.userid
,e.asname
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">d.username</isNull>) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join cmex b on b.isdel=0 <isNotNull property="exno">and b.exno=#exno#</isNotNull>
left outer join lectex c on c.lectno=a.lectno and c.exno=b.exno
inner join users d on d.userno=a.userno
left outer join assign e on e.asno=d.asno
where a.status=1 and a.ischanged=0
<isNotNull property="extype">and b.extype = #extype#</isNotNull>
<isNotNull property="cmno">and a.cmno = #cmno#</isNotNull>
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull>
<isNotNull property="estate">
<isEqual property="estate" compareValue="0">and c.estart is null</isEqual>
<isEqual property="estate" compareValue="1">and c.estart is not null and c.eend is null</isEqual>
<isEqual property="estate" compareValue="2">and c.eend is not null</isEqual>
</isNotNull>
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<select id="lect.lectexes.all" parameterClass="hashtable" resultClass="lectex">
select a.*
from (
select a.lectno,a.userno,a.cmno,a.isrebate
,p.payoktime,a.sdate,edate
,b.exno,b.exname
,b2.cshape,b2.cname
,c.estart,c.eend,c.eip,c.tpoint,c.recount,c.entercount,c.cblock
,d.username,d.userid
,e.asname
,f.estart lestart,f.eend leend,f.sseq
,g.cname studyplacename
,a.iscomplete
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">d.username</isNull>) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join cmex b on b.isdel=0 and b.cmno = a.cmno
inner join cm b2 on b2.cmno = b.cmno
inner join pay p on p.payno = a.payno
left outer join lectex c on c.lectno = a.lectno and c.exno =b.exno
inner join users d on d.userno = a.userno
left outer join assign e on e.asno = d.asno
left outer join cminningscd f on f.cmisno = a.cmisno
left outer join comcode g on g.ccode = f.studyplace and g.isuse =1
where a.status=1 and a.ischanged=0
<isNotNull property="extype">and b.extype = #extype#</isNotNull>
<isNotNull property="cmno">and a.cmno = #cmno#</isNotNull>
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull>
<isNotEmpty property="edate">and date_format(a.edate,'%Y%m%d')=date_format(#edate#,'%Y%m%d')</isNotEmpty>
<isNotNull property="cshape">and b2.cshape = #cshape#</isNotNull>
<isNotEmpty property="cname">and b2.cname like concat('%',#cname#,'%')</isNotEmpty>
<isNotEmpty property="cnamestr">and b2.cname like concat('%',#cname#,'%')</isNotEmpty>
<isNotNull property="iscomplete">and ifnull(a.iscomplete,0) = #iscomplete#</isNotNull>
<isNotNull property="studyplace">and f.studyplace = #studyplace#</isNotNull>
<isNotEmpty property="usernamestr">and d.username like concat('%',#usernamestr#,'%')</isNotEmpty>
<isNotEmpty property="useridstr">and d.userid like concat('%',#useridstr#,'%')</isNotEmpty>
<isNotEmpty property="searchtext">
<isEqual property="searchtype" compareValue="usernamestr">and d.username like concat('%',#usernamestr#,'%')</isEqual>
<isEqual property="searchtype" compareValue="useridstr">and d.userid like concat('%',#useridstr#,'%')</isEqual>
</isNotEmpty>
<isNotNull property="estate">
<isEqual property="estate" compareValue="0">and c.estart is null</isEqual>
<isEqual property="estate" compareValue="1">and c.estart is not null and c.eend is null</isEqual>
<isEqual property="estate" compareValue="2">and c.eend is not null</isEqual>
</isNotNull>
<isNotEmpty property="sdateall">and (case when b2.cshape = 0 and a.isrebate = 0 then p.payoktime else a.sdate end) &gt;= date_format(#sdateall#,'%Y-%m-%d 00:00:00')</isNotEmpty>
<isNotEmpty property="edateall">and (case when b2.cshape = 2 then f.eend else a.edate end) &lt;= date_format(#edateall#,'%Y-%m-%d 23:59:59')</isNotEmpty>
<isNotEmpty property="asname">and e.asname like concat('%',#asname#,'%')</isNotEmpty>
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<!--문제 점수만 변경, 문제 재설정변경-->
<update id="lect.reexam" parameterClass="hashtable">
insert into lectexrelog(lectno,exno,estart,eend,eip,<include refid="sql.inc"></include>)
select a.lectno lectno,a.exno exno,a.estart estart,a.eend eend,a.eip eip,<include refid="sql.inv"></include>
from lectex a
where a.lectno=#lectno# and a.exno=#exno#;
update lectex set estart=null,eend=null,eip=null,tpoint=0,recount=recount+1,entercount=0,cblock=0 where lectno=#lectno# and exno=#exno#;
update lectexq a
inner join cmex b on b.exno=a.exno and b.eqtype=0
inner join cmex b on b.exno=a.exno <!--and b.eqtype=0-->
set a.atext=null,a.qinos=null,a.cpoint=0,a.iscorrect=null
where a.lectno=#lectno# and a.exno=#exno#;
delete from lectexq where lectno=#lectno# and exno=#exno# and eqno in (
<!--delete from lectexq where lectno=#lectno# and exno=#exno# and eqno in (
select a.eqno
from (
select b.eqno
@ -797,9 +904,9 @@
inner join lectexq b on b.lectno=#lectno# and b.exno=a.exno
where a.exno=#exno# and a.eqtype=1
) a
);
);-->
insert into lectexq (lectno,exno,eqno,cpoint,dpoint,qseq,<include refid="sql.inc"></include>)
<!--insert into lectexq (lectno,exno,eqno,cpoint,dpoint,qseq,<include refid="sql.inc"></include>)
select a.lectno,a.exno,a.eqno,0,a.rpoint,row_number() over(order by case when a.israndq=0 then a.qseq else rand() end),<include refid="sql.inv"></include>
from (
select a.*
@ -820,9 +927,20 @@
) a
where a.rank &lt;= a.qcount
) a
order by rand();
order by rand();-->
</update>
<select id="lect.reexam.log" parameterClass="hashtable" resultClass="lectex">
select a.*
from (
select a.estart,eend,eip
,row_number() over(order by a.cdt desc) rno
,count(a.cno) over() pagetotalcount
from lectexrelog a
where a.lectno=#lectno# and a.exno=#exno#
) a
order by a.rno
</select>
<sql id="lectexcreate">
insert into lectexq (lectno,exno,eqno,cpoint,dpoint,qseq,<include refid="sql.inc"></include>)
select a.lectno,a.exno,d.eqno,0,d.rpoint,row_number() over(order by case when c.israndq=0 then d.qseq else rand() * d.qseq end),<include refid="sql.inv"></include>
@ -915,6 +1033,7 @@
update lectexq set <include refid="sql.up"></include>
,rechecktime=<include refid="sql.now"></include>
,cpoint=#cpoint#
<isNotNull property="iscorrect">,iscorrect = #iscorrect#</isNotNull>
where lectno=#lectno# and exno=#exno# and eqno=#eqno#;
update lectex a
@ -938,13 +1057,15 @@
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">d.username</isNull>) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join cmsd b on b.isdel=0 <isNotNull property="sdno">and b.sdno=#sdno#</isNotNull>
inner join cmsd b on b.isdel=0 and b.cmno = a.cmno <isNotNull property="sdno">and b.sdno=#sdno#</isNotNull>
left outer join lectsd c on c.lectno=a.lectno and c.sdno=b.sdno
left outer join fileinfo cf on cf.fgno=c.fgno and cf.isdel=0
inner join users d on d.userno=a.userno
left outer join assign e on e.asno=d.asno
left outer join mch_source_v_lectsd_list f on f.DOC_ID = concat(b.sdno ,'_',a.lectno )
where a.cmno=#cmno# and a.status=1 and a.ischanged=0
where a.status=1 and a.ischanged=0
<isNotNull property="sdtype">and b.sdtype=#sdtype#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno# </isNotNull>
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull>
<isNotNull property="sdstate">
<isEqual property="sdstate" compareValue="0">and c.submittime is null</isEqual>
@ -952,6 +1073,60 @@
</isNotNull>
order by rno
</select>
<select id="lect.lectsds.all" parameterClass="hashtable" resultClass="lectsd">
select a.*
from (
select a.lectno,a.userno,a.cmno,a.isrebate
,p.payoktime,a.sdate,a.edate
,g.cname,g.cshape
,b.sdno
,c.atext,round((f.MAX_SCORE/100)) copyrate,c.iscopy,c.cpoint,c.feedb,c.submittime,c.submitip,c.checktime,c.checkip
,d.username,d.userid,d.usertype
,e.asname
,h.estart lestart,h.eend leend,h.sseq
,i.cname studyplacename
,a.iscomplete
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">d.username</isNull>) rno
,count(a.cdt) over() pagetotalcount
from lect a
inner join pay p on p.payno = a.payno
inner join cm g on g.cmno = a.cmno
inner join cmsd b on b.isdel=0 and b.cmno = a.cmno
left outer join lectsd c on c.lectno = a.lectno and c.sdno = b.sdno
inner join users d on d.userno = a.userno
left outer join assign e on e.asno = d.asno
left outer join mch_source_v_lectsd_list f on f.DOC_ID = concat(b.sdno ,'_',a.lectno )
left outer join cminningscd h on h.cmisno = a.cmisno
left outer join comcode i on i.ccode = h.studyplace and i.isuse=1
where a.status=1 and a.ischanged=0
<isNotEmpty property="edate">and date_format(a.edate,'%Y%m%d')=date_format(#edate#,'%Y%m%d')</isNotEmpty>
<isNotNull property="cshape">and g.cshape = #cshape#</isNotNull>
<isNotEmpty property="cname">and g.cname like concat('%',#cname#,'%')</isNotEmpty>
<isNotEmpty property="cnamestr">and g.cname like concat('%',#cname#,'%')</isNotEmpty>
<isNotNull property="iscomplete">and ifnull(a.iscomplete,0) = #iscomplete#</isNotNull>
<isNotNull property="studyplace">and h.studyplace = #studyplace#</isNotNull>
<isNotNull property="usernamestr">and d.username like concat('%',#usernamestr#,'%')</isNotNull>
<isNotNull property="useridstr">and d.userid like concat('%',#useridstr#,'%')</isNotNull>
<isNotNull property="sdtype">and b.sdtype=#sdtype#</isNotNull>
<isNotNull property="cmno">and a.cmno=#cmno# </isNotNull>
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull>
<isNotNull property="sdstate">
<isEqual property="sdstate" compareValue="0">and c.submittime is null</isEqual>
<isEqual property="sdstate" compareValue="1">and c.submittime is not null</isEqual>
</isNotNull>
<isNotEmpty property="searchtype">
<isNotEmpty property="searchtext">
<isEqual property="searchtype" compareValue="usernamestr">and d.username like concat('%',#searchtext#,'%')</isEqual>
<isEqual property="searchtype" compareValue="useridstr">and d.userid like concat('%',#searchtext#,'%')</isEqual>
</isNotEmpty>
</isNotEmpty>
<isNotEmpty property="sdateall">and (case when g.cshape = 0 and a.isrebate = 0 then p.payoktime else a.sdate end) &gt;= date_format(#sdateall#,'%Y-%m-%d 00:00:00')</isNotEmpty>
<isNotEmpty property="edateall">and (case when g.cshape = 2 then h.eend else a.edate end) &lt;= date_format(#edateall#,'%Y-%m-%d 23:59:59')</isNotEmpty>
<isNotNull property="asname">and e.asname like concat('%',#asname#,'%')</isNotNull>
) a
<include refid="sql.pagedynamic"></include>
order by rno
</select>
<select id="lect.lectsd" parameterClass="hashtable" resultClass="lectsd">
select a.sdno,a.tpoint sdtpoint
,b.lectno,b.atext,b.fgno,round((g.MAX_SCORE/100)) copyrate,b.iscopy,b.cpoint,b.feedb,b.submittime,b.checktime
@ -1314,6 +1489,7 @@
,cc.ccode studyplace
,cc.cname studyplacename
,case when scd.eend is not null then scd.eend else a.edate end as sortedate
,ci.scdtype
from lect a
inner join cm b on b.cmno=a.cmno <!--and b.sstime &lt; <include refid="sql.now"></include>-->
<!--inner join cm pc on pc.cmno=case when a.ispc=1 then a.pcno else a.cmno end and pc.sstime &lt; <include refid="sql.now"></include>-->
@ -1323,9 +1499,15 @@
inner join users u on u.userno=a.userno
left outer join assign ua on ua.asno=u.asno
left outer join cminningscd scd on scd.cmisno = a.cmisno
left outer join cminning ci on ci.cmino = scd.cmino
left outer join comcode cc on cc.ccode = b.studyplace
where a.userno=#userno# and a.status=1 and a.ischanged=0 and a.sdate &lt; <include refid="sql.now"></include>
<isNotNull property="cshape">and b.cshape=#cshape#</isNotNull>
<isNotNull property="issubtable">
and (b.cshape = 2 and scd.estart &gt; '1900-01-01' and scd.eend &gt; '1900-01-01' and ifnull(a.iscomplete,0) = 0 and scd.estart &gt; now()
and (date_add(scd.eend,interval +5 day) &gt; date_format(now(),'%Y-%m-%d 23:59:59'))
and date_add(a.cdt, interval +1 year) &gt;= date_format(now(),'%Y-%m-%d 23:59:59'))
</isNotNull>
union all
select a.lectno,a.cmno,a.userno,a.isrebate,a.iscomplete
,case when a.sdate is null then b.sstime else a.sdate end as sdate
@ -1339,6 +1521,7 @@
,null studyplace
,null studyplacename
,a.edate as sortedate
,null scdtype
from pay e
inner join lect a on a.payno=e.payno and a.status=1 and a.ischanged=0
inner join cm b on b.cmno=a.cmno and b.sstime &lt; <include refid="sql.now"></include>
@ -1361,6 +1544,7 @@
,null studyplace
,null studyplacename
,a.edate as sortedate
,null scdtype
from lect a0
inner join pay e on e.payno=a0.payno and e.isgroup=1 and e.userno&lt;&gt;#userno# and e.pstatus=1
inner join lect a on a.payno=e.payno and a.status=1 and a.ischanged=0
@ -1635,6 +1819,11 @@
) b on b.pplno = a.pplno
set a.cmisno = b.cmisno
where b.lectno = #lectno#;
update lect a
left outer join cminningscd b on b.cmisno = a.cmisno
set a.edate = case when b.eend is not null then b.eend else a.edate end
where a.lectno = #lectno#;
</update>
<select id="lect.checkuser.cmisno" parameterClass="hashtable" resultClass="int">
select count(c.cmisno )
@ -1662,6 +1851,19 @@
limit 1
) a
</select>
<select id="lect.eqno.listforcheck" parameterClass="string" resultClass="questionitem">
select e.qno,b.eqno,e.qino,e.qitext,d.atype,c.atext,d.ispassspace,d.isignorecase
from cmex a
inner join cmexq b on b.exno = a.exno
inner join lectexq c on c.eqno = b.eqno
inner join question d on d.qno = b.qno
inner join questionitem e on e.qno = d.qno
where e.isright =1 and e.isdel=0
<isNotNull property="exno">and a.exno = #exno#</isNotNull>
<isNotNull property="lectno">and c.lectno = #lectno#</isNotNull>
<isNotEmpty property="eqnos">and b.eqno in ($eqnos$)</isNotEmpty>
order by e.qno,e.qino
</select>
</statements>
</sqlMap>

View File

@ -47,11 +47,24 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
,a.udt=now(),a.uno=#uno#,a.uip=#uip#
where a.payno = #payno# and c.pstatus = 1
</update>
@ -290,11 +303,24 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on a.cmisno = d.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1
</update>
<update id="pay.paydvr.save" parameterClass="hashtable">
@ -375,11 +401,24 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1
<!--update examuser a
@ -425,11 +464,24 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1;
<!--update examuser a
@ -896,11 +948,24 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(<include refid="sql.now"></include>,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(<include refid="sql.now"></include>,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1;
</update>
<update id="pay.abspay" parameterClass="hashtable">
@ -929,26 +994,52 @@
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1
</update>
<update id="pay.unpaymoney" parameterClass="hashtable">
update pay
set isunpay=2,payoktime=#payoktime#,udt=now(),uno=#uno#,uip=#uip#
where payno=#payno# and isunpay=1;
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
set
a.sdate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end,
a.edate = case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' and b.cshape &lt;&gt; 1 then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
update pay
set isunpay=2,payoktime=#payoktime#,udt=now(),uno=#uno#,uip=#uip#
where payno=#payno# and isunpay=1;
update lect a
inner join cm b on a.cmno = b.cmno
inner join pay c on a.payno = c.payno
left outer join cminningscd d on d.cmisno = a.cmisno
set
a.sdate = case when b.cshape &lt;&gt; 1 then date_format(a.cdt,'%Y-%m-%d 00:00:00')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(c.payoktime,'%Y-%m-%d 00:00:00')
else b.sstime end
end,
a.edate = case when b.cshape &lt;&gt; 1 then
case when d.eend is not null then date_format(d.eend,'%Y-%m-%d 23:59:59')
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime end
end
else
case when date_format(b.retime,'%Y-%m-%d')='2099-12-31' then date_format(date_add(c.payoktime,interval b.studydays day),'%Y-%m-%d 23:59:59')
else b.setime
end
end
where a.payno = #payno# and c.pstatus = 1;
</update>
<select id="pay.pplogs" parameterClass="hashtable" resultClass="pplog">
@ -960,9 +1051,11 @@
,CAST(AES_DECRYPT(UNHEX(a.mphone), <include refid="sql.digest"></include>) AS char) mphone
,CAST(AES_DECRYPT(UNHEX(a.taxemail), <include refid="sql.digest"></include>) AS char) taxemail
,b.cdt
,c.eend
from pplog a
inner join cm a2 on a2.cmno=a.cmno
left outer join pay b on b.pplno=a.pplno
left outer join cminningscd c on c.cmisno = a.cmisno
<dynamic prepend="where">
<isNotNull property="pplno" prepend="and">a.pplno=#pplno#</isNotNull>
<isNotNull property="userno" prepend="and">a.userno=#userno#</isNotNull>

View File

@ -43,7 +43,7 @@ namespace NP.FO.Controllers
//lectInning.daylectinninglimit = lectInning.daylectinninglimit == 0 ? 9999 : lectInning.daylectinninglimit;
lectInning.daylectinninglimit = vm.intval2;
}
if (vm.LectInnings.Count() > 0 && !string.IsNullOrEmpty(vm.LectInnings.FirstOrDefault().existslectinning) )
if (vm.LectInnings.Count() > 0 /*&& !string.IsNullOrEmpty(vm.LectInnings.FirstOrDefault().existslectinning)*/ )
{
vm.intval = Dao.Get<LectInning>("cr.lectinnings", new System.Collections.Hashtable() { /*{ "lectno", vm.croomlectno }*/ {"userno",SUserInfo.UserNo }, { "isfinishtoday", 1 } }).Count();
}

View File

@ -178,7 +178,7 @@ namespace NP.FO.Controllers
if (GetPOPUPS.Count() > 0)
{
POPUP = string.Join("nptechpopuplistseparator", GetPOPUPS.Select(s => string.Format("{0}nptechpopupseparator{1}nptechpopupseparator{2}nptechpopupseparator{3}nptechpopupseparator{4}nptechpopupseparator{5}nptechpopupseparator{6}nptechpopupseparator{7}nptechpopupseparator{8}"
, s.pno, s.ptitle, "", s.toppx, s.leftpx, s.pwidth, s.pheight+37, s.purl, s.zindex + 100)));
, s.pno, s.ptitle, "", s.toppx, s.leftpx, s.pwidth, s.pheight+4, s.purl, s.zindex + 100)));
}
}
return POPUP;

View File

@ -161,6 +161,11 @@ namespace NP.FO.Controllers
vm.Lects = Dao.Get<Lect>("lect.mylectures", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo }, { "cgcode", vm.intval > 0 ? TestCode3 : null }, { "cshape", vm.stringval } });
return View(vm);
}
public ActionResult LectureOn(VMMy vm)
{
vm.Lects = Dao.Get<Lect>("lect.mylectures", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo }, { "cgcode", vm.intval > 0 ? TestCode3 : null }, { "cshape", 2 },{"issubtable" ,1} });
return View(vm);
}
public ActionResult CertPrint(VMMy vm)
{
ViewBag.TestCode = TestCode;

View File

@ -728,6 +728,7 @@
<SubType>Designer</SubType>
</None>
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" />
<Content Include="Views\My\LectureOn.cshtml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Base\Base.csproj">

View File

@ -52,7 +52,7 @@
else
{
<div class="brdSch"><div>
<input type="text" value="@Model.scc" id="subcon" placeholder="제목이나 내용을 입력하세요"><input type="button" onclick="$('#scc').val($('#subcon').val());findme(1)" value="검색"></div></div>
<input type="text" value="@Model.scc" id="subcon" placeholder="제목/내용/작성자 이름을 입력하세요"><input type="button" onclick="$('#scc').val($('#subcon').val());findme(1)" value="검색"></div></div>
if (Model.BM.bmtype > 0)
{
<div class="notiBtn top"><a href="#" onclick="gow()">게시글 등록</a></div>

View File

@ -2,16 +2,16 @@
@{
}
<ul class="lctpTab col4">
<ul class="lctpTab col3">
<li class="@(Model.tabidx == 0 ? "current":"")"><a onclick="gotab(0, this)" style="@(Model.tabidx == 0 ? "cursor: default;":"")" href="#;">전체</a></li>
<li class="@(Model.tabidx == 1 ? "current":"")"><a onclick="gotab(1, this)" style="@(Model.tabidx == 1 ? "cursor: default;":"")" href="#">시험</a></li>
<li class="@(Model.tabidx == 2 ? "current":"")"><a onclick="gotab(2, this)" style="@(Model.tabidx == 2 ? "cursor: default;":"")" href="#">과제</a></li>
<li class="@(Model.tabidx == 3 ? "current":"")"><a onclick="gotab(3, this)" style="@(Model.tabidx == 3 ? "cursor: default;":"")" href="#">토론</a></li>
@*<li class="@(Model.tabidx == 3 ? "current":"")"><a onclick="gotab(3, this)" style="@(Model.tabidx == 3 ? "cursor: default;":"")" href="#">토론</a></li>*@
</ul>
@if (Model.tabidx == 0 || Model.tabidx == 3)
@*@if (Model.tabidx == 0 || Model.tabidx == 3)
{
<div style="color: #0094ff; text-align: right;">※ 토론은 참여완료 후에도 추가로 참여할 수 있습니다.</div>
}
}*@
<div class="evaList">
<table>
<tbody>

View File

@ -7,8 +7,9 @@
<tr><th>시험종류</th><td>@Model.LectEX.exname</td></tr>
<tr><th>시험제목</th><td>@Model.LectEX.exname</td></tr>
<tr><th>시험내용</th><td>@Html.Raw((Model.LectEX.edesc??"").Replace(System.Environment.NewLine, "<br />"))</td></tr>
<tr><th>평가점수</th><td>@(Model.LectEX.tpoint+"점")</td></tr>
<tr><th>제한시간</th><td>@(Model.LectEX.etime == 0 ? "제한없음" : string.Format("{0} 분", Model.LectEX.etime))</td></tr>
<tr><th>응시시간</th><td>수강 종료일 (@Model.LectEX.edate.Value.ToString("yyyy-MM-dd")) 이내</td></tr>
<tr><th>응시기간</th><td>@(Model.LectEX.sdate.Value.ToString("yy-MM-dd hh:mm")) ~ @(Model.LectEX.edate.Value.ToString("yy-MM-dd hh:mm"))까지(진도율 @(Model.LectEX.econdition)%이상 응시가능)</td></tr>
<tr><th>재응시여부</th><td>@(Model.LectEX.isreexamable == 0 ? "불가능" : "가능")</td></tr>
<tr><th>응시상태</th><td>@(Model.LectEX.estart == null ? ("응시전"+(Model.LectEX.recount > 0 ? string.Format(" (재응시승인 {0}회)", Model.LectEX.recount):"")) : Model.LectEX.eend != null ? "응시완료" : Model.LectEX.rtime < 1 ? "응시시간초과":("응시시작 (남은시간 " + Model.LectEX.rtime + "분)" +(Model.LectEX.relaylimit.Value <= Model.LectEX.entercount?", [이어보기 초과]":"")))</td></tr>
@if (Model.LectEX.estart != null)
@ -17,7 +18,15 @@
}
</table>
<ul class="lctBtn col1">
<li><a href="#" class="bk" onclick="goexam()">@(Model.LectEX.eend == null && (Model.LectEX.estart == null || Model.LectEX.relaylimit.Value >= Model.LectEX.entercount) ? "응시하기" : "결과보기")</a></li>
@if(Model.LectEX.eend == null && (Model.LectEX.estart == null || Model.LectEX.relaylimit.Value >= Model.LectEX.entercount))
{
<li><a href="#" class="bk" onclick="goexam()">응시하기</a></li>
}
@if (Model.LectEX.ispass == 1)
{
<li><a href="#" class="bk" onclick="showexam()">결과보기</a></li>
}
@if (Model.LectEX.edate > DateTime.Now && Model.LectEX.estart != null && Model.LectEX.isreexamable == 1 && Model.LectEX.iscomplete != 1)
{
<li><a href="#" class="bk" onclick="javascript:reexam(@Model.LectEX.exno,@Model.LectEX.lectno)">재응시</a></li>
@ -58,6 +67,11 @@
}
}
}
}
}
function showexam() {
if (@Model.LectEX.ispass == 1) {
msg("수료기준을 통과하지 못하여 비공개처리되었습니다.");
} else {
//응시결과창
if (@Model.LectEX.isresultopen == 1) {

View File

@ -4,7 +4,7 @@
}
<div class="lctcScore">
<input type="hidden" id="mobile" name="mobile" value="@(ViewBag.Mobile)" />
<div class="lctCont">
<div class="lctCont" style="padding-bottom:0px;">
<h5>나의성적</h5>
<table>
<thead>
@ -57,6 +57,32 @@
<span style="color:red;">※ 관련 규정에 의거 동시접속방지 기능으로 인해 다른 환경에서 접속 시 기존 환경에서는 로그아웃 되어 동영상 시청 진도율이 반영되지 않습니다.</span>
</div>
</div>
@if(Model.Lect.isoffabs == 1)
{
<div class="lctcScore">
<div class="lctCont">
<h5>집합교육 안내</h5>
<table>
<thead>
<tr>
<th>집체일정</th>
<th>교육장소</th>
<th>준비물</th>
<th>출석여부</th>
</tr>
</thead>
<tbody>
<tr>
<td>@(string.Format("{0} {1}"+":"+"{2} ~ {3}"+":"+"{4}",Model.Lect.estart.ToString("yyyy-MM-dd"),Model.Lect.estart.ToString("HH"), Model.Lect.estart.ToString("mm"), Model.Lect.eend.ToString("HH"), Model.Lect.eend.ToString("mm")))</td>
<td>@Model.Lect.studyplacename</td>
<td>신분증,필기도구,과제</td>
<td>@Model.Lect.istatusname</td>
</tr>
</tbody>
</table>
</div>
</div>
}
<div class="lctCont" style="padding-left:0px;">
<div class="lctcHalf">
<div>
@ -180,7 +206,7 @@
} else if (preflag < 1) {
msg("이전 회차 학습을 완료한 이후 학습이 가능합니다.");
} else if (notoverflag < 1) {
msg("일일 최대 학습회차는 10시간(10차시)입니다.");
msg("관련 법령에 의해 일일 최대 학습가능한 시간은 10시간(10차시)입니다.");
} else {
_cmino = cmino;
chkcontent();

View File

@ -6,7 +6,7 @@
<a href="#" onclick="showatt()">출결이력조회</a>
</div>*@
<div class="lctcScore" style="text-align:center; background:#ffdfdf;">
<span>현재 오늘 학습 가능한 10차시 중 (@(Model.intval2 - Model.intval))차시가 학습가능 합니다.</span><br />
<span>현재 오늘 학습 가능한 10차시 중 <span style="color:red;">@(Model.intval2 - Model.intval)</span>차시가 학습가능 합니다.</span><br />
<span>※ 관련 법령에 의해 일일 최대 학습시간은 학습중인 모든 과정에 대하여 10시간(10차시)입니다.</span>
</div>
@*<h3>오늘의 학습회차(@Model.intval/@Model.intval2)</h3>*@
@ -179,7 +179,7 @@
} else if (preflag < 1) {
msg("이전 회차 학습을 완료한 이후 학습이 가능합니다.");
} else if (notoverflag < 1) {
msg("일일 최대 학습회차는 10시간(10차시)입니다.");
msg("관련 법령에 의해 일일 최대 학습가능한 시간은 10시간(10차시)입니다.");
} else {
_cmino = cmino;
chkcontent();

View File

@ -27,29 +27,31 @@
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
}
}
else if (Model.CM.cshape == 1)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.ssretimeToDay)일) | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.ssretimeToDay)일) | @Model.CM.cname</label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname</label></p>
}
}
else if (Model.CM.cshape == 2)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname (@(Model.CM.studytime)시간)</label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span></label></p>
}
}
</li>
@ -74,8 +76,12 @@
</p>
}
@if (Model.stringval == "0" ) {
<h4 class="clsTitle">신청내용</h4>
<table class="subTable">
<h4 class="clsTitle">신청내용<span style="color:red;font-weight:700;"> (필수확인)</span></h4>
if(Model.CM.cshape == 2)
{
<p class="subTxt" style="padding-bottom:15px;">교육종료일 : @(Model.PPLog.eendymd)까지</p>
}
<table class="subTable" style="border:3px solid red;">
<tr>
<th>교육유형</th>
@if (!string.IsNullOrEmpty(Model.stringval3)){<th>기술인분류</th>}
@ -118,18 +124,19 @@
{
<h4 class="clsTitle">교육수료조건</h4>
<p class="subTxt">
1. <span class="subTxt red">동영상강의 28시간 진도율 90% 이상 및 집체교육 7시간 이수</span><br />
1. <span class="subTxt red">동영상강의 35시간 진도율 90% 이상</span><br />
2. <span class="subTxt red">과제물 제출(표지 제외 A4 2장 이상 분량)</span><br />
3. 총점 70점 이상 득점 : 시험평가(60점) + 과제(20점) + 진도율(20점) =100점<br /><br />
<span class="subTxt red">※ 위 3가지 조건 모두 만족하셔야 수료가 가능합니다.</span><br />
<span class="subTxt red">※ 하루 최대 학습 시간은 10차시 입니다.</span><br />
<span style="font-size:15pt;color:#0047a7;">※ 현재는 집체교육 참석없이 온라인교육으로만 35시간 수강이 가능합니다.</span>
@*※ 국토부 장관이 인정하는 사유로 집체교육을 실시 하지 못할 시 에는 동영상강의로 대체되며 7시간을 100% 이수하셔야 수료가 가능합니다.<br />*@
</p>
<h4 class="clsTitle">교육수강기한</h4>
<p class="subTxt">
온라인교육은 신청일로 부터 한달 내에 28시간(집체교육을 제외한 시간)을 수강하셔야 하며 <span class="subTxt red">1년 이내</span> 교육수료가 되지 않으면 수료 및 환불이 불가능합니다.
온라인교육은 신청일로 부터 <span class="subTxt red">최대 1년 이내</span>에 수료하셔야 하며 <span class="subTxt red">1년 이내</span> 교육수료가 되지 않으면 수료 및 환불이 불가능합니다.
</p>
}
<p class="subTxt" style="text-align:center;margin-top:30px;">

View File

@ -24,17 +24,17 @@ else
<ul class="smtlChk">
<li>
@*@if (Model.CM.cshape == 0)
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.ssrename) (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname</label></p>
}
else if (Model.CM.cshape == 1)
{
<p><label>@(Model.CM.tseq)기 <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@Model.CM.ssrename (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원</span></label></p>
}
else if (Model.CM.cshape == 2)
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.ssrename) (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원 ※ 집체교육 선택 필수</span></label></p>
}*@
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.ssrename) (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname</label></p>
}
else if (Model.CM.cshape == 1)
{
<p><label>@(Model.CM.tseq)기 <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@Model.CM.ssrename (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원</span></label></p>
}
else if (Model.CM.cshape == 2)
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.ssrename) (@(Model.CM.ssretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원 ※ 집체교육 선택 필수</span></label></p>
}*@
@if (Model.CM.cshape == 0)
{
@ -44,40 +44,42 @@ else
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
}
}
else if (Model.CM.cshape == 1)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@Model.CM.ssrename (@(Model.CM.ssretimeToDay)일) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@Model.CM.ssrename (@(Model.CM.ssretimeToDay)일) </span> | @Model.CM.cname </label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname </label></p>
}
}
else if (Model.CM.cshape == 2)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>@(Model.CM.ssrename) (@(Convert.ToInt32(Model.CM.ssretimeToDay) * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='gry'>@(Model.CM.ssrename) (@(Convert.ToInt32(Model.CM.ssretimeToDay) * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label><span class='gry'>@Model.CM.cname @(Model.CM.ssrename) (@(Model.CM.studytime)시간) </span></label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label><span class='gry'>@Model.CM.cname @*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | </label></p>
}
}
@*@if (Model.CM.applicableCM == "정상접수")
{
<span class="smtlChkBtn smtlChk01">정상접수</span>
}
else
{
<span class="smtlChkBtn smtlChk02">대기접수</span>
}*@
{
<span class="smtlChkBtn smtlChk01">정상접수</span>
}
else
{
<span class="smtlChkBtn smtlChk02">대기접수</span>
}*@
</li>
</ul>
<div class="apyCost">

View File

@ -38,30 +38,34 @@
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>
}
}
else if (Model.CM.cshape == 1)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.ssretimeToDay)일) | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.ssretimeToDay)일) | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>*@
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.ssretimeToDay)일) | @Model.CM.cname </label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원</span></label></p>*@
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname </label></p>
}
}
else if (Model.CM.cshape == 2)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원 @*※ 집체교육 선택 필수*@</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원 @*※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname (@(Model.CM.studytime)시간)</label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원 @*※ 집체교육 선택 필수*@</span></label></p>
}
@*<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studydays * 24)시간) </span> | @Model.CM.cname | <span class='red'><span id="spninfee"></span>원 @*※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span></label></p>
}
}
@if (Model.CM.applicableCM == "정상접수")
@ -82,16 +86,16 @@
@if (Model.CM.cshape == 2 && Model.CM.applicableCM == "정상접수")
{
<div style="display:none;">
<h4 class="clsTitle">교육일정선택</h4>
<select id="selMonth">
<div>
<h4 class="clsTitle">교육종료일 선택 <span style="font-size:12pt; font-weight:400;">&nbsp;&nbsp;&nbsp;※ 교육종료일까지 수료조건을 만족하시면 교육수료가 됩니다.</span></h4>
@*<select id="selMonth">
@for (int i = 1; i <= 12; i++)
{
<option @(DateTime.Now.Month == i ? "selected" : "") value="@(i)">@(i)월</option>
}
</select>
<span>&nbsp;&nbsp;&nbsp;※원하는 수료일자(월)을 선택하세요. 지정하신 일자가 수료일자가 됩니다.</span>
<br /><br />
<br /><br />*@
<ul id="ulScd"></ul>
</div>
}
@ -144,6 +148,7 @@
</tbody>
</table>
<p class="subDsc mt10">
<span style="color:red">※계산서 발급을 원할 경우 반드시 업체로 선택해 주세요. </span><br>
※수료증 소속부분에 기재될 내용으로 소속업체가 없으면 개인을 선택해 주세요.
</p>
</div>
@ -276,9 +281,9 @@
<th class="req">주민등록번호</th>
<td>
<ul class="usrNum">
<li>@Html.TextBoxFor(x => x.User.userpno1, new { @maxlength = "6" })</li>
<li>@Html.TextBoxFor(x => x.User.userpno1, new { @maxlength = "6", @readonly = "readonly", @style = "background-color:#ddd;" })</li>
<li>-</li>
<li>@Html.TextBoxFor(x => x.User.userpno2, new { @maxlength = "7" })</li>
<li>@Html.TextBoxFor(x => x.User.userpno2, new { @maxlength = "7", @readonly = "readonly", @style = "background-color:#ddd;" })</li>
</ul>
</td>
</tr>
@ -286,11 +291,11 @@
<th class="req">휴대전화</th>
<td>
<ul class="usrPhn">
<li>@Html.TextBoxFor(x => x.User.mobile1, new { @maxlength = "3" })</li>
<li>@Html.TextBoxFor(x => x.User.mobile1, new { @maxlength = "3", @readonly = "readonly", @style = "background-color:#ddd;" })</li>
<li>-</li>
<li>@Html.TextBoxFor(x => x.User.mobile2, new { @maxlength = "4" })</li>
<li>@Html.TextBoxFor(x => x.User.mobile2, new { @maxlength = "4", @readonly = "readonly", @style = "background-color:#ddd;" })</li>
<li>-</li>
<li>@Html.TextBoxFor(x => x.User.mobile3, new { @maxlength = "4" })</li>
<li>@Html.TextBoxFor(x => x.User.mobile3, new { @maxlength = "4", @readonly = "readonly", @style = "background-color:#ddd;" })</li>
</ul>
</td>
</tr>
@ -407,7 +412,7 @@
model.cm = @Html.Raw(Json.Encode(new List<NP.Model.CM>() { Model.CM }.Select(s => new { s.infee, s.accommofee, s.applicableCM, s.cshape, s.cmno }).First()));
model.assign = @Html.Raw(Json.Encode(new List<NP.Model.Assign>() { Model.Assign }.Select(s => new { s.asno, s.asname }).First()));;
model.pplog = @Html.Raw(Json.Encode(new List<NP.Model.PPLog>() { ( Model.PPLog != null ? Model.PPLog : new NP.Model.PPLog {}) }.Select(s => new { s.isrebate, s.isaccommodation, s.cmisno }).First()));;
model.selMonth = @(Model.selMonth != null ? Model.selMonth.ToString() : "null");
//model.selMonth = @(Model.selMonth != null ? Model.selMonth.ToString() : "null");
model.iscompany = @(Model.isCompany != null ? Model.isCompany.ToString() : "null");
$(document).ready(function () {
@ -519,9 +524,9 @@
$("input:radio[name='isrebate'][value='" + model.pplog.isrebate + "']").click();
}
if (model.selMonth != null) {
$("#selMonth").val(model.selMonth).trigger('change');
}
//if (model.selMonth != null) {
// $("#selMonth").val(model.selMonth).trigger('change');
//}
if(model.iscompany != null) {
$("input:radio[name='isCompany'][value='" + model.iscompany + "']").click();
@ -570,6 +575,11 @@
var ulScd = $("#ulScd");
ulScd.empty();
//var seq = 0;
if (capResult.obj.length < 1) {
var li = $("<li />");
li.append("<label> - 선택 가능한 교육종료일이 없습니다.</label>");
ulScd.append(li);
}
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true)
@ -677,7 +687,7 @@
function saveResult() {
if (capResult.code == 1000 && capResult.obj > 0) {
$("#historyForm > input[name='pplno']").val(capResult.obj);
$("#historyForm > input[name='selMonth']").val($("#selMonth").val());
//$("#historyForm > input[name='selMonth']").val($("#selMonth").val());
$("#historyForm > input[name='isCompany']").val($("input:radio[name='isCompany']:checked").val());
$("#historyForm").attr("action", "/Course/ApplyAgree");
$("#historyForm").submit();

View File

@ -40,29 +40,31 @@
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
}
}
else if (Model.CM.cshape == 1)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> | @Model.CM.cname</label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원</span></label></p>
<p><label>@(Model.CM.tseq)기 | <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span> | @Model.CM.cname</label></p>
}
}
else if (Model.CM.cshape == 2)
{
if (!isallday)
{
<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='red'>교육종료일(@(Model.CM.setimeymd)까지)</span> (@(Model.CM.studytime)시간) | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname (@(Model.CM.studytime)시간)</label></p>
}
else
{
<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>
@*<p><label>@(Model.CM.tseq)기 | <span class='gry'>신청일로부터 @(Model.CM.studydays)일 (@(Model.CM.studytime)시간) </span> | @Model.CM.cname | <span class='red'>@(Model.CM.infee.ToString("#,0"))원 ※ 집체교육 선택 필수</span></label></p>*@
<p><label>@Model.CM.cname | <span class='gry'>@*신청일로부터 @(Model.CM.studydays)일*@ (@(Model.CM.studytime)시간) </span></label></p>
}
}
</li>

View File

@ -66,6 +66,12 @@
<li><a href="https://homenet.kocea.or.kr:1443" target="_blank">한국건설기술인협회 이동</a></li>
<li><a href="https://www.kira.or.kr" target="_blank">건축사협회 이동</a></li>
</ul>
<br/>
@if(Model.stringval2 == "2")
{
<p class='subDsc' style='color:red;'>※ 온라인 교육은 입금완료시 교육이 바로 시작되며 동영상 시청이 가능합니다</p>
@:※ 각 기수별 <span style='color:red;'>교육종료일을 꼭 확인하시고</span> 교육신청 부탁드립니다.
}
<input type="hidden" id="hidCmno" />
<ul class="smtList" style="margin-bottom:150px">
@foreach (var item in Model.CMs)
@ -272,7 +278,7 @@
var cmno = _cmno;
var ulSubCm = $("#ulSubCm_" + cmno);
ulSubCm.empty();
var applyClass = "<li><p class='subDsc' style='color:red;'>※ 입금완료시 교육이 바로 시작되며 동영상 시청이 가능합니다</p >※ 각 기수별 <span style='color:red;'>교육종료일을 꼭 확인하시고</span> 교육신청 부탁드립니다.</li>";
//var applyClass = "<li><p class='subDsc' style='color:red;'>※ 입금완료시 교육이 바로 시작되며 동영상 시청이 가능합니다</p >※ 각 기수별 <span style='color:red;'>교육종료일을 꼭 확인하시고</span> 교육신청 부탁드립니다.</li>";
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
var p = $("<p />");
@ -296,14 +302,18 @@
}
if (d.cshape == 0) {
p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span> | <span class=red>" + bindComma(d.infee) + "원</span></label>");
//p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span> | <span class=red>" + bindComma(d.infee) + "원</span></label>");
p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "(" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span> | <span class=red>" + bindComma(d.infee) + "원</span></label>");
}
else if (d.cshape == 1) {
p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | <span class='blu'>[" + d.studyplacename + "교육장]</span> " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "("+d.ssretimeToDay +"일)") + "</span> | <span class=red>" +bindComma(d.infee)+"원</span></label>");
//p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | <span class='blu'>[" + d.studyplacename + "교육장]</span> " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "("+d.ssretimeToDay +"일)") + "</span> | <span class=red>" +bindComma(d.infee)+"원</span></label>");
p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | <span class='blu'>[" + d.studyplacename + "교육장]</span> " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "(" + d.studytime + " 시간)" : "("+d.ssretimeToDay +"일)") + "</span> | <span class=red>" +bindComma(d.infee)+"원</span></label>");
}
else if (d.cshape == 2) {
//p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='gry'>" + d.ssrename + "</span></span><span class='red'> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span> | <span class=red>" + bindComma(d.infee) + "원 ※ 집체교육 선택 필수</span></label>");
p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='red'>교육종료일(" + d.setimeymd + "까지)</span></span><span> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span></label>");
//p.html("<label style='cursor:default; font-size:18px'>" + d.tseq + "기 | " + d.cname + " | <span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'><span class='red'>교육종료일(" + d.setimeymd + "까지)</span></span><span> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span></label>");
//p.html("<label style='cursor:default; font-size:18px'>" + d.cname + "<span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'></span><span> " + (d.retimeymd == "2099-12-31" ? "신청일로부터 " + d.studydays + "일 (" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span></label>");
p.html("<label style='cursor:default; font-size:18px'>" + d.cname + "<span style='" + ((d.retimeymd == "2099-12-31") ? 'display:none' : '') + "'></span><span> " + (d.retimeymd == "2099-12-31" ? "(" + d.studytime + " 시간)" : "(" + d.studytime + "시간)") + "</span></label>");
}
spanIntro.text("강좌소개");
li.append(p);
@ -314,7 +324,7 @@
ulSubCm.append(li);
});
if (ulSubCm.html() != "") {
ulSubCm.append(applyClass);
//ulSubCm.append(applyClass);
}
if (capResult.obj.length <= 0) {
ulSubCm.append("<p class='subDsc' style='margin-top:30px; margin-bottom:30px'>※ 강좌가 없습니다.</p >");

View File

@ -194,6 +194,11 @@
}
@section scripts{
<script>
$(window).on("load", function () {
$(".iframebox").each(function () {
document.getElementById("ifrpop" + $(this).attr("ifrnum")).contentWindow.document.body.style.overflow = "hidden";
});
});
$(document).ready(function () {
initSearch();
@ -202,10 +207,10 @@
$.each($($("#texthide01").val().split('nptechpopuplistseparator')), function (i, p) {
var p = p.split('nptechpopupseparator');
if ('p@(ViewBag.POPUPXS)p'.indexOf('p' + p[0] + 'p') < 0) {
$("body").append("<div data-zindex=\"" + p[8] + "\" style=\"z-index: " + p[8] + "; left: " + p[4] + "px; top: " + p[3] + "px; width: " + (getint(p[5]) + 45) + "px; height: " + (getint(p[6]) + 105) + "px;\" class=\"draggablethis ui-widget-content popupitem\" id=\"popbox" + p[0] + "\">" +
$("body").append("<div data-zindex=\"" + p[8] + "\" style=\"z-index: " + p[8] + "; left: " + p[4] + "px; top: " + p[3] + "px; width: " + (getint(p[5])) + "px; height: " + (getint(p[6])) + "px;\" class=\"draggablethis ui-widget-content popupitem\" id=\"popbox" + p[0] + "\">" +
"<div class=\"inner\"><div class=\"poptitlebox\"><span>" + p[1] + "</span>" +
"<a class=\"closepopa\" href=\"#\" onclick=\"hidepop();$('#popbox" + p[0] + "').remove();\">x</a></div>" +
"<div class=\"iframebox\"><iframe id=\"ifrpop" + p[0] + "\" style=\"border: 0 none; height: " + p[6] + "px; width: " + (getint(p[5])) + "px;\"></iframe></div>" +
"<a class=\"closepopa\" href=\"#\" onclick=\"hidepop();$('#popbox" + p[0] + "').remove();\"></a></div>" +
"<div class=\"iframebox\" ifrnum=\""+p[0]+"\"><iframe id=\"ifrpop" + p[0] + "\" style=\"border: 0 none; height: " + (getint(p[6]) - 4) + "px; width: " + (getint(p[5])) + "px;\"></iframe></div>" +
"<div class=\"iframeclosebox\"></div></div></div>");
//"<div class=\"iframeclosebox\"><a class=\"\" style=\"border: 1px solid #ddd; padding: 5px 15px;\" onclick=\"hide7('popbox" + p[0] + "', " + p[0] + ")\"> 7일간 숨기기</a></div></div></div>");
$("#ifrpop" + p[0]).attr("src", "/Home/Popup?pno=" + p[0]);

View File

@ -121,11 +121,12 @@
$.each($($("#texthide01").val().split('nptechpopuplistseparator')), function (i, p) {
var p = p.split('nptechpopupseparator');
if ('p@(ViewBag.POPUPXS)p'.indexOf('p' + p[0] + 'p') < 0) {
$("body").append("<div data-zindex=\"" + p[8] + "\" style=\"z-index: " + p[8] + "; left: " + p[4] + "px; top: " + p[3] + "px; width: " + (getint(p[5]) + 45) + "px; height: " + (getint(p[6]) + 105) + "px;\" class=\"draggablethis ui-widget-content popupitem\" id=\"popbox" + p[0] + "\">" +
$("body").append("<div data-zindex=\"" + p[8] + "\" style=\"z-index: " + p[8] + "; left: " + p[4] + "px; top: " + p[3] + "px; width: " + (getint(p[5])) + "px; height: " + (getint(p[6])) + "px;\" class=\"draggablethis ui-widget-content popupitem\" id=\"popbox" + p[0] + "\">" +
"<div class=\"inner\"><div class=\"poptitlebox\"><span>" + p[1] + "</span>" +
"<a class=\"closepopa\" href=\"#\" onclick=\"hidepop();$('#popbox" + p[0] + "').remove();\">x</a></div>" +
"<a class=\"closepopa\" href=\"#\" onclick=\"hidepop();$('#popbox" + p[0] + "').remove();\"></a></div>" +
"<div class=\"iframebox\"><iframe id=\"ifrpop" + p[0] + "\" style=\"border: 0 none; height: " + p[6] + "px; width: " + (getint(p[5])) + "px;\"></iframe></div>" +
"<div class=\"iframeclosebox\"><a class=\"\" style=\"border: 1px solid #ddd; padding: 5px 15px;\" onclick=\"hide7('popbox" + p[0] + "', " + p[0] + ")\"> 7일간 숨기기</a></div></div></div>");
"<div class=\"iframeclosebox\"></div></div></div>");
//"<div class=\"iframeclosebox\"><a class=\"\" style=\"border: 1px solid #ddd; padding: 5px 15px;\" onclick=\"hide7('popbox" + p[0] + "', " + p[0] + ")\"> 7일간 숨기기</a></div></div></div>");
$("#ifrpop" + p[0]).attr("src", "/Home/Popup?pno=" + p[0]);
$("#popbox" + p[0]).show();
//$("html").css("overflow", "hidden");

View File

@ -25,7 +25,7 @@
</form>
<div class="lctQr">
<span class="@(Model.tabidx == 0 ? "current" : "" )" onclick="tabChange(0);" id="lblAll">신규과정</span>&nbsp;|&nbsp;
<span class="@(Model.tabidx == 1 ? "current" : "" )" onclick="tabChange(1);" id="lblOff">2021년 이전과정</span>&nbsp;
<span class="@(Model.tabidx == 1 ? "current" : "" )" onclick="tabChange(1);" id="lblOff">이전과정</span>&nbsp;
</div>
@if (Model.tabidx == 0)
{

View File

@ -129,7 +129,8 @@
</h5>
<dl>
<dt class="mpglSta@(d.intval5 == 0 && d.intval4 == 1 ? 3 : 1)">@(d.intval5 == 1 ? "환불요청" : d.intval4 == 1 ? "결제완료" : d.intval4 == 21 ? "결제대기" : d.intval4 == 22 ? "입금대기" : d.intval4 == 51 ? "심사중" : d.intval4 == 55 ? "승인대기" : "")</dt>
<dd>교육기간 : @(d.time2.Year == 2099 ? "결제완료일로부터 "+d.intval9+"일" : (d.intval3 == 1 ? d.time5.ToString("yy-MM-dd") : d.time3.ToString("yy-MM-dd"))+ " ~ "+ (d.intval3 == 1 ? d.time6.ToString("yy-MM-dd") : d.time4.ToString("yy-MM-dd")))</dd>
@*<dd>교육기간 : @(d.time2.Year == 2099 ? "결제완료일로부터 "+d.intval9+"일" : (d.intval3 == 1 ? d.time5.ToString("yy-MM-dd") : d.time3.ToString("yy-MM-dd"))+ " ~ "+ (d.intval3 == 1 ? d.time6.ToString("yy-MM-dd") : d.time4.ToString("yy-MM-dd")))</dd>*@
<dd>교육기간 : @(d.time2.Year == 2099 ? "신청일부터 선택한 교육종료일까지" : (d.intval3 == 1 ? d.time5.ToString("yy-MM-dd") : d.time3.ToString("yy-MM-dd"))+ " ~ "+ (d.intval3 == 1 ? d.time6.ToString("yy-MM-dd") : d.time4.ToString("yy-MM-dd")))</dd>
</dl>
</a>
</li>

View File

@ -46,35 +46,38 @@
<div class="ltaList">
<a href="@(d.isgroup == 0 || (d.isgroup == 1 && Model.Lects.Where(w=>w.payno == d.payno && w.userno==ViewBag.SSUserNo).Count() > 0) ? string.Format("/CRoom/Index?croomlectno={0}", d.isgroup == 0 ? d.lectno : Model.Lects.Where(w=>w.payno == d.payno && w.userno==ViewBag.SSUserNo).First().lectno, d.cmno) : "#")" class="gocroom">
<h5>
<em>@d.tyear-@(d.tseq)기</em>
@if(d.cshape == 1)
{
<em>@d.tyear-@(d.tseq)기</em>
}
<span class="nav">@d.cshapename</span>
@Html.Raw(d.isrebate == 1 ? "<span class=\"grn\">환급</span>" : "")
<b>@d.cname (@(d.classno))</b>
</h5>
<dl class="ltaDl">
<dt class="@(d.edate > DateTime.Now ? "ltaDlbk" : "ltaDlred")">@(d.edate > DateTime.Now ? "교육기간 학습중" : "종료")</dt>
<dt class="@(d.edate > DateTime.Now ? "ltaDlblue" : d.edate.Value.AddYears(1) > DateTime.Now ? "ltaDlblue" : "ltaDlred")">@(d.edate > DateTime.Now ? "교육기간 학습중" : d.edate.Value.AddYears(1) > DateTime.Now ? "복습가능" : "종료")</dt>
<dt style="color:#888888">
교육기간 : @(string.Format("{0} ~ {1}", d.cshape == 1 ? d.sdate.Value.ToString("yy-MM-dd") : d.cdt.ToString("yy-MM-dd") , d.cshape == 1 ? d.edate.Value.ToString("yy-MM-dd") : d.estart.ToString("yy-MM-dd")))
@if (false && d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01"))
{
@:| 집체교육기간 : @("[" + d.studyplacename + "] " + string.Format("{0}", d.estart.ToString("yy-MM-dd")))
}
교육기간 : @(string.Format("{0} ~ {1}", d.cshape == 1 ? d.sdate.Value.ToString("yy-MM-dd") : d.cdt.ToString("yy-MM-dd") , d.edate.Value.ToString("yy-MM-dd")))
</dt>
@if(d.cshape != 1)
{
<dd>복습기간 : @(d.edate.Value.AddYears(1).ToString("yy-MM-dd"))까지</dd>
<dt style="color:#888888">복습기간 : @(d.edate.Value.AddYears(1).ToString("yy-MM-dd"))까지</dt>
}
@if (d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01"))
{
<dd>@(d.scdtype == 1 ? "교육종료일" : "집체교육일") : @(string.Format("{0}", d.estart.ToString("yy-MM-dd")))</dd>
}
</dl>
</a>
@if (d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01") && d.iscomplete != 1 && Convert.ToDateTime(d.estart) > DateTime.Now)
@*@if (d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01") && d.iscomplete != 1 && Convert.ToDateTime(d.estart) > DateTime.Now)
{
<dl class="ltaDl" style="display:none;">
<dd>
&nbsp;&nbsp;&nbsp;
<input type="button" value="수료일정변경" onclick="javscript:openScd(@d.cmno,@d.lectno);" />
<input type="button" value="교육일정변경" onclick="javscript:openScd(@d.cmno,@d.lectno);" />
</dd>
</dl>
}
}*@
</div>
</th>
<td class="ltaBtn" data-th="강의실 : ">

View File

@ -0,0 +1,179 @@
@model NP.Model.VMMy
@{
}
<table class="lctAply">
<thead>
<tr>
<th>강좌명</th>
<td>교육일정변경</td>
</tr>
</thead>
<tbody>
@foreach (var d in Model.Lects.Where(w=>w.rno == 1))
{
<tr>
<th>
<div class="ltaList">
<h5>
@if(d.cshape == 1)
{
<em>@d.tyear-@(d.tseq)기</em>
}
<span class="nav">@d.cshapename</span>
@Html.Raw(d.isrebate == 1 ? "<span class=\"grn\">환급</span>" : "")
<b>@d.cname (@(d.classno))</b>
</h5>
<dl class="ltaDl">
<dt class="@(d.edate > DateTime.Now ? "ltaDlblue" : d.edate.Value.AddYears(1) > DateTime.Now ? "ltaDlblue" : "ltaDlred")">@(d.edate > DateTime.Now ? "교육기간 학습중" : d.edate.Value.AddYears(1) > DateTime.Now ? "복습가능" : "종료")</dt>
<dt style="color:#888888">
교육기간 : @(string.Format("{0} ~ {1}", d.cshape == 1 ? d.sdate.Value.ToString("yy-MM-dd") : d.cdt.ToString("yy-MM-dd") , d.edate.Value.ToString("yy-MM-dd")))
</dt>
@if(d.cshape != 1)
{
<dt style="color:#888888">복습기간 : @(d.edate.Value.AddYears(1).ToString("yy-MM-dd"))까지</dt>
}
@if (d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01"))
{
<dd>@(d.scdtype == 1 ? "교육종료일" : "집체교육일") : @(string.Format("{0}", d.estart.ToString("yy-MM-dd")))</dd>
}
</dl>
</div>
</th>
<td class="ltaBtn" data-th="교육일정변경 : ">
@if (d.cshape == 2 && d.estart > Convert.ToDateTime("1900-01-01") && d.eend > Convert.ToDateTime("1900-01-01") && d.iscomplete != 1 && Convert.ToDateTime(d.estart) > DateTime.Now)
{
<dl><dd class="blu"><a href="#" onclick="javscript:openScd(@d.cmno,@d.lectno);">변경</a></dd></dl>
}
else
{
<span>-</span>
}
</td>
</tr>
}
</tbody>
</table>
@if (Model.Lects.Count() < 1)
{
<div style="text-align: center; padding: 20px;">- 수강중인 강좌가 없습니다.</div>
}
<form id="mform" method="post" action="">
@Html.HiddenFor(m => m.intval)
@Html.HiddenFor(m => m.stringval)
</form>
<div class="mpgPop" style="display: none" id="popScd">
<div>
<div>
<div class="mpgPopWrap">
<div class="mpgPopTitle">
<h5>교육일정변경</h5>
<a href="javascript:mpgPopClose();"></a>
</div>
<div class="mpgPopCont">
<ul id="ulScd"></ul>
<ul class="mpgPopBtn">
<li><a href="#" class="bk" onclick="selectScd()">선택완료</a></li>
<li><a href="#" onclick="mpgPopClose()">취소</a></li>
</ul>
</div><!-- clsPopCont -->
</div><!-- clsPopWrap -->
</div>
</div>
</div>
@section scriptsHeader{
}
@section scripts{
<script>
var vLectno;
function pc(lectno,userno) {
if (lectno < 1) {
msg('본인의 수료증만 확인할 수 있습니다.');
} else {
window.open("/My/CertPrint?lectno=" + lectno+"&intval="+userno, "certprint", "width=" + (screen.availWidth) + ", height=" + (screen.availHeight) + ", scrollbars=yes, resizable=yes, status=no, location=no, left=0, top=0");
}
}
function ps() {
window.open("/My/CertSet");
}
function openScd(cmno, lectno) {
vLectno = lectno
$(".mpgPop").show();
setScd(cmno);
}
function setScd(cmno) {
capp("/focommon/GetScdForMixEdu", { cmno: cmno, lectno: vLectno }, "renderScd");
}
function renderScd() {
var ulScd = $("#ulScd");
ulScd.empty();
//var seq = 0;
$.each(capResult.obj, function (i, d) {
var li = $("<li />");
if (d.isEnd == true) {
//li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled> <span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (종료)</label>");
}
else {
if (d.quota != 0) {
if (d.remainPeople <= 0) {
//li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' disabled> <span style='color:gray'>" + d.scdInfoSummary + "</span><label style='color: red'> (마감)</label>");
}
else {
if (d.isselected == 1) {
li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' checked> " + d.scdInfoSummary + "<label style='color: red;display:none;'> (" + d.remainPeople + "명 남음)</label>");
} else {
li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "'> " + d.scdInfoSummary + "<label style='color: red;display:none;'> (" + d.remainPeople + "명 남음)</label>");
}
//if (seq == 0) {
// li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' checked> " + d.scdInfoSummary + "<label style='color: red;display:none;'> (" + d.remainPeople + "명 남음)</label>");
//}
//else {
// li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "'> " + d.scdInfoSummary + "<label style='color: red;display:none;'> (" + d.remainPeople + "명 남음)</label>");
//}
}
}
else {
if (d.isselected == 1) {
li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' checked> " + d.scdInfoSummary + "</label>");
} else {
li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "'> " + d.scdInfoSummary + "</label>");
}
//if (seq == 0) {
// li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "' checked> " + d.scdInfoSummary + "</label>");
//}
//else {
// li.append("<input type='radio' name='rdoScds' value='" + d.cmisno + "'> " + d.scdInfoSummary + "</label>");
//}
}
}
//seq++;
ulScd.append(li);
});
}
function selectScd() {
if (confirm("교육종료일을 변경하시겠습니까?")) {
var cmisno = $("input:radio[name=rdoScds]:checked").val();
var lectno = vLectno;
if (cmisno == "" || cmisno == undefined || cmisno == null) {
msg("선택한 일정이 없습니다.");
return;
}
capp("/focommon/UpdateScd", { cmisno: cmisno, lectno: lectno }, "scdSave");
}
}
function scdSave() {
msg(capResult.msg);
if (capResult.code == 1) {
submit();
}
else {
return;
}
}
</script>
}

View File

@ -206,7 +206,7 @@
else if (check("brno", null, "사업자번호를 입력해주세요.")) { }
else if (getBytes(val("brno")) != 10) { focus("brno"); msg("10자리의 사업자번호를 입력해주세요."); }
else if (check("asname", null, "회사명을 입력해주세요.")) { }
else if (val("mphone") != "" && !istelnumber(val("mphone"))) { focus("mphone2"); msg("올바른 휴대전화번호를 입력해주세요."); }
else if (val("mphone") != "" && (!istelnumber(val("mphone")) && !ismobilenumber(val("mphone")))) { focus("mphone2"); msg("올바른 휴대전화번호를 입력해주세요."); }
else if (val("taxemail") != "" && !isemail(val("taxemail"))) { focus("taxemail1"); msg("올바른 이메일주소를 입력해주세요."); }
else {
capfileform("/fcommon/assignupdate", "mform", "cbsave");

View File

@ -39,9 +39,9 @@
<td>
<input type="hidden" name="userpno" id="userpno" value="@u.userpno" />
<ul class="clsMail mdfy">
<li><input type="text" name="userpno1" id="userpno1" maxlength="6" value="@u.userpno.Substring(0,6)" readonly="" style="background-color:#ddd;"></li>
<li><input type="text" name="userpno1" id="userpno1" maxlength="6" value="@u.userpno.Substring(0,6)" readonly="readonly" style="background-color:#ddd;"></li>
<li>-</li>
<li><input type="text" name="userpno2" id="userpno2" maxlength="7" value="@u.userpno.Substring(6)"></li>
<li><input type="text" name="userpno2" id="userpno2" maxlength="7" value="@u.userpno.Substring(6)" readonly="readonly" style="background-color:#ddd;"></li>
</ul>
</td>
</tr>

View File

@ -406,7 +406,7 @@
<li><a href="#" class="bk" onclick="save3()">환불 최종요청</a></li>
<li><a href="#" class="bk" onclick="cancelRfd()">환불신청 취소</a></li>
}
@if (Model.PayRfd.rstatus == 0 && (Model.PayRfd.fgnob != null || Model.PayRfd.fgnor != null))
@if (Model.PayRfd.rstatus == 1 && (Model.PayRfd.fgnob != null || Model.PayRfd.fgnor != null))
{
<li><a href="#" class="bk" onclick="cancelRfd()">환불신청 취소</a></li>
}

View File

@ -41,7 +41,8 @@
<dt class="@(d.pstatus == 1 && d.rfdstatus < 1 ? "ltaDlbk":"ltaDlred")">@(d.pstatus == 55 ? "승인대기" : d.pstatus == 51 ? "심사중" : d.pstatus == 21 ? "결제대기" : d.pstatus == 22 ? "입금대기" : d.pstatus == 1 && d.rfdstatus > 0 ? "환불요청" : d.pstatus == 1 ? "결제완료" : d.rstatus == 1 ? "부분환불" : d.rstatus == 2 ? "전액환불" : "-")</dt>
<dd>
@*신청기간 : @(d.retime.Value.Year == 2099 ? "상시운영" : d.rstime.Value.ToString("yy/MM/dd") + " ~ " + d.retime.Value.ToString("yy/MM/dd"))*@
교육기간 : @(d.retime.Value.Year == 2099 ? "결제완료일로부터 "+d.studydays+"일" : (d.cshape != 1 ? d.cdt.ToString("yy-MM-dd") : d.sdate.Value.ToString("yy-MM-dd")) +" ~ "+ (d.cshape != 1 ? d.cmiestart != null ? d.cmiestart.Value.ToString("yy-MM-dd") : "" : d.edate.Value.ToString("yy-MM-dd")))
@*교육기간 : @(d.retime.Value.Year == 2099 ? "결제완료일로부터 "+d.studydays+"일" : (d.cshape != 1 ? d.cdt.ToString("yy-MM-dd") : d.sdate.Value.ToString("yy-MM-dd")) +" ~ "+ (d.cshape != 1 ? d.cmiestart != null ? d.cmiestart.Value.ToString("yy-MM-dd") : "" : d.edate.Value.ToString("yy-MM-dd")))*@
교육기간 : @(d.retime.Value.Year == 2099 ? "신청일부터 선택한 교육종료일까지" : (d.cshape != 1 ? d.cdt.ToString("yy-MM-dd") : d.sdate.Value.ToString("yy-MM-dd")) +" ~ "+ (d.cshape != 1 ? d.cmiestart != null ? d.cmiestart.Value.ToString("yy-MM-dd") : "" : d.edate.Value.ToString("yy-MM-dd")))
@if (false && d.cshape == 2)
{
@:| 집체교육기간 : @(d.cmisno == null ? "미정" : ("[" + d.studyplacename + "] " + string.Format("{0}", d.cmiestart.Value.ToString("yy-MM-dd"))))

View File

@ -19,7 +19,7 @@
<ul id="ulm1">
@if (ViewBag.SSUserNo == 0)
{
foreach (var m1 in menus.Where(w => w.pdepth == 1 && !(w.refcode ?? "").Contains("menu.authmenu")))
foreach (var m1 in menus.Where(w => w.pdepth == 1 && w.isopen < 6 && !(w.refcode ?? "").Contains("menu.authmenu")))
{
var mp = m1.pagetype == 0 ? menus.Where(w => w.pagetype > 0 && (w.m1 == m1.pno || w.m2 == m1.pno || w.m3 == m1.pno || w.m4 == m1.pno)).FirstOrDefault() ?? new NP.Model.MenuPage() { } : m1;
<li data-ppno="@m1.m0" class="m@(m1.m0) @(((NP.Model.MenuPage)ViewBag.MenuPage).m0 == m1.m0 ? "" : "hidden") @(((NP.Model.MenuPage)ViewBag.MenuPage).m1 == m1.pno ? "current" : "")"><a onclick="gomenu(@mp.pno, @mp.pagetype, '@(mp.pageurl ?? "")', this)" href="#" data-refcode="@(m1.refcode ?? "")">@m1.pagename</a></li>
@ -27,7 +27,7 @@
}
else
{
foreach (var m1 in menus.Where(w => w.pdepth == 1 && !(w.refcode ?? "").Contains("menu.offmenu")))
foreach (var m1 in menus.Where(w => w.pdepth == 1 && w.isopen < 6 && !(w.refcode ?? "").Contains("menu.offmenu")))
{
var mp = m1.pagetype == 0 ? menus.Where(w => w.pagetype > 0 && (w.m1 == m1.pno || w.m2 == m1.pno || w.m3 == m1.pno || w.m4 == m1.pno)).FirstOrDefault() ?? new NP.Model.MenuPage() { } : m1;
<li data-ppno="@m1.m0" class="m@(m1.m0) @(((NP.Model.MenuPage)ViewBag.MenuPage).m0 == m1.m0 ? "" : "hidden") @(((NP.Model.MenuPage)ViewBag.menupage).m1 == m1.pno ? "current" : "")"><a onclick="gomenu(@mp.pno, @mp.pagetype, '@(mp.pageurl ?? "")', this)" href="#" data-refcode="@(m1.refcode ?? "")">@m1.pagename</a></li>

View File

@ -29,7 +29,7 @@
<div id="lctmbBtn"><span class="slice1"></span><span class="slice2"></span><span class="slice3"></span></div>
<a href="#" onclick="outcroom(false)" id="lctMypg">마이페이지</a>
<div id="lctInfo">
<h3><a href="/CRoom/Index?@ViewBag.croomparam"><span class="hidepc">@(ViewBag.maintyear)-@(ViewBag.maintseq)기 [ @ViewBag.maincgname ]</span> @ViewBag.maincname (@(ViewBag.mainclassno)반)</a></h3>
<h3><a href="/CRoom/Index?@ViewBag.croomparam"><span class="hidepc">@(ViewBag.maincshape != 1 ? "" : ViewBag.maintyear+"-"+ ViewBag.maintseq+"기") [ @ViewBag.maincgname ]</span> @ViewBag.maincname (@(ViewBag.mainclassno)반)</a></h3>
<a href="#" onclick="outcroom(false)">나가기</a>
</div>
</div>
@ -64,7 +64,7 @@
<dd><a href="#" onclick="$('#lctWrap').stop().animate({scrollTop : 0}, 1000)">up</a></dd>
<dd><a href="#" onclick="$('#lctWrap').stop().animate({scrollTop: 10000}, 3000);">down</a></dd>
</dl>
<span id="lctmBtn">On/lct</span>
@*<span id="lctmBtn">On/lct</span>*@
</div><!-- lctMenu -->
</div>
<div id="lctWrap">

View File

@ -55,7 +55,7 @@
<dd><a href="#" onclick="$('html, body').stop().animate({scrollTop : 0}, 1000)">up</a></dd>
<dd><a href="#" onclick="$('html, body').stop().animate({scrollTop: 10000}, 3000);">down</a></dd>
</dl>
<span id="lctmBtn">On/lct</span>
@*<span id="lctmBtn">On/lct</span>*@
</div>
</div>
<div id="mpgWrap">

View File

@ -45,7 +45,7 @@
<dd><a href="#" onclick="$('html, body').stop().animate({scrollTop : 0}, 1000)">up</a></dd>
<dd><a href="#" onclick="$('html, body').stop().animate({scrollTop: 10000}, 3000);">down</a></dd>
</dl>
<span id="lctmBtn">On/lct</span>
@*<span id="lctmBtn">On/lct</span>*@
</div>
</div>
<div id="mpgWrap">

View File

@ -1,10 +1,11 @@
@charset "utf-8";
.popupitem{position: absolute; display: none; border-radius: 10px; text-align: center; padding: 8px 8px; background-color: #fff; border: 1px solid #ddd;}
.popupitem .inner{padding: 5px 10px; background-color: #fff; border-radius: 10px; }
.popupitem{position: absolute; display: none; border-radius: 10px; text-align: center; background-color: #fff;}
.popupitem .inner{background-color: #fff; border-radius: 10px; }
.popupitem .inner .poptitlebox{height: 30px; line-height: 30px; cursor: pointer;}
.popupitem .inner .poptitlebox span{display: block; margin-right: 50px; overflow: hidden; white-space: nowrap; text-align: left; text-overflow: ellipsis;}
.closepopa{float: right; margin-top: -25px; font-size: 20px; padding: 5px 10px;}
.iframeclosebox{height: 30px; line-height: 30px; font-weight: bold; text-align: right;}
.popupitem .inner .poptitlebox span{display: block;margin-right: 50px;overflow: hidden;white-space: nowrap;text-align: left;text-overflow: ellipsis; margin-left:10px}
.closepopa{font-size: 20px;padding: 5px 10px;position:absolute;top: 0px;right: 0px;line-height: 20px;color: #666666 !important;}
.closepopa:hover {color: #fff !important; background-color: #e81123; border-top-right-radius: 10px;}
.iframeclosebox{height: 30px; line-height: 30px; font-weight: bold; text-align: right; display:none;}
.req:before{color:#666;content:'*'}
/*.req:after{color: red;content:'*'}*/
@media (max-width:1000px) {

View File

@ -1,5 +1,5 @@
$(window).on("keydown", function (e) {
if (e.keyCode == 116 || e.keyCode == 123) {
if (e.keyCode == 116 /*|| e.keyCode == 123*/) {
prv(); return false;
}
if (e.keyCode == 119 && typeof (save) == "function" && $("#layermessage:visible").length < 1) {

View File

@ -23,6 +23,7 @@ namespace NP.Model
}
public Int64 fileno { get; set; }
public Int64 fileno2 { get; set; }
public Int64 fileno3 { get; set; }
public Int64 filesize { get; set; }
public String filesizename
{
@ -34,8 +35,10 @@ namespace NP.Model
public DateTime filecdt { get; set; }
public String fileurl { get; set; }
public String fileurl2 { get; set; }
public String fileurl3 { get; set; }
public String orgname { get; set; }
public String orgname2 { get; set; }
public String orgname3 { get; set; }
public bool isfileext
{
get
@ -128,6 +131,8 @@ namespace NP.Model
/// </summary>
public String udtymdwd{get{return this.udt.ToString("yyyy-MM-dd(ddd)", System.Globalization.CultureInfo.CreateSpecificCulture("ko-KR"));}}
public Int64 uno { get; set; }
public String unoname { get; set; }
public String unoid { get; set; }
public String uip { get; set; }
public int pagetotalcount { get; set; }
public Int32 rno { get; set; }

View File

@ -553,10 +553,38 @@ namespace NP.Model
/// 시작시간 오프라인전용, 0011 0시11분
/// </summary>
public String ist {get;set;}
public String isthh
{
get
{
return String.IsNullOrEmpty(ist) ? null : ist.Length > 2 ? ist.Substring(0, 2) : null;
}
}
public String istmm
{
get
{
return String.IsNullOrEmpty(ist) ? null : ist.Length > 4 ? ist.Substring(0, 2) : null;
}
}
/// <summary>
/// 종료시간 오프라인전용, 0930 9시30분
/// </summary>
public String iet {get;set;}
public String iethh
{
get
{
return String.IsNullOrEmpty(iet) ? null : iet.Length > 2 ? iet.Substring(0, 2) : null;
}
}
public String ietmm
{
get
{
return String.IsNullOrEmpty(iet) ? null : iet.Length > 4 ? iet.Substring(2, 2) : null;
}
}
public Int64? fgnotf { get; set; }
/// <summary>
/// fkcminningct 강의콘텐츠 ct.ctno
@ -592,12 +620,16 @@ namespace NP.Model
/// <summary>
/// fkcminningu 강사 users.userno cmprofessor
/// </summary>
public int userno {get;set;}
public int? userno {get;set;}
public String username { get; set; }
/// <summary>
/// fkcminningfg 오프라인출결근거자료 filegroup.fgno
/// </summary>
public Int64? fgno {get;set;}
/// <summary>
/// fkcminningscdfg 집체교육출결근거자료 filegroup.fgnoaff
/// </summary>
public Int64? fgnooff {get;set;}
public IList<CMInning> Ds { get; set; }
/// <summary>
@ -639,6 +671,13 @@ namespace NP.Model
return idate.ToString("yyyy-MM-dd");
}
}
public String idateymd2
{
get
{
return idate.ToString("yy-MM-dd");
}
}
/// <summary>
/// 강의유형 0: 온라인, 1: 오프라인, 2: 혼합(온+오프)
/// </summary>
@ -675,6 +714,18 @@ namespace NP.Model
public int isoversize { get; set; }
public int ismenu { get; set; }
public int mtime { get; set; }
public int isscd { get; set; }
/// <summary>
/// 0:교육장;1:온라인대체;
/// </summary>
public int? scdtype { get; set; }
public String scdtypename
{
get
{
return scdtype == null ? "-" : scdtype == 0 ? "교육장" : "온라인대체";
}
}
}
/// <summary>
@ -1049,15 +1100,29 @@ namespace NP.Model
public DateTime? stime { get; set; }
public DateTime? etime { get; set; }
public DateTime? sdate { get; set; }
public DateTime? edate { get; set; }
public String sdateymd
{
get { return sdate != null ? Convert.ToDateTime(sdate).ToShortDateString() : null; }
}
public String sdatestr
{
get
{
return cshape == 0 && isrebate == 0 ? payoktime.ToShortDateString() : sdate != null ? Convert.ToDateTime(sdate).ToShortDateString() : null;
}
}
public DateTime? edate { get; set; }
public String edateymd
{
get { return edate != null ? Convert.ToDateTime(edate).ToShortDateString() : null; }
}
public String edatestr
{
get
{
return cshape == 2 && eend != null ? eend.ToShortDateString() : edate != null ? Convert.ToDateTime(edate).ToShortDateString() : null;
}
}
public String sip { get; set; }
public String eip { get; set; }
public int ispaied { get; set; }
@ -1226,6 +1291,75 @@ namespace NP.Model
/// </summary>
public int statecode { get; set; }
public DateTime paycdt { get; set; }
public int sseq { get; set; }
public String sseqname
{
get
{
return cshape == 2 ? sseq.ToString() : "-";
}
}
public int? istatus { get; set; }
public String istatusname
{
get
{
return istatus == null ? "미입력" : istatus == 2 ? "출석" : istatus == 0 ? "결석" : "입실";
}
}
public int? scdtype { get; set; }
public int isoffabs { get; set; }
public String ex0point
{
get
{
return ex0cnt < 1 ? "-" : ex0lectcnt < 1 && ex0cnt > 0 ? "미제출" : ex0lectpoint.ToString();
}
}
public String ex1point
{
get
{
return ex1cnt < 1 ? "-" : ex1lectcnt < 1 && ex1cnt < 0 ? "미제출" : ex1lectpoint.ToString();
}
}
public String sd0point
{
get
{
return sd0cnt < 1 ? "-" : sd0lectcnt < 1 && sd0cnt > 0 ? "미제출" : sd0lectpoint.ToString();
}
}
public String sd1point
{
get
{
return sd1cnt < 1 ? "-" : sd1lectcnt < 1 && sd1cnt > 0 ? "미제출" : sd1lectpoint.ToString();
}
}
public String rs0point
{
get
{
return rs0lectcnt + " / " + rs0cnt;
}
}
public String tpointstr
{
get
{
return ((apoint + mpoint + fpoint + spoint + dpoint)).ToString();
}
}
public String isoffabsstr
{
get
{
return isoffabs == 1 ? istatusname : "-";
}
}
public int? cmino { get; set; }
}
/// <summary>
/// 자격검정시험
@ -1334,6 +1468,7 @@ namespace NP.Model
public String pcgname { get; set; }
public String cgname { get; set; }
public String gradename { get; set; }
}
@ -1643,6 +1778,8 @@ namespace NP.Model
return rtn == "" ? "" : rtn.Substring(2);
}
}
public int scdtype { get; set; }
public int cshape { get; set; }
}
@ -2082,6 +2219,11 @@ namespace NP.Model
public int selectcount { get; set; }
public int countselect { get; set; }
public int avgselect { get; set; }
public int? iscorrect { get; set; }
public int? eqno { get; set; }
public String atext { get; set; }
public int isignorecase { get; set; }
public int ispassspace { get; set; }
}
/// <summary>
@ -3096,7 +3238,7 @@ namespace NP.Model
/// <summary>
/// fklectexlect 수강키 lect.lectno
/// </summary>
public Int64 lectno {get;set;}
public Int64 lectno { get; set; }
/// <summary>
/// fklectexcmex 과정시험키 cmex.exno
/// </summary>
@ -3104,7 +3246,7 @@ namespace NP.Model
/// <summary>
/// 응시시작
/// </summary>
public DateTime? estart {get;set;}
public DateTime? estart { get; set; }
public String estartymdhm
{
get
@ -3115,7 +3257,7 @@ namespace NP.Model
/// <summary>
/// 응시종료
/// </summary>
public DateTime? eend {get;set;}
public DateTime? eend { get; set; }
public String eendymdhm
{
get
@ -3137,19 +3279,19 @@ namespace NP.Model
/// <summary>
/// 제출횟수
/// </summary>
public int recount {get;set;}
public int recount { get; set; }
/// <summary>
/// 재채점시간
/// </summary>
public DateTime? rechecktime {get;set;}
public DateTime? rechecktime { get; set; }
/// <summary>
/// cmex.relaylimit연계 이어보기필터, 접근기준
/// </summary>
public int entercount {get;set;}
public int entercount { get; set; }
/// <summary>
/// 이어보기 포커스용
/// </summary>
public int cblock {get;set;}
public int cblock { get; set; }
public int userno { get; set; }
/// <summary>
/// 환급신청여부 환급강좌 기준
@ -3194,6 +3336,13 @@ namespace NP.Model
public IList<LectEXQ> UED { get; set; }
public int issubmit { get; set; }
public int? iscomplete { get; set; }
public String iscompletename
{
get
{
return iscomplete == 1 ? "수료" : iscomplete == 0 ? "미수료" : "-";
}
}
/// <summary>
/// 온라인강좌 수강시작일
/// </summary>
@ -3202,6 +3351,85 @@ namespace NP.Model
/// 온라인강좌 수강종료일
/// </summary>
public DateTime? edate { get; set; }
public int cshape { get; set; }
/// <summary>
/// 교육일정시작일
/// </summary>
public DateTime lestart { get; set; }
/// <summary>
/// 교육일정종료일
/// </summary>
public DateTime leend { get; set; }
public int sseq { get; set; }
public String studyplacename{get; set;}
public String cname { get; set; }
public DateTime payoktime { get; set; }
public Int64 cmisno { get; set; }
public String leststr
{
get
{
return (cshape == 0 && isrebate == 0 ? payoktime : sdate).Value.ToShortDateString();
}
}
public String leestr
{
get
{
if (cshape == 2)
{
if (lestart != null && lestart > Convert.ToDateTime("1900-01-01") && lestart.ToShortDateString() != "0001-01-01" && lestart >= DateTime.Now)
{
return "<td class=\"link text-center\"><a href=\"#\" onclick=\"javascript: openScd(" + cmno + "," + lectno + "," + cmisno + ");\">" + leend.ToShortDateString() + "</a></td>";
}
else
{
return "<td>" + leend.ToShortDateString() + "</td>";
}
}
else
{
if (edate != null)
{
return "<td>" + edate.Value.ToShortDateString() + "</td>";
}
else
{
return "<td>-</td>";
}
}
}
}
public int usertype { get; set; }
public String scomplete
{
get
{
if (iscomplete == 1)
{
return "<td class=\"link text-center\"><a href=\"#\" onclick=\"viewcert(" + lectno + ")\">수료</td>";
}
else
{
return "<td class=\"\">" + iscompletename + "</td>";
}
}
}
public String scomplete96
{
get
{
if (iscomplete == 1)
{
return "<td class=\"link text-center\">수료</td>";
}
else
{
return "<td class=\"\">" + iscompletename + "</td>";
}
}
}
public int ispass { get; set; }
}
[Serializable]
public class LectEXQ : LectEX
@ -3406,6 +3634,92 @@ namespace NP.Model
/// 온라인강좌 수강종료일
/// </summary>
public DateTime? edate { get; set; }
public int cshape { get; set; }
public int sseq { get; set; }
public String studyplacename { get; set; }
public String cname { get; set; }
public DateTime payoktime { get; set; }
/// <summary>
/// 교육일정시작일
/// </summary>
public DateTime lestart { get; set; }
/// <summary>
/// 교육일정종료일
/// </summary>
public DateTime leend { get; set; }
public Int64 cmisno { get; set; }
public int? iscomplete { get; set; }
public String iscompletename
{
get
{
return iscomplete == 1 ? "수료" : iscomplete == 0 ? "미수료" : "-";
}
}
public String leststr
{
get
{
return (cshape == 0 && isrebate == 0 ? payoktime : sdate).Value.ToShortDateString();
}
}
public String leestr
{
get
{
if(cshape == 2)
{
if(lestart != null && lestart > Convert.ToDateTime("1900-01-01") && lestart.ToShortDateString() != "0001-01-01" && lestart >= DateTime.Now)
{
return "<td class=\"link text-center\"><a href=\"#\" onclick=\"javascript: openScd(" + cmno + "," + lectno + "," + cmisno + ");\">" + leend.ToShortDateString() + "</a></td>";
}
else
{
return "<td>" + leend.ToShortDateString() + "</td>";
}
}
else
{
if(edate != null)
{
return "<td>" + edate.Value.ToShortDateString() + "</td>";
}
else
{
return "<td>-</td>";
}
}
}
}
public int usertype { get; set; }
public String scomplete
{
get
{
if(iscomplete == 1)
{
return "<td class=\"link text-center\"><a href=\"#\" onclick=\"viewcert("+lectno+")\">수료</td>";
}
else
{
return "<td class=\"\">" + iscompletename + "</td>";
}
}
}
public String scomplete96
{
get
{
if (iscomplete == 1)
{
return "<td class=\"link text-center\">수료</td>";
}
else
{
return "<td class=\"\">" + iscompletename + "</td>";
}
}
}
}
/// <summary>
/// 토론글
@ -3488,10 +3802,20 @@ namespace NP.Model
public DateTime eend { get; set; }
public string eend2 { get; set; }
/// <summary>
/// 0:오프라인,1:온라인대체
/// </summary>
public int? scdtype { get; set; }
/// <summary>
/// 제한인원
/// </summary>
public int quota { get; set; }
public String quotastr
{
get
{
return scdtype == 1 ? "-" : quota.ToString();
}
}
/// <summary>
/// 순서
/// </summary>
@ -3523,6 +3847,7 @@ namespace NP.Model
public int? termend { get; set; }
public int? peopleend { get; set; }
public int? isselected { get; set; }
public int sseq { get; set; }
}
/// <summary>

View File

@ -71,5 +71,16 @@ namespace NP.Model
/// 계산서날짜
/// </summary>
public DateTime? taxdatereq { get; set; }
/// <summary>
/// 집체교육종료일
/// </summary>
public DateTime? eend { get; set; }
public String eendymd
{
get
{
return eend == null ? "" : eend.Value.ToString("yyyy-MM-dd");
}
}
}
}

View File

@ -574,6 +574,18 @@ namespace NP.Model
/// </summary>
public int studydays { get; set; }
public DateTime? estart { get; set; }
public String tgname { get; set; }
public String tename { get; set; }
/// <summary>
/// 수료여부
/// </summary>
public int? iscomplete { get; set; }
public String completename {
get
{
return iscomplete == null ? "미수료" : iscomplete == 0 ? "미수료" : "수료";
}
}
}
/// <summary>

View File

@ -35,5 +35,6 @@ namespace NP.Model
public IList<LectSD> LectSDs { get; set; }
public EmailSend EmailSend { get; set; }
public IList<EmailSend> EmailBans { get; set; }
public IList<CMinningscd> CMinningscds { get; set; }
}
}