Employee.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.hr.emplmana.Employee', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'hr.emplmana.Employee','core.form.Panel','core.button.Add','core.button.Save','core.button.Close',
  9. 'core.button.Sync','core.button.ResAudit','core.button.Submit','core.button.Audit','core.button.Update',
  10. 'core.button.Delete','core.form.YnField', 'core.trigger.MasterTrigger','core.trigger.TextAreaTrigger',
  11. 'core.trigger.DbfindTrigger','core.form.PhotoField','core.button.ResSubmit'
  12. ],
  13. refs : [ {
  14. ref : 'grid',
  15. selector : 'gridpanel'
  16. },{
  17. ref : 'grid1',
  18. selector : 'gridpanel1'
  19. }],
  20. init:function(){
  21. var me = this;
  22. this.control({
  23. /*'erpFormPanel textfield[name=em_code]': {
  24. change: function(field){
  25. if(field.value != em_code){//只能看见自己的密码
  26. if(Ext.getCmp('em_type').value != 'admin'){
  27. Ext.getCmp('em_password').hide();
  28. }
  29. }
  30. }
  31. },*/
  32. /*'field[name=em_password]': {
  33. afterrender: function(f){
  34. f.hide();
  35. //f.el.dom.getElementsByTagName('input')[0].type = "password";
  36. }
  37. },*/
  38. 'field[name=em_mailpassword]': {
  39. afterrender: function(f){
  40. f.el.dom.getElementsByTagName('input')[0].type = "password";
  41. }
  42. },
  43. 'erpSaveButton': {
  44. click: function(btn){
  45. this.beforeSave();
  46. }
  47. },
  48. 'erpCloseButton': {
  49. click: function(btn){
  50. this.FormUtil.beforeClose(this);
  51. }
  52. },
  53. 'erpUpdateButton': {
  54. click: function(btn){
  55. this.beforeUpdate();
  56. }
  57. },
  58. 'erpDeleteButton': {
  59. afterrender: function(btn){
  60. var status = Ext.getCmp('em_statuscode');
  61. if(status && status.value == 'AUDITED'){
  62. btn.hide();
  63. }
  64. },
  65. click: function(btn){
  66. me.FormUtil.onDelete(Ext.getCmp('em_id').value);
  67. }
  68. },
  69. 'erpSubmitButton': {
  70. afterrender: function(btn){
  71. var status = Ext.getCmp('em_statuscode');
  72. if(status && status.value != 'ENTERING'){
  73. btn.hide();
  74. }
  75. },
  76. click: function(btn){
  77. me.FormUtil.onSubmit(Ext.getCmp('em_id').value, true);
  78. }
  79. },
  80. 'erpResSubmitButton': {
  81. afterrender: function(btn){
  82. var status = Ext.getCmp('em_statuscode');
  83. if(status && status.value != 'COMMITED'){
  84. btn.hide();
  85. }
  86. },
  87. click: function(btn){
  88. me.FormUtil.onResSubmit(Ext.getCmp('em_id').value);
  89. }
  90. },
  91. 'erpAuditButton': {
  92. afterrender: function(btn){
  93. var status = Ext.getCmp('em_statuscode');
  94. if(status && status.value != 'COMMITED'){
  95. btn.hide();
  96. }
  97. },
  98. click: function(btn){
  99. me.FormUtil.onAudit(Ext.getCmp('em_id').value);
  100. }
  101. },
  102. 'erpResAuditButton': {
  103. afterrender: function(btn){
  104. var status = Ext.getCmp('em_statuscode');
  105. if(status && status.value != 'AUDITED'){
  106. btn.hide();
  107. }
  108. },
  109. click: function(btn){
  110. me.FormUtil.onResAudit(Ext.getCmp('em_id').value);
  111. }
  112. },
  113. 'erpAddButton': {
  114. click: function(){
  115. me.FormUtil.onAdd('addEmployee', '新增员工', 'jsps/hr/emplmana/employee/employee.jsp');
  116. }
  117. },
  118. 'erpSyncButton':{
  119. beforerender:function(btn){
  120. btn.sync=function() {
  121. var masters = btn.getCheckData(), form = Ext.getCmp('form'), w = this.win, me = btn,
  122. datas = btn.syncdatas, cal;
  123. if(!datas && form && form.keyField && Ext.getCmp(form.keyField)
  124. && Ext.getCmp(form.keyField).value > 0) {
  125. datas = Ext.getCmp(form.keyField).value;
  126. }
  127. if(cal == null)
  128. cal = caller + '!Post';
  129. if (!Ext.isEmpty(masters)) {
  130. w.setLoading(true);
  131. Ext.Ajax.request({
  132. url: basePath + 'hr/emplmana/vastPost.action',
  133. params: {
  134. caller: cal,
  135. datas: datas,
  136. to: masters
  137. },
  138. callback: function(opt, s, r) {
  139. w.setLoading(false);
  140. var rs = new Ext.decode(r.responseText);
  141. if(rs.exceptionInfo){
  142. showError(rs.exceptionInfo);
  143. }
  144. if(rs.success){
  145. alert('同步成功!');
  146. w.hide();
  147. if(me.autoClearCache) {
  148. me.clearCache();
  149. }
  150. me.fireEvent('aftersync', me, cal, datas, masters);
  151. }
  152. }
  153. });
  154. }
  155. };
  156. }
  157. },
  158. '#em_id': {
  159. afterrender: function(field) {
  160. var value = field.getValue();
  161. if(value && value > 0) {
  162. Ext.defer(function(){
  163. me.getJobs(value);
  164. }, 200);
  165. }
  166. }
  167. },
  168. '#em_code': {
  169. afterrender: function(field) {
  170. var value = field.getValue();
  171. if(value && value != 0 && value !='') {
  172. Ext.defer(function(){
  173. me.getJobs1(value);
  174. }, 200);
  175. }
  176. }
  177. },
  178. 'gridpanel': {
  179. itemclick: this.onGridItemClick
  180. },
  181. 'gridpanel1':{
  182. itemclick: this.onGridItemClick
  183. }
  184. });
  185. },
  186. getForm: function(btn){
  187. return btn.ownerCt.ownerCt;
  188. },
  189. beforeUpdate: function(){
  190. var me = this;
  191. var form = Ext.getCmp('form');
  192. var s1 = me.checkFormDirty(form);
  193. var s2 = '';
  194. var grids = Ext.ComponentQuery.query('gridpanel');
  195. if(grids.length > 0 && !grids[0].ignore){//check所有grid是否已修改
  196. Ext.each(grids, function(grid, index){
  197. if(grid.GridUtil){
  198. var msg = grid.GridUtil.checkGridDirty(grid);
  199. if(msg.length > 0){
  200. s2 = s2 + '<br/>' + msg;
  201. }
  202. }
  203. });
  204. }
  205. if(s1 == '' && (s2 == '' || s2 == '<br/>')){
  206. showError('还未添加或修改数据.');
  207. return;
  208. }
  209. if(! me.FormUtil.checkForm()){
  210. return;
  211. }
  212. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  213. me.FormUtil.getSeqId(form);
  214. }
  215. var grid = Ext.getCmp('grid');
  216. var grid1 = Ext.getCmp('grid1');
  217. var param1 = me.GridUtil.getGridStore(grid);
  218. var param2 = me.GridUtil.getGridStore(grid1);
  219. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  220. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  221. if(form.getForm().isValid()){
  222. Ext.each(form.items.items, function(item){
  223. if(item.xtype == 'numberfield'){
  224. if(item.value == null || item.value == ''){
  225. item.setValue(0);
  226. }
  227. }
  228. });
  229. var r = form.getValues();
  230. me.FormUtil.update(r, param1, param2);
  231. }else{
  232. me.FormUtil.checkForm();
  233. }
  234. },
  235. checkFormDirty: function(){
  236. var form = Ext.getCmp('form');
  237. var s = '';
  238. form.getForm().getFields().each(function (item,index, length){
  239. if(item.logic!='ignore'){
  240. var value = item.value == null ? "" : item.value;
  241. if(item.xtype == 'htmleditor') {
  242. value = item.getValue();
  243. }
  244. item.originalValue = item.originalValue == null ? "" : item.originalValue;
  245. if(Ext.typeOf(item.originalValue) != 'object'){
  246. if(item.originalValue.toString() != value.toString()){//isDirty、wasDirty、dirty一直都是true,没办法判断,所以直接用item.originalValue,原理是一样的
  247. var label = item.fieldLabel || item.ownerCt.fieldLabel ||
  248. item.boxLabel || item.ownerCt.title;//针对fieldContainer、radio、fieldset等
  249. if(label){
  250. s = s + '&nbsp;' + label.replace(/&nbsp;/g,'');
  251. }
  252. }
  253. }
  254. }
  255. });
  256. return (s == '') ? s : ('表单字段(<font color=green>'+s+'</font>)已修改');
  257. },
  258. beforeSave: function() {
  259. var me = this;
  260. var form = Ext.getCmp('form');
  261. if(! me.FormUtil.checkForm()){
  262. return;
  263. }
  264. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  265. me.FormUtil.getSeqId(form);
  266. }
  267. var grid = Ext.getCmp('grid');
  268. var grid1 = Ext.getCmp('grid1');
  269. var param1 = me.GridUtil.getGridStore(grid);
  270. var param2 = me.GridUtil.getGridStore(grid1); //在这里获取的数据为空
  271. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  272. param2 = param2 == null ? [1] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  273. if(form.getForm().isValid()){
  274. Ext.each(form.items.items, function(item){
  275. if(item.xtype == 'numberfield'){
  276. if(item.value == null || item.value == ''){
  277. item.setValue(0);
  278. }
  279. }
  280. });
  281. var r = form.getValues();
  282. me.FormUtil.save(r, param1, param2);
  283. }else{
  284. me.FormUtil.checkForm();
  285. }
  286. },
  287. getJobs: function(empId) {
  288. var me = this;
  289. me.FormUtil.getFieldsValues("job left join empsjobs on job_id=jo_id left join hrorg on org_id=or_id",
  290. 'jo_orgname,jo_name,jo_description,jo_id,or_id,or_name', 'emp_id=' +empId, [], function(data){
  291. var grid = me.getGrid();
  292. var datas = Ext.JSON.decode(data), _datas = [];
  293. if(datas.length > 0) {
  294. var keys = Ext.Object.getKeys(datas[0]);
  295. Ext.Array.each(datas, function(data){
  296. var temp = Ext.Object.getKeys(data);
  297. if(temp.length > keys.length){
  298. keys = temp;
  299. }
  300. });
  301. Ext.Array.each(datas, function(d){
  302. var obj = {};
  303. Ext.Array.each(keys, function(key){
  304. obj[key.toLowerCase()] = d[key];
  305. });
  306. _datas.push(obj);
  307. });
  308. }
  309. _datas.length > 0 && grid.store.loadData(_datas);
  310. grid.store.each(function(){
  311. this.dirty = true;
  312. });
  313. });
  314. },
  315. getJobs1: function(empCode) {
  316. var me = this;
  317. me.FormUtil.getFieldsValues("CS$EMPGROUP left join employee on eg_emcode=em_code",
  318. 'eg_emcode,eg_id,eg_groupcode,eg_name', 'em_code=' + "'"+empCode+"'", [], function(data){
  319. /*var grid=me.getGrid();*/
  320. var datas = Ext.JSON.decode(data), _datas = [];
  321. if(datas.length > 0) {
  322. var keys = Ext.Object.getKeys(datas[0]);
  323. Ext.Array.each(datas, function(data){
  324. var temp = Ext.Object.getKeys(data);
  325. if(temp.length > keys.length){
  326. keys = temp;
  327. }
  328. });
  329. Ext.Array.each(datas, function(d){
  330. var obj = {};
  331. Ext.Array.each(keys, function(key){
  332. obj[key.toLowerCase()] = d[key];
  333. });
  334. _datas.push(obj);
  335. });
  336. }
  337. var grid = Ext.getCmp('grid1');
  338. _datas.length > 0 && grid.store.loadData(_datas);
  339. grid.store.each(function(){
  340. this.dirty = true;
  341. });
  342. });
  343. },
  344. onGridItemClick: function(selModel, record) {
  345. this.GridUtil.onGridItemClick(selModel, record);
  346. }
  347. });