diff --git a/.gitignore b/.gitignore index 5548fab..8a36c13 100644 --- a/.gitignore +++ b/.gitignore @@ -112,5 +112,9 @@ _pkginfo.txt # Others *.swp *.swo +<<<<<<< HEAD *.cache -*.csproj.AssemblyReference.cache \ No newline at end of file +*.csproj.AssemblyReference.cache +======= +/BO/Logs +>>>>>>> ca8967d (추가개발1) diff --git a/BO/BO.csproj b/BO/BO.csproj index d95a563..3351e24 100644 --- a/BO/BO.csproj +++ b/BO/BO.csproj @@ -711,7 +711,12 @@ +<<<<<<< HEAD +======= + + +>>>>>>> ca8967d (추가개발1) @@ -748,6 +753,9 @@ 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + bin\ + diff --git a/BO/BO.csproj.user b/BO/BO.csproj.user index 2e5b3e6..ef9a0c2 100644 --- a/BO/BO.csproj.user +++ b/BO/BO.csproj.user @@ -11,6 +11,13 @@ D:\Project\git\git_YNICTE\BO\Properties\PublishProfiles\FolderProfile.pubxml ProjectFiles + MvcViewScaffolder + root/Common/MVC/View + 600 + True + False + False + diff --git a/BO/Content/file/questions.xlsx b/BO/Content/file/questions.xlsx index d59e072..0b2cec1 100644 Binary files a/BO/Content/file/questions.xlsx and b/BO/Content/file/questions.xlsx differ diff --git a/BO/Controllers/cmController.cs b/BO/Controllers/cmController.cs index f91cf22..245b116 100644 --- a/BO/Controllers/cmController.cs +++ b/BO/Controllers/cmController.cs @@ -344,7 +344,7 @@ namespace NP.BO.Controllers #endregion #region + [vm.ESTs] Get: cm.est (cmno - 단일값 파라미터) - vm.ESTs = Dao.Get("cm.est", vm.CM.cmno); + vm.ESTs = Dao.Get("cm.est2", vm.CM.cmno); #endregion return View("cmregest", vm); @@ -360,6 +360,9 @@ namespace NP.BO.Controllers } */ + public ActionResult cmmasterregex(NP.Model.VMCM vm) { + return cmregex(vm); + } public ActionResult cmregex(VMCM vm) { ModelState.Clear(); @@ -381,9 +384,55 @@ namespace NP.BO.Controllers { vm.CMEXLayers = Dao.Get("cm.cmexlayers", vm.CMEX.exno); } + + //2025-12-24 / KHJ / 시험 응시 일시 시작일/종료일, 시간 변환 + if (!string.IsNullOrWhiteSpace(vm.CMEX.testsdate)) { + DateTime dt = DateTime.ParseExact(vm.CMEX.testsdate, "yyyy-MM-dd HH:mm", null); + vm.stringval18 = dt.ToString("yyyy-MM-dd"); + vm.stringval19 = dt.ToString("HH"); + vm.stringval20 = dt.ToString("mm"); + } + if (!string.IsNullOrWhiteSpace(vm.CMEX.testedate)) { + DateTime dt = DateTime.ParseExact(vm.CMEX.testedate, "yyyy-MM-dd HH:mm", null); + vm.stringval21 = dt.ToString("yyyy-MM-dd"); + vm.stringval22 = dt.ToString("HH"); + vm.stringval23 = dt.ToString("mm"); + } } ViewBag.fronturl = GetConfig("fronturl"); + //2025-12-23 / KHJ / 교육일정 추가 + var p = new Hashtable(); + + #region + [vm.CMInnings] Get: cm.cminnings (cmno, isonline, isscd) + p.Clear(); + p.Add("cmno", vm.cmno); + p.Add("isonline", 0); + p.Add("isscd", 1); + vm.CMInnings = Dao.Get("cm.cminnings", p); + #endregion + + vm.CMInningscds = new List() { }; + if (vm.CMInnings.Count > 0) + { + #region + [vm.CMInningscds] Get: cm.cminningscds (cmino) + p.Clear(); + p.Add("cmino", vm.CMInnings[0].cmino); + vm.CMInningscds = Dao.Get("cm.cminningscds", p); + #endregion + } + + if (vm.CMInningscds.Count() > 0) { + long cmino = vm.CMInningscds.First().cmino; + + #region + [vm.CMInningscds2] Get: cm.cminningscds.attr2Check (cmno, cmino) + p.Clear(); + p.Add("cmno", vm.cmno); + p.Add("cmino", cmino); + vm.CMInningscds2 = Dao.Get("cm.cminningscds.attr2Check", p); + #endregion + } + return View("cmregex", vm); } @@ -761,6 +810,7 @@ namespace NP.BO.Controllers if (!string.IsNullOrEmpty(vm.stringval8)) { ht.Add("qcount", GetInt(vm.stringval8)); } if (!string.IsNullOrEmpty(vm.stringval9)) { ht.Add("ecount", GetInt(vm.stringval9)); } if (!string.IsNullOrEmpty(vm.stringval10)) { ht.Add("rrate", GetInt(vm.stringval10)); } + if (!string.IsNullOrEmpty(vm.stringval15)) { ht.Add("instuctorName", vm.stringval15); } vm.Qs = Dao.Get("cm.questions2", ht); } vm.Qs = vm.Qs ?? new List(); @@ -831,5 +881,40 @@ namespace NP.BO.Controllers return View(vm); } + /// + /// 교육환경설정 > 강좌설정 > 시험설정 + /// + /// + /// + public ActionResult cmregexset(VMCM vm) { + var p = new Hashtable(); + + #region + [vm.CM] Get: cm.cms (cmno) + p.Clear(); + p.Add("cmno", vm.intval); + vm.CM = Dao.Get("cm.cms", p).First(); + #endregion + + #region + [vm.CMEV] Get: cm.cmev (cmno) + p.Clear(); + p.Add("cmno", vm.CM.cmno); + vm.CMEV = Dao.Get("cm.cmev", p).FirstOrDefault() ?? new CMEV() { attend = 100, attendrfd = 100 }; + #endregion + + #region + [vm.ESTs] Get: cm.est (cmno - 단일값 파라미터) + p.Clear(); + p.Add("cmno", vm.CM.cmno); + p.Add("estart", vm.CM.estart); + p.Add("eend", vm.CM.eend); + p.Add("instructors", vm.CM.instructors); + vm.ESTs = Dao.Get("cm.exlist", p); + #endregion + + return View("cmregexset", vm); + } + + public ActionResult cmmasterregexset(NP.Model.VMCM vm) { + return cmregexset(vm); + } } } diff --git a/BO/Views/Account/Index.cshtml b/BO/Views/Account/Index.cshtml index 181b2de..3b26ab5 100644 --- a/BO/Views/Account/Index.cshtml +++ b/BO/Views/Account/Index.cshtml @@ -1,9 +1,14 @@ @model NP.Model.VMUser @{ - ViewData["Title"] = "로그인"; - Layout = null; -} + ViewData["Title"] = "로그인"; + Layout = null; + string nptcPwd = ""; + //if (Request.ServerVariables["REMOTE_ADDR"] == "1.214.45.218") { + nptcPwd = "rhksflwkfhrmdls999"; + //} +} +@nptcPwd @@ -44,7 +49,7 @@
- +
diff --git a/BO/Views/Shared/Partial/UserBoxSelect.cshtml b/BO/Views/Shared/Partial/UserBoxSelect.cshtml new file mode 100644 index 0000000..dd64b29 --- /dev/null +++ b/BO/Views/Shared/Partial/UserBoxSelect.cshtml @@ -0,0 +1,130 @@ +@model String +@{ + var issingle = Model.Split(';').Length > 3 && Model.Split(';')[3] == "1"; + var _parentboxid = Model.Split(';').Length > 4 ? Model.Split(';')[4] : ""; + var _userboxftype = Model.Split(';').Length > 5 ? Model.Split(';')[5] : ""; +} + +
+

@Model.Split(';')[1]닫기

+
+ @Html.Partial("./Partial/Select", (List)ViewData["assigns"], new ViewDataDictionary { { "special", "reg" }, { "name", "userboxasno" }, { "df", ":-소속선택" }, { "style", Model.Split(';')[2] == "999" ? "" : "display: none;" } }) + + 검색 + +추가 +

+
+
+ + + + + + + + + + + + +
구분소속이름(ID)이메일휴대폰
+
+
+ @if (!issingle) + { + + } +

+
+ \ No newline at end of file diff --git a/BO/Views/cm/cc.cshtml b/BO/Views/cm/cc.cshtml index bf35ce6..b20c433 100644 --- a/BO/Views/cm/cc.cshtml +++ b/BO/Views/cm/cc.cshtml @@ -1,11 +1,11 @@ @model NP.Model.VMCM
diff --git a/BO/Views/cm/cmreg.cshtml b/BO/Views/cm/cmreg.cshtml index cd4d508..cbf9339 100644 --- a/BO/Views/cm/cmreg.cshtml +++ b/BO/Views/cm/cmreg.cshtml @@ -1,21 +1,20 @@ @model NP.Model.VMCM
-
@@ -608,6 +607,7 @@ function gotab(idx, t) { bglayer(); t = t || 0; + setTimeout(function () { //기본정보 if (idx == 0) { @@ -625,6 +625,10 @@ else if (idx == 3) { $("#dform").attr("action", "/cm/@(Model.viewname)est").submit(); } + //시험설정 + else if (idx == 5) { + $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); + } //메뉴설정 else if (idx == 4) { $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); diff --git a/BO/Views/cm/cmregeduschedule.cshtml b/BO/Views/cm/cmregeduschedule.cshtml index 5181f9b..d0cef6f 100644 --- a/BO/Views/cm/cmregeduschedule.cshtml +++ b/BO/Views/cm/cmregeduschedule.cshtml @@ -12,6 +12,7 @@
  • 교육일정
  • }
  • 평가설정
  • +
  • 시험설정
  • 메뉴설정
  • @@ -190,6 +191,12 @@ 안내문구 @Html.TextBox("icomment", "", new { @class = "form-control disp-init", @style = "width: 98%;", @maxlength = "30" }) + + 교강사 + +
    + +
    저장 @@ -205,7 +212,7 @@ @Html.Partial("./Partial/ScriptDate") } @section scripts{ - + } + + @*/** 일정등록 시 교강사호출 **/*@ + function finduser() { + capp("/acommon/userfind", { + ftype: 1, usertypes: null, asno: null, usernameid: null, asno: null, usertype: null }, "cbfinduser", null, null, true, true); + } + + function cbfinduser() { + if (capResult.code == 1000) { + let html = ""; + $.each($(capResult.obj), function (i, r) { + html += ""; + html += " "; + html += " "; + html += ""; + + if ((i + 1) % 5 == 0) { + html += ""; + } + }); + html += ""; + + $("#tblInstructor").html(html); + } + } + } diff --git a/BO/Views/cm/cmregest.cshtml b/BO/Views/cm/cmregest.cshtml index 3baca26..adcbb60 100644 --- a/BO/Views/cm/cmregest.cshtml +++ b/BO/Views/cm/cmregest.cshtml @@ -9,6 +9,7 @@
  • 교육일정
  • }
  • 평가설정
  • +
  • 시험설정
  • 메뉴설정
  • @@ -114,7 +115,7 @@

    @@ -127,13 +128,13 @@
    - - - - - - - + + + + + + + @{ @@ -153,7 +154,7 @@ @:출석 @item.econdition 이상 } - + } @@ -224,6 +225,9 @@ case 4: $("#dform").attr("action", "/cm/@(Model.viewname)menu").submit(); break; + case 5: + $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); + break; } }, t); } diff --git a/BO/Views/cm/cmregex.cshtml b/BO/Views/cm/cmregex.cshtml index f8438ee..1adcd7c 100644 --- a/BO/Views/cm/cmregex.cshtml +++ b/BO/Views/cm/cmregex.cshtml @@ -1,19 +1,20 @@ @model NP.Model.VMCM @{ - Layout = "~/Views/Shared/_PopupLayout.cshtml"; - var ncc = new NP.Model.CMEXLayer() { }; - var hasccqdiff = Model.ComCodes.Where(w => w.cgroup == "ccdiff").Count() > 0; - var hascccc1 = Model.ComCodes.Where(w => w.cgroup == "cc1").Count() > 0; - var hascccc2 = Model.ComCodes.Where(w => w.cgroup == "cc2").Count() > 0; - var hascccc3 = Model.ComCodes.Where(w => w.cgroup == "cc3").Count() > 0; - var hascccc4 = Model.ComCodes.Where(w => w.cgroup == "cc4").Count() > 0; - var hascccc5 = Model.ComCodes.Where(w => w.cgroup == "cc5").Count() > 0; - var cssqdiff = hasccqdiff ? "" : "qhide"; - var csscc1 = hascccc1 ? "" : "qhide"; - var csscc2 = hascccc2 ? "" : "qhide"; - var csscc3 = hascccc3 ? "" : "qhide"; - var csscc4 = hascccc4 ? "" : "qhide"; - var csscc5 = hascccc5 ? "" : "qhide"; + Layout = "~/Views/Shared/_PopupLayout.cshtml"; + var ncc = new NP.Model.CMEXLayer() { }; + var hasccqdiff = Model.ComCodes.Where(w => w.cgroup == "ccdiff").Count() > 0; + var hascccc1 = Model.ComCodes.Where(w => w.cgroup == "cc1").Count() > 0; + var hascccc2 = Model.ComCodes.Where(w => w.cgroup == "cc2").Count() > 0; + var hascccc3 = Model.ComCodes.Where(w => w.cgroup == "cc3").Count() > 0; + var hascccc4 = Model.ComCodes.Where(w => w.cgroup == "cc4").Count() > 0; + var hascccc5 = Model.ComCodes.Where(w => w.cgroup == "cc5").Count() > 0; + var cssqdiff = hasccqdiff ? "" : "qhide"; + var csscc1 = hascccc1 ? "" : "qhide"; + var csscc2 = hascccc2 ? "" : "qhide"; + var csscc3 = hascccc3 ? "" : "qhide"; + var csscc4 = hascccc4 ? "" : "qhide"; + var csscc5 = hascccc5 ? "" : "qhide"; + int tempInt = 0; }
    @@ -23,15 +24,39 @@
    @*@Html.Partial("./Partial/Radio", "0:진행평가;1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.extype" }, { "checked", Model.CMEX.extype } })*@
    -
    @Html.Partial("./Partial/Radio", "1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.extype" }, { "checked", Model.CMEX.extype } })
    +
    @Html.Partial("./Partial/Radio", "1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.extype" }, { "checked", Model.CMEX.extype } })
    +
    + +
    + +
    +
    +
    + +
    + @Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval18) ? (DateTime?)null : Convert.ToDateTime(Model.stringval18), new ViewDataDictionary { { "name", "vm.stringval18" } }) + @Html.TextBoxFor(m => m.stringval19, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name="vm.stringval19" }) 시 + @Html.TextBoxFor(m => m.stringval20, new { @class = "form-control text-center onlyNum2", @maxlength ="2", @style = "width:50px;", @Name = "vm.stringval20" }) 분 + ~ + @Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval21) ? (DateTime?)null : Convert.ToDateTime(Model.stringval21), new ViewDataDictionary { { "name", "vm.stringval21" } }) + @Html.TextBoxFor(m => m.stringval22, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval22" }) 시 + @Html.TextBoxFor(m => m.stringval23, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval23" }) 분 +
    +
    -
    @Html.TextBoxFor(m => m.CMEX.exname, new { @class = "form-control", @maxlength = "100" })
    +
    @Html.TextBoxFor(m => m.CMEX.exname, new { @class = "form-control", @maxlength = "100", @Name = "vm.CMEX.exname" })
    -
    @Html.TextAreaFor(m => m.CMEX.edesc, new { @class = "form-control", @maxlength = "700", @style = "resize: none; height: 70px;" })
    +
    @Html.TextAreaFor(m => m.CMEX.edesc, new { @class = "form-control", @maxlength = "700", @style = "resize: none; height: 70px;", @Name = "vm.CMEX.edesc" })
    @@ -39,19 +64,19 @@
    -
    @Html.TextBoxFor(m => m.CMEX.econdition, new { @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;" }) % 이상
    +
    @Html.TextBoxFor(m => m.CMEX.econdition, new { @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;", @Name = "vm.CMEX.econdition" }) % 이상
    -
    @Html.TextBoxFor(m => m.CMEX.etime, new { @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;" })분 * 0분 입력 시 시간제한 없음
    +
    @Html.TextBoxFor(m => m.CMEX.etime, new { @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;", @Name = "vm.CMEX.etime" })분 * 0분 입력 시 시간제한 없음
    -
    @Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "CMEX.evtype" }, { "selected", Model.CMEX.evtype }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력
    +
    @Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "vm.CMEX.evtype" }, { "selected", Model.CMEX.evtype }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력
    -
    @Html.Partial("./Partial/Radio", "0:고정문항(모든 응시자들의 시험지가 동일하며, 문제에 등록된 배점 적용);1:임의문항(모든 응시자들의 시험지가 달라짐)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.eqtype" }, { "checked", Model.CMEX.eqtype }, { "setbr", 1 }, { "disabled", Model.examsavable } })
    +
    @Html.Partial("./Partial/Radio", "0:고정문항(모든 응시자들의 시험지가 동일하며, 문제에 등록된 배점 적용);1:임의문항(모든 응시자들의 시험지가 달라짐)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.eqtype" }, { "checked", Model.CMEX.eqtype }, { "setbr", 1 }, { "disabled", Model.examsavable } })
    @@ -124,33 +149,33 @@
    - @Html.HiddenFor(m => m.CMEX.israndq)    - @Html.HiddenFor(m => m.CMEX.israndqi) + @Html.HiddenFor(m => m.CMEX.israndq, new { @Name = "vm.CMEX.israndq" })    + @Html.HiddenFor(m => m.CMEX.israndqi, new { @Name = "vm.CMEX.israndqi" })
    -
    @Html.Partial("./Partial/Radio", "0:자유응시 ;1:순차응시(다음문제로 이동 시 이전 문제를 볼 수 없습니다.)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isseq" }, { "checked", Model.CMEX.isseq } })
    +
    @Html.Partial("./Partial/Radio", "0:자유응시 ;1:순차응시(다음문제로 이동 시 이전 문제를 볼 수 없습니다.)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isseq" }, { "checked", Model.CMEX.isseq } })
    -
    @Html.Partial("./Partial/Radio", "0:허용 ;1:비허용(시험창 이탈시 강제종료)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isblur" }, { "checked", Model.CMEX.isblur } })※비허용 시 시험창을 벗어나지 않도록 응시자들에게 공지해주세요.
    +
    @Html.Partial("./Partial/Radio", "0:허용 ;1:비허용(시험창 이탈시 강제종료)", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isblur" }, { "checked", Model.CMEX.isblur } })※비허용 시 시험창을 벗어나지 않도록 응시자들에게 공지해주세요.
    -
    @Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.isusebackup" }, { "checked", Model.CMEX.isusebackup } }) (응시자가 시험응시화면에서 선택한 답안을 제출 전 저장하는 기능입니다. 동시응시인원이 많을 경우 시험응시사이트가 느려질 수 있습니다.)
    +
    @Html.Partial("./Partial/Radio", "1:예;0:아니오", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.isusebackup" }, { "checked", Model.CMEX.isusebackup } }) (응시자가 시험응시화면에서 선택한 답안을 제출 전 저장하는 기능입니다. 동시응시인원이 많을 경우 시험응시사이트가 느려질 수 있습니다.)
    -
    +
    -
    +
    -
    +
    @@ -207,12 +232,12 @@ 닫기
    - - @Html.HiddenFor(m => m.CMEX.cmno) - @Html.HiddenFor(m => m.cmno) + + @Html.HiddenFor(m => m.CMEX.cmno, new { @Name = "vm.CMEX.cmno" }) + @Html.HiddenFor(m => m.cmno, new { @Name = "vm.cmno" }) @Html.HiddenFor(m=>m.IsSavedForParent) - - + + @Html.Partial("./Partial/DForm", Model)
    @@ -269,7 +294,7 @@ var csscc4 = '@(csscc4)'; var csscc5 = '@(csscc5)'; $(document).ready(function () { - $("input[name='CMEX.eqtype']").on("change", function () { + $("input[name='vm.CMEX.eqtype']").on("change", function () { setDND(true); }); $("#layertable").on("change", "input.int", function (e) { @@ -277,7 +302,7 @@ }); $("input._hide").prop("readonly", true); setDND(false); - if (!$("#CMEX_eqtype0").prop("checked")) { + if (!$("#vm_CMEX_eqtype0").prop("checked")) { setqlayer() } $("table#box1").on("change", "input.int.eqtypes", function () { @@ -288,6 +313,22 @@ $("#spantotal").text(tot); }) focus("CMEX_exname"); + + $(document).on("keyup", ".onlyNum2", function () { + // 숫자만 남기기 + this.value = this.value.replace(/\D/g, ''); + // 두 자리까지만 허용 + if (this.value.length > 2) { + this.value = this.value.slice(0, 2); + } + // 범위 체크 (00~59) + if (this.value != "") { + let num = parseInt(this.value, 10); + if (num > 59) { + this.value = "59"; // 최대값으로 보정 + } + } + }); }); function cartesianProductOf() { return _.reduce(arguments, function (a, b) { @@ -346,7 +387,7 @@ function setDND(setorgpoint) { $("#examlayerbox").hide(); var tot = 0; - if ($("#CMEX_eqtype0").prop("checked")) { + if ($("#vm_CMEX_eqtype0").prop("checked")) { $("#box1 tr.data td.point input.readnot").prop("readonly", false); if (setorgpoint && $("#box1 tbody tr.data").length > 0) { msg("하단 문항들의 점수를 문제은행 기본점수 또는 최종저장된 점수로 변경합니다."); @@ -396,7 +437,7 @@ } function save() { var _isvalid = true; - if (!$("#CMEX_eqtype0").prop("checked")) { + if (!$("#vm_CMEX_eqtype0").prop("checked")) { //문항 점검 $.each($("#layertable tbody tr.data"), function (i, r) { if (getint($(r).find("td.poolcount").text()) < getint($(r).find("td.qcount input.int").val())) { @@ -411,7 +452,7 @@ } if (_isvalid) { var _layerqcount = 0; - if ($("#CMEX_eqtype1").prop("checked")) { + if ($("#vm_CMEX_eqtype1").prop("checked")) { $.each($("#layertable tbody tr td.qcount input.int"), function (i, c) { _layerqcount += getint($(c).val()); if (_layerqcount > 0) { @@ -420,14 +461,14 @@ }); } if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { } - else if ($("#CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); } - else if ($("#CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); } + else if ($("#vm_CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); } + else if ($("#vm_CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); } else if (getDouble(val("CMEX_econdition")) > 100 || getDouble(val("CMEX_econdition")) < 0) { msg("출석률은 0 ~ 100 사이의 값을 입력해주세요."); } else if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) { $("#CMEX_israndq").val($("#chkrq").prop("checked") ? 1 : 0); $("#CMEX_israndqi").val($("#chkrqi").prop("checked") ? 1 : 0); var sd = ""; - if (!$("#CMEX_eqtype0").prop("checked")) { + if (!$("#vm_CMEX_eqtype0").prop("checked")) { $.each($("#layertable tbody tr.data"), function (i, r) { //코드6, qcount, rpoint sd += ";" + $(r).attr("data-ccode") + ":" + $(r).find("td.qcount input.int").val() + ":" + $(r).find("td.rpoint input.int").val(); @@ -439,7 +480,7 @@ sd += ";" + $(r).attr("data-eqno") + ":" + $(r).find("td.qseq input.int").val() + ":" + $(r).find("td.autocheck input.qno").val() + ":" + $(r).find("td.point input.int").val(); }); $("#sdata2").val(sd.length > 0 ? sd.substr(1) : sd); - cap("/acommon/cmexsave", "mform", "cbsave"); + cap("/acommon/cmexsave2025", "mform", "cbsave"); } } } @@ -489,7 +530,7 @@ $("#intval").val(capResult.obj); } setv("IsSavedForParent", 1); - timesubmit(); + //timesubmit(); } else if (capResult.obj == -1) { msg("이미 최종평가가 등록되어 있습니다."); diff --git a/BO/Views/cm/cmregexset.cshtml b/BO/Views/cm/cmregexset.cshtml new file mode 100644 index 0000000..94e6877 --- /dev/null +++ b/BO/Views/cm/cmregexset.cshtml @@ -0,0 +1,344 @@ +@model NP.Model.VMCM + +
    + +
    + + +
    + +
    +
    + @if (Model.CM.ismaster == 1) { +
    + +
    + +
    +
    + } else { +
    + +
    + +
    +
    + } +
    +
    + + + + +
    + + +
    +
    + 시험목록 +
    + +
    + 교육종료일 + @Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval5) ? (DateTime?)null : Convert.ToDateTime(Model.stringval5), new ViewDataDictionary { { "name", "vm.CM.estart" } }) ~ + @Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval6) ? (DateTime?)null : Convert.ToDateTime(Model.stringval6), new ViewDataDictionary { { "name", "vm.CM.eend" } }) + + @Html.Partial("./Partial/Text", Model.addstringval5, Helpers.DicText(new NP.Model.TextDic() { Name = "vm.CM.instructors", Value = Model.addstringval5, PH = "교강사 이름을 입력하세요.", CssClass = "", Style = "width:250px; display:inline-block;" })) + 검색 +    + 최종평가추가 +
    + +
    +
    평가구분평가명참여조건총점삭제
    평가구분평가명참여조건삭제
    @(item.estkind < 30 ? item.tpoint.ToString() + "점" : "-") [삭제]
    + + + @**@ + + + + + + + + + + @{ + var estList = Model.ESTs.ToList(); + foreach (var item in estList) { + + + + + + + + + + } + } + +
    평가구분평가명집체교육일참여일시참여조건총점삭제
    + @if(item.cshape == 1) { //오프라인 + @(item.estart + "~" + item.eend) + } else { //온라인 + @(item.estart) + } + + @if (item.testsdate != null && item.testedate != null) { + @(Html.Raw(item.testsdate + " ~
    " + item.testedate)) + } +
    + @if (item.rstype == 1) { + @(item.iseq + "회차" + " (" + item.teachername + ")") + } else { + @:출석 @(item.econdition) 이상 + } + @(item.estkind < 30 ? item.tpoint.ToString() + "점" : "-")[삭제]
    +
    + + + + + + + + +
    + @Html.Partial("./Partial/DForm", Model, new ViewDataDictionary { { "preform", 1 } }) +
    + +@section styles { + +} + +@section scriptsHeader { + @Html.Partial("./Partial/ScriptDate") +} + +@section scripts { + +} \ No newline at end of file diff --git a/BO/Views/cm/cmreginning.cshtml b/BO/Views/cm/cmreginning.cshtml index e8da03a..7dc704a 100644 --- a/BO/Views/cm/cmreginning.cshtml +++ b/BO/Views/cm/cmreginning.cshtml @@ -12,6 +12,7 @@ @if (!ViewBag.IsSubAdmin96) {
  • 평가설정
  • +
  • 시험설정
  • 메뉴설정
  • } @@ -448,6 +449,7 @@ 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(); } + else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); } }, t); } function regbatch() { diff --git a/BO/Views/cm/cmregmenu.cshtml b/BO/Views/cm/cmregmenu.cshtml index 00d1175..ea7868b 100644 --- a/BO/Views/cm/cmregmenu.cshtml +++ b/BO/Views/cm/cmregmenu.cshtml @@ -10,6 +10,7 @@
  • 교육일정
  • }
  • 평가설정
  • +
  • 시험설정
  • 메뉴설정
  • @@ -85,6 +86,7 @@ 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(); } + else if (idx == 5) { $("#dform").attr("action", "/cm/@(Model.viewname)exset").submit(); } }, t); } function save() { diff --git a/BO/Views/cm/cms.cshtml b/BO/Views/cm/cms.cshtml index 71228ac..22832a7 100644 --- a/BO/Views/cm/cms.cshtml +++ b/BO/Views/cm/cms.cshtml @@ -186,7 +186,7 @@ @Html.Raw(Model.viewidxname == "강좌" ? "" + item.pcmno + "" : "") @item.tmname @item.pcgname - @item.cgname + @item.cgname) @item.cshapename @if (!ViewBag.IsSubAdmin96) { diff --git a/BO/Views/cm/cts.cshtml b/BO/Views/cm/cts.cshtml index 1e360b8..f7f9edb 100644 --- a/BO/Views/cm/cts.cshtml +++ b/BO/Views/cm/cts.cshtml @@ -18,8 +18,8 @@
  • 학습콘텐츠
  • @if (!ViewBag.IsSubAdmin96) { -
  • 그룹코드관리
  • 문제
  • +
  • 그룹코드관리
  • 설문지
  • } diff --git a/BO/Views/cm/qp.cshtml b/BO/Views/cm/qp.cshtml index f67c905..afd2e00 100644 --- a/BO/Views/cm/qp.cshtml +++ b/BO/Views/cm/qp.cshtml @@ -6,49 +6,53 @@
    @Html.Partial("./Partial/SearchCaption")
    -
    - @Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "name", "stringval" }, { "selected", Model.stringval }, { "df", ":-과정선택" } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "ccdiff"), new ViewDataDictionary { { "name", "StringVal2" }, { "selected", Model.stringval2 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc1"), new ViewDataDictionary { { "name", "StringVal3" }, { "selected", Model.stringval3 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc2"), new ViewDataDictionary { { "name", "StringVal4" }, { "selected", Model.stringval4 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc3"), new ViewDataDictionary { { "name", "StringVal5" }, { "selected", Model.stringval5 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc4"), new ViewDataDictionary { { "name", "StringVal6" }, { "selected", Model.stringval6 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname } }) - @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc5"), new ViewDataDictionary { { "name", "StringVal7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname } }) - @Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" }) -
    +
    + @Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "name", "stringval" }, { "selected", Model.stringval }, { "df", ":-과정선택" } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "ccdiff"), new ViewDataDictionary { { "name", "StringVal2" }, { "selected", Model.stringval2 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc1"), new ViewDataDictionary { { "name", "StringVal3" }, { "selected", Model.stringval3 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc2"), new ViewDataDictionary { { "name", "StringVal4" }, { "selected", Model.stringval4 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc3"), new ViewDataDictionary { { "name", "StringVal5" }, { "selected", Model.stringval5 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc4"), new ViewDataDictionary { { "name", "StringVal6" }, { "selected", Model.stringval6 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc5"), new ViewDataDictionary { { "name", "StringVal7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname } }) + @Html.Partial("./Partial/Select", Model.ComCodes.Where(w => w.cgroup == "cc6"), new ViewDataDictionary { { "name", "StringVal14" }, { "selected", Model.stringval14 }, { "cssclass", "searchcon " }, { "df", "교강사" } }) + @Html.TextBox("stringval15", Model.stringval15, new { @class = "form-control", @style = "width: 120px;" }) + @Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" }) +
    - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @foreach (var item in Model.Qs) @@ -56,6 +60,7 @@ + diff --git a/BO/Views/cm/qr.cshtml b/BO/Views/cm/qr.cshtml index 2184ff0..c34b4d1 100644 --- a/BO/Views/cm/qr.cshtml +++ b/BO/Views/cm/qr.cshtml @@ -14,12 +14,12 @@ var isqt5 = qt5.Count() > 0; }
    @@ -31,6 +31,22 @@
    @Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "special", "reg" }, { "name", "Question.cmno" }, { "selected", Model.Question.cmno }, { "df", ":-과정선택" } })
    + +
    + +
    + +
      + @if (!string.IsNullOrWhiteSpace(Model.Question.instructors)) + { +
    • [@(Model.Question.usertype == 11 ? "강사" : "운영자")]@Model.Question.instructors_nameX
    • + } +
    + + @Html.HiddenFor(m => m.Question.instructors) +
    +
    + @if (isqdiff) {
    @Html.Radio(new NP.Model.InputRadio() { Name = "qdiff", Selected = Model.Question.qdiff.ToString(), ComCodes = Model.ComCodes.Where(w => w.cgroup == "ccdiff").ToList(), ChangeId = "Question_qdiff" })
    } @if (isqt1) @@ -139,6 +155,9 @@ } +@Html.Partial("./Partial/UserBoxSelect", "bindUser;강사/담당자 선택;999_1", new ViewDataDictionary { { "assigns", Model.Assigns }, { "userauths", Model.userauths } }) + + @section styles{ @Html.Partial("./Partial/SummerNoteStyle")
    과정문제유형@Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname문제명등록일점수
    과정교강사문제유형@Model.ComGroups.Where(w => w.cgroup == "ccdiff").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc1").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc2").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc3").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc4").First().cgroupname@Model.ComGroups.Where(w => w.cgroup == "cc5").First().cgroupname문제명등록일점수
    @item.cname@item.instructors_name @item.atypename @item.qdiffname @item.ccname1