comprehensive-analysis.js 27 KB

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