comprehensive-analysis.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926
  1. mui.init();
  2. var selfwv,
  3. userRole,
  4. initLevel,
  5. initAreaCode,
  6. initTitle,
  7. level,
  8. areaCode,
  9. areaTitle,
  10. index = "2", // 顶部tab对应的指标的index
  11. selectedDateType = 1, //折线图中选择的时间类型。 1-日,2-周, 3-月
  12. indexs = ['2','3', '5', '6'], //对应顶部tab的index值
  13. endDate,
  14. startDate,
  15. nowYear = new Date().getYear(),
  16. quShiStartDate,
  17. quShiEndDate,
  18. lowLevel,
  19. indexName = {'index_2': '活跃居民','index_3': '居民咨询量', 'index_5': '健康指导','index_6':'关注人次','index_1':'有效关注', 'index_4': '注册居民','index_83': "健康文章"};
  20. var initTabOffsetTop = 0; //初始化时,底部tab距离顶部的位置
  21. var index_5, index_83; //标记健康教育中健康文章和健康指导的值
  22. var reqParam = []; //请求参数
  23. var reqList = []; //请求的链接数据,根据这些信息后退的时候使用
  24. //初始化计算选择的年份
  25. var chooseYear;
  26. var now = new Date();
  27. if(now.getMonth() >= 6){
  28. chooseYear = now.getFullYear();
  29. }else{
  30. chooseYear = now.getFullYear() - 1;
  31. }
  32. var information = {
  33. "2":"注册居民数为当前(截止最新时间)累计注册i健康的居民数量总和。",
  34. "3":"居民咨询量为当前(截止最新时间)居民咨询的次数。",
  35. "5":"健康教育为当前(截止最新时间)发送健康指导及健康文章数量的总和。",
  36. "6":"关注公众号和注册i健康平台的统计分析"
  37. };
  38. mui.plusReady(function(){
  39. selfwv = plus.webview.currentWebview();
  40. userRole = JSON.parse(plus.storage.getItem("selectedRole"));
  41. initLevel = level = 3;//因为总体分析只能看到科室和医生,所以3代表科室级别,2代表医生级别
  42. initAreaCode = areaCode = srOrgCode;//默认是上饶机构code,值在common_http.js文件中
  43. initTitle = areaTitle = userRole.name;
  44. //处理点击首页的tap默认触发本页面的顶部tap
  45. if(selfwv.index){
  46. $(".l-banner li").removeClass("active");
  47. selfwv.index==0?index='2':selfwv.index==1?index='3':selfwv.index==2?index=5:selfwv.index==3?index=6:index=2;
  48. $(".l-banner li").eq(selfwv.index).addClass("active");
  49. }
  50. $("#areaTitle").text(areaTitle);
  51. $("#infoText").text(information[index]);
  52. $(".choose-label").text(chooseYear + '年');
  53. //初始化趋势图时间
  54. nowYear = new Date().getYear()
  55. nowYear += (nowYear < 2000) ? 1900 : 0;
  56. initReqParams(); //初始请求参数信息
  57. loadData([0,1,2]);
  58. //记录返回链接信息
  59. reqList.push({
  60. level: level,
  61. lowLevel: lowLevel,
  62. areaCode: areaCode,
  63. areaTitle: areaTitle,
  64. index: index,
  65. req: reqParam
  66. });
  67. initTabOffsetTop = $(".area-tab-panel").offset().top;
  68. showBottomTab();
  69. bindEvents();
  70. });
  71. initScroller();
  72. function getTopReqParams(){
  73. var url = "/statistics/getIndexTotal",
  74. data = {endDate:getDateFromNow(),area:areaCode,level:3};
  75. return {
  76. url: url,
  77. reqType: 'GET',
  78. data: data
  79. };
  80. }
  81. function initReqParams(){
  82. //初始化开始时间和结束时间
  83. startDate = getStartDate();
  84. endDate = getEndDate();
  85. quShiStartDate = formatDate(new Date(nowYear,0,1));
  86. quShiEndDate = formatDate(new Date(nowYear,11,31));
  87. $(".add-qushi-date-text").html(nowYear.toString())
  88. //增量(注册居民2、居民咨询量3、健康教育5、)到达量(居民关注6)
  89. var url2 = "/statistics/interval",//默认注册居民
  90. url3 = '/statistics/registerRange';;//默认注册居民
  91. if(index=='3' || index == '6'){
  92. url3 = "/statistics/lowlevel_total_mesh"
  93. }else if(index == '5'){
  94. url3 = '/statistics/article_lowlevel_total';
  95. }else if(index=='6'){
  96. url2 = "/statistics/interval_total";
  97. }
  98. if(index==2){//注册居民
  99. reqParam = [{//请求中间部分
  100. url: url2,
  101. reqType: 'POST',
  102. data:{
  103. index: '2,4',
  104. level: level, //等级(1 团队,2 科室,3 机构,4 区)
  105. area: areaCode, //默认是49229004X
  106. startDate: quShiStartDate,
  107. endDate: quShiEndDate,
  108. interval: selectedDateType
  109. }
  110. },{ //如果是注册居民,则增加置顶展示当面层级的注册率及关注平台人数、 注册人数.只针对注册居民时使用
  111. url: url3,
  112. reqType: 'POST',
  113. data: {}
  114. }];
  115. }else{//居民咨询量3、健康教育5、居民关注6
  116. reqParam = [{//请求中间部分
  117. url: url2,
  118. reqType: 'POST',
  119. data:{
  120. index: index == 5 ? '5,83' : (index==6)?"1,6":index,
  121. level: level, //等级(1 团队,2 科室,3 机构,4 区)
  122. area: areaCode, //默认是49229004X
  123. startDate: quShiStartDate,
  124. endDate: quShiEndDate,
  125. interval: selectedDateType
  126. }
  127. },{//请求底部部分
  128. url: url3,
  129. reqType: 'POST',
  130. data: {
  131. index: (index == 3) ? "3,22" : (index==6)?"1,6":index,
  132. endDate: endDate,
  133. level: level,
  134. area: areaCode,
  135. sort: 1
  136. }
  137. }];
  138. if(lowLevel){
  139. reqParam[1].data.lowLevel = lowLevel;
  140. }
  141. }
  142. }
  143. /*
  144. * 加载页面数据
  145. * @param loadArr array 记录需要请求的区域0-顶部,1-中间,2-底部
  146. */
  147. function loadData(loadArr){
  148. plus.nativeUI.showWaiting();
  149. getJieZhiTime();
  150. var reqPromise = [],
  151. newArr = []; //记录非顶部请求的请求数组
  152. if(loadArr.indexOf(0) > -1){
  153. //请求加载了头部的内容
  154. var url = "/statistics/getIndexTotal",
  155. data = {endDate:getDateFromNow(),area:areaCode,level:level};
  156. var reqs = [{url: url,reqType: 'GET',data: data}];
  157. getReqPromises(reqs, true).then(function(ress){
  158. handleTopPanelData(ress);
  159. }).then(function(){
  160. //如果饼图已经显示了,则这边需要重新绘制新的数据
  161. if($("#pieChartsPanel").hasClass("show")){
  162. $("#pieChartsPanel").show();
  163. $("#pieChartsPanel").addClass("show");
  164. $(".wz-num").text(index_83);
  165. $(".zd-num").text(index_5);
  166. var arr = [{
  167. name: '健康文章',
  168. value: index_83
  169. },{
  170. name: '健康指导',
  171. value: index_5
  172. }];
  173. drawPie('pieChart', arr, ['#ffc800', '#17b3ec']);
  174. }else{
  175. $("#pieChartsPanel").hide();
  176. $("#pieChartsPanel").removeClass("show");
  177. }
  178. });
  179. }
  180. for(var i=0; i<loadArr.length; i++){
  181. if(loadArr[i] == 0){
  182. // do nothing
  183. }else{
  184. var j = loadArr[i] - 1;
  185. reqPromise.push(reqParam[j]);
  186. newArr.push(loadArr[i]);
  187. }
  188. }
  189. if(index == '2'){//注册居民
  190. $("#pieChartsPanel2").show();
  191. $(".area-panel").addClass("bgc-fff").hide();
  192. }else{
  193. $("#pieChartsPanel2").hide();
  194. $(".area-panel").removeClass("bgc-fff").show();
  195. }
  196. if(index == '5' ){
  197. //如果饼图还没有显示了,说明当前操作是点击了”健康教育“tab,此时需要绘制饼图,这样才会有动画效果
  198. if(!$("#pieChartsPanel").hasClass("show")){
  199. $("#pieChartsPanel").show();
  200. $("#pieChartsPanel").addClass("show");
  201. $(".wz-num").text(index_83);
  202. $(".zd-num").text(index_5);
  203. var arr = [{
  204. name: '健康文章',
  205. value: index_83
  206. },{
  207. name: '健康指导',
  208. value: index_5
  209. }];
  210. drawPie('pieChart', arr, ['#ffc800', '#17b3ec']);
  211. }
  212. }else{
  213. $("#pieChartsPanel").hide();
  214. $("#pieChartsPanel").removeClass("show");
  215. }
  216. if(reqPromise.length > 0){
  217. getReqPromises(reqPromise, true).then(function(ress){
  218. var res2, res3;
  219. for(var i=0; i<newArr.length; i++){
  220. var j = newArr[i] + 1;
  221. if(j == 2){
  222. res2 = ress[i];
  223. }
  224. if(j == 3){
  225. res3 = ress[i];
  226. }
  227. }
  228. if(res2){
  229. if(res2.status == 200){
  230. handleSecondPanelData(res2.data);
  231. }else{
  232. mui.toast(res2.msg);
  233. }
  234. }
  235. if(res3){
  236. if(index=='2'){//注册居民
  237. if(res3.status == 200){
  238. $("#pieChartsPanel2").show();
  239. handleZCGKData(res3.data);
  240. }else{
  241. $("#pieChartsPanel2").hide();
  242. mui.toast(res3.msg);
  243. }
  244. }else{
  245. if(res3.status == 200){
  246. listHandle(res3.data);
  247. }else{
  248. $("#listTable").empty();
  249. mui.toast(res3.msg);
  250. }
  251. }
  252. }
  253. plus.nativeUI.closeWaiting();
  254. }).catch(function(e){
  255. console.log(e);
  256. plus.nativeUI.closeWaiting();
  257. });
  258. }
  259. }
  260. /*
  261. * 加载数据截止时间
  262. */
  263. function getJieZhiTime(){
  264. sendPost("/statistics/time",null,function(res){
  265. },function(res){
  266. if(res.status=="200"){
  267. var date = (res.data && res.data.substring(11,16)) || "";
  268. $(".jiezhi-time").html("("+date+")");
  269. }
  270. });
  271. }
  272. /*
  273. * 处理顶部各tab的值
  274. */
  275. function handleTopPanelData(ress){
  276. if(ress[0].status==200){
  277. var data = ress[0].data;
  278. $("#index_2 .span-account").html(data.reginNum);
  279. $("#index_3 .span-account").html(data.consultNum);
  280. $("#index_5 .span-account").html(parseInt(data.educateNum)+parseInt(data.guideNum));
  281. $("#index_6 .span-account").html(data.concernNum);
  282. index_83 = data.educateNum;
  283. index_5 = data.guideNum;
  284. }else{
  285. mui.toast(ress[0].msg);
  286. }
  287. }
  288. /*
  289. * 处理中间折线图区域的数据
  290. */
  291. function handleSecondPanelData(data){
  292. var dataZoom_end,
  293. xDatas = [],
  294. yDatas = [],
  295. names = [],
  296. colors = ['#12b7f5', '#cd67fd'];
  297. for(var p in data){
  298. names.push(indexName[p]);
  299. var xData = _.map(data[p], function(o){
  300. return o.range;
  301. });
  302. var yData = _.map(data[p], function(o){
  303. return o.amount;
  304. });
  305. xDatas.push(xData);
  306. yDatas.push(yData);
  307. var lastIndex = yData.length % 10;
  308. if(yData.length >10 ){
  309. dataZoom_end = 100-(9/yData.length)*100;
  310. }else{
  311. dataZoom_end = 0;
  312. }
  313. //初始给定第一版页面中时间区间
  314. if(selectedDateType == 3){
  315. var d1 = lastIndex > 0 ? xData[yData.length - lastIndex] : xData[yData.length - 10],
  316. d2 = xData[yData.length -1];
  317. $("#startValue").text(d1.substr(0,4)+"年"+d1.substr(5,2)+"月");
  318. $("#endValue").text(d2.substr(0,4)+"年"+d2.substr(5,2)+"月");
  319. }else{
  320. $("#startValue").text(lastIndex > 0 ? xData[yData.length - lastIndex] : xData[yData.length - 10]);
  321. $("#endValue").text(xData[yData.length -1]);
  322. }
  323. }
  324. drawLine(names, dataZoom_end, xDatas[0], yDatas, colors);
  325. }
  326. /*
  327. * 处理底部科室、医生的数据
  328. */
  329. function listHandle(data){
  330. for(var k in data){
  331. var list = data[k];
  332. if(index=="3"){//咨询量
  333. for(var i=0;i<list.length;i++){
  334. var amount = list[i].amount.split(",");
  335. list[i].amount = amount[0];//咨询量
  336. list[i].noAmount = amount[1];//未回复咨询量
  337. }
  338. }
  339. if(index=="6"){//关注居民
  340. for(var i=0;i<list.length;i++){
  341. var amount = list[i].amount.split(",");
  342. list[i].amount = amount[0];//关注居民数
  343. list[i].noAmount = amount[1];//关注人次
  344. }
  345. }
  346. var topArr = [];
  347. topArr = soreRank(amountArr(list, 'amount'));
  348. for(var j in list){
  349. list[j].top = topArr[j];
  350. }
  351. var html = template("data-list", {
  352. list: list,
  353. level: level,
  354. index: index,
  355. lowLevel: lowLevel
  356. });
  357. $("#listTable").empty().append(html);
  358. }
  359. }
  360. /*
  361. * 处理注册居民-注册率概况的数据
  362. */
  363. function handleZCGKData(data){
  364. $("#pieChartsPanel2 .title").text("注册率概况");
  365. $(".jf-num").text(data.wxUser);
  366. $(".wjf-num").text(data.reginNum);
  367. $(".num").text((data.registeRange || 0)+"%");
  368. var arr = [{
  369. name: '关注平台人数',
  370. value: data.wxUser
  371. },{
  372. name: '注册人数',
  373. value: data.reginNum
  374. }];
  375. drawPie('pieChart2', arr, ['#17b3ec', '#909090']);
  376. }
  377. /*
  378. * 获得团队信息
  379. */
  380. function showTeamInfo(teamId){
  381. var url = "/doctor/admin-teams/teams/info",
  382. params = {
  383. teamId: teamId
  384. };
  385. plus.nativeUI.showWaiting();
  386. sendGet(url, params, null, function(res){
  387. if(res.status == 200){
  388. var data = res.data;
  389. data.memberLength = data.members.length;
  390. var html = template("teamInfo", data);
  391. $("#teamInfoBox").empty().append(html);
  392. $(".modal-overlay").addClass("modal-overlay-visible");
  393. setTimeout(function(){
  394. $(".modal-content").show();
  395. },50)
  396. }else{
  397. mui.toast(res.msg);
  398. }
  399. plus.nativeUI.closeWaiting();
  400. }, true);
  401. }
  402. /*
  403. * 控件事件绑定
  404. */
  405. function bindEvents(){
  406. //说明信息相关事件
  407. $("#closeBtn").on("tap", function(){
  408. $(".information").hide();
  409. });
  410. $(".info-icon").on("tap", function(){
  411. $(".information").show();
  412. });
  413. //点击顶部tab切换
  414. $(".l-banner").on('tap', 'li', function(){
  415. var $this = $(this),
  416. val = $this.attr("data-index");
  417. if($this.hasClass("active")){
  418. return false;
  419. }
  420. $(".l-banner li.active").removeClass("active");
  421. $this.addClass("active");
  422. index = val;
  423. $("#infoText").text(information[index]);
  424. var tagName = index == '5' ? '推送量' : indexName['index_'+index];
  425. if(index=='6'){//居民关注
  426. $(".qushi-span").text("居民关注趋势");
  427. }else{
  428. $(".qushi-span").text(tagName+"新增趋势");
  429. }
  430. //加载数据
  431. initReqParams();
  432. loadData([1,2]);
  433. //记录返回链接信息
  434. reqList.push({
  435. level: level,
  436. lowLevel: lowLevel,
  437. areaCode: areaCode,
  438. areaTitle: areaTitle,
  439. index: index,
  440. req: reqParam
  441. });
  442. });
  443. //日月周切换
  444. $(".date-tag").on('tap', function(){
  445. var $this = $(this),
  446. val = $this.attr("data-type");
  447. if($this.hasClass("active")){
  448. return false;
  449. }
  450. $(".date-tag").removeClass("active");
  451. $this.addClass("active");
  452. selectedDateType = val;
  453. initReqParams();
  454. loadData([1]);
  455. });
  456. //底部各区,社区,团队tab切换
  457. $(".area-tab").on('tap', function(){
  458. var $this = $(this),
  459. type = $this.attr("data-val"); //4 - 各区, 3 - 社区, 2 - 团队
  460. if($this.hasClass("active")){
  461. return false;
  462. }
  463. $(".area-tab").removeClass("active");
  464. $this.addClass("active");
  465. if(type == "3"){
  466. lowLevel = 2;
  467. }else{
  468. lowLevel = 1;
  469. }
  470. initReqParams();
  471. loadData([2]);
  472. });
  473. //点击列表查看下一级数据
  474. $("#listTable").on('tap', '.data-row', function(){
  475. var $this = $(this),
  476. code = $this.attr("data-code"),
  477. name = $this.attr("data-name");
  478. if($this.find(".fa-angle-right").length == 0){
  479. //团队内容
  480. showTeamInfo(code);
  481. return false;
  482. }
  483. areaTitle = name;
  484. areaCode = code;
  485. var newlevel = level - 1;
  486. //如果是市级管理员,先点击“社区”tab后再往下看下一级的数据,需要将level再-1
  487. if(newlevel == 3 && lowLevel == 2){
  488. newlevel -- ;
  489. }
  490. lowLevel = '';
  491. level = newlevel;
  492. $("#areaTitle").text(areaTitle);
  493. //判断当前tab的位置
  494. var top = $(".area-tab-panel").offset().top;
  495. if(top < 0){
  496. mui(".mui-scroll-wrapper").scroll().scrollTo(0, -(parseInt(initTabOffsetTop)/2), 500);
  497. }
  498. showBottomTab();
  499. initReqParams();
  500. loadData([0,1,2]);
  501. //记录返回链接信息
  502. reqList.push({
  503. level: level,
  504. lowLevel: lowLevel,
  505. areaCode: areaCode,
  506. areaTitle: areaTitle,
  507. index: index,
  508. req: reqParam
  509. });
  510. });
  511. //弹出遮罩
  512. $(".icon-remark").on("click", function(e) {
  513. $(".modal-overlay").addClass("modal-overlay-visible");
  514. setTimeout(function(){
  515. $(".modal-content").show();
  516. },50)
  517. });
  518. $(".div-close,.modal-overlay").on("click",function(){
  519. $(".modal-overlay").removeClass("modal-overlay-visible");
  520. $(".modal-content").hide();
  521. });
  522. //左滑筛选区域的数据
  523. $('.header-link').on("tap", function(){
  524. var self = plus.webview.currentWebview();
  525. mui.fire(self, "showShaiXuan");
  526. });
  527. //添加页面监听
  528. window.addEventListener("refresh", function(e){
  529. var year = e.detail.year;
  530. //重置变量值
  531. chooseYear = year;
  532. level = initLevel;
  533. areaCode = initAreaCode
  534. areaTitle = initTitle;
  535. lowLevel = "";
  536. startDate = getStartDate();
  537. endDate = getEndDate();
  538. $("#areaTitle").text(areaTitle);
  539. $(".choose-label").text(chooseYear+"年");
  540. showBottomTab();
  541. initReqParams();
  542. //清空请求数组
  543. reqList.splice(0, reqList.length);
  544. //记录返回链接信息
  545. reqList.push({
  546. level: level,
  547. lowLevel: lowLevel,
  548. areaCode: areaCode,
  549. areaTitle: areaTitle,
  550. index: index,
  551. req: reqParam
  552. });
  553. loadData([0,1,2]);
  554. })
  555. //中间趋势图左箭头事件
  556. $(".zuoJiao-img").on("tap",function(){
  557. nowYear = nowYear - 1;
  558. quShiStartDate = formatDate(new Date(nowYear,0,1));
  559. quShiEndDate = formatDate(new Date(nowYear,11,31));
  560. $(".add-qushi-date-text").html(nowYear.toString());
  561. initReqParams();
  562. loadData([1]);
  563. })
  564. //中间趋势图又箭头事件
  565. $(".youJiao-img").on("tap",function(){
  566. nowYear = nowYear + 1;
  567. quShiStartDate = formatDate(new Date(nowYear,0,1));
  568. quShiEndDate = formatDate(new Date(nowYear,11,31));
  569. $(".add-qushi-date-text").html(nowYear.toString());
  570. initReqParams();
  571. loadData([1]);
  572. })
  573. }
  574. /*
  575. * 控制底部科室,医生
  576. */
  577. function showBottomTab(){
  578. $(".area-tab").removeClass("active");
  579. switch(level){
  580. case 3:
  581. $(".area-tab").eq(0).addClass("active").show();
  582. $(".area-tab").eq(1).show();
  583. break;
  584. case 2:
  585. $(".area-tab").eq(0).hide();
  586. $(".area-tab").eq(1).addClass("active").show();
  587. break;
  588. }
  589. }
  590. /*
  591. * 初始化scroller
  592. */
  593. function initScroller(){
  594. //阻尼系数
  595. var deceleration = mui.os.ios?0.003:0.0009;
  596. mui('.mui-scroll-wrapper').scroll({
  597. bounce: false,
  598. indicators: true, //是否显示滚动条
  599. deceleration:deceleration
  600. });
  601. mui('.mui-scroll-wrapper').pullRefresh({
  602. down: {
  603. callback: function() {
  604. var self = this;
  605. setTimeout(function() {
  606. initReqParams();
  607. loadData([0,1,2]);
  608. self.endPulldownToRefresh();
  609. }, 1000);
  610. }
  611. }
  612. });
  613. }
  614. /*
  615. * 绘制折线图
  616. */
  617. function drawLine(name, dataZoom_end, xData, yDatas, colors){
  618. var lineCharts = echarts.init(document.getElementById('lineChart'));
  619. var options = {
  620. tooltip: {
  621. trigger: 'axis'
  622. },
  623. color: colors,
  624. legend: {
  625. bottom: '0px',
  626. data: name,
  627. borderColor: "#f1f1f1"
  628. },
  629. grid: {
  630. show: false,
  631. left: '10px',
  632. right: '10px',
  633. bottom: '30px',
  634. top: '10px',
  635. containLabel: true
  636. },
  637. xAxis: {
  638. type: 'category',
  639. boundaryGap: false,
  640. data: xData,
  641. axisLabel: {
  642. interval:0,//横轴信息全部显示
  643. formatter: function (value, index) {
  644. if(selectedDateType == 1 || selectedDateType == 2){
  645. if(index == 0){
  646. $("#startValue").text(value);
  647. return value.substr(5,2)+"月"+value.substr(8,2);
  648. }else{
  649. if(index == 10){
  650. $("#endValue").text(value);
  651. }
  652. return value.substr(8,2);
  653. }
  654. }else if(selectedDateType == 3){
  655. var val = value.substr(5,2)+"月"
  656. if(index == 0){
  657. $("#startValue").text(value.substr(0,4)+"年"+val);
  658. }else{
  659. if(index == 9){
  660. $("#endValue").text(value.substr(0,4)+"年"+val);
  661. }
  662. }
  663. return val;
  664. }
  665. }
  666. }
  667. },
  668. yAxis: {
  669. type: 'value',
  670. axisPointer: {
  671. snap: true
  672. },
  673. scale: true,
  674. minInterval: 1,
  675. boundaryGap: ['10%', '30%']
  676. },
  677. dataZoom: [{//给x轴设置滚动条
  678. show: false,
  679. start: dataZoom_end,
  680. end: 100,
  681. type: 'slider',
  682. zoomLock: true,
  683. },{ //下面这个属性是内容区域配置
  684. start: dataZoom_end,
  685. end: 100,
  686. type: 'inside',
  687. zoomLock: true,
  688. }]
  689. // series: [{
  690. // name: name,
  691. // type: 'line',
  692. // smooth: true,
  693. // data: yData,
  694. // lineStyle:{
  695. // normal: {
  696. // color: '#12b7f5'
  697. // }
  698. // }
  699. // }]
  700. };
  701. var series = [],
  702. legend = [];
  703. for(var i=0; i<yDatas.length; i++){
  704. var obj = {
  705. name: name[i],
  706. type: 'line',
  707. smooth: true,
  708. data: yDatas[i],
  709. lineStyle:{
  710. normal:{
  711. color: colors[i]
  712. }
  713. }
  714. };
  715. series.push(obj);
  716. }
  717. options.series = series;
  718. $("#lineChart").removeAttr('_echarts_instance_')
  719. lineCharts.setOption(options);
  720. }
  721. /*
  722. * 绘制饼图
  723. */
  724. function drawPie(elId, arry, color){
  725. var myChart = echarts.init(document.getElementById(elId));
  726. var option = {
  727. tooltip: {
  728. trigger: 'item',
  729. formatter: "{b} : {c} ({d}%)",
  730. position: ['50%', '50%']
  731. },
  732. color: color,
  733. series: [
  734. {
  735. type:'pie',
  736. radius: ['80%', '99%'],
  737. startAngle: 270,
  738. legendHoverLink: false,
  739. hoverAnimation: false,
  740. avoidLabelOverlap: false,
  741. label: {
  742. normal: {
  743. show: false,
  744. textStyle: {
  745. color: "#000"
  746. }
  747. }
  748. },
  749. labelLine: {
  750. normal: {
  751. show: false
  752. }
  753. },
  754. data:arry
  755. }]
  756. };
  757. myChart.setOption(option);
  758. }
  759. /*
  760. * 获取用来排序的字段值,返回数组
  761. * 参数: list - 列表, key - 字段的名称
  762. */
  763. function amountArr(list, key){
  764. var amountArr = [];
  765. for(var k in list){
  766. amountArr.push(list[k][key]);
  767. }
  768. return amountArr;
  769. }
  770. /*
  771. * 排名
  772. */
  773. function soreRank(arr){
  774. var temp = [];
  775. var lis = [];
  776. for(var i=0;i<arr.length;i++){
  777. lis.push(arr[i]);
  778. }
  779. lis = _.uniq(lis);
  780. for(var i=0;i<arr.length;i++){
  781. temp[i] = lis.indexOf(arr[i])+1;
  782. }
  783. return temp;
  784. }
  785. function getStartDate(){
  786. // 按年度来计算的时候,开始时间是该年度7月1号还是到下一个年的6月30号结束
  787. if(chooseYear == 2016){
  788. return chooseYear + "-08-01";
  789. }else{
  790. return chooseYear+'-07-01';
  791. }
  792. }
  793. //获取结束时间
  794. function getEndDate(){
  795. chooseYear = parseInt(chooseYear);
  796. var endDate = new Date((chooseYear+1) + '-06-30'),
  797. now = new Date();
  798. if(now <= endDate){
  799. var month = now.getMonth()+1,
  800. date1 = now.getDate();
  801. if(month < 10){
  802. month = "0"+month;
  803. }
  804. if(date1 < 10){
  805. date1 = "0"+date1;
  806. }
  807. return now.getFullYear()+"-"+month+"-"+date1;
  808. }else{
  809. return (chooseYear+1) + '-06-30';
  810. }
  811. }
  812. //获取当前时间
  813. function getDateFromNow(days) {
  814. if(!days) {
  815. return new Date().format("yyyy-MM-dd")
  816. }
  817. var now = new Date().getTime()
  818. var diff = 24 * 3600 * 1000 * days
  819. return new Date(now + diff).format("yyyy-MM-dd")
  820. }
  821. //格局化日期:yyyy-MM-dd
  822. function formatDate(date) {
  823. var myyear = date.getFullYear();
  824. var mymonth = date.getMonth() + 1;
  825. var myweekday = date.getDate();
  826. if(mymonth < 10) {
  827. mymonth = "0" + mymonth;
  828. }
  829. if(myweekday < 10) {
  830. myweekday = "0" + myweekday;
  831. }
  832. return(myyear + "-" + mymonth + "-" + myweekday);
  833. }
  834. //返回事件
  835. var old_back = mui.back;
  836. mui.back = function(){
  837. if(reqList.length == 1){
  838. old_back();
  839. }
  840. else{
  841. var preInfo = reqList.pop();
  842. var info = reqList[reqList.length - 1];
  843. level = info.level;
  844. areaCode = info.areaCode;
  845. areaTitle = info.areaTitle;
  846. lowLevel = info.lowLevel;
  847. index = info.index;
  848. if(!$(".l-banner li[data-index="+index+"]").hasClass("active")){
  849. $(".l-banner li").removeClass("active");
  850. $(".l-banner li[data-index="+index+"]").addClass("active");
  851. }
  852. $("#areaTitle").html(areaTitle);
  853. showBottomTab();
  854. initReqParams();
  855. loadData([0,1,2]);
  856. }
  857. }