comprehensive-analysis.js 27 KB

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