173 lines
8.8 KiB
Plaintext
173 lines
8.8 KiB
Plaintext
@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>
|
|
} |