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

Web服务器

开发平台:

Java

  1. var Dept = Ext.data.Record.create([{
  2. name : 'deptId',
  3. mapping : 'deptId',
  4. type : 'int'
  5. }, {
  6. name : 'deptName',
  7. mapping : 'deptName',
  8. type : 'string'
  9. }, {
  10. name : 'companyId',
  11. mapping : 'companyId',
  12. type : 'int'
  13. }, {
  14. name : 'companyName',
  15. mapping : 'companyName',
  16. type : 'string'
  17. }, {
  18. name : 'address',
  19. mapping : 'address',
  20. type : 'string'
  21. }, {
  22. name : 'tellPhone',
  23. mapping : 'tellPhone',
  24. type : 'string'
  25. }, {
  26. name : 'leader',
  27. mapping : 'leader',
  28. type : 'string'
  29. }, {
  30. name : 'mobilePhone',
  31. mapping : 'mobilePhone',
  32. type : 'string'
  33. }, {
  34. name : 'remark',
  35. mapping : 'remark',
  36. type : 'string'
  37. }]);
  38. var ds_company_select = new Ext.data.Store({
  39. url : 'findAllCompanyName.action',
  40. reader : new Ext.data.JsonReader({
  41. root : 'root'
  42. }, [{
  43. name : 'companyId',
  44. type : 'int'
  45. }, {
  46. name : 'companyName',
  47. type : 'string'
  48. }])
  49. });
  50. var cm_dept = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
  51. header : '部门名称',
  52. width : 90,
  53. dataIndex : 'deptName',
  54. sortable : true,
  55. editor : new Ext.form.TextField({
  56. allowBlank : false,
  57. maxLength : 50
  58. })
  59. }, {
  60. header : '所属分公司',
  61. width : 90,
  62. sortable : true,
  63. dataIndex : 'companyName',
  64. editor : new Ext.form.ComboBox({
  65. store : ds_company_select,
  66. displayField : 'companyName',
  67. valueField : 'companyName',
  68. mode : 'remote',
  69. allowBlank : false,
  70. editable : false,
  71. triggerAction : 'all',
  72. listWidth : 130, // 因为列宽度默认比较小,所以设定下拉列表宽度
  73. listeners : {
  74. 'select' : function(combo, record, index) {
  75. companyId = record.data.companyId; // 获得分公司id,保存到全局
  76. }
  77. }
  78. })
  79. }, {
  80. header : '部门地址',
  81. width : 200,
  82. dataIndex : 'address',
  83. menuDisabled : true,
  84. editor : new Ext.form.TextField({
  85. maxLength : 70
  86. })
  87. }, {
  88. header : '部门电话',
  89. width : 85,
  90. dataIndex : 'tellPhone',
  91. menuDisabled : true,
  92. resizable : false,
  93. editor : new Ext.form.TextField({
  94. maxLength : 20
  95. })
  96. }, {
  97. header : '负责人',
  98. width : 60,
  99. dataIndex : 'leader',
  100. resizable : false,
  101. menuDisabled : true,
  102. editor : new Ext.form.TextField({
  103. allowBlank : false,
  104. maxLength : 20
  105. })
  106. }, {
  107. header : '联系电话',
  108. width : 85,
  109. dataIndex : 'mobilePhone',
  110. menuDisabled : true,
  111. resizable : false,
  112. editor : new Ext.form.TextField({
  113. maxLength : 20
  114. })
  115. }, {
  116. header : '备注',
  117. id : 'remark',
  118. dataIndex : 'remark',
  119. menuDisabled : true,
  120. editor : new Ext.form.TextField({
  121. maxLength : 200
  122. })
  123. }]);
  124. cm_dept.defaultSortable = false;
  125. var window_add_dept = new Ext.Window({
  126. title : '添加部门',
  127. width : 350,
  128. height : 440,
  129. resizable : false,
  130. autoHeight : true,
  131. modal : true,
  132. closeAction : 'hide',
  133. listeners : {
  134. 'hide' : function() {
  135. this.setTitle('添加部门');
  136. this.findById('dept.deptName').ownerCt.form.reset();
  137. }
  138. },
  139. items : [new Ext.FormPanel({
  140. labelWidth : 70,
  141. labelAlign : 'right',
  142. url : 'saveDept.action',
  143. border : false,
  144. baseCls : 'x-plain',
  145. bodyStyle : 'padding:5px 5px 0',
  146. anchor : '100%',
  147. defaults : {
  148. width : 233,
  149. msgTarget : 'side'
  150. },
  151. defaultType : 'textfield',
  152. items : [{
  153. fieldLabel : '部门名称',
  154. id : 'dept.deptName',
  155. name : 'dept.deptName',
  156. allowBlank : false,
  157. maxLength : 50
  158. }, {
  159. xtype : 'combo',
  160. fieldLabel : '所属分公司',
  161. id : 'company',
  162. hiddenName : 'dept.companyId',
  163. valueField : 'companyId',
  164. displayField : 'companyName',
  165. mode : 'remote',
  166. store : ds_company_select,
  167. selectOnFocus : true,
  168. editable : false,
  169. allowBlank : false,
  170. triggerAction : 'all',
  171. loadingText : '加载中...',
  172. emptyText : '公司名称',
  173. listeners : { // 获得下拉文本内容,解决id,value都要的情况
  174. 'select' : function(combo, record, index) {
  175. this.ownerCt.form.findField('dept.companyName').setValue(record.data.companyName);
  176. }
  177. }
  178. }, {
  179. xtype : 'hidden',
  180. name : 'dept.companyName'
  181. }, {
  182. fieldLabel : '部门地址',
  183. name : 'dept.address',
  184. maxLength : 70
  185. }, {
  186. fieldLabel : '部门电话',
  187. name : 'dept.tellPhone',
  188. maxLength : 20
  189. }, {
  190. fieldLabel : '负责人',
  191. name : 'dept.leader',
  192. allowBlank : false,
  193. maxLength : 20
  194. }, {
  195. fieldLabel : '联系电话',
  196. name : 'dept.mobilePhone',
  197. maxLength : 20
  198. }, {
  199. fieldLabel : '备注',
  200. name : 'dept.remark',
  201. xtype : 'textarea',
  202. maxLength : 200
  203. }],
  204. buttonAlign : 'right',
  205. minButtonWidth : 60,
  206. buttons : [{
  207. text : '添加',
  208. handler : function(btn) {
  209. var frm = this.ownerCt.form;
  210. if (frm.isValid()) {
  211. btn.disable();
  212. var dnfield = frm.findField('dept.deptName');
  213. frm.submit({
  214. waitTitle : '请稍候',
  215. waitMsg : '正在提交表单数据,请稍候...',
  216. success : function(form, action) {
  217. var store = grid_dept.getStore();
  218. if (store.data.length <= 20) {
  219. var dept = new Dept({
  220. deptId : action.result.deptId,
  221. deptName : dnfield.getValue(),
  222. companyId : form.findField('dept.companyId').getValue(),
  223. companyName : Ext.get('company').dom.value,
  224. address : form.findField('dept.address').getValue(),
  225. tellPhone : form.findField('dept.tellPhone').getValue(),
  226. leader : form.findField('dept.leader').getValue(),
  227. mobilePhone : form.findField('dept.mobilePhone').getValue(),
  228. remark : form.findField('dept.remark').getValue()
  229. });
  230. store.insert(0, [dept]);
  231. if (store.data.length > 20) {
  232. store.remove(store.getAt(store.data.length - 1));
  233. }
  234. }
  235. window_add_dept.setTitle('[ ' + dnfield.getValue() + ' ]   添加成功!!');
  236. dnfield.reset();
  237. btn.enable();
  238. },
  239. failure : function() {
  240. Ext.Msg.show({
  241. title : '错误提示',
  242. msg : '"' + dnfield.getValue() + '" ' + '名称可能已经存在!',
  243. buttons : Ext.Msg.OK,
  244. fn : function() {
  245. dnfield.focus(true);
  246. btn.enable();
  247. },
  248. icon : Ext.Msg.ERROR
  249. });
  250. }
  251. });
  252. }
  253. }
  254. }, {
  255. text : '重置',
  256. handler : function() {
  257. this.ownerCt.form.reset();
  258. }
  259. }, {
  260. text : '取消',
  261. handler : function() {
  262. this.ownerCt.ownerCt.hide();
  263. }
  264. }]
  265. })]
  266. });
  267. var btn_add_dept = new Ext.Button({
  268. text : '添加部门',
  269. iconCls : 'icon-add',
  270. handler : function() {
  271. window_add_dept.show();
  272. }
  273. });
  274. var btn_del_dept = new Ext.Button({
  275. text : '删除部门',
  276. iconCls : 'icon-del',
  277. handler : function() {
  278. var record = grid_dept.getSelectionModel().getSelected();
  279. if (record) {
  280. Ext.Msg.confirm('确认删除', '你确定删除该条记录?', function(btn) {
  281. if (btn == 'yes') {
  282. Ext.Ajax.request({
  283. url : 'deleteDept.action',
  284. params : {
  285. deptId : record.data.deptId
  286. },
  287. success : function() {
  288. grid_dept.getStore().remove(record);
  289. },
  290. failure : function() {
  291. Ext.Msg.show({
  292. title : '错误提示',
  293. msg : '删除时发生错误!',
  294. buttons : Ext.Msg.OK,
  295. icon : Ext.Msg.ERROR
  296. });
  297. }
  298. });
  299. }
  300. });
  301. }
  302. }
  303. });
  304. var searchDept = function() {
  305. ds_dept.baseParams.conditions = text_search_dept.getValue();// + ',' +
  306. // cbb_company_for_dept.getValue();
  307. ds_dept.load({
  308. params : {
  309. start : 0,
  310. limit : 20
  311. }
  312. });
  313. }
  314. var btn_search_dept = new Ext.Button({
  315. text : '查询',
  316. iconCls : 'icon-search',
  317. handler : searchDept
  318. });
  319. var cbb_company_for_dept = new Ext.form.ComboBox({
  320. name : 'companyName',
  321. width : 120,
  322. displayField : 'companyName',
  323. mode : 'remote',
  324. store : ds_company_select,
  325. selectOnFocus : true,
  326. triggerAction : 'all',
  327. loadingText : '加载中...',
  328. emptyText : '公司名称'
  329. });
  330. var text_search_dept = new Ext.form.TextField({
  331. name : 'textSearchDept',
  332. width : 200,
  333. emptyText : '多条件可用逗号或者空格隔开!',
  334. listeners : {
  335. 'specialkey' : function(field, e) {
  336. if (e.getKey() == Ext.EventObject.ENTER) {
  337. searchDept();
  338. }
  339. }
  340. }
  341. });
  342. var ds_dept = new Ext.data.Store({
  343. proxy : new Ext.data.HttpProxy({
  344. url : 'findAllDept.action'
  345. }),
  346. reader : new Ext.data.JsonReader({
  347. totalProperty : 'totalProperty',
  348. root : 'root'
  349. }, [{
  350. name : 'deptId',
  351. type : 'int'
  352. }, {
  353. name : 'deptName',
  354. type : 'string'
  355. }, {
  356. name : 'companyId',
  357. type : 'int'
  358. }, {
  359. name : 'companyName',
  360. type : 'string'
  361. }, {
  362. name : 'address',
  363. type : 'string'
  364. }, {
  365. name : 'tellPhone',
  366. type : 'string'
  367. }, {
  368. name : 'leader',
  369. type : 'string'
  370. }, {
  371. name : 'mobilePhone',
  372. type : 'string'
  373. }, {
  374. name : 'remark',
  375. type : 'string'
  376. }])
  377. });
  378. var companyId; // 存储部门修改时分公司下拉的分公司id
  379. var grid_dept = new Ext.grid.EditorGridPanel({
  380. title : '部门管理',
  381. iconCls : 'icon-plugin',
  382. region : 'center',
  383. loadMask : {
  384. msg : '数据加载中...'
  385. },
  386. cm : cm_dept,
  387. ds : ds_dept,
  388. sm : new Ext.grid.RowSelectionModel({
  389. singleSelect : true
  390. }),
  391. enableColumnMove : false,
  392. trackMouseOver : false,
  393. frame : true,
  394. autoExpandColumn : 'remark',
  395. clicksToEdit : 1,
  396. tbar : [btn_add_dept, '-', btn_del_dept, '-', // cbb_company_for_dept,
  397. // '-', '&nbsp;&nbsp;',
  398. text_search_dept, btn_search_dept],
  399. bbar : new Ext.PagingToolbar({
  400. pageSize : 20,
  401. store : ds_dept,
  402. displayInfo : true,
  403. displayMsg : '第 {0} - {1} 条  共 {2} 条',
  404. emptyMsg : "没有记录"
  405. }),
  406. listeners : {
  407. 'afteredit' : function(e) {
  408. Ext.Ajax.request({
  409. url : 'updateDept.action',
  410. params : {
  411. fieldName : e.field,
  412. fieldValue : e.value,
  413. companyId : e.field == 'companyName' ? companyId : null,
  414. deptId : e.record.data.deptId
  415. },
  416. success : function() {
  417. // alert("数据修改成功!");
  418. },
  419. failure : function() {
  420. Ext.Msg.show({
  421. title : '错误提示',
  422. msg : '修改数据发生错误,操作将被回滚!',
  423. fn : function() {
  424. e.record.set(e.field, e.originalValue);
  425. },
  426. buttons : Ext.Msg.OK,
  427. icon : Ext.Msg.ERROR
  428. });
  429. }
  430. });
  431. }
  432. }
  433. });
  434. var p_dept = {
  435. id : 'dept-panel',
  436. border : false,
  437. layout : 'border',
  438. items : [grid_dept]
  439. }