New file |
| | |
| | | /** |
| | | * 系统管理--用户管理的单例对象 |
| | | */ |
| | | 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> '; |
| | | } |
| | | |
| | | 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(); |
| | | }); |