YNICTE/BO/Views/MM/Config1.cshtml

408 lines
21 KiB
Plaintext

@model NP.Model.VMMM
<form id="mform" method="post">
<section class="panel panel-default clearfix devsearch" data-cleartbody="tbody1">
@Html.Partial("./Partial/SearchCaption")
<div class="step-content">
<div class="step-pane active form-inline">
<div class="form-group">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", "T:대분류;M:중분류;B:소분류;D:세분류;U:능력단위" }, { "name", "stringval" }, { "selected", Model.stringval } })
@Html.Partial("./Partial/Text", Model.stringval2, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval2", Value = Model.stringval2, PH = "코드/코드명으로 검색", CssClass = "ff" }))
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
</div>
</div>
</div>
</section>
<div class="tar buttonbox">
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
<a href="#" onclick="javascript:reg('', 0);" class="btn btn-s-xs btn-info">NCS등록</a>
<a href="#" onclick="javascript:reg(4, -1);" class="btn btn-s-xs btn-primary">능력단위 일괄등록</a>
</div>
<section class="panel panel-default">
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th width="20">No</th>
<th>대분류</th>
<th>중분류</th>
<th>소분류</th>
<th>세분류</th>
<th>능력단위</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var item in Model.NCSs)
{
<tr>
<td>@item.rnorvt</td>
<td class="link"><a href="#" onclick="reg(0, @item.ntno)">@(item.tname)@string.Format("{0}", item.ndepth >= 0?("("+item.tcode+")") : "")</a></td>
<td class="link"><a href="#" onclick="reg(1, @item.nmno)">@(item.mname)@string.Format("{0}", item.ndepth >= 1 ? ("(" + item.macode + ")") : "")</a></td>
<td class="link"><a href="#" onclick="reg(2, @item.nbno)">@(item.bname)@string.Format("{0}", item.ndepth >= 2 ? ("(" + item.bacode + ")") : "")</a></td>
<td class="link"><a href="#" onclick="reg(3, @item.ndno)">@(item.dname)@string.Format("{0}", item.ndepth >= 3 ? ("(" + item.dacode + ")") : "")</a></td>
<td class="link"><a href="#" onclick="reg(4, @item.nuno)">@(item.uname)@string.Format("{0}", item.ndepth >= 4 ? ("(" + item.ucode + ")") : "")</a></td>
</tr>
}
</tbody>
</table>
</div>
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
</section>
@Html.HiddenFor(m => m.tabidx)
@Html.HiddenFor(m => m.tabidx2)
</form>
<div id="thisbox" class="findbox draggable regbox summernoteparentfixedbox" style="width: 500px; z-index: 1041; top: 60px; bottom: 30px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">NCS등록</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 id="trndepth">
<th>분류선택</th>
<td>@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-분류선택;0:대분류;1:중분류;2:소분류;3:세분류;4:능력단위" }, { "name", "ndepth" } })</td>
</tr>
<tr id="trntype" style="display: none;">
<th>표준구분</th>
<td>@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", "0:국가표준" }, { "name", "ntype" } })</td>
</tr>
<tr id="trndepthT">
<th class="req">대분류</th>
<td>@Html.Partial("./Partial/Select", Model.NCSs2, new ViewDataDictionary { { "df", ":-대분류선택" }, { "name", "ntno" } })</td>
</tr>
<tr id="trndepthM">
<th class="req">중분류</th>
<td>@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-중분류선택" }, { "name", "nmno" } })</td>
</tr>
<tr id="trndepthB">
<th class="req">소분류</th>
<td>@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-소분류선택" }, { "name", "nbno" } })</td>
</tr>
<tr id="trndepthD">
<th class="req">세분류</th>
<td>@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":-세분류선택" }, { "name", "ndno" } })</td>
</tr>
<tr>
<th class="req">NCS코드</th>
<td><input type="text" maxlength="2" class="form-control int nocomma" id="ncscode" name="ncscode" /></td>
</tr>
<tr>
<th class="req">NCS명</th>
<td><input type="text" maxlength="100" class="form-control" id="ncsname" name="ncsname" /></td>
</tr>
</table>
<input type="hidden" id="ncsno" />
<div class="findboxbtnbox">
<a href="#" class="btn btn-primary" onclick="save();">저장</a>
<a href="#" id="btndel" class="btn btn-danger " onclick="del();">삭제</a>
</div>
</div>
<div id="thisbox2" class="findbox draggable regbox" style="width: 900px; z-index: 1041; left: 50%; margin-left: -450px; top: 60px; bottom: 30px; overflow: auto;">
<h4><i class="fa fa-bars"></i> <span id="pcap">NCS능력단위 일괄등록</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<div style="border: 1px solid #ddd; padding: 10px 20px;">
<ul>
<li>1. NCS 데이터 일괄등록은 양식다운로드 → 데이터입력 → 넣으려는 데이터 선택 → 파일검증 → 등록 의 절차로 진행됩니다.</li>
<li>2. 엑셀파일은 업로드 양식에 맞게 작성해주셔야 합니다.</li>
<li>3. 반드시 파일검증을 통해 데이터를 올바르게 넣었는지 확인해주셔야 합니다.</li>
<li>4. 중복 및 데이터불량 항목은 등록시 반영되지 않습니다.</li>
</ul>
</div>
<table class="regtable">
<colgroup><col style="width:200px;" /><col /></colgroup>
<tr id="trisparent">
<th class="req">일괄등록파일</th>
<td style="line-height: 35px;"><input id="uploadfile" type="file" /></td>
</tr>
</table>
<div class="findboxbtnbox">
<a href="~/Content/file/ncs4.xlsx" class="btn btn-info">양식다운로드</a>
<a href="#" class="btn btn-primary" onclick="checkfile();">파일검증</a>
</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>
<section class="panel panel-default" style="margin-top: 10px;">
<div class="table-responsive" id="excel2">
<table class="table table-striped b-t b-light">
<thead>
<tr>
<th width="20">No</th>
<th>상위분류코드</th>
<th>상위분류명</th>
<th>능력단위코드</th>
<th>능력단위코드명</th>
<th>검증결과</th>
<th>삭제</th>
</tr>
</thead>
<tbody class="data" id="tbody2"></tbody>
</table>
</div>
</section>
</div>
<script>
$(document).ready(function () {
$("#ndepth").on("change", function () {
$("#ntno,#nmno,#nbno,#ndno").val("");
$("#trndepthT,#trndepthM,#trndepthB,#trndepthD").hide();
$("#nmno option:gt(0),#nbno option:gt(0),#ndno option:gt(0)").remove();
$("#ncscode").val("");
if ($(this).val() != "") {
$("#ncscode").addClass("int").attr("maxlength", 2);
if ($(this).val() == "4") {
$("#ncscode").removeClass("int").attr("maxlength", 20);
}
switch ($(this).val()) {
case "1": $("#trndepthT").show(); break;
case "2": $("#trndepthT,#trndepthM").show(); break;
case "3": $("#trndepthT,#trndepthM,#trndepthB").show(); break;
case "4": $("#trndepthT,#trndepthM,#trndepthB,#trndepthD").show(); break;
default: break;
}
}
});
$("#ntno").on("change", function () {
$("#nmno,#nbno,#ndno").val("");
if ($(this).val() != "" && getint(val("ndepth")) > 1) {
nd = 1;
ndn = "m";
capp("/acommon/ncsget", { ndepth: 1, pno: $(this).val() }, "cbncsget", null, null, null, true);
}
});
$("#nmno").on("change", function () {
$("#nbno,#ndno").val("");
if ($(this).val() != "" && getint(val("ndepth")) > 2) {
nd = 2;
ndn = "b";
capp("/acommon/ncsget", { ndepth: 2, pno: $(this).val() }, "cbncsget", null, null, null, true);
}
});
$("#nbno").on("change", function () {
$("#ndno").val("");
if ($(this).val() != "" && getint(val("ndepth")) > 3) {
nd = 3;
ndn = "d";
capp("/acommon/ncsget", { ndepth: 3, pno: $(this).val() }, "cbncsget", null, null, null, true);
}
});
$("#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();
}
});
});
var nd = 0;
var ndn = "";
function cbncsget() {
$.each(capResult.obj, function (i, d) {
$("#n" + ndn + "no").append("<option value=\"" + d.value + "\">" + d.text + "(" + d.ncscode + ")</option>");
});
}
function del() {
if ($("#ndepth").val() == 4) {
//if ($("#ndepth").val < 4) {
// if (confirm("삭제하려는 분류에 하위 분류가 있습니다. 하위 분류를 포함하여 모두 삭제하시겠습니까?")) {
// capp("/acommon/ncsdel", { ndepth: $("#ndepth").val(), ncsno: $("#ncsno").val() }, "cbncsdel");
// }
//} else {
if (confirm("해당 ncs코드를 삭제하시겠습니까?")) {
capp("/acommon/ncsdel", { ndepth: $("#ndepth").val(), ncsno: $("#ncsno").val() }, "cbncsdel");
}
//}
} else {
capp("/acommon/ncsdelcheck", { ndepth: $("#ndepth").val(), ncsno: $("#ncsno").val() }, "cbncsdelcheck", null, null, null, true);
}
}
function cbncsdelcheck() {
if (capResult.code == 1000) {
if (confirm((capResult.obj == 0 ? "해당 ncs코드를 삭제하시겠습니까 ?" : ("하위에 매핑된 ncs가" + capResult.obj+"개 존재합니다.\n하위ncs도 모두 삭제하시겠습니까?")))) {
capp("/acommon/ncsdelnew", { ndepth: $("#ndepth").val(), ncsno: $("#ncsno").val() }, "cbncsdel", null, null, null, true);
}
} else {
msg2(($("#ndepth").val() == "3" ? "" : "하위분류의 ncs가") + "과정/강좌에 매핑된 상태입니다. 삭제할 수 없습니다.");
}
}
function cbncsdel() {
if (capResult.code == 1000) {
msg2("삭제되었습니다.(" + capResult.obj+")", 10, null, null, true);
submit("mform", 500);
} else if (capResult.code == 1) {
msg2("연동된 ncs정보가 있기 때문에 삭제할 수 없습니다.", 10, null, null, true);
submit("mform", 500);
} else {
msgdev(true);
}
}
function reg(ndepth, no) {
//초기화
$("#ndepth,#ntno,#nmno,#nbno,#ndno").removeAttr("disabled");
$("#trndepth,#trndepthT,#trndepthM,#trndepthB,#trndepthD,#trndepth").hide();
$("#ndepth,#ntno,#nmno,#nbno,#ndno,#ncscode,#ncsname").val("");
$("#nmno option:gt(0),#nbno option:gt(0),#ndno option:gt(0)").remove();
$("#btndel").hide();
if (no < 0) {
bglayer(); $("#thisbox2").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
} else {
setv("ncsno", no);
$("#ndepth").val(ndepth);
if (no < 1) {
$("#trndepth").show();
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
} else {
$("#btndel").show();
capp("/acommon/ncsgethierarchy", { ndepth: ndepth, ncsno: no }, "cbncsgethierarchy");
}
}
}
function cbncsgethierarchy() {
if (capResult.code == 1000) {
var ncs = capResult.obj.ncs;
$("#ncscode").addClass("int").attr("maxlength", 2);
if (ncs.ndepth == "4") {
$("#ncscode").removeClass("int").attr("maxlength", 20);
}
setv("ndepth", ncs.ndepth);
setv("ncscode", ncs.ncscode);
setv("ncsname", ncs.ncsname);
$("#ndepth,#ntno,#nmno,#nbno,#ndno").attr("disabled", "disabled");
if (ncs.ndepth > 0) {
$.each(capResult.obj.ncss, function (i, p) {
if (p.ndepth == 0) {
if (p.isact == 1) {
$("#ntno").val(p.ncsno);
}
}
});
$("#trndepthT").show();
}
if (ncs.ndepth > 1) {
$.each(capResult.obj.ncss, function (i, p) {
if (p.ndepth == 1) {
$("#nmno").append("<option value=\"" + p.ncsno + "\">" + p.ncsname + "(" + p.ncscode + ")</option>");
if (p.isact == 1) {
$("#nmno").val(p.ncsno);
}
}
});
$("#trndepthM").show();
}
if (ncs.ndepth > 2) {
$.each(capResult.obj.ncss, function (i, p) {
if (p.ndepth == 2) {
$("#nbno").append("<option value=\"" + p.ncsno + "\">" + p.ncsname + "(" + p.ncscode + ")</option>");
if (p.isact == 1) {
$("#nbno").val(p.ncsno);
}
}
});
$("#trndepthB").show();
}
if (ncs.ndepth > 3) {
$.each(capResult.obj.ncss, function (i, p) {
if (p.ndepth == 3) {
$("#ndno").append("<option value=\"" + p.ncsno + "\">" + p.ncsname + "(" + p.ncscode + ")</option>");
if (p.isact == 1) {
$("#ndno").val(p.ncsno);
}
}
});
$("#trndepthD").show();
}
setTimeout(function () {
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
}, 10);
}
}
function save() {
if (check("ndepth", null, "분류를 선택해주세요.", true, true)) { }
else if (getint(val("ndepth")) > 0 && val("ntno") == "") { focus("ntno"); msg2("대분류를 선택해주세요."); }
else if (getint(val("ndepth")) > 1 && val("nmno") == "") { focus("nmno"); msg2("중분류를 선택해주세요."); }
else if (getint(val("ndepth")) > 2 && val("nbno") == "") { focus("nbno"); msg2("소분류를 선택해주세요."); }
else if (getint(val("ndepth")) > 3 && val("ndno") == "") { focus("ndno"); msg2("세분류를 선택해주세요."); }
else if (val("ndepth") == "0" && getint(val("ncscode")) < 1) { focus("ncscode"); msg2("(00~99) 사이의 대분류코드를 입력해주세요."); }
else if (val("ndepth") == "1" && getint(val("ncscode")) < 1) { focus("ncscode"); msg2("(00~99) 사이의 중분류코드를 입력해주세요."); }
else if (val("ndepth") == "2" && getint(val("ncscode")) < 1) { focus("ncscode"); msg2("(00~99) 사이의 소분류코드를 입력해주세요."); }
else if (val("ndepth") == "3" && getint(val("ncscode")) < 1) { focus("ncscode"); msg2("(00~99) 사이의 세분류코드를 입력해주세요."); }
else if (val("ndepth") == "4" && val("ncscode") == "") { focus("ncscode"); msg2("능력단위코드를 입력해주세요."); }
else if (val("ndepth") == "0" && val("ncsname") == "") { focus("ncsname"); msg2("대분류코드명을 입력해주세요."); }
else if (val("ndepth") == "1" && val("ncsname") == "") { focus("ncsname"); msg2("중분류코드명을 입력해주세요."); }
else if (val("ndepth") == "2" && val("ncsname") == "") { focus("ncsname"); msg2("소분류코드명을 입력해주세요."); }
else if (val("ndepth") == "3" && val("ncsname") == "") { focus("ncsname"); msg2("세분류코드명을 입력해주세요."); }
else if (val("ndepth") == "4" && val("ncsname") == "") { focus("ncsname"); msg2("능력단위코드명을 입력해주세요."); }
else if (confirm("저장하시겠습니까")) {
capp("/acommon/ncssave", { ncsno: val("ncsno"), ndepth: val("ndepth"), ntype: val("ntype"), ntno: val("ntno"), nmno: val("nmno"), nbno: val("nbno"), ndno: val("ndno"), ncscode: val("ncscode"), ncsname: val("ncsname") }, "cbsave", null, null, null, true);
}
}
function cbsave() {
if (capResult.code == 1000) {
$("#thisbox").hide();
msg2("저장하였습니다.", 0, null, null, true);
submit("mform", 500);
} else if (capResult.obj == -1) {
msg2("이미 등록된 코드입니다.");
} else { msgadmin2(); }
}
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", "ncs4batch");
formData.append("intval", 0);
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-ndno=\""+getdb(d.ndno)+"\" class=\"" + (d.value == "정상" ? "data" : "error") + "\">" +
"<td>" + d.rnorvt + "</td><td>" + getdb(d.dacode) + "</td><td class=\"text-left\">" + getdb(getdb(d.dname)) + "</td><td class=\"ncscode\">" + getdb(d.ncscode) + "</td><td class=\"ncsname text-left\">" + getdb(d.ncsname) + "</td><td>" + getdb(d.value) + "</td><td class=\"link text-center\"><a href=\"#\" class=\"btn-xxs btn btn-danger\">X</a></td></tr>");
});
}
}
function delall() {
if (confirm("불량DATA를 일괄삭제하시겠습니까?")) {
$("#tbody2 tr.error").remove();
}
}
function save2() {
if ($("#tbody2 tr.error").length > 0) {
msg2("불량DATA가 있어 등록할 수 없습니다.");
}
else if ($("#tbody2 tr.data").length < 1) {
msg2("등록할 데이터가 없습니다.");
}
else if (confirm("등록하시겠습니까?")) {
var d = "";
$.each($("#tbody2 tr.data"), function (i, r) {
d += ";" + $(r).attr("data-ndno") + ":" + $(r).find("td.ncscode").text().replace(/;/gi, '박효동$박건').replace(/:/gi, '박효동$박하선') + ":" + $(r).find("td.ncsname").text().replace(/;/gi, '박효동$박건').replace(/:/gi, '박효동$박하선');
});
capp("/acommon/ncsbatch", { datas: d.substr(1) }, "cbsave2", null, null, null, true);
}
}
function cbsave2() {
if (capResult.code == 1000) {
msg2("저장되었습니다.", 10, null, null, true);
submit("mform", 500);
}
else {
msgdev(true);
}
}
</script>