KBIbill.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.hr.kbi.KBIbill', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. GridUtil: Ext.create('erp.util.GridUtil'),
  7. views:[
  8. 'hr.kbi.KBIbill','core.form.Panel','core.form.FileField','core.form.MultiField','core.form.CheckBoxGroup','core.trigger.MultiDbfindTrigger',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.ResSubmit','core.grid.Panel2',
  11. 'core.button.TurnCustomer','core.button.Flow','core.button.DownLoad','core.button.Scan','common.datalist.Toolbar','core.button.Confirm',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.trigger.AutoCodeTrigger','core.trigger.AddDbfindTrigger',
  13. 'core.button.Assess'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. 'erpGridPanel2': {
  19. // itemclick: this.onGridItemClick
  20. },
  21. 'dbfindtrigger[name=kbd_criterion]': {
  22. focus: function(t) {
  23. t.setHideTrigger(false);
  24. t.setReadOnly(false);
  25. var record = Ext.getCmp('grid').selModel.getLastSelected();
  26. var code = record.data['kbd_ksid'];
  27. if (code == null || code == '') {
  28. t.setHideTrigger(true);
  29. t.setReadOnly(true);
  30. return;
  31. } else {
  32. t.dbBaseCondition = "ksd_ksid='" + code + "'";
  33. }
  34. }
  35. },
  36. 'erpSaveButton': {
  37. click: function(btn){
  38. var form = me.getForm(btn);
  39. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  40. me.BaseUtil.getRandomNumber();// 自动添加编号
  41. }
  42. // 保存之前的一些前台的逻辑判定
  43. this.FormUtil.beforeSave(this);
  44. }
  45. },
  46. 'erpDeleteButton' : {
  47. click: function(btn){
  48. me.FormUtil.onDelete(Ext.getCmp('kb_id').value);
  49. }
  50. },
  51. 'erpUpdateButton': {
  52. click: function(btn){
  53. this.FormUtil.onUpdate(this);
  54. }
  55. },
  56. 'erpAddButton': {
  57. click: function(){
  58. me.FormUtil.onAdd('addKBIbill', '新增KBI考评人申请', 'jsps/hr/kbi/kBIbill.jsp');
  59. }
  60. },'erpSubmitButton': {
  61. afterrender: function(btn){
  62. var status = Ext.getCmp('kb_statuscode');
  63. if(status && status.value != 'ENTERING'){
  64. btn.hide();
  65. }
  66. },
  67. click: function(btn){
  68. me.FormUtil.onSubmit(Ext.getCmp('kb_id').value);
  69. }
  70. },'erpResSubmitButton': {
  71. afterrender: function(btn){
  72. var status = Ext.getCmp('kb_statuscode');
  73. if(status && status.value != 'COMMITED'){
  74. btn.hide();
  75. }
  76. },
  77. click: function(btn){
  78. me.FormUtil.onResSubmit(Ext.getCmp('kb_id').value);
  79. }
  80. },
  81. 'erpAuditButton': {
  82. afterrender: function(btn){
  83. var status = Ext.getCmp('kb_statuscode');
  84. if(status && status.value != 'COMMITED'){
  85. btn.hide();
  86. }
  87. },
  88. click: function(btn){
  89. me.FormUtil.onAudit(Ext.getCmp('kb_id').value);
  90. }
  91. },
  92. 'erpResAuditButton': {
  93. afterrender: function(btn){
  94. var status = Ext.getCmp('kb_statuscode');
  95. if(status && status.value != 'AUDITED'){
  96. btn.hide();
  97. }
  98. },
  99. click: function(btn){
  100. me.FormUtil.onResAudit(Ext.getCmp('kb_id').value);
  101. }
  102. },
  103. 'erpCloseButton': {
  104. click: function(btn){
  105. me.FormUtil.beforeClose(me);
  106. }
  107. },
  108. 'erpAssessButton':{
  109. afterrender: function(btn){
  110. var status = Ext.getCmp('kb_statuscode');
  111. if(status && status.value != 'ENTERING'){
  112. btn.hide();
  113. }
  114. },
  115. click: function(btn){
  116. me.assess();
  117. }
  118. },
  119. 'erpFormPanel':{
  120. afterrender:function(form){
  121. form.onSumitSuccess=function(){
  122. if (parent && parent.Ext.getCmp('content-panel')) {
  123. var firstGrid = parent.Ext.getCmp('content-panel').items.items[0].firstGrid;
  124. if (firstGrid && firstGrid != null) {
  125. firstGrid.loadNewStore();
  126. }
  127. }
  128. };
  129. }
  130. }
  131. });
  132. },
  133. onGridItemClick: function(selModel, record){// grid行选择
  134. this.GridUtil.onGridItemClick(selModel, record);
  135. },
  136. getForm: function(btn){
  137. return btn.ownerCt.ownerCt;
  138. },
  139. assess:function(){
  140. if(Ext.getCmp('assessWin')){
  141. Ext.getCmp('assessWin').show();
  142. Ext.each(Ext.getCmp('assesstabpanel').items.items,function(tab,index){
  143. tab.hasResult=false;
  144. });
  145. var tabpanel=Ext.getCmp('assesstabpanel');
  146. tabpanel.fireEvent('tabchange',tabpanel,tabpanel.activeTab);
  147. return;
  148. }
  149. var me=this;
  150. var itemss=new Array();
  151. var keys=this.getKeys();
  152. Ext.each(keys,function(name,index){
  153. var item=new Object();
  154. item.title=keys[index];
  155. item.key=keys[index];
  156. item.xtype= 'form';
  157. item.autoScroll= true;
  158. item.loaded=false;
  159. item.hasResult=false;
  160. itemss.push(item);
  161. });
  162. itemss[0].items=new Array();
  163. itemss[0].loaded=true;
  164. itemss[0].hasResult=true;
  165. var assessValues=this.getAssessValue(keys[0]);
  166. var store = Ext.getCmp('grid').getStore();
  167. Ext.Object.each(assessValues,function(key,value){
  168. var it=new Object();
  169. it.xtype='fieldset';
  170. it.title='<h2>'+key+'</h2>';
  171. it.collapsible=true;
  172. it.items=new Array();
  173. Ext.each(value,function(name,index){
  174. var i=new Object();
  175. i.xtype= 'radiofield';
  176. i.name= key;
  177. i.value= value[index][1];
  178. i.score= value[index][1];
  179. i.boxLabel= value[index][0];
  180. store.each(function(gitem){
  181. if(gitem.data.kbd_target==i.name&&gitem.data.kbd_score==i.score){
  182. i.checked=true;
  183. return false;
  184. }
  185. });
  186. it.items.push(i);
  187. });
  188. itemss[0].items.push(it);
  189. });
  190. var win=Ext.create('Ext.window.Window',{
  191. width: 800,
  192. id:'assessWin',
  193. height: 500,
  194. autoScroll: true,
  195. closeAction: 'hide',
  196. cls: 'custom-blue',
  197. title:'<h1>评 估</h1>',
  198. items:[{
  199. id:'assesstabpanel',
  200. xtype:'tabpanel',
  201. listeners:{
  202. tabchange:function(tab,newCard){
  203. if(!newCard.loaded){
  204. var store = Ext.getCmp('grid').getStore();
  205. var assessValues=me.getAssessValue(newCard.key);
  206. Ext.Object.each(assessValues,function(key,value){
  207. var it=new Object();
  208. it.xtype='fieldset';
  209. it.title='<h2>'+key+'</h2>';
  210. it.collapsible=true;
  211. it.items=new Array();
  212. Ext.each(value,function(name,index){
  213. var i=new Object();
  214. i.xtype= 'radiofield';
  215. i.name= key;
  216. i.value= value[index][1];
  217. i.score= value[index][1];
  218. i.boxLabel= value[index][0];
  219. store.each(function(gitem){
  220. if(gitem.data.kbd_target==i.name&&gitem.data.kbd_score==i.score){
  221. i.checked=true;
  222. return false;
  223. }
  224. });
  225. it.items.push(i);
  226. });
  227. newCard.add(it);
  228. });
  229. newCard.loaded=true;
  230. newCard.hasResult=true;
  231. }
  232. if(!newCard.hasResult){
  233. var store=Ext.getCmp('grid').getStore();
  234. Ext.each(newCard.items.items,function(item){
  235. Ext.each(item.items.items,function(i){
  236. store.each(function(gitem){
  237. if(gitem.data.kbd_target==i.name&&gitem.data.kbd_score==i.score){
  238. i.setValue(true);
  239. return false;
  240. }
  241. });
  242. });
  243. });
  244. newCard.hasResult=true;
  245. }
  246. }
  247. },
  248. items:itemss
  249. }],
  250. buttonAlign:'center',
  251. buttons:[{
  252. xtype:'button',
  253. text:'确定',
  254. width:60,
  255. iconCls: 'x-button-icon-save',
  256. handler:function(btn){
  257. var w = btn.up('window');
  258. me.setResult(w);
  259. w.hide();
  260. }
  261. },{
  262. xtype:'button',
  263. columnWidth:0.1,
  264. text:'关闭',
  265. width:60,
  266. iconCls: 'x-button-icon-close',
  267. margin:'0 0 0 10',
  268. handler:function(btn){
  269. btn.up('window').hide();
  270. }
  271. }]
  272. });
  273. win.show();
  274. },
  275. getKeys:function(){
  276. var data=new Object();
  277. Ext.Ajax.request({
  278. url : basePath +'hr/kbi/getKeys.action',
  279. method : 'post',
  280. async: false,
  281. params:{
  282. caller:caller
  283. },
  284. callback : function(options,success,response){
  285. var rs = new Ext.decode(response.responseText);
  286. if(rs.exceptionInfo){
  287. showError(rs.exceptionInfo);return;
  288. }
  289. data=rs.data;
  290. }
  291. });
  292. return data;
  293. },
  294. getAssessValue:function(key){
  295. var data=new Object();
  296. Ext.Ajax.request({
  297. url : basePath +'hr/kbi/getAssessValue.action',
  298. method : 'post',
  299. async: false,
  300. params:{
  301. key:key
  302. },
  303. callback : function(options,success,response){
  304. var rs = new Ext.decode(response.responseText);
  305. if(rs.exceptionInfo){
  306. showError(rs.exceptionInfo);return;
  307. }
  308. data=rs.data;
  309. }
  310. });
  311. return data;
  312. },
  313. setResult:function(win){
  314. var values=new Array();
  315. var forms=win.items.items[0].items.items;
  316. Ext.each(forms,function(name,index){
  317. if(name.hasResult){
  318. var fieldset=forms[index].items.items;
  319. if(fieldset){
  320. Ext.each(fieldset,function(nam,inde){
  321. var f=fieldset[inde].items.items;
  322. if(f){
  323. Ext.each(f,function(na,ind){
  324. if(f[ind]&&f[ind].checked){
  325. var o=new Object();
  326. o.key=f[ind].name;
  327. o.criterion=f[ind].boxLabel;
  328. o.score=f[ind].score;
  329. values.push(o);
  330. }
  331. });
  332. }
  333. });
  334. }
  335. }
  336. });
  337. var grid=Ext.getCmp('grid');
  338. var store=grid.getStore();
  339. Ext.each(values,function(name,index){
  340. store.each(function(item){
  341. if(values[index].key==item.data.kbd_target){
  342. item.set('kbd_criterion',values[index].criterion);
  343. item.set('kbd_score',values[index].score);
  344. }
  345. });
  346. });
  347. }
  348. });