agent-income-list.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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="telphone=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="/components/lib/mui.min.css"/>
  16. <link rel="stylesheet" href="../components/lib/mui.picker.min.css"/>
  17. <link rel="stylesheet" href="/components/custom/css/common.css"/>
  18. <link rel="stylesheet" href="/app/css/xyf.common.min.css">
  19. <style>
  20. #time {
  21. line-height: 44px;
  22. padding-left: 15px;
  23. }
  24. </style>
  25. </head>
  26. <body class="income-trend">
  27. <div class="mui-table-view mui-reset">
  28. <div class="mui-row">
  29. <div class="mui-col-xs-9 mui-col-sm-9">
  30. <span class="font-b-14-6" id="time"></span>
  31. </div>
  32. <div class="mui-col-xs-3 mui-col-sm-3 mui-text-right">
  33. <div class="filter-btn"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>
  34. </div>
  35. </div>
  36. </div>
  37. <div id="pullrefresh" class="mui-content mui-scroll-wrapper" style="margin-top: 44px">
  38. <div class="mui-scroll">
  39. <div class="mui-content ">
  40. <div class="mui-control-content mui-active">
  41. <div class="index-hd">
  42. <i class="iconfont icon-purse purse-logo-back"></i>
  43. <a href="javascript:void(0)" class="hd-tab">
  44. <em>累计收益(元)</em>
  45. <span id="totalIncome">0.00</span>
  46. </a>
  47. <div class="mui-table hd-cell">
  48. <div class="mui-table-cell mui-ellipsis">
  49. <span>昨日收益(元)</span><em id="yesterdayIncome">+0.00</em>
  50. </div>
  51. <div class="mui-table-cell mui-ellipsis">
  52. <span>本月收益(元)</span><em id="currentMonthIncome">+0.00</em>
  53. </div>
  54. <div class="mui-table-cell mui-ellipsis">
  55. <span>计数(条)</span><em id="total">0</em>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="group-wrap mui-table-view"></div>
  62. </div>
  63. </div>
  64. <div class="filter-panel datepickerSelecter" style="display: none" id="options">
  65. <div class="input-group-vertical mui-table-view clear-b-border datepicker">
  66. <div class="mui-button-row">
  67. <button class="mui-btn mui-btn-outlined" range="1">今天</button>
  68. <button class="mui-btn mui-btn-outlined" range="7">近7天</button>
  69. <button class="mui-btn mui-btn-outlined" range="15">近15天</button>
  70. <button class="mui-btn mui-btn-outlined" range="30">近30天</button>
  71. </div>
  72. <div class="or-border-fir mui-input-row input-clear or-order-status select-date" id="start-date">
  73. <label class="or-label-text">开始日期</label>
  74. <span class="mui-icon mui-icon-arrowright"></span>
  75. <span class="or-order-status-font selected-text" id="beginDate"></span>
  76. </div>
  77. <div class="or-border-fir mui-input-row input-clear or-order-status select-date" id="end-date">
  78. <label class="or-label-text">结束日期</label>
  79. <span class="mui-icon mui-icon-arrowright"></span>
  80. <span class="or-order-status-font selected-text" id="endDate"></span>
  81. </div>
  82. <div class="or-border-fir mui-input-row input-clear or-order-status" id="type">
  83. <label class="or-label-text">收益类型</label>
  84. <span class="mui-icon mui-icon-arrowright"></span>
  85. <span class="or-order-status-font selected-text">全部</span>
  86. </div>
  87. <div class="or-border-fir mui-input-row input-clear or-order-status" id="showPickerDealer">
  88. <label class="or-label-text">经销商</label>
  89. <span class="mui-icon mui-icon-arrowright"></span>
  90. <span class="or-order-status-font selected-text">全部</span>
  91. </div>
  92. <div class="or-border-fir mui-input-row filter-panel-btn flexbox">
  93. <span class="cancel-btn flex">取消</span>
  94. <span class="ok-btn flex">确定</span>
  95. </div>
  96. </div>
  97. </div>
  98. <script src="/components/lib/jquery.min.js"></script>
  99. <script src="/components/lib/mui.min.js"></script>
  100. <script src="/components/lib/mui.picker.min.js"></script>
  101. <script src="/components/lib/moment.min.js"></script>
  102. <script src="/components/lib/moment.zh.js"></script>
  103. <script src="/components/custom/js/common.js"></script>
  104. <script src="/app/js/xyf.common.js"></script>
  105. <script>
  106. var startTime = moment().format("YYYY-MM-DD");
  107. var endTime = moment().format("YYYY-MM-DD");
  108. var type = getQueryString("type");//收入类型,dealer_card_fee、ad、dealer_withdraw_fee
  109. var typeMap = {
  110. "": "全部",
  111. dealer_card_fee: "流量卡",
  112. dealer_device_fee: "设备营收",
  113. dealer_withdraw_fee: "提现手续费",
  114. };
  115. setTimeTitle();//设置时间标题
  116. var pageIndex = 0;
  117. var total = 0;
  118. var dealerId = null;
  119. FilterComponent({
  120. ok: function () {
  121. /*合法性验证*/
  122. if (startTime > endTime) {
  123. mui.alert('开始日期不能大于结束日期', '温馨提示', '确定');
  124. return false;
  125. }
  126. setTimeTitle();//显示刚刚选择的时间
  127. search();//刷新数据
  128. }
  129. });
  130. function setTimeTitle() {
  131. var typeText = typeMap[type] || "";
  132. if (startTime == endTime) {
  133. $("#time").html(startTime + "的" + typeText + "收益");
  134. } else {
  135. $("#time").html(startTime + "至" + endTime + "的" + typeText + "收益");
  136. }
  137. $('#beginDate').text(startTime);
  138. $('#endDate').text(endTime);
  139. }
  140. $(function () {
  141. if (type != null && !typeMap[type]) {
  142. mui.toast("页面参数错误");
  143. return;
  144. }
  145. //可选日期范围
  146. var pickerBegin = moment().add(-5, "year").toDate();//控件可选最小时间
  147. var pickerEnd = new Date();//控件可选最大时间
  148. var options = {
  149. type: "date",
  150. beginDate: pickerBegin,
  151. endDate: pickerEnd
  152. };
  153. var startTimeBtn = $('#start-date');
  154. var startTimePicker = new mui.DtPicker(options);
  155. startTimePicker.setSelectedValue(startTime);
  156. startTimeBtn[0].addEventListener('tap', function () {
  157. startTimePicker.show(function (time) {
  158. startTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  159. $('#beginDate').text(startTime);
  160. });
  161. }, false);
  162. var endTimeBtn = $('#end-date');
  163. var endTimePicker = new mui.DtPicker(options);
  164. endTimePicker.setSelectedValue(endTime);
  165. endTimeBtn[0].addEventListener('tap', function () {
  166. endTimePicker.show(function (time) {
  167. endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  168. $('#endDate').text(endTime);
  169. });
  170. }, false);
  171. $('.datepicker .mui-button-row button').tap(function () {
  172. $(this).addClass('active').siblings().removeClass('active');
  173. var range = $(this).attr('range');
  174. setDateTime(range);//快速日期选择
  175. startTimePicker.setSelectedValue(startTime);
  176. endTimePicker.setSelectedValue(endTime);
  177. });
  178. function setDateTime(range) {
  179. endTime = moment().format("YYYY-MM-DD");
  180. if (range && range > 0) {
  181. startTime = moment().add(-(range - 1), "day").format("YYYY-MM-DD");
  182. }
  183. $('#beginDate').text(startTime);
  184. $('#endDate').text(endTime);
  185. }
  186. // ....................收益类型,广告收入、提现手续费、流量卡等....................
  187. var typePicker = new mui.PopPicker({
  188. layer: 1
  189. });
  190. var typeMapList = [];
  191. for (var key in typeMap) {
  192. typeMapList.push({value: key, text: typeMap[key]})
  193. }
  194. typePicker.setData(typeMapList);
  195. typePicker.pickers[0].setSelectedValue(type);
  196. $('#type .selected-text').html(typeMap[type]);
  197. $("#type").on("tap", function () {
  198. typePicker.show(function (rs) {
  199. type = rs[0].value;
  200. $('#type .selected-text').html(rs[0].text);
  201. });
  202. return false;
  203. });
  204. //....................经销商选择器.................... todo 经销商太多选择器不好用
  205. var dealerPicker = new mui.PopPicker({
  206. layer: 1
  207. });
  208. sendRequest('/agent/getDealerList', 'GET', {"pageSize": 1000,}, function (res) {
  209. if (res.result == 1) {
  210. var pickerDatas = [];
  211. pickerDatas.push({
  212. value: '',
  213. text: '全部',
  214. });
  215. var datas = res.para.dataList;
  216. for (var i = 0, length = datas.length; i < length; i++) {
  217. var item = {
  218. value: datas[i].id,
  219. text: datas[i].name + " " + datas[i].tel,
  220. };
  221. pickerDatas.push(item);
  222. }
  223. dealerPicker.setData(pickerDatas);
  224. } else {
  225. mui.toast(res.description);
  226. }
  227. });
  228. // 地址选择器
  229. $("#showPickerDealer").on("tap", function () {
  230. dealerPicker.show(function (rs) {
  231. dealerId = rs[0].value;
  232. $('#showPickerDealer .selected-text').html(rs[0].text);
  233. });
  234. return false;
  235. });
  236. //初始化收入概览
  237. incomeStatistics();
  238. });
  239. mui.init({
  240. pullRefresh: {
  241. container: '#pullrefresh',
  242. up: {
  243. contentrefresh: '正在加载...',
  244. contentnomore: '没有更多数据了...',
  245. callback: pullupRefresh
  246. }
  247. }
  248. });
  249. /**
  250. * 收入概览
  251. */
  252. function incomeStatistics() {
  253. var url = "/agent/getIncomeStatistics";
  254. var inData = {
  255. "startTime": startTime,
  256. "endTime": endTime,
  257. "source": type,
  258. "dealerId": dealerId,
  259. };
  260. sendRequest(url, "GET", inData, function (response) {
  261. if (response.result == 1) {
  262. var obj = response.para;
  263. $("#totalIncome").html(parseFloat(obj.totalIncome) + "");
  264. $("#yesterdayIncome").html("+" + parseFloat(obj.yesterdayIncome) + "");
  265. $("#currentMonthIncome").html("+" + parseFloat(obj.currentMonthIncome) + "");
  266. } else {
  267. mui.toast(response.description);
  268. }
  269. });
  270. }
  271. function search() {
  272. pageIndex = 0;
  273. listNowMonth = "";
  274. $('.group-wrap').html("");
  275. mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载
  276. pullupRefresh();//刷新数据
  277. incomeStatistics();//刷新收入概览
  278. }
  279. var listNowMonth = "";//列表当前的月份
  280. function pullupRefresh() {
  281. pageIndex++;
  282. var url = "/agent/getIncomeList";
  283. var data = {
  284. "pageIndex": pageIndex,
  285. "pageSize": 10,
  286. "startTime": startTime,
  287. "endTime": endTime,
  288. "source": type,
  289. "dealerId": dealerId,
  290. };
  291. sendRequest(url, "GET", data, function (res) {
  292. if (res.result == 1) {
  293. if (pageIndex == 1) {
  294. total = res.para.total;
  295. $("#total").text(total);//刷新计数
  296. if (total == 0) {
  297. $("body").append('<div class="nomore"></div>');
  298. }
  299. }
  300. mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * 10 >= total));
  301. var groupWrap = $('.group-wrap');
  302. var length = res.para.dataList.length;
  303. if (length == 0) {
  304. var dataDom = '<li class="month-row"><div class="month-text">' + moment(endTime || new Date()).format("YY年MM月") + '</div>' +
  305. '<div class="month-income">无记录</div></li>';
  306. groupWrap.append(dataDom);
  307. }
  308. for (var i = 0; i < length; i++) {
  309. var item = res.para.dataList[i];
  310. var amount = parseFloat(item.amount);
  311. //新的月份准备放在列表中间
  312. var month = moment(item.time).format("YY年MM月");
  313. if (month == listNowMonth) {
  314. //nothing
  315. } else {
  316. listNowMonth = month;
  317. var monthDom = '<li class="month-row"><div class="month-text">' + listNowMonth + '</div><div class="month-income">收入¥'
  318. + item.monthlyIncome + '</div></li>';
  319. //上一个月底部加线条
  320. groupWrap.find(".mui-table-view-cell:last-child").addClass("last-child");
  321. groupWrap.append(monthDom);
  322. }
  323. //todo 暂时不可看下一级
  324. var dom = '<li class="mui-table-view-cell"><a class="mui-navigate-right-todo" ' +
  325. // 'href="date-income-data.html?dateStr=' + item.dateStr + '&dateText=' + item.dateText + '"' +
  326. 'href="#">' +
  327. '<p><span class="font-b-14">' + item.title + '</span><span class="mui-pull-right font-16"><em class="c-red">+' + (amount) + '</em></span></p>' +
  328. '<p><span class="font-12">' + item.createdTime + '</span></p>' +
  329. '</a></li>';
  330. groupWrap.append(dom);
  331. }
  332. } else {
  333. mui.toast(res.description);
  334. }
  335. });
  336. }
  337. if (mui.os.plus) {
  338. mui.plusReady(function () {
  339. setTimeout(function () {
  340. mui('#pullrefresh').pullRefresh().pullupLoading();
  341. }, 1000);
  342. });
  343. } else {
  344. mui.ready(function () {
  345. mui('#pullrefresh').pullRefresh().pullupLoading();
  346. });
  347. }
  348. </script>
  349. </body>
  350. </html>