|
|
<!DOCTYPE html>
|
|
|
<html>
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<title>课程(课程类别)管理</title>
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
|
|
<meta name="renderer" content="webkit">
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
|
<meta name="viewport"
|
|
|
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
|
|
<link rel="stylesheet" href="../../static/css/font.css">
|
|
|
<link rel="stylesheet" href="../../static/css/weadmin.css">
|
|
|
<link rel="stylesheet" href="../../lib/layui/css/layui.css">
|
|
|
<script src="../../lib/jquery-1.12.4.min.js"></script>
|
|
|
<script src="../../lib/ztree/jquery.ztree.core-3.5.min.js"></script>
|
|
|
<!--引入tip组件 -->
|
|
|
<link rel="stylesheet" type="text/css" href="../../lib/poshytip/tip-darkgray/tip-darkgray.css"/>
|
|
|
<script type="text/javascript" src="../../lib/poshytip/jquery.poshytip.min.js"></script>
|
|
|
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
|
|
|
<!--[if lt IE 9]>
|
|
|
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
|
|
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
|
|
<![endif]-->
|
|
|
<style>
|
|
|
select {
|
|
|
width: 180px;
|
|
|
height: 38px;
|
|
|
line-height: 38px;
|
|
|
border: 1px solid #ccc;
|
|
|
border-radius: 3px;
|
|
|
font-size: 15px;
|
|
|
padding-left: 6px;
|
|
|
color: #666;
|
|
|
}
|
|
|
|
|
|
ul.log li {
|
|
|
color: #666666;
|
|
|
list-style: none;
|
|
|
padding-left: 10px;
|
|
|
}
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
<div class="weadmin-nav">
|
|
|
<span class="layui-breadcrumb">
|
|
|
<a href="">首页</a>
|
|
|
<a href="">教学基础数据支撑</a>
|
|
|
<a>
|
|
|
<cite>课程(课程类别)管理</cite></a>
|
|
|
</span>
|
|
|
<a class="layui-btn layui-btn-sm" style="line-height:1.6em;margin-top:3px;float:right"
|
|
|
href="javascript:location.reload();" title="刷新">
|
|
|
<i class="layui-icon layui-icon-refresh-3" style="line-height:30px"></i></a>
|
|
|
</div>
|
|
|
<div class="weadmin-body">
|
|
|
<span id="info"></span>
|
|
|
<div class="layui-form-item inline" style="float:right">
|
|
|
<span id="importAcc">
|
|
|
<div class="layui-btn layui-btn-primary" type="button" id="prePage" onclick="prePage();">
|
|
|
<span class="layui-icon layui-icon-shrink-right"></span>返回
|
|
|
</div>
|
|
|
</span>
|
|
|
</div>
|
|
|
<div class="layui-form-item">
|
|
|
<table class="layui-table" lay-filter="idTest" id="idTest"></table>
|
|
|
<script type="text/html" id="barDemo">
|
|
|
{{#if(d.limit_config_count>0){ }}
|
|
|
<a class="layui-btn layui-btn-xs layui-btn layui-btn-primary" lay-event="setXuanXiuLimit">设置选课要求</a>
|
|
|
{{#}else{ }}
|
|
|
<a class="layui-btn layui-btn-xs layui-btn layui-btn-warm" lay-event="setXuanXiuLimit">设置选课要求</a>
|
|
|
{{#} }}
|
|
|
<a class="layui-btn layui-btn-xs layui-btn" lay-event="setCourse">设置课程</a>
|
|
|
</script>
|
|
|
</div>
|
|
|
</div>
|
|
|
<script src="../../lib/layui/layui.js"></script>
|
|
|
<script src="../../lib/layuiExtend.js"></script>
|
|
|
<script src="../../lib/JqueryExtend.js"></script>
|
|
|
<script src="../../lib/template.js"></script>
|
|
|
<script src="../../lib/base64.js"></script>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
layui.extend({
|
|
|
admin: '{/}../../static/js/admin'
|
|
|
});
|
|
|
layui.use(['form', 'jquery', 'laytpl', 'admin', 'layer', 'table'], function () {
|
|
|
var form = layui.form,
|
|
|
$ = layui.jquery,
|
|
|
admin = layui.admin,
|
|
|
layer = layui.layer,
|
|
|
table = layui.table,
|
|
|
laytpl = layui.laytpl;
|
|
|
|
|
|
//用来保存返回前一页时定位的数据
|
|
|
var rule_id = GetQueryString("rule_id");
|
|
|
var entry_year = GetQueryString("entry_year");
|
|
|
var zhuanye_code = GetQueryString("zhuanye_code");
|
|
|
var length = GetQueryString("length");
|
|
|
var is_checked = GetQueryString("is_checked");
|
|
|
//显示本页的提示信息
|
|
|
var flag=GetQueryString("flag");
|
|
|
//返回时的名称
|
|
|
var rule_name = decode64(GetQueryString("rule_name"));
|
|
|
$("#info").text("正在为规则:“" + rule_name + "” 设置课程信息");
|
|
|
|
|
|
//返回并定位
|
|
|
window.prePage = function () {
|
|
|
window.location.href = "ruleList.html?entry_year=" + entry_year + "&zhuanye_code=" + zhuanye_code+"&flag="+flag;
|
|
|
};
|
|
|
|
|
|
// 绑定课程类别
|
|
|
window.bindModule = function () {
|
|
|
table.render({
|
|
|
elem: '#idTest',
|
|
|
url: '/baseService/teachbase/getModuleListByRuleId?rule_id=' + rule_id,
|
|
|
even: true,
|
|
|
cols: [[
|
|
|
{field: 'first_level_module_id', title: '序号', align: 'center', type: 'numbers', width: 80}
|
|
|
, {field: 'first_level_module_name', title: '一级课程类别名称', align: 'center', width: 240}
|
|
|
, {field: 'second_level_module_name', title: '二级课程类别名称', align: 'center', width: 240}
|
|
|
, {field: 'second_level_module_count', title: '课程数量', align: 'center', width: 120}
|
|
|
, {field: 'second_level_credit_hours', title: '学时', align: 'center', width: 120}
|
|
|
, {field: 'second_level_credit_points', title: '学分', align: 'center', width: 120}
|
|
|
, {field: 'lowest_points', title: '最低学分', align: 'center', edit: 'text', width: 120}
|
|
|
, {
|
|
|
field: 'required_course_lowest_points',
|
|
|
title: '最低必修学分',
|
|
|
align: 'center',
|
|
|
edit: 'text',
|
|
|
width: 120
|
|
|
}
|
|
|
,{field: 'memo', title: '说明', align: 'center', edit: 'text'}
|
|
|
, {field: 'limit_config_count', title: '已配置学期数量', align: 'center'}
|
|
|
, {fixed: 'right', title: '操作', toolbar: '#barDemo', align: 'center', width: 240}
|
|
|
]]
|
|
|
, page: false
|
|
|
, height: 'full'
|
|
|
, done: function (res, curr, count) {
|
|
|
//合并
|
|
|
merge(res);
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
//绑定课程类别
|
|
|
bindModule();
|
|
|
|
|
|
table.on('tool(idTest)', function (obj) {
|
|
|
var data = obj.data;
|
|
|
//设置课程
|
|
|
if (obj.event === "setCourse") {
|
|
|
//设置课程类别课程
|
|
|
var url = './RuleSetcourse.html?rule_id=' + rule_id + '&length=' + length + '&entry_year=' + entry_year + "&zhuanye_code="
|
|
|
+ zhuanye_code + "&rule_name=" + encode64(rule_name) + "&first_level_module_id=" + data.first_level_module_id
|
|
|
+ "&second_level_module_id=" + data.second_level_module_id + "&is_checked=" + is_checked
|
|
|
+ "&first_level_module_name=" + encode64(data.first_level_module_name) + "&second_level_module_name=" + encode64(data.second_level_module_name)+"&flag="+flag;
|
|
|
window.location.href = url;
|
|
|
}
|
|
|
;
|
|
|
//设置选修课限制
|
|
|
if (obj.event === 'setXuanXiuLimit') {
|
|
|
var second_level_module_id = data.second_level_module_id;
|
|
|
var height = 450;
|
|
|
if (length === '5') {
|
|
|
height += 4 * 50;
|
|
|
}
|
|
|
WeAdminShow("正在为" + data.second_level_module_name + '修改选修课规则', './courseModuleXuanXiuUpdate.html?rule_id=' +
|
|
|
rule_id + "&second_level_module_id=" + second_level_module_id + "&length=" + length + "&is_checked=" + is_checked, 520, 450);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
|
|
|
//监听单元格编辑
|
|
|
table.on('edit(idTest)', function (obj) {
|
|
|
var value = obj.value //得到修改后的值
|
|
|
, data = obj.data //得到所在行所有键值
|
|
|
, field = obj.field; //得到字段
|
|
|
var second_level_module_id=data.second_level_module_id;
|
|
|
console.log(second_level_module_id);
|
|
|
//1、是不是大于零的数字
|
|
|
var is_legal = false;
|
|
|
if (field === 'memo') {
|
|
|
is_legal = true;
|
|
|
}
|
|
|
if (field != 'memo' && ((!(isNaN(obj.value)) && (obj.value) >= 0) || (obj.value == ''))) {
|
|
|
is_legal = true;
|
|
|
}
|
|
|
//2、是不是检查通过
|
|
|
if (is_legal) {
|
|
|
//保存
|
|
|
var second_level_module_id = data.second_level_module_id;
|
|
|
var d = {
|
|
|
"rule_id": rule_id,
|
|
|
"second_level_module_id": second_level_module_id,
|
|
|
"field": field,
|
|
|
"value": value
|
|
|
};
|
|
|
$.ajax({
|
|
|
type: "POST",
|
|
|
dataType: "json",
|
|
|
async: false,
|
|
|
data: d,
|
|
|
url: "/baseService/teachbase/saveRuleSubModuleInfo",
|
|
|
success: function (d) {
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
//如果合法就保存,如果不合法,就回到原来的值
|
|
|
var tips = '请正确输入学分!';
|
|
|
layer.msg(tips, {icon: 2, time: 3000}, function () {
|
|
|
//恢复旧数据
|
|
|
var tableBak = table.cache['idTest'];
|
|
|
table.reload('idTest', {
|
|
|
data: tableBak
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
//合并行
|
|
|
function merge(res) {
|
|
|
var data = res.data;
|
|
|
var mergeIndex = 0;//定位需要添加合并属性的行数
|
|
|
var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数
|
|
|
var columsName = ['first_level_module_name'];//需要合并的列名称
|
|
|
var columsIndex = [1];//需要合并的列索引值
|
|
|
for (var k = 0; k < columsName.length; k++) { //这里循环所有要合并的列
|
|
|
var trArr = $(".layui-table-body>.layui-table").find("tr");//所有行
|
|
|
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
|
|
|
var tdCurArr = trArr.eq(i).find("td").eq(columsIndex[k]);//获取当前行的当前列
|
|
|
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[k]);//获取相同列的第一列
|
|
|
// 合并遵守行一列的限制
|
|
|
if (data[i][columsName[k]] === data[i - 1][columsName[k]] && data[i]['first_level_module_name'] === data[i - 1]['first_level_module_name']) {
|
|
|
//后一行的值与前一行的值做比较,相同就需要合并
|
|
|
mark += 1;
|
|
|
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
|
|
|
$(this).attr("rowspan", mark);
|
|
|
});
|
|
|
tdCurArr.each(function () {//当前行隐藏
|
|
|
$(this).css("display", "none");
|
|
|
});
|
|
|
} else {
|
|
|
mergeIndex = i;
|
|
|
mark = 1;//一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算
|
|
|
}
|
|
|
}
|
|
|
mergeIndex = 0;
|
|
|
mark = 1;
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
</script>
|
|
|
</body>
|
|
|
</html> |