实现表格跨页自动分开
@media print
{
.layui-table { page-break-after:auto }
tr { page-break-inside:avoid; page-break-after:auto }
td { page-break-inside:avoid; page-break-after:auto }
thead { display:table-header-group }
tfoot { display:table-footer-group }
}
模板渲染: json 数组嵌套json数组 实现table渲染,同时合并单元格,子任务为空时,设置一个value为空的json字符串,避免subtasks[0]报错
<table class="layui-table" id="subtasks">
<colgroup>
<col width="4%">
<col width="26%">
<col width="27%">
<col width="27%">
<col width="8%">
<col width="8%">
</colgroup>
<tr>
<td rowspan="2" align="center">序号</td>
<td rowspan="2" align="center">教学内容</td>
<td rowspan="2" align="center">子情境/子项目/子任务</td>
<td rowspan="2" align="center">知识、技能内容与要求</td>
<td colspan="2" align="center">参考学时</td>
</tr>
<tr>
<td align="center">理论</td>
<td align="center">实训</td>
</tr>
<tbody id="contents">
</tbody>
</table>
<script type="text/html" id="contentlist">
{{# layui.each(d.list,function(index,item){ }}
<tr>
<td rowspan="{{item.subnum}}" align="center">
{{index + 1}}
</td>
<td rowspan="{{item.subnum}}" align="center">
{{item.content}}
</td>
<td align="center">
{{item.subtasks[0].subtask}}
</td>
<td align="center">
{{item.subtasks[0].demand}}
</td>
<td align="center">
{{item.subtasks[0].theoryHour}}
</td>
<td align="center">
{{item.subtasks[0].practiceHour}}
</td>
</tr>
{{# layui.each(item.subtasks,function(index1,item1){ }}
{{# if(index1>0){ }}
<tr>
<td align="center">
{{item1.subtask}}
</td>
<td align="center">
{{item1.demand}}
</td>
<td align="center">
{{item1.theoryHour}}
</td>
<td align="center">
{{item1.practiceHour}}
</td>
</tr>
{{# } }}
{{# }); }}
{{# }); }}
</script>
var urlsubtask = '/subtask/subTask/list';
var dones = function(success, message, data) {
var subtasks = data.records;
for(var j=0;j<contents.length;j++){
var id = contents[j].id;
var list = new Array();
for(var i=0;i<subtasks.length;i++){
var contentId = subtasks[i].contentId;
if(id==contentId){
list.push(subtasks[i]);
}
}
if(list==''||list==null){
list.push({"subtask":' ',"demand":' ',"theoryHour":' ',"practiceHour":' '});
}
contents[j].subtasks = list;
}
console.log(contents);
var ds = {
'list': contents
};
renderMod(contentlist, 'contents', ds);
}
layui.syReqUtil.sendAjaxByParams(urlsubtask, "GET", {}, dones);
表格里嵌套表格和复杂表头
<tr>
<td colspan="8">
<table class="layui-table" id="subtasks">
<colgroup>
<col width="4%">
<col width="26%">
<col width="27%">
<col width="27%">
<col width="8%">
<col width="8%">
</colgroup>
<tr>
<td rowspan="2" align="center">序号</td>
<td rowspan="2" align="center">教学内容</td>
<td rowspan="2" align="center">子情境/子项目/子任务</td>
<td rowspan="2" align="center">知识、技能内容与要求</td>
<td colspan="2" align="center">参考学时</td>
</tr>
<tr>
<td align="center">理论</td>
<td align="center">实训</td>
</tr>
<tbody id="contents">
</tbody>
</table>
</td>
</tr>
css 绝对定位配合z-index,再也不担心它乱跑了
img
{
position:absolute;
right:36%;
top:0px;
z-index:2;
width: 70px;
height: 70px;
}
代码:
<style type="text/css">
.layui-table td,
.layui-table th {
border: none;
}
#subtasks td {
border: 1px solid #000;
}
#subtasks,
#assess {
margin-top: -10px;
color: #000000;
}
html body {
margin-top: 0;
}
.layui-table tbody tr:hover,
.layui-table thead tr,
.layui-table-click,
.layui-table-header,
.layui-table-hover,
.layui-table-mend,
.layui-table-patch,
.layui-table-tool,
.layui-table[lay-even] tr:nth-child(even) {
background-color: transparent;
}
img
{
position:absolute;
right:36%;
top:0px;
z-index:2;
width: 70px;
height: 70px;
}
@media print
{
.layui-table { page-break-after:auto }
tr { page-break-inside:avoid; page-break-after:auto }
td { page-break-inside:avoid; page-break-after:auto }
thead { display:table-header-group }
tfoot { display:table-footer-group }
}
</style>
<div class="layui-card">
<div style="border-style: none;">
<script type="text/html" template lay-done="layui.data.done(d);">
</script>
<img src="../../../layui-assign/dist/style/images/printBtn.png" id="img" />
<table class="layui-table" style="width:45%;color: #000;margin: auto;" id="all">
<colgroup>
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
<col width="12.5%">
</colgroup>
<tbody id="table">
<tr>
<td colspan="8" align="center" style="border-style:none;font-size: 20px;">
浙江同济科技职业学院<br /> 《<span id="title"></span>》课程标准
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;font-weight: 600;">课程基本信息</td>
</tr>
<tr>
<td style="border: 1px solid #000;" align="center">课程编码</td>
<td colspan="2" style="border: 1px solid #000;" align="center" id="courseNo"></td>
<td style="border: 1px solid #000;" align="center">课程名称</td>
<td style="border: 1px solid #000;" align="center" id="courseName"></td>
<td colspan="2" style="border: 1px solid #000;" align="center">课程性质</td>
<td style="border: 1px solid #000;" align="center" id="courseNature"></td>
</tr>
<tr>
<td style="border: 1px solid #000;" align="center">学分</td>
<td style="border: 1px solid #000;" align="center" id="credit"></td>
<td style="border: 1px solid #000;" align="center">总学时</td>
<td style="border: 1px solid #000;" align="center" id="totalHour"></td>
<td style="border: 1px solid #000;" align="center">理论学时</td>
<td style="border: 1px solid #000;" align="center" id="theoryHour"></td>
<td style="border: 1px solid #000;" align="center">实践学时</td>
<td style="border: 1px solid #000;" align="center" id="practiceHour"></td>
</tr>
<tr>
<td style="border: 1px solid #000;" align="center">适用专业</td>
<td colspan="7" style="border: 1px solid #000;" align="center" id="suitSub"></td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;font-weight: 600;">一、前言</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">1、课程性质</td>
</tr>
<tr>
<td colspan="8" id="natureOverview">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">2、设计思路</td>
</tr>
<tr>
<td colspan="8" id="designIdea">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;font-weight: 600;">
二、课程教学目标
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">1、能力目标</td>
</tr>
<tr>
<td colspan="8" id="abilityGoal">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">2、知识目标</td>
</tr>
<tr>
<td colspan="8" id="knowledgeGoal">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">3、素质目标</td>
</tr>
<tr>
<td colspan="8" id="qualityGoal">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">4、职业资格证书目标(选填)</td>
</tr>
<tr>
<td colspan="8" id="certificateGoal">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;font-weight: 600;">三、课程的主要内容与要求</td>
</tr>
<tr>
<td colspan="8">
课程内容和要求是根据课程目标对本课程主要内容进行设计。请将达到课程目标应当完成的主要教学内容和要求填写在下表中:
</td>
</tr>
<tr>
<td colspan="8">
<table class="layui-table" id="subtasks">
<colgroup>
<col width="4%">
<col width="26%">
<col width="27%">
<col width="27%">
<col width="8%">
<col width="8%">
</colgroup>
<tr>
<td rowspan="2" align="center">序号</td>
<td rowspan="2" align="center">教学内容</td>
<td rowspan="2" align="center">子情境/子项目/子任务</td>
<td rowspan="2" align="center">知识、技能内容与要求</td>
<td colspan="2" align="center">参考学时</td>
</tr>
<tr>
<td align="center">理论</td>
<td align="center">实训</td>
</tr>
<tbody id="contents">
</tbody>
</table>
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;font-weight: 600;">四、课程实施建议</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">1、教材的开发与选用</td>
</tr>
<tr>
<td colspan="8" id="textbookSelection">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">2、教学资源的要求与利用</td>
</tr>
<tr>
<td colspan="8" id="resourceUsage">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">3、教学建议</td>
</tr>
<tr>
<td colspan="8" id="suggest">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 15px;">4、评价方式</td>
</tr>
<tr>
<td colspan="8">
<table class="layui-table" id="assess">
<tr>
<td colspan="8" style="font-size: 14px;">4.1 考核办法与所占权重</td>
</tr>
<tr>
<td colspan="8" id="accessmentMethod">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 14px;">4.2 考核要点与权重分配</td>
</tr>
<tr>
<td colspan="8" id="weightAssignment">
</td>
</tr>
<tr>
<td colspan="8" style="font-size: 14px;">4.3 成绩评定</td>
</tr>
<tr>
<td colspan="8" id="gradeAssess">
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<script type="text/html" id="contentlist">
{{# layui.each(d.list,function(index,item){ }}
<tr>
<td rowspan="{{item.subnum}}" align="center">
{{index + 1}}
</td>
<td rowspan="{{item.subnum}}" align="center">
{{item.content}}
</td>
<td align="center">
{{item.subtasks[0].subtask}}
</td>
<td align="center">
{{item.subtasks[0].demand}}
</td>
<td align="center">
{{item.subtasks[0].theoryHour}}
</td>
<td align="center">
{{item.subtasks[0].practiceHour}}
</td>
</tr>
{{# layui.each(item.subtasks,function(index1,item1){ }}
{{# if(index1>0){ }}
<tr>
<td align="center">
{{item1.subtask}}
</td>
<td align="center">
{{item1.demand}}
</td>
<td align="center">
{{item1.theoryHour}}
</td>
<td align="center">
{{item1.practiceHour}}
</td>
</tr>
{{# } }}
{{# }); }}
{{# }); }}
</script>
<script>
layui.data.done = function(d) {
layui.use(['form', 'syFormUtil', 'syTableUtil', 'syCrudUtil', 'syDialogUtil', 'syTableSelectUtil', 'syCommonUtil', 'laytpl'], function() {
var $ = layui.$;
var laytpl = layui.laytpl;
var form = layui.form;
var urlstr = decodeURI(window.location.href);
var id = urlstr.split("id=")[1];
var url = '/course/courseResult/' + id;
var done = function(success, message, data) {
var abilityGoal= data.abilityGoal;
var accessmentMethod= data.accessmentMethod;
var certificateGoal= data.certificateGoal;
var courseName= data.courseName;
var courseNature= data.courseNature_Text;
var natureOverview = data.natureOverview;
var courseNo= data.courseNo;
var credit= data.credit;
var contents = data.contents;
var designIdea= data.designIdea;
var gradeAssess= data.gradeAssess;
var knowledgeGoal= data.knowledgeGoal;
var practiceHour= data.practiceHour;
var qualityGoal= data.qualityGoal;
var resourceUsage= data.resourceUsage;
var suggest= data.suggest;
var suitSub= data.suitSub_Text;
var textbookSelection= data.textbookSelection;
var theoryHour= data.theoryHour;
var totalHour= data.totalHour;
var weightAssignment= data.weightAssignment;
$("#title").text(courseName);
$("#courseName").text(courseName);
$("#courseNo").text(courseNo);
$("#courseNature").text(courseNature);
$("#credit").text(credit);
$("#totalHour").text(totalHour);
$("#practiceHour").text(practiceHour);
$("#theoryHour").text(theoryHour);
$("#suitSub").text(suitSub);
$("#natureOverview").text(natureOverview);
$("#designIdea").text(designIdea);
$("#abilityGoal").text(abilityGoal);
$("#knowledgeGoal").text(knowledgeGoal);
$("#qualityGoal").text(qualityGoal);
$("#certificateGoal").text(certificateGoal);
$("#textbookSelection").text(textbookSelection);
$("#resourceUsage").text(resourceUsage);
$("#suggest").text(suggest);
$("#accessmentMethod").text(accessmentMethod);
$("#weightAssignment").text(weightAssignment);
$("#gradeAssess").text(gradeAssess);
var urlsubtask = '/subtask/subTask/list';
var dones = function(success, message, data) {
var subtasks = data.records;
for(var j=0;j<contents.length;j++){
var id = contents[j].id;
var list = new Array();
for(var i=0;i<subtasks.length;i++){
var contentId = subtasks[i].contentId;
if(id==contentId){
list.push(subtasks[i]);
}
}
if(list==''||list==null){
list.push({"subtask":' ',"demand":' ',"theoryHour":' ',"practiceHour":' '});
}
contents[j].subtasks = list;
}
console.log(contents);
var ds = {
'list': contents
};
renderMod(contentlist, 'contents', ds);
}
layui.syReqUtil.sendAjaxByParams(urlsubtask, "GET", {}, dones);
}
layui.syReqUtil.sendAjaxByParams(url, 'GET', {}, done);
$('#img').click(function() {
$("#img").hide();
$("#all").css("width","85%");
window.print();
$("#all").css("width","45%");
$("#img").show();
})
function renderMod(sid, id, data) {
var getTpl = sid.innerHTML,
view = document.getElementById(id);
laytpl(getTpl).render(data, function(html) {
view.innerHTML = html;
});
form.render();
}
});
}
</script>