qianyuetongji2.js 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322
  1. var self;
  2. var type, level, area, title,sort=1,banerIndex;
  3. var roleLevel, userRole;
  4. var startDate = null;//近3月的开始时间
  5. var endDate = null;//近3月的结束时间
  6. var customHeight = 63;//自定义折线图、柱状图混合表中各项的高度
  7. var scroller1 = null;
  8. var old_back = mui.back;
  9. var curLeveArr = null;//当前级别需要请求的url参数集合
  10. var taskNum = 0;//任务量
  11. var dateData = {};//趋势图数据
  12. var isInit = true;
  13. var TD_PAGE_SIZE = 20;//所有团队数据分页条数
  14. var current_team_index = 0;//所有团队显示的索引值
  15. var team_data_list = null;//所有团队数据(签约量)
  16. var team_name_list = null;//所有团队数据(名称)
  17. var team_top_list = null;//所有团队数据(排名数据)
  18. var team_scroller = null;
  19. //定义年份
  20. var chooseYear;
  21. var now = new Date();
  22. if(now.getMonth() >= 6){
  23. chooseYear = now.getFullYear();
  24. }else{
  25. chooseYear = now.getFullYear() - 1;
  26. }
  27. mui.plusReady(function() {
  28. self = plus.webview.currentWebview();
  29. type = self.type;
  30. startDate = getStartDate();//近3月的开始时间
  31. // endDate = getDateBefore(0);//近3月的结束时间
  32. endDate = getEndDate(); //获得结束时间
  33. initData();//数据初始化
  34. initScroller();//scroll初始化
  35. shaixuanInit(self);
  36. bindEvents();//事件绑定
  37. });
  38. /*****************************************************************************/
  39. /***** 页面初始化处理 **********/
  40. /*****************************************************************************/
  41. var initData = function(){
  42. // userRole = plus!=null ?JSON.parse(plus.storage.getItem("userRole"))[0]:{} ;
  43. userRole = plus!=null ? JSON.parse(plus.storage.getItem("selectedRole")) : {};
  44. roleLevel = userRole.code == CITY_CODE ? 4 : userRole.code.length==6 ? 3 : 2;
  45. level = roleLevel;
  46. area = userRole.code;
  47. title = userRole.name;
  48. plus.storage.setItem("userLevel",level+"");
  49. plus.storage.setItem("userArea",area);
  50. //初始默认选中的时间和类型
  51. $(".choose-label").text(chooseYear+"年(按任务)");
  52. //搜集页面请求的参数
  53. var paramsArr = [],resultArr = [];
  54. var index = 13;
  55. var lowCode = $("#Dtitle").attr("data-lowCode") || "";
  56. if(lowCode){
  57. index = 17;
  58. }
  59. if(level==4){//市管
  60. paramsArr.push({tags:["各区","社区","团队"],curTitle:title,level:level},
  61. {reqUrl:"/statistics/sign_info",params:{endDate:endDate,area:area,level:level,lowCode:lowCode, year: chooseYear}},
  62. {reqUrl:"/statistics/interval_total",params:{level: level, area: area, startDate: startDate, endDate: endDate, interval:"1",index:index,lowCode:lowCode}},
  63. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowCode:lowCode}},
  64. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowLevel:2,lowCode:lowCode}},
  65. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowLevel:1,lowCode:lowCode}});
  66. }else if(level==3){//区管
  67. paramsArr.push({tags:["社区","团队"],curTitle:title,level:level},
  68. {reqUrl:"/statistics/sign_info",params:{endDate:endDate,area:area,level:level,lowCode:lowCode, year: chooseYear}},
  69. {reqUrl:"/statistics/interval_total",params:{level: level, area: area, startDate: startDate, endDate: endDate, interval:"1",index:index,lowCode:lowCode}},
  70. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowCode:lowCode}},
  71. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowLevel:1,lowCode:lowCode}});
  72. }else if(level==2){//社区管
  73. paramsArr.push({tags:["团队"],curTitle:title,level:level},
  74. {reqUrl:"/statistics/sign_info",params:{endDate:endDate,area:area,level:level,lowCode:lowCode, year: chooseYear}},
  75. {reqUrl:"/statistics/interval_total",params:{level: level, area: area, startDate: startDate, endDate: endDate, interval:"1",index:index,lowCode:lowCode}},
  76. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowCode:lowCode}});
  77. }
  78. resultArr.push(paramsArr);
  79. plus.storage.setItem("levelParamsArr",JSON.stringify(resultArr));
  80. curLeveArr = paramsArr;
  81. loadAllData(paramsArr);
  82. },
  83. loadAllData = function(arr){
  84. plus.nativeUI.showWaiting();
  85. //1-1:加载数据截止时间
  86. sendPost("/statistics/time",null,function(res){
  87. },function(res){
  88. if(res.status=="200"){
  89. var date = (res.data && res.data.substring(11,16)) || "";
  90. $(".jiezhi-time").html(date)
  91. }
  92. });
  93. //1-2: 显示title
  94. title = arr[0].curTitle;
  95. if(arr[0].level==4){
  96. title = title.substring(0,3);
  97. }
  98. $("#title").html(title);
  99. //1-3 :加载tab
  100. var tagsArr = arr[0].tags;
  101. var tagStr = "";
  102. for(var i=0;i<tagsArr.length;i++){
  103. var classz = i==0?"hit":"";
  104. var dataClick = i==0?"true":"false";//是否已点击过
  105. tagStr += '<li class="'+classz+'" data-click="'+dataClick+'"><a href="#" class="c-f16">'+tagsArr[i]+'</a></li>';
  106. }
  107. $(".c-lab-mor").html(tagStr);
  108. $(".div-data-list").hide();
  109. $(".div-data-list.div-list0").show();
  110. if($(".c-lab-mor li.hit a").html()=="团队" || tagsArr.length==1){
  111. $(".div-right-danwei").html("人");
  112. }else{
  113. $(".div-right-danwei").html("千人");
  114. }
  115. var index = 13;
  116. var lowCode = $("#Dtitle").attr("data-lowCode") || "";
  117. if(lowCode){
  118. index = 17;
  119. }
  120. //1-4 :加载签约率、完成率
  121. arr[1].params.index = index;
  122. arr[1].params.lowCode = lowCode;
  123. arr[1].params.year = chooseYear;
  124. arr[1].params.endDate = endDate;
  125. sendPost(arr[1].reqUrl, arr[1].params, null, countHandle);
  126. //1-5:趋势图表
  127. var interval = parseInt(arr[2].params.interval)-1 || 0;
  128. $('.div-btn-group .div-btn').removeClass("active");
  129. $('.div-btn-group .div-btn').eq(interval).addClass("active");
  130. arr[2].params.index = index;
  131. arr[2].params.lowCode = lowCode;
  132. arr[2].params.startDate = startDate;
  133. arr[2].params.endDate = endDate;
  134. sendPost(arr[2].reqUrl, arr[2].params, null, dateLineHandle);
  135. //1-6:加载【第一个】tab标签数据
  136. arr[3].params.index = index;
  137. arr[3].params.lowCode = lowCode;
  138. arr[3].params.date = endDate;
  139. sendPost(arr[3].reqUrl, arr[3].params, null, listHandle);
  140. },
  141. initScroller = function(){
  142. window.scroller1 = $("#wrapper1").initScroll(
  143. {
  144. pullDownAction: function(){
  145. current_team_index = 0;
  146. $(".pullDown").show();
  147. plus.nativeUI.showWaiting();
  148. loadAllData(curLeveArr);
  149. },pullUpAction: function() {
  150. $(".pullUp").hide();
  151. if($(".c-lab-mor li.hit a").html()=="团队"){//团队tab页才做分页
  152. if(current_team_index==(Object.keys(team_data_list).length-1)){
  153. mui.toast("没有更多数据了...");
  154. $(".pullUp").hide();
  155. plus.nativeUI.closeWaiting();
  156. return false;
  157. }
  158. $(".pullUp").show();
  159. plus.nativeUI.showWaiting();
  160. current_team_index++;
  161. loadTeamData(team_data_list[current_team_index],team_top_list[current_team_index],true);
  162. }
  163. return false;
  164. }
  165. }
  166. );
  167. // scroller1.on('beforeScrollStart',function() {
  168. // console.log(scroller1.pointX);
  169. // });
  170. },
  171. /**
  172. * 初始化筛选事件
  173. */
  174. shaixuanInit = function(main){
  175. var shaixuan = plus.webview.getWebviewById('shaixuan2.html');
  176. if(!shaixuan){
  177. shaixuan = mui.createWindow({
  178. id: 'shaixuan2.html',
  179. url: 'shaixuan2.html',
  180. styles: {
  181. top: 0,
  182. bottom: 0,
  183. left: '20%',
  184. width: '80%',
  185. scorllIndicator: "none"
  186. },
  187. show:{
  188. aniShow: "slide-in-right",
  189. duration: "400"
  190. },
  191. extras:{
  192. showType: 1
  193. }
  194. });
  195. }
  196. window.addEventListener("hideShaiXuan",function(){
  197. console.log("hideShaiXuan");
  198. main.setStyle({mask:"none"});
  199. shaixuan.hide();
  200. }, false);
  201. window.addEventListener("showShaiXuan", function() {
  202. shaixuan.show();
  203. main.setStyle({mask:"rgba(0,0,0,0.5)"});
  204. main.addEventListener("maskClick",function(){
  205. main.setStyle({mask:"none"});
  206. shaixuan.hide();
  207. }, false);
  208. });
  209. },
  210. bindEvents = function(){
  211. //标签切换
  212. $(".c-lab-mor").on("tap","li",function(){
  213. var liIndex = $(this).index();
  214. var tabid = $(this).attr("id");
  215. var top = $(this).offset().top;
  216. $(".c-lab-mor li").removeClass("hit");
  217. $(this).addClass("hit");
  218. //1-6:加载tab标签数据
  219. if($(this).attr("data-click")=="false"){//tab数据未加载
  220. plus.nativeUI.showWaiting();
  221. var index = 13;
  222. var lowCode = $("#Dtitle").attr("data-lowCode") || "";
  223. if(lowCode){
  224. index = 17;
  225. }
  226. if(liIndex==1){//社区数据
  227. curLeveArr[4].params.index = index;
  228. curLeveArr[4].params.lowCode = lowCode;
  229. curLeveArr[4].params.date = endDate;
  230. sendPost(curLeveArr[4].reqUrl, curLeveArr[4].params, null, listHandle);
  231. }else if(liIndex==2){//团队数据
  232. curLeveArr[5].params.index = index;
  233. curLeveArr[5].params.lowCode = lowCode;
  234. curLeveArr[5].params.date = endDate;
  235. sendPost(curLeveArr[5].reqUrl, curLeveArr[5].params, null, listHandle);
  236. }
  237. $(this).attr("data-click","true");
  238. }
  239. $(".div-data-list").hide();
  240. $(".div-list"+liIndex).show();
  241. $(".div-list1 li .div-name,.div-list1 li .div-amount,.div-list2 li .div-name,.div-list2 li .div-amount").each(function(){
  242. if($(this).height()==21){
  243. $(this).addClass("mt20")
  244. }else if($(this).height()==42){
  245. $(this).addClass("mt10")
  246. }
  247. })
  248. if($(".c-lab-mor li.hit a").html()=="团队"){
  249. $(".div-right-danwei").html("人");
  250. }else{
  251. $(".div-right-danwei").html("千人");
  252. }
  253. scroller1.refresh();
  254. window.onscroll = function () {
  255. var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  256. if(top!=-1 && top>0){
  257. window.scrollTo(0,top);
  258. top = -1;
  259. }
  260. }
  261. });
  262. //日、周、月按钮切换
  263. $(".div-btn-group").on("click",".div-btn",function(){
  264. var dataId = $(this).attr("data-id");
  265. $(".div-btn-group .div-btn").removeClass("active");
  266. $(this).addClass("active");
  267. //1-5:趋势图表
  268. curLeveArr[2].params.interval = dataId;
  269. sendPost(curLeveArr[2].reqUrl, curLeveArr[2].params, null, dateLineHandle);
  270. });
  271. $(".scroll-wrapper").on("tap",".div-data-list .list-ul .div-name",function(event){
  272. if($(".c-lab-mor li.hit a").html()=="团队") {
  273. sendGet("/doctor/admin-teams/teams/info",{teamId:$(this).closest("li").attr("data-code")},function(res){
  274. },function(res){
  275. if(res.status==200){
  276. var team = res.data.team;
  277. var members = res.data.members;
  278. $(".span-name").html(team.name || "");
  279. $(".span-hospitalName").html(team.hospitalName || "");
  280. $(".span-leaderName").html(team.leaderName || "");
  281. $(".span-team-count").html(members.length.toString());
  282. var membersName = "";
  283. for(var i=0;i<members.length;i++){
  284. if(i==20) break;
  285. membersName+=members[i].name+"、";
  286. }
  287. if(members.length>20){
  288. membersName = membersName!=""?membersName.substring(0,membersName.length-1)+"等":membersName;
  289. }else{
  290. membersName = membersName!=""?membersName.substring(0,membersName.length-1):membersName;
  291. }
  292. $(".span-members").html(membersName);
  293. $(".modal-overlay").addClass("modal-overlay-visible");
  294. setTimeout(function(){
  295. $(".modal-content").show();
  296. },50)
  297. }else{
  298. mui.toast("暂无相关团队详情!");
  299. }
  300. });
  301. return false;
  302. }
  303. level = curLeveArr[0].level;
  304. level--;
  305. area = $(this).closest("li").attr("data-code");
  306. var name = $(this).closest("li").attr("data-name");
  307. title = name;
  308. $("#title").html(title);
  309. var paramsArr = [];
  310. var index = 13;
  311. var lowCode = $("#Dtitle").attr("data-lowCode") || "";
  312. if(lowCode){
  313. index = 17;
  314. }
  315. if(level==3 && $(".c-lab-mor li.hit a").html()=="各区"){//区管
  316. paramsArr.push({tags:["社区","团队"],curTitle:title,level:level},
  317. {reqUrl:"/statistics/sign_info",params:{endDate:endDate,area:area,level:level,lowCode:lowCode, year: chooseYear}},
  318. {reqUrl:"/statistics/interval_total",params:{level: level, area: area, startDate: startDate, endDate: endDate, interval:$('.div-btn-group .div-btn.active').attr('data-id'),index:index,lowCode:lowCode}},
  319. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowCode:lowCode}},
  320. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:level,index:index,area:area,lowLevel:1,lowCode:lowCode}});
  321. }else{//社区管
  322. paramsArr.push({tags:["团队"],curTitle:title,level:2},
  323. {reqUrl:"/statistics/sign_info",params:{endDate:endDate,area:area,level:2,lowCode:lowCode, year: chooseYear}},
  324. {reqUrl:"/statistics/interval_total",params:{level: 2, area: area, startDate: startDate, endDate: endDate, interval:$('.div-btn-group .div-btn.active').attr('data-id'),index:index,lowCode:lowCode}},
  325. {reqUrl:"/statistics/lowlevel_all",params:{sort:1,date:endDate,level:2,index:index,area:area,lowCode:lowCode}});
  326. }
  327. var existArr = JSON.parse(plus.storage.getItem("levelParamsArr"));
  328. existArr.push(paramsArr);
  329. plus.storage.setItem("levelParamsArr",JSON.stringify(existArr));
  330. curLeveArr = paramsArr;
  331. current_team_index = 0;
  332. loadAllData(paramsArr);
  333. event.preventDefault();
  334. return false;
  335. });
  336. /*
  337. $(".demo-comtop").on("click","h1",function(){
  338. $(".lin-mask").show();
  339. $(".lin-sel-group").show();
  340. });
  341. $(".lin-mask").on("click",function(){
  342. $(".lin-mask").hide();
  343. $(".lin-sel-group").hide();
  344. });
  345. $(".lin-sel-group").on("click","li",function(){
  346. var lowCode = $(this).attr("data-lowCode") || "";
  347. var dataID = $(this).attr("data-id");
  348. if(dataID=="2"){//整体签约(按人口)
  349. $(".span-amount1").html("人口数");
  350. $(".span-amount2").html("目标量").show();
  351. $(".span-amount-color").show();
  352. }else{
  353. $(".span-amount1").html("目标量");
  354. $(".span-amount2").html("超出量").hide();
  355. $(".color-block.span-amount-color").css("display","none");
  356. }
  357. $(".lin-sel-group li").removeClass("checked");
  358. $(this).addClass("checked");
  359. $(".lin-mask").trigger("click");
  360. $("#Dtitle").attr("data-lowCode",lowCode).attr("data-id",dataID);
  361. //重新加载数据
  362. current_team_index = 0;
  363. plus.nativeUI.showWaiting();
  364. loadAllData(curLeveArr);
  365. });
  366. */
  367. //弹出遮罩
  368. $(".icon-remark").on("click", function(e) {
  369. $(".modal-overlay").addClass("modal-overlay-visible");
  370. setTimeout(function(){
  371. $(".modal-content").show();
  372. },50)
  373. });
  374. $(".div-close,.modal-overlay").on("click",function(){
  375. $(".modal-overlay").removeClass("modal-overlay-visible");
  376. $(".modal-content").hide();
  377. });
  378. //左滑筛选区域的数据
  379. $('.header-link').on("tap", function(){
  380. var self = plus.webview.currentWebview();
  381. mui.fire(self, "showShaiXuan");
  382. });
  383. //添加页面监听
  384. window.addEventListener("refresh", function(e){
  385. var lowCode = e.detail.lowCode || "";
  386. var dataID = e.detail.id;
  387. var year = e.detail.year;
  388. var name = e.detail.name;
  389. chooseYear = year;
  390. if(dataID=="2"){//整体签约(按人口)
  391. $(".span-amount1").html("人口数");
  392. $(".span-amount2").html("目标量").show();
  393. $(".span-amount-color").show();
  394. }else{
  395. $(".span-amount1").html("目标量");
  396. $(".span-amount2").html("超出量").hide();
  397. $(".color-block.span-amount-color").css("display","none");
  398. }
  399. $(".choose-label").text(year+"年("+name+")");
  400. $("#Dtitle").attr("data-lowCode",lowCode).attr("data-id",dataID);
  401. //重新加载数据
  402. current_team_index = 0;
  403. plus.nativeUI.showWaiting();
  404. startDate = getStartDate();
  405. endDate = getEndDate();
  406. //更新选择的时间
  407. curLeveArr[1].params.year = year;
  408. curLeveArr[1].params.endDate = endDate;
  409. curLeveArr[2].params.startDate = startDate;
  410. curLeveArr[2].params.endDate = endDate;
  411. if(curLeveArr[3]){
  412. curLeveArr[3].params.date = endDate;
  413. }
  414. if(curLeveArr[4]){
  415. curLeveArr[4].params.date = endDate;
  416. }
  417. if(curLeveArr[5]){
  418. curLeveArr[5].params.date = endDate;
  419. }
  420. //更新选择的lowCode
  421. curLeveArr[1].params.lowCode = lowCode;
  422. curLeveArr[2].params.lowCode = lowCode;
  423. if(curLeveArr[3]){
  424. curLeveArr[3].params.lowCode = lowCode;
  425. }
  426. if(curLeveArr[4]){
  427. curLeveArr[4].params.lowCode = lowCode;
  428. }
  429. if(curLeveArr[5]){
  430. curLeveArr[5].params.lowCode = lowCode;
  431. }
  432. //更新dataId
  433. // curLeveArr[2].params.interval = dataId;
  434. // $('.div-btn-group .div-btn').attr("data-id",dataId);
  435. loadAllData(curLeveArr);
  436. });
  437. //说明信息相关事件
  438. $("#closeBtn").on("tap", function(){
  439. $(".information").hide();
  440. scroller1.refresh();
  441. });
  442. $(".info-icon").on("tap", function(){
  443. $(".information").show();
  444. scroller1.refresh();
  445. });
  446. };
  447. /*****************************************************************************/
  448. /***** 数据返回处理函数 **********/
  449. /*****************************************************************************/
  450. var countHandle = function(res){
  451. if(res.status == 200) {
  452. res = res.data;
  453. console.log(JSON.stringify(res))
  454. $('#qieyuelv').waterbubble({
  455. txt: res.signRate.rate.substring(0,res.signRate.rate.length-2) + "%",
  456. data: res.signRate.rate/100,
  457. waterColor: '#12B7F5',
  458. lineWidth:0,
  459. radius: 75,
  460. textColor: 'rgba(0, 0, 0, 0.8)',
  461. font: 'bold 25px arial'
  462. });
  463. $(".p-qianyuelv").html("<span class='c-17b3ec'>"+res.signRate.sign+"</span>/"+res.signRate.people);
  464. $('#dabiaolv').waterbubble({
  465. txt: res.signTaskRate.rate.substring(0,res.signTaskRate.rate.length-2) + "%",
  466. data: res.signTaskRate.rate/100,
  467. waterColor: '#4ECD70',
  468. lineWidth:0,
  469. radius: 75,
  470. textColor: 'rgba(0, 0, 0, 0.8)',
  471. font: 'bold 25px arial'
  472. });
  473. $(".p-dachenglv").html("<span class='c-4ECD70'>"+res.signTaskRate.sign+"</span>/"+res.signTaskRate.people);
  474. } else {
  475. mui.toast(res.msg);
  476. }
  477. },
  478. dateLineHandle = function(res){
  479. if(res.status==200){
  480. for(var p in res.data){
  481. taskNum = res.data[p].taskNum;
  482. dateData[p] = formatDateData(res.data[p].data);
  483. if(dateData[p].amountArr && dateData[p].amountArr.length>0){
  484. $('#l-jmfx').toggle(p == "index_13" );
  485. $(".l-zxt-con").hide();
  486. mui.later(function(){
  487. $(".l-zxt-con").show();
  488. }, 100);
  489. $("#echarts_wushuju").hide();
  490. } else{
  491. $(".l-zxt-con").hide();
  492. $("#echarts_wushuju").show();
  493. }
  494. drawChart(dateData[p]);//初始化折线图
  495. }
  496. } else {
  497. mui.toast(res.msg);
  498. }
  499. plus.nativeUI.closeWaiting();
  500. },
  501. listHandle = function(res){
  502. if(res.status == 200) {
  503. res = res.data;
  504. for(var k in res){
  505. var list = res[k];
  506. var topArr = soreRank(amountArr(list));
  507. var liIndex = $(".c-lab-mor li.hit").index();
  508. if($(".c-lab-mor li.hit a").html()=="团队"){//社区看团队数据
  509. teamFenYeFun(list,topArr);
  510. }else{
  511. var resultStr = "";
  512. var topClass = "";
  513. var qylResultStr = "";
  514. var qylClass = "c-a0dc28";
  515. if($(".c-lab-mor li.hit a").html()=="团队"){
  516. qylClass = "c-17b8ec";
  517. }
  518. for(var j in list){
  519. switch (topArr[j]){
  520. case 1:
  521. topClass="cb-EA5B3A";
  522. break;
  523. case 2:
  524. topClass="cb-FF8746";
  525. break;
  526. case 3:
  527. topClass="cb-69CA2E";
  528. break;
  529. default:
  530. topClass="cb-3DA9CE";
  531. break;
  532. }
  533. resultStr+='<li data-name="'+list[j].name+'" data-code="'+list[j].code+'">'+
  534. '<div class="div-top '+topClass+' c-f10">'+topArr[j]+'</div>'+
  535. '<div class="div-name f-fs14">'+list[j].name+'</div>'+
  536. '</li>';
  537. qylResultStr+='<li>'+'<div class="div-amount c-f10 mr10 '+qylClass+'">'+(parseFloat(list[j].amount)/1000).toFixed(2)+'</div>'+'</li>';
  538. }
  539. $(".div-list"+liIndex).show();
  540. $(".div-list"+liIndex+" .list-ul").html(resultStr);
  541. $(".div-list"+liIndex+" .div-right-data-content .list-ul").html(qylResultStr);
  542. $(".div-list"+liIndex+" li .div-name,"+".div-list"+liIndex+" li .div-amount").each(function(){
  543. if($(this).height()==21){
  544. $(this).addClass("mt20")
  545. }else if($(this).height()==42){
  546. $(this).addClass("mt10")
  547. }
  548. })
  549. if(list.length==0){
  550. scroller1.refresh();
  551. plus.nativeUI.closeWaiting();
  552. return false;
  553. }
  554. //加载图表数据
  555. var amountArrS = amountArr(list).reverse();//签约量
  556. var nameArrs = nameArr(list).reverse();//名称
  557. $("#chart-main"+liIndex).height(list.length*customHeight+100);
  558. $(".div-list"+liIndex+" .div-right-content").show();
  559. $(".div-list"+liIndex+" .div-right-team-content").hide();
  560. var rateArrS = rateArr(list).reverse();//签约率
  561. var personArrS = personArr(list).reverse();//人口数
  562. var taskArrS = taskArr(list).reverse();//任务量
  563. var amountArrResult = arr_dive(personArrS,amountArrS);
  564. var mblValue = parseFloat(list[0].signTaskNum).toFixed(2); //目标率
  565. if($("#Dtitle").attr("data-id")=="2"){//整体签约(按人口)
  566. $(".div-rks-title").html("人口数");
  567. $(".div-mbl-title").html("目标量");
  568. echartsFun("chart-main"+liIndex,amountArrS,amountArrResult,taskArrS,rateArrS,nameArrs,mblValue);//区进展、社区进展的图表
  569. }else{
  570. $(".div-rks-title").html("目标量");
  571. $(".div-mbl-title").html("超出量");
  572. var qylAmountArr = arr_dive_qyl(amountArrS,taskArrS);//签约量
  573. var mblAmountArr = arr_dive_mbl(amountArrS,taskArrS);//目标量
  574. var cclAmountArr = arr_dive_ccl(amountArrS,taskArrS);//超出量(目标量-签约量)
  575. echartsCCFun("chart-main"+liIndex,qylAmountArr,mblAmountArr,cclAmountArr,rateArrS,nameArrs,mblValue);
  576. }
  577. }
  578. scroller1.refresh();
  579. plus.nativeUI.closeWaiting();
  580. }
  581. } else {
  582. mui.toast(res.msg);
  583. }
  584. },
  585. teamFenYeFun = function(recordList,topArr){
  586. if(recordList){
  587. team_top_list = _.groupBy(topArr,function(item,i){return Math.floor(i/TD_PAGE_SIZE)});
  588. team_data_list = _.groupBy(recordList,function(item,i){return Math.floor(i/TD_PAGE_SIZE)});
  589. if(team_data_list){
  590. loadTeamData(team_data_list[current_team_index],team_top_list[current_team_index],false);
  591. }
  592. }
  593. },
  594. loadTeamData = function(list,topArr,isPullUp){
  595. var resultStr = "";
  596. var topClass = "";
  597. var qylResultStr = "";
  598. var qylClass = "c-17b8ec";
  599. var liIndex = $(".c-lab-mor li.hit").index();
  600. if(isPullUp){
  601. var newLiIndex = $(".div-data-list").length;
  602. var chartMainId = "chart-main"+newLiIndex;
  603. var divListClassz = "div-list"+newLiIndex;
  604. var addDivList = '<div class="div-data-list '+divListClassz+' f-dn" style="position: relative;">'+
  605. '<div class="div-left-content" style="top: 0px;">'+
  606. '<ul class="list-ul"></ul>'+
  607. '</div>'+
  608. '<div class="div-right-data-content" style="top: 0px;">'+
  609. '<ul class="list-ul f-fr"></ul>'+
  610. '</div>'+
  611. '<div id="'+chartMainId+'" style="width: 100%; margin: 0px 0px 0px 35px;"></div>'+
  612. '</div>';
  613. $(".div-data-list:last").after(addDivList);
  614. liIndex = newLiIndex;
  615. }
  616. setTimeout(function(){
  617. var amountArrS = amountArr(list,true);//签约量
  618. var nameArrs = nameArr(list);//名称
  619. for(var j in list){
  620. switch (topArr[j]){
  621. case 1:
  622. topClass="cb-EA5B3A";
  623. break;
  624. case 2:
  625. topClass="cb-FF8746";
  626. break;
  627. case 3:
  628. topClass="cb-69CA2E";
  629. break;
  630. default:
  631. topClass="cb-3DA9CE";
  632. break;
  633. }
  634. var redClass = list[j].amount>1500?"c-EA5B3A":"";
  635. resultStr+='<li data-name="'+list[j].name+'" data-code="'+list[j].code+'">'+
  636. '<div class="div-top '+topClass+' c-f10">'+topArr[j]+'</div>'+
  637. '<div class="div-name f-fs14 '+redClass+'">'+(list[j].name || "未知")+'</div>'+
  638. '</li>';
  639. qylResultStr+='<li>'+'<div class="div-amount mr10 '+qylClass+'">'+list[j].amount+'</div>'+'</li>';
  640. }
  641. $(".div-list"+liIndex).show();
  642. $(".div-list"+liIndex+" .list-ul").html(resultStr);
  643. $(".div-list"+liIndex+" .div-right-data-content .list-ul").html(qylResultStr);
  644. $(".div-list"+liIndex+" li .div-name,"+".div-list"+liIndex+" li .div-amount").each(function(){
  645. if($(this).height()==21){
  646. $(this).addClass("mt20")
  647. }else if($(this).height()==42){
  648. $(this).addClass("mt10")
  649. }
  650. })
  651. if(!list){
  652. scroller1.refresh();
  653. plus.nativeUI.closeWaiting();
  654. return false;
  655. }
  656. $(".div-list"+liIndex+" .div-right-content").hide();
  657. if(!list){
  658. $(".div-right-danwei").hide();
  659. $(".div-list"+liIndex+" .div-right-team-content").hide();
  660. $("#chart-main"+liIndex).hide();
  661. }else{
  662. if(chooseYear == 2016){
  663. $(".tk-span").hide();
  664. }
  665. $(".div-right-danwei").show();
  666. $(".div-list"+liIndex+" .div-right-team-content").show();
  667. $("#chart-main"+liIndex).show();
  668. var heightM = current_team_index==0?list.length*customHeight+30:list.length*customHeight;
  669. $("#chart-main"+liIndex).height(heightM);
  670. //增加调控量的数据显示
  671. var regulationAmount = list[0].signRegulationNum;
  672. echartsTDFun("chart-main"+liIndex,amountArrS.reverse(),nameArrs.reverse(), regulationAmount);//团队进展图表
  673. }
  674. scroller1.refresh();
  675. plus.nativeUI.closeWaiting();
  676. },200)
  677. },
  678. drawChart = function(dateData){//初始化折线图
  679. $(".div-switch").show();
  680. var recordCount = 10;//一页显示几条数据
  681. var allRecordData = dateData.amountArr.reverse();
  682. var dateArr = dateData.dateArr.reverse();
  683. var resultData = _.groupBy(allRecordData,function(item,i){return Math.floor(i/recordCount)});
  684. var dateArrData = _.groupBy(dateArr,function(item,i){return Math.floor(i/recordCount)});
  685. //以下为折线图处理
  686. var gnum = Math.ceil(allRecordData.length / recordCount);
  687. var HandStartX,HandStartY,HandEndX,HandEndY,CountX,CountY,startPos,isScrolling,number=allRecordData.length,times=allRecordData.length%recordCount;
  688. var canvasStr = '<div class="div-layer"></div>';
  689. for(var x in resultData){
  690. canvasStr ='<canvas id="wcMotion'+x+'" class="canvas-wc animated" style="display:block"></canvas>'+canvasStr;
  691. }
  692. $(".l-zxt-inner").html(canvasStr);
  693. var dateType = $(".div-btn-group .div-btn.active").attr("data-id");
  694. window.setTimeout(function() {
  695. for(var x in resultData){
  696. var startDay = new Date(getDateBefore(times-1));
  697. var resultDateArr = dateArrData[x].reverse();
  698. var yAxis = taskNum;//maxData(resultData[x]);//求数据的最大值
  699. $('#wcMotion'+x).wcChart({
  700. height: 200, // width and height must be set if change
  701. yAxis:yAxis,
  702. day: startDay,
  703. points: [],
  704. dateArr:resultDateArr,
  705. dateType:dateType,
  706. data: resultData[x].reverse(),
  707. fill: {gradient: [["#17B3EC",.1], ["#17B3EC",.5]], gradientAngle: Math.PI * -45/180},
  708. animation: null // 修复bug#3298 【医生端】总体分析排版优化。(vivo手机)
  709. });
  710. if(x==0){
  711. $('#wcMotion'+x).show();
  712. }
  713. times+=recordCount;
  714. //折线图画布添加左滑和右滑效果
  715. var wcMotion = document.getElementById('wcMotion'+x);
  716. wcMotion.addEventListener('touchstart', function(event) {
  717. HandStartX=event.touches[0].clientX;
  718. HandStartY=event.touches[0].clientY;
  719. //touches数组对象获得屏幕上所有的touch,取第一个touch
  720. var touch = event.targetTouches[0];
  721. //取第一个touch的坐标值
  722. startPos = {x:touch.pageX,y:touch.pageY,time:+new Date};
  723. //这个参数判断是垂直滚动还是水平滚动
  724. isScrolling = 0;
  725. }, false);
  726. wcMotion.addEventListener('touchend', function(event) {
  727. HandEndX=event.changedTouches[0].clientX;
  728. HandEndY=event.changedTouches[0].clientY;
  729. CountX=HandEndX-HandStartX;
  730. CountY=HandEndY-HandStartY;
  731. if((Math.abs(CountX)>Math.abs(CountY))&& Math.abs(CountX)>50){
  732. var targetMotion = $(event.target);
  733. if(CountX<0){
  734. if(targetMotion.next().length>0 && !targetMotion.next().hasClass("div-layer")){
  735. targetMotion.addClass("fadeOutLeft");
  736. targetMotion.next().removeClass("fadeOutRight").removeClass("fadeOutLeft").removeClass("fadeInLeft").addClass("fadeInRight").show();
  737. }
  738. console.log("左滑");
  739. }else{
  740. if(targetMotion.prev().length>0 && !targetMotion.prev().hasClass("div-layer")){
  741. targetMotion.addClass("fadeOutRight");
  742. targetMotion.prev().removeClass("fadeOutRight").removeClass("fadeOutLeft").removeClass("fadeInRight").addClass("fadeInLeft").show();
  743. }
  744. console.log("右滑");
  745. }
  746. }
  747. }, false);
  748. wcMotion.addEventListener('touchmove', function(event) {
  749. //当屏幕有多个touch或者页面被缩放过,就不执行move操作
  750. if(event.targetTouches.length > 1 || event.scale && event.scale !== 1) return;
  751. var touch = event.targetTouches[0];
  752. endPos = {x:touch.pageX - startPos.x,y:touch.pageY - startPos.y};
  753. //isScrolling为1时,表示纵向滑动,0为横向滑动
  754. isScrolling = Math.abs(endPos.x) < Math.abs(endPos.y) ? 1:0;
  755. if(isScrolling === 0){
  756. //阻止触摸事件的默认行为,即阻止滚屏
  757. event.preventDefault();
  758. }
  759. }, false);
  760. }
  761. }, 500);
  762. },
  763. formatDateData = function(data){//折线图数据格式转化
  764. var dateArr = [];
  765. var amountArr = [];
  766. for(var k in data){
  767. dateArr.push(data[k].range.substring(5));
  768. amountArr.push(data[k].amount);
  769. }
  770. return {dateArr: dateArr, amountArr: amountArr};
  771. },
  772. soreRank = function(arr){//排名方法
  773. var temp = [];
  774. var lis = [];
  775. for(var i=0;i<arr.length;i++)
  776. lis.push(arr[i])
  777. lis = _.uniq(lis);
  778. // lis.sort();
  779. // lis.reverse();
  780. for(var i=0;i<arr.length;i++)
  781. temp[i] = lis.indexOf(arr[i])+1;
  782. return temp;
  783. },
  784. nameArr = function(list){//名称数据集合
  785. var nameArr = [];
  786. for(var k in list){
  787. nameArr.push(list[k].name || "");
  788. }
  789. return nameArr;
  790. },
  791. amountArr = function(list,isTD){//签约量数据集合
  792. var amountArr = [];
  793. if(isTD){//如果是团队的话,单位为人
  794. for(var k in list){
  795. amountArr.push(list[k].amount);
  796. }
  797. }else{//其他单位为千人
  798. for(var k in list){
  799. amountArr.push(list[k].amount/1000);
  800. }
  801. }
  802. return amountArr;
  803. },
  804. rateArr = function(list){//签约率数据
  805. var rateArr = [];
  806. for(var k in list){
  807. var rate = list[k].rate?list[k].rate.substring(0,4):"0.00";
  808. rateArr.push(rate);
  809. }
  810. return rateArr;
  811. },
  812. personArr = function(list){//人口数数据
  813. var personArr = [];
  814. for(var k in list){
  815. personArr.push(list[k].num/1000 || 0);
  816. }
  817. return personArr;
  818. },
  819. taskArr = function(list){//任务量数据
  820. var taskArr = [];
  821. for(var k in list){
  822. taskArr.push(list[k].task/1000||0);
  823. }
  824. return taskArr;
  825. },
  826. arr_dive = function(personArr,amountArr){//柱状图叠层 (人口数-签约量=人口数)
  827. var resultArr = [];
  828. for(var k in personArr){
  829. resultArr.push(personArr[k]-amountArr[k]);
  830. }
  831. return resultArr;
  832. },
  833. arr_dive_ccl = function(amountArr,taskArr){//柱状图叠层 (签约量-目标量=超出量)
  834. var resultArr = [];
  835. var chaochuValue = 0;
  836. for(var k in taskArr){
  837. chaochuValue = amountArr[k]-taskArr[k]<0?0:amountArr[k]-taskArr[k];
  838. resultArr.push(chaochuValue);
  839. }
  840. return resultArr;
  841. },
  842. arr_dive_qyl = function(amountArr,taskArr){//柱状图叠层 (签约量)
  843. var resultArr = [];
  844. for(var k in taskArr){
  845. if(taskArr[k]-amountArr[k]>0){//目标量-签约量>0
  846. resultArr.push(amountArr[k]);
  847. }else{//目标量-签约量<0
  848. resultArr.push(0);
  849. }
  850. }
  851. return resultArr;
  852. },
  853. arr_dive_mbl = function(amountArr,taskArr){//柱状图叠层 (目标量)
  854. var resultArr = [];
  855. for(var k in taskArr){
  856. if(taskArr[k]-amountArr[k]>0){//目标量-签约量>0
  857. resultArr.push(taskArr[k]-amountArr[k]);
  858. }else{//目标量-签约量<0
  859. resultArr.push(taskArr[k]);
  860. }
  861. }
  862. return resultArr;
  863. },
  864. maxData = function(data){
  865. var maxData = Math.max.apply(Math,data);
  866. var yAxis = maxData<10?10:maxData;
  867. return yAxis;
  868. },
  869. getStartDate = function(){//獲取當前日期往前推三個月(當前日期減去三個月),返回日期格式:比如:2014-08-11(當前月為:2014-11-11)
  870. /* 按年度来计算的时候,开始时间是该年度7月1号还是到下一个年的6月30号结束
  871. var newDate = new Date();
  872. var startY = newDate.getFullYear();
  873. var startM = newDate.getMonth() - 3;
  874. var startD = newDate.getDate();
  875. // 日期賦值
  876. var mydate = new Date(startY, startM, startD);
  877. var strYear = mydate.getFullYear();
  878. //顯示的月份要加一,因為月份是從0開始的
  879. var strMonth = mydate.getMonth() + 1;
  880. var strDate = mydate.getDate();
  881. if (strMonth.toString().length == 1)
  882. strMonth = "0" + strMonth;
  883. if (strDate.toString().length == 1)
  884. strDate = "0" + strDate;
  885. var strStartDate = strYear + "-" + strMonth + "-" + strDate;
  886. return strStartDate;
  887. */
  888. return chooseYear+'-07-01';
  889. },
  890. //获取结束时间
  891. getEndDate = function(){
  892. var nowdate = new Date();
  893. var year = nowdate.getFullYear();
  894. var month = nowdate.getMonth() + 1;
  895. var day = nowdate.getDate();
  896. var endDate = new Date((parseInt(chooseYear)+1) + '-06-30');
  897. var now = new Date();
  898. // var endDate = new Date((chooseYear+1) + '-06-30'),
  899. // now = new Date();
  900. if(now <= endDate){
  901. return now.getFullYear()+"-"+((now.getMonth()+1)>=10?(now.getMonth()+1):("0"+(now.getMonth()+1)))+"-"+(now.getDate()>=10?now.getDate():("0"+now.getDate()));
  902. }else{
  903. return (parseInt(chooseYear)+1) + '-06-30';
  904. }
  905. },
  906. getDateBefore = function(days){//获取多少天前的日期
  907. var now = new Date();
  908. var date = new Date(now.getTime() - days * 24 * 3600 * 1000);
  909. var year = date.getFullYear();
  910. var month = date.getMonth() + 1;
  911. var day = date.getDate();
  912. var hour = date.getHours();
  913. var minute = date.getMinutes();
  914. var second = date.getSeconds();
  915. return year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day);
  916. };
  917. /*****************************************************************************/
  918. /***** echarts图标处理 **********/
  919. /*****************************************************************************/
  920. var echartsFun = function(elementId,amountArrS,amountArrResult,taskArrS,rateArrS,nameArr,mblValue){//区进展、社区进展的图表
  921. var myChart = echarts.init(document.getElementById(elementId));
  922. var height = amountArrS.length*customHeight;
  923. var option = {
  924. grid: {x:60,y: 30,height:height,borderWidth:0},
  925. yAxis : [
  926. {
  927. type : 'category',
  928. data : nameArr,
  929. axisLine: {show:false},
  930. axisTick: {show:false},
  931. splitArea: {show:false},
  932. splitLine: {show:false},
  933. axisLabel: {show:false}
  934. }
  935. ],
  936. xAxis : [
  937. {
  938. type : 'value',
  939. axisLine: {show:true,lineStyle:{color:'#cccccc'}},
  940. axisTick: {show:true,lineStyle:{color:'#cccccc'}},
  941. axisLabel:{formatter:'{value}%',textStyle:{color:'#cccccc'}},
  942. splitArea: {show:false},
  943. splitLine: {show:false}
  944. },
  945. {
  946. type : 'value',
  947. axisLine: {show:true,lineStyle:{color:'#cccccc'}},
  948. axisTick: {show:true,lineStyle:{color:'#cccccc'}},
  949. axisLabel:{formatter:'{value}',textStyle:{color:'#cccccc'}},
  950. splitArea: {show:false},
  951. splitLine: {show:false}
  952. }
  953. ],
  954. series : [
  955. {
  956. name:'任务量',
  957. type:'bar',
  958. barWidth : 20,//柱图宽度
  959. stack: '目标量',
  960. xAxisIndex:1,
  961. itemStyle: {normal: {barBorderRadius:0,color:'#17b3ec', label:{show:false, position: 'insideRight'}}},
  962. data:taskArrS,
  963. },
  964. {
  965. name:'签约量',
  966. type:'bar',
  967. barWidth : 20,//柱图宽度
  968. stack: '人数',
  969. xAxisIndex:1,
  970. itemStyle: {normal: {barBorderRadius:0,color:'#a0dc28', label:{show:false, position: 'insideRight',textStyle:{color:'#fff'}}}},
  971. data:amountArrS
  972. },
  973. {
  974. name:'人口数',
  975. type:'bar',
  976. barWidth : 20,//柱图宽度
  977. stack: '人数',
  978. xAxisIndex:1,
  979. itemStyle: {normal: {barBorderRadius:0,color:'#ffc149', label:{show:false, position: 'insideRight'}}},
  980. data:amountArrResult
  981. },
  982. {
  983. name:'签约率',
  984. type:'line',
  985. itemStyle: {normal: {color:'red', label:{show:true,formatter:function(p){return p.value +"%";},textStyle:{color:'red'},position:'bottom'}}},
  986. data:rateArrS,
  987. markLine:{
  988. itemStyle:{
  989. normal:{lineStyle:{type:'solid',color:'#925cfe'},label:{show:true,formatter:function(p){return p.value +"%";},textStyle:{color:'#925cfe'},position:'bottom'}}
  990. },
  991. large:true,
  992. effect:{
  993. show: false,
  994. loop: true,
  995. period: 0,
  996. scaleSize : 2,
  997. color : null,
  998. shadowColor : null,
  999. shadowBlur : null
  1000. },
  1001. data:[
  1002. [
  1003. {name: '标线1起点', value: mblValue,xAxis:-1, xAxis: mblValue}, // 当xAxis为类目轴时,数值1会被理解为类目轴的index,通过xAxis:-1|MAXNUMBER可以让线到达grid边缘
  1004. {name: '标线1终点', yAxis: nameArr[nameArr.length-1], xAxis: mblValue}, // 当xAxis为类目轴时,字符串'周三'会被理解为与类目轴的文本进行匹配
  1005. ],
  1006. ]
  1007. }
  1008. }
  1009. ]
  1010. };
  1011. myChart.setOption(option);
  1012. },
  1013. echartsCCFun = function(elementId,qylAmountArr,mblAmountArr,cclAmountArr,rateArrS,nameArr,mblValue){//区进展、社区进展的图表
  1014. // var mblValue = $("#Dtitle").attr("data-id")=="1"?"15":"30";
  1015. var myChart = echarts.init(document.getElementById(elementId));
  1016. var height = qylAmountArr.length*customHeight;
  1017. var option = {
  1018. grid: {x:60,y: 30,height:height,borderWidth:0},
  1019. yAxis : [
  1020. {
  1021. type : 'category',
  1022. data : nameArr,
  1023. axisLine: {show:false},
  1024. axisTick: {show:false},
  1025. splitArea: {show:false},
  1026. splitLine: {show:false},
  1027. axisLabel: {show:false}
  1028. }
  1029. ],
  1030. xAxis : [
  1031. {
  1032. type : 'value',
  1033. axisLine: {show:true,lineStyle:{color:'#cccccc'}},
  1034. axisTick: {show:true,lineStyle:{color:'#cccccc'}},
  1035. axisLabel:{formatter:'{value}%',textStyle:{color:'#cccccc'}},
  1036. splitArea: {show:false},
  1037. splitLine: {show:false}
  1038. },
  1039. {
  1040. type : 'value',
  1041. axisLine: {show:true,lineStyle:{color:'#cccccc'}},
  1042. axisTick: {show:true,lineStyle:{color:'#cccccc'}},
  1043. axisLabel:{formatter:'{value}',textStyle:{color:'#cccccc'}},
  1044. splitArea: {show:false},
  1045. splitLine: {show:false}
  1046. }
  1047. ],
  1048. series : [
  1049. {
  1050. name:'签约量',
  1051. type:'bar',
  1052. barWidth : 20,//柱图宽度
  1053. stack: '人数',
  1054. xAxisIndex:1,
  1055. itemStyle: {normal: {barBorderRadius:0,color:'#A0DC28', label:{show:false, position: 'insideRight'}}},
  1056. data:qylAmountArr,
  1057. },
  1058. {
  1059. name:'目标量',
  1060. type:'bar',
  1061. barWidth : 20,//柱图宽度
  1062. stack: '人数',
  1063. xAxisIndex:1,
  1064. itemStyle: {normal: {barBorderRadius:0,color:'#ffc149', label:{show:false, position: 'insideRight',textStyle:{color:'#fff'}}}},
  1065. data:mblAmountArr
  1066. },
  1067. {
  1068. name:'超出量',
  1069. type:'bar',
  1070. barWidth : 20,//柱图宽度
  1071. stack: '人数',
  1072. xAxisIndex:1,
  1073. itemStyle: {normal: {barBorderRadius:0,color:'#A0DC28', label:{show:false, position: 'insideRight'}}},
  1074. data:cclAmountArr
  1075. },
  1076. {
  1077. name:'签约率',
  1078. type:'line',
  1079. itemStyle: {normal: {color:'red', label:{show:true,formatter:function(p){return p.value +"%";},textStyle:{color:'red'},position:'bottom'}}},
  1080. data:rateArrS,
  1081. markLine:{
  1082. itemStyle:{
  1083. normal:{lineStyle:{type:'solid',color:'#925cfe'},label:{show:true,formatter:function(p){return p.value +"%";},textStyle:{color:'#925cfe'},position:'bottom'}}
  1084. },
  1085. large:true,
  1086. effect:{
  1087. show: false,
  1088. loop: true,
  1089. period: 0,
  1090. scaleSize : 2,
  1091. color : null,
  1092. shadowColor : null,
  1093. shadowBlur : null
  1094. },
  1095. data:[
  1096. [
  1097. {name: '标线1起点', value: mblValue,xAxis:-1, xAxis: mblValue}, // 当xAxis为类目轴时,数值1会被理解为类目轴的index,通过xAxis:-1|MAXNUMBER可以让线到达grid边缘
  1098. {name: '标线1终点', yAxis: nameArr[nameArr.length-1], xAxis: mblValue}, // 当xAxis为类目轴时,字符串'周三'会被理解为与类目轴的文本进行匹配
  1099. ],
  1100. ]
  1101. }
  1102. }
  1103. ]
  1104. };
  1105. myChart.setOption(option);
  1106. },
  1107. echartsTDFun = function(elementId,amountArrS,nameArr, regulationAmount){//团队进展图表
  1108. var myChart = echarts.init(document.getElementById(elementId));
  1109. var height = amountArrS.length*customHeight;
  1110. var xAxis = null;
  1111. if(current_team_index==0){
  1112. xAxis = [
  1113. {
  1114. type : 'value',
  1115. axisLine: {show:false},
  1116. axisTick: {show:false},
  1117. axisLabel: {show:false},
  1118. splitArea: {show:false},
  1119. splitLine: {show:false}
  1120. },
  1121. {
  1122. type : 'value',
  1123. axisLine: {show:true,lineStyle:{color:'#cccccc'}},
  1124. axisTick: {show:true,lineStyle:{color:'#cccccc'}},
  1125. axisLabel:{show:true,formatter:'{value}',textStyle:{color:'#cccccc'}},
  1126. splitArea: {show:false},
  1127. splitLine: {show:false},
  1128. }
  1129. ];
  1130. }else{
  1131. xAxis = [
  1132. {
  1133. type : 'value',
  1134. max:team_data_list[0][0].amount,
  1135. axisLine: {show:false},
  1136. axisTick: {show:false},
  1137. axisLabel: {show:false},
  1138. splitArea: {show:false},
  1139. splitLine: {show:false}
  1140. },
  1141. {
  1142. type : 'value',
  1143. max:team_data_list[0][0].amount,
  1144. axisLine: {show:false,lineStyle:{color:'#cccccc'}},
  1145. axisTick: {show:false,lineStyle:{color:'#cccccc'}},
  1146. axisLabel:{show:false,formatter:'{value}',textStyle:{color:'#cccccc'}},
  1147. splitArea: {show:false},
  1148. splitLine: {show:false},
  1149. }
  1150. ];
  1151. }
  1152. var gridY = current_team_index==0?30:0;
  1153. //调控量的配置信息
  1154. var markLine = {
  1155. itemStyle:{
  1156. normal:{
  1157. lineStyle:{
  1158. type:'solid',
  1159. color:'#925cfe'
  1160. },
  1161. label:{
  1162. show:true,
  1163. formatter:function(p){
  1164. return p.value +"人";
  1165. },
  1166. textStyle:{
  1167. color:'#925cfe'
  1168. },
  1169. position:'bottom'
  1170. }
  1171. }
  1172. },
  1173. large:true,
  1174. effect:{
  1175. show: false,
  1176. loop: true,
  1177. period: 0,
  1178. scaleSize : 2,
  1179. color : null,
  1180. shadowColor : null,
  1181. shadowBlur : null
  1182. },
  1183. data:[
  1184. [
  1185. {name: '标线1起点', value: regulationAmount,xAxis:-1, xAxis: regulationAmount}, // 当xAxis为类目轴时,数值1会被理解为类目轴的index,通过xAxis:-1|MAXNUMBER可以让线到达grid边缘
  1186. {name: '标线1终点', yAxis: nameArr[nameArr.length-1], xAxis: regulationAmount}, // 当xAxis为类目轴时,字符串'周三'会被理解为与类目轴的文本进行匹配
  1187. ],
  1188. ]
  1189. }
  1190. if(chooseYear == 2016){
  1191. markLine.data = [];
  1192. $(".tk-span").hide();
  1193. }
  1194. var option = {
  1195. calculable : true,
  1196. grid: {x:60,y: gridY,height:height,borderWidth:0},
  1197. yAxis : [
  1198. {
  1199. type : 'category',
  1200. // boundaryGap : false,
  1201. data : nameArr,
  1202. axisLine: {show:false},
  1203. axisTick: {show:false},
  1204. splitArea: {show:false},
  1205. splitLine: {show:false},
  1206. axisLabel: {show:false}
  1207. }
  1208. ],
  1209. xAxis : xAxis,
  1210. series : [
  1211. {
  1212. name:'签约量',
  1213. type:'bar',
  1214. barWidth : 20,//柱图宽度
  1215. xAxisIndex:1,
  1216. itemStyle: {normal: {barBorderRadius:0,color:'#17b8ec', label:{show:false, position: 'insideRight',textStyle:{color:'#fff'}}}},
  1217. data:amountArrS,
  1218. markLine: markLine
  1219. }
  1220. ]
  1221. };
  1222. myChart.setOption(option);
  1223. };
  1224. /*****************************************************************************/
  1225. /***** 返回事件处理 **********/
  1226. /*****************************************************************************/
  1227. mui.back = function(){
  1228. console.log("back");
  1229. var arr = JSON.parse(plus.storage.getItem("levelParamsArr"));
  1230. if(arr==null || arr.length==1){//返回到管理员首页,并刷新数据
  1231. plus.storage.removeItem("userLevel");
  1232. plus.storage.removeItem("userArea");
  1233. var mainPage =plus.webview.getWebviewById("admin.html");
  1234. mui.fire(mainPage, "refreshData");
  1235. plus.storage.removeItem("levelParamsArr");
  1236. //关闭筛选页面
  1237. var shaixuan = plus.webview.getWebviewById("shaixuan2.html");
  1238. if(shaixuan){
  1239. shaixuan.close();
  1240. }
  1241. setTimeout(function(){
  1242. self.close();
  1243. },500)
  1244. }else{ //加载当前级别数据
  1245. current_team_index = 0;
  1246. arr.pop();
  1247. curLeveArr = arr[arr.length-1];
  1248. plus.storage.setItem("levelParamsArr",arr.length==0?plus.storage.removeItem("levelParamsArr"):JSON.stringify(arr));
  1249. loadAllData(curLeveArr);
  1250. }
  1251. }
  1252. document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);