<기능개선>

1. PMS NO : 7083, 6987
2. (주요)작업내용 
(1) 일괄 커밋
This commit is contained in:
jity7777 2022-12-08 02:06:20 +00:00
parent c1a053e651
commit 0b94571830
11 changed files with 483 additions and 195 deletions

View File

@ -27,14 +27,18 @@ else
<tr class="extr hidden ex@(e.rno)"><th>평가명</th><td>@e.sdname</td></tr> <tr class="extr hidden ex@(e.rno)"><th>평가명</th><td>@e.sdname</td></tr>
<tr class="extr hidden ex@(e.rno)"><th>만점/조건</th><td>@string.Format("{0}점 만점 / 진도율 {1}% 이상", e.tpoint, e.sdcondition)</td></tr> <tr class="extr hidden ex@(e.rno)"><th>만점/조건</th><td>@string.Format("{0}점 만점 / 진도율 {1}% 이상", e.tpoint, e.sdcondition)</td></tr>
<tr class="extr hidden ex@(e.rno)"><th>평가내용</th><td>@Html.Raw((e.sddesc ?? "").Replace(System.Environment.NewLine, "<br/>"))</td></tr> <tr class="extr hidden ex@(e.rno)"><th>평가내용</th><td>@Html.Raw((e.sddesc ?? "").Replace(System.Environment.NewLine, "<br/>"))</td></tr>
<tr class="extr hidden ex@(e.rno)"><th>첨부파일</th> <tr class="extr hidden ex@(e.rno)">
<td>@Html.Partial("./Partial/File", Model.FileList.Where(w=>w.fgno == e.fgno).ToList(), new ViewDataDictionary { <th>첨부파일</th>
<td>
@Html.Partial("./Partial/File", Model.FileList.Where(w => w.fgno == e.fgno).ToList(), new ViewDataDictionary {
{ "name", "fgno" },{"value", 0 },{ "fname", "file"}, { "name", "fgno" },{"value", 0 },{ "fname", "file"},
{"width", null },{"folder", "Resume" },{"filecount", 5 }, {"width", null },{"folder", "Resume" },{"filecount", 5 },
{"readmode", 1 },{"hidemode", 0 }, {"readmode", 1 },{"hidemode", 0 },
{ "isimage", 0 },{ "imageid", "" },{ "dftsrc", "" }, { "isimage", 0 },{ "imageid", "" },{ "dftsrc", "" },
{ "fileext", "" } { "fileext", "" }
})</td></tr> })
</td>
</tr>
} }
</table> </table>
} }
@ -89,6 +93,7 @@ else
@Html.Partial("./Partial/dform", Model) @Html.Partial("./Partial/dform", Model)
</form> </form>
<div id="thisbox" class="findbox draggable regbox" style="height: 850px; width: 800px; z-index: 1041; top: 60px; overflow: auto;"> <div id="thisbox" class="findbox draggable regbox" style="height: 850px; width: 800px; z-index: 1041; top: 60px; overflow: auto;">
<form id="mform2" enctype="multipart/form-data">
<h4><i class="fa fa-bars"></i> <span id="pcap">개별 과제제출 내용</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4> <h4><i class="fa fa-bars"></i> <span id="pcap">개별 과제제출 내용</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
<br /> <br />
@*<h5><i class="fa fa-bars"></i> 제목</h5>*@ @*<h5><i class="fa fa-bars"></i> 제목</h5>*@
@ -103,15 +108,29 @@ else
</tr> </tr>
<tr> <tr>
<th>첨부파일</th> <th>첨부파일</th>
<td id="fileinfo"></td> <td>
<div id="fileinfoDiv" class="col-sm-8 col-md-10" style="width:100%;display:none">
@Html.Partial("./Partial/File", null, new ViewDataDictionary {
{ "name", "fgno" },{ "fname", "fgno"},
{"width", null },{ "column", "fgno"},{"filecount", 1 },
{"readmode", 0 },{"hidemode", 0 },
{ "isimage", 0 }, { "fileext", "" }})
</div>
<br />
<div id="fileinfo"></div>
</td>
</tr> </tr>
<tr> <tr>
<th>점수</th> <th>점수</th>
<td><input type="text" class="form-control int disp-init text-center" style="width: 70px;" max="3" id="cpoint" onchange="checkmax(this)" /></td> <td><input type="text" class="form-control int disp-init text-center" style="width: 70px;" max="3" id="cpoint" name="cpoint" onchange="checkmax(this)" /></td>
</tr> </tr>
<tr> <tr>
<th>피드백</th> <th>피드백</th>
<td><textarea class="form-control" id="feedb" style="resize: none; height: 250px;" maxlength="800"></textarea></td> <td><textarea class="form-control" id="feedb" name="feedb" style="resize: none; height: 200px;" maxlength="800"></textarea></td>
</tr>
<tr>
<th>참고사항</th>
<td><textarea class="form-control" id="memo" name="memo" style="resize: none; height: 150px;" maxlength="800"></textarea></td>
</tr> </tr>
</table> </table>
<br /><br /><br /> <br /><br /><br />
@ -122,6 +141,14 @@ else
&nbsp;&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs closethisbox">닫기</a> &nbsp;&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs closethisbox">닫기</a>
</div> </div>
<br /><br /> <br /><br />
<input type="hidden" id="sdno" name="sdno" value="">
<input type="hidden" id="lectno" name="lectno" value="">
<input type="hidden" id="tpoint" name="tpoint" value="">
<input type="hidden" id="ridx" name="ridx" value="">
<input type="hidden" id="iscopyVal" name="iscopy" value="">
<input type="hidden" id="cmno" name="cmno" value="">
<input type="hidden" id="userno" name="userno" value="">
</form>
</div> </div>
<div id="thisbox2" class="findbox draggable regbox" style="width: 800px; z-index: 1041; top: 60px; overflow: auto;"> <div id="thisbox2" class="findbox draggable regbox" style="width: 800px; 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> <h4><i class="fa fa-bars"></i> <span id="pcap">일괄평가</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
@ -145,16 +172,50 @@ else
<br /><br /> <br /><br />
</div> </div>
<style type="text/css"> <style type="text/css">
td.estate0{background-color: #ffd7bb !important; color: red;} td.estate0 {
td a.iscopy1{background-color: red !important;} background-color: #ffd7bb !important;
.tablea0{word-break: break-all; width: 100%;} color: red;
.tablea0 tr td{text-align: center;} }
.tablea0 tr td.qi{text-align: left;}
.regtable tr td .tablea0 tr td {padding: 6px 5px;} td a.iscopy1 {
background-color: red !important;
}
.tablea0 {
word-break: break-all;
width: 100%;
}
.tablea0 tr td {
text-align: center;
}
.tablea0 tr td.qi {
text-align: left;
}
.regtable tr td .tablea0 tr td {
padding: 6px 5px;
}
/*#exsummary tr td{text-align: center;}*/ /*#exsummary tr td{text-align: center;}*/
td.qi div.imgbox.active{position: fixed; left: 10%; top: 10%; height: 80%; width: 80%; z-index: 3000; background-color: #999; text-align: center;padding-top: 10%;} td.qi div.imgbox.active {
td.qi div.imgbox.active img{height: 60%; max-width: 60%;} position: fixed;
left: 10%;
top: 10%;
height: 80%;
width: 80%;
z-index: 3000;
background-color: #999;
text-align: center;
padding-top: 10%;
}
td.qi div.imgbox.active img {
height: 60%;
max-width: 60%;
}
</style> </style>
@Html.Partial("./Partial/FileScript")
<script> <script>
var ischange = false; var ischange = false;
$(document).ready(function () { $(document).ready(function () {
@ -162,7 +223,7 @@ else
$("body").on("click", "td.qi div.imgbox", function () { $("body").on("click", "td.qi div.imgbox", function () {
$(this).toggleClass("active"); $(this).toggleClass("active");
}); });
$("#cpoint,#feedb,#feedb2").on("propertychange change keyup paste input", function () { $("#cpoint,#feedb,#feedb2,.file_input_opacity").on("propertychange change keyup paste input", function () {
ischange = true; ischange = true;
}) })
//$("#feedb,#feedb2").on("keydown", function (e) { //$("#feedb,#feedb2").on("keydown", function (e) {
@ -227,6 +288,9 @@ else
_sdno = sdno; _sdno = sdno;
_lectno = lectno; _lectno = lectno;
_ridx = ridx; _ridx = ridx;
$("#sdno").val(sdno);
$("#lectno").val(lectno);
$("#ridx").val(ridx);
capp("/acommon/lectsd", { lectno: lectno, sdno: sdno }, "cblectsd"); capp("/acommon/lectsd", { lectno: lectno, sdno: sdno }, "cblectsd");
} }
function cblectsd() { function cblectsd() {
@ -239,12 +303,37 @@ else
} }
var _html = "- 제출파일 없음<br />"; var _html = "- 제출파일 없음<br />";
if (getdb(d.fileurl) != "") { if (getdb(d.fileurl) != "") {
_html = "<a href=\"/aCommon/DownFile?fno={0}&loginfo=&issubject=1\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">{1}</span></a><br />".format(d.fileno, d.orgname); // _html = "<a href=\"/aCommon/DownFile?fno={0}&loginfo=&issubject=1\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">{1}</span></a><br />".format(d.fileno, d.orgname);
_html = '<div id="file{0}div"><a href="/aCommon/DownFile?fno={0}&loginfo=&issubject=1" title="다운로드"><i class="fa fa-paperclip"></i> <span class="fileitem">{1}</span></a>'.format(d.fileno, d.orgname);
_html += '<a href="#" style="color:red;margin-left:5px;cursor:point" onclick="fileDel(this)" data-fileno="{0}" data-filename="{1}">X</a>'.format(d.fileno, d.orgname);
_html += '</div><br />'
$("#fileinfoDiv .fgno").val(d.fgno)
$("#fileinfoDiv").css("display", "none")
}
else {
$("#fileinfoDiv").css("display", "")
} }
_html += "(모사율: {0})&nbsp;&nbsp;&nbsp;".format(d.copyratename); _html += "(모사율: {0})&nbsp;&nbsp;&nbsp;".format(d.copyratename);
$("#fileinfo").html(_html + ("<label><input id=\"iscopy\" type=\"checkbox\" " + (d.iscopy == 1 ? "checked" : "") + " /> 모사답안신고</label>")); $("#fileinfo").html(_html + ("<label><input id=\"iscopy\" type=\"checkbox\" " + (d.iscopy == 1 ? "checked" : "") + " /> 모사답안신고</label>"));
setv("userno", d.userno);
setv("cmno", d.cmno);
setv("cpoint", d.cpoint); setv("cpoint", d.cpoint);
//$("#feedb").val(d.feedb);
if (d.feedb != null) {
$("#feedb").val(d.feedb); $("#feedb").val(d.feedb);
}
else {
$("#feedb").val("");
}
if (d.memo != null) {
$("#memo").val(d.memo);
}
else {
$("#memo").val("");
}
$("#feedb").removeAttr("readonly"); $("#feedb").removeAttr("readonly");
//if (getdb(d.feedb) != '') { //if (getdb(d.feedb) != '') {
// $("#feedb").attr("readonly", "readonly"); // $("#feedb").attr("readonly", "readonly");
@ -278,23 +367,39 @@ else
msg2(getint($("#addstringval").find("option:selected").attr("data-tpoint")) + "점 이하으로 입력해주세요."); msg2(getint($("#addstringval").find("option:selected").attr("data-tpoint")) + "점 이하으로 입력해주세요.");
} else if (confirm("저장하시겠습니까?")) { } else if (confirm("저장하시겠습니까?")) {
_saveidx = idx; _saveidx = idx;
capp("/acommon/lectsdsave", { lectno: _lectno, sdno: val("addstringval"), iscopy: $("#iscopy").prop("checked") ? 1 : 0, cpoint: val("cpoint"), feedb: val("feedb") }, "cbsave", null, null, null, true); //capp("/acommon/lectsdsave", { lectno: _lectno, sdno: val("addstringval"), iscopy: $("#iscopy").prop("checked") ? 1 : 0, cpoint: val("cpoint"), feedb: val("feedb") }, "cbsave", null, null, null, true);
$("#iscopyVal").val($("#iscopy").prop("checked") ? 1 : 0)
capfileform("/acommon/lectsdsave", "mform2", "cbsave");
} }
} }
} }
function cbsave() { function cbsave() {
if (capResult.code == 1000) { if (capResult.code == 1000) {
//if (_saveidx == 0) {
// //msg2("저장했습니다.", null, null, null, true);
// msg2("저장했습니다.");
// viewsd(_sdno, _lectno, _ridx);
// //submit("mform", 500);
//} else {
// //리스트 갱신 후 다음 또는 이전 수강생과제 표시
// msg2("저장했습니다.", null, null, null, true);
// setTimeout(function () {
// hidelayermsg2(true);
// getsds(true);
// }, 300);
//}
msg2("저장했습니다.");
$(".file_input_opacity").val("")
$(".file_input_textbox").val("")
if (_saveidx == 0) { if (_saveidx == 0) {
msg2("저장했습니다.", null, null, null, true); viewsd(_sdno, _lectno, _ridx);
submit("mform", 500);
} else {
//리스트 갱신 후 다음 또는 이전 수강생과제 표시
msg2("저장했습니다.", null, null, null, true);
setTimeout(function () {
hidelayermsg2(true);
getsds(true);
}, 300);
} }
else {
ischange = false;
save(_saveidx)
}
//submit("mform", 500);
} else { } else {
msgdev(true); msgdev(true);
} }
@ -359,5 +464,31 @@ else
var opt = 'height=410, width=840, top=' + wint + ', left=' + winl + ',location=no, noresizable'; var opt = 'height=410, width=840, top=' + wint + ', left=' + winl + ',location=no, noresizable';
window.open("http://118.219.255.225:7614/memechecker/score.html?domain=v_lectsd_list&docId="+sdno+"_"+lectno, "iscopyWin", opt); window.open("http://118.219.255.225:7614/memechecker/score.html?domain=v_lectsd_list&docId="+sdno+"_"+lectno, "iscopyWin", opt);
} }
var fileDivId = "";
function fileDel(obj) {
let fileno = $(obj).data("fileno")
let filename = $(obj).data("filename")
fileDivId = "file" + fileno + "div";
let data = { "key": fileno, "fName": filename }
if (confirm("파일을 삭제하시겠습니까?")) {
capp("/acommon/deletefile", data, "fileDelResult");
}
}
function fileDelResult() {
if (capOK) {
let fileDivObj = $("#" + fileDivId)
if (fileDivObj.length == 1) {
fileDivObj.remove();
$("#fileinfoDiv").css("display", "")
viewsd(_sdno, _lectno, _ridx);
}
}
else {
msg("파일을 삭제할 수 없습니다.");
}
}
</script> </script>
<iframe id="ifrthis" style="display: none;"></iframe> <iframe id="ifrthis" style="display: none;"></iframe>

View File

@ -100,9 +100,9 @@
</div> </div>
</div> </div>
<div id="thisbox" class="findbox draggable regbox" style="height: 850px; width: 800px; z-index: 1041; top: 60px; overflow: auto;"> <div id="thisbox" class="findbox draggable regbox" style="height: 850px; width: 800px; 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> <form id="mform2" enctype="multipart/form-data">
<h4><i class="fa fa-bars"></i> <span id="pcap">개별 과제제출 내용</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>@*PMS 6987관련 페이지*@
<br /> <br />
<input type="hidden" id="tpoint" value="" />
<table class="regtable" id="exsummary"> <table class="regtable" id="exsummary">
<tr> <tr>
<th>제출자</th> <th>제출자</th>
@ -114,15 +114,29 @@
</tr> </tr>
<tr> <tr>
<th>첨부파일</th> <th>첨부파일</th>
<td id="fileinfo"></td> <td>
<div id="fileinfoDiv" class="col-sm-8 col-md-10" style="width:100%;display:none">
@Html.Partial("./Partial/File", null, new ViewDataDictionary {
{ "name", "fgno" },{ "fname", "fgno"},
{"width", null },{ "column", "fgno"},{"filecount", 1 },
{"readmode", 0 },{"hidemode", 0 },
{ "isimage", 0 }, { "fileext", "" }})
</div>
<br />
<div id="fileinfo"></div>
</td>
</tr> </tr>
<tr> <tr>
<th>점수</th> <th>점수</th>
<td><input type="text" class="form-control int disp-init text-center" style="width: 70px;" max="3" id="cpoint" onchange="checkmax(this)" /></td> <td><input type="text" class="form-control int disp-init text-center" style="width: 70px;" max="3" id="cpoint" name="cpoint" onchange="checkmax(this)" /></td>
</tr> </tr>
<tr> <tr>
<th>피드백</th> <th>피드백</th>
<td><textarea class="form-control" id="feedb" style="resize: none; height: 250px;" maxlength="800"></textarea></td> <td><textarea class="form-control" id="feedb" name="feedb" style="resize: none; height: 200px;" maxlength="800"></textarea></td>
</tr>
<tr>
<th>참고사항</th>
<td><textarea class="form-control" id="memo" name="memo" style="resize: none; height: 150px;" maxlength="800"></textarea></td>
</tr> </tr>
</table> </table>
<br /><br /><br /> <br /><br /><br />
@ -133,6 +147,14 @@
&nbsp;&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs closethisbox">닫기</a> &nbsp;&nbsp;&nbsp;<a href="#" class="btn btn-default btn-xs closethisbox">닫기</a>
</div> </div>
<br /><br /> <br /><br />
<input type="hidden" id="sdno" name="sdno" value="">
<input type="hidden" id="lectno" name="lectno" value="">
<input type="hidden" id="tpoint" name="tpoint" value="">
<input type="hidden" id="ridx" name="ridx" value="">
<input type="hidden" id="iscopyVal" name="iscopy" value="">
<input type="hidden" id="cmno" name="cmno" value="">
<input type="hidden" id="userno" name="userno" value="">
</form>
</div> </div>
<style type="text/css"> <style type="text/css">
td.estate0 { td.estate0 {
@ -177,16 +199,23 @@
height: 60%; height: 60%;
max-width: 60%; max-width: 60%;
} }
.file_input_opacity {
width: 400px !important;
}
</style> </style>
@Html.Partial("./Partial/FileScript")
<script> <script>
var ischange = false; var ischange = false;
$(document).ready(function () { $(document).ready(function () {
$("body").on("click", "td.qi div.imgbox", function () { $("body").on("click", "td.qi div.imgbox", function () {
$(this).toggleClass("active"); $(this).toggleClass("active");
}); });
$("#cpoint,#feedb,#feedb2").on("propertychange change keyup paste input", function () { $("#cpoint,#feedb,#feedb2,.file_input_opacity").on("propertychange change keyup paste input", function () {
ischange = true; ischange = true;
}) })
}); });
function findme() { function findme() {
bglayer(); submit(); bglayer(); submit();
@ -202,14 +231,25 @@
} }
} }
function cblectsds() { function cblectsds() {
var submittimeDateVal;
var submittime = "";
$.each(capResult.obj, function (i, d) { $.each(capResult.obj, function (i, d) {
if (capResult.obj[i].submittime != null) {
submittimeDateVal = eval('new ' + capResult.obj[i].submittime.replaceAll('/', ''))
submittime = submittimeDateVal.getFullYear() + ('0' + (submittimeDateVal.getMonth() + 1)).slice(-2) + ('0' + submittimeDateVal.getDate()).slice(-2);
}
else {
submittime = "";
}
$("#tbody1").append(("<tr data-sdno=\"{8}\" data-lectno=\"{0}\" data-tpoint=\"{22}\">" + $("#tbody1").append(("<tr data-sdno=\"{8}\" data-lectno=\"{0}\" data-tpoint=\"{22}\">" +
"<td><input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" data-userno=\"{1}\" /></td>" + "<td><input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" data-userno=\"{1}\" /></td>" +
"<td>{2}</td>" + "<td>{2}</td>" +
"<td>{16}</td>" + "<td>{16}</td>" +
"<td>{17}</td>" + "<td>{17}</td>" +
"<td>{18}</td>" + "<td>{18}</td>" +
"<td>{24}</td>" +
"<td>{5}</td>" + "<td>{5}</td>" +
"<td>{25}</td>" +
"<td>{19}</td>" + "<td>{19}</td>" +
"{20}" + "{20}" +
"<td class=\"estate{6}\">{7}</td>" + "<td class=\"estate{6}\">{7}</td>" +
@ -218,10 +258,11 @@
"<td><a class=\"btn btn-xxs btn-select iscopy{11}\" onclick=\"viewcopy({8}, {0},{23})\" href=\"#\">{12}</a></td>" + "<td><a class=\"btn btn-xxs btn-select iscopy{11}\" onclick=\"viewcopy({8}, {0},{23})\" href=\"#\">{12}</a></td>" +
"<td>{13}</td>" + "<td>{13}</td>" +
"<td>{14}</td>" + "<td>{14}</td>" +
"{21}").format(d.lectno, d.userno, d.rnorvt, d.isrebatename, d.asname "{21}").format(d.lectno, d.userno, d.rnorvt, d.isrebatename, d.asname, d.userid
, d.usernameid, d.sdstate, d.sdstatename, d.sdno, d.cpoint2 , d.sdstate, d.sdstatename, d.sdno, d.cpoint2, d.feedbox
, d.feedbox, d.iscopy, d.copyratename, d.submittimeip, d.checktimeip, (i + 1), d.cshape == 2 ? d.sseq : '-', d.studyplacename , d.iscopy, d.copyratename, d.submittimeip, d.checktimeip, (i + 1)
, d.cname, d.leststr, d.leestr, '@(!ViewBag.IsSubAdmin96)' == 'True' ? d.scomplete : d.scomplete96, d.tpoint, d.submittime.substring(0, 10).replaceAll('-', ''))); , (d.cshape == 2 ? d.sseq : '-'), (d.studyplacename == null ? "" : d.studyplacename), d.cname, d.leststr, d.leestr
, ('@(!ViewBag.IsSubAdmin96)' == 'True' ? d.scomplete : d.scomplete96), d.tpoint, submittime, d.username, (d.mobile == null ? "" : d.mobile)));
}); });
if (_isprenext) { if (_isprenext) {
viewsd($("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-sdno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-lectno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-tpoint"), _ridx + _saveidx); viewsd($("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-sdno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-lectno"), $("#tbody1 tr:eq(" + (_ridx + _saveidx - 1) + ")").attr("data-tpoint"), _ridx + _saveidx);
@ -237,6 +278,10 @@
_lectno = lectno; _lectno = lectno;
_tpoint = tpoint; _tpoint = tpoint;
_ridx = ridx; _ridx = ridx;
$("#sdno").val(sdno);
$("#lectno").val(lectno);
$("#tpoint").val(tpoint);
$("#ridx").val(ridx);
capp("/acommon/lectsd", { lectno: lectno, sdno: sdno }, "cblectsd"); capp("/acommon/lectsd", { lectno: lectno, sdno: sdno }, "cblectsd");
} }
function cblectsd() { function cblectsd() {
@ -249,12 +294,34 @@
} }
var _html = "- 제출파일 없음<br />"; var _html = "- 제출파일 없음<br />";
if (getdb(d.fileurl) != "") { if (getdb(d.fileurl) != "") {
_html = "<a href=\"/aCommon/DownFile?fno={0}&loginfo=&issubject=1\" title=\"다운로드\"><i class=\"fa fa-paperclip\"></i> <span class=\"fileitem\">{1}</span></a><br />".format(d.fileno, d.orgname); _html = '<div id="file{0}div"><a href="/aCommon/DownFile?fno={0}&loginfo=&issubject=1" title="다운로드"><i class="fa fa-paperclip"></i> <span class="fileitem">{1}</span></a>'.format(d.fileno, d.orgname);
_html += '<a href="#" style="color:red;margin-left:5px;cursor:point" onclick="fileDel(this)" data-fileno="{0}" data-filename="{1}">X</a>'.format(d.fileno, d.orgname);
_html += '</div><br />'
$("#fileinfoDiv .fgno").val(d.fgno)
$("#fileinfoDiv").css("display", "none")
}
else {
$("#fileinfoDiv").css("display", "")
} }
_html += "(모사율: {0})&nbsp;&nbsp;&nbsp;".format(d.copyratename); _html += "(모사율: {0})&nbsp;&nbsp;&nbsp;".format(d.copyratename);
$("#fileinfo").html(_html + ("<label><input id=\"iscopy\" type=\"checkbox\" " + (d.iscopy == 1 ? "checked" : "") + " /> 모사답안신고</label>")); $("#fileinfo").html(_html + ("<label><input id=\"iscopy\" type=\"checkbox\" " + (d.iscopy == 1 ? "checked" : "") + " /> 모사답안신고</label>"));
setv("userno", d.userno);
setv("cmno", d.cmno);
setv("cpoint", d.cpoint); setv("cpoint", d.cpoint);
if (d.feedb != null) {
$("#feedb").val(d.feedb); $("#feedb").val(d.feedb);
}
else {
$("#feedb").val("");
}
if (d.memo != null) {
$("#memo").val(d.memo);
}
else {
$("#memo").val("");
}
$("#feedb").removeAttr("readonly"); $("#feedb").removeAttr("readonly");
$("#tpoint").val(_tpoint); $("#tpoint").val(_tpoint);
//if (getdb(d.feedb) != '') { //if (getdb(d.feedb) != '') {
@ -289,22 +356,37 @@
msg2(getint($("#tpoint").val()) + "점 이하으로 입력해주세요."); msg2(getint($("#tpoint").val()) + "점 이하으로 입력해주세요.");
} else if (confirm("저장하시겠습니까?")) { } else if (confirm("저장하시겠습니까?")) {
_saveidx = idx; _saveidx = idx;
capp("/acommon/lectsdsave", { lectno: _lectno, sdno: _sdno, iscopy: $("#iscopy").prop("checked") ? 1 : 0, cpoint: val("cpoint"), feedb: val("feedb") }, "cbsave", null, null, null, true); // capp("/acommon/lectsdsave", { lectno: _lectno, sdno: _sdno, iscopy: $("#iscopy").prop("checked") ? 1 : 0, cpoint: val("cpoint"), feedb: val("feedb"), memo: val("memo") }, "cbsave", null, null, null, true);
$("#iscopyVal").val($("#iscopy").prop("checked") ? 1 : 0)
capfileform("/acommon/lectsdsave", "mform2", "cbsave");
} }
} }
} }
function cbsave() { function cbsave() {
if (capResult.code == 1000) { if (capResult.code == 1000) {
if (_saveidx == 0) { //if (_saveidx == 0) {
// msg2("저장했습니다.");
// viewsd(_sdno, _lectno, _tpoint, _ridx);
// //submit("mform", 500);
//} else {
// //리스트 갱신 후 다음 또는 이전 수강생과제 표시
// msg2("저장했습니다.", null, null, null, true);
// setTimeout(function () {
// hidelayermsg2(true);
// getsds(true);
// }, 300);
//}
msg2("저장했습니다."); msg2("저장했습니다.");
//submit("mform", 500); $(".file_input_opacity").val("")
} else { $(".file_input_textbox").val("")
//리스트 갱신 후 다음 또는 이전 수강생과제 표시
msg2("저장했습니다.", null, null, null, true); if (_saveidx == 0) {
setTimeout(function () { viewsd(_sdno, _lectno, _ridx);
hidelayermsg2(true); }
getsds(true); else {
}, 300); ischange = false;
save(_saveidx)
} }
} else { } else {
msgdev(true); msgdev(true);
@ -344,5 +426,30 @@
} }
} }
} }
var fileDivId = "";
function fileDel(obj) {
let fileno = $(obj).data("fileno")
let filename = $(obj).data("filename")
fileDivId = "file" + fileno + "div";
let data = {"key" : fileno , "fName": filename }
if (confirm("파일을 삭제하시겠습니까?")) {
capp("/acommon/deletefile", data, "fileDelResult");
}
}
function fileDelResult() {
if (capOK) {
let fileDivObj = $("#" + fileDivId)
if (fileDivObj.length == 1) {
fileDivObj.remove();
$("#fileinfoDiv").css("display", "")
viewsd(_sdno, _lectno, _tpoint, _ridx);
}
}
else {
msg("파일을 삭제할 수 없습니다.");
}
}
</script> </script>
<iframe id="ifrthis" style="display: none;"></iframe> <iframe id="ifrthis" style="display: none;"></iframe>

View File

@ -55,8 +55,8 @@
<!--<add key="talk" value="https://alimtalk-api.bizmsg.kr/v2/sender/send,?,?,?,?,?,023103312" />--> <!--<add key="talk" value="https://alimtalk-api.bizmsg.kr/v2/sender/send,?,?,?,?,?,023103312" />-->
<!--<add key="configpath" value="Product" />--> <!--<add key="configpath" value="Product" />-->
<add key="configpath" value="ProductDev" /> <!--<add key="configpath" value="ProductDev" />-->
<!--<add key="configpath" value="staging" />--> <add key="configpath" value="staging" />
<add key="lgdacomConfigPath" value="D:\3rdparti\lgdacomyicte" /> <add key="lgdacomConfigPath" value="D:\3rdparti\lgdacomyicte" />

View File

@ -232,9 +232,9 @@ namespace NP.Base.Controllers
/// <param name="log"></param> /// <param name="log"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public JsonResult DeleteFile(Int64 key = 0, String fName = "", Int64 fgno = 0, int isSingleFile = 0, String log = "") public JsonResult DeleteFile(Int64 key = 0, String fName = "", Int64 fgno = 0, int isSingleFile = 0, String log = "", String datakey = null)
{ {
var rtn = DropFile(key, fName); var rtn = DropFile(key, fName, datakey);
if (rtn < 1) if (rtn < 1)
{ {
throw new System.ArgumentNullException("nodata"); throw new System.ArgumentNullException("nodata");

View File

@ -833,7 +833,9 @@ namespace NP.Base.Controllers
pagenum = pagenum < 1 ? 1 : pagenum; pagenum = pagenum < 1 ? 1 : pagenum;
pagerowcount = pagerowcount < 1 ? PageRowCount : pagerowcount; pagerowcount = pagerowcount < 1 ? PageRowCount : pagerowcount;
return JsonBack(Dao.Get<LectSD>("lect.lectsds.all", new System.Collections.Hashtable() { { "estate", sdstate }, { "pagenum", pagenum }, { "pagerowsize", pagerowcount }, { "edate", edate },{"sdateall",sdateall },{"edateall",edateall }, { "cshape", cshape }, { "cname", cname }, { "cnamestr", cnamestr }, { "iscomplete", iscomplete }, { "studyplace", studyplace }, { "searchtype", searchtype }, {"searchtext",searchtext } ,{"sdtype",sdtype },{"asname",asname }, { "isproduct" + (GetConfig("isstaging") == "1" ? "x" : ""), 1 }, })); var result = Dao.Get<LectSD>("lect.lectsds.all", new System.Collections.Hashtable() { { "estate", sdstate }, { "pagenum", pagenum }, { "pagerowsize", pagerowcount }, { "edate", edate }, { "sdateall", sdateall }, { "edateall", edateall }, { "cshape", cshape }, { "cname", cname }, { "cnamestr", cnamestr }, { "iscomplete", iscomplete }, { "studyplace", studyplace }, { "searchtype", searchtype }, { "searchtext", searchtext }, { "sdtype", sdtype }, { "asname", asname }, { "isproduct" + (GetConfig("isstaging") == "1" ? "x" : ""), 1 }, });
return JsonBack(result);
} }
/// <summary> /// <summary>
/// 과제제출상세정보 /// 과제제출상세정보
@ -856,6 +858,12 @@ namespace NP.Base.Controllers
{ {
d.uno = SUserInfo.UserNo; d.uip = GetUserIP(); d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
d.isproduct = GetConfig("isstaging") == "1" ? (int?)null : 1; d.isproduct = GetConfig("isstaging") == "1" ? (int?)null : 1;
if (Request.Files.GetMultiple("fgno").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
//d.fgno = SetFile(Request.Files.GetMultiple("fgno").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), d.fgno ?? 0, "lectsd", "fgno");
d.fgno = SetFile(Request.Files.GetMultiple("fgno").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), d.fgno ?? 0, "lectsd", "fgno", 1, "XX", false, true, d.cmno, d.userno);
}
return JsonOK(Dao.Save("lect.lectsd"+(d.ccount == 1 ? "2" : "")+".save" + (string.IsNullOrEmpty(d.lectnos) ? "" : "batch"), d)); return JsonOK(Dao.Save("lect.lectsd"+(d.ccount == 1 ? "2" : "")+".save" + (string.IsNullOrEmpty(d.lectnos) ? "" : "batch"), d));
} }
/// <summary> /// <summary>

View File

@ -468,7 +468,7 @@ namespace NP.Base
} }
return SetFile(fs, fgno, tablename, columnname, fseq, FGKey, false, false, 0); return SetFile(fs, fgno, tablename, columnname, fseq, FGKey, false, false, 0);
} }
protected long? SetFile(IList<System.Web.HttpPostedFileBase> upFiles, long fgno, String tablename, String columnname, int fseq = 1, String FGKey = "XX", bool iscontents = false, bool issubject = false, int cmno = 0) protected long? SetFile(IList<System.Web.HttpPostedFileBase> upFiles, long fgno, String tablename, String columnname, int fseq = 1, String FGKey = "XX", bool iscontents = false, bool issubject = false, int cmno = 0, long userno = 0)
{ {
try try
{ {
@ -483,7 +483,7 @@ namespace NP.Base
var fg = Dao.Get<NP.Model.File>("sys.file.getfgnobyfgkey", FGKey).FirstOrDefault(); var fg = Dao.Get<NP.Model.File>("sys.file.getfgnobyfgkey", FGKey).FirstOrDefault();
fgno = fg == null ? 0 : fg.fgno; fgno = fg == null ? 0 : fg.fgno;
} }
var finfos = new NP.Model.File() { fgno = fgno, tablename = tablename, columnname = columnname, uno = SUserInfo.UserNo, uip = GetUserIP() }; var finfos = new NP.Model.File() { fgno = fgno, tablename = tablename, columnname = columnname, uno = userno > 0 ? userno : SUserInfo.UserNo, uip = GetUserIP() };
finfos.Files = new List<NP.Model.File>(); finfos.Files = new List<NP.Model.File>();
var _month = DateTime.Now.ToString("yyyyMM"); var _month = DateTime.Now.ToString("yyyyMM");
if (issubject) if (issubject)

View File

@ -1890,7 +1890,7 @@
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.remainPeople ,a.remainPeople
,a.isselected, ,a.isselected
,case when a.remainPeople &lt;= 0 then 0 else 1 end isend ,case when a.remainPeople &lt;= 0 then 0 else 1 end isend
from from
( (
@ -1920,7 +1920,7 @@
select a.* select a.*
from ( from (
select select
a.cmno,a.pcmno,a.cgcode a.cmno,a.pcmno<!--,a.cgcode-->
,a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth ,a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.remainPeople ,a.remainPeople
,a.isselected ,a.isselected
@ -1937,12 +1937,12 @@
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename ,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected ,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,c.scdtype ,c.scdtype
,d.cmno,d.pcmno,cg.cgcode ,d.cmno,d.pcmno<!--,cg.cgcode-->
,d.cshape ,d.cshape
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join cg cg on d.cgno = cg.cgno <!--left outer join cg cg on d.cgno = cg.cgno-->
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
<dynamic prepend="where"> <dynamic prepend="where">
<isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull> <isNotNull property="cmno" prepend="and">c.cmno=#cmno#</isNotNull>
@ -1965,7 +1965,7 @@
select select
a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,a.studyplace,a.studyplacename,a.startmonth
,a.studyplace, a.studyplacename,a.remainPeople ,a.studyplace, a.studyplacename,a.remainPeople
,a.isselected, a.cmno,a.pcmno,a.cgcode ,a.isselected<!--, a.cmno,a.pcmno,a.cgcode-->
<!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가--> <!--211220.통합테스트목록(644) 이미지난 교육종료일 변경불가-->
,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second) ,case when a.estart &lt; date_add(date_format(now() ,'%Y-%m-%d 00:00:00'),interval -1 second)
<!--20220803 <!--20220803
@ -1976,11 +1976,11 @@
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0)) remainPeople ,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status =1 and z.ischanged=0)) remainPeople
,a.studyplace, e.cname studyplacename ,a.studyplace, e.cname studyplacename
,case when f.cmisno = a.cmisno then 1 else 0 end isselected, d.cmno,d.pcmno,cg.cgcode ,case when f.cmisno = a.cmisno then 1 else 0 end isselected<!--, d.cmno,d.pcmno,cg.cgcode-->
from cminningscd a from cminningscd a
left outer join cminning c on c.cmino = a.cmino left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno left outer join cm d on d.cmno = c.cmno
left outer join cg cg on d.cgno = cg.cgno <!--left outer join cg cg on d.cgno = cg.cgno-->
left outer join comcode e on e.ccode = a.studyplace left outer join comcode e on e.ccode = a.studyplace
left outer join lect f on f.lectno = #lectno# left outer join lect f on f.lectno = #lectno#
<dynamic prepend="where"> <dynamic prepend="where">

View File

@ -1190,42 +1190,77 @@
left outer join cminningscd h on h.cmisno = a.cmisno left outer join cminningscd h on h.cmisno = a.cmisno
left outer join comcode i on i.ccode = h.studyplace and i.isuse=1 left outer join comcode i on i.ccode = h.studyplace and i.isuse=1
where a.status=1 and a.ischanged=0 where a.status=1 and a.ischanged=0
<isNotNull property="edate">and date_format((case when g.cshape = 2 and h.eend is not null then h.eend else a.edate end),'%Y-%m-%d') = #edate#</isNotNull> <isNotNull property="edate">
<isNotNull property="cshape">and g.cshape = #cshape#</isNotNull> <isNotEmpty property="edate">and date_format((case when g.cshape = 2 and h.eend is not null then h.eend else a.edate end),'%Y-%m-%d') = #edate#</isNotEmpty>
</isNotNull>
<isNotNull property="cshape">
<isNotEmpty property="cshape">and g.cshape = #cshape#</isNotEmpty>
</isNotNull>
<isNotNull property="cname">
<isNotEmpty property="cname">and g.cname like concat('%',#cname#,'%')</isNotEmpty> <isNotEmpty property="cname">and g.cname like concat('%',#cname#,'%')</isNotEmpty>
</isNotNull>
<isNotNull property="cnamestr">
<isNotEmpty property="cnamestr">and g.cname like concat('%',#cname#,'%')</isNotEmpty> <isNotEmpty property="cnamestr">and g.cname like concat('%',#cname#,'%')</isNotEmpty>
<isNotNull property="iscomplete">and ifnull(a.iscomplete,0) = #iscomplete#</isNotNull> </isNotNull>
<isNotNull property="studyplace">and h.studyplace = #studyplace#</isNotNull> <isNotNull property="iscomplete">
<isNotNull property="usernamestr">and d.username like concat('%',#usernamestr#,'%')</isNotNull> <isNotEmpty property="iscomplete">and ifnull(a.iscomplete,0) = #iscomplete#</isNotEmpty>
<isNotNull property="useridstr">and d.userid like concat('%',#useridstr#,'%')</isNotNull> </isNotNull>
<isNotNull property="sdtype">and b.sdtype=#sdtype#</isNotNull> <isNotNull property="studyplace">
<isNotNull property="cmno">and a.cmno=#cmno# </isNotNull> <isNotEmpty property="studyplace">and h.studyplace = #studyplace#</isNotEmpty>
<isNotNull property="isrebate">and a.isrebate=#isrebate#</isNotNull> </isNotNull>
<isNotNull property="usernamestr">
<isNotEmpty property="usernamestr">and d.username like concat('%',#usernamestr#,'%')</isNotEmpty>
</isNotNull>
<isNotNull property="useridstr">
<isNotEmpty property="useridstr">and d.userid like concat('%',#useridstr#,'%')</isNotEmpty>
</isNotNull>
<isNotNull property="sdtype">
<isNotEmpty property="sdtype">and b.sdtype=#sdtype#</isNotEmpty>
</isNotNull>
<isNotNull property="cmno">
<isNotEmpty property="cmno">and a.cmno=#cmno# </isNotEmpty>
</isNotNull>
<isNotNull property="isrebate">
<isNotEmpty property="isrebate">and a.isrebate=#isrebate#</isNotEmpty>
</isNotNull>
<isNotNull property="sdstate"> <isNotNull property="sdstate">
<isNotEmpty property="sdstate">
<isEqual property="sdstate" compareValue="0">and c.submittime is null</isEqual> <isEqual property="sdstate" compareValue="0">and c.submittime is null</isEqual>
<isEqual property="sdstate" compareValue="1">and c.submittime is not null</isEqual> <isEqual property="sdstate" compareValue="1">and c.submittime is not null</isEqual>
</isNotEmpty>
</isNotNull> </isNotNull>
<isNotEmpty property="searchtype"> <isNotNull property="searchtext">
<isNotEmpty property="searchtext"> <isNotEmpty property="searchtext">
<isEqual property="searchtype" compareValue="usernamestr">and d.username like concat('%',#searchtext#,'%')</isEqual> <isEqual property="searchtype" compareValue="usernamestr">and d.username like concat('%',#searchtext#,'%')</isEqual>
<isEqual property="searchtype" compareValue="useridstr">and d.userid like concat('%',#searchtext#,'%')</isEqual> <isEqual property="searchtype" compareValue="useridstr">and d.userid like concat('%',#searchtext#,'%')</isEqual>
</isNotEmpty> </isNotEmpty>
</isNotEmpty> </isNotNull>
<isNotNull property="sdateall">
<isNotEmpty property="sdateall">and (case when g.cshape = 0 and a.isrebate = 0 then p.payoktime else a.sdate end) &gt;= date_format(#sdateall#,'%Y-%m-%d 00:00:00')</isNotEmpty> <isNotEmpty property="sdateall">and (case when g.cshape = 0 and a.isrebate = 0 then p.payoktime else a.sdate end) &gt;= date_format(#sdateall#,'%Y-%m-%d 00:00:00')</isNotEmpty>
</isNotNull>
<isNotNull property="edateall">
<isNotEmpty property="edateall">and (case when g.cshape = 2 then h.eend else a.edate end) &lt;= date_format(#edateall#,'%Y-%m-%d 23:59:59')</isNotEmpty> <isNotEmpty property="edateall">and (case when g.cshape = 2 then h.eend else a.edate end) &lt;= date_format(#edateall#,'%Y-%m-%d 23:59:59')</isNotEmpty>
<isNotNull property="asname">and e.asname like concat('%',#asname#,'%')</isNotNull> </isNotNull>
<isNotNull property="mobile">and cast(AES_DECRYPT(UNHEX(d.mobile), 'np123@!' ) as char) like concat('%',#mobile#,'%')</isNotNull> <isNotNull property="asname">
<isNotNull property="ustatus">and d.status = #ustatus#</isNotNull> <isNotEmpty property="asname">and e.asname like concat('%',#asname#,'%')</isNotEmpty>
</isNotNull>
<isNotNull property="mobile">
<isNotEmpty property="mobile">and cast(AES_DECRYPT(UNHEX(d.mobile), 'np123@!' ) as char) like concat('%',#mobile#,'%')</isNotEmpty>
</isNotNull>
<isNotNull property="ustatus">
<isNotEmpty property="ustatus">and d.status = #ustatus#</isNotEmpty>
</isNotNull>
) a ) a
<include refid="sql.pagedynamic"></include> <include refid="sql.pagedynamic"></include>
order by rno order by rno
</select> </select>
<select id="lect.lectsd" parameterClass="hashtable" resultClass="lectsd"> <select id="lect.lectsd" parameterClass="hashtable" resultClass="lectsd">
select a.sdno,a.tpoint sdtpoint select a.sdno,a.tpoint sdtpoint
,b.lectno,b.atext,b.fgno<isNotNull property="isproduct">,round((g.MAX_SCORE/100)) copyrate</isNotNull>,b.iscopy,b.cpoint,b.feedb,b.submittime,b.checktime ,b.lectno,b.atext,b.fgno<isNotNull property="isproduct">,round((g.MAX_SCORE/100)) copyrate</isNotNull>
,c.userno,c.username,c.userid <!--,b.iscopy,b.cpoint,b.feedb, b.comment,b.submittime,b.checktime,c.userno,c.username-->
,d.asname ,b.iscopy,b.cpoint,b.feedb, b.memo,b.submittime,b.checktime,c.userno,c.username
,f.fileno,f.orgname,f.fileurl ,c.userid,d.asname,f.fileno,f.orgname,f.fileurl, b2.cmno
from cmsd a from cmsd a
inner join lect b2 on b2.lectno=#lectno# inner join lect b2 on b2.lectno=#lectno#
inner join users c on c.userno=b2.userno inner join users c on c.userno=b2.userno
@ -1239,12 +1274,14 @@
update lectsd set <include refid="sql.up"></include> update lectsd set <include refid="sql.up"></include>
,iscopy=#iscopy#,cpoint=#cpoint# ,iscopy=#iscopy#,cpoint=#cpoint#
,feedb=#feedb# ,feedb=#feedb#
,memo=#memo#
,checktime=case when #cpoint# is not null or #feedb# is not null then now() else checktime end ,checktime=case when #cpoint# is not null or #feedb# is not null then now() else checktime end
,checkip=case when #cpoint# is not null or #feedb# is not null then #uip# else checkip end ,checkip=case when #cpoint# is not null or #feedb# is not null then #uip# else checkip end
,fgno=#fgno#
where lectno=#lectno# and sdno=#sdno#; where lectno=#lectno# and sdno=#sdno#;
insert into lectsd (lectno,sdno,atext,fgno,copyrate,iscopy,cpoint,feedb,submittime,submitip,checktime,checkip,<include refid="sql.inc"></include>) insert into lectsd (lectno,sdno,atext,fgno,copyrate,iscopy,cpoint,feedb,memo,submittime,submitip,checktime,checkip,<include refid="sql.inc"></include>)
select #lectno#,#sdno#,null,null,null,#iscopy#,#cpoint#,#feedb#,null,null select #lectno#,#sdno#,null,#fgno#,null,#iscopy#,#cpoint#,#feedb#,#memo#,null,null
,case when #cpoint# is not null or #feedb# is not null then now() else null end ,case when #cpoint# is not null or #feedb# is not null then now() else null end
,case when #cpoint# is not null or #feedb# is not null then #uip# else null end ,case when #cpoint# is not null or #feedb# is not null then #uip# else null end
,<include refid="sql.inv"></include> ,<include refid="sql.inv"></include>

View File

@ -185,7 +185,8 @@
,e.asname ,e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply ,c.bmno,c.bmname,c.isuseopening,c.isreply
,f.opname ,f.opname
,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,b.rcount,b.fgno,b.fgnothumb,b.cmno <!--,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,b.rcount,b.fgno,b.fgnothumb,b.cmno-->
,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,d.userid cnoid, b.rcount,b.fgno,b.fgnothumb,b.cmno
,g.cname,g.classno ,g.cname,g.classno
,h.tyear,h.tseq ,h.tyear,h.tseq
from ( from (

View File

@ -8,7 +8,7 @@
<property name="TopMenuNo" value="2" /> <property name="TopMenuNo" value="2" />
<property name="PageRowCount" value="10" /> <property name="PageRowCount" value="10" />
<property name="MainSubDomain" value="www" /> <property name="MainSubDomain" value="www" />
<property name="IsDupCheck" value="1" /> <property name="IsDupCheck" value="0" />
</object> </object>
<object id="fcommon" parent="basec" singleton="false" type="NP.Base.Controllers.FCommonController, NP.Base"></object> <object id="fcommon" parent="basec" singleton="false" type="NP.Base.Controllers.FCommonController, NP.Base"></object>

View File

@ -3726,6 +3726,10 @@ namespace NP.Model
/// 1000 피드백 /// 1000 피드백
/// </summary> /// </summary>
public String feedb {get;set;} public String feedb {get;set;}
/// <summary>
/// 1000 참고사항
/// </summary>
public String memo { get; set; }
public String feedbox public String feedbox
{ {
get get