ProjectReview.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.plm.project.ProjectReview', {
  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. 'plm.project.ProjectReview','core.form.Panel','core.button.ProjectReview','core.form.CheckBoxGroup','core.grid.Panel5','core.grid.Panel2',
  9. 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print','core.form.HrefField','core.grid.YnColumn',
  10. 'core.button.Update','core.button.Delete','core.button.PlanMainTask','core.button.ResAudit','core.button.ResSubmit','core.form.FileField','core.button.Load',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','plm.budget.ProjectChart','plm.project.ReviewForm'
  12. ],
  13. init:function(){
  14. var me = this;
  15. this.control({
  16. 'erpCloseButton':{
  17. afterrender:function(btn){
  18. var form=me.getForm(btn);
  19. var readOnly=statuscode!='ENTERING';
  20. var items=me.getReviewItems(readOnly);
  21. form.add(items);
  22. form.add([{
  23. xtype:'fieldset',
  24. title:'<h2>评审结果</h2>',
  25. columnWidth:1,
  26. collapsible: true,
  27. frame:false,
  28. height: 100,
  29. html:'<div style="background-color: #FFFAFA;color:red">'+Ext.getCmp('pr_systemresult').getValue()+'</div>'
  30. }]);
  31. }
  32. },
  33. 'htmleditor[name=pr_prjcode]':{
  34. afterrender:function(editor){
  35. editor.getToolbar().hide();
  36. editor.readOnly=true;
  37. editor.setValue('<a style="text-decoration:none;" href="javascript:parent.openFormUrl(' + editor.value + ',\'prj_code\',\'jsps/plm/project/project.jsp\',\'立项申请\''+ ');">' + editor.value + '</a>');
  38. }
  39. },
  40. 'erpFormPanel':{
  41. beforerender:function(form){
  42. }
  43. },
  44. 'erpLoadButton':{
  45. click:function(btn){
  46. me.loadKeyDevice(Ext.getCmp('pr_producttype').getValue());
  47. },
  48. afterrender:function(btn){
  49. if(statuscode!='ENTERING'){
  50. btn.hide();
  51. }
  52. }
  53. },
  54. 'erpUpdateButton':{
  55. click:function(btn){
  56. me.update();
  57. },
  58. afterrender:function(btn){
  59. statuscode=Ext.getCmp('pr_statuscode').getValue();
  60. if(statuscode!='ENTERING'){
  61. btn.hide();
  62. }
  63. }
  64. },
  65. 'erpSubmitButton':{
  66. click:function(btn){
  67. this.FormUtil.submit(Ext.getCmp('pr_id').getValue());
  68. },
  69. afterrender:function(btn){
  70. if(statuscode!='ENTERING'){
  71. btn.hide();
  72. }
  73. }
  74. },
  75. 'erpResSubmitButton':{
  76. click:function(btn){
  77. this.FormUtil.onResSubmit(Ext.getCmp('pr_id').getValue());
  78. },
  79. afterrender:function(btn){
  80. if(statuscode!='COMMITED'){
  81. btn.hide();
  82. }
  83. }
  84. },
  85. 'erpGridPanel2':{
  86. itemclick: this.onGridItemClick
  87. },
  88. 'erpAuditButton':{
  89. click:function(btn){
  90. this.FormUtil.onAudit(Ext.getCmp('pr_id').getValue());
  91. },
  92. afterrender:function(btn){
  93. if(statuscode!='COMMITED'){
  94. btn.hide();
  95. }
  96. }
  97. },
  98. 'erpResAuditButton':{
  99. click:function(btn){
  100. this.FormUtil.onResAudit(Ext.getCmp('pr_id').getValue());
  101. },
  102. afterrender:function(btn){
  103. if(statuscode!='AUDITED'){
  104. btn.hide();
  105. }
  106. }
  107. },
  108. 'erpPlanMainTaskButton':{
  109. click:function(btn){
  110. me.PlanMainTask(btn);
  111. },
  112. afterrender:function(btn){
  113. if(statuscode!='AUDITED'){
  114. btn.hide();
  115. }
  116. }
  117. },
  118. 'erpDeleteButton': {
  119. afterrender: function(btn){
  120. var status = Ext.getCmp('pr_statuscode');
  121. if(status && status.value != 'ENTERING'){
  122. btn.hide();
  123. }
  124. },
  125. click: function(btn){
  126. me.FormUtil.onDelete((Ext.getCmp('pr_id').value));
  127. }
  128. }
  129. });
  130. },
  131. onGridItemClick: function(selModel, record) { //grid行选择
  132. this.GridUtil.onGridItemClick(selModel, record);
  133. },
  134. getReviewItems:function(readOnly){
  135. var me=this;
  136. var reviewitem=Ext.getCmp('pr_reviewitem').getValue().split("#");
  137. var reviewtitle=Ext.getCmp('pr_reviewtitle').getValue().split("#");
  138. var reviewresult=Ext.getCmp('pr_reviewresult').getValue().split("#");
  139. var items=new Array();
  140. var count=reviewitem.length%2;//是否是2的倍
  141. for(var i=0;i<reviewitem.length;i++){
  142. if(count==0||i<reviewitem.length-1){
  143. items.push({
  144. xtype:'fieldset',
  145. title:reviewtitle[i],
  146. groupName:reviewtitle[i],
  147. columnWidth:0.5,
  148. groupkind:'review',
  149. layout:'column',
  150. height:130,
  151. defaults:{
  152. columnWidth:1,
  153. },
  154. collapsible: true,
  155. readOnly:true,
  156. setReadOnly:function(bool){
  157. var set = this,
  158. inputEl = set.inputEl;
  159. console.log(set);
  160. if (inputEl) {
  161. inputEl.dom.readOnly = readOnly;
  162. inputEl.dom.setAttribute('aria-readonly', readOnly);
  163. }
  164. set[readOnly ? 'addCls' : 'removeCls'](set.readOnlyCls);
  165. set.readOnly = readOnly;
  166. Ext.Array.each(set.items.items,function(ite,index){
  167. if (ite.xtype == 'textarea') {
  168. ite.setReadOnly(bool);
  169. console.log(bool);
  170. if(!bool)ite.setFieldStyle("background:#fffac0;color:#515151;");
  171. else ite.setFieldStyle("background:#FFFAFA;color:#515151;");
  172. }
  173. else {
  174. Ext.Array.each(ite.items.items,function(it){
  175. it.setReadOnly(bool);
  176. });
  177. }
  178. });
  179. },
  180. items:[{
  181. xtype:'textarea',
  182. value:reviewitem[i],
  183. readOnly:readOnly,
  184. groupName:reviewtitle[i]
  185. },{
  186. xtype: 'radiogroup',
  187. fieldLabel: '评审结果',
  188. radioValue:reviewresult[i],
  189. id:'rating_'+[i],
  190. columns: 3,
  191. groupName:reviewtitle[i],
  192. readOnly:readOnly,
  193. defaults: {
  194. fieldCls:'myradio',
  195. listeners:{
  196. /*change:function(radio){
  197. radio.ownerCt.radioValue=radio.inputValue;
  198. },*/
  199. beforerender:function(radio){
  200. if(radio.ownerCt.radioValue==radio.inputValue){
  201. radio.checked=true;
  202. }
  203. }
  204. },
  205. name:'rating_'+[i],
  206. },
  207. items:me.getRadioItems(reviewresult[i],readOnly)
  208. }],
  209. });
  210. }else {
  211. items.push({
  212. xtype:'fieldset',
  213. title:reviewtitle[i],
  214. groupName:reviewtitle[i],
  215. columnWidth:1,
  216. groupkind:'review',
  217. layout:'column',
  218. collapsible: true,
  219. defaults:{
  220. columnWidth:1,
  221. },
  222. readOnly:true,
  223. items:[{
  224. xtype:'textarea',
  225. value:reviewitem[i],
  226. readOnly:readOnly
  227. },{
  228. xtype: 'radiogroup',
  229. fieldLabel: '评审结果',
  230. columnWidth:0.5,
  231. columns: 3,
  232. radioValue:reviewresult[i],
  233. id:'rating_'+[i],
  234. readOnly:readOnly,
  235. defaults: {
  236. fieldCls:'myradio',
  237. /*listeners:{
  238. change:function(radio){
  239. radio.ownerCt.radioValue=radio.inputValue;
  240. }
  241. },*/
  242. name:'rating_'+[i],
  243. },
  244. items:me.getRadioItems(reviewresult[i],readOnly)
  245. }],
  246. });
  247. }
  248. };
  249. return items;
  250. },
  251. getRadioItems:function(radiovalue,readOnly){
  252. var arr=new Array();
  253. var object=null;
  254. for(var i=3;i>0;i--){
  255. object=new Object();
  256. object.inputValue=i;
  257. object.readOnly=readOnly;
  258. if(i==3){
  259. object.boxLabel='A';
  260. }else if(i==2){
  261. object.boxLabel='B';
  262. }else {
  263. object.boxLabel='C';
  264. }
  265. if(radiovalue==i){
  266. object.checked=true;
  267. }
  268. arr.push(object);
  269. }
  270. arr.push({
  271. boxLabel:'O',
  272. hidden:true,
  273. checked:i==0,
  274. inputValue:0
  275. });
  276. return arr;
  277. },
  278. loadKeyDevice:function(producttype){
  279. Ext.Ajax.request({
  280. url : basePath +'plm/review/loadKeyDevice.action',
  281. method : 'post',
  282. params:{
  283. producttype:producttype,
  284. prid:Ext.getCmp('pr_id').getValue()
  285. },
  286. callback : function(options,success,response){
  287. var rs = new Ext.decode(response.responseText);
  288. if(rs.exceptionInfo){
  289. showError(rs.exceptionInfo);return;
  290. }
  291. if(rs.success){
  292. var grid=Ext.getCmp('grid');
  293. grid.GridUtil.loadNewStore(grid, {
  294. caller: "ProjectKeyDevice",
  295. condition: grid.mainField + '=' + Ext.getCmp(Ext.getCmp('form').keyField).value
  296. });
  297. }
  298. }
  299. });
  300. },
  301. getForm: function(btn){
  302. return btn.ownerCt.ownerCt;
  303. },
  304. save: function(btn){
  305. var me = this;
  306. var form = me.getForm(btn);
  307. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  308. me.BaseUtil.getRandomNumber();//自动添加编号
  309. }
  310. },
  311. update:function(btn){
  312. var me=this;
  313. /* var form =Ext.getCmp('form');
  314. var reviewresult="",reviewitem="",index=1,length=items.length,systemresult="",count=0,reviewlength=0,radioValue=0;
  315. Ext.Array.each(form.items.items,function(item){
  316. if(item.groupkind == 'review'){
  317. var checked=item.items.items[1].getChecked()[0];
  318. radioValue=checked.inputValue?checked.inputValue:0;
  319. if(index<length){
  320. reviewitem+=item.items.items[0].value+"#";
  321. reviewresult+=radioValue+"#";
  322. count+=Number(radioValue);
  323. }else {
  324. reviewitem+=item.items.items[0].value;
  325. reviewresult+=radioValue;
  326. count+=Number(radioValue);
  327. }
  328. if(radioValue!=0){
  329. reviewlength++;
  330. }
  331. index++;
  332. }
  333. });
  334. // count=parseFloat(count+'.00' )/reviewlength;
  335. // if(count==3){
  336. // systemresult="<center><h5>评审等级: A</h5> 共"+length+"条评审项;评审"+reviewlength+"项;<br/>这么牛啊!果断开搞啊是不 !有奔头!</center>";
  337. // }else if(count>2){
  338. // systemresult="<center><h5>评审等级: B+</h5> 共"+length+"条评审项;评审"+reviewlength+"项;<br/>还可以风险很小!可以搞搞</center>";
  339. // }else if(count==2){
  340. // systemresult="<center><h5>评审等级: B</h5> 共"+length+"条评审项;评审"+reviewlength+"项;<br/>一般般!需要注意啊!</center>";
  341. // }else if(count>1){
  342. // systemresult="<center><h5>评审等级: B-</h5> 共"+length+"条评审项;评审"+reviewlength+"项;<br/>不行啊!真是不行!</center>";
  343. // }else{
  344. // systemresult="<center><h5>评审等级: C</h5> 共"+length+"条评审项;评审"+reviewlength+"项;<br/>果断不行,赚钱是好的,投资需谨慎啊!</center>";
  345. // }
  346. // Ext.getCmp('pr_systemresult').setValue(systemresult);
  347. Ext.getCmp('pr_reviewitem').setValue(reviewitem);
  348. Ext.getCmp('pr_reviewresult').setValue(reviewresult);*/
  349. me.FormUtil.onUpdate(me);
  350. },
  351. PlanMainTask:function(btn){
  352. var form=btn.ownerCt.ownerCt;
  353. var id=Ext.getCmp('pr_id').getValue();
  354. Ext.Ajax.request({
  355. url : basePath + form.planTaskUrl,
  356. params: {
  357. id: id
  358. },
  359. method : 'post',
  360. callback : function(options,success,response){
  361. var localJson = new Ext.decode(response.responseText);
  362. if(localJson.success){
  363. Ext.Msg.alert('提示','下达研发任务书成功!',window.location.reload());
  364. } else {
  365. if(localJson.exceptionInfo){
  366. var str = localJson.exceptionInfo;
  367. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  368. str = str.replace('AFTERSUCCESS', '');
  369. submitSuccess(function(){
  370. window.location.reload();
  371. });
  372. }
  373. showMessage("提示", str);return;
  374. }
  375. }
  376. }
  377. });
  378. }
  379. });