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.
library_manage_system/WebContent/admin/booklist.jsp

227 lines
9.0 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.

<%@page import="net.sf.json.JSONObject"%> // 导入JSON库
<%@page import="java.sql.ResultSet"%> // 导入SQL查询结果类
<%@page import="javabean.JDBCBean"%> // 导入自定义数据库连接类
<%@page import="java.util.Map"%> // 导入Map接口
<%@page import="java.util.HashMap"%> // 导入HashMap类
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> // 设置页面编码为UTF-8
<!DOCTYPE html> <!-- HTML5文档类型声明 -->
<html lang="en"> <!-- 设置页面语言为英文 -->
<head>
<meta charset="UTF-8"> <!-- 设置页面字符集为UTF-8 -->
<title>test</title> <!-- 页面标题 -->
<!-- layui 样式文件 -->
<link rel="stylesheet" href="../public/layui/css/layui.css">
<script src="../public/layui/layui.js"></script> <!-- layui JavaScript文件 -->
<style>
.layui-table, .layui-table-view{
margin-top: 0px; <!-- 设置表格上方的外边距为0 -->
}
</style>
</head>
<body>
<%
JDBCBean libraryDb = new JDBCBean(); // 创建JDBCBean对象用于连接数据库
JDBCBean bookSortDb = new JDBCBean(); // 创建JDBCBean对象用于连接数据库
ResultSet librarySet = null; // 定义ResultSet变量用于存放查询结果
ResultSet bookSortSet = null; // 定义ResultSet变量用于存放查询结果
// 准备sql查询语句
String librarySql = "select * from library"; // 查询所有图书馆信息
String bookSortSql = "select * from book_sort"; // 查询所有书籍分类信息
// 执行查询
librarySet = libraryDb.executeQuery(librarySql); // 执行查询图书馆
bookSortSet = bookSortDb.executeQuery(bookSortSql); // 执行查询书籍分类
// 创建JSON对象
JSONObject libraryJson = new JSONObject(); // 用于存放图书馆数据的JSON对象
JSONObject bookSortJson = new JSONObject(); // 用于存放书籍分类数据的JSON对象
// 遍历查询结果集并将数据加入到JSON对象
// 获取图书馆信息并存入JSON对象
while( librarySet.next() ){
libraryJson.put(librarySet.getString("id"), librarySet.getString("name")); // 将图书馆的id和name加入到JSON对象
}
// 获取书籍分类信息并存入JSON对象
while( bookSortSet.next() ){
bookSortJson.put(bookSortSet.getString("id"), bookSortSet.getString("name")); // 将分类的id和name加入到JSON对象
}
librarySet.close(); // 关闭图书馆查询结果集
libraryDb.close(); // 关闭数据库连接
%>
<!-- 搜索框模板 -->
<script type="text/html" id="search">
<div class="demoTable">
条件搜索:
<div class="layui-inline">
<select id="condition" name="condition" lay-verify="required"> <!-- 条件选择下拉框 -->
<option value=""></option>
<option value="id">ID</option>
<option value="name">书名</option>
<option value="author">作者</option>
<option value="library_id">图书馆</option>
<option value="position">位置</option>
<option value="status">状态</option>
<option value="description">描述</option>
</select>
</div>
<div class="layui-inline">
<input class="layui-input" name="conditionValue" id="conditionValue" autocomplete="off" placeholder="请输入搜索内容"> <!-- 搜索内容输入框 -->
</div>
<button class="layui-btn" data-type="reload" lay-event="search">搜索</button> <!-- 搜索按钮 -->
<button type="button" class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon">添加书籍</i></button> <!-- 添加书籍按钮 -->
</div>
</script>
<!-- 表单 -->
<table id="demo" lay-filter="form"> <!-- 表格渲染容器 -->
</table>
<!-- 操作栏模板 -->
<script type="text/html" id="operateBar">
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="bookBorrowList">查看借阅</a> <!-- 查看借阅历史 -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <!-- 编辑书籍信息 -->
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> <!-- 删除书籍 -->
</script>
<script>
// 图书馆数据转为JSON格式
var libraryJson = <%=libraryJson %> // 获取服务器端传来的图书馆JSON数据
// 书籍分类数据转为JSON格式
var bookSortJson = <%=bookSortJson %> // 获取服务器端传来的书籍分类JSON数据
</script>
<!-- 状态模板 -->
<script type="text/html" id="statusTpl">
{{# if(d.status == 1){ }}
<span style="color:#5FB878;">可借</span> <!-- 状态为1显示可借 -->
{{# } else { }}
借出 <!-- 状态为其他,显示借出 -->
{{# } }}
</script>
<script>
layui.use(['table', 'jquery'],function(){
$ = layui.jquery; // 引入jquery库
var table = layui.table; // 引入layui表格组件
var tableIns = table.render({
elem: '#demo' // 表格容器id
,height: 600 // 表格高度
,url: './bookList' // 数据请求接口
,title: '数据表单' // 表格标题
,toolbar: '#search' // 顶部工具栏
,page: true // 开启分页功能
,cols: [[
{type: 'numbers', width:50, fixed:'left'} // 序号列
,{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'} // ID列
,{field: 'name', title: '书名', width:170, sort: true} // 书名列
,{field: 'author', title: '作者', width: 140, sort: true} // 作者列
,{field: 'library_id', title: '图书馆', width:80, edit: true // 图书馆列,可编辑
,templet: function(d){
return libraryJson[d.library_id]; // 根据图书馆ID从JSON中取出名称
}}
,{field: 'sort_id', title: '分类', width: 80, sort: true, edit:true // 分类列,可编辑
,templet: function(d){
return bookSortJson[d.sort_id]; // 根据分类ID从JSON中取出名称
}}
,{field: 'position', title: '位置', width: 110, sort: true} // 位置列
,{field: 'status', title: '状态', width: 60, templet:'#statusTpl'} // 状态列,使用模板
,{field: 'description', title: '描述', width: 340} // 描述列
,{fixed: 'right', title:'操作', width: 200, align:'center', toolbar: '#operateBar'} // 操作列,使用工具栏模板
]],
});
// 监听表格的编辑事件
table.on('edit(form)', function(obj){ // 表格编辑事件
console.log(obj.value); // 打印修改后的值
console.log(obj.field); // 打印编辑字段名
console.log(obj.data); // 打印所在行数据
});
// 监听操作栏的事件(编辑、删除、查看借阅)
table.on('tool(form)', function(obj){ // 表格工具栏事件
var data = obj.data; // 获取当前行数据
var layEvent = obj.event; // 获取事件名
var tr = obj.tr; // 获取当前行的DOM对象
var id = data.id; // 获取书籍ID
var name = data.name; // 获取书籍名称
if(layEvent === 'del'){ // 删除事件
layer.confirm('真的删除行么', function(index){
layer.close(index); // 关闭确认框
// 向服务器发送删除请求
$.ajax({
url: './bookDel',
method: 'get',
dataType: 'JSON',
data: "id=" +id,
success: function(data){
if(data.code == 0){
layer.msg(data.msg); // 显示删除成功消息
$('.layui-laypage-btn').click(); // 刷新分页
}else{
layer.msg(data.msg); // 显示错误消息
}
}
})
});
} else if(layEvent === 'edit'){ // 编辑事件
// 打开编辑页面
layer.open({
type: 2,
title: "更改信息",
area: ['800px', '600px'],
maxmin: true, // 开启最大化最小化按钮
shadeClose: true,
content: "bookedit.jsp?id="+ id, // 编辑页面
end: function(){
$(".layui-laypage-btn").click(); // 关闭后刷新页面
}
});
}else if(layEvent === 'bookBorrowList') { // 查看借阅历史
// 打开借阅历史页面
layer.open({
title: '书籍借阅历史',
type: 2,
area: ['800px', '600px'],
maxmin: true,
shadeClose: true,
content: "bookborrowlist.jsp?id=" +id +"&name="+name // 借阅历史页面
})
}
});
// 顶部工具栏的事件(搜索、添加书籍)
table.on('toolbar(form)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); // 获取选中的行
var data = obj.data;
switch(obj.event){
// 搜索
case 'search':
var conditionValue = $('#conditionValue'); // 获取搜索框的值
var condition = $('#condition'); // 获取搜索条件
// 重新加载表格数据
tableIns.reload({
where: { // 设置异步请求参数
"condition": condition.val(),
"conditionValue": conditionValue.val()
}
,page: {
curr: 1 // 从第一页开始加载
}
});
break;
// 添加书籍
case 'add':
// 打开添加书籍页面
var addBookLayer = layer.open({
type: 2,
title: "添加书籍",
area: ['800px', '600px'],
maxmin: true, // 开启最大化最小化按钮
shadeClose: true,
content: "bookadd.jsp", // 添加页面
end: function () {
$(".layui-laypage-btn").click(); // 关闭后刷新分页
}
});
layer.full(addBookLayer); // 最大化页面
break;
};
});
});
</script>
</body>
</html>