statistics.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.common.statistics', {
  3. extend: 'Ext.app.Controller',
  4. BaseUtil: Ext.create('erp.util.BaseUtil'),
  5. views: ['core.trigger.DbfindTrigger', 'common.statistics', 'core.form.ConDateField', 'core.button.Query',
  6. 'core.form.ConMonthDateField', 'core.form.YearDateField', 'core.trigger.CateTreeDbfindTrigger'],
  7. init:function(){
  8. var me = this;
  9. var condition = getUrlParam('condition');
  10. if (condition == null) {
  11. me.createStaWin();
  12. } else {
  13. var value1=getUrlParam('value1');
  14. var value2=getUrlParam('value2');
  15. var labels=getUrlParam('labels');
  16. var str=getUrlParam('fillText');
  17. str=str.split(",");
  18. var fillText="";
  19. for (i=0;i<str.length ;i++ )
  20. {
  21. fillText+=str[i]+'\n';
  22. }
  23. var data = [ {
  24. name : '直通率',
  25. value : condition,
  26. color : 'green'
  27. }, {
  28. name : '不良率',
  29. value : (1-condition),
  30. color : 'red'
  31. } ];
  32. var chart1 = new iChart.Pie2D({
  33. render : 'canvasDiv1',
  34. data : data,
  35. title : {
  36. text : '工作中心直通率',
  37. color : '#3e576f'
  38. },
  39. sub_option : {
  40. label : {
  41. background_color : null,
  42. sign : false,// 设置禁用label的小图标
  43. padding : '0 4',
  44. border : {
  45. enable : false,
  46. color : '#666666'
  47. },
  48. fontsize : 11,
  49. fontweight : 600,
  50. color : '#4572a7'
  51. },
  52. border : {
  53. width : 2,
  54. color : '#ffffff'
  55. },
  56. listeners:{
  57. click:function(r,e,m){
  58. }
  59. }
  60. },
  61. shadow : true,
  62. shadow_blur : 6,
  63. shadow_color : '#aaaaaa',
  64. shadow_offsetx : 0,
  65. shadow_offsety : 0,
  66. background_color : '#E8E8E8',// '#fefefe',
  67. offsetx : -60,// 设置向x轴负方向偏移位置60px
  68. offset_angle : -120,// 逆时针偏移120度
  69. showpercent : true,
  70. decimalsnum : 2,
  71. width : 850,
  72. height : 250,
  73. radius : 120,
  74. border : '0px'
  75. });
  76. chart1.plugin(new iChart.Custom({
  77. drawFn:function(){
  78. //计算位置
  79. var y = chart1.get('originy'),
  80. w = chart1.get('width');
  81. //在右侧的位置,渲染说明文字
  82. chart1.target.textAlign('start').textBaseline('middle').textFont('600 12px Verdana')
  83. .fillText(fillText,w-220,y-40,false,'black',false,15);
  84. }
  85. }));
  86. var data1 = [ {
  87. name : '直通率',
  88. value : eval(value1),
  89. color : '#4f81bd'
  90. }, {
  91. name : '不良率',
  92. value :eval(value2),
  93. color : '#bd4d4a'
  94. } ];
  95. var chart2 = new iChart.ColumnStacked3D({
  96. render : 'canvasDiv2',
  97. data : data1,
  98. labels :eval(labels),
  99. title : {
  100. text:'工序直通率',
  101. color:'#254d70'
  102. },
  103. width : 850,
  104. height : 300,
  105. column_width : 90,
  106. background_color : '#E8E8E8',
  107. shadow : true,
  108. shadow_blur : 3,
  109. shadow_color : '#aaaaaa',
  110. shadow_offsetx : 1,
  111. shadow_offsety : 0,
  112. border : '0px',
  113. sub_option : {
  114. label : {
  115. color : '#f9f9f9',
  116. fontsize : 12,
  117. fontweight : 600
  118. },
  119. border : {
  120. width : 2,
  121. color : '#ffffff'
  122. }
  123. },
  124. label : {
  125. color : '#254d70',
  126. fontsize : 12,
  127. fontweight : 600
  128. },
  129. legend : {
  130. enable : true,
  131. background_color : null,
  132. line_height : 25,
  133. color : '#254d70',
  134. fontsize : 12,
  135. fontweight : 600,
  136. border : {
  137. enable : false
  138. }
  139. },
  140. tip : {
  141. enable : true,
  142. listeners : {
  143. // tip:提示框对象、name:数据名称、value:数据值、text:当前文本、i:数据点的索引
  144. parseText : function(tip, name, value, text, i) {
  145. return name + ":" + value ;
  146. }
  147. }
  148. },
  149. percent : true,// 标志为百分比堆积图
  150. showpercent : true,
  151. decimalsnum : 1,
  152. text_space : 16,// 坐标系下方的label距离坐标系的距离。
  153. zScale : 0.5,
  154. xAngle : 50,
  155. bottom_scale : 1.1,
  156. coordinate : {
  157. width : '82%',
  158. height : '80%',
  159. board_deep : 10,// 背面厚度
  160. pedestal_height : 10,// 底座高度
  161. left_board : false,// 取消左侧面板
  162. shadow : true,// 底座的阴影效果
  163. grid_color : '#6a6a80',// 网格线
  164. wall_style : [ {// 坐标系的各个面样式
  165. color : '#6a6a80'
  166. }, {
  167. color : '#b2b2d3'
  168. }, {
  169. color : '#a6a6cb'
  170. }, {
  171. color : '#6a6a80'
  172. }, {
  173. color : '#74749b'
  174. }, {
  175. color : '#a6a6cb'
  176. } ],
  177. axis : {
  178. color : '#c0d0e0',
  179. width : 0
  180. },
  181. scale : [ {
  182. position : 'left',
  183. scale_enable : false,
  184. start_scale : 0,
  185. scale_space : 50,
  186. label : {
  187. color : '#254d70',
  188. fontsize : 11,
  189. fontweight : 600
  190. }
  191. } ]
  192. }
  193. });
  194. // 调用绘图方法开始绘图
  195. chart1.draw();
  196. chart2.draw();
  197. }
  198. this.control({
  199. '#statistic': {
  200. click: function(btn){
  201. var bt = parent.Ext.getCmp('statistic-win');
  202. if(!bt){
  203. me.createStaWin();
  204. }else{
  205. bt.show();
  206. }
  207. }
  208. }
  209. });
  210. },
  211. createStaWin: function(){
  212. var column1 = [ {
  213. labelWidth : 70,
  214. xtype : 'dbfindtrigger',
  215. fieldLabel : '工作中心*',
  216. style: 'color:red',
  217. allowBlank:false,
  218. id : 'mc_wccode',
  219. name : 'mc_wccode'
  220. } ,
  221. {
  222. xtype : 'hidden',
  223. id : 'mc_wcname',
  224. name : 'mc_wcname'
  225. } ];
  226. var column2 = [{
  227. xtype: 'condatefield',
  228. fieldLabel: '日期范围*',
  229. allowBlank: false,
  230. readOnly: true,
  231. style: 'color:red',
  232. labelWidth:70,
  233. id : 'mc_actbegindate',
  234. name : 'mc_actbegindate',
  235. width:400
  236. }];
  237. var column3=[ {
  238. labelWidth : 70,
  239. xtype : 'dbfindtrigger',
  240. fieldLabel : '线别',
  241. flex : 0.2,
  242. id : 'mc_linecode',
  243. name : 'mc_linecode'
  244. } ,
  245. {
  246. xtype : 'hidden',
  247. id : 'mc_linename',
  248. name : 'mc_linename'
  249. } ,{
  250. labelWidth : 70,
  251. xtype : 'dbfindtrigger',
  252. fieldLabel : '产品',
  253. flex : 0.2,
  254. id : 'mc_prodcode',
  255. name : 'mc_prodcode'
  256. },{
  257. xtype : 'hidden',
  258. id : 'mc_prodname',
  259. name : 'mc_prodname'
  260. }
  261. ];
  262. var form = new Ext.form.Panel({
  263. id:'statistic-form',
  264. baseCls : "x-plain",
  265. queryUrl:'pm/statistics.action',
  266. height : '160px',
  267. width : '480px',
  268. maximizable : true,
  269. buttonAlign : 'center',
  270. layout : 'column',
  271. items : [column1, column2,column3],
  272. buttons : [ {
  273. text : '确定',
  274. width : 60,
  275. cls : 'x-btn-blue',
  276. handler : function(btn) {
  277. var form = Ext.getCmp('statistic-form');
  278. if (form.getForm().isValid()) {
  279. var params = new Object();
  280. var r = form.getValues();
  281. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  282. if(contains(k, 'ext-', true)){
  283. delete r[k];
  284. }
  285. });
  286. var fillText='工作中心:'+r['mc_wcname']+','+'日期:'+r['mc_actbegindate_from']+'~'+r['mc_actbegindate_to']+',';
  287. if(r['mc_linename']!=""){
  288. fillText+='线别:'+r['mc_linename']+',';
  289. }
  290. if(r['mc_prodname']!=""){
  291. fillText+='产品:'+r['mc_prodname'];
  292. }
  293. params.param = unescape(escape(Ext.JSON.encode(r)));
  294. url=form.queryUrl;
  295. Ext.Ajax.request({
  296. url : basePath + url,
  297. params : params,
  298. method : 'post',
  299. callback : function(options,success,response){
  300. var localJson = new Ext.decode(response.responseText);
  301. var flag1=(localJson.labels==""||localJson.labels==null)? true:false ;
  302. var flag2=(localJson.rate==""||localJson.rate==null)? true:false ;
  303. var flag3=(localJson.value1==""||localJson.value1==null)? true:false ;
  304. if(flag1||flag2||flag3){
  305. alert('没有数据,无法生成图表');
  306. }else{
  307. str=window.location.href;
  308. if(str.indexOf('?')!=-1){
  309. str=window.location.href;
  310. str=str.substring(0,str.indexOf('?'));
  311. }
  312. window.location.href =str+ '?condition='+ Number(localJson.rate).toFixed(2)+'&labels='+localJson.labels+'&value1='+localJson.value1+'&value2='+localJson.value2+'&fillText='+fillText;
  313. }
  314. }
  315. });
  316. }
  317. }
  318. }, {
  319. text : '关闭',
  320. width : 60,
  321. cls : 'x-btn-blue',
  322. handler : function(btn) {
  323. Ext.getCmp('statistic-win').hide();
  324. }
  325. } ]
  326. });
  327. var win = new Ext.window.Window({
  328. title : '筛选条件',
  329. id : 'statistic-win',
  330. items:form
  331. });
  332. win.show();
  333. }
  334. });