项目练习要求:
- 数据表结构
图书信息表 BookInfo
字段含义 | 字段名 | 类型 | 是否为空 | 说明 |
图书编号 | bookguid | NVARCHAR(50) | N | 自动生成,不能重复 |
图书名称 | bookname | NVARCHAR(20) | N | 图书名称不能重复 |
图书类别 | booktype | Int | N | 使用下拉列表展示:1、电子科技2、人文生活3、时尚周刊4、艺术鉴赏 |
适合人群 | suitable | Int | N | 使用radioButton展示:1、老年人2、青年人3、儿童 |
入库日期 | buydate | DATE | N | 使用日期控件展示 |
借阅次数 | count | Int | N | 新增图书时,默认为0 |
备注 | remark | TEXT |
| 使用文本域展示 |
借阅管理BorrowInfo
字段含义 | 字段名 | 类型 | 是否为空 | 说明 |
图书名称 | bookname | NVARCHAR(20) | N | 用下拉列表显示图书名称,展示课程名,存入图书编号 |
借阅标识 | useguid | NVARCHAR(50) | N | 自动生成,不能重复 |
借阅人 | borrowperson | NVARCHAR(50) | N |
|
办理人 | handler | NVARCHAR(50) | N |
|
借阅事由 | borrowcause | NVARCHAR(100) | N | 使用文本框展示 |
借阅日期 | borrowdate | DATE |
| 使用日期控件展示 |
归还日期 | returndate | DATE | N | 使用日期控件展示,归还日期不能在借阅日期之前 |
备注 | remark | TEXT |
| 使用文本域展示 |
数据库建表sql:
create table BookInfo(
bookguid VARCHAR(50) PRIMARY key,
bookname VARCHAR(20) not null UNIQUE,
booktype int not null,
suitable int not null,
buydate date not null,
count int not null,
remark text);
create table BorrowInfo(
useguid VARCHAR(50) PRIMARY key,
bookname VARCHAR(20) not null ,
borrowperson VARCHAR(50) not null,
handler VARCHAR(50) not null,
borrowcause VARCHAR(100) not null,
borrowdate date ,
returndate date not null,
remark text);
- 功能描述
具体要求
- 在数据库中按照以上的数据表结构要求,创建相应的数据表
- 需要的页面分别是:
首页
图书信息的新增、图书信息修改和图书信息列表页面
借阅信息的新增和列表页面
- 新增、修改页面采用4列布局,页面整齐,没有滚动条出现
- 日期控件可以使用:mydatepicker97,控件使用请自行搜索使用方法,所有日期必须采用日期控件显示也可以用文本框
首页
显示:图书管理、借阅管理
图书管理
列表:展示所有图书信息
- 显示新增 、删除选中按钮;右侧放置查询条件
- 列表可使用复选框选中行记录,点击删除选中则删除选中记录
- 列表每行记录后,有修改、删除按钮或者链接,点击删除,删除当前行记录,点击修改弹出修改页面
- 如果图书借阅次数大于10,则用红色字体显示,否则使用绿色显示
- 查询条件:可以根据图书类型及入库日期查询
- 分页显示所有记录
新增,要求如下:
- 图书名称前使用下拉列表显示:中心馆、分馆1、分馆2,放置输入框,例如选择中心馆,输入框输入:java开发学习,则数据库存入:中心馆-java开发学习(中间一个减号),图书名称不能重复
- 图书编号总共6位,由字母KC+4位数字编号组成(如KC0001),必须唯一,在新增时自动生成,数字编号自动增长。在修改时,图书编号无法修改
3)入库日期不能在当前日期之后
4)借阅次数默认为0,不可修改,每添加一次借阅信息,借阅次数=原借阅次数+1
修改:
- 修改页面获取原有记录所有值
- 图书名称不允许修改
- 修改完成后点击修改按钮可修改记录
图书借阅管理
借阅信息列表:
- 展示所有借阅信息,
- 显示新增 、删除选中按钮;右侧放置查询条件
- 列表每行记录后,删除按钮或者链接,点击删除,删除当前行记录
- 可以根据图书名称进行查询,查询输入后面的书名(不包含横线前的中心馆等信息),进行模糊匹配
- 列表需显示图书名称,不能显示图书编号
借阅信息新增页面
-
- 使用下拉列表展示所有图书,值字段存入图书编号,文本字段显示图书名称
2)借阅标识总共6位,由字母JY+4位数字编号组成(如JY0001),必须唯一,在新增时自动生成,数字编号自动增长。在修改时,借阅标识无法修改
3)使用日期控件展示借阅日期及归还日期,归还日期不能在借阅日期之前
4)如果所选图书在申请的时间段已经被借阅,则提示重新选择图书信息
5)借阅信息添加成功更新图书信息中的借阅次数字段
1.项目结构
web页面结构
web页面所需要的文件夹目录都是根据miniui拷贝的。
2.
domain层:
根据数据库创建
dao层:只写两个接口:
public interface IbookManage {
/**
* 查看所有的图书信息
* @Title: selectAllBookInfos
* @Description: TODO(查看所有的图书信息,后台分页)
* @param: @return
* @return: List<BookInfo>
* @throws
*/
public List<BookInfo> selectAllBookInfos(int pageindex,int pagesize);
/**
* 根据图书编号删除一本图书信息
* @Title: delonebook
* @Description: TODO(根据图书编号删除一本图书信息)
* @param: @param book
* @param: @return
* @return: boolean
* @throws
*/
public boolean delonebook(BookInfo book);
/**
* 增加一本图书信息
* @Title: addonebook
* @Description: TODO(增加一本图书信息)
* @param: @param book
* @param: @return
* @return: boolean
* @throws
*/
public boolean addonebook(BookInfo book);
/**
* 修改一本图书信息
* @Title: updateonebook
* @Description: TODO( 修改一本图书信息)
* @param: @param book
* @param: @return
* @return: boolean
* @throws
*/
public boolean updateonebook(BookInfo book);
/**
* 查找数据库中最大的图书编号
* @Title: selectmaxbookuid
* @Description: TODO(查找数据库中最大的图书编号)
* @param: @return
* @return: String
* @throws
*/
public String selectmaxbookuid();
/**
* 根据图书名称查找图书信息,需要根据传入的页面分页
* @Title: seloneByname
* @Description: TODO(根据图书名称查找图书信息)
* @param: @param bookInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean seloneByname(BookInfo bookInfo );
/**
* 根据图书类型和入库时间查找图书信息
* @Title: selectOnebytype
* @Description: TODO(根据图书类型和入库时间查找图书信息)
* @param: @param bookInfo
* @param: @return
* @return: List<BookInfo>
* @throws
*/
public List<BookInfo> selectOnebytype(BookInfo bookInfo,int pageindex,int pagesize);
}
public interface IborrowManage {
/**
* 查看所有借阅信息,后台分页
* @Title: selectBorrwinfo
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @return
* @return: List<BorrowInfo>
* @throws
*/
public List<BorrowInfo> selectBorrwinfo(int pageindex,int pagesize);
/**
* 删除选中的借阅信息
* @Title: deloneborrow
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param borrow
* @param: @return
* @return: boolean
* @throws
*/
public boolean deloneborrow(BorrowInfo borrow);
/**
* 添加一条借阅信息
* @Title: addoneborrow
* @Description: TODO(添加一条借阅信息)
* @param: @param borrow
* @param: @return
* @return: boolean
* @throws
*/
public boolean addoneborrow(BorrowInfo borrow);
/**
* 给指定名称的书本增加一次订阅
* @Title: updatebookcount
* @Description: TODO(给指定名称的书本增加一次订阅)
* @param: @param book
* @param: @return
* @return: boolean
* @throws
*/
public boolean updatebookcount(BookInfo book);
/**
* 查找最大的借阅编号
* @Title: selectmaxid
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @return
* @return: String
* @throws
*/
public String selectmaxid();
/**
* 根据图书名称查找借阅信息
* @Title: searchOneborrow
* @Description: TODO(根据图书名称查找借阅信息)
* @param: @param borrowInfo
* @param: @return
* @return: BorrowInfo
* @throws
*/
public List<BorrowInfo> searchOneborrow(BorrowInfo borrowInfo );
/**
* 根据图书名称模糊查询
* @Title: searchborrow
* @Description: TODO(根据图书名称模糊查询)
* @param: @param borrowInfo
* @param: @return
* @return: List<BorrowInfo>
* @throws
*/
public List<BorrowInfo> searchborrow(BorrowInfo borrowInfo,int pageindex,int pagesize);
}
service层:
public interface IbookService {
/**
* 查询所有图书信息
* @Title: showBookInfos
* @Description: TODO( 查询所有图书信息)
* @param: @return
* @return: List<BookInfo>
* @throws
*/
public List<BookInfo> showBookInfos(int pageindex,int pagesize);
/**
* 修改图书信息
* @Title: changeOneBook
* @Description: TODO(修改图书信息)
* @param: @param bookInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean changeOneBook(BookInfo bookInfo);
/**
* 删除指定编号的图书
* @Title: delOneBook
* @Description: TODO(删除指定编号的图书)
* @param: @param bookInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean delOneBook(BookInfo bookInfo);
/**
* 新增一条图书信息
* @Title: addOneBook
* @Description: TODO(新增一条图书信息)
* @param: @param bookInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean addOneBook(BookInfo bookInfo);
/**
*根据图书名称查找图书
* @Title: selOneBook
* @Description: TODO(根据图书名称查找图书)
* @param: @param bookInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean selOneBook(BookInfo bookInfo);
/**
* 根据图书类型和入库时间查找
* @Title: selectbytype
* @Description: TODO(根据图书类型和入库时间查找)
* @param: @param bookInfo
* @param: @return
* @return: List<BookInfo>
* @throws
*/
public List<BookInfo> selectbytype(BookInfo bookInfo,int pageindex,int pagesize);
public interface IborrowService {
/**
* 查看所有的借阅信息
* @Title: shoBorrowInfos
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @return
* @return: List<BorrowInfo>
* @throws
*/
public List<BorrowInfo> shoBorrowInfos(int pageindex,int pagesize);
/**
* 删除一条借阅信息
* @Title: delOneBorrowinfo
* @Description: TODO(删除一条借阅信息)
* @param: @param borrowInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean delOneBorrowinfo(BorrowInfo borrowInfo);
/**
* 新增一条借阅信息
* @Title: addOneBorrowinfo
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param borrowInfo
* @param: @return
* @return: boolean
* @throws
*/
public boolean addOneBorrowinfo(BorrowInfo borrowInfo);
/**
* 根据图书名称查找借阅信息
* @Title: searchOneBorrowinfo
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param borrowInfo
* @param: @return
* @return: BorrowInfo
* @throws
*/
public List<BorrowInfo> searchOneBorrowinfo(BorrowInfo borrowInfo );
/**
* 根据图书名称模糊查询借阅信息
* @Title: searchOneBorro
* @Description: TODO(根据图书名称模糊查询借阅信息)
* @param: @param borrowInfo
* @param: @return
* @return: List<BorrowInfo>
* @throws
*/
public List<BorrowInfo> searchOneBorro(BorrowInfo borrowInfo,int pageindex,int pagesize);
}
action层:
主要就是一个编码过滤器,还有两个处理的控制器
public class Characterfilter implements Filter {
/**
* @Fields encoding : TODO(定义变量接收初始化的值)
*/
private static String encoding;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 设置字符编码链锁
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
// 接收web.xml配置文件中的初始参数
encoding = config.getInitParameter("CharsetEncoding");
}
}
@WebServlet("/bookServlet")
public class bookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
IbookService ibookService = new BookServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
response.setContentType("application/json;charset=UTF-8");
// method=searchallbook查询所有信息
if ("searchallbook".equals(method)) {
String Index = request.getParameter("pageIndex");
String Size = request.getParameter("pageSize");
int pageIndex = 0;
int pageSize = 0;
if (Index != null)
pageIndex = Integer.parseInt(Index);
if (Size != null)
pageSize = Integer.parseInt(Size);
// 对界面上的查询条件进行判断
String booktype = request.getParameter("booktype");
String buydate = request.getParameter("buydate");
if (booktype == null && buydate == null || "".equals(booktype) && "".equals(buydate)) {
// 查询所有
List<BookInfo> bookInfos = ibookService.showBookInfos(pageIndex, pageSize);
List<BookInfo> list = ibookService.showBookInfos(pageIndex, 0);
SendUtil.sendObj(response, bookInfos, list.size());
} else {
// 根据条件查询
BookInfo bookInfo = new BookInfo();
if (!"".equals(booktype) && booktype != null) {
bookInfo.setBooktype(Integer.parseInt(booktype));
}
if (!"".equals(buydate) && buydate != null) {
bookInfo.setBuydate(Date.valueOf(buydate));
}
System.out.println(bookInfo);
if (bookInfo.getBooktype() != 0 || bookInfo.getBuydate() != null) {
List<BookInfo> selectbytype = ibookService.selectbytype(bookInfo, pageIndex, pageSize);
List<BookInfo> list1 = ibookService.selectbytype(bookInfo, pageIndex, 0);
SendUtil.sendObj(response, selectbytype, list1.size());
} else {
List<BookInfo> bookInfos = ibookService.showBookInfos(pageIndex, pageSize);
List<BookInfo> list = ibookService.showBookInfos(pageIndex, 0);
SendUtil.sendObj(response, bookInfos, list.size());
}
}
} else if ("addbook".equals(method)) {
// method=addbook 添加一本图书信息
String data = request.getParameter("data");
BookInfo bookInfo = JSON.parseObject(data, BookInfo.class);
boolean flag = false;
if (bookInfo != null) {
flag = ibookService.addOneBook(bookInfo);
}
SendUtil.sendJson(response, flag);
}
// method=searonebook查看指定名称图书信息是否存在
else if ("searonebook".equals(method)) {
String bookname = request.getParameter("bookname");
BookInfo bookInfo = new BookInfo();
bookInfo.setBookname(bookname);
boolean flag = false;
if (bookInfo != null) {
flag = ibookService.selOneBook(bookInfo);
}
SendUtil.sendJson(response, flag);
}
// method=delonebook 删除一本图书信息
else if ("delonebook".equals(method)) {
String bookguid = request.getParameter("bookguid");
BookInfo bookInfo = new BookInfo();
bookInfo.setBookguid(bookguid);
boolean flag = false;
if (bookInfo != null) {
flag = ibookService.delOneBook(bookInfo);
}
SendUtil.sendJson(response, flag);
} // method=editonebook修改一本图书信息
else if ("editonebook".equals(method)) {
// StringBuffer readJson = SendUtil.readJson(request);
String data = request.getParameter("data");
BookInfo bookInfo = JSON.parseObject(data, BookInfo.class);
boolean flag = false;
if (bookInfo != null) {
flag = ibookService.changeOneBook(bookInfo);
}
SendUtil.sendJson(response, flag);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
@WebServlet("/Showborrow")
public class Showborrow extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Showborrow() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
IborrowService iborrowManage = new BorrowServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
response.setContentType("application/json;charset=UTF-8");
/// Showborrow?method=showall
if ("showall".equals(method)) {
String Index = request.getParameter("pageIndex");
String Size = request.getParameter("pageSize");
int pageIndex = 0;
int pageSize = 0;
if (Index != null)
pageIndex = Integer.parseInt(Index);
if (Size != null)
pageSize = Integer.parseInt(Size);
String bookname = request.getParameter("bookname");
if (bookname == null || "".equals(bookname)) {
// 查看所有借阅信息
List<BorrowInfo> borrwinfo = iborrowManage.shoBorrowInfos(pageIndex, pageSize);
List<BorrowInfo> list = iborrowManage.shoBorrowInfos(pageIndex, 0);
SendUtil.sendObj(response, borrwinfo, list.size());
} else {
// 根据名称查询
System.out.println("查询姓名:"+bookname);
BorrowInfo borrowInfo = new BorrowInfo();
borrowInfo.setBookname(bookname);
List<BorrowInfo> searchborrow = iborrowManage.searchOneBorro(borrowInfo, pageIndex, pageSize);
List<BorrowInfo> list2 = iborrowManage.searchOneBorro(borrowInfo, pageIndex, 0);
SendUtil.sendObj(response, searchborrow, list2.size());
}
} else if ("deloneborrow".equals(method)) {
// ?method=deloneborrow删除一条信息
String parameter = request.getParameter("useguid");
BorrowInfo borrow = new BorrowInfo();
borrow.setUseguid(parameter);
boolean flag = iborrowManage.delOneBorrowinfo(borrow);
SendUtil.sendJson(response, flag);
} else if ("searchdate".equals(method)) {
// method=searchdate 根据图书名称查询借阅信息
String parameter = request.getParameter("bookname");
BorrowInfo borrowInfo = new BorrowInfo();
borrowInfo.setBookname(parameter);
List<BorrowInfo> searchOneborrow = iborrowManage.searchOneBorrowinfo(borrowInfo);
SendUtil.sendObj(response, searchOneborrow, 0);
} else if ("addoneborrow".equals(method)) {
// method=addoneborrow添加一条信息
String parameter = request.getParameter("data");
BorrowInfo object = JSON.parseObject(parameter, BorrowInfo.class);
boolean flag = iborrowManage.addOneBorrowinfo(object);
SendUtil.sendJson(response, flag);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
web.xml配置:
<filter>
<description></description>
<display-name>charact</display-name>
<filter-name>charact</filter-name>
<filter-class>com.epoint.action.Characterfilter</filter-class>
<init-param>
<param-name>CharsetEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charact</filter-name>
<url-pattern>/*</url-pattern>
前端界面主要是使用miniui,这里贴两个查询界面既可以了:(实现了查询功能)
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>查看所有图书信息</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="../css/demo.css" rel="stylesheet" type="text/css" />
<script src="../scripts/boot.js" type="text/javascript"></script>
</head>
<body>
<h1>图书信息</h1>
<div style="width: 100%;">
<div class="mini-toolbar" style="border-bottom: 0; padding: 0px;">
<table style="width: 100%;">
<tr>
<td style="width: 100%;"><a class="mini-button"
iconCls="icon-add" onclick="add()">增加</a> <a class="mini-button"
iconCls="icon-remove" onclick="remove()">删除</a></td>
<td><input id="booktype" emptyText="请选择图书种类"
class="mini-combobox" url="../data/booktype.json" textField="text"
valueField="id" /></td>
<td style="white-space: nowrap;"><input id="buydate"
emptyText="请选择入库日期" class="mini-datepicker" maxDate='new Date()' />
<a class="mini-button" onclick="searchone()">查询</a></td>
</tr>
</table>
</div>
</div>
<div id="datagrid1" class="mini-datagrid"
style="width: 100%; height: 360px;" idField="id" multiSelect="true"
title="查询图书信息" emptyText="您好:系统暂无数据!" sizeList="[5,10]" allowResize="true"
url="../bookServlet?method=searchallbook">
<div property="columns">
<!--<div type="indexcolumn"></div> -->
<div type="checkcolumn"></div>
<div field="bookguid" width="100" headerAlign="center">编号</div>
<div field="bookname" width="200" headerAlign="center">名称</div>
<div field="booktype" width="120" headerAlign="center"
renderer="onbooktyperenderer">图书类别</div>
<div field="suitable" width="60" headerAlign="center"
renderer="onsuitablerenderer">适合人群</div>
<div field="buydate" width="120" headerAlign="center"
renderer="onbuydaterenderer">入库日期</div>
<div field="count" width="50" headerAlign="center"
renderer="oncountrenderer">借阅次数</div>
<div field="remark" width="200" headerAlign="center">备注</div>
<div name="play" width="80" headerAlign="center"
renderer="onplayrenderer">操作</div>
</div>
</div>
<script type="text/javascript">
mini.parse();
var grid = mini.get("datagrid1");
/* getdata(); */
grid.load();
//对表格数据的操作按钮
function onplayrenderer(e) {
var grid = e.sender; //代表了整个表格
var record = e.record; //代表了当前渲染的一行表格数据
var bookguid = record.bookguid; //一条数据的一个属性
var rowIndex = e.rowIndex; //当前行的下标
var s = ' <a class="mini-button" href="javascript:delRow(\''
+ bookguid + '\')" >删除</a> '
+ '<a class="mini-button" href="javascript:editRow(\''
+ rowIndex + '\')" >编辑</a> ';
return s;
}
function onbuydaterenderer(e) {
var value = e.value;
if (value)
return mini.formatDate(new Date(value), 'yyyy-MM-dd');
return "";
}
function onbooktyperenderer(e) {
var value = e.value;
//1、电子科技2、人文生活3、时尚周刊4、艺术鉴赏
if (value == 1) {
return '电子科技';
} else if (value == 2) {
return '人文生活';
} else if (value == 3) {
return '时尚周刊';
} else if (value == 4) {
return '艺术鉴赏';
}
}
function oncountrenderer(e) {
if (e.value > 10) {
e.rowStyle = 'color:red;';
} else {
e.rowStyle = 'color:green;';
}
return e.value
}
function onsuitablerenderer(e) {
var value = e.value;
//1、老年人2、青年人3、儿童
if (value == 1) {
return '老年人';
} else if (value == 2) {
return '青年人';
} else if (value == 3) {
return '儿童';
}
}
function add() {
mini.open({
targetWindow : window, //页面对象。默认是顶级页面。
url : "addbook.html",
title : "新增图书",
width : 700,
height : 400,
ondestroy : function(action) { //关闭时,因为做了添加操作。所以页面数据需要重新请求
grid.load();
}
});
}
function remove() {//删除按钮
console.log("删除选中")
var rows = grid.getSelecteds();
if (rows.length > 0) {
for (var i = 0; i < rows.length; i++) {
delRow(rows[i].bookguid)
}
}
}
function editRow(index) { //修改学生的操作
//根据rowInde获取对象
var grid = mini.get("datagrid1");
var datas = grid.data[index]; //当前选中的对象
mini.open({
targetWindow : window, //页面对象。默认是顶级页面。
url : "editbook.html",
title : "编辑图书信息",
width : 700,
height : 400,
onload : function() {
var iframe = this.getIFrameEl();
var data = {
action : "edit",
data : mini.encode(datas)
}; //传值给子页面
iframe.contentWindow.SetData(data);
},
ondestroy : function(action) { //关闭子窗口需要更新当前数据,防止修改数据
grid.load();
}
})
}
function delRow(bookguid) {
$.ajax({ //给后台处理删除一条成绩信息操作
url : "../bookServlet?method=delonebook",
type : 'post',
data : {
bookguid : bookguid
} , //发送数据
success : function(result) { //成功操作
grid.load();
},
error : function() {
console.log("发送数据失败");
}
})
}
function searchone() {//根据图书类型和入库时间
var booktype = mini.get("booktype").value;
var buydate = mini.get("buydate").value;
grid.load({booktype : booktype,buydate : mini.formatDate (buydate, "yyyy-MM-dd") })
}
</script>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>查看所有借阅信息</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="../css/demo.css" rel="stylesheet" type="text/css" />
<script src="../scripts/boot.js" type="text/javascript"></script>
</head>
<body>
<h1>借阅信息</h1>
<div style="width: 100%;">
<div class="mini-toolbar" style="border-bottom: 0; padding: 0px;">
<table style="width: 100%;">
<tr>
<td style="width: 50%;">
<a class="mini-button" iconCls="icon-add" onclick="add()">增加</a>
<a class="mini-button" iconCls="icon-remove" onclick="remove()">删除</a> </td>
<td style="white-space: nowrap;"><input id="form2"
name="bookname" class="mini-textbox" emptyText="请输入书名"
style="width: 150px;" /> <a
class="mini-button" onclick="searchone()">查询</a></td>
</tr>
</table>
</div>
</div>
<div id="datagrid1" class="mini-datagrid"
style="width: 100%; height: 360px;" idField="id" multiSelect="true"
title="查询借阅信息" emptyText="您好:系统暂无数据!" sizeList="[5,10]"
url="../Showborrow?method=showall" >
<div property="columns">
<!--<div type="indexcolumn"></div> -->
<div type="checkcolumn"></div>
<div field="bookname" width="200" headerAlign="center" >图书名称</div>
<div field="borrowperson" width="60" headerAlign="center" >借出人</div>
<div field="handler" width="60" headerAlign="center" >处理人</div>
<div field="borrowcause" width="120" headerAlign="center" >借阅理由</div>
<div field="borrowdate" width="120" headerAlign="center" renderer="onborrowdaterenderer"
>借出日期</div>
<div field="returndate" width="120" headerAlign="center" renderer="onreturndaterenderer"
>归还日期</div>
<div field="remark" width="180" headerAlign="center"
>备注</div>
<div name="play" width="50" headerAlign="center"
renderer="onplayrenderer">操作</div>
</div>
</div>
<script type="text/javascript">
mini.parse();
var grid = mini.get("datagrid1");
grid.load();
//对表格数据的操作按钮
function onplayrenderer(e) {
var grid = e.sender; //代表了整个表格
var record = e.record; //代表了当前渲染的一行表格数据
var useguid = record.useguid; //一条数据的一个属性
var rowIndex = e.rowIndex; //当前行的下标
var s = '<a class="mini-button" href="javascript:delRow(\''
+ useguid + '\')" >删除</a>';
return s;
}
function onborrowdaterenderer(e) {
var value = e.value;
if (value) return mini.formatDate(new Date(value), 'yyyy-MM-dd');
return "";
}
function onreturndaterenderer(e) {
var value = e.value;
if (value) return mini.formatDate(new Date(value), 'yyyy-MM-dd');
return "";
}
function searchone() {//根据姓名进行模糊查询
// console.log("查询")
var form2 = new mini.Form("#form2");
var datas = form2.getData();
console.log(datas)
grid.load({bookname:datas.bookname});
}
function add() {
mini.open({
targetWindow : window, //页面对象。默认是顶级页面。
url : "addborrow.html",
title : "新增借阅信息",
width : 700,
height : 400,
ondestroy : function(action) { //关闭时,因为做了添加操作。所以页面数据需要重新请求
grid.load();
}
});
}
function remove(){//删除按钮
//console.log("删除选中")
var rows = grid.getSelecteds();
if (rows.length > 0) {
for(var i=0;i<rows.length;i++){
// console.log(rows[i])
delRow(rows[i].useguid)
}
/* grid.removeRows(rows, true); */
}
}
function delRow(useguid) {
$.ajax({ //给后台处理删除一条借阅信息操作
url : "../Showborrow?method=deloneborrow",
type : 'post',
// url:"../data/menu.json",
data : {
useguid : useguid
} , //发送数据
success : function(result) { //成功操作
grid.load();
},
error : function() {
console.log("发送数据失败");
}
})
}
</script>
</body>
</html>
menu.json:
[
{ "id": "user", "text": "菜单"},
{ "id": "editUser", "pid": "user", "text": "图书信息管理", "iconCls": "icon-edit", "url": "../html/showbook.html" } ,
{ "id": "editRight", "pid": "user", "text": "借阅信息管理", "iconCls": "icon-edit", "url": "../html/showborrow.html" }
]
实现界面如下:
图书信息管理界面:
借阅信息管理界面:
其中主要是,在后台使用接收参数的方法时,不能混用,否则会造成数据丢失。