<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表</title>
</head>
<script type="text/javascript">
Ext.onReady(function(){
//定义数据集对象
var typeStore = new Ext.data.Store({//配置分组数据集
//autoLoad :true,
reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "Users",
id: "id"
},
Ext.data.Record.create([
{name: 'id'},
{name: 'username'},
{name: 'password'}
])
),
proxy : new Ext.data.HttpProxy({
url : 'usersext.do?method=getUsersList'
})
})
//创建工具栏组件
var toolbar = new Ext.Toolbar([
{text : '新增用户',iconCls:'add',handler : showAddUsersType},
'-',
{text : '修改用户',iconCls:'option',handler : showModifyUsersType},
'-',
{text : '删除用户',iconCls:'remove',handler : showDeleteUsersType}
]);
//创建Grid表格组件
var cb = new Ext.grid.CheckboxSelectionModel()
var usersGrid = new Ext.grid.GridPanel({
applyTo : 'grid-div',
tbar : toolbar,
frame:true,
store: typeStore,
viewConfig : {
autoFill : true
},
sm : cb,
columns: [//配置表格列
new Ext.grid.RowNumberer({
header : '行号',
width : 40
}),//表格行号组件
cb,
{header: "编号", width: 80, dataIndex: 'id', sortable: true,hidden:true},
{header: "姓名", width: 180, dataIndex: 'username', sortable: true},
{header: "密码", width: 280, dataIndex: 'password', sortable: true}
],
bbar: new Ext.PagingToolbar({
pageSize: 15,
store: typeStore,
displayInfo: true,
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录"
})
});
typeStore.load({params:{start:0, limit:15}});
//创建新增或修改用户类型信息的form表单
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式
var usersForm = new Ext.FormPanel({
labelSeparator : ":",
frame:true,
border:false,
items : [
{
xtype:'textfield',
width : 200,
allowBlank : false,
blankText : '类型名称不能为空',
name : 'username',
fieldLabel:'姓名'
},{
xtype:'textfield',
width : 200,
name : 'password',
fieldLabel:'密码'
},{
xtype:'hidden',
name : 'id'
}
],
buttons:[
{
text : '关闭',
handler : function(){
win.hide();
}
},{
text : '提交',
handler : submitForm
}
]
});
//创建弹出窗口
var win = new Ext.Window({
layout:'fit',
width:380,
closeAction:'hide',
height:200,
resizable : false,
shadow : true,
modal :true,
closable:true,
bodyStyle:'padding:5 5 5 5',
animCollapse:true,
items:[usersForm]
});
//显示新建用户类型窗口
function showAddUsersType(){
usersForm.form.reset();
usersForm.isAdd = true;
win.setTitle("新增用户信息");
win.show();
}
//显示修改用户类型窗口
function showModifyUsersType(){
var usersList = getUsersIdList();
var num = usersList.length;
if(num > 1){
Ext.MessageBox.alert("提示","每次只能修改一条用户信息。")
}else if(num == 1){
usersForm.isAdd = false;
win.setTitle("修改用户信息");
win.show();
var usersId = usersList[0];
loadForm(usersId);
}
}
//显示删除用户对话框
function showDeleteUsersType(){
var usersList = getUsersIdList();
var num = usersList.length;
if(num > 1){
Ext.MessageBox.alert("提示","每次只能删除一条用户信息。")
}else if(num == 1){
Ext.MessageBox.confirm("提示","您确定要删除所选用户吗?",function(btnId){
if(btnId == 'yes'){
var usersId = usersList[0];
deleteUsers(usersId);
}
})
}
}
//删除用户类型
function deleteUsers(usersId){
var msgTip = Ext.MessageBox.show({
title:'提示',
width : 250,
msg:'正在删除用户信息请稍后......'
});
Ext.Ajax.request({
url : 'usersext.do?method=deleteUsers',
params : {usersId : usersId},
method : 'POST',
success : function(response,options){
msgTip.hide();
var result = Ext.util.JSON.decode(response.responseText);
if(result.success){
//服务器端数据成功删除后,同步删除客户端列表中的数据
var index = typeStore.find('id',usersId);
if(index != -1){
var rec = typeStore.getAt(index)
typeStore.remove(rec);
}
Ext.Msg.alert('提示','删除用户信息成功。');
}else{
Ext.Msg.alert('提示','该用户已包含'+result.num+'本用户信息不能删除!');
}
},
failure : function(response,options){
msgTip.hide();
Ext.Msg.alert('提示','删除用户类型请求失败!');
}
});
}
//加载表单数据
function loadForm(usersId){
usersForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'usersext.do?method=getUsersById',//请求的url地址
params : {usersId:usersId},
method:'GET',//请求方式
success:function(form,action){//加载成功的处理函数
//Ext.Msg.alert('提示','数据加载成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败');
}
});
}
//提交表单数据
function submitForm(){
//判断当前执行的提交操作,isAdd为true表示执行用户类型新增操作,false表示执行用户类型修改操作
if(usersForm.isAdd){
//新增用户信息
usersForm.form.submit({
clientValidation:true,//进行客户端验证
waitMsg : '正在提交数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'usersext.do?method=addUsers',//请求的url地址
method:'POST',//请求方式
success:function(form,action){//加载成功的处理函数
win.hide();
updateUsersList(action.result.usersId);
Ext.Msg.alert('提示','新增用户成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','新增用户失败');
}
});
}else{
//修改用户信息
usersForm.form.submit({
clientValidation:true,//进行客户端验证
waitMsg : '正在提交数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'usersext.do?method=modifyUsers',//请求的url地址
method:'POST',//请求方式
success:function(form,action){//加载成功的处理函数
win.hide();
updateUsersList(action.result.UsersId);
Ext.Msg.alert('提示','修改用户成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','修改用户失败');
}
});
}
}
//明细数据修改后,同步更新用户列表信息
function updateUsersList(usersId){
var fields = getFormFieldsObj(usersId);
var index = typeStore.find('id',fields.id);
if(index != -1){
var item = typeStore.getAt(index);
for(var fieldName in fields){
item.set(fieldName,fields[fieldName]);
}
typeStore.commitChanges();
}else{
var rec = new Ext.data.Record(fields);
typeStore.add(rec);
}
}
//取得表单数据
function getFormFieldsObj(usersId){
var fields = usersForm.items;
var obj = {};
for(var i = 0 ; i < fields.length ; i++){
var item = fields.itemAt(i);
var value = item.getValue();
obj[item.name] = value;
}
if(Ext.isEmpty(obj['id'])){
obj['id'] = usersId;
}
return obj;
}
//取得所选用户
function getUsersIdList(){
var recs = usersGrid.getSelectionModel().getSelections();
var list = [];
if(recs.length == 0){
Ext.MessageBox.alert('提示','请选择要进行操作的用户!');
}else{
for(var i = 0 ; i < recs.length ; i++){
var rec = recs[i];
list.push(rec.get('id'))
}
}
return list;
}
});
</script>
<body>
<div id='grid-div' style="width:100%; height:100%;"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="<%=basePath%>/pagesExt/js/excel.js"></script>
<title>收入列表</title>
</head>
<script type="text/javascript">
Ext.onReady(function(){
//定义数据集对象
var bookStore = new Ext.data.Store({
//autoLoad :true,
reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "Book",
id: "id"
},
Ext.data.Record.create([
{name: 'id'},
{name: 'bookName'},
{name: 'author'},
{name: 'typeName'},
{name: 'price'},
{name: 'brief'}
])
),
proxy : new Ext.data.HttpProxy({
url : 'bookext.do?method=getBookList'
})
})
//创建工具栏组件
var toolbar = new Ext.Toolbar([
{text : '新增收入',iconCls:'add',handler:showAddBook},
'-',
{text : '修改收入',iconCls:'option',handler:showModifyBook},
'-',
{text : '删除收入',iconCls:'remove',handler:showDeleteBooks},
'-',
{text : '总收入',iconCls:'tot',handler : showTotalPay},
'-',
new Ext.Toolbar.TextItem('按时间查询:'),
{
xtype:'datefield',
width : 150,
allowBlank : false,
blankText : '不能为空',
id : 'times',
name : 'times',
emptyText:'请选择时间',
format:'Y-m-d'
},
{iconCls:'find',handler:onItemCheck },
'-',
{text : '导出数据',iconCls:'down',handler:downExcel}
]);
//创建Grid表格组件
var cb = new Ext.grid.CheckboxSelectionModel()
var bookGrid = new Ext.grid.GridPanel({
applyTo : 'grid-div',
frame:true,
tbar : toolbar,
store: bookStore,
stripeRows : true,
autoScroll : true,
viewConfig : {
autoFill : true
},
sm : cb,
columns: [//配置表格列
new Ext.grid.RowNumberer({
header : '行号',
width : 40
}),//表格行号组件
cb,
{header: "收入编号", width: 1, dataIndex: 'id', sortable: true,hidden:true},
{header: "收入名称", width: 80, dataIndex: 'bookName', sortable: true},
{header: "作者", width: 80, dataIndex: 'author', sortable: true},
{header: "类型", width: 80, dataIndex: 'typeName', sortable: true},
{header: "金额", width: 80, dataIndex: 'price', sortable: true},
{header: "简介", width: 80, dataIndex: 'brief', sortable: true}
],
bbar: new Ext.PagingToolbar({
pageSize: 15,
store: bookStore,
displayInfo: true,
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录"
})
});
bookStore.load({params:{start:0, limit:15}});
//按时间查询方法
function onItemCheck(){
var dd=Ext.get('times').getValue();
if(dd=='请选择时间'){
dd = "";
}
bookStore.reload({params:{start:0,limit:15,dd:dd}});
};
//创建新增或修改收入信息的form表单
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式
var bookForm = new Ext.FormPanel({
labelSeparator : ":",
frame:true,
border:false,
items : [
{
xtype:'textfield',
width : 200,
allowBlank : false,
blankText : '收入名称不能为空',
name : 'bookName',
fieldLabel:'收入名称'
},{
xtype:'textfield',
width : 200,
allowBlank : false,
blankText : '收入作者不能为空',
name : 'author',
fieldLabel:'作者'
},{
xtype:'combo',
width : 200,
allowBlank : false,
blankText : '必须选择收入类型',
hiddenName : 'bookTypeId',
name : 'typeName',
store : new Ext.data.Store({
autoLoad :true,
reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "BookType",
id: "id"
},
Ext.data.Record.create([
{name: 'id'},
{name: 'title'},
{name: 'detail'}
])
),
proxy : new Ext.data.HttpProxy({
url : 'bookext.do?method=getBookTypeList'
})
}),//设置数据源
allQuery:'allbook',//查询全部信息的查询字符串
triggerAction: 'all',//单击触发按钮显示全部数据
editable : false,//禁止编辑
loadingText : '正在加载收入类型信息',//加载数据时显示的提示信息
displayField:'title',//定义要显示的字段
valueField : 'id',
emptyText :'请选择收入类型',
mode: 'remote',//远程模式
fieldLabel:'类型'
},{
xtype:'textfield',
width : 200,
name : 'price',
fieldLabel:'金额'
},{
xtype:'textarea',
width : 200,
name : 'brief',
fieldLabel:'简介'
},{
xtype:'hidden',
name : 'id'
}
],
buttons:[
{
text : '关闭',
handler : function(){
win.hide();
}
},{
text : '提交',
handler : submitForm
}
]
});
//创建弹出窗口
var win = new Ext.Window({
layout:'fit',
width:380,
closeAction:'hide',
height:280,
resizable : false,
shadow : true,
modal :true,
closable:true,
bodyStyle:'padding:5 5 5 5',
animCollapse:true,
items:[bookForm]
});
//显示新建收入窗口
function showAddBook(){
bookForm.form.reset();
bookForm.isAdd = true;
win.setTitle("新增收入信息");
win.show();
}
//显示修改收入窗口
function showModifyBook(){
var bookList = getBookIdList();
var num = bookList.length;
if(num > 1){
Ext.MessageBox.alert("提示","每次只能修改一条收入信息。")
}else if(num == 1){
bookForm.form.reset();
bookForm.isAdd = false;
win.setTitle("修改收入信息");
win.show();
var bookId = bookList[0];
loadForm(bookId);
}
}
//显示删除收入对话框
function showDeleteBooks(){
var bookList = getBookIdList();
var num = bookList.length;
if(num == 0){
return;
}
Ext.MessageBox.confirm("提示","您确定要删除所选收入吗?",function(btnId){
if(btnId == 'yes'){
deleteBooks(bookList);
}
})
}
//删除收入
function deleteBooks(bookList){
var bookIds = bookList.join('-');
var msgTip = Ext.MessageBox.show({
title:'提示',
width : 250,
msg:'正在删除收入信息请稍后......'
});
Ext.Ajax.request({
url : 'bookext.do?method=deleteBooks',
params : {bookIds : bookIds},
method : 'POST',
success : function(response,options){
msgTip.hide();
var result = Ext.util.JSON.decode(response.responseText);
if(result.success){
//服务器端数据成功删除后,同步删除客户端列表中的数据
for(var i = 0 ; i < bookList.length ; i++){
var index = bookStore.find('id',bookList[i]);
if(index != -1){
var rec = bookStore.getAt(index)
bookStore.remove(rec);
}
}
Ext.Msg.alert('提示','删除收入信息成功。');
}else{
Ext.Msg.alert('提示','删除收入信息失败!');
}
},
failure : function(response,options){
msgTip.hide();
Ext.Msg.alert('提示','删除收入信息请求失败!');
}
});
}
//加载表单数据
function loadForm(bookId){
bookForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'bookext.do?method=getBookById',//请求的url地址
params : {bookId:bookId},
method:'GET',//请求方式
success:function(form,action){//加载成功的处理函数
//Ext.Msg.alert('提示','数据加载成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败');
}
});
}
//提交表单数据
function submitForm(){
//判断当前执行的提交操作,isAdd为true表示执行收入新增操作,false表示执行收入修改操作
if(bookForm.isAdd){
//新增收入信息
bookForm.form.submit({
clientValidation:true,//进行客户端验证
waitMsg : '正在提交数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'bookext.do?method=addBook',//请求的url地址
method:'POST',//请求方式
success:function(form,action){//加载成功的处理函数
win.hide();
updateBookList(action.result.bookId);
Ext.Msg.alert('提示','新增收入成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','新增收入失败');
}
});
}else{
//修改收入信息
bookForm.form.submit({
clientValidation:true,//进行客户端验证
waitMsg : '正在提交数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'bookext.do?method=modifyBook',//请求的url地址
method:'POST',//请求方式
success:function(form,action){//加载成功的处理函数
win.hide();
updateBookList(action.result.bookId);
Ext.Msg.alert('提示','修改收入成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','修改收入失败');
}
});
}
}
//明细数据修改后,同步更新收入列表信息
function updateBookList(bookId){
var fields = getFormFieldsObj(bookId);
var index = bookStore.find('id',fields.id);
if(index != -1){
var item = bookStore.getAt(index);
for(var fieldName in fields){
item.set(fieldName,fields[fieldName]);
}
bookStore.commitChanges();
}else{
var rec = new Ext.data.Record(fields);
bookStore.add(rec);
}
}
//取得表单数据
function getFormFieldsObj(bookId){
var fields = bookForm.items;
var obj = {};
for(var i = 0 ; i < fields.length ; i++){
var item = fields.itemAt(i);
var value = item.getValue();
if(item.getXType() == 'combo'){
var index = item.store.find('id',value);
if(index != -1){
var selItem = item.store.getAt(index);
}
value = selItem.get('title');
}
obj[item.name] = value;
}
if(Ext.isEmpty(obj['id'])){
obj['id'] = bookId;
}
return obj;
}
//取得所选收入
function getBookIdList(){
var recs = bookGrid.getSelectionModel().getSelections();
var list = [];
if(recs.length == 0){
Ext.MessageBox.alert('提示','请选择要进行操作的收入!');
}else{
for(var i = 0 ; i < recs.length ; i++){
var rec = recs[i];
list.push(rec.get('id'))
}
}
return list;
};
//查看总支出
function showTotalPay(){
winP.setTitle("您的总支出信息");
winP.show();
};
//导出excel
function downExcel(){
Ext.Ajax.request({
url : 'analysis.do?method=crateInExcel',
params : {type : 'b'},
method : 'POST',
success : function(response,options){
Ext.Msg.alert('成功提示','导出数据成功!保存在您的C盘下的文件名为: 收入数据.xls。');
},
failure : function(response,options){
Ext.Msg.alert('失败提示','导出数据失败!');
}
});
};
//弹出总收入信息
var sumIncome = document.getElementById("sumIncome").value;
var sumIncomeY = document.getElementById("sumIncomeY").value;
var winIn = new Ext.Window({
layout:'fit',
width:370,
closeAction:'hide',
height:280,
resizable : false,
shadow : true,
modal :true,
closable:true,
bodyStyle:'padding:5 5 5 5',
animCollapse:true,
items:{
title:"总收入",
collapsible:true,
html : '<br><center><font size = 6>本月总收入为:</font><font size = 5 color= red>'+sumIncome+'元</font></center><br/><center><font size = 6>本年总收入为:</font><font size = 5 color= red>'+sumIncomeY+'元</font></center><br/>'
}
});
//查看总收入
function showTotalPay(){
winIn.setTitle("您的总收入信息");
winIn.show();
}
});
</script>
<body>
<div id='grid-div' style="width:100%; height:100%;"/>
<input type="hidden" name="sumIncome" id="sumIncome" value="${sumIncome }"/>
<input type="hidden" name="sumIncomeY" id="sumIncomeY" value="${sumIncomeY }"/>
</body>
</html>