@@ -0,0 +1,12 @@ | |||
#lr_im_message_list .lr-list-item-media img { | |||
border-radius:5px; | |||
} | |||
#lr_im_message_list .lr-list-item-media .date { | |||
position: absolute; | |||
top: 15px; | |||
right: 5px; | |||
text-align: right; | |||
font-size: 12px; | |||
font-weight: 400; | |||
color: #8f8f94; | |||
} |
@@ -0,0 +1,22 @@ | |||
<div class="lr-page lr-EvaluationTeach-page"> | |||
<div class="lr-page-tool"> | |||
<div class="lr-tool-left"> | |||
总共<span class="lr-badge lr-badge-primary">0</span>条 | |||
</div> | |||
<div class="lr-tool-right"> | |||
<div class="lr-tool-right-btn lr_multiple_search"> | |||
<i class="iconfont icon-searchlist"></i> | |||
<div class="lr-tool-right-btn-content lr-form-container"> | |||
<div class="lr-form-row"> | |||
<label>主题</label> | |||
<input id="TITLE" type="text"> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-page-content" id="lr_EvaluationTeach_list"></div> | |||
<!--<div class="lr-list-addbtn" id="lr_EvaluationTeach_btn"> | |||
<i class="iconfont icon-add1"></i> | |||
</div>--> | |||
</div> |
@@ -0,0 +1,76 @@ | |||
(function () { | |||
var multipleData = null; | |||
var page = { | |||
grid: null, | |||
init: function ($page) { | |||
page.grid = $page.find('#lr_EvaluationTeach_list').lrpagination({ | |||
lclass: page.lclass, | |||
rows: 10, // 每页行数 | |||
getData: function (param, callback) {// 获取数据 param 分页参数,callback 异步回调 | |||
param.multipleData = multipleData; | |||
page.loadData(param, callback, $page); | |||
}, | |||
renderData: function (_index, _item, _$item) {// 渲染数据模板 | |||
return page.rowRender(_index, _item, _$item, $page); | |||
}, | |||
click: function (item, $item, $et) {// 列表行点击事件 | |||
if ($et.hasClass('lr-btn-success')) { | |||
page.btnClick(item, $item, $page); | |||
} | |||
else { | |||
page.rowClick(item, $item, $page); | |||
} | |||
} | |||
//btns: page.rowBtns | |||
}); | |||
}, | |||
lclass: 'lr-list', | |||
loadData: function (param, callback, $page) {// 列表加载后台数据 | |||
var _postParam = { | |||
pagination: { | |||
rows: param.rows, | |||
page: param.page | |||
}, | |||
queryJson: '{}' | |||
}; | |||
if (param.multipleData) { | |||
_postParam.queryJson = JSON.stringify(multipleData); | |||
} | |||
learun.httpget(config.webapi + '/learun/eval/studentlist', _postParam, (data) => { | |||
$page.find('.lr-badge').text('0'); | |||
if (data) { | |||
$page.find('.lr-badge').text(data.records); | |||
callback(data.rows, parseInt(data.records)); | |||
} | |||
else { | |||
callback([], 0); | |||
} | |||
}); | |||
}, | |||
rowRender: function (_index, _item, _$item, $page) {// 渲染列表行数据 | |||
_$item.addClass('lr-list-item lr-list-item-multi'); | |||
_$item.append($('<p class="lr-ellipsis"><span>学年:</span></p>').dataFormatter({ value: _item.AcademicYearNo })); | |||
_$item.append($('<p class="lr-ellipsis"><span>学期:</span></p>').dataFormatter({ value: _item.Semester })); | |||
_$item.append($('<p class="lr-ellipsis"><span>教师姓名:</span></p>').dataFormatter({ value: _item.EmpName })); | |||
_$item.append($('<p class="lr-ellipsis"><span>课程名称:</span></p>').dataFormatter({ value: _item.LessonName })); | |||
_$item.append($('<p class="lr-ellipsis"><span>评教状态:</span></p>').dataFormatter({ value: (_item.UID != undefined && _item.UID !== '') ? "已评" : "未评" })); | |||
return ''; | |||
}, | |||
rowClick: function (item, $item, $page) {// 列表行点击触发方法 | |||
if (item.UID != undefined && item.UID !== '') { | |||
learun.layer.warning("当前项目已评教!"); | |||
return; | |||
} | |||
learun.nav.go({ path: 'EvaluationTeach/EvaluationTeahcers', title: '评价教师', type: 'right', param: { VID: item.VID, EmpNo: item.EmpNo, LessonNo: item.LessonNo } }); | |||
}, | |||
btnClick: function (item, $item, $page) {// 左滑按钮点击事件 | |||
if (item.UID == undefined || item.UID === '') { | |||
learun.layer.warning("当前项目未评教!"); | |||
return; | |||
} | |||
learun.nav.go({ path: 'EvaluationTeach/EvaluationTeahcers', title: '评价教师', type: 'right', param: { VID: item.VID, StuNo: item.StuNo } }); | |||
}, | |||
rowBtns: ['<a class="lr-btn-success">查看</a>'] // 列表行左滑按钮 | |||
}; | |||
return page; | |||
})(); |
@@ -0,0 +1,170 @@ | |||
@charset "utf-8"; | |||
/* CSS Document */ | |||
body { | |||
font-family: "Microsoft YaHei", "微软雅黑" !important; | |||
} | |||
/*****sec1*******/ | |||
.eva_sec1{ | |||
padding: 1px 0; | |||
} | |||
.eva_sec1 .index_box { | |||
padding: 0 12px 15px; | |||
border: 1px solid #E5E5E7; | |||
width: 94%; | |||
margin: 20px auto; | |||
} | |||
.inSecTitle{ | |||
font-size: 20px; | |||
text-align: center; | |||
margin: 20px 0 0px; | |||
} | |||
.inSecTime{ | |||
font-size: 12px; | |||
text-align: center; | |||
} | |||
.shenInput { | |||
margin-top: 15px; | |||
font-size: 14px; | |||
line-height: 24px; | |||
} | |||
.shenInput3 { | |||
display: none; | |||
} | |||
.shenInput:before, .shenInput:after { | |||
display: table; | |||
content: " "; | |||
} | |||
.shenInput:after { | |||
clear: both; | |||
} | |||
.signTxt { | |||
line-height: 24px; | |||
font-size: 14px; | |||
position: relative; | |||
} | |||
.shenInputBox { | |||
position: relative; | |||
} | |||
.shenInputBox1 { | |||
margin-left: 60px; | |||
} | |||
.inputRadioRow { | |||
overflow: hidden; | |||
} | |||
.inputRadioCol4 {margin-top: 8px;} | |||
.inputRadio { | |||
border-radius: 50%; | |||
} | |||
.inputCheck{ | |||
border-radius: 2px; | |||
} | |||
.inputRadio.active:after { | |||
content: ''; | |||
width: 12px; | |||
height: 12px; | |||
background: #0C86D8; | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
bottom: 0; | |||
top: 0; | |||
margin: auto; | |||
border-radius: 50%; | |||
} | |||
.inputCheck.active:after { | |||
content: ''; | |||
width: 12px; | |||
height: 12px; | |||
background: #0C86D8; | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
bottom: 0; | |||
top: 0; | |||
margin: auto; | |||
border-radius: 2px; | |||
} | |||
.inputRadio,.inputCheck { | |||
font-style: normal; | |||
display: inline-block; | |||
vertical-align: middle; | |||
width: 20px; | |||
height: 20px; | |||
border: 1px solid #CBCBCB; | |||
margin: 0 10px; | |||
position: relative; | |||
cursor: pointer; | |||
} | |||
.shenInputBox>span, .inputRadioCol4 span, .inputRadioCol3 span, .inputRadioCol2 span { | |||
display: inline-block; | |||
vertical-align: middle; | |||
} | |||
.shenInput>span { | |||
display: block; | |||
float: left; | |||
width: 60px; | |||
text-align: right; | |||
padding: 4px 8px 4px 0px; | |||
line-height: 24px; | |||
} | |||
.shenInputBox .inputTxt { | |||
width: 100%; | |||
display: block; | |||
height: 32px; | |||
line-height: 20px; | |||
border: 1px solid #CBCBCB; | |||
padding: 6px 10px; | |||
font-size: 14px; | |||
} | |||
.shenBtnBox .signTxt { | |||
margin-top: 30px; | |||
margin-left: 30px; | |||
} | |||
.shenBtn { | |||
width: 74%; | |||
background: #0C86D8; | |||
text-align: center; | |||
line-height: 40px; | |||
margin: 20px auto 20px; | |||
font-size: 17px; | |||
color: #fff; | |||
border-radius: 2px; | |||
cursor: pointer; | |||
border-radius: 4px; | |||
-webkit-user-select: none; | |||
-moz-user-select: none; | |||
-ms-user-select: none; | |||
user-select: none; | |||
} | |||
.signTextareaBox { | |||
margin-top: 20px; | |||
position: relative; | |||
} | |||
.inputRadioRow { | |||
overflow: hidden; | |||
} | |||
.inputRadioCol2 { | |||
margin-top: 8px; | |||
} | |||
.inputCheck img { | |||
width: 100%; | |||
display: none; | |||
} | |||
.signTextarea { | |||
margin-top: 15px; | |||
font-size: 14px; | |||
line-height: 24px; | |||
} | |||
.redEva{ | |||
color: red!important; | |||
} | |||
/*****sec1*******/ | |||
@@ -0,0 +1,14 @@ | |||
<div class="lr-form-container"> | |||
<!-- / index_sec1 --> | |||
<div class="eva_sec eva_sec1"> | |||
<div class="inSecTitle"></div> | |||
<div class="inSecTime"></div> | |||
<div class="index_box"> | |||
</div> | |||
<div class="shenRow"> | |||
<div class="shenBtn">保 存</div> | |||
</div> | |||
</div> | |||
<!-- / index_sec1 --> | |||
</div> |
@@ -0,0 +1,168 @@ | |||
(function() { | |||
var page = { | |||
isScroll: true, | |||
init: function($page, param) { | |||
var path = config.webapi; | |||
learun.layer.loading(true, "加载数据中..."); | |||
learun.httpget(path + "/learun/eval/paper", { | |||
VID: param.VID | |||
}, (res) => { | |||
learun.layer.loading(false); | |||
$page.find('.inSecTitle').html(res.VTitle).end().find('.inSecTime').html(res.VStartTime + ' - ' + res.VStopTime) | |||
var dataList = res.Eval_Questions; | |||
var otherHtml = '<div class="shenInput shenInput3">'+ | |||
'<span>其他</span>'+ | |||
'<div class="shenInputBox shenInputBox1">'+ | |||
'<input data-rule="required;" type="text" name="fieldOther" class="inputTxt" placeholder="请填写备注" />'+ | |||
'</div>'+ | |||
'</div>'; | |||
var html = ''; | |||
$.each(dataList, function(i, n){ | |||
html += '<div class="signSec2Box" qid="'+ n.QID+'" iid="" qmust="'+ n.QMust +'" qmin="'+ n.QMin +'" qmax="'+ n.QMax+'">'; | |||
var flag = false; | |||
if(n.QType == 1){ | |||
html += '<div class="shenInput">'+ | |||
'<div class="shenInputBox">'+ | |||
'<div class="signTxt">'+ n.QTitle +'</div>'+ | |||
'<div class="inputRadioRow">'; | |||
$.each(n.Eval_QuestionItems, function(j, m){ | |||
m.QShowText ? flag = true : ''; | |||
html += '<div class="inputRadioCol4">'+ | |||
'<i class="inputRadio checkBoxs" flag="'+ flag +'" iid="'+ m.IID +'"></i>'+ | |||
'<span>'+ m.ITitle +'</span>'+ | |||
'</div>'; | |||
}) | |||
}else if(n.QType == 2){ | |||
html += '<div class="signTextarea">'+ | |||
'<div class="signTextareaBox">'+ | |||
'<div class="signTxt">'+ n.QTitle +'</div>'+ | |||
'<div class="inputRadioRow">'; | |||
$.each(n.Eval_QuestionItems, function(j, m){ | |||
if(m.QShowText){ | |||
flag = true; | |||
} | |||
html += '<div class="inputRadioCol2">'+ | |||
'<i class="inputCheck checkBoxs" flag="'+ flag +'" iid="'+ m.IID +'"></i>'+ | |||
'<span>'+ m.ITitle +'</span>'+ | |||
'</div>'; | |||
}) | |||
} | |||
html += '</div></div></div>'; | |||
html += flag? otherHtml + '</div>' : '</div>'; | |||
}) | |||
$('.index_box').html(html) | |||
}); | |||
$page.find('.shenBtn').on('tap', function() { | |||
var jsonArr= []; | |||
var qmustFlag = false; | |||
var flag = false; | |||
$('.signTxt').removeClass('redEva'); | |||
$('.signSec2Box').each(function(i, n){ | |||
var _this = $(n); | |||
var qmust = _this.attr('qmust'); | |||
var qmin = _this.attr('qmin') == 'null'? 0 : _this.attr('qmin'); | |||
var qmax = _this.attr('qmax') == 'null'? 0 : _this.attr('qmax'); | |||
var checkBoxs = _this.find('.checkBoxs.active'); | |||
var ind = checkBoxs.length; | |||
if(qmust == 'true' && ind == 0){ | |||
qmustFlag = true; | |||
_this.find('.signTxt').addClass('redEva'); | |||
} | |||
if((qmin && ind < qmin) || (qmax && ind > qmax)){ | |||
flag = true; | |||
_this.find('.signTxt').addClass('redEva'); | |||
} | |||
var UText = _this.find('.shenInput3 .inputTxt').val(); | |||
var qid = $(this).attr("qid"); | |||
checkBoxs.each(function(j, m){ | |||
var txt = $(m).attr('flag') == 'true'? UText : ''; | |||
jsonArr.push({QID: qid, IID: $(m).attr("iid"), UText: txt}) | |||
}) | |||
}) | |||
// console.log(jsonArr) | |||
if(qmustFlag){ | |||
learun.layer.toast('有必选项未选择'); | |||
return | |||
} | |||
if(flag){ | |||
learun.layer.toast('有选择项少选或多选'); | |||
return | |||
} | |||
// return | |||
learun.httppost(path + "/learun/eval/savepaper", | |||
{ | |||
VID: param.VID, | |||
LessonNo: param.LessonNo, | |||
EmpNo: param.EmpNo, | |||
postarray: jsonArr | |||
}, (res) => { | |||
learun.layer.toast('操作成功'); | |||
learun.nav.closeCurrent(); | |||
var prepage = learun.nav.getpage('EvaluationTeach'); | |||
prepage.grid.reload(); | |||
}); | |||
}) | |||
//单选框 | |||
$page.on('tap', '.shenInputBox .inputRadio', function() { | |||
if (!$(this).hasClass('active')) { | |||
// var iid = $(this).attr('iid'); | |||
$(this).addClass('active').parents('.shenInputBox').find('.inputRadio').not($(this)).removeClass('active'); | |||
judgeRideo($(this)) | |||
} | |||
}) | |||
//多选框 | |||
$page.on('tap', '.inputCheck', function() { | |||
var parents = $(this).parents('.signSec2Box'); | |||
var qmin = parents.attr('qmin') == 'null'? 0 : parents.attr('qmin'); | |||
var qmax = parents.attr('qmax') == 'null'? 0 : parents.attr('qmax'); | |||
var ind = parents.find('.inputCheck.active').length; | |||
if ($(this).hasClass('active')) { | |||
if(qmin && ind <= qmin){ | |||
learun.layer.toast('该选项最少选择'+ qmin + '项'); | |||
return | |||
} | |||
$(this).removeClass('active') | |||
} else { | |||
if(qmax && ind >= qmax){ | |||
learun.layer.toast('该选项最多选择'+ qmax + '项'); | |||
return | |||
} | |||
$(this).addClass('active'); | |||
} | |||
// var iids = ''; | |||
// parents.find('.inputCheck.active').each(function(i, n){ | |||
// var iid = $(n).attr('iid'); | |||
// iids += i== 0? iid : ',' + iid; | |||
// }) | |||
// parents.attr('iid', iids) | |||
judgeRideo($(this)) | |||
}) | |||
//是否为其他选项判断 | |||
function judgeRideo(obj) { | |||
var parents = obj.parents('.signSec2Box'); | |||
var inputs = parents.find('.shenInput3'); | |||
if (parents.find("i[flag='true']").hasClass('active')) { | |||
inputs.css({ | |||
display: 'block' | |||
}); | |||
} else { | |||
inputs.css({ | |||
display: 'none' | |||
}).find('input').val(''); | |||
} | |||
} | |||
}, | |||
destroy: function(pageinfo) { | |||
} | |||
}; | |||
return page; | |||
})(); |
@@ -38,12 +38,12 @@ | |||
<div id="ScrapRemindTime"> </div> | |||
</div>*@ | |||
<div class="col-xs-6 lr-form-item" data-table="Ass_AssetsInfoItem"> | |||
<div class="lr-form-item-title">金隅编号</div> | |||
<div class="lr-form-item-title">资产编号</div> | |||
<input id="AICodeNumJY" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-6 lr-form-item" data-table="Ass_AssetsInfoItem"> | |||
<div class="lr-form-item-title">资产名称</div> | |||
<input id="AIASSName" type="text" class="form-control" /> | |||
<div class="lr-form-item-title">资产名称<font face="宋体">*</font></div> | |||
<input id="AIASSName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull"/> | |||
</div> | |||
<div class="col-xs-6 lr-form-item" data-table="Ass_AssetsInfoItem"> | |||
<div class="lr-form-item-title">部门</div> | |||
@@ -22,7 +22,7 @@ | |||
<input id="AICodeNum" readonly="readonly" type="text" class="form-control" isvalid="yes" checkexpession="PositiveFloatint" />*@ | |||
</div> | |||
<div class="col-xs-6 lr-form-item" data-table="Ass_AssetsInfoItem"> | |||
<div class="lr-form-item-title" readonly="readonly">金隅资产编号</div> | |||
<div class="lr-form-item-title" readonly="readonly">资产编号</div> | |||
<input id="AICodeNumJY" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-6 lr-form-item" data-table="Ass_AssetsInfoItem"> | |||
@@ -175,7 +175,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
if (list.Count <= 0) | |||
{ | |||
return Fail("请安排时间"); | |||
return Fail("请安排时间!"); | |||
} | |||
foreach (var entity in list) | |||
@@ -183,12 +183,21 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
DateTime time; | |||
if (!DateTime.TryParse(entity.ExamTimeStart, out time)) | |||
{ | |||
return Fail("结束时间格式不正确!"); | |||
return Fail("开始时间格式不正确!"); | |||
} | |||
if (!DateTime.TryParse(entity.ExamTimeEnd, out time)) | |||
{ | |||
return Fail("结束时间格式不正确!"); | |||
} | |||
var startTime = Convert.ToDateTime(entity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + entity.ExamTimeStart); | |||
var endTime = Convert.ToDateTime(entity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + entity.ExamTimeEnd); | |||
if (endTime <= startTime) | |||
{ | |||
return Fail("结束时间必须大于开始时间!"); | |||
} | |||
//考试时长 | |||
entity.ExamTimeLength = (endTime - startTime).TotalMinutes; | |||
} | |||
exam_ExamPlanIBLL.SavePlanTime(EPId, list); | |||
return Success("保存成功!"); | |||
@@ -269,11 +278,11 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
return Success("操作成功!"); | |||
} | |||
/// <summary> | |||
/// 一键安排班级 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <returns></returns> | |||
[HttpPost] | |||
/// 一键安排班级 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <returns></returns> | |||
[HttpPost] | |||
[AjaxOnly] | |||
public ActionResult PlanClassByEPId(string keyValue) | |||
{ | |||
@@ -286,6 +295,24 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
exam_ExamPlanClassIBLL.PlanClassByEPId(keyValue); | |||
return Success("操作成功!"); | |||
} | |||
/// <summary> | |||
/// 自动生成考试课程排考时间 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <returns></returns> | |||
[HttpPost] | |||
[AjaxOnly] | |||
public ActionResult PlanLessonTimeByEPId(string keyValue) | |||
{ | |||
var count = exam_ExamPlanLessonIBLL.GetListByEPId(keyValue).Count(); | |||
if (count <= 0) | |||
{ | |||
return Fail("请先安排课程!"); | |||
} | |||
exam_ExamPlanLessonIBLL.PlanLessonTimeByEPId(keyValue); | |||
return Success("操作成功!"); | |||
} | |||
#endregion | |||
} | |||
@@ -190,6 +190,21 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}); | |||
//自动生成排考时间 | |||
$('#lr_examlessontime').on('click', | |||
function () { | |||
var keyValue = $('#gridtable').jfGridValue('EPId'); | |||
if (learun.checkrow(keyValue)) { | |||
learun.layerConfirm('是否确认生成排考时间!', function (res) { | |||
if (res) { | |||
learun.postForm(top.$.rootUrl + '/EducationalAdministration/Exam_ExamPlan/PlanLessonTimeByEPId', { keyValue: keyValue }, function () { | |||
refreshGirdData(); | |||
}); | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
@@ -86,17 +86,17 @@ | |||
<div class="btn-group btn-group-sm"> | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
</div> | |||
@*<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<a id="lr_input" class="btn btn-default"><i class="fa fa-edit"> 开始录入</i></a> | |||
<a id="lr_save" class="btn btn-default" style="display:none;"><i class="fa fa-edit"> 提交成绩</i></a> | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_setScale" class="btn btn-default"><i class="fa fa-edit"> 设置成绩比例</i></a> | |||
</div>*@ | |||
</div> | |||
</div> | |||
</div> | |||
@*<div class="scaleRow divRow"> | |||
<div class="scaleRow divRow"> | |||
<span>比例设置:</span> | |||
<span>平时成绩占比 <span id="OrdinaryScoreScale">0</span> %,</span> | |||
<span>期中成绩占比 <span id="TermInScoreScale">0</span> %,</span> | |||
@@ -108,7 +108,7 @@ | |||
<span id="minutes" data-minutes="30"></span>分钟(<span id="seconds" data-seconds="60"></span>秒) | |||
<div id="addMinutesBtn" data-minutes="30">续时</div> | |||
</div> | |||
</div>*@ | |||
</div> | |||
</div> | |||
<div class="lr-layout-body" id="gridtable"></div> | |||
</div> | |||
@@ -17,11 +17,11 @@ namespace Learun.Application.WebApi.Modules | |||
public class EvalApi : BaseApi | |||
{ | |||
public EvalApi() | |||
: base("/learun/adms/eval") | |||
: base("/learun/eval") | |||
{ | |||
Get["/paper"] = GetPaper;// 获取组织机构数据映射表 | |||
Get["/studentlist"] = GetStudentList; | |||
Get["/savepaper"] = SavePaper; | |||
Post["/savepaper"] = SavePaper; | |||
} | |||
private Eval_MainIBLL ask_MainIBLL = new Eval_MainBLL(); | |||
@@ -227,7 +227,7 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
{ | |||
codeNum++; | |||
infoItem.AId = assInfoEntity.AId; | |||
infoItem.AICode = assInfoEntity.ACode + "_" + codeNum.ToString(); | |||
infoItem.AICode = assInfoEntity.ACode + "_" + codeNum.ToString().PadLeft(5, '0'); | |||
infoItem.AICodeNum = codeNum; | |||
} | |||
@@ -301,8 +301,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
Ass_AssetsInfoItem.AISpecification = entity.ASpecification;//规格 | |||
Ass_AssetsInfoItem.AIAssType = entity.AAssType;//属性 | |||
Ass_AssetsInfoItem.AICodeNum = i + 1; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5, '0'); | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5, '0'); | |||
Ass_AssetsInfoItem.AIIStorageId = entity.AIIStorageId; | |||
Ass_AssetsInfoItem.AIIStoragePosition = entity.AIIStoragePosition; | |||
Ass_AssetsInfoItem.AIIsInStorage = true; | |||
@@ -326,8 +326,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
Ass_AssetsInfoItem.AISpecification = entity.ASpecification;//规格 | |||
Ass_AssetsInfoItem.AIAssType = entity.AAssType;//属性 | |||
Ass_AssetsInfoItem.AICodeNum = 1; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5, '0'); | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5, '0'); | |||
Ass_AssetsInfoItem.AIIStorageId = entity.AIIStorageId; | |||
Ass_AssetsInfoItem.AIIStoragePosition = entity.AIIStoragePosition; | |||
Ass_AssetsInfoItem.AIIsInStorage = false; | |||
@@ -351,8 +351,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
Ass_AssetsInfoItem.AISpecification = entity.ASpecification;//规格 | |||
Ass_AssetsInfoItem.AIAssType = entity.AAssType;//属性 | |||
Ass_AssetsInfoItem.AICodeNum = 1; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum; | |||
Ass_AssetsInfoItem.AICode = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5,'0'); | |||
Ass_AssetsInfoItem.AICodeNumJY = entity.ACode + "_" + Ass_AssetsInfoItem.AICodeNum.ToString().PadLeft(5, '0'); | |||
Ass_AssetsInfoItem.AIIStorageId = entity.AIIStorageId; | |||
Ass_AssetsInfoItem.AIIStoragePosition = entity.AIIStoragePosition; | |||
Ass_AssetsInfoItem.AIIsInStorage = entity.AStock > 0; | |||
@@ -320,8 +320,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
insertassinfoitem.Create(); | |||
insertassinfoitem.AId = assinfoitem.AId; | |||
insertassinfoitem.AICodeNum = Ass_AssetsInfoItemMaxNum + 1 + i; | |||
insertassinfoitem.AICode = assinfoitem.ACode + "_" + insertassinfoitem.AICodeNum.ToString(); | |||
insertassinfoitem.AICodeNumJY = assinfoitem.ACode + "_" + insertassinfoitem.AICodeNum.ToString();//金隅编号 | |||
insertassinfoitem.AICode = assinfoitem.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0'); | |||
insertassinfoitem.AICodeNumJY = assinfoitem.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0');//金隅编号 | |||
insertassinfoitem.AIAssValue = assinfoitem.APrice;//价值 | |||
insertassinfoitem.AIUnits = assinfoitem.AUnit;//单位 | |||
insertassinfoitem.AISpecificationtype = assinfoitem.AModel;//型号 | |||
@@ -426,8 +426,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
insertassinfoitem.Create(); | |||
insertassinfoitem.AId = insertAss_AssetsInfo.AId; | |||
insertassinfoitem.AICodeNum = i + 1; | |||
insertassinfoitem.AICode = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString(); | |||
insertassinfoitem.AICodeNumJY = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString(); | |||
insertassinfoitem.AICode = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0'); | |||
insertassinfoitem.AICodeNumJY = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0'); | |||
insertassinfoitem.AIAssValue = assitemapp.AAIPrice;//价值 | |||
insertassinfoitem.AIUnits = assitemapp.AAIUnit;//单位 | |||
insertassinfoitem.AISpecificationtype = assitemapp.AAIModel;//型号 | |||
@@ -489,8 +489,8 @@ namespace Learun.Application.TwoDevelopment.AssetManagementSystem | |||
insertassinfoitem.Create(); | |||
insertassinfoitem.AId = insertAss_AssetsInfo.AId; | |||
insertassinfoitem.AICodeNum = 1; | |||
insertassinfoitem.AICode = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString(); | |||
insertassinfoitem.AICodeNumJY = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString(); | |||
insertassinfoitem.AICode = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0'); | |||
insertassinfoitem.AICodeNumJY = insertAss_AssetsInfo.ACode + "_" + insertassinfoitem.AICodeNum.ToString().PadLeft(5, '0'); | |||
insertassinfoitem.AIAssValue = assitemapp.AAIPrice;//价值 | |||
insertassinfoitem.AIUnits = assitemapp.AAIUnit;//单位 | |||
insertassinfoitem.AISpecificationtype = assitemapp.AAIModel;//型号 | |||
@@ -263,6 +263,26 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
} | |||
public (bool flag, string msg) PlanLessonTimeByEPId(string EPId) | |||
{ | |||
try | |||
{ | |||
return exam_ExamPlanLessonService.PlanLessonTimeByEPId(EPId); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
#endregion | |||
} | |||
@@ -108,6 +108,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
public string AcademicYearNo { get; set; } | |||
[NotMapped] | |||
public string Semester { get; set; } | |||
/// <summary> | |||
/// 考试时长 | |||
/// </summary> | |||
[NotMapped] | |||
public int? ExamLength { get; set; } | |||
#endregion | |||
} | |||
@@ -52,6 +52,8 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// <param name="entity">实体</param> | |||
void SaveEntity(string keyValue, Exam_ExamPlanLessonEntity entity); | |||
(bool flag, string msg) PlanLessonTimeByEPId(string keyValue); | |||
(bool flag, string lessonname) IsExamTimeClash(Exam_ExamPlanLessonEntity entity); | |||
#endregion | |||
@@ -411,6 +411,55 @@ and AcademicYearNo='{exam_ExamPlan.AcademicYearNo}' and Semester='{exam_ExamPlan | |||
} | |||
} | |||
} | |||
/// <summary> | |||
/// 自动生成考试课程排考时间 | |||
/// </summary> | |||
/// <param name="EPId"></param> | |||
/// <returns></returns> | |||
public (bool flag, string msg) PlanLessonTimeByEPId(string EPId) | |||
{ | |||
try | |||
{ | |||
/* | |||
* 1.查询考试记录是否已安排时间 | |||
* 2.查询考试课程的考试时长是否大于0 | |||
* 3.同一时间段内只能一个专业安排一门课程 | |||
*/ | |||
//安排时间数据 | |||
var EPTimeList = this.BaseRepository("CollegeMIS") | |||
.FindList<Exam_ExamPlanTimeEntity>(x => x.EPId == EPId); | |||
if (EPTimeList.Count() <= 0) | |||
{ | |||
return (false, "请先安排考试记录时间!"); | |||
} | |||
//考试课程数据 | |||
var EPLessonList = this.BaseRepository("CollegeMIS") | |||
.FindList<Exam_ExamPlanLessonEntity>($@"select elesson.ExamTime as ExamLength,t.* from Exam_ExamPlanLesson t | |||
join Exam_ExamLesson elesson on t.LessonNo=elesson.LessonNo | |||
where t.EPId='{EPId}'"); | |||
if (EPLessonList.ToList().Exists(x => x.ExamLength == null || x.ExamLength == 0)) | |||
{ | |||
return (false, "请先设置考试课程时长!"); | |||
} | |||
return (true, ""); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
#endregion | |||
} | |||
@@ -40,6 +40,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
[Column("EXAMTIMEEND")] | |||
public string ExamTimeEnd { get; set; } | |||
/// <summary> | |||
/// 考试时长 | |||
/// </summary> | |||
[Column("EXAMTIMELENGTH")] | |||
public double? ExamTimeLength { get; set; } | |||
/// <summary> | |||
/// 排考名称 | |||
/// </summary> | |||
[Column("EXAMTYPE")] | |||