PlanDate.js 9.7 KB

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