diff --git a/admin-console/src/main/resources/static/js/admin/role/roleData.js b/admin-console/src/main/resources/static/js/admin/role/roleData.js index a5facf37..19857953 100644 --- a/admin-console/src/main/resources/static/js/admin/role/roleData.js +++ b/admin-console/src/main/resources/static/js/admin/role/roleData.js @@ -31,7 +31,7 @@ layui.define([ 'form', 'laydate', 'table','roleApi'], function(exports) { loadDataAccessByRole:function(roleId){ $("#dataAccess").load(Common.ctxPath+"/admin/role/function/dataAccess.do?roleId="+roleId,{},function(){ - form.render(); + `form.render();` form.on('select', function(data){ var dom = data.elem; var fnId = $(dom).data("id"); diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/conf/BeetlConf.java b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BeetlConf.java index fe6387f9..4594c5af 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/conf/BeetlConf.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BeetlConf.java @@ -1,5 +1,6 @@ package com.ibeetl.admin.core.conf; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.ibeetl.admin.core.rbac.DataAccessFactory; import com.ibeetl.admin.core.service.CorePlatformService; @@ -230,6 +231,15 @@ public class BeetlConf { } return null; }); + + //json字符串转数组 + groupTemplate.registerFunction("JsonString", (paras, ctx) -> { + String key = (String)paras[0]; + if(key!=null) { + return JSONObject.parse(key); + } + return new ArrayList<String>(); + }); } }; } diff --git a/admin-core/src/main/resources/static/js/lib.js b/admin-core/src/main/resources/static/js/lib.js index 7892921d..95023c39 100644 --- a/admin-core/src/main/resources/static/js/lib.js +++ b/admin-core/src/main/resources/static/js/lib.js @@ -940,7 +940,7 @@ var Lib = { onchange : function() { // console.log(this.getMarkdown()); //console.log("onchange =>", this, this.id, this.settings, this.state); - if(this.id == "resourcesCompetitionStepQuestion" || this.id == "resourcesTrainingStepQuestion"){ + if(this.id == "resourcesCompetitionStepQuestion" || this.id == "resourcesTrainingStepQuestion" || this.id == "test-editor"){ // console.log(this.getMarkdown()); loadYl(); } @@ -1069,6 +1069,13 @@ var Lib = { } return newStr; }, + chineseNum:function (index,tag) { + let info = ["一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五"]; + if(tag == 1){ + info = ["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳"]; + } + return info[index]; + }, /** * @param this_ 表this * @param cacheList table.cache[] diff --git a/web/src/main/java/com/ibeetl/jlw/web/HandsOnSimulationTasksController.java b/web/src/main/java/com/ibeetl/jlw/web/HandsOnSimulationTasksController.java index 6b1ed5d4..60de2c72 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/HandsOnSimulationTasksController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/HandsOnSimulationTasksController.java @@ -100,7 +100,9 @@ public class HandsOnSimulationTasksController{ public ModelAndView add(Long taskId, Long handsOnId,Long courseInfoId) { ModelAndView view = new ModelAndView("/jlw/handsOnSimulationTasks/add.html"); if(null != taskId){ - HandsOnSimulationTasks handsOnSimulationTasks = handsOnSimulationTasksService.queryById(taskId); + HandsOnSimulationTasksQuery param = new HandsOnSimulationTasksQuery(); + param.setTaskId(taskId); + HandsOnSimulationTasks handsOnSimulationTasks = handsOnSimulationTasksService.getInfo(param); handsOnSimulationTasks.setHandsOnId(handsOnId); view.addObject("handsOnSimulationTasks", handsOnSimulationTasks); }else { diff --git a/web/src/main/resources/static/js/jlw/handsOn/add.js b/web/src/main/resources/static/js/jlw/handsOn/add.js index 783d2853..af401758 100644 --- a/web/src/main/resources/static/js/jlw/handsOn/add.js +++ b/web/src/main/resources/static/js/jlw/handsOn/add.js @@ -1,9 +1,10 @@ -layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], function (exports) { +layui.define(['form', 'laydate', 'table','laytpl','upload','layedit', 'handsOnApi'], function (exports) { var form = layui.form; var handsOnApi = layui.handsOnApi; var index = layui.index; var upload = layui.upload; var layedit = layui.layedit; + var laytpl = layui.laytpl // var editor3 = Lib.editorMd("test-editor"); // editor3.setToolbarAutoFixed(false); layedit.set({ //富文本上传图片 @@ -12,6 +13,10 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func imgUrl:Common.ctxPath } }); + + window.loadList = function (){//重新加载实训任务列表 + getListInfo(); + } var handsOnId = $("input[name='handsOnId']").val(); var courseInfoId_ = $("input[name='courseInfoId_']").val(); if(!$.isEmpty(handsOnId)){ @@ -56,22 +61,19 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func return } //数据集 - var fileName = ""; //文件名 - var imgFile = ""; //文件路径 + var trainingData = []; $("#demoList tr").each(function (i) { - fileName += $(this).find("input[name='fileName']").val(); - imgFile += $(this).find("input[name='imgFile']").val(); - if (i < $("#demoList tr").length - 1) { - fileName += "?"; - imgFile += "?"; - } + var fileName = $(this).find("input[name='fileName']").val(); + var imgFile = $(this).find("input[name='imgFile']").val(); + trainingData.push({ + name:fileName, + url:imgFile + }); }); - if (!$.isEmpty(fileName) && !$.isEmpty(imgFile)) { - $("#addForm input[name='trainingData']").val(imgFile + "||" + fileName); //写入form表单 - } else { - $("#addForm input[name='trainingData']").val(""); //写入form表单 - } var param = $("#addForm").serializeJson(); + if(trainingData.length > 0){ //数据集大于O时 + param.trainingData = JSON.stringify(trainingData); + } param.handsOnRecommend = layedit.getContent(one); handsOnId = $("#addForm input[name='handsOnId']").val(); var url = "/jlw/handsOn/add.json"; @@ -86,8 +88,12 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func }, function () { layer.closeAll("loading"); if (ret.code == 0) { + if ($.isEmpty(handsOnId)) { + $("#addForm input[name='handsOnId']").val(ret.data); //实训ID + $("#handsOnSimulationTasks").show(); + } parent.Lib.tableRefresh(); - Lib.closeFrame(); + // Lib.closeFrame(); } }); }); @@ -103,59 +109,11 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func Lib.getCourseInfo($("select[name='courseChildNode']"), obj.value); }); $(".button_add").click(() => { - if ($.isEmpty(handsOnId)) { - //保存校验 - var courseInfoIds = $("#courseInfoIds").val(); - var courseChildNode = $("select[name='courseChildNode']").val(); - var handsOnName = $("#handsOnName").val(); - var oneContent = layedit.getContent(one); - if ($.isEmpty(courseInfoIds)) { - layer.msg('归属课程必填', {icon: 5}) - return - } - if ($.isEmpty(courseChildNode)) { - layer.msg('归属章节必填', {icon: 5}) - return - } - if ($.isEmpty(handsOnName)) { - layer.msg('案例名称必填', {icon: 5}) - return - } - if ($.isEmpty(oneContent)) { - layer.msg('案例介绍必填', {icon: 5}) - return - } - //数据集 - var fileName = ""; //文件名 - var imgFile = ""; //文件路径 - $("#demoList tr").each(function (i) { - fileName += $(this).find("input[name='fileName']").val(); - imgFile += $(this).find("input[name='imgFile']").val(); - if (i < $("#demoList tr").length - 1) { - fileName += "?"; - imgFile += "?"; - } - }); - if (!$.isEmpty(fileName) && !$.isEmpty(imgFile)) { - $("#addForm input[name='trainingData']").val(imgFile + "||" + fileName); //写入form表单 - } else { - $("#addForm input[name='trainingData']").val(""); //写入form表单 - } - var param = $("#addForm").serializeJson(); - param.handsOnRecommend = layedit.getContent(one); - handsOnId = $("#addForm input[name='handsOnId']").val(); - var url = "/jlw/handsOn/add.json"; - if (!$.isEmpty(handsOnId)) { - url = "/jlw/handsOn/edit.json"; - } - var ret = Common.postAjax(url,param); - if (ret.code == 0) { - handsOnId = ret.data; - $("#addForm input[name='handsOnId']").val(handsOnId) - } + handsOnId = $("#addForm input[name='handsOnId']").val(); + if (!$.isEmpty(handsOnId)){ + var url = "/jlw/handsOnSimulationTasks/add.do?handsOnId="+handsOnId+'&courseInfoId='+courseInfoId_; + Common.openDlg(url); } - var url = "/jlw/handsOnSimulationTasks/add.do?handsOnId="+handsOnId+'&courseInfoId='+courseInfoId_; - Common.openDlg(url,"实训任务管理>新增"); }); //实训任务编辑 $(".bj").click(edit_simu) @@ -163,7 +121,7 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func function edit_simu(){ var taskId = $(this).attr("taskid"); var url = "/jlw/handsOnSimulationTasks/add.do?taskId="+taskId + "&handsOnId="+handsOnId; - Common.openDlg(url,"实训任务管理>编辑"); + Common.openDlg(url,""); } //实训任务删除 $(".sc").click(del_simu) @@ -176,6 +134,21 @@ layui.define(['form', 'laydate', 'table','upload','layedit', 'handsOnApi'], func } $(".uploader-file-cancel").click(function () { $(this).parent().parent().remove() - }) + }); + + function getListInfo(){ //获取 + var ret = Common.postAjax("/api/handsOnSimulationTasks/getPageList.do",{handsOnId:$("#addForm input[name='handsOnId']").val()}) + if (ret.code == 0) { + var getTpl = sc_demo.innerHTML + ,view = document.getElementById('sc_view'); + laytpl(getTpl).render({list:ret.data}, function(html){ + view.innerHTML = html; + $(".bj").unbind(); + $(".sc").unbind(); + $(".bj").click(edit_simu); + $(".sc").click(del_simu); + }); + } + } exports('add', view); }); diff --git a/web/src/main/resources/static/js/jlw/handsOn/index.js b/web/src/main/resources/static/js/jlw/handsOn/index.js index 160acae0..2996775a 100644 --- a/web/src/main/resources/static/js/jlw/handsOn/index.js +++ b/web/src/main/resources/static/js/jlw/handsOn/index.js @@ -3,6 +3,9 @@ layui.define(['form', 'laydate', 'table'], function (exports) { var laydate = layui.laydate; var table = layui.table; var handsOnTable = null; + window.loadList = function (){//重新加载实训任务列表 + console.log("进入了index页面") + } var view = { init: function () { var that = this @@ -153,8 +156,10 @@ layui.define(['form', 'laydate', 'table'], function (exports) { }); }); } else if (obj.event === "addTask") {//添加任务 - var url = "/jlw/handsOn/add.do?handsOnId=" + data.handsOnId+'&sign=1'; - Common.openDlg(url, "课程实训案例管理>新增课程实训案例>添加实训任务"); + // var url = "/jlw/handsOn/add.do?handsOnId=" + data.handsOnId+'&sign=1'; + // Common.openDlg(url, "课程实训案例管理>新增课程实训案例>添加实训任务"); + var url = "/jlw/handsOnSimulationTasks/add.do?handsOnId="+data.handsOnId+'&courseInfoId='+data.courseInfoId; + Common.openDlg(url); }else if (obj.event === "up") { upDrown("1",data.handsOnId); } else if (obj.event === "drown") { diff --git a/web/src/main/resources/static/js/jlw/handsOnSimulationTasks/add.js b/web/src/main/resources/static/js/jlw/handsOnSimulationTasks/add.js index 64a69644..4559e48b 100644 --- a/web/src/main/resources/static/js/jlw/handsOnSimulationTasks/add.js +++ b/web/src/main/resources/static/js/jlw/handsOnSimulationTasks/add.js @@ -1,5 +1,6 @@ -layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', 'upload', 'layedit','layer','table'], function(exports) { +layui.define([ 'form','laytpl', 'laydate', 'table','element','handsOnSimulationTasksApi', 'upload', 'layedit','layer','table'], function(exports) { var form = layui.form; + var laytpl = layui.laytpl; var handsOnSimulationTasksApi = layui.handsOnSimulationTasksApi; var index = layui.index; var element = layui.element, upload = layui.upload, layedit = layui.layedit @@ -11,9 +12,48 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', var resourcesQuestionTable =null; var resourcesQuestionTable1 = null; var selectResourcesQuestion = []; + var tableData4 = []; var resourcesQuestionIds = ""; //选中题目id var courseInfoIds = $("input[name=courseInfoId_1]").val(); + var typeInfo = $("#taskTypeInfo input[name='taskType']:checked").val(); //当前操作的类型 + if (typeInfo == 1){ + $(".progressCss_mp4 .closeInfo").unbind(); + $(".progressCss_mp4 .closeInfo").click(function (){ + $(this).parents(".progressCss_mp4").remove(); + }); + }else if(typeInfo == 2){ + $(".progressCss_ppt .closeInfo").unbind(); + $(".progressCss_ppt .closeInfo").click(function (){ + $(this).parents(".progressCss_ppt").remove(); + });; + }else if(typeInfo == 3){ + getQuestionTotal(); + resourcesQuestionIds = $("input[name='taskList']").val(); //选中的题目ID + }else if(typeInfo == 4){ + if (editor === null) { + editor = Lib.editorMd("test-editor"); + editor.setToolbarAutoFixed(false); + } + $("#tableData4_view .infoTr").each(function (){ + tableData4.push({ + handsOnId:$("#addForm input[name='handsOnId']").val(),//实操ID + handsOnSimulationTasksAssessmentQuestion:$(this).find(".handsOnSimulationTasksAssessmentQuestion").text(), //考核题目 + handsOnSimulationTasksAssessmentAnswer:$(this).find("textarea[name='handsOnSimulationTasksAssessmentAnswer']").val(), //考核答案 + handsOnSimulationTasksAssessmentScore:$(this).find("input[name='handsOnSimulationTasksAssessmentScore']").val(), //考核分值 + }); + }); + getScoreInfo(); + }else if (typeInfo == 5){ + $(".progressCss_file .closeInfo").unbind(); + $(".progressCss_file .closeInfo").click(function (){ + $(this).parents(".progressCss_file").remove(); + }); + } + + window.loadYl = function (){//富文本代码编辑器 产生变化时触发 + yl(); + } // setTimeout(function (){ // editor.init(); @@ -27,19 +67,36 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', ,accept:'video' , progress: function(value) { element.progress('progressBar',value + '%'); + } + ,choose: function(obj){ + $("#mp4Info").append('<div class="progressCss_mp4">\n' + + '<span type="text" class="nameV" style="width: 300px"></span>\n' + + '<span class="mv_m" style="float: right;"></span>\n' + + '<span class="fileUrl" style="display: none;"></span>\n' + + '<div class="layui-progress " lay-showPercent="yes" lay-filter="progressBar" style="margin-top: 15px; width:300px">\n' + + '<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>\n' + + '</div>\n' + + '<span class="closeInfo">X</span>\n' + + '</div>'); }, - choose: function(obj) { + before: function(obj) { obj.preview(function(index, file, result) { //$('input[name="src"]').html(file.name); - $('#nameV').html(file.name); + $('.progressCss_mp4:last .nameV').html(file.name); var size = (file.size/1014).toFixed(1)+'kb'; - $('#mv_m').html(size); + $('.progressCss_mp4:last .mv_m').html(size); }); } ,done: function(res){ //如果上传失败 if(res.code > 0){ return layer.msg('上传失败'); + }else { + $('.progressCss_mp4:last .fileUrl').html(res.data.url); + $(".progressCss_mp4 .closeInfo").unbind(); + $(".progressCss_mp4 .closeInfo").click(function (){ + $(this).parents(".progressCss_mp4").remove(); + }) } //上传成功 } @@ -60,25 +117,36 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', ,exts:'ppt|pps|pptx|ppsx|pot|ppa' , progress: function(value) { element.progress('progressBarPPT',value + '%'); + } + ,choose: function(obj){ + $("#pptInfo").append('<div class="progressCss_ppt">\n' + + '<span type="text" class="nameV" style="width: 300px"></span>\n' + + '<span class="mv_m" style="float: right;"></span>\n' + + '<span class="fileUrl" style="display: none;"></span>\n' + + '<div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarPPT" style="margin-top: 15px; width:300px">\n' + + '<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>\n' + + '</div>\n' + + '<span class="closeInfo">X</span>\n' + + '</div>'); }, - choose: function(obj) { + before: function(obj) { obj.preview(function(index, file, result) { //$('input[name="src"]').html(file.name); - $('#namePPT').html(file.name); + $('.progressCss_ppt:last .nameV').html(file.name); var size = (file.size/1014).toFixed(1)+'kb'; - $('#sizePPT').html(size); - }); - } - ,before: function(obj){ - //预读本地文件示例,不支持ie8 - obj.preview(function(index, file, result){ - $('#test-upload-normal-img').text(file.name ); //图片链接(base64)file.name + $('.progressCss_ppt:last .mv_m').html(size); }); } ,done: function(res){ //如果上传失败 if(res.code > 0){ return layer.msg('上传失败'); + }else { + $('.progressCss_ppt:last .fileUrl').html(res.data.url); + $(".progressCss_ppt .closeInfo").unbind(); + $(".progressCss_ppt .closeInfo").click(function (){ + $(this).parents(".progressCss_ppt").remove(); + }) } //上传成功 } @@ -98,24 +166,35 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', , progress: function(value) { element.progress('progressBarFile',value + '%'); }, - choose: function(obj) { + choose: function(obj){ + $("#fileInfo").append('<div class="progressCss_file">\n' + + '<span type="text" class="nameV" style="width: 300px"></span>\n' + + '<span class="mv_m" style="float: right;"></span>\n' + + '<span class="fileUrl" style="display: none;"></span>\n' + + '<div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarFile" style="margin-top: 15px; width:300px">\n' + + '<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>\n' + + '</div>\n' + + '<span class="closeInfo">X</span>\n' + + '</div>'); + }, + before: function(obj) { obj.preview(function(index, file, result) { //$('input[name="src"]').html(file.name); - $('#nameFile').html(file.name); + $('.progressCss_file:last .nameV').html(file.name); var size = (file.size/1014).toFixed(1)+'kb'; - $('#sizeFile').html(size); - }); - } - ,before: function(obj){ - //预读本地文件示例,不支持ie8 - obj.preview(function(index, file, result){ - $('#test-upload-normal-img').text(file.name ); //图片链接(base64)file.name + $('.progressCss_file:last .mv_m').html(size); }); } ,done: function(res){ //如果上传失败 if(res.code > 0){ return layer.msg('上传失败'); + }else { + $('.progressCss_file:last .fileUrl').html(res.data.url); + $(".progressCss_file .closeInfo").unbind(); + $(".progressCss_file .closeInfo").click(function (){ + $(this).parents(".progressCss_file").remove(); + }); } //上传成功 } @@ -135,6 +214,7 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', , title: '选择题库' ,fixed:false//固定页面后,弹出框随着滚动 , shadeClose: true + ,offset:'30px' , scrollbar: true//滚动条 , content: $("#resourcesQuestionTable_demo") , btn: ['保存','关闭'] @@ -143,7 +223,15 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', Lib.getCourseInfo($("select[name='courseInfoId_1']"), courseInfoIds); } , yes: function (index, layero) { - var ret = Common.getAjax('/jlw/teacherOpenCourseHandsOnSimulationTasks/getObjectiveProblem.do?problemIds='+resourcesQuestionIds); + var ret = Common.getAjax('/jlw/handsOnSimulationTasks/getObjectiveProblem.do?problemIds='+resourcesQuestionIds); + if (ret.length > 0){ + var getTpl = kgtTable_demo.innerHTML + ,view = document.getElementById('kgtTable_view'); + laytpl(getTpl).render({list:ret}, function(html){ + view.innerHTML = html; + getQuestionTotal(); + }); + } layer.close(index); $('#resourcesQuestionTable_demo').hide(); } @@ -223,7 +311,7 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', size: "sms", url: Common.ctxPath + '/jlw/resourcesQuestion/list.json' // 数据接口 , page: Lib.tablePage // 开启分页 - , limit: 4 + , limit: 8 , where: {"courseInfoParentId": courseInfoIds} ,cols: [[ // 表头 { @@ -273,21 +361,146 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', initSubmit:function(){ $("#addButton").click(function(){ form.on('submit(form)', function(){ - var taskId = $("#addForm input[name='taskId']").val(); - if(!$.isEmpty(taskId)){ - handsOnSimulationTasksApi.updateHandsOnSimulationTasks($('#addForm'),function(){ - // parent.window.dataReload(); - Common.success("更新成功"); - Lib.closeFrame(); + var taskId = $("#addForm input[name='taskId']").val(),param = {}, + handsOnId = $("#addForm input[name='handsOnId']").val(); + var taskType = $("#taskTypeInfo input[name='taskType']:checked").val(); //得到当前操作的任务类型 1:观看视频 2:PPT 3:理论测评 4:实操 5:报告撰写 + var key = $("#taskTypeContent .layui-show"); + param.taskTitle = key.find("input[name='taskTitle']").val(); //标题 + param.taskOrder = key.find("input[name='taskOrder']").val(); //顺序 + if ($.isEmpty(param.taskTitle)){ + Common.info("请输入标题!"); + return; + } + if ($.isEmpty(param.taskOrder)){ + Common.info("请输入顺序!"); + return; + } + if (taskType == 1){ //视频 + param.taskScore = key.find("input[name='taskScore']").val(); //分值 + if ($.isEmpty(param.taskScore)){ + Common.info("请输入分值!"); + return; + } + param.assessmentRequirements = key.find("input[name='assessmentRequirements']").val(); //至少观看时长 + param.assessmentTime = key.find("input[name='assessmentTime']").val(); //至少观看时长 + if ($.isEmpty(param.assessmentRequirements)){ + Common.info("请输入至少观看时长!"); + return; + } + if ($.isEmpty(param.assessmentTime)){ + Common.info("请输入间隔多少分钟出现一次弹窗!"); + return; + } + var tasksFile = []; + $("#mp4Info .progressCss_mp4").each(function (){ + tasksFile.push({ + fileName:$(this).find(".nameV").html(), + fileUrl:$(this).find(".fileUrl").html() + }); }); - }else{ - handsOnSimulationTasksApi.addHandsOnSimulationTasks($('#addForm'),function(){ - // parent.window.dataReload(); - Common.success("添加成功"); - Lib.closeFrame(); + if (tasksFile.length <= 0){ + Common.info("请上传视频!"); + return; + } + param.tasksFile = JSON.stringify(tasksFile); + }else if (taskType == 2){ //PPT + param.taskScore = key.find("input[name='taskScore']").val(); //分值 + param.assessmentRequirements = key.find("input[name='assessmentRequirements']").val(); //至少观看时长 + param.assessmentTime = key.find("input[name='assessmentTime']").val(); //至少观看时长 + if ($.isEmpty(param.taskScore)){ + Common.info("请输入分值!"); + return; + } + if ($.isEmpty(param.assessmentRequirements)){ + Common.info("请输入至少观看时长!"); + return; + } + if ($.isEmpty(param.assessmentTime)){ + Common.info("请输入间隔多少分钟出现一次弹窗!"); + return; + } + var tasksFile = []; + $("#pptInfo .progressCss_ppt").each(function (){ + tasksFile.push({ + fileName:$(this).find(".nameV").html(), + fileUrl:$(this).find(".fileUrl").html() + }); }); - } + if (tasksFile.length <= 0){ + Common.info("请上传PPT!"); + return; + } + param.tasksFile = JSON.stringify(tasksFile); + }else if (taskType == 3){ //理论测评 + var tableQuestionData = []; + $("#kgtTable_view .infoTr").each(function (){ + tableQuestionData.push({ + questionType:$(this).find(".questionType").text(), + questionTypeName:$(this).find(".questionTypeName").text(), + questionNum:$(this).find(".questionNum").text(), + questionScore:$(this).find("input[name='questionScore']").val(), + questionTotal:$(this).find(".questionTotal").text(), + }); + }); + if (tableQuestionData.length <= 0){ + Common.info("请选择客观题"); + return; + } + param.taskList = resourcesQuestionIds; + param.taskScore = $(".questionTotalInfo").text(); //分值 + param.handsOnTaskProblemVo = JSON.stringify(tableQuestionData); + }else if (taskType == 4){ //实操 + param.assessmentContent = editor.getMarkdown(); //考核内容 + param.taskScore = $(".scoreInfo").text(); //分值 + if ($.isEmpty(param.assessmentContent)){ + Common.info("请输入考核内容!"); + return; + } + param.handsOnSimulationTasksAssessment = JSON.stringify(tableData4); //考核答案 + }else if (taskType == 5){ //报告撰写 + param.taskScore = key.find("input[name='taskScore']").val(); //分值 + param.assessmentContent = layedit.getContent(one); //获取报告要求 + if ($.isEmpty(param.taskScore)){ + Common.info("请输入分值!"); + return; + } + if ($.isEmpty(param.assessmentContent)){ + Common.info("请输入报告要求!"); + return; + } + var tasksFile = []; + $("#fileInfo .progressCss_file").each(function (){ + tasksFile.push({ + fileName:$(this).find(".nameV").html(), + fileUrl:$(this).find(".fileUrl").html() + }); + }); + if (tasksFile.length <= 0){ + Common.info("请上传报告参考模板!"); + return; + } + param.tasksFile = JSON.stringify(tasksFile); + } + param.taskType = taskType; + param.taskId = taskId; + param.handsOnId = handsOnId; //案例ID + console.log(param); + var url = "/jlw/handsOnSimulationTasks/edit.json"; + if($.isEmpty(taskId)){ + url = "/jlw/handsOnSimulationTasks/add.json"; + } + var ret = Common.postAjax(url,param); + layer.msg(ret.code == 0 ? "操作成功!" : ret.msg, { + offset: ['50%'], + icon: ret.code == 0 ? 1 : 2, + time: 1500 //2秒关闭(如果不配置,默认是3秒) + }, function () { + if (ret.code == 0) { + Lib.closeFrame(); + parent.loadList(); + } + }); }); }); @@ -306,11 +519,70 @@ layui.define([ 'form', 'laydate', 'table','element','handsOnSimulationTasksApi', editor.setToolbarAutoFixed(false); } } - $("input[name='taskTitle']").val(""); - $("input[name='taskScore']").val(""); - $("input[name='taskOrder']").val(""); - $("input[name='assessmentRequirements']").val(""); - $("input[name='assessmentTime']").val(""); + // $("input[name='taskTitle']").val(""); + // $("input[name='taskScore']").val(""); + // $("input[name='taskOrder']").val(""); + // $("input[name='assessmentRequirements']").val(""); + // $("input[name='assessmentTime']").val(""); }); + + //理论测评分值修改 + function getQuestionTotal(){ + $("#kgtTable_view input[name='questionScore']").unbind(); + $("#kgtTable_view input[name='questionScore']").change(function (){ + var questionScore = $(this).val();//当前输入的分值 + var indexInfo = $(this).attr("indexInfo"); //当前操作的位置 + var questionNum = $("#kgtTable_view .questionNum:eq("+indexInfo+")").text(); //题目数量 + $("#kgtTable_view .questionTotal:eq("+indexInfo+")").text((Number(questionScore) * Number(questionNum)).toFixed(2)); //合计 + $(".questionTotalInfo").text(0); + $("#kgtTable_view .questionTotal").each(function (){ + $(".questionTotalInfo").text(Number($(this).text()) + Number($(".questionTotalInfo").text())); + }) + + }); + } + + //实操分值修改 + function getScoreInfo(){ + $("#tableData4_view input[name='handsOnSimulationTasksAssessmentScore']").unbind(); + $("#tableData4_view input[name='handsOnSimulationTasksAssessmentScore']").change(function (){ + var indexInfo = $(this).attr("indexInfo"); //当前操作的位置 + tableData4[indexInfo].handsOnSimulationTasksAssessmentScore = $(this).val(); + var score = 0; + $("#tableData4_view input[name='handsOnSimulationTasksAssessmentScore']").each(function (){ + score = Number(score) + Number($(this).val()); + }) + $("#tableData4_view .scoreInfo").text(score); + }); + $("#tableData4_view textarea[name='handsOnSimulationTasksAssessmentAnswer']").unbind(); + $("#tableData4_view textarea[name='handsOnSimulationTasksAssessmentAnswer']").change(function (){ + var indexInfo = $(this).attr("indexInfo"); //当前操作的位置 + tableData4[indexInfo].handsOnSimulationTasksAssessmentAnswer = $(this).val(); + }); + } + + function yl(){ + var val = editor.getMarkdown(); + if(!$.isEmpty(val) && val.indexOf("[---]") >= 0 ){ + if(tableData4.length > val.split("[---]").length - 1){ + tableData4 = tableData4.slice(0,val.split("[---]").length - 1); + }else if(tableData4.length < val.split("[---]").length - 1){ + tableData4.push({ + handsOnId:$("#addForm input[name='handsOnId']").val(),//实操ID + handsOnSimulationTasksAssessmentQuestion:Lib.chineseNum(tableData4.length,1), //考核题目 + handsOnSimulationTasksAssessmentAnswer:"", //考核答案 + handsOnSimulationTasksAssessmentScore:"", //考核分值 + }) + } + }else{ + tableData4 = []; + } + var getTpl = tableData4_demo.innerHTML + ,view = document.getElementById('tableData4_view'); + laytpl(getTpl).render({list:tableData4}, function(html){ + view.innerHTML = html; + getScoreInfo(); + }); + } exports('add',view); }); diff --git a/web/src/main/resources/templates/jlw/handsOn/add.html b/web/src/main/resources/templates/jlw/handsOn/add.html index 4e433fe0..166d5abe 100644 --- a/web/src/main/resources/templates/jlw/handsOn/add.html +++ b/web/src/main/resources/templates/jlw/handsOn/add.html @@ -35,13 +35,10 @@ </div>--> <div class="layui-row" style="margin: 0 auto;"> <a class="layui-btn layui-btn-primary" id="addButton-cancel" style="margin-bottom: 10px;padding: 0 30px;">返回</a> - <a class="layui-btn bg_button" id="addButton" xx="${sign}" - style="margin-bottom: 10px;padding: 0 28px;${sign!='1'?'':'display: none;'}">确定</a> - <a class="layui-btn bg_button button_add" - style="margin-bottom: 10px;padding: 0 30px;${sign!='1'?'display: none;':''}"><i - class="layui-icon"></i>添加任务</a> + <a class="layui-btn bg_button" id="addButton" + style="margin-bottom: 10px;padding: 0 28px;">确定</a> </div> - <div class="layui-row" style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label"><span class="req">*</span>归属课程:</label> <div class="layui-input-block"> @@ -51,7 +48,7 @@ </div> </div> </div> - <div class="layui-row" style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label"><span class="req">*</span>归属章节:</label> <div class="layui-input-block" style="width: 400px;"> @@ -67,7 +64,7 @@ </div> </div> </div> - <div class="layui-row" style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label"><span class="req">*</span>案例名称:</label> <div class="layui-input-block"> @@ -76,7 +73,7 @@ </div> </div> </div> - <div class="layui-row" style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label"><span class="req">*</span>案例介绍:</label> <div class="layui-input-block"> @@ -88,13 +85,13 @@ </div> </div> - <div class="layui-row" style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">数据集:</label> <div class="layui-input-block"> <!--(多个地址?+|| 逗号隔开)--> - <input name="trainingData" type="hidden" - value="${handsOn.trainingData}"/> +<!-- <input name="trainingData" type="hidden"--> +<!-- value="${handsOn.trainingData}"/>--> <div class="layui-upload"> <div class="uploader-drop" ondragenter="jQuery(this).addClass('uploader-dragover');" ondragend="jQuery(this).removeClass('uploader-dragover');" @@ -125,12 +122,10 @@ </thead> <tbody id="demoList"> <!--#if(handsOn.trainingData != null && handsOn.trainingData != ''){--> - <!--# var files = splitString(handsOn.trainingData,'\\|\\|'); //数据集--> - <!--# var fileUrl = splitString(files[0],'\\?'); //文件路径--> - <!--# var fileName = splitString(files[1],'\\?'); //文件名称 --> - <!--# var i = 0;for(item in fileUrl){ --> + <!--# var files = JsonString(handsOn.trainingData); //数据集--> + <!--# for(item in files){ --> <tr class="uploader-file"> - <td class="uploader-file-name"><a href="/server/${fileUrl[i]}">${fileName[i]}</a></td> + <td class="uploader-file-name"><a href="/server/${item.url}">${item.name}</a></td> <td class="uploader-file-size" style="text-align: center;">-</td> <td class="uploader-file-progress" style="text-align: center;"><span style="color: #73a2f8;">完成</span></td> @@ -139,11 +134,11 @@ <img src="${ctxPath}/plugins/simple-uploader/public/cancel.png" title="Cancel upload"> </span> - <input name="imgFile" type="hidden" title="文件路径" value="${fileUrl[i]}"> - <input name="fileName" type="hidden" title="文件名字" value="${fileName[i]}"> + <input name="imgFile" type="hidden" title="文件路径" value="${item.url}"> + <input name="fileName" type="hidden" title="文件名字" value="${item.name}"> </td> </tr> - <!--# i = i+ 1; } --> + <!--#} --> <!--#}--> </tbody> </table> @@ -152,9 +147,8 @@ </div> </div> </div> - <!--#if(handsOnSimulationTasks != null && handsOnSimulationTasks != ''){--> - <div class="layui-row"> - <div style="${sign!='1'?'':'display: none;'}"> + <div class="layui-row" id="handsOnSimulationTasks" style="${handsOn.handsOnId != null?'':'display: none;'}"> + <div> <label class="layui-form-label">实训任务:</label> <div class="layui-input-block"> <button type="button" class="layui-btn bg_button button_add" style="float: left"><i class="layui-icon"></i> @@ -179,7 +173,22 @@ <th>操作</th> </tr> </thead> - <tbody> + <script id="sc_demo" type="text/html"> + {{# layui.each(d.list, function(index, item){ }} + <tr> + <td>{{item.taskOrder}}</td> + <td>{{item.taskTitle}}</td> + <td>{{item.taskType == '1'?'观看视频':item.taskType == '2'?'观看PPT': item.taskType == + '3'?'理论测评':item.taskType == '4'?'实训操作步骤':item.taskType == '5'?'报告撰写':'其他'}} + </td> + <td>{{item.taskScore}}</td> + <td><a taskid="{{item.taskId}}" class="layui-btn layui-btn-sm bg_button bj">编辑</a> <a + taskid="{{item.taskId}}" style="background-color: red" class="layui-btn layui-btn-sm sc">删除</a> + </td> + </tr> + {{# }); }} + </script> + <tbody id="sc_view"> <!--#if(handsOnSimulationTasks != null && handsOnSimulationTasks != ''){--> <!--# for(item in handsOnSimulationTasks){ --> <tr> @@ -200,22 +209,19 @@ <td colspan="6" class="t_c">暂无实训任务...</td> </tr> <!--#}--> - <tr> - <td colspan="6" style="padding-left: 50px;"> - 合计:<span class="sxzf"></span> - </td> - </tr> +<!-- <tr>--> +<!-- <td colspan="6" style="padding-left: 50px;">--> +<!-- 合计:<span class="sxzf"></span>--> +<!-- </td>--> +<!-- </tr>--> </tbody> </table> </div> </div> </div> - <!--#} --> <!-- 业务对象须有hidden字段,保存delFlag和version字段--> <input type="hidden" name="handsOnId" value="${handsOn.handsOnId}"/> <input type="hidden" name="courseInfoId_" value="${courseInfoId}"/> - - </form> <!--#} --> <script> diff --git a/web/src/main/resources/templates/jlw/handsOnSimulationTasks/add.html b/web/src/main/resources/templates/jlw/handsOnSimulationTasks/add.html index 466f1c49..7d8f46fc 100644 --- a/web/src/main/resources/templates/jlw/handsOnSimulationTasks/add.html +++ b/web/src/main/resources/templates/jlw/handsOnSimulationTasks/add.html @@ -5,12 +5,16 @@ <link rel="stylesheet" href="${ctxPath}/plugins/highlight/styles/a11y-light.min.css" /> <script type="text/javascript" src="${ctxPath}/plugins/highlight/highlight.min.js?v=${jsVer}"></script> <style> - .progressCss{ - width: 300px; + .progressCss_mp4,.progressCss_file,.progressCss_ppt{ + width: 320px; background: #e9e9e9; padding: 14px; + position: relative; + margin-bottom:5px; + } + .closeInfo{ + position: absolute;right: 10px;bottom: 10px;cursor: pointer;color: red; } - #first label { width: 70px; } @@ -33,18 +37,22 @@ <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务类型:</label> - <div class="layui-input-block"> + <div class="layui-input-block" id="taskTypeInfo"> <input type="radio" name="taskType" value="1" title="观看视频" lay-filter="taskType" - ${handsOnSimulationTasks.taskType==1?'checked': - handsOnSimulationTasks.taskType!=2&&handsOnSimulationTasks.taskType!=3&&handsOnSimulationTasks.taskType!=4&&handsOnSimulationTasks.taskType!=5?'checked':''}> + ${handsOnSimulationTasks.taskId !=null?'disabled':''} + ${handsOnSimulationTasks.taskType=='1' || handsOnSimulationTasks.taskType==null?'checked':''}> <input type="radio" name="taskType" value="2" title="观看PPT" lay-filter="taskType" - ${handsOnSimulationTasks.taskType==2?'checked':''}> + ${handsOnSimulationTasks.taskId !=null?'disabled':''} + ${handsOnSimulationTasks.taskType=='2'?'checked':''}> <input type="radio" name="taskType" value="3" title="理论测评" lay-filter="taskType" - ${handsOnSimulationTasks.taskType==3?'checked':''}> + ${handsOnSimulationTasks.taskId !=null?'disabled':''} + ${handsOnSimulationTasks.taskType=='3'?'checked':''}> <input type="radio" name="taskType" value="4" title="实训操作步骤" lay-filter="taskType" - ${handsOnSimulationTasks.taskType==4?'checked':''}> + ${handsOnSimulationTasks.taskId !=null?'disabled':''} + ${handsOnSimulationTasks.taskType=='4'?'checked':''}> <input type="radio" name="taskType" value="5" title="报告撰写" lay-filter="taskType" - ${handsOnSimulationTasks.taskType==5?'checked':''}> + ${handsOnSimulationTasks.taskId !=null?'disabled':''} + ${handsOnSimulationTasks.taskType=='5'?'checked':''}> </div> </div> </div> @@ -56,8 +64,9 @@ <li lay-id="4"></li> <li lay-id="5"></li> </ul> - <div class="layui-tab-content layui-bg-gray"> - <div class="layui-tab-item layui-show"> + <div class="layui-tab-content layui-bg-gray" id="taskTypeContent"> + <!--视频--> + <div taskType="1" class="layui-tab-item ${handsOnSimulationTasks.taskType=='1' || handsOnSimulationTasks.taskType==null?'layui-show':''}"> <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务标题</label> @@ -70,78 +79,63 @@ </div> <div class="layui-row"> <div class="layui-form-item"> - <label class="layui-form-label">任务分值</label> + <label class="layui-form-label">任务顺序</label> <div class="layui-input-block"> - <input type="text" name="taskScore" - value="${handsOnSimulationTasks.taskScore}" + <input type="text" name="taskOrder" + value="${handsOnSimulationTasks.taskOrder}" class="layui-input"> </div> </div> </div> <div class="layui-row"> <div class="layui-form-item"> - <label class="layui-form-label">任务顺序</label> + <label class="layui-form-label">任务分值</label> <div class="layui-input-block"> - <input type="text" name="taskOrder" - value="${handsOnSimulationTasks.taskOrder}" + <input type="text" name="taskScore" + value="${handsOnSimulationTasks.taskScore}" class="layui-input"> </div> </div> </div> <div class="layui-row"> <div class="layui-form-item"> - <div class="layui-inline"> - <label class="layui-form-label">考核要求</label> - <div class="layui-input-block"> - <div class="layui-inline"> - <label class="layui-form-label" style="width: 110px"> - <input type="checkbox" name="assessmentRequirements2" value="男" title="至少观看"> - </label> - <div class="layui-input-inline" style="top: 10px"> - <input type="text" name="assessmentRequirements" - value="${handsOnSimulationTasks.assessmentRequirements}" class="layui-input"> - </div> - <div style="display: inline-block;line-height: 60px;vertical-align: middle;"> - 分钟 - </div> - </div> - <div class="layui-inline"> - <input type="radio" name="assessmentRequirements1" value="女" title="是否弹窗验证是否观看"> - </div> - <div class="layui-inline"> - <label class="layui-form-label" style="width: 220px"> - <input type="checkbox" name="assessmentRequirements2" value="男" title="间隔所少分钟出现一次弹窗"> - </label> - <div class="layui-input-inline" style="top: 10px"> - <input type="text" name="assessmentTime" - value="${handsOnSimulationTasks.assessmentTime}" class="layui-input"> - </div> - <div style="display: inline-block;line-height: 60px;vertical-align: middle;"> - 分钟 - </div> - </div> -<!-- <input type="hidden" id="assessmentRequirements" name="assessmentRequirements"--> -<!-- value="${handsOnSimulationTasks.assessmentRequirements}" class="layui-input">--> + <label class="layui-form-label">考核要求</label> + <div class="layui-input-block"> + <div class="layui-form-label" style="width: 100px">至少观看:</div> + <div class="layui-form-label" style="padding: 0"> + <input type="text" name="assessmentRequirements" value="${handsOnSimulationTasks.assessmentRequirements}" class="layui-input"> + </div> + <div class="layui-form-label" style="width: 100px;text-align:left;">分钟</div> + <div class="layui-form-label" style="width: 180px">间隔多少分钟出现一次弹窗</div> + <div class="layui-form-label" style="padding: 0"> + <input type="text" name="assessmentTime" value="${handsOnSimulationTasks.assessmentTime}" class="layui-input"> </div> + <div class="layui-form-label" style="width: 100px;text-align:left;">分钟</div> </div> </div> </div> <div class="layui-row"> - <div class="layui-form-item" style="margin-left: 20px"> + <div class="layui-form-item"> <div class="layui-form-label">添加视频</div> - <div class="layui-input-block" style="margin-left: 20px"> + <div class="layui-input-block"> <div class="layui-upload"> - <button type="button" class="layui-btn layui-btn-primary layui-font-blue" id="test-upload-normal"><i class="layui-icon"></i>点击添加</button> - <div class="progressCss"> - <span type="text" id="nameV" style="width: 300px"></span> - <span id="mv_m" style="float: right;"></span> - <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBar" - style="margin-top: 15px; width:300px"> - <div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div> - </div> + <button type="button" style="margin-bottom: 10px;" class="layui-btn layui-btn-primary layui-font-blue" id="test-upload-normal"><i class="layui-icon"></i>点击添加</button> + <div id="mp4Info"> + <!--#if(handsOnSimulationTasks.tasksFileList != null){--> + <!--#for(item in handsOnSimulationTasks.tasksFileList){ --> + <div class="progressCss_mp4"> + <span type="text" class="nameV" style="width: 300px">${item.fileName}</span> + <span class="mv_m" style="float: right;"></span> + <span class="fileUrl" style="display: none;">${item.fileUrl}</span> + <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBar" style="margin-top: 15px; width:300px"> + <div class="layui-progress-bar layui-bg-blue" lay-percent="100%"></div> + </div> + <span class="closeInfo">X</span> + </div> + <!--#} --> + <!--#}--> </div> <div class="layui-upload-list"> - <p id="test-upload-demoText"></p> </div> </div> @@ -149,7 +143,8 @@ </div> </div> </div> - <div class="layui-tab-item"> + <!--PPT--> + <div taskType="2" class="layui-tab-item ${handsOnSimulationTasks.taskType=='2'?'layui-show':''}"> <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务标题</label> @@ -162,73 +157,61 @@ </div> <div class="layui-row"> <div class="layui-form-item"> - <label class="layui-form-label">任务分值</label> + <label class="layui-form-label">任务顺序</label> <div class="layui-input-block"> - <input type="text" id="taskScore" name="taskScore" - value="${handsOnSimulationTasks.taskScore}" + <input type="text" id="taskOrder" name="taskOrder" + value="${handsOnSimulationTasks.taskOrder}" class="layui-input"> </div> </div> </div> <div class="layui-row"> <div class="layui-form-item"> - <label class="layui-form-label">任务顺序</label> + <label class="layui-form-label">任务分值</label> <div class="layui-input-block"> - <input type="text" id="taskOrder" name="taskOrder" - value="${handsOnSimulationTasks.taskOrder}" + <input type="text" id="taskScore" name="taskScore" + value="${handsOnSimulationTasks.taskScore}" class="layui-input"> </div> </div> </div> <div class="layui-row"> <div class="layui-form-item"> - <div class="layui-inline"> - <label class="layui-form-label">考核要求</label> - <div class="layui-input-block"> - <div class="layui-inline"> - <label class="layui-form-label" style="width: 110px"> - <input type="radio" name="assessmentRequirements2" value="男" title="至少观看" checked> - </label> - <div class="layui-input-inline" style="top: 10px"> - <input type="text" id="assessmentRequirements" name="assessmentRequirements" - value="${handsOnSimulationTasks.assessmentRequirements}" class="layui-input"> - </div> - <div style="display: inline-block;line-height: 60px;vertical-align: middle;"> - 分钟 - </div> - </div> - <div class="layui-inline"> - <input type="radio" name="assessmentRequirements1" value="女" title="是否弹窗验证是否观看"> - </div> - <div class="layui-inline"> - <label class="layui-form-label" style="width: 220px"> - <input type="radio" name="assessmentRequirements2" value="男" title="间隔多少分钟出现一次弹窗"> - </label> - <div class="layui-input-inline" style="top: 10px"> - <input type="text" id="" name="assessmentTime" - value="${handsOnSimulationTasks.assessmentTime}" class="layui-input"> - </div> - <div style="display: inline-block;line-height: 60px;vertical-align: middle;"> - 分钟 - </div> - </div> + <label class="layui-form-label">考核要求</label> + <div class="layui-input-block"> + <div class="layui-form-label" style="width: 100px">至少观看:</div> + <div class="layui-form-label" style="padding: 0"> + <input type="text" name="assessmentRequirements" value="${handsOnSimulationTasks.assessmentRequirements}" class="layui-input"> + </div> + <div class="layui-form-label" style="width: 100px;text-align:left;">分钟</div> + <div class="layui-form-label" style="width: 180px">间隔多少分钟出现一次弹窗</div> + <div class="layui-form-label" style="padding: 0"> + <input type="text" name="assessmentTime" value="${handsOnSimulationTasks.assessmentTime}" class="layui-input"> </div> + <div class="layui-form-label" style="width: 100px;text-align:left;">分钟</div> </div> </div> </div> <div class="layui-row"> - <div class="layui-form-item" style="margin-left: 20px"> + <div class="layui-form-item"> <div class="layui-form-label">添加文档</div> - <div class="layui-input-block" style="margin-left: 20px"> + <div class="layui-input-block"> <div class="layui-upload"> - <button type="button" class="layui-btn layui-btn-primary layui-font-blue" id="upload-normalPPT"><i class="layui-icon"></i>点击添加</button> - <div class="progressCss"> - <span type="text" id="namePPT" style="width: 300px"></span> - <span id="sizePPT" style="float: right;"></span> - <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarPPT" - style="margin-top: 15px; width:300px"> - <div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div> - </div> + <button type="button" style="margin-bottom: 10px;" class="layui-btn layui-btn-primary layui-font-blue" id="upload-normalPPT"><i class="layui-icon"></i>点击添加</button> + <div id="pptInfo"> + <!--#if(handsOnSimulationTasks.tasksFileList != null){--> + <!--#for(item in handsOnSimulationTasks.tasksFileList){ --> + <div class="progressCss_ppt"> + <span type="text" class="nameV" style="width: 300px">${item.fileName}</span> + <span class="mv_m" style="float: right;"></span> + <span class="fileUrl" style="display: none;">${item.fileUrl}</span> + <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarPPT" style="margin-top: 15px; width:300px"> + <div class="layui-progress-bar layui-bg-blue" lay-percent="100%"></div> + </div> + <span class="closeInfo">X</span> + </div> + <!--#} --> + <!--#}--> </div> <div class="layui-upload-list"> <span class="layui-upload-img" id="test-upload-normal-img"></span> @@ -240,7 +223,8 @@ </div> </div> </div> - <div class="layui-tab-item"> + <!--理论--> + <div taskType="3" class="layui-tab-item ${handsOnSimulationTasks.taskType=='3'?'layui-show':''}"> <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务标题</label> @@ -264,6 +248,7 @@ <div class="layui-row"> <label class="layui-form-label">客观题设置:</label> <div class="layui-input-block"> + <input type="hidden" name="taskList" value="${handsOnSimulationTasks.taskList}"> <button type="button" class="layui-btn bg_button button_add" id="manualProblemSetting1" style="float: left">题库选择 </button> @@ -279,45 +264,78 @@ </colgroup> <thead> <tr> - <th>题型</th> - <th>选题量</th> - <th>分值</th> - <th>合计</th> + <th class="t_c">题型</th> + <th class="t_c">选题量</th> + <th class="t_c">分值</th> + <th class="t_c">合计</th> </tr> </thead> - <tbody> - <tr> - <td>单选题</td> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td>多选题</td> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td>分值</td> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td>合计</td> - <td></td> - <td></td> - <td></td> - </tr> - <tr><td colspan="6" class="t_c">暂无实训任务...</td></tr> + <script type="text/html" id="kgtTable_demo"> + {{# var questionTotalInfo = 0; layui.each(d.list, function(index, item){ questionTotalInfo = questionTotalInfo + Number(item.questionTotal);}} + <tr class="infoTr"> + <td class="t_c"><span class="questionTypeName">{{item.questionTypeName}}</span></td> + <td class="t_c"> + <span class="questionType" style="display: none;">{{item.questionType}}</span> + <span class="questionNum">{{item.questionNum}}</span> + </td> + <td> + <input type="text" onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')" name="questionScore" indexInfo="{{index}}" value="{{item.questionScore}}" class="layui-input"> + </td> + <td class="t_c"> + <span class="questionTotal"> + {{item.questionTotal}} + </span> + </td> + </tr> + {{# if(d.list.length === index + 1){ }} + <tr> + <td colspan="3" style="text-align: right;">合计</td> + <td class="t_c"> + <span class="questionTotalInfo">{{questionTotalInfo}}</span> + </td> + </tr> + {{# } }} + {{# }); }} + {{# if(d.list.length === 0){ }} + <tr><td colspan="6" class="t_c">暂无实训任务...</td></tr> + {{# } }} + </script> + <tbody id="kgtTable_view"> + <!--# var questionTotalInfo = 0;if(handsOnSimulationTasks.handsOnTaskProblemVo != null){--> + <!--# var ii = 0;for(item in handsOnSimulationTasks.handsOnTaskProblemVo){ questionTotalInfo = questionTotalInfo + item.questionTotal; --> + <tr class="infoTr"> + <td class="t_c"><span class="questionTypeName">${item.questionTypeName}</span></td> + <td class="t_c"> + <span class="questionType" style="display: none">${item.questionType}</span> + <span class="questionNum">${item.questionNum}</span> + </td> + <td> + <input type="text" onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')" name="questionScore" indexInfo="${ii}" value="${item.questionScore}" class="layui-input"> + </td> + <td> + <span class="questionTotal"> + ${item.questionTotal} + </span> + </td> + </tr> + <!--# ii ++;} --> + <tr> + <td colspan="3" style="text-align: right;">合计</td> + <td class="t_c"> + <span class="questionTotalInfo">${questionTotalInfo}</span> + </td> + </tr> + <!--#}else{--> + <tr><td colspan="6" class="t_c">暂无实训任务...</td></tr> + <!--#}--> </tbody> </table> </div> </div> </div> </div> - <div class="layui-tab-item"> + <!--实操--> + <div taskType="4" class="layui-tab-item ${handsOnSimulationTasks.taskType=='4'?'layui-show':''}"> <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务标题</label> @@ -339,13 +357,10 @@ </div> </div> <div class="layui-row"> - <div class="layui-form-item"> - <label class="layui-form-label">考核内容:</label> - <div class="layui-input-block"> - <div id="test-editor"> - <textarea - style="display:none;"></textarea> - </div> + <label class="layui-form-label">考核内容:</label> + <div class="layui-input-block"> + <div id="test-editor"> + <textarea style="display:none;">${handsOnSimulationTasks.assessmentContent}</textarea> </div> </div> </div> @@ -356,44 +371,75 @@ </div>--> <div class="layui-row"> <label class="layui-form-label">考核题目:</label> + <div class="layui-input-block" style="line-height: 38px;"> + <span style="color: red;">【注】需要考核的内容用 [---] 替换</span> + </div> + </div> + <div class="layui-row"> + <label class="layui-form-label"></label> <div class="layui-input-block"> <table class="layui-table" style="width: 60%;min-width: 1000px;"> - <colgroup> - <col width="200"> - <col> - <col> - </colgroup> <thead> - <tr> - <th>考核题目</th> - <th>考核答案</th> - <th>分值</th> - </tr> + <tr> + <th class="t_c">考核题目</th> + <th class="t_c">分值</th> + <th class="t_c">考核答案</th> + </tr> </thead> - <tbody> - <tr> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td>总分</td> - <td></td> - <td></td> - <td></td> - </tr> + <script type="text/html" id="tableData4_demo"> + {{# var scoreInfo = 0; layui.each(d.list, function(index, item){ scoreInfo = scoreInfo + Number(item.handsOnSimulationTasksAssessmentScore);}} + <tr class="infoTr"> + <td class="t_c"><span class="handsOnSimulationTasksAssessmentQuestion">{{item.handsOnSimulationTasksAssessmentQuestion}}</span></td> + <td> + <input type="text" onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')" name="handsOnSimulationTasksAssessmentScore" indexInfo="{{index}}" value="{{item.handsOnSimulationTasksAssessmentScore}}" class="layui-input"> + </td> + <td> + <textarea name="handsOnSimulationTasksAssessmentAnswer" indexInfo="{{index}}" class="layui-textarea" >{{item.handsOnSimulationTasksAssessmentAnswer}}</textarea> + </td> + </tr> + {{# if(d.list.length === index + 1){ }} + <tr> + <td class="t_c">合计</td> + <td colspan="2"> + <span class="scoreInfo">{{scoreInfo}}</span> + </td> + </tr> + {{# } }} + {{# }); }} + {{# if(d.list.length === 0){ }} + <tr><td colspan="3" class="t_c">暂无数据</td></tr> + {{# } }} + </script> + <tbody id="tableData4_view"> + <!--# var scoreInfo = 0;if(handsOnSimulationTasks.handsOnSimulationTasksAssessmentList != null){--> + <!--# var oni = 0;for(item in handsOnSimulationTasks.handsOnSimulationTasksAssessmentList){ scoreInfo = scoreInfo + item.handsOnSimulationTasksAssessmentScore; --> + <tr class="infoTr"> + <td class="t_c"><span class="handsOnSimulationTasksAssessmentQuestion">${item.handsOnSimulationTasksAssessmentQuestion}</span></td> + <td> + <input type="text" onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')" name="handsOnSimulationTasksAssessmentScore" indexInfo="${oni}" value="${item.handsOnSimulationTasksAssessmentScore}" class="layui-input"> + </td> + <td> + <textarea name="handsOnSimulationTasksAssessmentAnswer" indexInfo="${oni}" class="layui-textarea" >${item.handsOnSimulationTasksAssessmentAnswer}</textarea> + </td> + </tr> + <!--# oni ++;} --> + <tr> + <td class="t_c">合计</td> + <td colspan="2"> + <span class="scoreInfo">${scoreInfo}</span> + </td> + </tr> + <!--#}else{--> + <tr><td colspan="3" class="t_c">暂无数据</td></tr> + <!--#}--> </tbody> </table> </div> </div> </div> </div> - <div class="layui-tab-item"> + <!--报告撰写--> + <div taskType="5" class="layui-tab-item ${handsOnSimulationTasks.taskType=='5'?'layui-show':''}"> <div class="layui-row"> <div class="layui-form-item"> <label class="layui-form-label">任务标题</label> @@ -420,7 +466,7 @@ <div class="layui-input-block"> <div style="background-color: white"> <!-- <textarea style="display:none;"></textarea>--> - <textarea style="display:none;" id="test-editor1"></textarea> + <textarea style="display:none;" id="test-editor1">${handsOnSimulationTasks.assessmentContent}</textarea> </div> </div> </div> @@ -429,25 +475,32 @@ <div class="layui-form-item"> <label class="layui-form-label">报告分值</label> <div class="layui-input-block"> - <input type="text" name="taskOrder" - value="${handsOnSimulationTasks.taskOrder}" + <input type="text" name="taskScore" + value="${handsOnSimulationTasks.taskScore}" class="layui-input"> </div> </div> </div> <div class="layui-row"> - <div class="layui-form-item" style="margin-left: 20px"> + <div class="layui-form-item"> <div class="layui-form-label">报告参考模板</div> - <div class="layui-input-block" style="margin-left: 20px"> + <div class="layui-input-block"> <div class="layui-upload"> - <button type="button" class="layui-btn layui-btn-primary layui-font-blue" id="upload-normalFile"><i class="layui-icon"></i>点击添加</button> - <div class="progressCss"> - <span type="text" id="nameFile" style="width: 300px"></span> - <span id="sizeFile" style="float: right;"></span> - <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarFile" - style="margin-top: 15px; width:300px"> - <div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div> + <button type="button" style="margin-bottom: 10px;" class="layui-btn layui-btn-primary layui-font-blue" id="upload-normalFile"><i class="layui-icon"></i>点击添加</button> + <div id="fileInfo"> + <!--#if(handsOnSimulationTasks.tasksFileList != null){--> + <!--#for(item in handsOnSimulationTasks.tasksFileList){ --> + <div class="progressCss_file"> + <span type="text" class="nameV" style="width: 300px">${item.fileName}</span> + <span class="mv_m" style="float: right;"></span> + <span class="fileUrl" style="display: none;">${item.fileUrl}</span> + <div class="layui-progress " lay-showPercent="yes" lay-filter="progressBarFile" style="margin-top: 15px; width:300px"> + <div class="layui-progress-bar layui-bg-blue" lay-percent="100%"></div> + </div> + <span class="closeInfo">X</span> </div> + <!--#} --> + <!--#}--> </div> <div class="layui-upload-list"> <img class="layui-upload-img" id="test-upload-normal-img"> @@ -466,7 +519,7 @@ <layui:submitButtons id="addButton" buttonType="" showExamine="2"/> - <div id="resourcesQuestionTable_demo" style="display: none;padding: 20px 50px;"> + <div id="resourcesQuestionTable_demo" style="display: none;padding: 20px 50px;min-height: 400px"> <div class="layui-inline"> <input type="text" name="generalQuestionSettingName" class="layui-input" placeholder="请输入题干名称"> </div> @@ -500,7 +553,7 @@ <!--#} --> <script> layui.use(['add'], function () { - var handsOnSimulationTasksAdd = layui.add + var handsOnSimulationTasksAdd = layui.add; handsOnSimulationTasksAdd.init(); }); </script>