main.jsp
- "text/html; charset=utf-8"%>
- import="org.acegisecurity.context.SecurityContext, org.acegisecurity.userdetails.UserDetails" %>
- /span>"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-
-
- House Charge Expenses System
- "content-type" content="text/html; charset=utf-8" />
- "content-language" content="utf-8" />
- "all" name="robots" />
- "author" content="ark"/>
- "copyright" content="ark" />
- "description" content="just for testing" />
- "keywords" content="family,finance,study" />
- "stylesheet" type="text/css" href="/ajaxlib/ext/resources/css/ext-all.css" />
- "stylesheet" type="text/css" href="/ajaxlib/mylib/ext-patch.css" />
- "stylesheet" type="text/css" href="/css/windows.css" />
- src="<%=request.getContextPath() %>/ajaxlib/ext/adapter/ext/ext-base.js">
- src="<%=request.getContextPath() %>/ajaxlib/ext/ext-all-debug.js">
- src="<%=request.getContextPath() %>/ajaxlib/ext/ext-lang-zh_CN.js">
- <!--buffalo-->
- src="<%=request.getContextPath() %>/ajaxlib/buffalo/prototype.js">
- src="<%=request.getContextPath() %>/ajaxlib/buffalo/buffalo.js">
- src="<%=request.getContextPath() %>/ajaxlib/mylib/buffaloext.js">
- src="<%=request.getContextPath() %>/ajaxlib/mylib/dwrproxy.js">
- src="<%=request.getContextPath() %>/ajaxlib/mylib/ext-lang-zh.js">
- src="<%=request.getContextPath() %>/dwr/interface/houseChargeService.js">
- src="<%=request.getContextPath() %>/dwr/engine.js">
- > />
- dwr.engine.setAsync(false); />
- var ContextPath="<%=request.getContextPath() %>" />
- var END_POINT="<%=request.getContextPath() %>/bfapp"; />
- var buffalo = new Buffalo(END_POINT,false); />
-
- src="<%=request.getContextPath() %>/ajaxlib/mylib/buffaloext.js">
-
- src="desktop.js">
- src="windows.js">
- src="<%=request.getContextPath() %>/steady/chargeItem.js">
- src="<%=request.getContextPath() %>/steady/incomeItem.js">
- src="<%=request.getContextPath() %>/steady/familyMember.js">
- src="<%=request.getContextPath() %>/steady/bankAccount.js">
- src="<%=request.getContextPath() %>/daily/incomeDaily.js">
-
-
-
"x-taskbar"
>
-
"title-bar"
>House Charge Expenses System
-
"logname"
>用户名:class="username">
-
- SecurityContext context=(SecurityContext)request.getSession().getAttribute("ACEGI_SECURITY_CONTEXT");
- UserDetails userDetails=(UserDetails)context.getAuthentication().getPrincipal();
- out.print(userDetails.getUsername());
- %>
- | "/logout.html">登出
-
"x-launcher-wrap"
>
"x-launcher-inner"
>
"x-launcher-left"
>
"x-launcher-right"
>
"x-launcher-center"
>
"x-launcher"
>
"x-info"
>
"x-desktop"
>
class
=
"x-clear"
>
windows.js
- Myapp = new Ext.app.App({
- init :function(){
- Ext.QuickTips.init();
- },
-
- getModules : function(){
- return [
new
chargeItemWindow(),
new
incomeItemWindow(),
new
familyMemberWindow(),
new
bankAccountWindow(),
new
incomeDailyWindow(),
];
}
});
familyMember.js
- familyMemberWindow = Ext.extend(Ext.app.Module, {
- init : function(){
- this.launcher = {
text:
'家庭成员'
,
iconCls:
'icon-grid'
,
handler :
this
.createWindow,
scope:
this
}
},
createWindow : function(){
var desktop =
this
.app.getDesktop();
var cm =
new
Ext.grid.ColumnModel([{
header:
'姓名'
,
dataIndex:
'name'
,
width:
220
,
editor:
new
Ext.grid.GridEditor(
new
Ext.form.TextField({allowBlank:
false
}))
}]);
cm.defaultSortable =
true
;
var FamilyMember = Ext.data.Record.create([
{name:
'id'
,type:
'int'
,mapping:
'id'
},
{name:
'name'
,type:
'string'
,mapping:
'name'
}
]);
var ds =
new
Ext.data.Store({
proxy:
new
Buffalo.Ext.DataProxy(buffalo,
"houseChargeService.getAllFamilyMember"
,[]),
reader:
new
Ext.data.ArrayReader({id:
'id'
}, FamilyMember),
remoteSort:
false
});
var gridPanel =
new
Ext.grid.EditorGridPanel({
store: ds,
cm: cm,
selModel:
new
Ext.grid.CellSelectionModel(),
enableColLock:
false
,
buttonAlign:
'top'
,
tbar:[{
text:
'新增'
,
handler :doAdd
},{
text:
'保存'
,
handler : doSave
},{
text:
'删除'
,
handler : doDel
}]
});
var win = desktop.getWindow(
'familyMember-win'
);
if
(!win){
win = desktop.createWindow({
id:
'familyMember-win'
,
title:
'家庭成员'
,
width:
740
,
height:
460
,
x:
10
,
y:
10
,
iconCls:
'icon-grid'
,
shim:
false
,
animCollapse:
false
,
constrainHeader:
true
,
layout:
'fit'
,
items: gridPanel
});
}
ds.load();
win.show();
function doAdd() {
var p =
new
FamilyMember({
id:-
1
,
name:
''
});
gridPanel.stopEditing();
var yetCount=ds.getCount();
ds.insert(yetCount, p);
ds.getAt(yetCount).set(
"name"
,
'未命名'
);
gridPanel.startEditing(yetCount,
0
);
}
function doSave() {
var eds=ds.getModifiedRecords().slice(
0
);
for
(var i =
0
;i
record =eds[i];
if
(record.get(
"id"
)==-
1
) {
buffalo.remoteCall(
"houseChargeService.createFamilyMember"
,[record.get(
"name"
)],function(reply) {
var sucess = reply.getResult();
if
(sucess==
1
) {
alert(
"重复姓名!"
);
}
else
{
if
(sucess!=
0
) {
alert(
"保存失败!"
);
}
else
{
record.commit();
}
}
});
}
else
{
buffalo.remoteCall(
"houseChargeService.updateFamilyMember"
,[record.get(
"id"
),record.get(
"name"
)],function(reply) {
var sucess = reply.getResult();
if
(sucess==
1
) {
alert(
"重复姓名!"
);
}
else
{
if
(sucess!=
0
) {
alert(
"保存失败!"
);
}
else
{
record.commit();
}
}
});
}
}
}
function doDel(){
if
(gridPanel.selModel.hasSelection()){
Ext.MessageBox.confirm(
'Message'
,
'确定删除吗?'
, doDelDetail);
}
else
{
Ext.MessageBox.alert(
'Error'
,
'请选中一行!'
);
}
}
function doDelDetail(btn) {
if
(btn ==
'yes'
) {
var record = ds.getAt(gridPanel.selModel.getSelectedCell()[
0
]);
if
(record.get(
"id"
)==-
1
) {
ds.remove(record);
}
else
{
buffalo.remoteCall(
"houseChargeService.deleteFamilyMember"
,[record.get(
"id"
)],function(reply) {
var sucess = reply.getResult();
if
(sucess!=
0
) {
alert(
" 删除失败!"
);
}
else
{
ds.remove(record);
}
});
}
}
}
}
});
incomeDaily.js
- incomeDailyWindow = Ext.extend(Ext.app.Module, {
- init : function(){
- this.launcher = {
text:
'收入日记录'
,
iconCls:
'icon-grid'
,
handler :
this
.createWindow,
scope:
this
}
},
createWindow : function(){
var desktop =
this
.app.getDesktop();
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget =
'side'
;
var cm =
new
Ext.grid.ColumnModel([
{
header:
"收入项目"
,
sortable:
true
,
dataIndex:
'incomeItem_name'
,
width:
100
},{
header:
"日期"
,
dataIndex:
'date'
,
width:
60
,
renderer:Ext.util.Format.dateRenderer(
'Y/m/d'
)
},{
header:
"金额"
,
dataIndex:
'amount'
,
align:
'right'
,
width:
100
},{
header:
"家庭成员"
,
dataIndex:
'familyMember_name'
,
width:
80
},{
header:
"银行"
,
dataIndex:
'bankAccount_bank'
,
width:
120
},{
header:
"帐号"
,
dataIndex:
'bankAccount_accountNo'
,
width:
120
},{
header:
"备注"
,
dataIndex:
'remark'
,
width:
80
}]);
cm.defaultSortable =
true
;
var IncomeDaily = Ext.data.Record.create([
{name:
'id'
,type:
'int'
,mapping:
'id'
},
{name:
'incomeItem_name'
, type:
'string'
,mapping:
'incomeItem.name'
},
{name:
'date'
, type:
'date'
,dateFormat:
'Y/m/d'
,mapping:
'date'
},
{name:
'amount'
, type:
'float'
,mapping:
'amount'
},
{name:
'familyMember_name'
, type:
'string'
,mapping:
'familyMember.name'
},
{name:
'bankAccount_bank'
, type:
'string'
,mapping:
'bankAccount.bank'
},
{name:
'bankAccount_accountNo'
, type:
'string'
,mapping:
'bankAccount.accountNo'
},
{name:
'remark'
, type:
'string'
,mapping:
'remark'
}
]);
var ds =
new
Ext.data.Store({
proxy:
new
Ext.data.DWRProxy(houseChargeService.findIncomeDaily),
reader:
new
Ext.data.JsonReader({totalProperty:
'total'
,root:
'list'
,id:
'id'
},IncomeDaily),
remoteSort:
false
,
});
var gridPanel =
new
Ext.grid.EditorGridPanel({
ds:ds,
cm: cm,
sm:
new
Ext.grid.RowSelectionModel({singleSelect:
true
}),
enableColLock:
false
,
autoSizeColumns:
true
,
buttonAlign:
'top'
,
tbar:[{
text:
'新增'
,
handler :doAdd
},{
text:
'查询'
,
handler : doQuery
},{
text:
'删除'
,
handler : doDel
}],
bbar:
new
Ext.PagingToolbar({
pageSize:
2
,
store: ds,
displayInfo:
true
})
});
var win = desktop.getWindow(
'incomeDaily-win'
);
if
(!win){
win = desktop.createWindow({
id:
'incomeDaily-win'
,
title:
'收入日记录'
,
width:
740
,
height:
460
,
x:
10
,
y:
10
,
iconCls:
'icon-grid'
,
shim:
false
,
animCollapse:
false
,
constrainHeader:
true
,
layout:
'fit'
,
items: gridPanel
});
}
win.show();
function doAdd() {
var allIncomeItem=[];
buffalo.remoteCall(
"houseChargeService.findRootIncomeItem"
,[], function(reply) {
getChild(reply.getResult());
function getChild(parent) {
if
(parent.children.lengt==
0
) {
return
0
;
}
for
(var i=
0
; i
allIncomeItem.push([parent.children[i].id,parent.children[i].name]);
getChild(parent.children[i]);
}
}
});
var allFamilyMember=[];
buffalo.remoteCall(
"houseChargeService.getAllFamilyMember"
,[],function(reply) {
var list = reply.getResult();
for
(var i=
0
; i
allFamilyMember.push([list[i].id,list[i].name]);
}
});
var allBankAccount=[];
buffalo.remoteCall(
"houseChargeService.getAllBankAccount"
,[],function(reply) {
var list = reply.getResult();
for
(var i=
0
; i
if
(list[i].bank==
"现金"
) {
allBankAccount.push([list[i].id,list[i].bank]);
}
else
{
allBankAccount.push([list[i].id,list[i].bank+
" "
+list[i].accountNo+
" "
+list[i].cardNo]);
}
}
});
var addForm =
new
Ext.FormPanel({
onSubmit: Ext.emptyFn,
submit: function() {
this
.getEl().dom.submit();
},
labelWidth:
75
,
frame:
true
,
title:
''
,
bodyStyle:
'padding: 0'
,
width:
350
,
labelSeparator:
''
,
items: [{
xtype:
'combo'
,
fieldLabel:
'家庭成员'
,
store:
new
Ext.data.SimpleStore({
fields: [
"id"
,
"name"
],
data: allFamilyMember
}),
editable:
false
,
hiddenName:
'familyMember_id'
,
displayField:
'name'
,
valueField:
'id'
,
typeAhead:
true
,
mode:
'local'
,
triggerAction:
'all'
,
emptyText:
'请选择家庭成员'
,
selectOnFocus:
true
,
resizable:
true
,
allowBlank:
false
,
forceSelection:
true
},{
xtype:
'datefield'
,
fieldLabel:
'日期'
,
name:
'date'
,
width:
100
,
allowBlank:
false
,
format:
'Y/m/d'
}, {
xtype:
'numberfield'
,
fieldLabel:
'金额'
,
name:
'amount'
,
width:
100
,
allowBlank:
false
,
allowNegative:
false
,
minValue:
0
},{
xtype:
'combo'
,
fieldLabel:
'账户'
,
store:
new
Ext.data.SimpleStore({
fields: [
"id"
,
"name"
],
data: allBankAccount
}),
editable:
false
,
hiddenName:
'bankAccount_id'
,
displayField:
'name'
,
valueField:
'id'
,
typeAhead:
true
,
mode:
'local'
,
triggerAction:
'all'
,
emptyText:
'请选择账户'
,
selectOnFocus:
true
,
resizable:
true
,
allowBlank:
false
,
forceSelection:
true
},{
xtype:
'combo'
,
fieldLabel:
'收入项目'
,
store:
new
Ext.data.SimpleStore({
fields: [
"id"
,
"name"
],
data: allIncomeItem
}),
editable:
false
,
hiddenName:
'incomeItem_id'
,
displayField:
'name'
,
valueField:
'id'
,
typeAhead:
true
,
mode:
'local'
,
triggerAction:
'all'
,
emptyText:
'请选择收入项目'
,
selectOnFocus:
true
,
resizable:
true
,
allowBlank:
false
,
forceSelection:
true
},{
xtype:
'textfield'
,
fieldLabel:
'备注'
,
name:
'remark'
,
width:
300
}
],
buttons: [{
text:
'保存'
,
handler:function(){
if
(addForm.form.isValid()){
var my=addForm.form.getValues();
buffalo.remoteCall(
"houseChargeService.createIncomeDaily"
,[parseInt(my.incomeItem_id),Date.parseDate(my.date,
"Y/m/d"
),parseFloat(my.amount),parseInt(my.familyMember_id),parseInt(my.bankAccount_id),my.remark],function(reply) {
var sucess = reply.getResult();
if
(sucess!=
0
) {
alert(
"保存失败!"
);
}
else
{
alert(
"保存成功!"
);
}
});
addWindow.close();
}
}
},{
text:
'放弃'
,
handler: function(){
addWindow.close();
}
}]
});
var addWindow
if
(!addWindow){
addWindow =
new
Ext.Window({
id:
'incomeDaily-add-win'
,
layout:
'fit'
,
width:
500
,
height:
300
,
plain:
true
,
items:addForm
});
}
addWindow.show(
this
);
addForm.form.setValues({date:(
new
Date()).format(
"Y/m/d"
),familyMember_id:
'1'
,bankAccount_id:
'1'
,incomeItem_id:
'2'
});
addForm.form.render();
}
function doQuery() {
var allIncomeItem=[];
buffalo.remoteCall(
"houseChargeService.findRootIncomeItem"
,[], function(reply) {
getChild(reply.getResult());
function getChild(parent) {
if
(parent.children.lengt==
0
) {
return
0
;
}
for
(var i=
0
; i
allIncomeItem.push([parent.children[i].id,parent.children[i].name]);
getChild(parent.children[i]);
}
}
});
var allFamilyMember=[];
buffalo.remoteCall(
"houseChargeService.getAllFamilyMember"
,[],function(reply) {
var list = reply.getResult();
for
(var i=
0
; i
allFamilyMember.push([list[i].id,list[i].name]);
}
});
var allBankAccount=[];
buffalo.remoteCall(
"houseChargeService.getAllBankAccount"
,[],function(reply) {
var list = reply.getResult();
for
(var i=
0
; i
if
(list[i].bank==
"现金"
) {
allBankAccount.push([list[i].id,list[i].bank]);
}
else
{
allBankAccount.push([list[i].id,list[i].bank+
" "
+list[i].accountNo+list[i].cardNo]);
}
}
});
var queryForm =
new
Ext.FormPanel({
onSubmit: Ext.emptyFn,
submit: function() {
this
.getEl().dom.submit();
},
labelWidth:
75
,
frame:
true
,
title:
''
,
bodyStyle:
'padding: 0'
,
width:
350
,
labelSeparator:
''
,
items: [{
xtype:
'fieldset'
,
checkboxName:
'queryFamilyMember_id'
,
checkboxToggle:
true
,
title:
'按家庭成员查询'
,
autoHeight:
true
,
defaults: {width:
210
},
collapsed:
true
,
items :[{
xtype:
'combo'
,
fieldLabel:
'家庭成员'
,
store:
new
Ext.data.SimpleStore({
fields: [
"id"
,
"name"
],
data: allFamilyMember
}),
editable:
false
,
hiddenName:
'familyMember_id'
,
displayField:
'name'
,
valueField:
'id'
,
typeAhead:
true
,
mode:
'local'
,
triggerAction:
'all'
,
emptyText:
'请选择家庭成员'
,
selectOnFocus:
true
,
resizable:
true
,
allowBlank:
false
,
forceSelection:
true
}]
},{
xtype:
'fieldset'
,
checkboxToggle:
true
,
checkboxName:
'queryDate'
,
title:
'按日期查询'
,
autoHeight:
true
,
defaults: {width:
210
},
collapsed:
true
,
items :[{
xtype:
'datefield'
,
fieldLabel:
'日期起'
,
name:
'dateFrom'
,
width:
100
,
allowBlank:
false
,
format:
'Y/m/d'
},{
xtype:
'datefield'
,
fieldLabel:
'日期迄'
,
name:
'dateTo'
,
width:
100
,
allowBlank:
false
,
format:
'Y/m/d'
}]
},{
xtype:
'fieldset'
,
checkboxTog
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/164811/viewspace-998527/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/164811/viewspace-998527/