income-location.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="author" content=""/>
  6. <meta name="description" content=""/>
  7. <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
  8. <meta name="format-detection" content="telephone=no,email=no"/>
  9. <meta name="viewport"
  10. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <title>地址统计</title>
  15. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css"/>
  16. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>
  17. <link rel="stylesheet" href="../components/custom/css/common.css"/>
  18. <link rel="stylesheet" href="css/xyf.common.min.css">
  19. <style>
  20. /*重置背景**/
  21. html, .mui-content {
  22. background: #EBEBEB;
  23. }
  24. </style>
  25. </head>
  26. <body style="padding-bottom: 60px">
  27. <div class="income-panel">
  28. <div class=" mui-input-group mui-reset">
  29. <div class="mui-row">
  30. <div class="mui-col-xs-7 mui-col-sm-7 ">
  31. <div class="mui-input-row mui-search">
  32. <input type="search" class="mui-input-clear" id="searchKey" placeholder="设备地址">
  33. </div>
  34. </div>
  35. <div class="mui-col-xs-5 mui-col-sm-5 mui-text-right">
  36. <div class="filter-btn"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>
  37. <div class="in-row-btn" onclick="showChart()"><i class="iconfont icon-chart-pie"></i></div>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="mui-table-view clear-before">
  42. <div class="mui-row head-status">
  43. <div class="font-12 mui-col-xs-8 mui-col-sm-8">
  44. <span class="" id="time"></span>
  45. <span class="font-bold" id="categoryName">收益</span>
  46. </div>
  47. <div class="mui-col-xs-4 mui-col-sm-4 per-box">
  48. <div class="mui-pull-right" id="toggleCategory" onclick="toggleCategory()">
  49. <div class="mui-btn"><span style="-webkit-transform: rotate(0deg);">查看消费</span></div>
  50. <div class="mui-btn"><span style="-webkit-transform: rotate(0deg);">查看收益</span></div>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. <div class="filter-panel datepickerSelecter" style="display: none" id="options">
  56. <div class="input-group-vertical mui-table-view clear-b-border datepicker">
  57. <div style="background: #def;color: #333;font-size: 12px;padding: 10px;">
  58. 注:为加速查询性能,提供更好的查询体验,系统仅支持查询最近3年的订单统计数据。
  59. </div>
  60. <!-- 暂时隐藏 后面可能还会改。。。-->
  61. <div class="or-border-fir mui-input-row input-clear or-order-status select-date" id="start-date"
  62. style="">
  63. <label class="or-label-text">开始日期</label>
  64. <span class="mui-icon mui-icon-arrowright"></span>
  65. <span class="or-order-status-font selected-text" id="beginDate"></span>
  66. </div>
  67. <div class="mui-input-row input-clear or-order-status select-date" id="end-date" style="">
  68. <label class="or-label-text">结束日期</label>
  69. <span class="mui-icon mui-icon-arrowright"></span>
  70. <span class="or-order-status-font selected-text" id="endDate"></span>
  71. </div>
  72. <div class="mui-input-row filter-panel-btn flexbox">
  73. <span class="cancel-btn flex">取消</span>
  74. <span class="ok-btn flex">确定</span>
  75. </div>
  76. </div>
  77. </div>
  78. <div id="pieChart" class="chart-box"></div>
  79. <div id="pullrefresh" class="mui-content mui-scroll-wrapper time-bd">
  80. <div class="mui-scroll">
  81. <div class="list"></div>
  82. </div>
  83. </div>
  84. </div>
  85. <script type="text/html" id="modalIncome">
  86. </script>
  87. <script type="text/html" id="modalConsume">
  88. <div class="custom-bottom groupItem active" role="manage">
  89. <div class="bd-hd"><i class="iconfont icon-balance c-primary iconBack"></i>
  90. <p class="titleInfo font-b"><span class="groupName v-middle"></span><em class="total-mark"></em></p>
  91. <p class="address"></p></div>
  92. <ul class="mui-table-view interval bd-bd">
  93. <li class="mui-table-view-cell">
  94. <a class="consume-list">
  95. </a>
  96. </li>
  97. </ul>
  98. </div>
  99. </script>
  100. <script src="https://cdn.washpayer.com/components/lib/echarts.js"></script>
  101. <script src="https://cdn.washpayer.com/components/lib/echarts-theme/macarons.js"></script>
  102. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  103. <script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script>
  104. <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
  105. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script>
  106. <script src="/components/custom/js/common.js"></script>
  107. <script src="js/xyf.common.js"></script>
  108. <script>
  109. var condition = null;
  110. var searchKey = "";
  111. var category = "income";// 或 consume
  112. var startTime = moment().format("YYYY-MM-DD");
  113. var endTime = moment().format("YYYY-MM-DD");
  114. //如果调到子页面,返回后还是保留查询条件
  115. var orRecordBack = getQueryString('orRecord');
  116. if (orRecordBack) {
  117. history.replaceState(null, null, "income-location.html");//清除orRecord
  118. }
  119. // 缓存条件
  120. var pageType = 'incomeLocation';
  121. //获取条件缓存数据
  122. if (orRecordBack) {
  123. condition = localStorage.condition ? JSON.parse(localStorage.condition)[pageType] : null;
  124. }
  125. var setCondition = function () {
  126. var data = {
  127. startTime: startTime,//开始日期
  128. endTime: endTime,//结束日期
  129. category: category,//分类
  130. searchKey: searchKey,//分类
  131. };
  132. var conArr = localStorage.condition ? JSON.parse(localStorage.condition) : {};
  133. conArr[pageType] = data;
  134. localStorage.condition = JSON.stringify(conArr);
  135. };
  136. /*根据缓存渲染已有条件数据*/
  137. if (condition) {
  138. if (condition.startTime) {
  139. startTime = condition.startTime
  140. }
  141. if (condition.endTime) {
  142. endTime = condition.endTime
  143. }
  144. if (condition.searchKey) {
  145. searchKey = condition.searchKey
  146. $("#searchKey").value(searchKey);
  147. }
  148. if (condition.category) {
  149. category = condition.category
  150. }
  151. if (category == "consume") {
  152. $("#categoryName").text("消费情况");
  153. $("#toggleCategory").addClass("rotate");
  154. }
  155. }
  156. setTimeTitle();
  157. function revertTime() {
  158. //缓存
  159. var tempTime = startTime;
  160. //开始
  161. startTimePicker.setSelectedValue(endTime);
  162. $('#beginDate').text(endTime);
  163. startTime = endTime
  164. //结束
  165. endTimePicker.setSelectedValue(tempTime);
  166. $('#endDate').text(tempTime);
  167. endTime = tempTime
  168. console.log('revertTime')
  169. }
  170. FilterComponent({
  171. ok: function () {
  172. /*合法性验证*/
  173. if (startTime > endTime) {
  174. revertTime();// 反转时间,避免用户再点
  175. }
  176. setTimeTitle();
  177. search();
  178. }
  179. });
  180. function setTimeTitle() {
  181. if (startTime == endTime) {
  182. $("#time").html(startTime + " ");
  183. } else {
  184. $("#time").html(startTime + "至" + endTime + " ");
  185. }
  186. $('#beginDate').text(startTime);
  187. $('#endDate').text(endTime);
  188. }
  189. // 搜索查询
  190. function search(callback) {
  191. pageIndex = 0;
  192. allDataList = [];
  193. $(".list").empty(); // 清空数据
  194. mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载
  195. pullupRefresh(callback);
  196. }
  197. var startTimePicker
  198. var endTimePicker
  199. //日期筛选条件
  200. function initDataPick() {
  201. var pickerBegin = moment().add(-2, 'year').startOf("year").toDate();//控件可选最小时间
  202. var pickerEnd = new Date();//控件可选最大时间
  203. var options = {
  204. type: "date",
  205. beginDate: pickerBegin,
  206. endDate: pickerEnd
  207. };
  208. var startTimeBtn = $('#start-date');
  209. startTimePicker = new mui.DtPicker(options);
  210. startTimePicker.setSelectedValue(startTime);//默认选中开始时间
  211. startTimeBtn[0].addEventListener('tap', function () {
  212. //todo 在日期还在滚动的过程中点确定会获取不到值,并且报错报错
  213. startTimePicker.show(function (time) {
  214. startTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  215. $('#beginDate').text(startTime);
  216. // 由开始日期来重新确定结束日期的可选范围; todo 会渲染更多的dom,目前没有找到update option的方式,这个组件不行
  217. var currentYear = moment().format("YYYY")
  218. var sY = time.y.text
  219. var opt = {
  220. type: "date",
  221. beginDate: moment(sY + '-01-01').toDate(),
  222. endDate: moment(sY + '-12-31').toDate()
  223. }
  224. if (currentYear === sY) {
  225. // 本年的话 end范围是今天
  226. opt.endDate = new Date()
  227. }
  228. endTimePicker = new mui.DtPicker(opt);
  229. if (currentYear === sY) {
  230. // 如果是今年,结束时间自动变为今天
  231. endTimePicker.setSelectedValue(moment().format('YYYY-MM-DD'));
  232. $('#endDate').text(moment().format('YYYY-MM-DD'));
  233. endTime = moment().format('YYYY-MM-DD')
  234. } else {
  235. //如果不是今年,结束时间变为12-31日或者不变
  236. var endYear = moment(endTime).format('YYYY')
  237. if (endYear != sY || endTime < startTime) {
  238. endTime = startTime
  239. endTimePicker.setSelectedValue(endTime);
  240. $('#endDate').text(endTime);
  241. }
  242. }
  243. // 又要重新绑定事件
  244. endTimeBtn[0].addEventListener('tap', function () {
  245. endTimePicker.show(function (time) {
  246. endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  247. $('#endDate').text(endTime);
  248. });
  249. }, false);
  250. });
  251. }, false);
  252. // 结束时间选择器,首次初始化,范围是 今年年初-今天
  253. var endTimeBtn = $('#end-date');
  254. endTimePicker = new mui.DtPicker({
  255. type: "date",
  256. beginDate: moment().startOf('year').toDate(),
  257. endDate: new Date()
  258. });
  259. endTimePicker.setSelectedValue(endTime);//默认选中结束时间
  260. endTimeBtn[0].addEventListener('tap', function () {
  261. endTimePicker.show(function (time) {
  262. endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  263. $('#endDate').text(endTime);
  264. });
  265. }, false);
  266. //快速日期范围选择
  267. $('.datepicker .mui-button-row button').tap(function () {
  268. $(this).addClass('active').siblings().removeClass('active');
  269. var range = $(this).attr('range');
  270. setDateTime(range);
  271. startTimePicker.setSelectedValue(startTime);
  272. endTimePicker.setSelectedValue(endTime);
  273. });
  274. function setDateTime(range) {
  275. startTime = moment().add(-range, "year").format("YYYY-01-01");
  276. endTime = moment().add(-range, "year").format("YYYY-12-31");
  277. $('#beginDate').text(startTime);
  278. $('#endDate').text(endTime);
  279. }
  280. }
  281. initDataPick()
  282. mui.init({
  283. pullRefresh: {
  284. container: '#pullrefresh',
  285. up: {
  286. contentrefresh: '正在加载...',
  287. contentnomore: '',
  288. callback: pullupRefresh
  289. }
  290. }
  291. });
  292. /* 上拉加载具体业务实现*/
  293. var pageIndex = 0;
  294. var allDataList = [];
  295. var total = 0;
  296. function pullupRefresh(callback) {
  297. pageIndex++;
  298. var url = "/dealer/groupIncomeData";
  299. if (category == "consume") {
  300. url = "/dealer/groupConsumptionData";
  301. }
  302. var searchKey = $("#searchKey").val();
  303. var data = {
  304. "searchKey": searchKey,
  305. "pageIndex": pageIndex,
  306. "pageSize": 10,
  307. "startTime": startTime,
  308. "endTime": endTime
  309. };
  310. setCondition();//设置条件到缓存,回退则保留条件,从主页进来不保留条件并且会刷新条件
  311. sendRequest(url, "GET", data, function (res) {
  312. if (res.result == 1) {
  313. if (pageIndex == 1) {
  314. total = res.para.total;
  315. if (total == 0) {
  316. $('#pullrefresh').addClass('mui-hidden');
  317. $("body").append('<div class="nomore"></div>');
  318. }
  319. }
  320. var length = res.para.dataList.length;
  321. allDataList = allDataList.concat(res.para.dataList);
  322. refreshChart();
  323. mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * 10 >= total));
  324. for (var i = 0; i < length; i++) {
  325. var obj = res.para.dataList[i];
  326. var income_href = 'income-details.html?startTime=' + startTime + '&groupId=' + obj.groupId + "&endTime=" + endTime;
  327. var offline_href = 'dev-offline-coins-stat-by-group.html?startTime=' + startTime + '&groupId=' + obj.groupId + "&endTime=" + endTime;
  328. var html = "";
  329. if (category == "income") {
  330. var agentProfitShare = parseFloat(obj.agentProfitShare || 0);//代理商分成
  331. var percent = parseFloat(obj.percent);//经销商合伙人所得分成
  332. if (percent == null) {
  333. percent = 100;
  334. }
  335. var finalPercent = ((100 - agentProfitShare) * (percent / 100)).toFixed(2);//最终分成,保留两位小数
  336. var percentStr = finalPercent + "%";
  337. var classStr = "";
  338. if (finalPercent == 100) {
  339. classStr = "mui-hidden";
  340. } else {
  341. classStr = "";
  342. }
  343. var perTip = "<i class='c-red'>" + percentStr + " = (100 - " + agentProfitShare + ")% x " + percent + "%</i>" + " \r\n 分成公式 = (100 - 代理商分成比例)% x (您在合伙人中分成比例)%";
  344. var incomeDetailDom = '';
  345. for (var index in obj.incomeList) {
  346. var itemIn = obj.incomeList[index];
  347. var thisHref;
  348. var tmpUrl = thisHref = 'income-list.html?typeShow=income&groupId=' + obj.groupId + '&startTime=' + startTime + '&endTime=' + endTime
  349. if (itemIn.source === 'chargeVirtualCard') {
  350. thisHref = tmpUrl + "&category=chargeVirtualCard"
  351. } else if (itemIn.source === 'chargeCard') {
  352. thisHref = tmpUrl + "&category=chargeCard"
  353. } else {
  354. thisHref = income_href
  355. }
  356. var eq0 = parseFloat(itemIn.value) >= 0
  357. var itemInV = eq0 ? ('+' + itemIn.value) : (itemIn.value)
  358. var itemInC = eq0 ? 'c-red' : '';
  359. incomeDetailDom = incomeDetailDom + '<a class="" my-href="' + thisHref + '">' +
  360. '<p class="font-b">' + itemIn.name + '<span class="mui-pull-right font-b-12 ' + itemInC + '">' + itemInV + '</span></p></a>';
  361. }
  362. var emptyFix = "";
  363. if (!incomeDetailDom && !obj.offlineCoins) {
  364. emptyFix = '<li class="mui-table-view-cell"><a class="font-b-14">没有数据</a></li>'
  365. }
  366. var eq1 = parseFloat(obj.totalIncome) >= 0
  367. var totalIncome = eq1 ? ('+' + obj.totalIncome) : (obj.totalIncome)
  368. var totalIncomeC = eq1 ? 'c-red' : '';
  369. html = '<div class="custom-bottom groupItem">'
  370. + '<div class="bd-hd">'
  371. + '<i class="iconfont icon-purse c-primary iconBack"></i>'
  372. + '<p class="titleInfo font-b"><span class="groupName v-middle">' + obj.groupName + '</span><em class="total-mark">' + obj.equipmentCount + '台</em>' +
  373. '<em tip-btn="好的" tip-title="您的当前分成" title="' + perTip + '" class="tips-event-tap tips mark bg-red border-red ' + classStr + '" >分成' + percentStr + '</em>'
  374. + '</p>'
  375. + '<div class="totalIncome">' + '<span class="font-12 font-b-6">合计</span> <em class="' + totalIncomeC + '">' + totalIncome + '</em></div>'
  376. + '<p class="address">' + obj.address + '</p>'
  377. + '</i></div>'
  378. + '<ul class="mui-table-view bd-bd">'
  379. + '<li class="category-list mui-table-view-cell ' + (incomeDetailDom ? '' : 'mui-hidden') + '">'
  380. + incomeDetailDom
  381. + '</li>'
  382. + '<li class="mui-table-view-cell ' + (obj.offlineCoins ? '' : 'mui-hidden') + '">'
  383. + '<a class="font-b-14" my-href="' + offline_href + '">'
  384. // 线下投币显示次
  385. + '线下投币<span class="mui-pull-right font-b-6" >' + obj.offlineCoins + '次</span>'
  386. + '</a>'
  387. + '</li>'
  388. + emptyFix
  389. + '</ul>'
  390. + '</div>';
  391. if (obj.isManager || obj.isManager == null) {
  392. html = $(html).attr("role", "manage");
  393. } else {
  394. html = $(html).attr("role", "limit-user");
  395. }
  396. } else if (category == "consume") {
  397. html = $($("#modalConsume").html());
  398. var consumptionListDom = '';
  399. for (var index in obj.consumptionList) {
  400. var itemIn = obj.consumptionList[index];
  401. consumptionListDom = consumptionListDom + '<p class="font-b">' + itemIn.name + '<span class="mui-pull-right font-b font-b-12">' + itemIn.value + itemIn.unit + '</span></p>';
  402. }
  403. if (!consumptionListDom) {
  404. consumptionListDom = '<p class="font-b">没有数据</p>'
  405. }
  406. html.find(".consume-list").html(consumptionListDom);
  407. html.find(".groupName").html(obj.groupName);
  408. html.find(".address").html(obj.address);
  409. html.find(".total-mark").html(obj.equipmentCount + '台');
  410. html.find("a.consume-list").attr("my-href", income_href + "&category=consume");
  411. }
  412. $(".list").append(html);
  413. }
  414. } else {
  415. mui.toast(res.description);
  416. }
  417. if (callback) {
  418. callback();
  419. }
  420. });
  421. }
  422. // 加载echarts 并展示
  423. var chartEntity;
  424. function loadChart() {
  425. var list = allDataList;
  426. var data = [];//内环
  427. var data2 = [];//外环
  428. for (var index in list) {
  429. var obj = list[index];
  430. var detailList = [];
  431. if (category == "income") {
  432. data.push({value: obj.totalIncome, name: obj.groupName});//收入情况一定会有一个总的收入
  433. detailList = obj.incomeList;
  434. } else {
  435. detailList = obj.consumptionList;
  436. }
  437. var totalCusume = 0;
  438. for (var index2 in detailList) {
  439. var item2 = detailList[index2];
  440. // 消费情况只有数据,得把不同的类目加起来,放在饼图上便于展示
  441. totalCusume = totalCusume + parseFloat(item2.value);
  442. data2.push({value: item2.value, name: obj.groupName + "-" + item2.name, shortName: item2.name});
  443. }
  444. if (category !== "income") {
  445. data.push({value: totalCusume, name: obj.groupName});//把消费不同类目的总数加到内环
  446. }
  447. }
  448. var option = {
  449. tooltip: {
  450. trigger: 'item',
  451. formatter: function (params) {
  452. var tipNum = "<span class='c-red'>+" + params.value + " </span>";
  453. if (category == "consume") {
  454. tipNum = "<span class=''>" + params.value + " </span>";
  455. }
  456. var span = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + params.color + ';"></span>';
  457. return span + params.name + ":" + tipNum + "<span style='background: #334455;color: #fff;padding: 0 4px;border-radius: 2px'>占比" + params.percent + "%</span>"
  458. }
  459. },
  460. series: [
  461. {
  462. type: 'pie',
  463. radius: ['0%', '30%'],
  464. label: {
  465. normal: {
  466. position: 'inner'
  467. }
  468. },
  469. labelLine: {
  470. normal: {
  471. show: false
  472. }
  473. },
  474. data: data
  475. },
  476. {
  477. type: 'pie',
  478. radius: ['40%', '55%'],
  479. label: {
  480. normal: {
  481. position: "outside",
  482. formatter: function (params) {
  483. return '{b|' + params.data.shortName + '}\n{hr|}\n ' + params.value + ' {per|' + params.percent + '%} '
  484. },
  485. backgroundColor: '#eee',
  486. borderColor: '#aaa',
  487. borderWidth: .3,
  488. borderRadius: 4,
  489. rich: {
  490. b: {
  491. color: '#999',
  492. lineHeight: 18,
  493. align: 'center'
  494. },
  495. hr: {
  496. borderColor: '#aaa',
  497. width: '100%',
  498. borderWidth: 0.3,
  499. height: 0
  500. },
  501. per: {
  502. lineHeight: 24,
  503. color: '#eee',
  504. backgroundColor: '#334455',
  505. padding: [2, 4],
  506. borderRadius: 2
  507. }
  508. }
  509. }
  510. },
  511. labelLine: {
  512. length2: 5,
  513. },
  514. data: data2
  515. },
  516. ]
  517. };
  518. if (chartEntity) {
  519. } else {
  520. var container = document.getElementById("pieChart");
  521. chartEntity = echarts.init(container, 'macarons');
  522. }
  523. chartEntity.setOption(option);
  524. }
  525. // 点击按钮加载饼图,并展示
  526. function showChart() {
  527. loadChart();
  528. showChartItem();
  529. }
  530. // 展示echarts模块,隐藏列表模块
  531. var showFlag = false;
  532. function showChartItem() {
  533. if (showFlag) {
  534. $(".income-panel").removeClass("chart-active");
  535. } else {
  536. $(".income-panel").addClass("chart-active");
  537. }
  538. showFlag = !showFlag;
  539. }
  540. // 刷新饼图,如果饼图有显示则渲染,不显示则不渲染
  541. function refreshChart() {
  542. if (showFlag) {
  543. loadChart();
  544. }
  545. }
  546. // 切换统计类目
  547. function toggleCategory() {
  548. var myMask = new Mask("正在获取数据...");
  549. myMask.show();
  550. var toggleCategoryDom = $("#toggleCategory");
  551. if (toggleCategoryDom.hasClass("disabled")) {
  552. return
  553. }
  554. toggleCategoryDom.addClass("disabled");
  555. if (category == "income") {
  556. category = "consume";
  557. $("#categoryName").text("消费");
  558. toggleCategoryDom.addClass("rotate");
  559. $("#pullrefresh").animate({left: "-100%"}, function () {
  560. $("#pullrefresh").css({left: "0"});
  561. refreshData()
  562. });
  563. } else {
  564. category = "income";
  565. $("#categoryName").text("收益");
  566. toggleCategoryDom.removeClass("rotate");
  567. $("#pullrefresh").animate({left: "100%"}, function () {
  568. $("#pullrefresh").css({left: "0"});
  569. refreshData()
  570. });
  571. }
  572. function refreshData() {
  573. search(function () {
  574. toggleCategoryDom.removeClass("disabled");
  575. myMask.remove();
  576. });
  577. }
  578. }
  579. if (mui.os.plus) {
  580. mui.plusReady(function () {
  581. setTimeout(function () {
  582. mui('#pullrefresh').pullRefresh().pullupLoading();
  583. }, 1000);
  584. });
  585. } else {
  586. mui.ready(function () {
  587. mui('#pullrefresh').pullRefresh().pullupLoading();
  588. });
  589. }
  590. //关键字搜索
  591. document.onkeydown = function (ev) {
  592. if (ev.keyCode == 13) {
  593. ev.preventDefault();
  594. search();
  595. }
  596. };
  597. $("body").on("tap", ".bd-hd", function () {
  598. var pdom = $(this).parent();
  599. if (pdom.hasClass("active")) {
  600. pdom.removeClass("active");
  601. } else {
  602. pdom.addClass("active");
  603. }
  604. });
  605. //因为该a标签已经用在mui的特性中,必须重新加上mui的tap事件,点击a标签才有反应
  606. //底部菜单事件
  607. mui('body').on('tap', '.mui-tab-item[data-href]', function () {
  608. replacePage($(this).attr("data-href"));
  609. });
  610. //分组内部链接点击事件
  611. mui('body').on('tap', '[my-href]', function () {
  612. history.replaceState(null, null, "income-location.html?orRecord=true&t=" + new Date().getTime());//再次返回该页面会带上orRecord,带上随机数,避免网页本身缓存!!!
  613. var url = $(this).attr('my-href');
  614. if (url.indexOf("income-list") > -1) {
  615. var halfYear = moment().add(-6, 'month').startOf("month").format("YYYY-MM-DD");
  616. console.log(startTime, halfYear)
  617. if (startTime && moment(startTime).isBefore(halfYear)) {
  618. mui.toast('系统目前仅支持查询最近半年的订单明细数据(当前可查询' + halfYear + '起的数据)');
  619. } else {
  620. goPage(url);
  621. }
  622. } else {
  623. goPage(url);
  624. }
  625. });
  626. </script>
  627. </body>
  628. </html>