income-details.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  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. </style>
  21. </head>
  22. <body>
  23. <div class="mui-table-view">
  24. <div class="mui-row">
  25. <div class="mui-col-xs-7 mui-col-sm-7">
  26. <span class="font-b-14-6 filter-blank" id="time"></span>
  27. </div>
  28. <div class="mui-col-xs-5 mui-col-sm-5 mui-text-right">
  29. <div class="filter-btn" id="filterBtn1"><span>合计</span><i class="iconfont icon-triangle-up"></i></div>
  30. <div class="filter-btn" id="filterBtn2"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>
  31. </div>
  32. </div>
  33. </div>
  34. <h5 class="mui-content-padded padding-l-r-5">
  35. <span id="address">地址:</span>
  36. </h5>
  37. <div class="filter-panel " style="display: none" id="filterPanel1">
  38. <div class="input-group-vertical mui-table-view clear-b-border ">
  39. <ul class="mui-table-view clear-after">
  40. <li class="mui-table-view-cell totalList">
  41. </li>
  42. </ul>
  43. <div class="mui-input-row filter-panel-btn flexbox">
  44. <span class="cancel-btn flex">关闭</span>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="filter-panel datepickerSelecter" style="display: none" id="filterPanel2">
  49. <div class="input-group-vertical mui-table-view clear-b-border datepicker">
  50. <div class="mui-button-row">
  51. <button class="mui-btn mui-btn-outlined" range="1">今天</button>
  52. <button class="mui-btn mui-btn-outlined" range="7">近7天</button>
  53. <button class="mui-btn mui-btn-outlined" range="15">近15天</button>
  54. <button class="mui-btn mui-btn-outlined" range="30">近30天</button>
  55. </div>
  56. <div class="or-border-fir mui-input-row input-clear or-order-status select-date" id="start-date">
  57. <label class="or-label-text">开始日期</label>
  58. <span class="mui-icon mui-icon-arrowright"></span>
  59. <span class="or-order-status-font selected-text" id="beginDate"></span>
  60. </div>
  61. <div class="mui-input-row input-clear or-order-status select-date" id="end-date">
  62. <label class="or-label-text">结束日期</label>
  63. <span class="mui-icon mui-icon-arrowright"></span>
  64. <span class="or-order-status-font selected-text" id="endDate"></span>
  65. </div>
  66. <div class="mui-input-row filter-panel-btn flexbox">
  67. <span class="cancel-btn flex">取消</span>
  68. <span class="ok-btn flex">确定</span>
  69. </div>
  70. </div>
  71. </div>
  72. <div id="pullrefresh" class="mui-content mui-scroll-wrapper " style="margin-top: 80px;padding-top: 1px">
  73. <div class="mui-scroll">
  74. <ul class="mui-table-view table-view list"></ul>
  75. </div>
  76. </div>
  77. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script>
  78. <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
  79. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  80. <script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script>
  81. <script src="/components/custom/js/common.js"></script>
  82. <script src="js/xyf.common.js"></script>
  83. <script>
  84. var startTime = getQueryString("startTime");
  85. var endTime = getQueryString("endTime");
  86. var groupId = getQueryString("groupId");
  87. var category = getQueryString("category") || "income";//income 或consume
  88. setTimeTitle();
  89. FilterComponent([
  90. {
  91. trigger: "#filterBtn1",
  92. panel: "#filterPanel1"
  93. },
  94. {
  95. trigger: "#filterBtn2",
  96. panel: "#filterPanel2",
  97. ok: function () {
  98. /*合法性验证*/
  99. if (startTime > endTime) {
  100. mui.alert('开始日期不能大于结束日期', '温馨提示', '确定');
  101. return false;
  102. }
  103. setTimeTitle();
  104. search();
  105. }
  106. }
  107. ]);
  108. function setTimeTitle() {
  109. if (startTime == endTime) {
  110. $("#time").html(startTime + "");
  111. } else {
  112. $("#time").html(startTime + "至" + endTime + "");
  113. }
  114. $('#beginDate').text(startTime);
  115. $('#endDate').text(endTime);
  116. }
  117. // 搜索查询
  118. function search() {
  119. pageIndex = 0;
  120. $(".list").empty(); // 清空数据
  121. mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载
  122. pullupRefresh();
  123. }
  124. //日期筛选条件
  125. $(function () {
  126. //可选日期范围
  127. var pickerBegin = moment().add(-2, "year").toDate();//控件可选最小时间
  128. var pickerEnd = new Date();//控件可选最大时间
  129. var options = {
  130. type: "date",
  131. beginDate: pickerBegin,
  132. endDate: pickerEnd
  133. };
  134. var startTimeBtn = $('#start-date');
  135. var startTimePicker = new mui.DtPicker(options);
  136. startTimePicker.setSelectedValue(startTime);//默认选中开始时间
  137. startTimeBtn[0].addEventListener('tap', function () {
  138. startTimePicker.show(function (time) {
  139. startTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  140. $('#beginDate').text(startTime);
  141. });
  142. }, false);
  143. var endTimeBtn = $('#end-date');
  144. var endTimePicker = new mui.DtPicker(options);
  145. endTimePicker.setSelectedValue(endTime);//默认选中结束时间
  146. endTimeBtn[0].addEventListener('tap', function () {
  147. endTimePicker.show(function (time) {
  148. endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  149. $('#endDate').text(endTime);
  150. });
  151. }, false);
  152. //快速日期范围选择
  153. $('.datepicker .mui-button-row button').tap(function () {
  154. $(this).addClass('active').siblings().removeClass('active');
  155. var range = $(this).attr('range');
  156. setDateTime(range);//快速日期选择
  157. startTimePicker.setSelectedValue(startTime);
  158. endTimePicker.setSelectedValue(endTime);
  159. });
  160. function setDateTime(range) {
  161. endTime = moment().format("YYYY-MM-DD");
  162. if (range && range > 0) {
  163. startTime = moment().add(-(range - 1), "day").format("YYYY-MM-DD");
  164. }
  165. $('#beginDate').text(startTime);
  166. $('#endDate').text(endTime);
  167. }
  168. });
  169. function initTotal() {
  170. //获取总收益
  171. var url = "/dealer/groupIncomeByGroupId";
  172. if (category == "consume") {
  173. url = "/dealer/groupConsumptionByGroupId";
  174. }
  175. var data = {
  176. "startTime": startTime,
  177. "endTime": endTime,
  178. "groupId": groupId
  179. };
  180. sendRequest(url, "GET", data, function (res) {
  181. var payload = res.payload
  182. if (res.result == 1) {
  183. $("#address").html("地址:<span class='font-b'>" + payload.groupName + "</span>");
  184. // 总的收益,或消费
  185. var itemTotalDom = '';
  186. if (payload.incomeTotalList) {
  187. for (var index in payload.incomeTotalList) {
  188. var itemIn = payload.incomeTotalList[index];
  189. itemTotalDom = itemTotalDom + '<p class="font-b-8"><i class="iconfont icon-purse font-b-14 c-primary"></i> ' + itemIn.name + '<span class=" mui-pull-right c-red">+' + itemIn.value + '</span></p>';
  190. }
  191. }
  192. if (payload.consumeTotalList) {
  193. for (var index in payload.consumeTotalList) {
  194. var itemIn = payload.consumeTotalList[index];
  195. itemTotalDom = itemTotalDom + '<p class="font-b-8"><i class="iconfont icon-goods font-b-14 c-orange"></i> ' + itemIn.name + '<span class=" mui-pull-right ">' + itemIn.value + itemIn.unit + '</span></p>';
  196. }
  197. }
  198. $(".totalList").html(itemTotalDom);
  199. } else {
  200. mui.toast(res.description);
  201. }
  202. });
  203. }
  204. initTotal();
  205. mui.init({
  206. pullRefresh: {
  207. container: '#pullrefresh',
  208. up: {
  209. contentrefresh: '正在加载...',
  210. contentnomore: '没有更多数据了...',
  211. callback: pullupRefresh
  212. }
  213. }
  214. });
  215. /* 上拉加载具体业务实现*/
  216. var pageIndex = 0;
  217. var total = 0;
  218. function pullupRefresh() {
  219. pageIndex++;
  220. var url = "/dealer/groupEquipmentIncomeByGroupId";
  221. if (category == "consume") {
  222. url = "/dealer/groupEquipmentConsumptionByGroupId";
  223. }
  224. var data = {
  225. "pageIndex": pageIndex,
  226. "pageSize": 10,
  227. "groupId": groupId,
  228. "startTime": startTime,
  229. "endTime": endTime
  230. };
  231. sendRequest(url, "GET", data, function (res) {
  232. var payload = res.para;
  233. if (res.result == 1) {
  234. if (pageIndex == 1) {
  235. total = payload.total;
  236. }
  237. var length = payload.dataList.length;
  238. mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * 10 >= total));
  239. var table = document.body.querySelector('.table-view');
  240. for (var i = 0; i < length; i++) {
  241. var obj = payload.dataList[i];
  242. var payIncome_href = 'income-list.html?groupId=' + groupId + '&logicalCode=' + obj.logicalCode + '&typeShow=' + category + '&startTime=' + startTime + "&endTime=" + endTime;
  243. var isTransferClass = '';
  244. if (obj.isTransfer == "Y") {
  245. isTransferClass = '<em class="transfer">已转移</em>';
  246. }
  247. if (!obj.groupId) {
  248. isTransferClass = '<em class="unbind">已解绑</em>';
  249. }
  250. var li = document.createElement('li');
  251. li.className = 'mui-table-view-cell ';
  252. var itemDetailDom = '';
  253. if (obj.incomeList) {
  254. for (var index in obj.incomeList) {
  255. var itemIn = obj.incomeList[index];
  256. itemDetailDom = itemDetailDom + '<p class="mui-col-xs-6 margin-t-5 padding-r-10">' + itemIn.name +
  257. ':<span class="c-red ">+' + itemIn.value + '</span>' +
  258. '</p>';
  259. }
  260. }
  261. if (obj.consumptionList) {
  262. for (var index in obj.consumptionList) {
  263. var itemIn = obj.consumptionList[index];
  264. itemDetailDom = itemDetailDom + '<p class="mui-col-xs-6 margin-t-5 padding-r-10">' + itemIn.name +
  265. ':<span class="font-b-8">' + itemIn.value + itemIn.unit + '</span>' +
  266. '</p>';
  267. }
  268. }
  269. if (!itemDetailDom) {
  270. itemDetailDom = '<p class=" margin-t-5 padding-r-10">没有数据</p>'
  271. }
  272. var otherTotalDom = "";
  273. // 某些设备需要展示刷卡 投币等
  274. if (category == "income" && obj.realtimeIncomeAvailable) {
  275. otherTotalDom = otherTotalDom + '<p class="mui-col-xs-12 margin-t-5 padding-t-15 getRealtimeIncomeBtnP">' +
  276. '<button type="button" class="mui-btn mui-btn-primary mui-btn-outlined mui-pull-right getRealtimeIncomeBtn" logicalCode="' + obj.logicalCode + '">获取设备实时收益</button>' +
  277. '</p>';
  278. }
  279. li.innerHTML = '<a href="javascript:void(0)" my-href="' + payIncome_href + '" class="mui-navigate-right">' +
  280. '<div class="mui-row">' +
  281. '<p class="mui-col-xs-6 mui-col-sm-6 mui-text-left font-b-16-8">' +
  282. '<i class="v-middle c-primary iconfont ' + window.getDevIconName(obj.type) + '"></i> ' +
  283. '<span class="v-middle">' + obj.type + ' ' + obj.logicalCode + '</span>' + isTransferClass +
  284. '</p>' +
  285. '</div>' +
  286. '<div class="mui-row margin-t-5">' +
  287. itemDetailDom +
  288. otherTotalDom +
  289. '</div>' +
  290. '</a>';
  291. table.appendChild(li);
  292. }
  293. } else {
  294. mui.toast(res.description);
  295. }
  296. });
  297. }
  298. $("body").on("tap", ".getRealtimeIncomeBtn", function (evt) {
  299. evt.stopPropagation();
  300. var logicalCode = $(this).attr("logicalCode");
  301. var dom = $(this).closest(".getRealtimeIncomeBtnP");
  302. sendRequest({
  303. url: "/dealer/getRealtimeIncomeByDev",
  304. type: "GET",
  305. data: {logicalCode: logicalCode},
  306. mask: "正在加载数据...",
  307. success: function (res) {
  308. var payload = res.payload;
  309. if (payload.realtimeIncome && payload.realtimeIncome.length > 0) {
  310. var list = payload.realtimeIncome;
  311. var otherTotalDom = "";
  312. for (var index in list) {
  313. var item = list[index];
  314. otherTotalDom = otherTotalDom + '<p class="mui-col-xs-6 margin-t-5 padding-t-10 ">' + item.name +
  315. ':<span class=" ">' + item.value + '</span>' +
  316. '</p>';
  317. }
  318. dom.replaceWith(otherTotalDom);
  319. }
  320. }
  321. });
  322. }).on("tap", "[my-href]", function (evt) {
  323. var url = $(this).attr('my-href');
  324. if (url.indexOf("income-list") > -1) {
  325. var halfYear = moment().add(-6, 'month').startOf("month").format("YYYY-MM-DD");
  326. console.log(startTime, halfYear)
  327. if (startTime && moment(startTime).isBefore(halfYear)) {
  328. mui.toast('系统目前仅支持查询最近半年的订单明细数据(当前可查询' + halfYear + '起的数据)');
  329. } else {
  330. goPage(url);
  331. }
  332. } else {
  333. goPage(url);
  334. }
  335. });
  336. if (mui.os.plus) {
  337. mui.plusReady(function () {
  338. setTimeout(function () {
  339. mui('#pullrefresh').pullRefresh().pullupLoading();
  340. }, 1000);
  341. });
  342. } else {
  343. mui.ready(function () {
  344. mui('#pullrefresh').pullRefresh().pullupLoading();
  345. });
  346. }
  347. mui('body').on('tap', 'a', function () {
  348. var href = this.getAttribute('href').trim();
  349. if (href != '') {
  350. goPage(href);
  351. }
  352. });
  353. </script>
  354. </body>
  355. </html>