card-record.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. <!DOCTYPE html>
  2. <html class="remModel">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Cache-Control" content="no-cache,no-store,no-siteapp,must-revalidate">
  6. <meta http-equiv="pragma" content="no-cache">
  7. <meta http-equiv="expires" content="0">
  8. <meta name="author" content="">
  9. <meta name="description" content=""/>
  10. <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
  11. <meta name="format-detection" content="telephone=no,email=no">
  12. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
  13. <title>实体卡使用记录</title>
  14. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css">
  15. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>
  16. <link rel="stylesheet" href="../components/lib/weui.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. .record-type-check {
  21. margin-right: 4px;
  22. padding: 6px 8px;
  23. }
  24. </style>
  25. </head>
  26. <body class="card-manage">
  27. <div class="mui-input-group mui-reset">
  28. <form class="mui-row" action="">
  29. <div class="mui-col-xs-9 mui-col-sm-9">
  30. <div class="record-type-row">
  31. <span class="mui-btn mui-btn-outlined record-type-check btn-outlined-check active"
  32. type="consume">消费</span>
  33. <span class="mui-btn mui-btn-outlined record-type-check btn-outlined-check" type="chargeCard">充值</span>
  34. <span class="mui-btn mui-btn-outlined record-type-check btn-outlined-check" type="order">订单</span>
  35. <span class="mui-btn mui-btn-outlined record-type-check btn-outlined-check"
  36. type="cardConsume">卡消费</span>
  37. </div>
  38. <!--<span class="font-b-14-6 filter-blank" id="time"></span>-->
  39. </div>
  40. <div class="mui-col-xs-3 mui-col-sm-3 mui-text-right">
  41. <div class="filter-btn"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>
  42. </div>
  43. </form>
  44. </div>
  45. <div class="filter-panel" style="display: none" id="options">
  46. <div class="input-group-vertical mui-table-view clear-b-border">
  47. <div class="custom-border-fir mui-input-row input-clear select-date" id="start-date">
  48. <label class="or-label-text">开始日期</label>
  49. <span class="mui-icon mui-icon-arrowright"></span>
  50. <span class="l-h-38 font-b-6 selected-text" id="beginDate"></span>
  51. </div>
  52. <div class="custom-border-fir mui-input-row input-clear select-date" id="end-date">
  53. <label class="or-label-text">结束日期</label>
  54. <span class="mui-icon mui-icon-arrowright"></span>
  55. <span class="l-h-38 font-b-6 selected-text" id="endDate"></span>
  56. </div>
  57. <div class="mui-input-row filter-panel-btn flexbox">
  58. <span class="cancel-btn flex">取消</span>
  59. <span class="ok-btn flex">确定</span>
  60. </div>
  61. </div>
  62. </div>
  63. <!--下拉刷新容器-->
  64. <div id="pullrefresh" class="mui-content mui-scroll-wrapper" style="margin-top: 45px;padding-top: 10px">
  65. <div class="mui-scroll">
  66. <!--数据列表-->
  67. <ul class="group-wrap ">
  68. </ul>
  69. </div>
  70. </div>
  71. <script type="text/html" id="modal">
  72. <ul class="mui-table-view card-detail split interval custom-bottom">
  73. <li class="mui-table-view-cell">
  74. <p class=""><span class="font-b time"></span><span class="mui-pull-right amount font-b-8"></span></p>
  75. <div class="expand-info">
  76. <p class=""><i class="iconfont icon-grid c-success"></i> 类型<span
  77. class="mui-pull-right font-b-8 type"></span></p>
  78. <p class="mui-hidden"><i class="iconfont icon-location-b c-lgreen"></i> 场地<span
  79. class="mui-pull-right font-b-8 address"></span></p>
  80. <p class="mui-hidden"><i class="iconfont icon-device c-primary"></i> 设备<span
  81. class="mui-pull-right font-b-8 devInfo"></span></p>
  82. <p class="mui-hidden"><i class="iconfont icon-ceshi c-orange"></i> 状态<span
  83. class="mui-pull-right font-b-8 status"></span></p>
  84. <p class="mui-hidden"><i class="iconfont icon-form c-orange"></i> 订单号<span
  85. class="mui-pull-right font-b-8 orderNo"></span></p>
  86. <p class="mui-hidden"><i class="iconfont icon-bi c-blue"></i> <span class="rechargeTypeLabel">订单类型</span><span
  87. class="mui-pull-right font-b-8 rechargeType"></span></p>
  88. <p class="mui-hidden"><i class="iconfont icon-purse c-success"></i> 余额<span
  89. class="mui-pull-right font-b-8"><em class="balance"></em><i>元</i></span></p>
  90. <p class="mui-hidden"><i class="iconfont icon-purse c-lgreen"></i> 充值前余额<span
  91. class="mui-pull-right font-b-8"><em class="preBalance"></em><i>元</i></span></p>
  92. <p class="mui-hidden"><i class="iconfont icon-bi c-success"></i> 充值<span
  93. class="mui-pull-right font-b-8"><em class="coins"></em><i>元</i></span></p>
  94. <p class="mui-hidden"><i class="iconfont icon-bi c-red"></i> 实际花费<span
  95. class="mui-pull-right font-b-8"><em class="spendMoney"></em><i>元</i></span></p>
  96. <p class="mui-hidden"><i class="iconfont icon-refund c-orange"></i> 退费金额<span
  97. class="mui-pull-right font-b-8 refundedMoney"></span></p>
  98. <p class="mui-hidden"><i class="iconfont icon-purse c-orange"></i> 收费标准<span
  99. class="mui-pull-right font-b-8 feeType"></span></p>
  100. <p class="mui-hidden"><i class="iconfont icon-clock-bold c-primary"></i> 结束时间<span
  101. class="mui-pull-right font-b-8 finishedTime"></span></p>
  102. <p class="mui-hidden"><i class="iconfont icon-clock c-lgreen"></i> 充电时间<span
  103. class="mui-pull-right font-b-8 "><em class="duration"></em><i>分钟</i></span></p>
  104. <p class="mui-hidden"><i class="iconfont icon-clock c-success"></i> 剩余时间<span
  105. class="mui-pull-right font-b-8 "><em class="leftTime"></em><i>分钟</i></span></p>
  106. <p class="mui-hidden"><i class="iconfont icon-clock c-primary"></i> 订购时间<span
  107. class="mui-pull-right font-b-8 needTime"></span></p>
  108. <p class="mui-hidden"><i class="iconfont icon-clock c-primary-new"></i> 实际预定<span
  109. class="mui-pull-right font-b-8 actualNeedTime"></span></p>
  110. <p class="mui-hidden"><i class="iconfont icon-elec c-blue"></i> 需要电量<span
  111. class="mui-pull-right font-b-8 "><em class="needElec"></em><i>度</i></span></p>
  112. <p class="mui-hidden"><i class="iconfont icon-elec c-success"></i> 实际消耗<span
  113. class="mui-pull-right font-b-8 "><em class="elec"></em><i>度</i></span></p>
  114. <p class="mui-hidden"><i class="iconfont icon-success c-primary"></i> 结束方式<span
  115. class="mui-pull-right font-b-8 reason"></span></p>
  116. <p class="mui-hidden"><i class="iconfont icon-power2 c-lgreen"></i> 功率<span
  117. class="mui-pull-right font-b-8 "><em class="power"></em><i>瓦</i></span></p>
  118. <p class="mui-hidden"><i class="iconfont icon-chazuo c-success"></i> 端口<span
  119. class="mui-pull-right font-b-8 chargeIndex"></span></p>
  120. <p class="mui-hidden"><i class="iconfont icon-battery c-primary"></i> 电池类型<span
  121. class="mui-pull-right font-b-8 batteryType"></span></p>
  122. <p class="mui-hidden"><i class="iconfont icon-voltage c-red"></i> 电池电压<span
  123. class="mui-pull-right font-b-8 "><em class="voltage"></em><i>V</i></span></p>
  124. <p class="mui-hidden"><i class="iconfont icon-form c-primary"></i> 备注<span
  125. class="mui-pull-right font-b-8 remarks"></span></p>
  126. <p class="mui-hidden"><i class="iconfont icon-more c-primary"></i> 详情<span
  127. class="mui-pull-right font-b-8 desc"></span></p>
  128. </div>
  129. </li>
  130. </ul>
  131. </script>
  132. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script>
  133. <script src="../components/lib/weui.min.js"></script>
  134. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  135. <script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script>
  136. <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
  137. <script src="/components/custom/js/common.js"></script>
  138. <script src="js/xyf.login.js"></script>
  139. <script src="js/xyf.common.js"></script>
  140. <script>
  141. var cardId = getQueryString('cardId') || "";
  142. var cardNo = getQueryString('cardNo') || "";
  143. var startTime = moment().add("month", -1).format("YYYY-MM-DD");//默认展示最近30天,否则记录太少
  144. var endTime = moment().format("YYYY-MM-DD");
  145. var type = 'consume';
  146. var pageIndex = 0;
  147. var pageSize = 10;
  148. var total = 0;
  149. var typeList = [
  150. {
  151. label: '全部',
  152. value: ''
  153. },
  154. {
  155. label: '充值',
  156. value: 'chargeCard'
  157. },
  158. {
  159. label: '退费',
  160. value: 'refund'
  161. },
  162. {
  163. label: '消费',
  164. value: 'consume'
  165. },
  166. {
  167. label: '订单',
  168. value: 'order'
  169. },
  170. {
  171. label: '派送',
  172. value: 'sendCoin'
  173. }
  174. ];
  175. var typeMap = {
  176. 'chargeCard': '充值',
  177. 'refund': '退费',
  178. 'consume': '消费',
  179. 'sendCoin': '派送',
  180. 'order': '订单',
  181. };
  182. setTimeTitle();
  183. var YuChuan = null
  184. //日期筛选条件
  185. $(function () {
  186. //可选日期范围
  187. var pickerBegin = moment().add(-5, "year").toDate();//控件可选最小时间
  188. var pickerEnd = new Date();//控件可选最大时间
  189. var options = {
  190. type: "date",
  191. beginDate: pickerBegin,
  192. endDate: pickerEnd
  193. };
  194. var startTimeBtn = $('#start-date');
  195. var startTimePicker = new mui.DtPicker(options);
  196. startTimePicker.setSelectedValue(startTime);
  197. startTimeBtn[0].addEventListener('tap', function () {
  198. startTimePicker.show(function (time) {
  199. startTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  200. $('#beginDate').text(startTime);
  201. });
  202. }, false);
  203. var endTimeBtn = $('#end-date');
  204. var endTimePicker = new mui.DtPicker(options);
  205. endTimePicker.setSelectedValue(endTime);
  206. endTimeBtn[0].addEventListener('tap', function () {
  207. endTimePicker.show(function (time) {
  208. endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
  209. $('#endDate').text(endTime);
  210. });
  211. }, false);
  212. $('.datepicker .mui-button-row button').tap(function () {
  213. $(this).addClass('active').siblings().removeClass('active');
  214. var range = $(this).attr('range');
  215. setDateTime(range);//快速日期选择
  216. startTimePicker.setSelectedValue(startTime);
  217. endTimePicker.setSelectedValue(endTime);
  218. });
  219. function setDateTime(range) {
  220. endTime = moment().format("YYYY-MM-DD");
  221. if (range && range > 0) {
  222. startTime = moment().add(-(range - 1), "day").format("YYYY-MM-DD");
  223. }
  224. $('#beginDate').text(startTime);
  225. $('#endDate').text(endTime);
  226. }
  227. });
  228. //新的类型选择器
  229. $('.record-type-check').click(function (e) {
  230. type = $(this).attr('type');
  231. $('.record-type-check').removeClass('active')
  232. $(this).addClass('active');
  233. search()
  234. });
  235. mui.init({
  236. pullRefresh: {
  237. container: '#pullrefresh',
  238. up: {
  239. contentrefresh: '正在加载...',
  240. contentnomore: '没有更多数据了...',
  241. callback: function () {
  242. if (YuChuan === null) {
  243. getFeatureList("dealer", {list: ['YuChuan']}, function (payload) {
  244. YuChuan = payload.YuChuan
  245. if (YuChuan) {
  246. $("[type='consume']").remove()
  247. $("[type='chargeCard']").remove()
  248. $("[type='order']").remove()
  249. $("[type='cardConsume']").addClass('active')
  250. type = "cardConsume"
  251. } else {
  252. $("[type='cardConsume']").remove()
  253. }
  254. pullupRefresh()
  255. });
  256. } else {
  257. pullupRefresh()
  258. }
  259. }
  260. }
  261. }
  262. });
  263. var rechargeTypeMap = {
  264. netpay: "网络支付",
  265. device: "线下充值",
  266. sendCoin: "派币赠送"
  267. }
  268. //刷新数据
  269. function pullupRefresh() {
  270. pageIndex++;
  271. var url = "/dealer/getUserCardRecord";
  272. var data = {
  273. cardId: cardId,
  274. startTime: startTime,
  275. endTime: endTime,
  276. type: type,
  277. pageIndex: pageIndex,
  278. pageSize: pageSize,
  279. };
  280. sendRequest(url, "GET", data, function (res) {
  281. if (res.result == 1) {
  282. if (pageIndex == 1) {
  283. total = res.payload.total;
  284. if (total == 0) {
  285. $('#pullrefresh').addClass('mui-hidden');
  286. $("body").append('<div class="nomore"></div>');
  287. } else {
  288. $('#pullrefresh').removeClass('mui-hidden');
  289. $('.nomore').remove();
  290. }
  291. }
  292. mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * pageSize >= total));
  293. var groupWrap = $('.group-wrap');
  294. var length = res.para.dataList.length;
  295. for (var i = 0; i < length; i++) {
  296. var obj = res.para.dataList[i];
  297. var html = $($("#modal").html());
  298. html.find(".amount").text((obj.via == 'chargeCard' ? '' : (obj.via == 'consume' ? '' : '')) + obj.amount)
  299. html.find(".time").text(obj.createdTime)
  300. obj.status != null && html.find(".status").text(obj.status).parent().removeClass('mui-hidden')
  301. //判断订单状态,展示为不同的的颜色
  302. if (obj.status != null && obj.status.indexOf('成功') > -1) {
  303. html.find(".status").addClass('c-success')
  304. }
  305. if (obj.status != null && (obj.status.indexOf('失败') > -1 || obj.status.indexOf('取消') > -1)) {
  306. html.find(".status").addClass('c-red')
  307. }
  308. obj.address != null && html.find(".address").text(obj.address).parent().removeClass('mui-hidden')
  309. obj.devType != null && html.find(".devInfo").text(obj.devType + "-" + obj.logicalCode).parent().removeClass('mui-hidden')
  310. obj.via != null && html.find(".type").text(typeMap[obj.via]).parent().removeClass('mui-hidden')
  311. //其他附加信息
  312. if (obj.via == 'chargeCard' || obj.via == 'order') {
  313. setValue(obj, html, "coins")
  314. }
  315. if (obj.rechargeType) {
  316. var typeText = '充值方式'
  317. if (type == 'order') {
  318. typeText = '订单类型'
  319. }
  320. if (type == 'chargeCard') {
  321. typeText = '充值方式'
  322. }
  323. html.find(".rechargeType").text(rechargeTypeMap[obj['rechargeType']]).closest('p').removeClass('mui-hidden').find('.rechargeTypeLabel').text(typeText)
  324. }
  325. setValue(obj, html, "orderNo")
  326. setValue(obj, html, "balance")
  327. setValue(obj, html, "preBalance")
  328. setValue(obj, html, "spendMoney")
  329. setValue(obj, html, "finishedTime")
  330. setValue(obj, html, "leftTime")
  331. setValue(obj, html, "needTime")
  332. setValue(obj, html, "actualNeedTime")
  333. setValue(obj, html, "feeType")
  334. setValue(obj, html, "refundedMoney")
  335. setValue(obj, html, "duration")
  336. setValue(obj, html, "reason")
  337. setValue(obj, html, "needElec")
  338. setValue(obj, html, "elec")
  339. setValue(obj, html, "power")
  340. setValue(obj, html, "chargeIndex")
  341. setValue(obj, html, "batteryType")
  342. setValue(obj, html, "voltage")
  343. setValue(obj, html, "remarks")
  344. setValue(obj, html, "desc")
  345. groupWrap.append(html);
  346. }
  347. } else {
  348. mui.toast(res.description);
  349. }
  350. });
  351. }
  352. function setValue(obj, html, key) {
  353. obj[key] != null && html.find("." + key).text(obj[key]).closest('p').removeClass('mui-hidden')
  354. }
  355. //通用选择器
  356. var showTypePicker = function (list, options) {
  357. weui.picker(list, {
  358. className: options.className,
  359. defaultValue: [options.default],
  360. onChange: function (result) {
  361. options.onChange && options.onChange(result);
  362. },
  363. onConfirm: function (result) {
  364. options.onConfirm && options.onConfirm(result);
  365. },
  366. id: options.id
  367. })
  368. };
  369. FilterComponent({
  370. ok: function () {
  371. search()
  372. }
  373. })
  374. function search() {
  375. /*合法性验证*/
  376. if (startTime > endTime) {
  377. mui.alert('开始日期不能大于结束日期', '温馨提示', '确定');
  378. return false;
  379. }
  380. setTimeTitle()
  381. pageIndex = 0;
  382. $(".group-wrap").empty(); // 清空数据
  383. mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载
  384. pullupRefresh();
  385. }
  386. function setTimeTitle() {
  387. if (startTime == endTime) {
  388. $("#time").html("卡号" + cardNo + "," + startTime + "的记录");
  389. } else {
  390. $("#time").html("卡号" + cardNo + "," + startTime + "至" + endTime + "的记录");
  391. }
  392. $('#beginDate').text(startTime);
  393. $('#endDate').text(endTime);
  394. }
  395. $('body').on('tap', '.card-detail', function () {
  396. if ($(this).hasClass("active")) {
  397. $(this).removeClass("active")
  398. } else {
  399. $(this).addClass("active")
  400. }
  401. });
  402. //初始化刷新一次数据
  403. if (mui.os.plus) {
  404. mui.plusReady(function () {
  405. setTimeout(function () {
  406. mui('#pullrefresh').pullRefresh().pullupLoading();
  407. }, 1000);
  408. });
  409. } else {
  410. mui.ready(function () {
  411. mui('#pullrefresh').pullRefresh().pullupLoading();
  412. });
  413. }
  414. </script>
  415. </body>
  416. </html>