YNICTE/BO/Views/cm/cmregeduschedule.cshtml

497 lines
24 KiB
Plaintext

@model NP.Model.VMCM
@{
int studyplaceseq = 0;
int tempInt = 0;
}
<div style="@(Model.CM.cmno < 1 ? "display: none;":"")">
<ul class="pagination pagination-md" style="margin: 0;">
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">기본정보</a></li>
<li class=""><a href="#" onclick="gotab(1);" data-toggle="tab">회차설정</a></li>
@*20220725 강좌인경우 교육일정 보이도록 처리
@if (Model.CM.ismaster == 0 && Model.CM.cshape == 2)*@
@if (Model.CM.ismaster == 0)
{
<li class="active"><a href="#" data-toggle="tab">교육일정</a></li>
}
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">평가설정</a></li>
<li class=""><a href="#" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
</ul>
</div>
<form id="mform1" method="post" class="form-horizontal">
<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="panel-body">
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label">기수 | 강좌명 | 분반</label>
<div class="col-sm-8 col-md-10"><input type="text" class="form-control" disabled value="@(Model.CM.tmname) | @(Model.CM.cname) | @(Model.CM.classno)반" /></div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label">기본교육장소</label>
@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup == "studyplace"), new ViewDataDictionary() { { "checked", Model.CM.studyplace }, { "name", "CM.studyplace" }, { "isreadonly", 1 } })
</div>
<div style="display:none">
@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "1:온라인;0:교육장" }, { "checked", 0 }, { "name", "isonline" } })
</div>
</div>
</section>
<div class="tar buttonbox"><a href="#" onclick="reg(0);" 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">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th width="80">회차</th>
<th>학습방식</th>
<th>강의주제</th>
@*<th>강사</th>*@
<th>최근수정일</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@if(Model.CMInnings.Count() > 0)
{
foreach (var item in Model.CMInnings)
{
<tr>
<td>@item.iseq @(item.istaste == 1 ? "(S)" : "")</td>
<td>@item.scdtypename</td>
<td class="link"><a href="#" onclick="reg(@item.cmino)">@item.ititle</a></td>
@*<td>@item.username</td>*@
<td>@item.udtymd</td>
</tr>
}
}
</tbody>
</table>
</div>
</section>
@{
long cmino = 0;
if(Model.CMInningscds.Count() > 0)
{
cmino = Model.CMInningscds.First().cmino;
}
}
<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> 교육일정등록 @(cmino)<span class=""></span></strong></header>
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th width="80">순서</th>
<th width="80">운영기수</th>
<th width="80">교육장소</th>
<th>교육종료일</th>
<th>제한인원</th>
<th>등록인원(완료/대기/출결완료)</th>
<th>최근수정일</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@if(Model.CMInningscds.Count() > 0)
{
foreach (var item in Model.CMInningscds)
{
tempInt = Model.CMInningscds2.Where(c => c.cmino == item.cmino && c.cmisno == item.cmisno && c.intv1 == 2).Count();
<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.quotastr</td>
<td>@item.regmem / @item.zstring0 / @tempInt</td>
<td>@item.udt</td>
</tr>
}
}
</tbody>
</table>
</div>
</section>
</form>
<form id="dform" method="post" action="/cm/@Model.listviewname">
@Html.Partial("./Partial/DForm", Model, new ViewDataDictionary { { "preform", 1 } })
</form>
<div id="thisbox" class="findbox draggable regbox" style="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>
<table class="regtable">
<colgroup><col style="width:150px;" /><col /></colgroup>
<tr>
<th>학습방식</th>
@*20220725 교육유형이 오프라인인 경우 학습방식 변경 불가*@
@if (Model.CM.cshape == 1)
{
<td>@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "0:오프라인;1:온라인대체" }, { "disabled", "disabled" }, { "checked", 0 }, { "name", "scdtype" } })</td>
}
else
{
<td>@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "0:오프라인;1:온라인대체" }, { "checked", 0 }, { "name", "scdtype" } })</td>
}
</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>
</tr>
</table>
<div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="save();">저장</a>
<a href="#" class="btn btn-danger" id="btndel" onclick="del();">삭제</a>
</div>
<br /><br />
</div>
<div id="scdbox" class="findbox draggable regbox" style="width: 800px; z-index: 1041; top: 60px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcapscd">일정등록/수정</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<table class="regtable">
<colgroup><col style="width:150px;" /><col /></colgroup>
<tr>
<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>
@*20220725 교육유형이 오프라인인 경우 From~To 형태로 기재*@
@if (Model.CM.cshape == 1)
{
<td>
@Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "iestart" } })
<span class="idoff">~</span>
@Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "ieend" } })
</td>
}
else
{
<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 } })*@
@foreach (var item in Model.ComCodes.Where(w => w.cgroup == "studyplace"))
{
<span><input type="radio" name="istudyplace" id="istudyplace_@item.ccode" @(studyplaceseq == 0 ? "checked" : "") value="@item.ccode" /><label style="vertical-align: sub;" for="istudyplace_@item.ccode">&nbsp;@item.cname</label></span>
studyplaceseq++;
}
</td>
</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 = "5" })</td>
</tr>
</table>
<div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="savescd();">저장</a>
<a href="#" class="btn btn-danger" id="btndelscd" onclick="delscd();">삭제</a>
</div>
<br /><br />
</div>
@section styles{
}
@section scriptsHeader{
@Html.Partial("./Partial/ScriptDate")
}
@section scripts{
<script>
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 (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", "집체교육");
data.append("idate", null);
data.append("iday", null);
data.append("ist", null);
data.append("iet", null);
data.append("istaste", 0);
data.append("sttime", 0);
data.append("atime", 0);
data.append("mstime", 0);
data.append("metime", 0);
data.append("iseq", 99);
data.append("scdtype", getrv("scdtype"));
capfile("/acommon/cminningsave", data, "cbcminningsave", null, null, true);
}
}
function cbcminningsave() {
if (capResult.code == 1000 && capResult.obj > 0) {
msg2("저장되었습니다.", 0, null, "gotab(2);");
} else {
msg2("이미 등록된 회차입니다. 다른 회차를 입력해주세요.");
}
}
function savescd() {
var estart = "";
var eend = "";
if (val("sseq") == "") {
focus("sseq"); msg2("운영기수를 입력해주세요.");
return;
}
if (@Model.CM.cshape == 1) {//20220726 오프라인100%
if (check("iestart", null, "교육종료일(시작)을 입력해주세요.", true)) { return; }
else if (check("ieend", null, "교육종료일(종료)을 입력해주세요.", true)) { return; }
else if (val("iestart") > val("ieend")) { focus("ieend"); msg2("교육종료일(종료)을 확인해주세요(종료일이 더 빠름)"); return; }
estart = (getv("iestart") + " 00:00:00").toString();
eend = (getv("ieend") + " 23:59:59").toString();
} else if (@Model.CM.cshape == 2) {//20220726 온라인
if (check("idate", null, "교육종료일을 입력해주세요.", true)) { return;}
else {
if (!_isonline) { // 혼합교육
if (val("isth") == "") { focus("isth"); msg2("교육종료시간을 확인해주세요."); return; }
else if (val("istm") == "") { focus("istm"); msg2("교육종료시간을 확인해주세요."); return; }
else if (val("ieth") == "") { focus("ieth"); msg2("교육종료시간을 확인해주세요."); return;}
else if (val("ietm") == "") { focus("ietm"); msg2("교육종료시간을 확인해주세요."); return; }
else if (getint(val("isth")) > getint(val("ieth"))) { focus("ieth"); msg2("교육종료시간을 확인해주세요(종료시간이 더 빠름)"); return;}
else if (getint(val("isth")) == getint(val("ieth")) && getint(val("istm")) > getint(val("ietm"))) { focus("ieth"); msg2("교육종료시간을 확인해주세요(종료시간이 더 빠름)"); return;}
}
}
var date = getv("idate");
var isth = getv("isth");
var istm = getv("istm");
var ieth = getv("ieth");
var ietm = getv("ietm");
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 + " 23:59:59").toString();
}
}
if (!_isonline && !$.isNumeric(getv("iquota"))) {
focus("iquota"); msg2("모집인원을 입력해주세요.");
return;
}
if (confirm("저장하시겠습니까?")) {
capp("/acommon/cminningscdsave", {
cmisno: _cmisno,
cmino: @(Model.CMInnings.Count() > 0 ? Model.CMInnings[0].cmino : 0),
estart2: estart,
eend2: eend,
quota: _isonline ? 99999 : getv("iquota"),
sseq : getv("sseq"),
studyplace: _isonline ? null : $(":input:radio[name=istudyplace]:checked").val()
}, "cbcminningscdsave", null, null, null, true);
}
}
function cbcminningscdsave() {
if (capResult.code == 1000 && capResult.obj > 0) {
msg2("저장되었습니다.", 0, null, "gotab(2);");
} else {
msg2("저장실패.");
}
}
function reg(no) {
var inningcnt = @Model.CMInnings.Count;
if (no == 0 && inningcnt > 0) {
msg2("회차는 1개만 등록 가능합니다.");
return;
}
_cmino = no;
$("#btndel").hide();
setrv("isonline", 0);
if ($("#files").html() == "") {
$("#filetf").show();
}
$("#ititle,#userno,#iseq,#fgnotf,#filetf").val("");
$("#files").html("");
$("#pcap").text("회차등록");
if (no < 1) {
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
} else {
$("#pcap").text("회차수정");
capp("/acommon/cminningget", { cmino: no }, "cbcminningget", null, null, null, true);
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
}
}
function regscd(no,sno) {
var inningcnt = @Model.CMInnings.Count;
if (no == 0 && inningcnt == 0) {
msg2("회차가 등록되어있어야 교육일정 등록이 가능합니다.");
return;
}
_cmino = no;
_cmisno = sno;
$("#btndelscd").hide();
$("#idate,#isth,#istm,#ieth,#ietm,#iquota").val("");
$("#pcapscd").text("일정등록");
if (no < 1) {
bglayer(); $("#scdbox").slideDown("fast", function () { $("#scdbox").scrollTop(0); });
} else {
$("#pcapscd").text("일정수정");
capp("/acommon/CMInningScdGet", { cmino: no, cmisno: sno }, "cbcminningscdget", null, null, null, true);
}
}
function cbcminningget() {
if (capResult.code == 1000) {
var d = capResult.obj;
$("#btndel").show();
//setrv("isonline", d.isonline);
setrv("scdtype",d.scdtype)
setv("ititle", d.ititle);
setv("userno", d.userno);
setv("iseq", d.iseq);
setv("fgnotf", getdb(d.fgnotf));
$("#filetf").show();
if (getdb(d.orgname2) != "") {
$("#filetf").hide();
$("#files").append("<a href=\"/aCommon/DownFile?fno=" + d.fileno2 + "\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">" + d.orgname2 + "</span></a>" +
"&nbsp;&nbsp;<a href=\"#\" class=\"btn_txt btn btn-xxs btn-danger\" onclick=\"javascript:delfiletf(" + d.fileno2 + ", this, '" + d.cmino + "|9', true, 'cbfgnotfdel()');\" title=\"삭제\">삭제</a>");
}
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
}
}
function cbcminningscdget() {
if (capResult.code == 1000) {
var d = capResult.obj;
$("#btndelscd").show();
var dStart = d.estart2;
var dEnd = d.eend2;
var date = dStart.substr(0, 10);
var startSplit = dStart.split(' ');
var endSplit = dEnd.split(' ');
var start;
var end;
if (startSplit.length > 0) {
start = startSplit[1];
}
if (endSplit.length > 0) {
end = endSplit[1];
}
var startMinute = start.split(':')[0];
var startSec = start.split(':')[1];
var endMinute = end.split(':')[0];
var endSec = end.split(':')[1];
if (@Model.CM.cshape == 1) { //20220726 오프라인100%
setv("iestart", d.estartShortDateString);
setv("ieend", d.eendShortDateString);
}
else {
setv("idate", date);
setv("isth", getint(startMinute));
setv("istm", getint(startSec));
setv("ieth", getint(endMinute));
setv("ietm", getint(endSec));
}
setv("iquota", getint(d.quota));
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); });
}
function delfiletf(id, a, log, isjs2, cb) {
log = log || "";
if (confirm('삭제 하시겠습니까?')) {
capp('/aCommon/DeleteFile', { key: id, log: log }, cb || "cbdelfilenew", null, null, null, isjs2);
}
}
function cbfgnotfdel() {
if (capResult.code == 1000) {
$("#files").html("");
$("#filetf").show();
}
}
function gotab(idx, t) {
bglayer();
t = t || 0;
setTimeout(function () {
if (idx == 0) { $("#dform").attr("action", "/cm/@Model.viewname").submit(); }
else if (idx == 1) { $("#dform").attr("action", "/cm/@(Model.viewname)inning").submit(); }
else if (idx == 2) { $("#dform").attr("action", "/cm/@(Model.viewname)eduschedule").submit(); }
else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); }
else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); }
}, t);
}
function del() {
if (confirm("삭제하시겠습니까?")) {
capp("/acommon/CMInningByScdDel", { im: @(Model.CM.ismaster), cmino: _cmino}, "cbdel");
}
}
function delscd() {
if (confirm("삭제하시겠습니까?")) {
capp("/acommon/CMInningScdDel", { im: @(Model.CM.ismaster), cmisno: _cmisno}, "cbscddel");
}
}
function cbdel() {
if (capResult.code == 1000) {
msg("삭제했습니다.", null, true, null, true);
gotab(2, 500);
} else {
msg("교육일정 정보가 있습니다. 삭제할 수 없습니다.");
$("#thisbox").slideUp("fast", function () { $("#thisbox").scrollTop(0); });
}
}
function cbscddel() {
if (capResult.code == 1000) {
msg("삭제했습니다.", null, true, null, true);
gotab(2, 500);
} else {
msg("등록인원이 있습니다. 삭제할 수 없습니다.");
$("#thisbox").slideUp("fast", function () { $("#thisbox").scrollTop(0); });
}
}
function cbauth() {
if (capResult.code == 1000) {
var nWidth = "1080";
var nHeight = screen.availHeight;
var popOption = "";
popOption += "width=" + nWidth + "px,";
popOption += "height=" + nHeight + "px,";
popOption += "toolbar=no,menubar=no,location=yes,";
popOption += "resizable=yes,status=yes,scrollbars=yes";
var pop = window.open("@ViewBag.fronturl.Replace("https://", "http://")/CDMS/PlayTaste?authtype=" + _dtype +"&authkey=" + capResult.obj + "&ctno=" + _ctno + "&ismobile=0", 'contentsview', popOption);
if (pop == null) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
</script>
}