comprehensive-analysis.js 27 KB

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