YNICTE/BO/Views/croom/attoff.cshtml

173 lines
8.8 KiB
Plaintext
Raw Normal View History

2020-10-12 14:39:23 +09:00
@model NP.Model.VMLect
<form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal">
<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">@Model.CMInning.tmname | @Model.CMInning.cshapename | @Model.CMInning.cnameclassno</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">@Model.CMInning.idateymd @string.Format("{0}:{1} ~ {2}:{3}", Model.CMInning.ist.Substring(0, 2), Model.CMInning.ist.Substring(2, 2), Model.CMInning.iet.Substring(0, 2), Model.CMInning.iet.Substring(2, 2))</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", "i:입실;o:퇴실" }, { "checked", "i" }, { "name", "io" } })</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">QR코드 입력</label>
<div class="col-sm-8 col-md-10"><input type="text" class="form-control disp-init ff" style="width: 200px;" id="userid" /> <a href="#" class="btn btn-primary" style="margin-top: -5px" onclick="att()">확인</a></div>
</div>
</div>
</section>
<div style="background-color: #fefefe; font-size: 18px; font-weight: bold;" class="text-center">
현재 서버시간 : <span id="cdate">@DateTime.Now.ToString("yyyy.MM.dd")</span> <span id="ctime" style="color: red;">@DateTime.Now.ToString("HH:mm:ss")</span>
</div>
<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 id="c0">@Model.LectInnings.Count()</span>/<span id="c0">@Model.LectInnings.Where(w => w.istatus > 0).Count()</span>/<span id="c0">@Model.LectInnings.Where(w => w.istatus == 2).Count()</span>) <a href="#" style="text-decoration: underline; color: #0094ff;" onclick="restatus()">[새로고침]</a><span class=""></span></strong></header>
</section>
<section class="panel panel-default">
<div class="table-responsive" id="excel1">
<table class="table table-striped b-t b-light noodd">
<thead>
<tr>
<th>No</th>
<th>고객사</th>
<th>교육생(ID)</th>
<th>입실</th>
<th>퇴실</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.LectInnings.Where(w=>w.istatus != null).ToList())
{
<tr data-lectno="@d.lectno" class="lect@(d.lectno)">
<td>@d.rnorvt</td>
<td>@d.asname</td>
<td>@(d.username)(@(d.userid))</td>
<td>@d.stimehm</td>
<td class="etime">@d.etimehm</td>
</tr>
}
</tbody>
</table>
</div>
</section>
<div class="text-center"><a href="#" class="btn btn-default" onclick="golist()">목록</a></div>
</form>
<form id="dform" method="post" action="/croom/attoffs">
@Html.Partial("./Partial/DForm", Model, new ViewDataDictionary { { "preform", 1 } })
</form>
@section styles{
<style type="text/css">
tr.active{background-color: #ffeb79 !important}
.big{height: 300px !important;}
</style>
}
@section scriptsHeader{
}
@section scripts{
<script>
var userids = '@string.Join(";", Model.LectInnings.Select(s=>s.userid))'.split(';');
var lects = '@string.Join(";", Model.LectInnings.Select(s=>string.Format("{0}:{1}:{2}:{3}",
s.userid,
s.username.Replace(";", "").Replace(":",""),
s.lectno,
(s.asname??"").Replace(";", "").Replace(":", ""))))'.split(';');
var _h = 0;
var _m = 0;
var _s = 0;
var _userid = "";
var _useridx = -1;
var _lectno = 0;
$(document).ready(function () {
_h = getint($("#ctime").text().split(':')[0]);
_m = getint($("#ctime").text().split(':')[1]);
_s = getint($("#ctime").text().split(':')[2]);
var si = setInterval(ctime, 1000);
$("#userid").on("keydown", function (e) {
if (e.keyCode == 13) {
att();
return false;
}
});
$("input[name='io']").on("change", function () {
focus("userid");
});
$("#tbody1 tr").first().addClass("active");
});
function att() {
_userid = val("userid");
_useridx = -1;
_lectno = 0;
if (_userid != "") {
_useridx = userids.indexOf(_userid);
if (_useridx > -1) {
_lectno = lects[_useridx].split(':')[2];
if ($("#tbody1 tr.lect" + _lectno).length == 1) {
if (getrv("io") == "i") {
msg("이미 입실한 교육생입니다.");
return false;
} else {
if ($("#tbody1 tr.lect" + _lectno).find("td.etime").text() != "") {
msg("이미 퇴실한 교육생입니다.");
return false;
}
}
}
capp("/acommon/attoff", { cmino: @Model.CMInning.cmino, isEnter: getrv("io") == "i", lectno: _lectno }, "cbattoff");
}else {
msg("교육대상자가 아닙니다.");
}
}
focus("userid");
}
var cmistart = '@string.Format("{0}:{1}", Model.CMInning.ist.Substring(0, 2), Model.CMInning.ist.Substring(2, 2))';
function cbattoff() {
if (capResult.code == 1000) {
setv("userid", "");
msg((getrv("io") == "i" ? "입실" : "퇴실") + "처리되었습니다.");
var isenter = getrv("io") == "i";
if ($("#tbody1 tr.lect" + _lectno).length == 0) {
var d = lects[_useridx].split(':');
$("#tbody1").prepend("<tr data-lectno=\""+_lectno + "\" class=\"lect" + _lectno + "\">"+
"<td>" + ($("#tbody tr").length + 1) + "</td>" +
"<td>" + d[3] + "</td>" +
"<td>" + d[1] + "(" + d[0] + ")</td>" +
"<td>" + (isenter ? capResult.obj.split(' ')[1] : cmistart) + "</td>" +
"<td class=\"etime\">" + (isenter ? "" : capResult.obj.split(' ')[1]) + "</td></tr > ");
} else {
var d = lects[_useridx].split(':');
$("#tbody1").prepend($("#tbody1 tr.lect" + _lectno));
$("#tbody1 tr.lect" + _lectno).find("td.etime").text(capResult.obj.split(' ')[1]);
}
$("#tbody1 tr").removeClass("active");
$("#tbody1 tr").first().addClass("active");
}
else if (capResult.obj == -1) {
msg("이미 입실한 교육생입니다.");
} else if (capResult.obj == -2) {
msg("입실기록이 없거나 이미 퇴실한 교육생입니다.");
} else {
msgdev();
}
}
function ctime() {
_s++;
if (_s > 59) {
_m++;
_s = 0;
}
if (_m > 59) {
_h++;
_m = 0;
}
$("#ctime").text(fillzero(_h, true, 2) + ":" + fillzero(_m, true, 2) + ":" + fillzero(_s, true, 2));
}
function restatus() {
$("#dform").attr("action", "/croom/attoff").submit();
}
</script>
}