교육생 개별 등록 작업(중간커밋)

This commit is contained in:
lch 2021-06-03 09:26:47 +00:00
parent f9f06507c3
commit 0e43995a57
2 changed files with 146 additions and 150 deletions

View File

@ -14,6 +14,7 @@ namespace NP.BO.Controllers
{
public ActionResult lectreg(NP.Model.VMCM vm)
{
vm.ComCodes = GetComCodes("typeman,typeedu,typegrade,typejob,studyplace");
vm.IsAdmin = SUserInfo.IsAdmin;
vm.IsSiteAdmin = SUserInfo.IsSiteAdmin;
return View(vm);

View File

@ -4,10 +4,16 @@
<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">강좌/패키지ID</label>
<label class="col-sm-4 col-md-2 control-label">강좌ID</label>
<div class="col-sm-8 col-md-10">
<a href="#" class="btn btn-info btn-xs data-find data-find-float" onclick="findcmshow(0)"><i class="fa fa-search"></i></a>
<input type="text" class="form-control disp-init text-center" id="cmno" disabled /><br />
<input type="text" class="form-control disp-init text-center" id="cmno" disabled />
</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>
<div class="col-sm-8 col-md-10">
<ul>
<li id="cmname"></li>
<li id="ssseterm"></li>
@ -15,32 +21,104 @@
</ul>
</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>
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "1:예;0:아니오" }, { "checked", 0 }, { "name", "ismember" } })</div>
</div>
<div id="newuser" style="display: none;">
<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>
<div class="col-sm-8 col-md-10">
<span style="text-align:right; display: inline-block; width: 50px;">이름</span>: <input type="text" class="form-control disp-init" maxlength="25" id="username" /><br />
<span style="text-align:right; display: inline-block; width: 50px;">이메일</span>: <input type="text" class="form-control disp-init" maxlength="40" id="email" />&nbsp;※ 추후 사이트 접속 시 ID로 사용됩니다.<br />
<span style="text-align:right; display: inline-block; width: 50px;">휴대폰</span>: <input type="text" class="form-control disp-init" maxlength="11" id="mobile" />&nbsp;※ '-'제외 입력, 추후 사이트 접속 시 비밀번호로 사용됩니다.
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup.ToString() == "typeman"), new ViewDataDictionary() { { "name", "typeman" } })
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup.ToString() == "typeedu"), new ViewDataDictionary() { { "name", "typeedu" } })
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup.ToString() == "typegrade"), new ViewDataDictionary() { { "name", "typegrade" } })
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", Model.ComCodes.Where(w => w.cgroup.ToString() == "typejob"), new ViewDataDictionary() { { "name", "typejob" } })
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "0:아니오;1:예" }, { "name", "isaccommodation" } })
</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>
<div class="col-sm-8 col-md-10">
@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "0:비환급;1:환급" }, { "name", "isrebate" } })
</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>
<div class="col-sm-8 col-md-10">
<input type="text" name="rbankname" id="rbankname" class="form-control disp-init" value="" />
</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>
<div class="col-sm-8 col-md-10">
<input type="text" name="rbankacc" id="rbankacc" class="form-control disp-init" value="" />
</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>
<div class="col-sm-8 col-md-10">
<input type="text" name="rbankowner" id="rbankowner" class="form-control disp-init" value="" />
</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>
<div class="col-sm-8 col-md-10">
<input type="hidden" id="cmisno" name="cmisno" />
<a href="#" class="btn btn-info btn-find btn-xs data-find data-find-float" id="btnfindscdshow"><i class="fa fa-search"></i></a>
<ul class="selectgroupul" id="scdbox">
</ul>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div id="olduser">
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label">신청자ID</label>
<div class="col-sm-8 col-md-10">
<input type="hidden" id="userno" />
<a href="#" class="btn btn-default btn-xs" style="margin-left: 20px;" onclick="userboxabsasno = 0, userboxftype = 2; findusershow()" id="btnuser">신청자 선택</a>
<input type="text" class="form-control disp-init text-center" id="userid" disabled /><br />
<p class="form-control-static" id="userinfo"></p>
<input type="hidden" id="userno" name="userno" />
<a href="#" class="btn btn-info btn-xs data-find data-find-float" onclick="userboxabsasno = 0, userboxftype = 2; findusershow()" id="btnuser"><i class="fa fa-search"></i></a>
<input type="text" class="form-control disp-init text-center" id="userid" disabled /> <span class="form-control-static" id="userinfo"></span>
</div>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<div class="line line-dashed line-lg pull-in"></div>
<div id="olduser">
<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="hidden" id="asno" name="asno" />
<a href="#" class="btn btn-info btn-find btn-xs data-find data-find-float" onclick="findassignshow()"><i class="fa fa-search"></i></a>
<ul class="selectgroupul" id="asbox">
</ul>
</div>
</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>
@if (Model.IsAdmin)
{
@ -51,7 +129,8 @@
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "9:위탁계약" }, { "checked", 9 }, { "name", "ptype" } })</div>
}
</div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<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>
<div class="col-sm-8 col-md-10">
<table class="databox" id="layertable" style="width: auto;">
@ -79,54 +158,24 @@
<div class="text-center">
<a href="#" class="btn btn-primary" onclick="save();">교육생등록</a>
</div>
<br /><br />
<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 id="uploadfile" type="file" /><br />
<a href="~/Content/file/LECT@(Model.IsAdmin?"":"SITE").xlsx" class="btn btn-info">양식다운로드</a>
<a href="#" class="btn btn-primary" onclick="checkfile();">파일검증</a>
</div>
</div>
<div class="text-right">
<a href="#" class="btn btn-danger" onclick="delall();">불량DATA 일괄삭제</a>
<a href="#" class="btn btn-primary" onclick="save2();">등록</a>
</div>
</div>
<div class="table-responsive" id="excel2">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th width="20">No</th>
<th>패키지ID</th>
<th>패키지명</th>
<th>강좌ID</th>
<th>강좌명</th>
<th>ID</th>
<th>이름</th>
<th>결제방식</th>
<th>결제금액</th>
<th>현금</th>
<th>카드</th>
<th>검증결과</th>
<th>삭제</th>
</tr>
</thead>
<tbody class="data" id="tbody2"></tbody>
</table>
</div>
</section>
</form>
@Html.Partial("./Partial/CMBox2", "bindCM;강좌/패키지 선택;91;;1;1")
@Html.Partial("./Partial/UserBox", "bindUser;신청자 선택;1;1", new ViewDataDictionary { { "assigns", Model.Assigns } })
@Html.Partial("./Partial/AssignBox", "bindAssign;고객사 검색;1")
@Html.Partial("./Partial/CMScdBox", "bindCMScd;교육일정선택;1")
@section scriptsHeader{
<style type="text/css">
#layertable td{padding: 2px 4px;}
tbody th.cm{padding: 0 10px;}
tr.error{color: red;}
#layertable td {
padding: 2px 4px;
}
tbody th.cm {
padding: 0 10px;
}
tr.error {
color: red;
}
</style>
}
@section scripts{
@ -151,16 +200,16 @@
$("#olduser").hide();
}
});
$("#uploadfile").on("change", function () {
if ($(this).val() != "") {
$("#tbody2 tr").remove();
}
});
$("body").on("click", "#tbody2 tr td a.btn-danger", function () {
if (confirm("삭제하시겠습니까?")) {
$(this).closest("tr").remove();
$("#btnfindscdshow").on("click", function () {
var cmno = $("#cmno").val();
if (cmno != "") {
findcmscdshow(cmno);
} else {
alert("강좌ID 선택 후 가능합니다.")
}
});
});
var _ismaster = 0;
function bindCM(vs) {
@ -196,79 +245,6 @@
setv("userno", v[0]);
$("#userinfo").text("[" + v[5] + "]" + v[6] + " | " + v[2] + "(" + v[3] + ")");
}
function checkfile() {
if ($("#uploadfile").val() == "") {
msg2("파일을 선택해주세요.");
}
else {
var thumbext = $("#uploadfile").val();
thumbext = thumbext.slice(thumbext.indexOf(".") + 1).toLowerCase();
if ("xls,xlsx".indexOf(thumbext) < 0) {
msg("xls,xlsx 확장자만 가능합니다.", 0, true);
}
$("#tbody2 tr").remove();
//else if (confirm("파일을 검증하시겠습니까?")) {
var formData = new FormData();
formData.append("uploadfile", $("#uploadfile")[0].files[0]);
formData.append("uploadjob", "lectbatch");
capfile("/acommon/uploadexcel", formData, "cbcheckfile", true, false, true, true);
//}
}
}
function cbcheckfile() {
if (capResult.code != 1000) {
msg2(capResult.msg);
}
else {
$.each(capResult.obj, function (i, d) {
$("#tbody2").append("<tr data-val=\"" + getdb(d.pcno) + ":" + d.cmno + ":" + d.userno + ":" + d.ptype + ":" + d.payamt + ":" + d.payamtcash + ":" + d.payamtcard + "\" class=\"" + (d.value == "정상" ? "data" : "error") + "\">" +
"<td>" + d.rnorvt + "</td>" +
"<td>" + getdb(d.pcno) + "</td>" +
"<td class=\"text-left\">" + getdb(d.pcname) + "</td>" +
"<td>" + zerotonull(d.cmno) + "</td>" +
"<td class=\"text-left\">" + getdb(d.cname) + "</td>" +
"<td>" + getdb(d.userid) + "</td>" +
"<td>" + getdb(d.username) + "</td>" +
"<td>" + d.ptypename + "</td>" +
"<td>" + bindComma3(d.payamt) + "</td>" +
"<td>" + bindComma3(d.payamtcash) + "</td>" +
"<td>" + bindComma3(d.payamtcard) + "</td>" +
"<td>" + getdb(d.value) + "</td><td class=\"link text-center\"><a href=\"#\" class=\"btn-xxs btn btn-danger\">X</a></td></tr>");
});
}
}
function zerotonull(v) {
return v == 0 ? "" : v;
}
function delall() {
if (confirm("불량DATA를 일괄삭제하시겠습니까?")) {
$("#tbody2 tr.error").remove();
}
}
function save2() {
if ($("#tbody2 tr.error").length > 0) {
msg("불량DATA가 있어 등록할 수 없습니다.");
}
else if ($("#tbody2 tr.data").length < 1) {
msg("등록할 데이터가 없습니다.");
}
else if (confirm("교육생을 일괄 등록하시겠습니까?")) {
var d = "";
$.each($("#tbody2 tr.data"), function (i, r) {
d += ";" + $(r).attr("data-val");
});
capp("/acommon/lectbatch", { datas: d.substr(1) }, "cbsave2");
}
}
function cbsave2() {
if (capResult.code == 1000) {
msg("일괄 등록되었습니다.", null, null, null, true);
submit("mform", 500);
}
else {
msgdev(true);
}
}
function save() {
var ta = 0;
var tcash = 0;
@ -290,7 +266,7 @@
else if (getrv("ptype") == "5" && ta != tcash + tcard) { msg("결제금액을 확인해주세요."); }
else if (confirm("교육생을 등록하시겠습니까?")) {
if (_ismaster == 0) {
capp("/acommon/lectreg", { pis: sd, isnewmember: $("#ismember1").prop("checked"), userno: val("userno")==""?0:val("userno"), username: val("username"), email: val("email"), mobile: val("mobile"), ptype: getrv("ptype") }, "cbsave");
capp("/acommon/lectreg", { pis: sd, isnewmember: $("#ismember1").prop("checked"), userno: val("userno") == "" ? 0 : val("userno"), username: val("username"), email: val("email"), mobile: val("mobile"), ptype: getrv("ptype") }, "cbsave");
} else {
capp("/acommon/lectreg", { pcno: val("cmno"), pis: sd, isnewmember: $("#ismember1").prop("checked"), userno: val("userno") == "" ? 0 : val("userno"), username: val("username"), email: val("email"), mobile: val("mobile"), ptype: getrv("ptype") }, "cbsave");
}
@ -305,12 +281,31 @@
msg("회원등록이 실패하였습니다.");
} else if (capResult.obj == -4) {
msg("강좌에 해당 회원이 이미 수강중입니다.");
}else if (capResult.code == 1000) {
msg2("저장되었습니다.", 10, null, null, true);
submit("mform", 500);
} else if (capResult.code == 1000) {
msg2("저장되었습니다.", 10, null, null, true);
submit("mform", 500);
} else {
msgdev();
}
}
function bindAssign(data) {
var v = data.split(':')[0];
setv("asno", v);
$("#asbox").html("");
$("#asbox").append("<li data-no=\"" + v + "\"><label>" + data.split(':')[1] + "</label><a href=\"#\" class=\"adel\" onclick=\"assigndel(this)\">X</a></li>");
}
function assigndel(a) {
$(a).closest("li").remove();
setv("asno", "");
}
function bindCMScd(data) {
setv("cmisno", data.value);
$("#scdbox").html("");
$("#scdbox").append("<li data-no=\"" + data.value + "\"><label>" + data.text + "</label><a href=\"#\" class=\"adel\" onclick=\"cmscddel(this)\">X</a></li>");
}
function cmscddel(a) {
setv("cmisno", "");
$(a).closest("li").remove();
}
</script>
}