/**
|
* 系统管理--用户管理的单例对象
|
*/
|
let ClassRecord = {
|
id: "managerTable",//表格id
|
seItem: null, //选中的条目
|
table: null,
|
layerIndex: -1,
|
courseList: null
|
};
|
/**
|
* 初始化表格的列
|
*/
|
ClassRecord.initColumn = function () {
|
let columns = [
|
{field: 'selectItem', radio: true},
|
{title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
|
{title: '日期', field: 'classDate', align: 'center', valign: 'middle'},
|
{title: '请假学员', field: 'registered', align: 'center', valign: 'middle',formatter: function (v, row) {
|
if (row.cancelClasses === undefined) {
|
return 0;
|
} else {
|
return v;
|
}
|
}},
|
{title: '实到学员', field: 'actualArrival', align: 'center', valign: 'middle',
|
formatter: function (v, row) {
|
if (row.cancelClasses === undefined) {
|
return 0;
|
} else {
|
return v;
|
}
|
}
|
},
|
{title: '未到学员', field: 'nonArrival', align: 'center', valign: 'middle',
|
formatter: function (v, row) {
|
if (row.cancelClasses === undefined) {
|
return 0;
|
} else {
|
return v;
|
}
|
}
|
},
|
{title: '课后练习', field: 'courseId', align: 'center', valign: 'middle',
|
formatter: function (v) {
|
if (typeof v === "undefined") {
|
return '未布置';
|
} else {
|
return '已布置';
|
}
|
}
|
},
|
{title: '状态', field: 'status', align: 'center', valign: 'middle',
|
formatter: function (v) {
|
switch (v) {
|
case 1:
|
return '未开始';
|
case 2:
|
return '已开始';
|
case 3:
|
return '已结束';
|
case 4:
|
return '已取消';
|
}
|
}
|
},
|
{title: '扣除课时', field: 'deductClassHour', align: 'center', valign: 'middle'},
|
{title: '消课凭证', field: 'cancelClasses', align: 'center', valign: 'middle',
|
formatter: function (v) {
|
if (typeof v === "undefined") {
|
return '未上传';
|
} else {
|
return '已上传';
|
}
|
}
|
},
|
];
|
return columns;
|
};
|
|
/**
|
* 检查是否选中
|
*/
|
ClassRecord.check = function () {
|
let selected = $('#' + this.id).bootstrapTable('getSelections');
|
if (selected.length == 0) {
|
Feng.info("请先选中表格中的某一记录!");
|
return false;
|
} else {
|
ClassRecord.seItem = selected[0];
|
return true;
|
}
|
};
|
|
|
|
/**
|
* 点击修改按钮时
|
* @param userId 管理员id
|
*/
|
ClassRecord.classRecord = function () {
|
if (this.check()) {
|
let index = layer.open({
|
type: 2,
|
title: '查看学员',
|
area: ['100%', '100%'], //宽高
|
fix: false, //不固定
|
maxmin: true,
|
content: Feng.ctxPath + '/coursePackage/openCoursePackageStudent?id=' + this.seItem.id
|
});
|
this.layerIndex = index;
|
}
|
};
|
|
|
|
/**
|
* 删除用户
|
*/
|
ClassRecord.cancelClassSchedule = function () {
|
if (this.check()) {
|
let operation = function(){
|
let ajax = new $ax(Feng.ctxPath + "/coursePackage/cancelClassSchedule", function (res) {
|
if(res.code == 200){
|
Feng.success("取消成功!");
|
ClassRecord.table.refresh();
|
}else{
|
Feng.error(res.msg);
|
}
|
}, function (data) {
|
Feng.error("取消失败!" + data.responseJSON.message + "!");
|
});
|
ajax.set("id", ClassRecord.seItem.id);
|
ajax.start();
|
};
|
|
Feng.confirm("确定取消本次",operation);
|
}
|
};
|
|
|
|
ClassRecord.afterClassExercises = function () {
|
if (this.check()) {
|
var ajax = new $ax(Feng.ctxPath + "/course/queryCourseByType", function (data) {
|
ClassRecord.courseList = data;
|
let htmlStr =
|
'<div class="form-horizontal">' +
|
' <div class="col-sm-11" style="padding: 20px;">' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">视频类型:</label>\n' +
|
' <div class="col-sm-9" style="margin-top: 6px;">\n' +
|
' <span>课后练习</span>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">视频名称:</label>\n' +
|
' <div class="col-sm-9">\n' +
|
' <select class="form-control" id="courseId">' +
|
' <option value="">请选择</option>';
|
for (let i = 0; i < data.length; i++) {
|
htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
|
}
|
htmlStr += ' </select>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">视频封面:</label>\n' +
|
' <div class="col-sm-9">\n' +
|
' <img src="" style="height: 150px;" id="coverDrawing"/>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">视频简介:</label>\n' +
|
' <div class="col-sm-9">\n' +
|
' <textarea class="form-control" id="introduce" style="height: 200px;"></textarea>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">可获得积分:</label>\n' +
|
' <div class="col-sm-9">\n' +
|
' <input class="form-control" id="integral" type="number" min="0">' +
|
' </div>\n' +
|
' </div>' +
|
' </div>' +
|
'</div>';
|
layer.open({
|
type: 1
|
, title: '选择课程'
|
, area: ['50%', '90%']
|
, offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
|
, id: 'layerDemo' //防止重复弹出cge
|
, content: htmlStr
|
, btn: ['保存', '关闭']
|
, btnAlign: 'c' //按钮居中
|
, shade: 0.5 //不显示遮罩
|
, yes: function () {
|
let courseId = $('#courseId').val();
|
let integral = $('#integral').val();
|
if(null == courseId || '' == courseId){
|
Feng.error("请选择有效的课程");
|
return
|
}
|
if(null == integral || '' == integral){
|
Feng.error("请输入有效的积分");
|
return
|
}
|
let ajax = new $ax(Feng.ctxPath + "/coursePackage/afterClassExercises", function (res) {
|
if(res.code == 200){
|
Feng.success("保存成功!");
|
layer.closeAll();
|
RegistrationRecord.table.refresh();
|
}else{
|
Feng.error(res.msg);
|
}
|
}, function (data) {
|
Feng.error("保存失败!" + data.responseJSON.message + "!");
|
});
|
ajax.set("id", ClassRecord.seItem.id);
|
ajax.set("courseId", courseId);
|
ajax.set("integral", integral);
|
ajax.start();
|
},
|
});
|
|
$('#courseId').change(function () {
|
let id = $(this).val();
|
for (let i = 0; i < ClassRecord.courseList.length; i++) {
|
if(ClassRecord.courseList[i].id == id){
|
$('#coverDrawing').attr("src", ClassRecord.courseList[i].coverDrawing);
|
$('#introduce').text(ClassRecord.courseList[i].introduce);
|
}
|
}
|
})
|
|
$('#courseId').val(ClassRecord.seItem.courseId);
|
$('#integral').val(ClassRecord.seItem.integral);
|
|
}, function (data) {
|
Feng.error("获取失败!" + data.responseJSON.message + "!");
|
});
|
ajax.set('type', 1);
|
ajax.start();
|
}
|
};
|
|
|
ClassRecord.cancellationRecord = function(i){
|
if(this.check()){
|
console.log("看看时间")
|
console.log( ClassRecord.seItem.classDate
|
)
|
var timeString = ClassRecord.seItem.classDate;
|
var parts = timeString.split(' '); // 以空格分割字符串
|
var datePart = parts[0]; // 获取日期部分
|
var endTime = parts[1].split('-')[1]; // 获取时间段的结束时间
|
var res=datePart+" "+endTime;
|
console.log("最终结果");
|
console.log(res);
|
// 获取当前时间
|
let now = new Date();
|
// 将指定时间转换为 Date 对象
|
let specifiedTime = new Date(res);
|
// 比较当前时间是否大于指定时间
|
if (now > specifiedTime) {
|
console.log("当前时间大于指定时间");
|
Feng.error("当前课程还未结束,不能上传消课记录")
|
return
|
}
|
let htmlStr =
|
'<div class="form-horizontal">' +
|
' <div class="col-sm-11" style="padding: 20px;">' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-2"></label>'+
|
' <label class="col-sm-8 control-label" style="text-align: left;">课程名称:' + $("#name").text() + '</label>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-2"></label>'+
|
' <label class="col-sm-8 control-label" style="text-align: left;">*上传凭证(请上传小于5张图片):</label>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-2"></label>'+
|
' <div class="col-sm-8" style="min-height: 200px;">\n' +
|
' <div id="cancelClasses"></div>' +
|
' <input type="file" id="file" style="display: none;"/>' +
|
' <button onclick="uploadImgs()" style="width: 60px;padding: 10px; color: white;background-color: #0d8ddb;border-radius: 5px;border: none;bottom: 50%;position: absolute;"> 上传 </button>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-2"></label>'+
|
' <label class="control-label" style="text-align: left;">扣除课时数:</label>\n' +
|
' <input id="deductClassHour" value="'+i+'" type="number" min="0" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">' +
|
' </div>' +
|
' </div>' +
|
'</div>';
|
layer.open({
|
type: 1
|
, title: '上传消课记录'
|
, area: ['80%', '90%']
|
, offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
|
, id: 'layerDemo' //防止重复弹出cge
|
, content: htmlStr
|
, btn: ['保存', '关闭']
|
, btnAlign: 'c' //按钮居中
|
, shade: 0.5 //不显示遮罩
|
, yes: function () {
|
let cancelClasses = $('#cancelClasses').html();
|
let deductClassHour = $('#deductClassHour').val();
|
if(null == cancelClasses || '' == cancelClasses){
|
Feng.error("请上传凭证图片");
|
return
|
}
|
if(null == deductClassHour || '' == deductClassHour){
|
Feng.error("请输入有效的扣除课时数");
|
return
|
}
|
let div_array = $('#cancelClasses').find('div');
|
let str = '';
|
for (let i = 1; i < div_array.length; i++) {
|
let v = $($(div_array[i]).find('img')[0]).attr('src');
|
str += v + ";";
|
}
|
|
let ajax = new $ax(Feng.ctxPath + "/coursePackage/cancellationRecord", function (res) {
|
if(res.code == 200){
|
Feng.success("保存成功!");
|
layer.closeAll();
|
ClassRecord.table.refresh();
|
}else{
|
Feng.error(res.msg);
|
}
|
}, function (data) {
|
Feng.error("保存失败!" + data.responseJSON.message + "!");
|
});
|
ajax.set("id", ClassRecord.seItem.id);
|
ajax.set("cancelClasses", str.substring(0, str.length - 1));
|
ajax.set("deductClassHour", deductClassHour);
|
ajax.start();
|
},
|
});
|
|
$('#file').on('change', function () {
|
var formData = new FormData() //创建一个forData
|
formData.append('file', $('#file')[0].files[0]) //把file添加进去 name命名为img
|
layer.load(); //上传loading
|
$.ajax({
|
url: Feng.ctxPath + '/mgr/uploadImg',
|
data: formData,
|
type: "POST",
|
async: true,
|
cache: false,
|
contentType: false,
|
processData: false,
|
success: function(res) {
|
layer.closeAll('loading'); //关闭loading
|
$('#file').val('');
|
$('#cancelClasses').append('' +
|
'<div style="float: left; margin: 10px; width: 200px;">' +
|
' <i class="fa fa-close" style="font-size:24px;color: red;position: relative;top: 10px;right: -190px" onclick="removeImg(this)"></i>' +
|
' <div style="width: 100%;"><img src="' + res + '" style="width: 100%;"/></div>' +
|
'</div>')
|
}
|
})
|
})
|
}
|
}
|
|
|
ClassRecord.lookCancellationRecord = function(){
|
if(this.check()){
|
if(ClassRecord.seItem.cancelClasses == '' || ClassRecord.seItem.cancelClasses == null){
|
Feng.error("请先上传消课凭证");
|
return
|
}
|
let imgs = ClassRecord.seItem.cancelClasses.split(";");
|
let htmlStr =
|
'<div class="form-horizontal">' +
|
' <div class="col-sm-11" style="padding: 20px;">' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-8 control-label">课程名称:' + $("#name").text() + '</label>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-8 control-label">*上传凭证(请上传小于5张图片):</label>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <div class="col-sm-8" style="min-height: 200px;">\n' +
|
' <div id="cancelClasses">';
|
|
for (let i = 0; i < imgs.length; i++) {
|
htmlStr += '<div><img src="' + imgs[i] + '" style="height: 150px;"/></div> ';
|
}
|
|
htmlStr += '</div>' +
|
' </div>\n' +
|
' </div>' +
|
' <div class="form-group">\n' +
|
' <label class="col-sm-3 control-label">扣除课时数:</label>\n' +
|
' <div class="col-sm-9">\n' +
|
' <input class="form-control" id="deductClassHour" value="' + ClassRecord.seItem.deductClassHour + '" type="number" min="0">' +
|
' </div>\n' +
|
' </div>' +
|
' </div>' +
|
'</div>';
|
layer.open({
|
type: 1
|
, title: '查看消课记录'
|
, area: ['50%', '90%']
|
, offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
|
, id: 'layerDemo' //防止重复弹出cge
|
, content: htmlStr
|
, btnAlign: 'c' //按钮居中
|
, shade: 0.5 //不显示遮罩
|
, yes: function () {
|
},
|
});
|
}
|
}
|
|
ClassRecord.manualReservation = function(){
|
if(this.check()){
|
let index = layer.open({
|
type: 2,
|
title: '手动预约',
|
area: ['100%', '100%'], //宽高
|
fix: false, //不固定
|
maxmin: true,
|
content: Feng.ctxPath + '/coursePackage/openManualReservation?id=' + this.seItem.id
|
});
|
this.layerIndex = index;
|
}
|
}
|
|
function uploadImgs(){
|
let num = $('#cancelClasses>div').length;
|
if(num >= 5){
|
Feng.error("最多只能上传5张图片");
|
return;
|
}
|
$('#file').click();
|
}
|
|
|
function removeImg(e){
|
$(e).parent('div').remove();
|
}
|
|
|
|
|
ClassRecord.resetSearch = function () {
|
ClassRecord.search();
|
}
|
|
ClassRecord.search = function () {
|
let queryData = {};
|
queryData['id'] = $('#id').val();
|
ClassRecord.table.refresh({query: queryData});
|
}
|
|
|
$(function () {
|
let defaultColunms = ClassRecord.initColumn();
|
let table = new BSTable(ClassRecord.id, "/coursePackage/queryClassRecord", defaultColunms);
|
// 设置物理分页server(逻辑分页client)
|
table.setPaginationType("server");
|
table.setQueryParams({
|
id: $('#id').val()
|
})
|
ClassRecord.table = table.init();
|
});
|