common.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. var indexName = {'index_128': '预约总量', 'index_129': '居民预约量', 'index_130': '代预约量'};
  2. function getStartDate(chooseYear){
  3. // 按年度来计算的时候,开始时间是该年度7月1号还是到下一个年的6月30号结束
  4. if(chooseYear == 2016){
  5. return chooseYear + "-08-01";
  6. }else{
  7. return chooseYear+'-07-01';
  8. }
  9. }
  10. //获取结束时间
  11. function getEndDate(chooseYear){
  12. chooseYear = parseInt(chooseYear);
  13. var endDate = new Date((chooseYear+1) + '-06-30'),
  14. now = new Date();
  15. if(now <= endDate){
  16. return now.format("yyyy-MM-dd");
  17. }else{
  18. return (chooseYear+1) + '-06-30';
  19. }
  20. }
  21. //获取结束时间29
  22. function getEndDate29(chooseYear){
  23. chooseYear = parseInt(chooseYear);
  24. var endDate = new Date((chooseYear+1) + '-06-29'),
  25. now = new Date();
  26. if(now <= endDate){
  27. return now.format("yyyy-MM-dd");
  28. }else{
  29. return (chooseYear+1) + '-06-29';
  30. }
  31. }
  32. /**
  33. * 获取多少天前的日期
  34. */
  35. function getDateBefore(days) {
  36. var now = new Date();
  37. var date = new Date(now.getTime() - days * 24 * 3600 * 1000);
  38. var year = date.getFullYear();
  39. var month = date.getMonth() + 1;
  40. var day = date.getDate();
  41. var hour = date.getHours();
  42. var minute = date.getMinutes();
  43. var second = date.getSeconds();
  44. return year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day);
  45. }
  46. /*
  47. * 获取用来排序的字段值,返回数组
  48. * 参数: list - 列表, key - 字段的名称
  49. */
  50. function getKeyValueArr(list, key){
  51. var arr = [];
  52. for(var k in list){
  53. arr.push(list[k][key]);
  54. }
  55. return arr;
  56. }
  57. /*
  58. * 排名
  59. */
  60. function soreRank(arr){
  61. var temp = [];
  62. var lis = [];
  63. for(var i=0;i<arr.length;i++){
  64. lis.push(arr[i]);
  65. }
  66. lis = _.uniq(lis);
  67. for(var i=0;i<arr.length;i++){
  68. temp[i] = lis.indexOf(arr[i])+1;
  69. }
  70. return temp;
  71. }
  72. /*
  73. * 绘制饼图数据处理 // elId, arry, title, hasNum,colors,radius,noLedend,param
  74. */
  75. function handlePieData(arg){
  76. var legend = {
  77. orient: 'vertical',
  78. right: '15%',
  79. y:'center',
  80. };
  81. var colorList=[]
  82. legendNames = [];
  83. var arr1 = _.map(arg.arry, function(o,i){
  84. var count = 0
  85. if(arg.param){
  86. count = parseFloat(o[arg.param])
  87. }else{
  88. count = parseFloat(o.amount)
  89. }
  90. var obj = {
  91. name: o[arg.nameparam]||o.name,
  92. count: count
  93. };
  94. legendNames.push(obj);
  95. if(o.code){
  96. colorList.push(arg.colors[o.code])
  97. }else{
  98. colorList.push(arg.colors[i])
  99. }
  100. return {
  101. value: count,
  102. name: o[arg.nameparam]||o.name
  103. }
  104. });
  105. legend.formatter = function(name){
  106. if(arg.hasNum){
  107. var target;
  108. for (var i = 0, l = legendNames.length; i < l; i++) {
  109. if (legendNames[i].name == name) {
  110. target = parseInt(legendNames[i].count);
  111. }
  112. }
  113. return name+": "+target
  114. }else{
  115. return name
  116. }
  117. }
  118. if(arg.noLedend){ //true时无注释
  119. drawPie(arg.elId, arr1, colorList, null, arg.position||['50%', '51%'], arg.radius||['70%', '90%'], arg.title)
  120. }else{
  121. drawPie(arg.elId, arr1, colorList, legend, arg.position||['30%', '51%'], arg.radius||['70%', '90%'], arg.title)
  122. }
  123. }
  124. /*
  125. * 绘制饼图
  126. */
  127. function drawPie(elId, arry, color, legend, center, radius, title){
  128. var pieChart = echarts.init(document.getElementById(elId));
  129. var options = {
  130. tooltip: {
  131. trigger: 'item',
  132. formatter: "{b} : {c} ({d}%)",
  133. // position: ['50%', '50%']
  134. },
  135. color: color,
  136. series: [
  137. {
  138. type:'pie',
  139. radius: ['80%', '99%'],
  140. startAngle: 270,
  141. legendHoverLink: false,
  142. hoverAnimation: false,
  143. avoidLabelOverlap: false,
  144. label: {
  145. normal: {
  146. show: false,
  147. textStyle: {
  148. color: "#000",
  149. }
  150. }
  151. },
  152. labelLine: {
  153. normal: {
  154. show: false
  155. }
  156. },
  157. data:arry,
  158. }]
  159. };
  160. if(legend){
  161. options.legend = legend;
  162. }
  163. if(center){
  164. options.series[0].center = center;
  165. }
  166. if(radius){
  167. options.series[0].radius = radius;
  168. }
  169. if(title){
  170. options.title = title
  171. }
  172. pieChart.clear();
  173. pieChart.setOption(options);
  174. }
  175. /*
  176. * 绘制饼图
  177. * arry [{name: '', value: ''}]
  178. * color ['#ffc800', '#17b3ec']
  179. * silent 图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件
  180. */
  181. function drawPieChart(elId, arry, color, silent){
  182. var myChart = echarts.init(document.getElementById(elId));
  183. var option = {
  184. tooltip: {
  185. trigger: 'item',
  186. formatter: "{b} : {c} ({d}%)",
  187. position: ['50%', '50%']
  188. },
  189. color: color,
  190. series: [
  191. {
  192. type:'pie',
  193. radius: ['80%', '99%'],
  194. startAngle: 270,
  195. legendHoverLink: false,
  196. hoverAnimation: false,
  197. avoidLabelOverlap: false,
  198. silent: silent,
  199. label: {
  200. normal: {
  201. show: false,
  202. textStyle: {
  203. color: "#000"
  204. }
  205. }
  206. },
  207. labelLine: {
  208. normal: {
  209. show: false
  210. }
  211. },
  212. data:arry
  213. }]
  214. };
  215. $("#"+elId).removeAttr("_echarts_instance_");
  216. myChart.setOption(option);
  217. return myChart;
  218. }
  219. /**
  220. * 绘制柱状图
  221. */
  222. function drawBarChart(el, xData, yData, color, name){
  223. var myChart = echarts.init(document.getElementById(el));
  224. // 指定图表的配置项和数据
  225. var option = {
  226. tooltip: {
  227. trigger: 'item'
  228. },
  229. toolbox: {
  230. dataZoom: true,
  231. show: true,
  232. orient: 'vertical',
  233. x: 'right',
  234. y: 'center'
  235. },
  236. grid: {
  237. left: '20px',
  238. right: '20px',
  239. bottom: '20px',
  240. top: '20px',
  241. containLabel: true
  242. },
  243. xAxis: [{
  244. type: 'category',
  245. data: xData,
  246. axisLabel: {
  247. interval:0,//横轴信息全部显示
  248. },
  249. splitLine: {
  250. show: false
  251. }
  252. }],
  253. yAxis: [{
  254. type: 'value',
  255. splitLine: {show:false}
  256. }],
  257. series: [{
  258. clickable: true,
  259. name: name,
  260. itemStyle : {
  261. normal: {
  262. label : {
  263. show: true, position: 'top'
  264. },
  265. color: color
  266. }
  267. },
  268. barWidth: 20,
  269. type: 'bar',
  270. data: yData
  271. }]
  272. };
  273. // 使用刚指定的配置项和数据显示图表。
  274. myChart.setOption(option);
  275. return myChart;
  276. }
  277. /**
  278. * 绘制折线图数据处理
  279. * @param {Object} elId div的id值
  280. * @param {Object} data 数据值
  281. * @param {Object} selectedDateType true的时候x轴值年-月-日 1-日,2-周, 3-月
  282. */
  283. function getChartData(elId, data, selectedDateType,hasLegend,title,unit){
  284. var dataZoom_end,
  285. xDatas = [],
  286. yDatas = [],
  287. names = [],
  288. colors = ['#12b7f5', '#cd67fd','#FF9526'];
  289. for(var p in data){
  290. if(hasLegend){
  291. names.push(indexName[p]);
  292. }
  293. var xData = _.map(data[p], function(o){
  294. return o.range;
  295. });
  296. var yData = _.map(data[p], function(o){
  297. return o.amount;
  298. });
  299. xDatas.push(xData);
  300. yDatas.push(yData);
  301. var lastIndex = yData.length % 10;
  302. if(yData.length >10 ){
  303. dataZoom_end = 100-(9/yData.length)*100;
  304. }else{
  305. dataZoom_end = 0;
  306. }
  307. }
  308. setTimeout(function(){
  309. EventBus.$emit("draw-line-chart", {
  310. panelName : title,
  311. quotaNames : names,
  312. xData : xDatas[0],
  313. yDatas : yDatas,
  314. colors : colors,
  315. selectedDateType: selectedDateType,
  316. nowlineid : elId,
  317. unit:unit
  318. });
  319. },10)
  320. }