OATask.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.oa.myProcess.OATask', {
  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. 'oa.myProcess.OATask','core.form.Panel','core.form.FileField','core.form.MultiField','core.grid.Panel2',
  9. 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  10. 'core.button.Upload','core.button.Update','core.button.Delete','core.button.ResAudit','core.button.ResSubmit',
  11. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.trigger.AutoCodeTrigger','core.trigger.MultiDbfindTrigger',
  12. 'core.form.YnField','core.trigger.DbfindTrigger','core.button.Scan','oa.meeting.MeetingDetail','core.grid.YnColumn',
  13. 'core.toolbar.Toolbar','oa.myProcess.OATaskRecord','oa.myProcess.OATaskChange'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick: this.onGridItemClick
  20. },
  21. 'OATaskRecord':{
  22. itemclick: this.onGridItemClick2
  23. },
  24. 'OATaskChange':{
  25. itemclick: this.onGridItemClick3
  26. },
  27. 'field[name=ptc_remark]':{
  28. blur: function(field){
  29. if(Ext.getCmp('id').value==''){
  30. showMessage('警告','请保存主记录后重试!');
  31. }
  32. var record=Ext.getCmp('OATaskChange').selModel.lastSelected;
  33. record.set('ptc_name',Ext.getCmp('name').value);
  34. record.set('ptc_oldtaskname',Ext.getCmp('name').value);
  35. record.set('ptc_startdate',Ext.getCmp('startdate').value);
  36. record.set('ptc_oldstartdate',Ext.getCmp('startdate').value);
  37. record.set('ptc_enddate',Ext.getCmp('enddate').value);
  38. record.set('ptc_oldenddate',Ext.getCmp('enddate').value);
  39. record.set('ptc_taskman',Ext.getCmp('taskman').value);
  40. record.set('ptc_oldtaskman',Ext.getCmp('taskman').value);
  41. record.set('ptc_tasklevel',Ext.getCmp('tasklevel').value);
  42. record.set('ptc_oldtasklevel',Ext.getCmp('tasklevel').value);
  43. record.set('ptc_standtime',Ext.getCmp('standtime').value);
  44. record.set('ptc_oldstandtime',Ext.getCmp('standtime').value);
  45. record.set('ptc_description',Ext.getCmp('description').value);
  46. record.set('ptc_olddescription',Ext.getCmp('description').value);
  47. record.set('ptc_oldtaskid',Ext.getCmp('id').value);
  48. }
  49. },
  50. 'erpSaveButton': {
  51. click: function(btn){
  52. var form = me.getForm(btn);
  53. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  54. me.BaseUtil.getRandomNumber();//自动添加编号
  55. }
  56. me.beforeSave(this);
  57. }
  58. },
  59. 'erpDeleteButton' : {
  60. afterrender: function(btn){
  61. var status = Ext.getCmp('statuscode');
  62. if(status && status.value != 'ENTERING'){
  63. btn.hide();
  64. }
  65. },
  66. click: function(btn){
  67. me.FormUtil.onDelete(Ext.getCmp('id').value);
  68. }
  69. },
  70. 'erpUpdateButton': {
  71. afterrender: function(btn){
  72. var status = Ext.getCmp('statuscode');
  73. if(status && status.value != 'ENTERING'){
  74. btn.hide();
  75. }
  76. },
  77. click: function(btn){
  78. me.beforeUpdate(this);
  79. }
  80. },'erpSubmitButton': {
  81. afterrender: function(btn){
  82. var status = Ext.getCmp('statuscode');
  83. if(status && status.value != 'ENTERING'){
  84. btn.hide();
  85. }
  86. },
  87. click: function(btn){
  88. me.FormUtil.onSubmit(Ext.getCmp('id').value);
  89. }
  90. },
  91. 'erpResSubmitButton': {
  92. afterrender: function(btn){
  93. var status = Ext.getCmp('statuscode');
  94. if(status && status.value != 'COMMITED'){
  95. btn.hide();
  96. }
  97. },
  98. click: function(btn){
  99. me.FormUtil.onResSubmit(Ext.getCmp('id').value);
  100. }
  101. },
  102. 'erpAuditButton': {
  103. afterrender: function(btn){
  104. var status = Ext.getCmp('statuscode');
  105. if(status && status.value != 'COMMITED'){
  106. btn.hide();
  107. }
  108. },
  109. click: function(btn){
  110. me.FormUtil.onAudit(Ext.getCmp('id').value);
  111. }
  112. },'erpResAuditButton': {
  113. afterrender: function(btn){
  114. var status = Ext.getCmp('statuscode');
  115. if(status && status.value != 'AUDITED'){
  116. btn.hide();
  117. }
  118. },
  119. click: function(btn){
  120. me.FormUtil.onResAudit(Ext.getCmp('id').value);
  121. }
  122. },
  123. 'erpAddButton': {
  124. click: function(){
  125. me.FormUtil.onAdd('addOATask', '新增任务', 'jsps/oa/myProcess/oatask.jsp');
  126. }
  127. },
  128. 'erpCloseButton': {
  129. click: function(btn){
  130. me.FormUtil.beforeClose(me);
  131. }
  132. }
  133. });
  134. },
  135. onGridItemClick: function(selModel, record){//grid行选择
  136. this.GridUtil.onGridItemClick(selModel, record);
  137. },
  138. onGridItemClick2: function(selModel,record){
  139. this.onGridItemClick(selModel,record,'OATaskRecord');
  140. },
  141. onGridItemClick3: function(selModel,record){
  142. this.onGridItemClick(selModel,record,'OATaskChange');
  143. },
  144. beforeSave: function(){
  145. var me = this;
  146. var form = Ext.getCmp('form');
  147. if(! me.FormUtil.checkForm()){
  148. return;
  149. }
  150. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  151. me.FormUtil.getSeqId(form);
  152. }
  153. var detail = Ext.getCmp('grid');
  154. var detail2 = Ext.getCmp('OATaskRecord');
  155. var detail3 = Ext.getCmp('OATaskChange');
  156. Ext.each(detail.store.data.items, function(item){
  157. if(item.data.vd_id == null || item.data.vd_id == 0){
  158. item.data.vd_id = -item.index;
  159. }
  160. });
  161. var param1 = me.GridUtil.getGridStore(detail);
  162. var param2 = new Array();
  163. if(detail2){
  164. param2 =me.GridUtil.getGridStore(detail2);
  165. }
  166. var param3 = new Array();
  167. if(detail3){
  168. param3 =me.GridUtil.getGridStore(detail3);
  169. }
  170. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  171. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  172. param3 = param3 == null ? [] : "[" + param3.toString().replace(/\\/g,"%") + "]";
  173. if(form.getForm().isValid()){
  174. Ext.each(form.items.items, function(item){
  175. if(item.xtype == 'numberfield'){
  176. if(item.value == null || item.value == ''){
  177. item.setValue(0);
  178. }
  179. }
  180. });
  181. var r = form.getValues();
  182. /* r.vo_currencytype = Ext.getCmp('vo_currencytype').value ? -1 : 0;
  183. r.vo_errstring = r.vo_errstring == '正常' ? '' : r.vo_errstring;*/
  184. me.save(r, param1, param2,param3);
  185. }else{
  186. me.FormUtil.checkForm();
  187. }
  188. },
  189. save: function(){
  190. var params = new Object();
  191. var r = arguments[0];
  192. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  193. if(contains(k, 'ext-', true)){
  194. delete r[k];
  195. }
  196. });
  197. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  198. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  199. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  200. params.param3 = unescape(arguments[3].toString().replace(/\\/g,"%"));
  201. /*for(var i=2; i<arguments.length; i++) { //兼容多参数
  202. params['param' + i] = unescape(arguments[i].toString().replace(/\\/g,"%"));
  203. }*/
  204. var me = this;
  205. var form = Ext.getCmp('form');
  206. //me.getActiveTab().setLoading(true);//loading...
  207. // console.log(params);
  208. Ext.Ajax.request({
  209. url : basePath + form.saveUrl,
  210. params : params,
  211. method : 'post',
  212. callback : function(options,success,response){
  213. var localJson = new Ext.decode(response.responseText);
  214. if(localJson.success){
  215. saveSuccess(function(){
  216. //add成功后刷新页面进入可编辑的页面
  217. var value = r[form.keyField];
  218. var formCondition = form.keyField + "IS" + value ;
  219. if(me.contains(window.location.href, '?', true)){
  220. window.location.href = window.location.href + '&formCondition=' +
  221. formCondition+'&gridCondition=parentidIS'+value;
  222. } else {
  223. window.location.href = window.location.href + '?formCondition=' +
  224. formCondition+'&gridCondition=parentidIS'+value;
  225. }
  226. });
  227. } else if(localJson.exceptionInfo){
  228. var str = localJson.exceptionInfo;
  229. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  230. str = str.replace('AFTERSUCCESS', '');
  231. saveSuccess(function(){
  232. //add成功后刷新页面进入可编辑的页面
  233. var value = r[form.keyField];
  234. var formCondition = form.keyField + "IS" + value ;
  235. if(me.contains(window.location.href, '?', true)){
  236. window.location.href = window.location.href + '&formCondition=' +
  237. formCondition+'&gridCondition=parentidIS'+value;
  238. } else {
  239. window.location.href = window.location.href + '?formCondition=' +
  240. formCondition+'&gridCondition=parentidIS'+value;
  241. }
  242. });
  243. showError(str);
  244. } else {
  245. showError(str);
  246. return;
  247. }
  248. } else{
  249. saveFailure();//@i18n/i18n.js
  250. }
  251. }
  252. });
  253. },
  254. beforeUpdate: function(){
  255. var me = this;
  256. var form = Ext.getCmp('form');
  257. if(! me.FormUtil.checkForm()){
  258. return;
  259. }
  260. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  261. me.FormUtil.getSeqId(form);
  262. }
  263. var detail = Ext.getCmp('grid');
  264. var detail2 = Ext.getCmp('OATaskRecord');
  265. var detail3 = Ext.getCmp('OATaskChange');
  266. /*Ext.each(detail.store.data.items, function(item){
  267. if(item.data.vd_id == null || item.data.vd_id == 0){
  268. item.data.vd_id = -item.index;
  269. }
  270. });*/
  271. var param1 = me.GridUtil.getGridStore(detail);
  272. var param2 = new Array();
  273. if(detail2) {
  274. param2 = me.GridUtil.getGridStore(detail2);
  275. }
  276. var param3 = new Array();
  277. if(detail3) {
  278. param3 = me.GridUtil.getGridStore(detail3);
  279. }
  280. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  281. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  282. param3 = param3 == null ? [] : "[" + param3.toString().replace(/\\/g,"%") + "]";
  283. if(form.getForm().isValid()){
  284. Ext.each(form.items.items, function(item){
  285. if(item.xtype == 'numberfield'){
  286. if(item.value == null || item.value == ''){
  287. item.setValue(0);
  288. }
  289. }
  290. });
  291. var r = form.getValues();
  292. /*r.vo_currencytype = Ext.getCmp('vo_currencytype').value ? -1 : 0;
  293. r.vo_errstring = r.vo_errstring == '正常' ? '' : r.vo_errstring;*/
  294. me.update(r, param1, param2,param3);
  295. }else{
  296. me.FormUtil.checkForm();
  297. }
  298. },
  299. update:function(){
  300. var params = new Object();
  301. var r = arguments[0];
  302. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  303. if(contains(k, 'ext-', true)){
  304. delete r[k];
  305. }
  306. });
  307. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  308. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  309. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  310. params.param3 = unescape(arguments[3].toString().replace(/\\/g,"%"));
  311. console.log(params.param2);
  312. var me = this;
  313. var form = Ext.getCmp('form');
  314. //me.getActiveTab().setLoading(true);//loading...
  315. Ext.Ajax.request({
  316. url : basePath + form.updateUrl,
  317. params : params,
  318. method : 'post',
  319. callback : function(options,success,response){
  320. //me.getActiveTab().setLoading(false);
  321. var localJson = new Ext.decode(response.responseText);
  322. if(localJson.success){
  323. saveSuccess(function(){
  324. //add成功后刷新页面进入可编辑的页面
  325. var value = r[form.keyField];
  326. var formCondition = form.keyField + "IS" + value ;
  327. if(me.contains(window.location.href, '?', true)){
  328. window.location.href = window.location.href + '&formCondition=' +
  329. formCondition;
  330. } else {
  331. window.location.href = window.location.href + '?formCondition=' +
  332. formCondition;
  333. }
  334. });
  335. } else if(localJson.exceptionInfo){
  336. var str = localJson.exceptionInfo;
  337. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  338. str = str.replace('AFTERSUCCESS', '');
  339. saveSuccess(function(){
  340. //add成功后刷新页面进入可编辑的页面
  341. var value = r[form.keyField];
  342. var formCondition = form.keyField + "IS" + value ;
  343. if(me.contains(window.location.href, '?', true)){
  344. window.location.href = window.location.href + '&formCondition=' +
  345. formCondition;
  346. } else {
  347. window.location.href = window.location.href + '?formCondition=' +
  348. formCondition;
  349. }
  350. });
  351. showError(str);
  352. } else {
  353. showError(str);
  354. return;
  355. }
  356. } else{
  357. saveFailure();//@i18n/i18n.js
  358. }
  359. }
  360. });
  361. },
  362. contains: function(string,substr,isIgnoreCase){
  363. if(isIgnoreCase){
  364. string=string.toLowerCase();
  365. substr=substr.toLowerCase();
  366. }
  367. var startChar=substr.substring(0,1);
  368. var strLen=substr.length;
  369. for(var j=0;j<string.length-strLen+1;j++){
  370. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  371. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  372. return true;
  373. }
  374. }
  375. }
  376. return false;
  377. },
  378. getForm: function(btn){
  379. return btn.ownerCt.ownerCt;
  380. }
  381. });