You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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>