Project.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.plm.project.Project', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. views:[
  7. 'plm.project.Project','core.form.Panel','plm.project.ProjectForm','core.form.CheckBoxGroup','core.form.HrefField',
  8. 'core.button.Add','core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  9. 'core.button.Update','core.button.Delete','core.button.ResAudit','core.form.FileField','core.form.MultiField',
  10. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.button.TurnProjectReview','core.button.UpdateRemark'
  11. ],
  12. init:function(){
  13. var me = this;
  14. me.attachcount = 0;
  15. this.control({
  16. 'erpSaveButton': {
  17. click: function(btn){
  18. if(Ext.getCmp('prj_start')&&Ext.getCmp('prj_end')){
  19. var start=Ext.getCmp('prj_start').value,
  20. end=Ext.getCmp('prj_end').value,
  21. organigerdate=Ext.getCmp('prj_organigerdate').value;
  22. if(end.getTime()<start.getTime()){
  23. showError('开始日期不能大于完成日期!');
  24. return;
  25. } else if(start.getTime()<organigerdate.getTime()){
  26. showError('发起日期不能大于开始时间');
  27. return;
  28. }
  29. }
  30. this.save(btn);
  31. }
  32. },
  33. 'erpCloseButton': {
  34. click: function(btn){
  35. this.FormUtil.beforeClose(this);
  36. }
  37. },
  38. 'mfilefield':{
  39. beforerender:function(f){
  40. f.readOnly=false;
  41. }
  42. },
  43. 'erpUpdateRemarkButton':{
  44. beforerender:function(btn){
  45. btn.setText('更新机种型号');
  46. var f = Ext.getCmp('prj_sptext70');
  47. var status = Ext.getCmp('prj_statuscode');
  48. if(f&&status && status.value == 'AUDITED'){
  49. f.setReadOnly(false);
  50. }
  51. if(status && status.value != 'AUDITED'){
  52. btn.hide();
  53. }
  54. btn.formBind=false;
  55. },
  56. click:function(btn){
  57. var prj_sptext70 = Ext.getCmp('prj_sptext70').value;
  58. var id = Ext.getCmp('prj_id').value;
  59. Ext.Ajax.request({
  60. url : basePath + 'plm/project/updateProjectjzxh.action',
  61. params: {
  62. id: id,
  63. prj_sptext70:prj_sptext70,
  64. caller:caller
  65. },
  66. method : 'post',
  67. callback : function(options,success,response){
  68. var res = new Ext.decode(response.responseText);
  69. if(res.exceptionInfo) {
  70. showError(res.exceptionInfo);
  71. } else {
  72. showMessage('提示', '更新机种型号成功!');
  73. window.location.reload();
  74. }
  75. }
  76. });
  77. }
  78. },
  79. 'erpUpdateButton': {
  80. afterrender: function(btn){
  81. var status = Ext.getCmp('prj_statuscode');
  82. if(status && status.value != 'ENTERING'){
  83. btn.hide();
  84. }
  85. },
  86. click: function(btn){
  87. this.FormUtil.onUpdate(this);
  88. }
  89. },
  90. 'erpDeleteButton': {
  91. afterrender: function(btn){
  92. var status = Ext.getCmp('prj_statuscode');
  93. if(status && status.value != 'ENTERING'){
  94. btn.hide();
  95. }
  96. },
  97. click: function(btn){
  98. this.FormUtil.onDelete(Ext.getCmp('prj_id').value);
  99. }
  100. },
  101. 'erpAddButton': {
  102. click: function(){
  103. me.FormUtil.onAdd('addProject', '创建项目', 'jsps/plm/project/project.jsp');
  104. }
  105. },
  106. 'erpSubmitButton': {
  107. afterrender: function(btn){
  108. var status = Ext.getCmp('prj_statuscode');
  109. if(status && status.value != 'ENTERING'){
  110. btn.hide();
  111. }
  112. },
  113. click: function(btn){
  114. me.FormUtil.onSubmit(Ext.getCmp('prj_id').value);
  115. }
  116. },
  117. 'erpResSubmitButton':{
  118. afterrender:function(btn){
  119. var status=Ext.getCmp('prj_statuscode');
  120. if(status && status.value !='COMMITED'){
  121. btn.hide();
  122. }
  123. },
  124. click: function(btn){
  125. me.FormUtil.onResSubmit(Ext.getCmp('prj_id').value);
  126. }
  127. },
  128. 'erpAuditButton': {
  129. afterrender: function(btn){
  130. var status = Ext.getCmp('prj_statuscode');
  131. if(status && status.value != 'COMMITED'){
  132. btn.hide();
  133. }
  134. },
  135. click: function(btn){
  136. me.FormUtil.onAudit(Ext.getCmp('prj_id').value);
  137. }
  138. },
  139. 'erpResAuditButton':{
  140. afterrender:function(btn){
  141. var status=Ext.getCmp('prj_statuscode');
  142. if(status && status.value !='AUDITED'){
  143. btn.hide();
  144. }
  145. },
  146. click: function(btn){
  147. me.FormUtil.onResAudit(Ext.getCmp('prj_id').value);
  148. }
  149. },
  150. 'field[name=prj_sourcecode]': {
  151. afterrender:function(f){
  152. f.setFieldStyle({
  153. 'color': 'blue'
  154. });
  155. f.focusCls = 'mail-attach';
  156. var c = Ext.Function.bind(me.openSaleProject, me);
  157. Ext.EventManager.on(f.inputEl, {
  158. mousedown : c,
  159. scope: f,
  160. buffer : 100
  161. });
  162. }
  163. },
  164. 'textfield[name=prj_customercode]':{
  165. beforerender: function(field){
  166. if(Ext.getCmp('prj_sourcecode') && !Ext.isEmpty(Ext.getCmp('prj_sourcecode').value)){
  167. field.setReadOnly(true);
  168. }
  169. }
  170. },
  171. 'filefield[id=attach]': {
  172. change: function(field){
  173. if(field.value != null){
  174. var container = Ext.create('Ext.form.FieldContainer', {
  175. layout: 'hbox',
  176. fieldLabel: "附件" + (me.attachcount + 1),
  177. items: [{
  178. xtype: 'textfield',
  179. id: 'attach' + me.attachcount,
  180. flex: 1
  181. }, {
  182. xtype: 'progressbar'
  183. }, {
  184. xtype: 'button',
  185. text: '上传',
  186. id: 'upload' + me.attachcount,
  187. handler: function(btn){
  188. var form = btn.ownerCt.ownerCt;
  189. var f = Ext.getCmp(btn.id.replace('upload', 'attach'));
  190. if(f.value != null && f.value != ''){
  191. //field.value = f.value;
  192. form.getForm().submit({
  193. url: basePath + 'common/upload.action?em_code=' + em_code,
  194. waitMsg: "正在上传:" + f.value,
  195. success: function(fp, o){
  196. if(o.result.error){
  197. showError(o.result.error);
  198. } else {
  199. Ext.Msg.alert("恭喜", f.value + " 上传成功!");
  200. btn.setText("上传成功(" + Ext.util.Format.fileSize(o.result.size) + ")");
  201. btn.disable(true);
  202. //field.button.disable(false);
  203. me.files[Number(btn.id.replace('upload', ''))] = o.result.filepath;
  204. }
  205. }
  206. });
  207. }
  208. },
  209. flex: 1
  210. }, {
  211. xtype: 'button',
  212. text: '删除',
  213. id: 'delete' + me.attachcount,
  214. handler: function(btn){
  215. var f = Ext.getCmp(btn.id.replace('delete', 'attach'));
  216. if(f.value != null && f.value != ''){
  217. me.files[Number(btn.id.replace('delete', ''))] = '';
  218. }
  219. btn.ownerCt.destroy(true);
  220. me.attachcount--;
  221. },
  222. flex: 1
  223. }]
  224. });
  225. if(me.FormUtil.contains(field.value, "\\", true)){
  226. Ext.getCmp('attach' + me.attachcount).setValue(field.value.substring(field.value.lastIndexOf('\\') + 1));
  227. } else {
  228. Ext.getCmp('attach' + me.attachcount).setValue(field.value.substring(field.value.lastIndexOf('/') + 1));
  229. }
  230. Ext.getCmp('attachform').insert(3, container);
  231. me.attachcount++;
  232. //field.reset();
  233. //field.button.disable(true);
  234. field.button.setText("继续...");
  235. }
  236. }
  237. },
  238. 'erpTurnProjectReviewButton':{
  239. afterrender:function(btn){
  240. var statuscode=Ext.getCmp('prj_statuscode').getValue();
  241. if(statuscode!='AUDITED'){
  242. btn.hide();
  243. }
  244. },
  245. click:function(btn){
  246. var form=me.getForm(btn);
  247. var id=Ext.getCmp('prj_id').getValue();
  248. Ext.Ajax.request({
  249. method:'POST',
  250. url:basePath+form.turnReviewItemUrl,
  251. params:{
  252. id:id
  253. },
  254. callback : function(options,success,response){
  255. var rs = new Ext.decode(response.responseText);
  256. if(rs.exceptionInfo){
  257. showError(rs.exceptionInfo);return;
  258. }
  259. if(rs.success){
  260. Ext.Msg.alert('提示','转评审成功!单号为:'+rs.code,function(){
  261. window.location.reload();
  262. });
  263. }
  264. }
  265. });
  266. }
  267. },
  268. /**'datefield[name=prj_start]': {
  269. change: function(field){
  270. var start=Ext.getCmp('prj_start').value,
  271. end=Ext.getCmp('prj_end').value,
  272. organigerdate=Ext.getCmp('prj_organigerdate').value;
  273. if(end!=null||end!=''){
  274. if(end.getTime()<start.getTime()||end.getTime()==start.getTime()){
  275. showError('开始日期不能大于完成日期!');
  276. Ext.getCmp('prj_start').reset();
  277. return
  278. }
  279. }
  280. if(organigerdate!=null||organigerdate!=''){
  281. if(organigerdate.getTime()>start.getTime()){
  282. showError('发起日期不能大于开始日期!');
  283. Ext.getCmp('prj_start').reset();
  284. return
  285. }
  286. }
  287. }
  288. },
  289. 'datefield[name=prj_organigerdate]': {
  290. change: function(field){
  291. var start=Ext.getCmp('prj_start').value,
  292. end=Ext.getCmp('prj_end').value,
  293. organigerdate=Ext.getCmp('prj_organigerdate').value;
  294. if(start!=null||start!=''){
  295. if(end.getTime()<start.getTime()||end.getTime()==start.getTime()){
  296. showError('发起日期不能大于开始日期');
  297. Ext.getCmp('prj_organigerdate').reset();
  298. return
  299. }
  300. }
  301. }
  302. },
  303. 'datefield[name=prj_end]': {
  304. change: function(field){
  305. var start=Ext.getCmp('prj_start').value,
  306. end=Ext.getCmp('prj_end').value,
  307. organigerdate=Ext.getCmp('prj_organigerdate').value;
  308. if(start!=null||start!=''){
  309. if(end.getTime()<start.getTime()||end.getTime()==start.getTime()){
  310. showError('完成日期不能小于开始日期');
  311. Ext.getCmp('prj_end').reset();
  312. }
  313. }
  314. }
  315. },**/
  316. });
  317. },
  318. getForm: function(btn){
  319. return btn.ownerCt.ownerCt;
  320. },
  321. save: function(btn){
  322. var me = this;
  323. var form = me.getForm(btn);
  324. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  325. me.BaseUtil.getRandomNumber();//自动添加编号
  326. }
  327. me.FormUtil.beforeSave(me);
  328. },
  329. openSaleProject: function(e, el, obj) {
  330. var f = obj.scope, form = f.ownerCt,
  331. i = form.down('#sp_id');
  332. if(i && i.value) {
  333. url = 'jsps/scm/sale/saleProject.jsp?formCondition=sp_idIS' + i.value + '&whoami=SaleProject';
  334. openUrl(url);
  335. }
  336. },
  337. });