From 49b1dda4874335447c1340d9b260784d681fad0d Mon Sep 17 00:00:00 2001 From: KimHanJin Date: Fri, 26 Dec 2025 23:11:05 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B6=94=EA=B0=80=EA=B0=9C=EB=B0=9C1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 +- BO/BO.csproj | 8 + BO/BO.csproj.user | 7 + BO/Content/file/questions.xlsx | Bin 16167 -> 16294 bytes BO/Controllers/cmController.cs | 87 +- BO/Views/Account/Index.cshtml | 13 +- BO/Views/Shared/Partial/UserBoxSelect.cshtml | 130 + BO/Views/cm/cc.cshtml | 12 +- BO/Views/cm/cmreg.cshtml | 34 +- BO/Views/cm/cmregeduschedule.cshtml | 63 +- BO/Views/cm/cmregest.cshtml | 22 +- BO/Views/cm/cmregex.cshtml | 129 +- BO/Views/cm/cmregexset.cshtml | 344 + BO/Views/cm/cmreginning.cshtml | 2 + BO/Views/cm/cmregmenu.cshtml | 2 + BO/Views/cm/cms.cshtml | 2 +- BO/Views/cm/cts.cshtml | 2 +- BO/Views/cm/qp.cshtml | 81 +- BO/Views/cm/qr.cshtml | 57 +- BO/Views/cm/qs.cshtml | 97 +- BO/Views/cm/rs.cshtml | 12 +- BO/bin/MyBatis/Maps/CM.xml | 297 +- BO/bin/MyBatis/Maps/Lect.xml | 2 +- BO/bin/NP.Base.dll | Bin 373248 -> 398336 bytes BO/bin/NP.Dao.dll | Bin 31744 -> 32768 bytes BO/bin/NP.Model.dll | Bin 439296 -> 465408 bytes .../Debug/BO.csproj.AssemblyReference.cache | Bin 64793 -> 64793 bytes BO/obj/Debug/NP.BO.dll | Bin 172032 -> 173568 bytes BO/obj/Debug/NP.BO.pdb | Bin 208384 -> 212480 bytes Base/Controller/ACommon.cs | 3 +- Base/Controller/ACommonCM.cs | 83 +- Base/bin/Debug/MyBatis/Maps/CM.xml | 297 +- Base/bin/Debug/MyBatis/Maps/CRoom.xml | 96 +- Base/bin/Debug/MyBatis/Maps/Lect.xml | 2 +- Base/bin/Debug/NP.Base.dll | Bin 398336 -> 399360 bytes Base/bin/Debug/NP.Base.pdb | Bin 556544 -> 558592 bytes Base/bin/Debug/NP.Dao.dll | Bin 32768 -> 32768 bytes Base/bin/Debug/NP.Dao.pdb | Bin 48640 -> 48640 bytes Base/bin/Debug/NP.Model.dll | Bin 465408 -> 467968 bytes Base/bin/Debug/NP.Model.pdb | Bin 1342976 -> 1351168 bytes .../Debug/Base.csproj.AssemblyReference.cache | Bin 0 -> 29037 bytes Base/obj/Debug/NP.Base.dll | Bin 0 -> 399360 bytes Base/obj/Debug/NP.Base.pdb | Bin 0 -> 558592 bytes Dao/CommonDao.cs | 4 +- Dao/MyBatis/Maps/CM.xml | 260 +- Dao/MyBatis/Maps/CRoom.xml | 118 +- Dao/bin/Debug/MyBatis/Maps/CM.xml | 297 +- Dao/bin/Debug/MyBatis/Maps/CRoom.xml | 96 +- Dao/bin/Debug/MyBatis/Maps/Lect.xml | 2 +- Dao/bin/Debug/NP.Dao.dll | Bin 32768 -> 32768 bytes Dao/bin/Debug/NP.Dao.pdb | Bin 48640 -> 48640 bytes Dao/bin/Debug/NP.Model.dll | Bin 465408 -> 467968 bytes Dao/bin/Debug/NP.Model.pdb | Bin 1342976 -> 1351168 bytes Dao/obj/Debug/NP.Dao.dll | Bin 32768 -> 32768 bytes Dao/obj/Debug/NP.Dao.pdb | Bin 48640 -> 48640 bytes .../Dao.csproj.AssemblyReference.cache | Bin 0 -> 4080 bytes FO/Logs/query.txt | 547 ++ FO/Logs/query.txt.2 | 7419 +++++++++++++++++ FO/Views/CRoom/Estimation.cshtml | 16 +- FO/Views/CRoom/EstimationExam.cshtml | 6 +- FO/Views/Course/SmartSearch.cshtml | 2 +- .../Debug/FO.csproj.AssemblyReference.cache | Bin 45752 -> 54686 bytes LMS_YNICTE.sln | 11 + Model/BaseModel.cs | 2 + Model/CM.cs | 37 +- Model/VMCM.cs | 3 +- Model/bin/Debug/NP.Model.dll | Bin 465408 -> 467968 bytes Model/bin/Debug/NP.Model.pdb | Bin 1342976 -> 1351168 bytes Model/obj/Debug/NP.Model.dll | Bin 465408 -> 467968 bytes Model/obj/Debug/NP.Model.pdb | Bin 1342976 -> 1351168 bytes 70 files changed, 9991 insertions(+), 719 deletions(-) create mode 100644 BO/Views/Shared/Partial/UserBoxSelect.cshtml create mode 100644 BO/Views/cm/cmregexset.cshtml create mode 100644 Base/obj/Debug/Base.csproj.AssemblyReference.cache create mode 100644 Base/obj/Debug/NP.Base.dll create mode 100644 Base/obj/Debug/NP.Base.pdb create mode 100644 Dao/obj/Release/Dao.csproj.AssemblyReference.cache create mode 100644 FO/Logs/query.txt create mode 100644 FO/Logs/query.txt.2 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 d59e072d4f099645b902dd8fff75446b9f1d36bd..0b2cec1171e638f7a4ab7d513625cf33c7b17973 100644 GIT binary patch delta 12570 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 delta 12424 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 S{=*0r*k6("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