교육신청내역 추가

- 교육기간/기술인분류/직무분야/교육목적/등급 출력
 - 수정버튼 클릭 시 '교육운영>신청현황>(교육생이름클릭)교육생정보 레이어팝업 출력'
교육일정 추가
 - 혼합강좌일 경우만 출력. 수강생 교육신청 시 선택한 혼합강좌의 교육일정
 - 교육장소/교육일정
 - 수정버튼 클릭 시 '교육운영>신청현황>(교육일선택)교육일정변경 레이어팝업 출력'
This commit is contained in:
lch 2021-05-20 07:59:00 +00:00
parent f30a662c6f
commit 9950856225
3 changed files with 270 additions and 12 deletions

View File

@ -704,7 +704,16 @@ namespace NP.BO.Controllers
else
{
vm.Pay = Dao.Get<Pay>("cr.pay1", vm.payno).First();
vm.PayItems = Dao.Get<PayItem>("cr.pay2", vm.payno);
vm.PayItems = Dao.Get<PayItem>("cr.pay2", vm.payno);
vm.ComCodes = GetComCodes("typeman,typeedu,typegrade,typejob,studyplace");
vm.Lect = Dao.Get<Lect>("lect.lects", new System.Collections.Hashtable() { { "payno", vm.payno } }).FirstOrDefault();
vm.Lect.typemanname = vm.ComCodes.Where(w => w.cgroup.ToString() == "typeman" && w.ccode == vm.Lect.typeman).FirstOrDefault()?.cname;
vm.Lect.typeeduname = vm.ComCodes.Where(w => w.cgroup.ToString() == "typeedu" && w.ccode == vm.Lect.typeedu).FirstOrDefault()?.cname;
vm.Lect.typegradename = vm.ComCodes.Where(w => w.cgroup.ToString() == "typegrade" && w.ccode == vm.Lect.typegrade).FirstOrDefault()?.cname;
vm.Lect.typejobname = vm.ComCodes.Where(w => w.cgroup.ToString() == "typejob" && w.ccode == vm.Lect.typejob).FirstOrDefault()?.cname;
if(!string.IsNullOrEmpty(vm.Lect.studyplace)) vm.Lect.studyplacename = vm.ComCodes.Where(w => w.cgroup.ToString() == "studyplace" && w.ccode == int.Parse(vm.Lect.studyplace)).FirstOrDefault()?.cname;
ViewBag.TestCode = TestCode;
vm.CM = Dao.Get<CM>("cm.cm", new System.Collections.Hashtable() { { "cmno", vm.Lect.cmno } }).First();
}
return View(vm);
}

View File

@ -132,17 +132,17 @@ else if (p.isunpay == 3)
{
if (p.iscancel == 1)
{
<span>발행취소</span>
<span>발행취소</span>
}
else
{
if (p.taxdate == null)
{
<span>미발행</span>
<span>미발행</span>
}
else
{
<span>발행완료</span>
<span>발행완료</span>
}
}
}
@ -150,7 +150,6 @@ else if (p.isunpay == 3)
<th>
</th>
<td>
</td>
</tr>
</table>
@ -183,7 +182,7 @@ else if (p.isunpay == 3)
}
</section>
@if (pi.FirstOrDefault().isrebate == 1 )
@if (pi.FirstOrDefault().isrebate == 1)
{
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 환급내역<span class=""></span></strong></header>
@ -192,9 +191,9 @@ else if (p.isunpay == 3)
<th>은행명</th>
<td><input type="text" id="rbank" name="rbank" class="form-control" value="@pi.FirstOrDefault().rbank" /></td>
<th>계좌번호</th>
<td><input type="text" id="rbankaccnum" name="rbankaccnum" class="form-control" value="@pi.FirstOrDefault().rbankaccnum"/></td>
<td><input type="text" id="rbankaccnum" name="rbankaccnum" class="form-control" value="@pi.FirstOrDefault().rbankaccnum" /></td>
<th>예금주</th>
<td><input type="text" id="tbankuser" name="tbankuser" class="form-control" value="@pi.FirstOrDefault().tbankuser"/></td>
<td><input type="text" id="tbankuser" name="tbankuser" class="form-control" value="@pi.FirstOrDefault().tbankuser" /></td>
</tr>
</table>
<div style="padding: 5px 10px; text-align: right;">
@ -269,9 +268,120 @@ else if (p.isunpay == 3)
</form>
<div style="padding: 5px 10px; text-align: right;"><a href="#" class="btn btn-primary" onclick="save();">저장</a></div>
</section>
}
<br /><br /><br />
@if (Model.Lect != null)
{
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교육신청내역<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<tr>
<th>교육기간</th>
<th>기술인분류</th>
<th>직무분야</th>
<th>교육목적</th>
<th>등급</th>
</tr>
<tr>
<td>@Model.Lect.sdate.Value.ToString("yyyy-MM-dd") ~ @Model.Lect.edate.Value.ToString("yyyy-MM-dd")</td>
<td>@Model.Lect.typemanname</td>
<td>@Model.Lect.typejobname</td>
<td>@Model.Lect.typeeduname</td>
<td>@Model.Lect.typegradename</td>
</tr>
</table>
<div style="padding: 5px 10px; text-align: right;">
<a href="#" class="btn btn-primary" onclick="viewlect(this, @Model.Lect.ustatus, @Model.Lect.lectno, @Model.Lect.fileno, '@Model.Lect.fileurl', '@Model.Lect.orgname', @Model.Lect.status, @Model.Lect.pstatus,@Model.Lect.rstatus,'@string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12}:{13}:{14}:{15}:{16}:{17}",Model.Lect.asname??"",Model.Lect.username, Model.Lect.userid??"", Model.Lect.uduty??"", Model.Lect.depart??"", Model.Lect.email, Model.Lect.telno, Model.Lect.mobile,Model.Lect.ckfcfyear,Model.Lect.assignuser,Model.Lect.edus,Model.Lect.sdate==null?"":Model.Lect.sdate.Value.ToString("yyyy-MM-dd"),Model.Lect.edate==null?"":Model.Lect.edate.Value.ToString("yyyy-MM-dd"),Model.Lect.typeman,Model.Lect.typejob,Model.Lect.typeedu,Model.Lect.typegrade,Model.Lect.pplno)')">수정</a><br />
</div>
</section>
if (Model.Lect.cshape == 2)
{
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교육일정<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<tr>
<th>교육장소</th>
<th>교육일정</th>
</tr>
<tr>
<td>@Model.Lect.studyplacename</td>
<td>@Model.Lect.estart.ToString("yyyy-MM-dd HH:mm")</td>
</tr>
</table>
<div style="padding: 5px 10px; text-align: right;">
<a href="#" class="btn btn-primary" onclick="openScd(@Model.Lect.lectno, @Model.Lect.cmisno);">수정</a><br />
</div>
</section>
}
}
<div id="thisbox" 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:150px;" /><col /></colgroup>
<tr><th>고객사</th><td id="asname"></td></tr>
<tr><th>이름(ID)</th><td id="usernameid"></td></tr>
<tr><th>직위</th><td id="positiondepart"></td></tr>
<tr><th>이메일</th><td id="email"></td></tr>
<tr><th>휴대전화번호</th><td id="mobile"></td></tr>
<tr><th>교육기간</th><td>@Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "sdate" } }) ~ @Html.Partial("./Partial/Date", (DateTime?)null, new ViewDataDictionary { { "name", "edate" } })<a href="#" id="btnchange" class="btn btn-info" onclick="change();">저장</a></td></tr>
<tr>
<th>기술인분류</th>
<td>
<select class="form-control dev" id="selTypeman" name="selTypeman">
@foreach (var t in Model.ComCodes.Where(w => w.cgroup.ToString() == "typeman"))
{
<option value="@t.ccode">@t.cname</option>
}
</select>
</td>
</tr>
<tr>
<th>직무분야</th>
<td>
<select class="form-control dev" id="selTypejob" name="selTypejob">
@foreach (var t in Model.ComCodes.Where(w => w.cgroup.ToString() == "typejob"))
{
<option value="@t.ccode">@t.cname</option>
}
</select>
</td>
</tr>
<tr>
<th>교육목적</th>
<td>
<select class="form-control dev" id="selTypeedu" name="selTypeedu">
@foreach (var t in Model.ComCodes.Where(w => w.cgroup.ToString() == "typeedu"))
{
<option value="@t.ccode">@t.cname</option>
}
</select>
</td>
</tr>
<tr>
<th>등급</th>
<td>
<select class="form-control dev" id="selTypegrade" name="selTypegrade">
@foreach (var t in Model.ComCodes.Where(w => w.cgroup.ToString() == "typegrade"))
{
<option value="@t.ccode">@t.cname</option>
}
</select>
</td>
</tr>
</table>
<div class="findboxbtnbox" id="btnsavetype">
<a href="#" class="btn btn-primary" onclick="savetype();">교육신청정보 저장</a>
</div>
<br /><br />
<input type="hidden" id="hidpplno" />
</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="postlayer" class="daumpost">
<a href="#" class="btn btn-xxs btn-select closedaumpost" onclick="closeDaumPostcode();">close</a>
</div>
@ -411,5 +521,143 @@ else if (p.isunpay == 3)
opener.gotaxdetail(payno);
self.close();
}
function viewlect(a, ustatus, lectno, fileno, fileurl, orgname, status,pstatus,rstatus, datas) {
if (ustatus != 99) {
_lectno = lectno;
_pstatus = pstatus;
_rstatus = rstatus;
var ds = datas.split(':');
$("#asname").text(ds[0]);
$("#assignuser").text(ds[8]);
$("#usernameid").text(ds[1] + "(" + ds[2] + ")");
$("#positiondepart").text(ds[3]);
$("#ckfcfyear").text(ds[9]);
$("#email").text(ds[5]);
$("#telno").text(ds[6]);
$("#mobile").text(ds[7]);
$("#sdate").val(ds[11]);
$("#edate").val(ds[12]);
$("#edus").text("");
if (!isnulloremt(String(ds[10]))) {
if (String(ds[10]).substr(0, 1) != "0") { $("#edus").append("| 공정거래일반:" + String(ds[10]).substr(0, 1) + "회 | " + "<br/>") }
if (String(ds[10]).substr(1, 1) != "0") { $("#edus").append("| 불공정거래행위:" + String(ds[10]).substr(1, 1) + "회 | " + "<br/>") }
if (String(ds[10]).substr(2, 1) != "0") { $("#edus").append("| 부당한공동행위:" + String(ds[10]).substr(2, 1) + "회 | " + "<br/>") }
if (String(ds[10]).substr(3, 1) != "0") { $("#edus").append("| 하도급거래:" + String(ds[10]).substr(3, 1) + "회 | " + "<br/>") }
if (String(ds[10]).substr(4, 1) != "0") { $("#edus").append("| 부당내부거래:" + String(ds[10]).substr(4, 1) + "회 | " + "<br/>") }
}
bglayer(); $("#thisbox").slideDown("fast");
$("#selTypeman").val(ds[13]).attr("selected", "selected");
$("#selTypejob").val(ds[14]).attr("selected", "selected");
$("#selTypeedu").val(ds[15]).attr("selected", "selected");
$("#selTypegrade").val(ds[16]).attr("selected", "selected");
$("#hidpplno").val(ds[17]);
}
}
function change() {
if (($("#sdate").val() == "") || ($("#edate").val() == "")) {
msg2("교육기간을 입력한 후 저장해주세요.");
} else if (confirm("교육기간을 수정하시겠습니까?")) {
capp("/acommon/lectsedatechange", { lectno: _lectno, sdate: $("#sdate").val(), edate: $("#edate").val(), pstatus: _pstatus, rstatus: _rstatus }, "cbsedatechange", null, null, null, true);
}
}
function cbsedatechange() {
if (capResult.code == 1000) {
msg2("상태를 변경했습니다.", null, null, "location.href = location.href");
} else if (capResult.code == -1) {
msg("결제가 완료가 아닌 대상은 상태를 변경할 수 없습니다.");
$("#thisbox").slideUp('fast'); $('#bglayer').hide();
}
}
function savetype() {
if (confirm("교육신청 정보를 저장하시겠습니까??")) {
capp("/acommon/pplogtypechange", {
pplno: $("#hidpplno").val(),
typeman: $("#selTypeman").val(),
typejob: $("#selTypejob").val(),
typeedu: $("#selTypeedu").val(),
typegrade: $("#selTypegrade").val()
}, "afterUpdateType");
}
}
function afterUpdateType() {
if (capResult.code > 0) {
msg2("저장되었습니다.", null, null, "location.href = location.href");
}
else {
msg("관리자에게 문의하세요.");
$("#thisbox").slideUp('fast'); $('#bglayer').hide();
}
}
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) {
msg2("저장되었습니다.", null, null, "location.href = location.href");
}
else {
msg("관리자에게 문의하세요.");
$("#thisbox").slideUp('fast'); $('#bglayer').hide();
}
}
</script>
}

View File

@ -157,7 +157,7 @@
</select>
<select id="lect.lects" parameterClass="hashtable" resultClass="lect">
select a.lectno,a.cdt,a.status,a.userno,a.oktime,a.cmisno
select a.lectno,a.cdt,a.status,a.userno,a.oktime,a.cmisno,a.cmno
,af.fileurl,af.fileno,af.orgname
,f.asname,e.asno
,d.username cnoname,d.userid cnoid
@ -171,7 +171,7 @@
,b.rstatus
,a2.rstime,a2.retime,a2.sstime,a2.setime,a2.cshape,a2.studydays
,a.sdate,a.edate,a.isrebate
,scd.estart,scd.eend
,scd.estart,scd.eend,scd.studyplace
,pp.typeman, pp.typeedu, pp.typegrade, pp.typejob, pp.pplno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.payno,a.pino</isNull>) rno
,count(a.cdt) over() pagetotalcount
@ -206,6 +206,7 @@
<isNotNull property="scdestart" prepend="and">
date_format(scd.estart,'%Y%m%d') = date_format(#scdestart#,'%Y%m%d')
</isNotNull>
<isNotNull property="payno" prepend="and">a.payno=#payno#</isNotNull>
and (rfdi.rfdno is null or rfd.rfdno is not null)
order by rno
</select>