PlanDate.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. Ext.define('erp.view.core.form.PlanDate', {
  2. extend: 'Ext.form.FieldContainer',
  3. alias: 'widget.plandate',
  4. layout: 'hbox',
  5. items: [],
  6. height: 22,
  7. initComponent : function(){
  8. this.callParent(arguments);
  9. var me = this;
  10. me.insert(0, {
  11. xtype: 'combo',
  12. flex: 1,
  13. editable: false,
  14. fieldStyle: 'background:#C1CDC1',
  15. store: Ext.create('Ext.data.Store', {
  16. fields: ['display', 'value'],
  17. data : [
  18. {"display":"月计划", "value": '月计划'},
  19. {"display":"年计划", "value": '年计划'},
  20. {"display":"季度计划", "value": '季度计划'}
  21. ]
  22. }),
  23. queryMode: 'local',
  24. displayField: 'display',
  25. valueField: 'value',
  26. value: '月计划',
  27. listeners: {
  28. select: function(combo, records, obj){
  29. me.changePlan(combo.value);
  30. }
  31. }
  32. });
  33. me.insert(1, Ext.create('erp.view.core.form.MonthDateField', {
  34. flex: 1,
  35. editable: false,
  36. fromnow: true,
  37. name: me.name,
  38. // listeners: {
  39. // render: function(f){
  40. // if(me.items.items[0].value != '月计划'){
  41. // alert(f.value);
  42. // alert(me.items.items[0].value);
  43. //// me.items.items[1].setValue(f.value);
  44. // me.changePlan(me.items.items[0].value);
  45. // }
  46. // }
  47. // }
  48. }));
  49. me.insert(2, {
  50. flex: 3,
  51. xtype: 'displayfield',
  52. listeners: {
  53. change: function(f){
  54. var form = f.up('erpWorkPlanFormPanel');
  55. if(form){
  56. var type = form.down('dbfindtrigger').value;
  57. var lastplan = form.down('workplanfield');
  58. var nextplan = form.down('workplanfield2');
  59. var summary = form.down('#wp_summary');
  60. // console.log(summary);
  61. var title = '';//nextplan计划标题
  62. var title2 = '';//lastplan计划标题
  63. var val = this.ownerCt.items.items[0].value,
  64. val2 = this.ownerCt.items.items[1].value,
  65. y,m;
  66. switch (val) {
  67. case '月计划':
  68. if(/^[1-9]\d{3}[0-1]\d$/.test(val2)){
  69. y = val2.toString().substring(0, 4);
  70. m = val2.toString().substr(4);
  71. title = em_name + '的' + y + '年' + m + '月' + type;
  72. if(m != '01'){
  73. var moo = (m-1)<10 ? ('0'+(m-1)) : (m-1);
  74. lastplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年'+moo+'月份计划');
  75. summary.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年'+moo+'月份总结');
  76. title2 = em_name + '的' + y + '年' + moo + '月' + type;
  77. } else {
  78. title2 = em_name + '的' + (y-1) + '年' + 12 + '月' + type;
  79. lastplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年'+12+'月份计划');
  80. summary.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年'+12+'月份总结');
  81. }
  82. nextplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年'+m+'月份计划');
  83. }
  84. break;
  85. case '年计划':
  86. if(/^[1-9]\d{3}$/.test(val2)){
  87. y = val2.toString().substring(0, 4);
  88. title = em_name + '的' + y + '年年度' + type;
  89. title2 = em_name + '的' + (y-1) + '年年度' + type;
  90. lastplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年年度计划');
  91. summary.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年年度总结');
  92. nextplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年年度计划');
  93. }
  94. break;
  95. case '季度计划':
  96. if(/^[1-9]\d{3}[1-4]$/.test(val2)){
  97. y = val2.toString().substring(0, 4);
  98. m = Number(val2.toString().substr(4));
  99. title = em_name + '的' + y + '年第' + m + '季度' + type;
  100. if(m != 1){
  101. title2 = em_name + '的' + y + '年第' + (m-1) + '季度' + type;
  102. lastplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年第'+(m-1)+'季度计划');
  103. summary.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年第'+(m-1)+'季度总结');
  104. } else {
  105. title2 = em_name + '的' + (y-1) + '年第' + 4 + '季度' + type;
  106. lastplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年第'+4+'季度计划');
  107. summary.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+(y-1)+'年第'+4+'季度总结');
  108. }
  109. nextplan.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+y+'年'+m+'季度计划');
  110. }
  111. break;
  112. default:
  113. break;
  114. }
  115. form.down('#lasttitle').setValue(title2);//一定要先给title2赋值
  116. form.down('textfield').setValue(title);
  117. form.down('#import').setText('查看'+title2+'完成情况');
  118. }
  119. }
  120. }
  121. });
  122. me.setValue(me.value);
  123. },
  124. changePlan: function(val, v){
  125. var me = this;
  126. var value = me.items.items[1].value;
  127. me.items.items[1].destroy(true);
  128. switch (val) {
  129. case '月计划':
  130. me.insert(1, Ext.create('erp.view.core.form.MonthDateField', {
  131. flex: 1,
  132. editable: false,
  133. fromnow: true,
  134. value: value,
  135. name: me.name,
  136. listeners: {
  137. afterrender: function(f){
  138. if(v){
  139. f.setDisabled(true);
  140. }
  141. },
  142. change: function(){
  143. me.showValue();
  144. }
  145. }
  146. }));
  147. break;
  148. case '年计划':
  149. me.insert(1, Ext.create('erp.view.core.form.YearDateField', {
  150. flex: 1,
  151. editable: false,
  152. fromnow: true,
  153. value: v==null? value : v,
  154. name: me.name,
  155. listeners: {
  156. afterrender: function(f){
  157. if(v){
  158. f.setDisabled(true);
  159. }
  160. },
  161. change: function(){
  162. me.showValue();
  163. }
  164. }
  165. }));
  166. break;
  167. case '季度计划':
  168. me.insert(1, {
  169. xtype: 'fieldcontainer',
  170. flex: 2,
  171. layout: 'hbox',
  172. items: [Ext.create('erp.view.core.form.YearDateField', {
  173. flex: 1,
  174. editable: false,
  175. fromnow: true,
  176. listeners: {
  177. afterrender: function(f){
  178. if(v){
  179. f.fromnow = false;
  180. f.setValue(v.substring(0, 4));
  181. f.setDisabled(true);
  182. }
  183. },
  184. change: function(f){
  185. f.ownerCt.value = f.value + '' + f.ownerCt.down('combobox').value;
  186. me.showValue();
  187. }
  188. }
  189. }),{
  190. flex: 1.5,
  191. xtype: 'combobox',
  192. editable: false,
  193. store: Ext.create('Ext.data.Store', {
  194. fields: ['display', 'value'],
  195. data : [
  196. {"display":"第一季度", "value": 1},
  197. {"display":"第二季度", "value": 2},
  198. {"display":"第三季度", "value": 3},
  199. {"display":"第四季度", "value": 4}
  200. ]
  201. }),
  202. queryMode: 'local',
  203. displayField: 'display',
  204. valueField: 'value',
  205. value: 1,
  206. name: me.name,
  207. listeners: {
  208. afterrender: function(f){
  209. if(v){
  210. f.setValue(v.substring(4));
  211. f.setDisabled(true);
  212. }
  213. },
  214. change: function(f){
  215. f.ownerCt.value = f.ownerCt.down('yeardatefield').value + '' + f.value;
  216. me.showValue();
  217. }
  218. }
  219. }],
  220. listeners: {
  221. afterrender: function(f){
  222. f.value = f.ownerCt.down('yeardatefield').value + '' + f.down('combobox').value;
  223. me.showValue();
  224. }
  225. }
  226. });
  227. break;
  228. default:
  229. break;
  230. }
  231. this.showValue();
  232. },
  233. reset: function(){
  234. var me = this;
  235. me.items.items[0].reset();
  236. me.items.items[1].reset();
  237. },
  238. setValue: function(value){
  239. var me = this;
  240. if(value && contains(value, ';')){
  241. var p = value.split(';')[0],
  242. v = value.split(';')[1];
  243. if(!Ext.isEmpty(p)){
  244. me.items.items[0].setValue(p);
  245. me.items.items[0].setDisabled(true);
  246. me.items.items[1].setValue(v);
  247. me.items.items[1].setDisabled(true);
  248. if(p != '月计划'){
  249. me.changePlan(p, v);
  250. }
  251. }
  252. }
  253. this.showValue();
  254. },
  255. listeners: {
  256. afterrender: function(){
  257. this.getEl().dom.childNodes[1].style.height = 22;
  258. this.getEl().dom.childNodes[1].style.overflow = 'hidden';
  259. }
  260. },
  261. getValue: function(){//以;隔开{类型;值}
  262. var me = this;
  263. return me.items.items[0].value + ';' + me.items.items[1].value;
  264. },
  265. isValid: function(){
  266. return true;
  267. },
  268. showValue: function(){
  269. var val = this.items.items[0].value,
  270. value = this.items.items[1].value,
  271. s = '',
  272. y,m;
  273. switch (val) {
  274. case '月计划':
  275. if(/^[1-9]\d{3}[0-1]\d$/.test(value)){
  276. y = value.toString().substring(0, 4);
  277. m = value.toString().substr(4);
  278. var d = new Date(y, Number(m), 1);
  279. d = new Date(d.getTime() - 24*60*60*1000).getDate();
  280. s = y + '-' + m + '-01 ~ ' + y + '-' + m + '-' + d;
  281. }
  282. break;
  283. case '年计划':
  284. if(/^[1-9]\d{3}$/.test(value)){
  285. y = value.toString().substring(0, 4);
  286. s = y + '-01-01 ~ ' + y + '-12-31';
  287. }
  288. break;
  289. case '季度计划':
  290. if(/^[1-9]\d{3}[1-4]$/.test(value)){
  291. y = value.toString().substring(0, 4);
  292. m = Number(value.toString().substr(4));
  293. var d = new Date(y, Number(3*m), 1);
  294. d = new Date(d.getTime() - 24*60*60*1000).getDate();
  295. s = y + '-' + (3*m - 2) + '-01 ~ ' + y + '-' + 3*m + '-' + d;
  296. }
  297. break;
  298. default:
  299. break;
  300. }
  301. this.down('displayfield').setValue(s);
  302. }
  303. });