book.js
上传用户:ouhalaa
上传日期:2016-03-17
资源大小:10210k
文件大小:32k
源码类别:

Web服务器

开发平台:

Java

  1. var Book = Ext.data.Record.create([
  2. {name : 'bookId',mapping : 'bookId',type : 'int'}, 
  3. {name : 'bookName', mapping : 'bookName',type : 'string'}, 
  4. {name : 'author',mapping : 'author',type : 'string'}, 
  5. {name : 'press',mapping : 'press',type : 'string'}, 
  6. {name : 'price',mapping : 'price',type : 'string'}, 
  7. {name : 'editionNo',mapping : 'editionNo',type : 'string'}, 
  8. {name : 'isbn', mapping : 'isbn',type : 'string'}, 
  9. {name : 'categoryId',mapping : 'categoryId',type : 'int'}, 
  10. {name : 'categoryName', mapping : 'categoryName',type : 'string'}, 
  11. {name : 'wordCount',mapping : 'wordCount',type : 'string'}, 
  12. {name : 'pageCount',mapping : 'pageCount',type : 'string'}, 
  13. {name : 'bookSize', mapping : 'bookSize',type : 'string'}, 
  14. {name : 'paper',mapping : 'paper',type : 'string'}, 
  15. {name : 'pack', mapping : 'pack',type : 'string'}, 
  16. {name : 'imageUrl', mapping : 'imageUrl',type : 'string'}, 
  17. {name : 'address',mapping : 'address',type : 'string'}, 
  18. {name : 'editorRecommend',mapping : 'editorRecommend', type : 'string'}, 
  19. {name : 'description',mapping : 'description',type : 'string'}, 
  20. {name : 'authorDesc',mapping : 'authorDesc',type : 'string'}, 
  21. {name : 'state',mapping : 'state',type : 'int'}
  22. ]);
  23. var categoryId;
  24. var ds_category_select = new Ext.data.Store({
  25. url : 'findAllCategoryName.action',
  26. reader : new Ext.data.JsonReader({
  27. root : 'root'
  28. }, [{name : 'categoryId',type : 'int'},
  29. {name : 'categoryName',type : 'string'}
  30. ])
  31. });
  32. var expander = new Ext.grid.RowExpander({
  33. tpl : new Ext.Template('<p><table width="480" style="padding-left:20px" border="0" cellspacing="0" cellpadding="0">'
  34. + '<tr><td width="133" valign="top"><img src="{imageUrl}" onerror='this.src="/bmsh/images/nopic.jpg"'/></td>'
  35. + '<td width="476" colspan="4"><table width="100%"  border="0" cellspacing="6" cellpadding="4">'
  36. + '<tr><td width="19%" align="right" nowrap="nowrap">作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;者:</td>'
  37. + '<td width="38%" nowrap="nowrap"> {author}</td><td width="15%" align="right" nowrap="nowrap">&nbsp;</td>'
  38. + '<td width="28%" nowrap="nowrap">&nbsp;</td></tr><tr><td align="right" nowrap="nowrap">出&nbsp;&nbsp;版&nbsp;&nbsp;社:</td>'
  39. + '<td nowrap="nowrap">{press}</td><td align="right" nowrap="nowrap">&nbsp;</td><td nowrap="nowrap">&nbsp;</td></tr><tr>'
  40. + '<td align="right" nowrap="nowrap">版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;次:</td>'
  41. + '<td nowrap="nowrap">{editionNo}</td><td align="right" nowrap="nowrap">页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数:</td>'
  42. + '<td nowrap="nowrap">{pageCount}</td></tr><tr><td align="right" nowrap="nowrap">I &nbsp;&nbsp;S&nbsp;&nbsp;B&nbsp;&nbsp;N:</td>'
  43. + '<td nowrap="nowrap">{isbn}</td><td align="right" nowrap="nowrap">开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本:</td>'
  44. + '<td nowrap="nowrap">{bookSize}</td></tr><tr><td align="right" nowrap="nowrap">所属类别:</td>'
  45. + '<td nowrap="nowrap">{categoryName}</td><td align="right" nowrap="nowrap">纸&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;张:</td>'
  46. + '<td nowrap="nowrap">{paper}</td></tr><tr><td align="right" nowrap="nowrap">藏书地址:</td>'
  47. + '<td nowrap="nowrap">{address}</td><td align="right" nowrap="nowrap">包&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;装:</td>'
  48. + '<td nowrap="nowrap">{pack}</td></tr><tr><td align="right" nowrap="nowrap">定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;价:</td>'
  49. + '<td nowrap="nowrap"><strong>&yen;</strong>{price}</td><td align="right" nowrap="nowrap">字 &nbsp;&nbsp;&nbsp;数:</td>'
  50. + '<td nowrap="nowrap">{wordCount}</td></tr></table></td></tr><tr><td colspan="5" valign="top">&nbsp;</td></tr><tr>'
  51. + '<td colspan="5" valign="top"><h4>编辑推荐</h4></td></tr><tr><td colspan="5" valign="top">{editorRecommend}</td>'
  52. + '</tr><tr><td colspan="5" valign="top">&nbsp;</td></tr><tr><td colspan="5" valign="top"><h4>内容简介</h4></td>'
  53. + '</tr><tr><td colspan="5" valign="top">{description}</td></tr><tr>'
  54. + '<td colspan="5" valign="top">&nbsp;</td></tr><tr><td colspan="5" valign="top"><h4>作者简介</h4></td></tr><tr>'
  55. + '<td colspan="5" valign="top">{authorDesc}</td></tr></table></p>')
  56. });
  57. var cm_book = new Ext.grid.ColumnModel([expander, 
  58. {header : '图书名称', width : 120,dataIndex : 'bookName', sortable : true}, 
  59. {header : '作者',width : 40, dataIndex : 'author',sortable : true}, 
  60. {header : '定价',width : 30, dataIndex : 'price',sortable : true}, 
  61. {header : '所属分类', width : 90, sortable : true,dataIndex : 'categoryName'}, 
  62. {header : '当前读者',width : 40,dataIndex : 'currentReader',menuDisabled : true}, 
  63. {header : '当前状态',width : 40,dataIndex : 'state',renderer : function(v) {return v == 0 ? '已借出' : '未借出'}, menuDisabled : true}, 
  64. {header : '藏书地址', width : 90, dataIndex : 'address',id : 'address',sortable : true}]
  65. );
  66. var address,_editAddress;// 藏书地址
  67. var cbb_company_for_book_update = new Ext.form.ComboBox({
  68. name : '_companyName',
  69. width : 120,
  70. valueField : 'companyId',
  71. displayField : 'companyName',
  72. editable : false,
  73. selectOnFocus : true,
  74. mode : 'remote',
  75. store :  ds_company_select,
  76. triggerAction : 'all',
  77. loadingText : '加载中...',
  78. fieldLabel : '所属分公司',
  79. listeners : {
  80. 'select' : function() {
  81. cbb_dept_for_book_update.reset();
  82. ds_dept_select.baseParams.companyId = cbb_company_for_book_update.getValue();
  83. ds_dept_select.reload();
  84. _editAddress = cbb_company_for_book_update.getEl().dom.value;
  85. bookEditForm.getForm().findField('address').setValue(_editAddress);
  86. }
  87. }
  88. });
  89. var cbb_dept_for_book_update = new Ext.form.ComboBox({
  90. name : '_deptNo',
  91. editable : false,
  92. selectOnFocus : true,
  93. width : 100,
  94. displayField : 'deptName',
  95. mode : 'remote',
  96. store : ds_dept_select,
  97. triggerAction : 'all',
  98. loadingText : '加载中...',
  99. fieldLabel : '所属部门',
  100. listeners : {
  101. 'beforequery' : function(queryEvent) {
  102. if (!cbb_company_for_book_update.getValue()) {
  103. queryEvent.cancel = true;
  104. }
  105. },
  106. 'select' : function(combo, record, index) {
  107. _editAddress += cbb_dept_for_book_update.getValue();
  108. bookEditForm.getForm().findField('address').setValue(_editAddress);
  109. }
  110. }
  111. });
  112. var cbb_company_for_book = new Ext.form.ComboBox({
  113. name : 'companyName',
  114. width : 120,
  115. valueField : 'companyId',
  116. displayField : 'companyName',
  117. editable : false,
  118. selectOnFocus : true,
  119. mode : 'remote',
  120. store : ds_company_select,
  121. triggerAction : 'all',
  122. loadingText : '加载中...',
  123. fieldLabel : '所属分公司',
  124. listeners : {
  125. 'select' : function() {
  126. cbb_dept_for_book.reset();
  127. ds_dept_select.baseParams.companyId = cbb_company_for_book.getValue();
  128. ds_dept_select.reload();
  129. address = cbb_company_for_book.getEl().dom.value;
  130. bookForm.getForm().findField('book.address').setValue(address);
  131. }
  132. }
  133. });
  134. var cbb_dept_for_book = new Ext.form.ComboBox({
  135. name : 'deptNo',
  136. editable : false,
  137. selectOnFocus : true,
  138. width : 100,
  139. displayField : 'deptName',
  140. mode : 'remote',
  141. store : ds_dept_select,
  142. triggerAction : 'all',
  143. loadingText : '加载中...',
  144. fieldLabel : '所属部门',
  145. listeners : {
  146. 'beforequery' : function(queryEvent) {
  147. if (!cbb_company_for_book.getValue()) {
  148. queryEvent.cancel = true;
  149. }
  150. },
  151. 'select' : function(combo, record, index) {
  152. address += cbb_dept_for_book.getValue();
  153. bookForm.getForm().findField('book.address').setValue(address);
  154. }
  155. }
  156. });
  157. var bookEditForm = new Ext.FormPanel({
  158. url : 'updateBook.action',
  159. labelAlign : 'right',
  160. labelWidth : 70,
  161. bodyStyle : 'padding:5px',
  162. border : false,
  163. fileUpload : true,
  164. baseCls : 'x-plain',
  165. items : [{
  166. layout : 'column',
  167. border : false,
  168. baseCls : 'x-plain',
  169. items : [{
  170. columnWidth : .5,
  171. layout : 'form',
  172. baseCls : 'x-plain',
  173. border : false,
  174. defaultType : 'textfield',
  175. defaults : {anchor : '93%'},
  176. items : [{
  177. xtype : 'hidden',
  178. name : 'bookId'
  179. },{
  180. fieldLabel : '图书名称',
  181. name : 'bookName',
  182. allowBlank : false,
  183. maxLength : 50
  184. }, {
  185. xtype : 'combo',
  186. fieldLabel : '所属分类',
  187. id : 'category_edit',
  188. hiddenName : 'categoryId',
  189. valueField : 'categoryId',
  190. displayField : 'categoryName',
  191. mode : 'remote',
  192. store : new Ext.data.Store({
  193. autoLoad : true,
  194. proxy : new Ext.data.HttpProxy({
  195. url : 'findAllCategoryName.action'
  196. }),
  197. reader : new Ext.data.JsonReader({
  198. root : 'root'
  199. }, [{name : 'categoryId',type : 'int'},
  200. {name : 'categoryName',type : 'string'}
  201. ])
  202. }),
  203. selectOnFocus : true,
  204. editable : false,
  205. triggerAction : 'all',
  206. loadingText : '加载中...',
  207. listeners : {
  208. 'select' : function(combo, record, index) {
  209. this.ownerCt.ownerCt.ownerCt.form.findField('categoryName').setValue(record.data.categoryName);
  210. }
  211. }
  212. },  {xtype : 'hidden',name : 'categoryName'}, 
  213. {xtype : 'hidden',name : 'imageUrl'},
  214. {fieldLabel : '作者',name : 'author',maxLength : 50}, 
  215. {fieldLabel : 'ISBN',name : 'isbn', maxLength : 50}, 
  216. {fieldLabel : '字数', name : 'wordCount',maxLength : 25}, 
  217. {fieldLabel : '页数',name : 'pageCount',maxLength : 25}, 
  218. {fieldLabel : '开本',name : 'bookSize', maxLength : 25}, 
  219. {fieldLabel : '封面图片', name : 'upload',inputType : 'file'}]
  220. }, {
  221. columnWidth : .5,
  222. layout : 'form',
  223. border : false,
  224. baseCls : 'x-plain',
  225. defaultType : 'textfield',
  226. defaults : {anchor : '93%'},
  227. items : [
  228. {fieldLabel : '出版社',name : 'press',maxLength : 50}, 
  229. {fieldLabel : '定价(元)',xtype : 'numberfield',name : 'price',maxValue : 1000}, 
  230. {fieldLabel : '版次',name : 'editionNo',maxLength : 25}, 
  231. {fieldLabel : '纸张',name : 'paper',maxLength : 25}, 
  232. {fieldLabel : '包装',name : 'pack',maxLength : 25}, 
  233. {xtype : 'hidden',name : 'address',maxLength : 50}, 
  234. {xtype : 'hidden',value : '1',name : 'state'}, 
  235. cbb_company_for_book_update, cbb_dept_for_book_update]
  236. }]
  237. },{
  238. xtype : 'panel',
  239. baseCls : 'x-plain',
  240. bodyBorder : false,
  241. layout : 'form',
  242. defaultType : 'textarea',
  243. defaults : {anchor:'95%'},
  244. items : [{fieldLabel : '内容简介',name : 'description',maxLength : 500}, 
  245.  {fieldLabel : '编辑推荐',name : 'editorRecommend',maxLength : 500}, 
  246.  {fieldLabel : '作者简介',name : 'authorDesc',maxLength : 500}]
  247. }],
  248. buttonAlign : 'center',
  249. minButtonWidth : 60,
  250. buttons : [{
  251. text : '修改',
  252. handler : function(btn){
  253. if (bookEditForm.getForm().isValid()) {
  254. btn.disable();
  255. bookEditForm.getForm().submit({
  256. waitTitle : '请稍候',
  257. waitMsg : '正在修改数据,请稍候...',
  258. success : function(form,action) {
  259. Ext.Msg.show({
  260. title : '成功提示',
  261. msg : '数据修改成功!',
  262. buttons : Ext.Msg.OK,
  263. fn : function(){btn.enable()},
  264. icon : Ext.Msg.INFO
  265. });
  266. var store = grid_book.getStore();
  267. var book = new Book({
  268. bookId : form.findField('bookId').getValue(),
  269. bookName : form.findField('bookName').getValue(),
  270. categoryId : form.findField('categoryId').getValue(),
  271. categoryName : Ext.get('category_edit').dom.value,
  272. author : form.findField('author').getValue(),
  273. press : form.findField('press').getValue(),
  274. price : form.findField('price').getValue(),
  275. editionNo : form.findField('editionNo').getValue(),
  276. isbn : form.findField('isbn').getValue(),
  277. wordCount : form.findField('wordCount').getValue(),
  278. pageCount : form.findField('pageCount').getValue(),
  279. bookSize : form.findField('bookSize').getValue(),
  280. paper : form.findField('paper').getValue(),
  281. pack : form.findField('pack').getValue(),
  282. imageUrl : action.result.imageUrl,
  283. address : form.findField('address').getValue(),
  284. description : form.findField('description').getValue(),
  285. editorRecommend : form.findField('editorRecommend').getValue(),
  286. authorDesc : form.findField('authorDesc').getValue(),
  287. state : form.findField('state').getValue()
  288. });
  289. var index = store.indexOf(grid_book.getSelectionModel().getSelected());
  290. store.remove(grid_book.getSelectionModel().getSelected());
  291. store.insert(index,book);
  292. grid_book.getSelectionModel().selectRow(index);
  293. },
  294. failure : function(form, action) {
  295. Ext.Msg.show({
  296. title : '错误提示',
  297. msg : action.result.contentTypeIsValid ? '操作失败' : '操作失败,文件类型不正确!',
  298. buttons : Ext.Msg.OK,
  299. fn : function() {btn.enable();},
  300. icon : Ext.Msg.ERROR
  301. });
  302. }
  303. });
  304. }
  305. }
  306. },{
  307. text : '重置',
  308. handler : function() {
  309. var record = grid_book.getSelectionModel().getSelected();
  310. if(record){
  311. bookEditForm.getForm().loadRecord(record);
  312. bookEditForm.getForm().findField('_companyName').setValue('');
  313. bookEditForm.getForm().findField('_deptNo').setValue('');
  314. bookEditForm.getForm().findField('upload').setValue('');
  315. }
  316. }
  317. }, {
  318. text : '取消',
  319. handler : function() {this.ownerCt.ownerCt.hide();}
  320. }]
  321. });
  322. var ds_user_select = new Ext.data.Store({
  323. url : 'findUserByExample.action',
  324. reader : new Ext.data.JsonReader({
  325. root : 'root'
  326. }, [{name : 'userId',type : 'int'}, 
  327. {name : 'emplName',type : 'string'}
  328. ])
  329. })
  330.  
  331. var loanLogForm = new Ext.FormPanel({
  332. url : 'saveLoanLog.action',
  333. labelAlign : 'right',
  334. labelWidth : 80,
  335. bodyStyle : 'padding:5px',
  336. border : false,
  337. baseCls : 'x-plain',
  338. defaultType : 'combo',
  339. defaults : {anchor:'95%'},
  340. items : [
  341.    {xtype : 'hidden',name : 'loanLog.bookId'},
  342.    {xtype : 'hidden',name : 'loanLog.bookName',id:'bookName'},
  343.    {xtype : 'textfield',fieldLabel : '图书名称',name : '_bookName',disabled:true},
  344.    {fieldLabel : '借出天数',
  345. valueField : 'loanDays',
  346. displayField : 'loanDays',
  347. hiddenName : 'loanLog.loanDays', 
  348. mode : 'local',
  349. triggerAction : 'all',
  350. editable : false,
  351. allowBlank : false,
  352. store : new Ext.data.SimpleStore({
  353.         fields: ['loanDays', 'loanDays'],
  354.         data : [['1','1'],['2','2'],['3','3'],['4','4'],['5','5'],['6','6'],['7','7'],['8','8'],['9','9'],['10','10'],['11','11'],['12','12'],['13','13'],['14','14'],['15','15'],['16','16'],['17','17'],['18','18'],['19','19'],['20','20'],['21','21'],['22','22'],['23','23'],['24','24'],['25','25'],['26','26'],['27','27'],['28','28'],['29','29'],['30','30']]}),
  355.     listeners : {
  356.      'select': function(combo, record){
  357. var dt = new Date().add(Date.DAY,new Number(record.data.loanDays));
  358.      loanLogForm.getForm().findField('_preReturnTime').setValue(dt.format('Y-m-d'));
  359.      loanLogForm.getForm().findField('loanLog.preReturnTime').setValue(dt.format('Y-m-d'));
  360.      }
  361.     }},
  362.     {xtype : 'hidden',name : 'loanLog.preReturnTime'},
  363.     {xtype : 'textfield',fieldLabel : '预计还书日期',name:'_preReturnTime',disabled : true},
  364.     {fieldLabel : '所属分公司',
  365.  name : 'companyName',
  366.  editable : false,
  367.  valueField : 'companyId',
  368.  displayField : 'companyName',
  369.  mode : 'remote',
  370.  store : ds_company_select,
  371.  triggerAction : 'all',
  372.  loadingText : '加载中...',
  373.  listeners : {
  374.   'select': function(combo,record){
  375.   loanLogForm.getForm().findField('deptNo').reset();
  376.   loanLogForm.getForm().findField('loanLog.reader').reset();
  377.   ds_dept_select.baseParams.companyId = record.data.companyId;
  378. ds_dept_select.reload();
  379. ds_user_select.removeAll();
  380.   }
  381.  }},
  382. {fieldLabel : '所属部门',
  383.  name : 'deptNo',
  384.  editable : false,
  385.  valueField : 'deptId',
  386.  displayField : 'deptName',
  387.  mode : 'remote',
  388.  store : ds_dept_select,
  389.  triggerAction : 'all',
  390.  loadingText : '加载中...',
  391.  listeners : {
  392.  'beforequery' : function(queryEvent) {
  393. if (!this.ownerCt.form.findField('companyName').getValue()) {
  394. queryEvent.cancel = true;
  395. }
  396.  },
  397.  'select' : function(combo, record) {
  398.   loanLogForm.getForm().findField('loanLog.reader').reset();
  399.   ds_user_select.baseParams['user.deptId'] = record.data.deptId;
  400.   ds_user_select.reload();
  401.  }
  402.  }
  403. },{xtype:'hidden',name:'loanLog.readerId'},
  404. {fieldLabel : '借书人',
  405.  hiddenName : 'loanLog.reader',
  406.  editable : false,
  407.  allowBlank : false,
  408.  displayField : 'emplName',
  409.  mode : 'local',
  410.  triggerAction : 'all',
  411.  loadingText : '加载中...',
  412.  store : ds_user_select,
  413.  listeners : {
  414.   'select' : function(combo,record){
  415.   loanLogForm.getForm().findField('loanLog.readerId').setValue(record.data.userId);
  416.   }
  417.  }
  418. }
  419.   ],
  420. buttonAlign : 'right',
  421. minButtonWidth : 60,
  422. buttons : [{
  423. text:'借出',
  424. handler : function(){
  425. if(this.ownerCt.getForm().isValid()){
  426. Ext.Msg.confirm('操作提示','确认借出?',function(btn){
  427. if('yes' == btn){
  428. loanLogForm.getForm().submit({
  429. success: function(form){
  430. Ext.Msg.show({
  431. title : '成功提示',
  432. msg : '[' + form.findField('loanLog.bookName').getValue() + '] 成功借出!',
  433. icon : Ext.Msg.INFO,
  434. buttons : Ext.Msg.OK,
  435. fn:function(){
  436. window_loan_book.hide();
  437. var record = grid_book.getSelectionModel().getSelected();
  438. record.set('state',0);
  439. grid_book.fireEvent('rowclick',grid_book,grid_book.getStore().indexOf(record));
  440. }
  441. });
  442. },
  443. failure : function(form,action){
  444. Ext.Msg.show({
  445. title : '错误提示',
  446. msg : '[' + form.findField('loanLog.bookName').getValue() + '] 借出失败!',
  447. icon : Ext.Msg.ERROR,
  448. buttons : Ext.Msg.OK
  449. });
  450. }
  451. });
  452. }
  453. });
  454. }
  455. }
  456. },{
  457. text : '取消',
  458. handler:function(){
  459. this.ownerCt.ownerCt.hide();
  460. }
  461. }]
  462. });
  463. var bookForm = new Ext.FormPanel({
  464. url : 'saveBook.action',
  465. labelAlign : 'right',
  466. labelWidth : 70,
  467. bodyStyle : 'padding:5px',
  468. border : false,
  469. fileUpload : true,
  470. baseCls : 'x-plain',
  471. items : [{
  472. layout : 'column',
  473. border : false,
  474. baseCls : 'x-plain',
  475. items : [{
  476. columnWidth : .5,
  477. layout : 'form',
  478. baseCls : 'x-plain',
  479. border : false,
  480. defaultType : 'textfield',
  481. defaults : {anchor : '93%'},
  482. items : [{
  483. fieldLabel : '图书名称',
  484. id : 'book.bookName',
  485. name : 'book.bookName',
  486. allowBlank : false,
  487. maxLength : 50
  488. }, {
  489. xtype : 'combo',
  490. fieldLabel : '所属分类',
  491. id : 'category',
  492. hiddenName : 'book.categoryId',
  493. valueField : 'categoryId',
  494. displayField : 'categoryName',
  495. mode : 'remote',
  496. store : ds_category_select,
  497. selectOnFocus : true,
  498. editable : false,
  499. triggerAction : 'all',
  500. loadingText : '加载中...',
  501. listeners : {
  502. 'select' : function(combo, record, index) {
  503. this.ownerCt.ownerCt.ownerCt.form.findField('book.categoryName').setValue(record.data.categoryName);
  504. }
  505. }
  506. },  {xtype : 'hidden',name : 'book.categoryName'}, 
  507. {fieldLabel : '作者',name : 'book.author',maxLength : 50}, 
  508. {fieldLabel : 'ISBN',name : 'book.isbn', maxLength : 50}, 
  509. {fieldLabel : '字数', name : 'book.wordCount',maxLength : 25}, 
  510. {fieldLabel : '页数',name : 'book.pageCount',maxLength : 25}, 
  511. {fieldLabel : '开本',name : 'book.bookSize', maxLength : 25}, 
  512. {fieldLabel : '封面图片', name : 'upload',inputType : 'file'}]
  513. }, {
  514. columnWidth : .5,
  515. layout : 'form',
  516. border : false,
  517. baseCls : 'x-plain',
  518. defaultType : 'textfield',
  519. defaults : {anchor : '93%'},
  520. items : [
  521. {fieldLabel : '出版社',name : 'book.press',maxLength : 50}, 
  522. {fieldLabel : '定价(元)',xtype : 'numberfield',name : 'book.price',maxValue : 1000}, 
  523. {fieldLabel : '版次',name : 'book.editionNo',maxLength : 25}, 
  524. {fieldLabel : '纸张',name : 'book.paper',maxLength : 25}, 
  525. {fieldLabel : '包装',name : 'book.pack',maxLength : 25}, 
  526. {xtype : 'hidden',name : 'book.address',maxLength : 50}, 
  527. {xtype : 'hidden',value : '1',name : 'book.state'}, 
  528. cbb_company_for_book, cbb_dept_for_book]
  529. }]
  530. }, {
  531. xtype : 'tabpanel',
  532. plain : true,
  533. bodyBorder : false,
  534. activeTab : 0,
  535. height : 200,
  536. defaults : {bodyStyle : 'padding:2px'},
  537. items : [
  538. {title : '内容简介',layout : 'fit',items : {xtype : 'textarea',name : 'book.description',maxLength : 500}}, 
  539. {title : '编辑推荐',layout : 'fit',items : {xtype : 'textarea',name : 'book.editorRecommend',maxLength : 500}}, 
  540. {title : '作者简介',layout : 'fit',items : {xtype : 'textarea',name : 'book.authorDesc',maxLength : 500}
  541. }]
  542. }],
  543. buttonAlign : 'center',
  544. minButtonWidth : 60,
  545. buttons : [{
  546. text : '添加',
  547. handler : function(btn) {
  548. if (bookForm.getForm().isValid()) {
  549. btn.disable();
  550. var bnfield = bookForm.getForm().findField('book.bookName');
  551. bookForm.getForm().submit({
  552. waitTitle : '请稍候',
  553. waitMsg : '正在提交表单数据,请稍候...',
  554. success : function(form, action) {
  555. var store = grid_book.getStore();
  556. if (store.data.length <= 20) {
  557. var description = '', editorRecommend = '', authorDesc = '';
  558. if (form.findField('book.description')) {
  559. description = form.findField('book.description').getValue();
  560. }
  561. if (form.findField('book.editorRecommend')) {
  562. editorRecommend = form.findField('book.editorRecommend').getValue();
  563. }
  564. if (form.findField('book.authorDesc')) {
  565. authorDesc = form.findField('book.authorDesc').getValue();
  566. }
  567. var book = new Book({
  568. bookId : action.result.bookId,
  569. bookName : bnfield.getValue(),
  570. categoryId : form.findField('book.categoryId').getValue(),
  571. categoryName : Ext.get('category').dom.value,
  572. author : form.findField('book.author').getValue(),
  573. press : form.findField('book.press').getValue(),
  574. price : form.findField('book.price').getValue(),
  575. editionNo : form.findField('book.editionNo').getValue(),
  576. isbn : form.findField('book.isbn').getValue(),
  577. wordCount : form.findField('book.wordCount').getValue(),
  578. pageCount : form.findField('book.pageCount').getValue(),
  579. bookSize : form.findField('book.bookSize').getValue(),
  580. paper : form.findField('book.paper').getValue(),
  581. pack : form.findField('book.pack').getValue(),
  582. imageUrl : action.result.imageUrl,
  583. address : form.findField('book.address').getValue(),
  584. description : description,
  585. editorRecommend : editorRecommend,
  586. authorDesc : authorDesc,
  587. state : form.findField('book.state').getValue()
  588. });
  589. store.insert(0, [book]);
  590. if (store.data.length > 20) {
  591. store.remove(store.getAt(store.data.length- 1));
  592. }
  593. }
  594. Ext.Msg.show({
  595. title : '提示',
  596. msg : '[ ' + bnfield.getValue() + ' ]   添加成功!!',
  597. buttons : Ext.MessageBox.OK,
  598. icon : Ext.Msg.INFO
  599. });
  600. bnfield.reset();
  601. btn.enable();
  602. },
  603. failure : function(form, action) {
  604. Ext.Msg.show({
  605. title : '错误提示',
  606. msg : action.result.contentTypeIsValid ? '操作失败' : '操作失败,文件类型不正确!',
  607. buttons : Ext.Msg.OK,
  608. fn : function() {bnfield.focus(true);btn.enable();},
  609. icon : Ext.Msg.ERROR
  610. });
  611. }
  612. });
  613. }
  614. }
  615. }, {
  616. text : '重置',
  617. handler : function() {this.ownerCt.form.reset();}
  618. }, {
  619. text : '取消',
  620. handler : function() {this.ownerCt.ownerCt.hide();}
  621. }]
  622. });
  623. var window_edit_book = new Ext.Window({
  624. title : '编辑图书信息',
  625. width : 620,
  626. resizable : false,
  627. autoHeight : true,
  628. modal : true,
  629. closeAction : 'hide',
  630. items : [bookEditForm]
  631. });
  632. var window_loan_book = new Ext.Window({
  633. title : '借书管理',
  634. width : 400,
  635. resizable : false,
  636. autoHeight : true,
  637. modal : true,
  638. closeAction : 'hide',
  639. listeners : {
  640. 'hide' : function(){
  641. this.findById('bookName').ownerCt.form.reset();
  642. }
  643. },
  644. items : [loanLogForm]
  645. });
  646. var window_add_book = new Ext.Window({
  647. title : '添加图书',
  648. width : 600,
  649. resizable : false,
  650. autoHeight : true,
  651. modal : true,
  652. closeAction : 'hide',
  653. listeners : {
  654. 'hide' : function() {
  655. this.findById('book.bookName').ownerCt.ownerCt.ownerCt.form.reset();
  656. }
  657. },
  658. items : [bookForm]
  659. });
  660. var btn_loan_book = new Ext.Button({
  661. text : '借书管理',
  662. handler : function(){
  663. var record = grid_book.getSelectionModel().getSelected();
  664. if(record){
  665. window_loan_book.show();
  666. loanLogForm.getForm().findField('loanLog.bookId').setValue(record.data.bookId);
  667. loanLogForm.getForm().findField('loanLog.bookName').setValue(record.data.bookName);
  668. loanLogForm.getForm().findField('_bookName').setValue(record.data.bookName);
  669. }
  670. }
  671. });
  672. var btn_return_book = new Ext.Button({
  673. text : '确认还书',
  674. handler : function(){
  675. var record = grid_book.getSelectionModel().getSelected();
  676. if(record){
  677. var bookId = record.data.bookId;
  678. Ext.Ajax.request({
  679. url: 'returnBook.action',
  680.     success: function(){
  681.     Ext.Msg.show({
  682. title : '成功提示',
  683. msg : '还书操作成功!',
  684. buttons : Ext.Msg.OK,
  685. icon : Ext.Msg.INFO,
  686. fn : function(){
  687. record.set('state',1);
  688. record.set('currentReader',''),
  689. grid_book.fireEvent('rowclick',grid_book,grid_book.getStore().indexOf(record));
  690. }
  691. });
  692.     },
  693.     failure: function(){
  694.     Ext.Msg.show({
  695. title : '错误提示',
  696. msg : '还书操作失败!',
  697. buttons : Ext.Msg.OK,
  698. icon : Ext.Msg.ERROR
  699. });
  700.     },
  701.     params: { bookId: bookId}
  702. });
  703. }
  704. }
  705. });
  706. var btn_add_book = new Ext.Button({
  707. text : '添加图书',
  708. iconCls : 'icon-add',
  709. handler : function() {
  710. window_add_book.show();
  711. }
  712. });
  713. var btn_edit_book = new Ext.Button({
  714. text : '编辑图书',
  715. iconCls : 'icon-edit',
  716. handler : function(){
  717. var record = grid_book.getSelectionModel().getSelected();
  718. if(record){
  719. window_edit_book.show();
  720. bookEditForm.getForm().loadRecord(record);
  721. }
  722. }
  723. })
  724. var btn_del_book = new Ext.Button({
  725. text : '删除图书',
  726. iconCls : 'icon-del',
  727. handler : function() {
  728. var record = grid_book.getSelectionModel().getSelected();
  729. if (record) {
  730. Ext.Msg.confirm('确认删除', '你确定删除该条记录?', function(btn) {
  731. if (btn == 'yes') {
  732. Ext.Ajax.request({
  733. url : 'deleteBook.action',
  734. params : {bookId : record.data.bookId},
  735. success : function() {grid_book.getStore().remove(record);},
  736. failure : function() {
  737. Ext.Msg.show({
  738. title : '错误提示',
  739. msg : '删除时发生错误!',
  740. buttons : Ext.Msg.OK,
  741. icon : Ext.Msg.ERROR
  742. });
  743. }
  744. });
  745. }
  746. });
  747. }
  748. }
  749. });
  750. var searchBook = function() {
  751. ds_book.baseParams.conditions = text_search_book.getValue();
  752. ds_book.load({params : {start : 0,limit : 20}
  753. });
  754. }
  755. var ds_book = new Ext.data.Store({
  756. url : 'findAllBook.action',
  757. reader : new Ext.data.JsonReader(
  758. {totalProperty : 'totalProperty',root : 'root'}, 
  759.    [{name : 'bookId',type : 'int'}, 
  760. {name : 'bookName',type : 'string'}, 
  761. {name : 'author',type : 'string'}, 
  762. {name : 'press',type : 'string'},
  763. {name : 'price',type : 'string'}, 
  764. {name : 'editionNo',type : 'string'},
  765. {name : 'isbn',type : 'string'},
  766. {name : 'categoryId',type : 'int'},
  767. {name : 'categoryName',type : 'string'},
  768. {name : 'wordCount',type : 'string'},
  769. {name : 'pageCount',type : 'string'},
  770. {name : 'bookSize',type : 'string'},
  771. {name : 'paper',type : 'string'},
  772. {name : 'pack',type : 'string'},
  773. {name : 'imageUrl',type : 'string'},
  774. {name : 'address',type : 'string'},
  775. {name : 'editorRecommend',type : 'string'},
  776. {name : 'description',type : 'string'},
  777. {name : 'authorDesc',type : 'string'},
  778. {name : 'state',type : 'int'},
  779. {name : 'currentReaderId',type : 'int'},
  780. {name : 'currentReader',type : 'string'},
  781. {name : 'logId',type : 'int'}
  782. ])
  783. });
  784. var btn_search_book = new Ext.Button({
  785. text : '查询',
  786. iconCls : 'icon-search',
  787. handler : searchBook
  788. });
  789. var text_search_book = new Ext.form.TextField({
  790. name : 'textSearchBook',
  791. width : 200,
  792. emptyText : '多条件可用逗号或者空格隔开!',
  793. listeners : {
  794. 'specialkey' : function(field, e) {
  795. if (e.getKey() == Ext.EventObject.ENTER) {
  796. searchBook();
  797. }
  798. }
  799. }
  800. });
  801. var grid_book = new Ext.grid.GridPanel({
  802. region : 'center',
  803. loadMask : {msg : '数据加载中...'},
  804. enableColumnMove : false,
  805. cm : cm_book,
  806. ds : ds_book,
  807. sm : new Ext.grid.RowSelectionModel({singleSelect : true}),
  808. autoExpandColumn : 'address',
  809. viewConfig : {forceFit : true},
  810. plugins : expander,
  811. tbar : [btn_add_book, '-',btn_edit_book, '-', btn_del_book, '-', 
  812.    text_search_book,btn_search_book,'->',btn_loan_book,'-',btn_return_book],
  813. bbar : new Ext.PagingToolbar({
  814. pageSize : 20,
  815. store : ds_book,
  816. displayInfo : true,
  817. displayMsg : '第 {0} - {1} 条 共 {2} 条',
  818. emptyMsg : "没有记录"
  819. }),
  820. listeners : {
  821. 'rowdblclick':function(grid, rowIndex){
  822. ds_loanlog.baseParams.bookId = grid.getStore().getAt(rowIndex).data.bookId;
  823. ds_loanlog.load({params : {start : 0,limit : 10}});
  824. },
  825. 'rowclick':function(grid,rowIndex){
  826. btn_loan_book.setDisabled(grid.getStore().getAt(rowIndex).data.state == 0 ? true:false);
  827. btn_return_book.setDisabled(grid.getStore().getAt(rowIndex).data.state == 1 ? true:false);
  828. }
  829. }
  830. });
  831. var ds_loanlog =  new Ext.data.Store({
  832. url : 'findAllLoanLog.action',
  833. sortInfo : {field: 'loanTime', direction: 'DESC'},
  834. reader : new Ext.data.JsonReader(
  835. {totalProperty : 'totalProperty',root : 'root'}, 
  836.    [{name : 'logId',type : 'int'}, 
  837. {name : 'bookId',type : 'int'}, 
  838. {name : 'bookName',type : 'string'}, 
  839. {name : 'loanTime'},
  840. {name : 'loanDays',type : 'int'}, 
  841. {name : 'preReturnTime'},
  842. {name : 'returnTime'},
  843. {name : 'readerId',type : 'int'},
  844. {name : 'reader',type : 'string'},
  845. {name : 'loannerId',type : 'int'},
  846. {name : 'loanner',type : 'string'}]
  847. )
  848. });
  849. var dateFormat = function(v){
  850. if(v){
  851. return v.substring(0,10)
  852. }
  853. return '未归还';
  854. }
  855. LoanLogPanel = Ext.extend(Ext.grid.GridPanel,{
  856. constructor:function(){
  857. LoanLogPanel.superclass.constructor.call(this,{
  858. loadMask : {msg : '数据加载中...'},
  859. cm : new Ext.grid.ColumnModel([ 
  860. {header : '图书名称', width : 120,dataIndex : 'bookName',id : 'bookName',sortable : true}, 
  861. {header : '借书人', width : 90, dataIndex : 'reader',sortable : true},
  862. {header : '借出时间',width : 100, dataIndex : 'loanTime',renderer: dateFormat,sortable : true}, 
  863. {header : '借出天数',width : 100, dataIndex : 'loanDays',sortable : true}, 
  864. {header : '预计还书时间', width : 100,dataIndex : 'preReturnTime',renderer: dateFormat,sortable : true}, 
  865. {header : '实际还书时间', width : 100,dataIndex : 'returnTime',renderer:dateFormat,sortable : true}, 
  866. {header : '管理员', width : 100,dataIndex : 'loanner',menuDisabled : true}]
  867. ),
  868. autoExpandColumn : 'bookName',
  869. ds : ds_loanlog,
  870. sm : new Ext.grid.RowSelectionModel({singleSelect : true}),
  871. bbar : new Ext.PagingToolbar({
  872. pageSize : 10,
  873. store : ds_loanlog,
  874. displayInfo : true,
  875. displayMsg : '第 {0} - {1} 条 共 {2} 条',
  876. emptyMsg : "没有记录"}
  877. )
  878. });
  879. }
  880. });
  881. var book_panel = new Ext.Panel({
  882. title : '图书管理',
  883. iconCls : 'icon-plugin',
  884. region : 'center',
  885. border : 'layout',
  886. frame : true,
  887. layout:'border',
  888. defaults: {
  889.     collapsible: true,
  890.     split: true
  891. },
  892. items: [{
  893.     region:'center',
  894.     layout : 'border',
  895.     items : [grid_book]
  896. },{
  897.     region: 'south',
  898.     layout :'fit',
  899. title : '图书借还记录',
  900.     height: 250,
  901.     minSize: 150,
  902.     maxSize: 286,
  903.     items : [new LoanLogPanel()]
  904. }]
  905. });
  906. var p_book = {
  907. id : 'book-panel',
  908. border : false,
  909. layout : 'border',
  910. items : [book_panel]
  911. }