44323
2023-09-26 7aa9607492e2c0b70838c53083f5362e49e74f44
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord2.js
New file
@@ -0,0 +1,440 @@
/**
 * 系统管理--用户管理的单例对象
 */
let ClassRecord = {
    id: "managerTable",//表格id
    seItem: null,      //选中的条目
    table: null,
    layerIndex: -1,
    courseList: null
};
/**
 * 初始化表格的列
 */
ClassRecord.initColumn = function () {
    let columns = [
        {field: 'selectItem', radio: true},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '日期', field: 'classDate', align: 'center', valign: 'middle'},
        {title: '请假学员', field: 'registered', align: 'center', valign: 'middle'},
        {title: '实到学员', field: 'actualArrival', align: 'center', valign: 'middle',
            formatter: function (v, row) {
                if (row.absencesNumber === undefined) {
                    return 0;
                } else {
                    return v;
                }
            }
        },
        {title: '未到学员', field: 'nonArrival', align: 'center', valign: 'middle',
            formatter: function (v, row) {
                if (row.absencesNumber === 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()){
        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>' +
            '</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 = 0; 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();
                        RegistrationRecord.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>&nbsp;&nbsp;&nbsp;&nbsp;';
        }
        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();
});