comprehensive-analysis.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  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. initReqParams(); //初始请求参数信息
  54. loadData([0,1,2]);
  55. //记录返回链接信息
  56. reqList.push({
  57. level: level,
  58. lowLevel: lowLevel,
  59. areaCode: areaCode,
  60. areaTitle: areaTitle,
  61. index: index,
  62. req: reqParam
  63. });
  64. initTabOffsetTop = $(".area-tab-panel").offset().top;
  65. showBottomTab();
  66. bindEvents();
  67. });
  68. initScroller();
  69. function getTopReqParams(){
  70. var url = "/statistics/getIndexTotal",
  71. data = {endDate:getDateFromNow(),area:areaCode,level:3};
  72. return {
  73. url: url,
  74. reqType: 'GET',
  75. data: data
  76. };
  77. }
  78. function initReqParams(){
  79. //初始化开始时间和结束时间
  80. startDate = getStartDate();
  81. endDate = getEndDate();
  82. quShiStartDate = formatDate(new Date(nowYear,0,1));
  83. quShiEndDate = formatDate(new Date(nowYear,11,31));
  84. $(".add-qushi-date-text").html(nowYear.toString())
  85. //增量(注册居民2、居民咨询量3、健康教育5、)到达量(居民关注6)
  86. var url2 = "/statistics/interval",//默认注册居民
  87. url3 = '/statistics/registerRange';;//默认注册居民
  88. if(index=='3' || index == '6'){
  89. url3 = "/statistics/lowlevel_total_mesh"
  90. }else if(index == '5'){
  91. url3 = '/statistics/article_lowlevel_total';
  92. }else if(index=='6'){
  93. url2 = "/statistics/interval_total";
  94. }
  95. if(index==2){//注册居民
  96. reqParam = [{//请求中间部分
  97. url: url2,
  98. reqType: 'POST',
  99. data:{
  100. index: '2,4',
  101. level: level, //等级(1 团队,2 科室,3 机构,4 区)
  102. area: areaCode, //默认是49229004X
  103. startDate: quShiStartDate,
  104. endDate: quShiEndDate,
  105. interval: selectedDateType
  106. }
  107. },{ //如果是注册居民,则增加置顶展示当面层级的注册率及关注平台人数、 注册人数.只针对注册居民时使用
  108. url: url3,
  109. reqType: 'POST',
  110. data: {}
  111. }];
  112. }else{//居民咨询量3、健康教育5、居民关注6
  113. reqParam = [{//请求中间部分
  114. url: url2,
  115. reqType: 'POST',
  116. data:{
  117. index: index == 5 ? '5,83' : (index==6)?"1,6":index,
  118. level: level, //等级(1 团队,2 科室,3 机构,4 区)
  119. area: areaCode, //默认是49229004X
  120. startDate: quShiStartDate,
  121. endDate: quShiEndDate,
  122. interval: selectedDateType
  123. }
  124. },{//请求底部部分
  125. url: url3,
  126. reqType: 'POST',
  127. data: {
  128. index: (index == 3) ? "3,22" : (index==6)?"1,6":index,
  129. endDate: endDate,
  130. level: level,
  131. area: areaCode,
  132. sort: 1
  133. }
  134. }];
  135. if(lowLevel){
  136. reqParam[1].data.lowLevel = lowLevel;
  137. }
  138. }
  139. }
  140. /*
  141. * 加载页面数据
  142. * @param loadArr array 记录需要请求的区域0-顶部,1-中间,2-底部
  143. */
  144. function loadData(loadArr){
  145. plus.nativeUI.showWaiting();
  146. getJieZhiTime();
  147. var reqPromise = [],
  148. newArr = []; //记录非顶部请求的请求数组
  149. if(loadArr.indexOf(0) > -1){
  150. //请求加载了头部的内容
  151. var url = "/statistics/getIndexTotal",
  152. data = {endDate:getDateFromNow(),area:areaCode,level:level};
  153. var reqs = [{url: url,reqType: 'GET',data: data}];
  154. getReqPromises(reqs, true).then(function(ress){
  155. handleTopPanelData(ress);
  156. }).then(function(){
  157. //如果饼图已经显示了,则这边需要重新绘制新的数据
  158. if($("#pieChartsPanel").hasClass("show")){
  159. $("#pieChartsPanel").show();
  160. $("#pieChartsPanel").addClass("show");
  161. $(".wz-num").text(index_83);
  162. $(".zd-num").text(index_5);
  163. var arr = [{
  164. name: '健康文章',
  165. value: index_83
  166. },{
  167. name: '健康指导',
  168. value: index_5
  169. }];
  170. drawPie('pieChart', arr, ['#ffc800', '#17b3ec']);
  171. }else{
  172. $("#pieChartsPanel").hide();
  173. $("#pieChartsPanel").removeClass("show");
  174. }
  175. });
  176. }
  177. for(var i=0; i<loadArr.length; i++){
  178. if(loadArr[i] == 0){
  179. // do nothing
  180. }else{
  181. var j = loadArr[i] - 1;
  182. reqPromise.push(reqParam[j]);
  183. newArr.push(loadArr[i]);
  184. }
  185. }
  186. if(index == '2'){//注册居民
  187. $("#pieChartsPanel2").show();
  188. $(".area-panel").addClass("bgc-fff").hide();
  189. }else{
  190. $("#pieChartsPanel2").hide();
  191. $(".area-panel").removeClass("bgc-fff").show();
  192. }
  193. if(index == '5' ){
  194. //如果饼图还没有显示了,说明当前操作是点击了”健康教育“tab,此时需要绘制饼图,这样才会有动画效果
  195. if(!$("#pieChartsPanel").hasClass("show")){
  196. $("#pieChartsPanel").show();
  197. $("#pieChartsPanel").addClass("show");
  198. $(".wz-num").text(index_83);
  199. $(".zd-num").text(index_5);
  200. var arr = [{
  201. name: '健康文章',
  202. value: index_83
  203. },{
  204. name: '健康指导',
  205. value: index_5
  206. }];
  207. drawPie('pieChart', arr, ['#ffc800', '#17b3ec']);
  208. }
  209. }else{
  210. $("#pieChartsPanel").hide();
  211. $("#pieChartsPanel").removeClass("show");
  212. }
  213. if(reqPromise.length > 0){
  214. getReqPromises(reqPromise, true).then(function(ress){
  215. var res2, res3;
  216. for(var i=0; i<newArr.length; i++){
  217. var j = newArr[i] + 1;
  218. if(j == 2){
  219. res2 = ress[i];
  220. }
  221. if(j == 3){
  222. res3 = ress[i];
  223. }
  224. }
  225. if(res2){
  226. if(res2.status == 200){
  227. handleSecondPanelData(res2.data);
  228. }else{
  229. mui.toast(res2.msg);
  230. }
  231. }
  232. if(res3){
  233. if(index=='2'){//注册居民
  234. if(res3.status == 200){
  235. $("#pieChartsPanel2").show();
  236. handleZCGKData(res3.data);
  237. }else{
  238. $("#pieChartsPanel2").hide();
  239. mui.toast(res3.msg);
  240. }
  241. }else{
  242. if(res3.status == 200){
  243. listHandle(res3.data);
  244. }else{
  245. $("#listTable").empty();
  246. mui.toast(res3.msg);
  247. }
  248. }
  249. }
  250. plus.nativeUI.closeWaiting();
  251. }).catch(function(e){
  252. console.log(e);
  253. plus.nativeUI.closeWaiting();
  254. });
  255. }
  256. }
  257. /*
  258. * 加载数据截止时间
  259. */
  260. function getJieZhiTime(){
  261. sendPost("/statistics/time",null,function(res){
  262. },function(res){
  263. if(res.status=="200"){
  264. var date = (res.data && res.data.substring(11,16)) || "";
  265. $(".jiezhi-time").html("("+date+")");
  266. }
  267. });
  268. }
  269. /*
  270. * 处理顶部各tab的值
  271. */
  272. function handleTopPanelData(ress){
  273. if(ress[0].status==200){
  274. var data = ress[0].data;
  275. $("#index_2 .span-account").html(data.reginNum);
  276. $("#index_3 .span-account").html(data.consultNum);
  277. $("#index_5 .span-account").html(parseInt(data.educateNum)+parseInt(data.guideNum));
  278. $("#index_6 .span-account").html(data.concernNum);
  279. index_83 = data.educateNum;
  280. index_5 = data.guideNum;
  281. }else{
  282. mui.toast(ress[0].msg);
  283. }
  284. }
  285. /*
  286. * 处理中间折线图区域的数据
  287. */
  288. function handleSecondPanelData(data){
  289. var dataZoom_end,
  290. xDatas = [],
  291. yDatas = [],
  292. names = [],
  293. colors = ['#12b7f5', '#cd67fd'];
  294. for(var p in data){
  295. names.push(indexName[p]);
  296. var xData = _.map(data[p], function(o){
  297. return o.range;
  298. });
  299. var yData = _.map(data[p], function(o){
  300. return o.amount;
  301. });
  302. xDatas.push(xData);
  303. yDatas.push(yData);
  304. var lastIndex = yData.length % 10;
  305. if(yData.length >10 ){
  306. dataZoom_end = 100-(9/yData.length)*100;
  307. }else{
  308. dataZoom_end = 0;
  309. }
  310. //初始给定第一版页面中时间区间
  311. if(selectedDateType == 3){
  312. var d1 = lastIndex > 0 ? xData[yData.length - lastIndex] : xData[yData.length - 10],
  313. d2 = xData[yData.length -1];
  314. $("#startValue").text(d1.substr(0,4)+"年"+d1.substr(5,2)+"月");
  315. $("#endValue").text(d2.substr(0,4)+"年"+d2.substr(5,2)+"月");
  316. }else{
  317. $("#startValue").text(lastIndex > 0 ? xData[yData.length - lastIndex] : xData[yData.length - 10]);
  318. $("#endValue").text(xData[yData.length -1]);
  319. }
  320. }
  321. drawLine(names, dataZoom_end, xDatas[0], yDatas, colors);
  322. }
  323. /*
  324. * 处理底部科室、医生的数据
  325. */
  326. function listHandle(data){
  327. for(var k in data){
  328. var list = data[k];
  329. if(index=="3"){//咨询量
  330. for(var i=0;i<list.length;i++){
  331. var amount = list[i].amount.split(",");
  332. list[i].amount = amount[0];//咨询量
  333. list[i].noAmount = amount[1];//未回复咨询量
  334. }
  335. }
  336. if(index=="6"){//关注居民
  337. for(var i=0;i<list.length;i++){
  338. var amount = list[i].amount.split(",");
  339. list[i].amount = amount[0];//关注居民数
  340. list[i].noAmount = amount[1];//关注人次
  341. }
  342. }
  343. var topArr = [];
  344. topArr = soreRank(amountArr(list, 'amount'));
  345. for(var j in list){
  346. list[j].top = topArr[j];
  347. }
  348. var html = template("data-list", {
  349. list: list,
  350. level: level,
  351. index: index,
  352. lowLevel: lowLevel
  353. });
  354. $("#listTable").empty().append(html);
  355. }
  356. }
  357. /*
  358. * 处理注册居民-注册率概况的数据
  359. */
  360. function handleZCGKData(data){
  361. $("#pieChartsPanel2 .title").text("注册率概况");
  362. $(".jf-num").text(data.wxUser);
  363. $(".wjf-num").text(data.reginNum);
  364. $(".num").text((data.registeRange || 0)+"%");
  365. var arr = [{
  366. name: '关注平台人数',
  367. value: data.wxUser
  368. },{
  369. name: '注册人数',
  370. value: data.reginNum
  371. }];
  372. drawPie('pieChart2', arr, ['#17b3ec', '#909090']);
  373. }
  374. /*
  375. * 获得团队信息
  376. */
  377. function showTeamInfo(teamId){
  378. var url = "/doctor/admin-teams/teams/info",
  379. params = {
  380. teamId: teamId
  381. };
  382. plus.nativeUI.showWaiting();
  383. sendGet(url, params, null, function(res){
  384. if(res.status == 200){
  385. var data = res.data;
  386. data.memberLength = data.members.length;
  387. var html = template("teamInfo", data);
  388. $("#teamInfoBox").empty().append(html);
  389. $(".modal-overlay").addClass("modal-overlay-visible");
  390. setTimeout(function(){
  391. $(".modal-content").show();
  392. },50)
  393. }else{
  394. mui.toast(res.msg);
  395. }
  396. plus.nativeUI.closeWaiting();
  397. }, true);
  398. }
  399. /*
  400. * 控件事件绑定
  401. */
  402. function bindEvents(){
  403. //说明信息相关事件
  404. $("#closeBtn").on("tap", function(){
  405. $(".information").hide();
  406. });
  407. $(".info-icon").on("tap", function(){
  408. $(".information").show();
  409. });
  410. //点击顶部tab切换
  411. $(".l-banner").on('tap', 'li', function(){
  412. var $this = $(this),
  413. val = $this.attr("data-index");
  414. if($this.hasClass("active")){
  415. return false;
  416. }
  417. $(".l-banner li.active").removeClass("active");
  418. $this.addClass("active");
  419. index = val;
  420. $("#infoText").text(information[index]);
  421. var tagName = index == '5' ? '推送量' : indexName['index_'+index];
  422. if(index=='6'){//居民关注
  423. $(".qushi-span").text("居民关注趋势");
  424. }else{
  425. $(".qushi-span").text(tagName+"新增趋势");
  426. }
  427. //初始化趋势图时间
  428. nowYear = new Date().getYear()
  429. nowYear += (nowYear < 2000) ? 1900 : 0;
  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. }