deviceCard.html 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  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="/components/custom/css/common.css"/>
  16. <link rel="stylesheet" href="/app/css/xyf.common.min.css">
  17. <style>
  18. </style>
  19. </head>
  20. <body>
  21. <div class="charge-list">
  22. <div class="mui-row ">
  23. <div class="mui-col-sm-12 mui-col-xs-12 mui-input-group mui-reset clear-before">
  24. <form class="mui-row" action="">
  25. <div class="mui-col-xs-9 mui-col-sm-9">
  26. <div class="mui-input-row mui-search">
  27. <input type="search" class="mui-input-clear" id="searchKey" placeholder="设备编号">
  28. </div>
  29. </div>
  30. <div class="mui-col-xs-3 mui-col-sm-3 mui-text-right">
  31. <div class="filter-btn" onclick="showChargeRecord()"><i class="iconfont icon-order c-primary"></i>
  32. 订单
  33. </div>
  34. </div>
  35. </form>
  36. </div>
  37. </div>
  38. <div id="pullrefresh" class="pullrefresh ">
  39. <div class="scrollloadContainer">
  40. <ul class="mui-table-view scrollload-content group-card-list">
  41. </ul>
  42. </div>
  43. </div>
  44. <div class="handle-panel custom-border-top">
  45. <div class="handle-btn detail-btn" onclick="selectDetail()">
  46. <div class="mui-checkbox checkbox-all-wear" style="display: inline-block">
  47. <input class="checkbox-all" value="" id="checkbox-all" type="checkbox">
  48. </div>
  49. <label class="checkbox-all-lb" for="checkbox-all">全选</label>
  50. <div class="checked-detail c-orange">
  51. <i class="checked-num"></i>
  52. ¥<span class="checked-price">0</span>
  53. </div>
  54. </div>
  55. <div class="handle-btn charge-btn" onclick="charge()">续费</div>
  56. </div>
  57. </div>
  58. <script type="text/html" id="model">
  59. <li class="mui-table-view-cell charge-card">
  60. <div class="card-item">
  61. <div class="card-cb mui-checkbox">
  62. <input class="checkbox-btn" value="" type="checkbox">
  63. </div>
  64. <div class="card-detail">
  65. <div class="card-img">
  66. <div class="iconfont devIcon c-blue"></div>
  67. </div>
  68. <div class="card-info">
  69. <p class="title"></p>
  70. <p class="">
  71. <span class="expire-date"></span>
  72. <span class="price-box c-orange">¥<span class="price"></span></span>
  73. </p>
  74. </div>
  75. </div>
  76. </div>
  77. </li>
  78. </script>
  79. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script>
  80. <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
  81. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  82. <script src="https://cdn.washpayer.com/components/lib/Scrollload.js"></script>
  83. <script src="/components/custom/js/common.js"></script>
  84. <script src="/app/js/xyf.common.js"></script>
  85. <script>
  86. var selectList = [];
  87. //事件绑定
  88. $(function () {
  89. //checkbox change触发事件
  90. $("body").on("change", ".checkbox-btn", function () {
  91. //计算所有选中的价格总和
  92. selectList = [];
  93. var sum = 0;
  94. var count = 0;
  95. var checkboxList = $(".checkbox-btn:checked");
  96. for (var index = 0; index < checkboxList.length; index++) {
  97. var checkbox = $(checkboxList[index]);
  98. if (checkbox.is(":checked")) {
  99. var li = checkbox.closest("li");
  100. var price = li.attr("price");
  101. var devNo = li.attr("devNo");
  102. selectList.push(devNo);
  103. sum = sum + parseFloat(price);
  104. count++;
  105. }
  106. }
  107. $(".checked-price").text(sum);
  108. if (count > 0) {
  109. $(".checked-num").show().text(count + "件合计:");
  110. } else {
  111. $(".checked-num").hide();
  112. }
  113. });
  114. $("body").on("click", ".card-detail", function (evt) {
  115. console.log($(this).closest('.card-item'))
  116. var cDom = $(this).closest('.card-item').find('.checkbox-btn')[0]
  117. cDom.checked = !cDom.checked
  118. $(cDom).trigger('change')
  119. });
  120. //全选
  121. $(".checkbox-all").on("change", function () {
  122. if ($(this).is(":checked")) {
  123. $(".checkbox-btn").prop("checked", true);
  124. } else {
  125. $(".checkbox-btn").prop("checked", false);
  126. }
  127. $(".checkbox-btn:first-child").trigger("change");
  128. });
  129. $(window).on("resize", function () {
  130. if (scrollload1) {
  131. scrollload1.unLock();
  132. }
  133. });
  134. });
  135. var dataPageIndex = 0;
  136. var total = 0;
  137. var pageSize = 100;
  138. var searchKey = "";
  139. localStorage.setItem("simOpenId", getQueryString("openId"))
  140. //关键字搜索
  141. document.onkeydown = function (ev) {
  142. if (ev.keyCode == 13) {
  143. ev.preventDefault();
  144. search();
  145. }
  146. };
  147. function search() {
  148. lastGroupId = '';
  149. dataPageIndex = 0;
  150. $('.scrollload-content').html("");
  151. searchKey = $("#searchKey").val();
  152. console.log('searchKey', searchKey)
  153. scrollload1.refreshData();//重载数据
  154. }
  155. //初始化数据加载组件
  156. var scrollload1 = new Scrollload({
  157. container: $(".scrollloadContainer")[0],
  158. window: $("#pullrefresh")[0],
  159. enablePullRefresh: true,
  160. loadMore: function (slEntity) {
  161. if (dataPageIndex > 0 && dataPageIndex * pageSize >= total) {
  162. slEntity.noMoreData();
  163. return;
  164. }
  165. dataPageIndex++;
  166. pullupRefresh(slEntity, dataPageIndex);//加载更多
  167. },
  168. pullRefresh: function (slEntity) {
  169. slEntity.refreshComplete();//设备数据不会有很快的更新频率,不用下拉刷新
  170. }
  171. });
  172. var lastGroupId = '';
  173. var groupPanel = '';
  174. function pullupRefresh(slEntity, pageIndex) {
  175. var url = "/dealer/getDeviceCardList?random=" + Math.random() * 1000;
  176. var data = {"pageIndex": pageIndex, "pageSize": pageSize, searchKey: searchKey};
  177. sendRequest(url, "GET", data, function (res) {
  178. var panel = $('.scrollload-content');
  179. if (res.result == 1) {
  180. total = res.para.total;
  181. if (total === 0) {
  182. $('.scrollload-content').hide();
  183. }
  184. var length = res.para.items.length;
  185. for (var i = 0; i < length; i++) {
  186. var obj = res.para.items[i];
  187. var html = $("#model").html();
  188. html = $(html).attr({"price": obj.price, "devNo": obj.devNo});
  189. var devIcon = getDevIconName(obj.devTypeName);
  190. html.find(".devIcon").addClass(devIcon);
  191. html.find(".title").text(obj.devTypeName + "-" + obj.logicalCode + " " + (obj.channelType || ''));
  192. html.find(".price").text(obj.price);
  193. if (obj.simExpireDate) {
  194. var text = obj.simExpireDate + "到期"
  195. if (moment(obj.simExpireDate).format('YYYY-MM') === moment().format('YYYY-MM')) {
  196. text = text + ' <strong class="c-red ">本月到期</strong>'
  197. }
  198. html.find(".expire-date").html(text);
  199. }
  200. if (lastGroupId !== obj.groupId) {
  201. groupPanel = $("<div class='group-split'><div class='group-name'>" + obj.groupName + "</div></div>");
  202. panel.append(groupPanel)
  203. }
  204. lastGroupId = obj.groupId
  205. groupPanel.append(html);
  206. }
  207. } else {
  208. mui.toast(res.description);
  209. }
  210. if (slEntity) {
  211. slEntity.unLock();//每次滚动到底部都会锁定,所以你在loadMoreFn方法中需要解锁,下次滚动到底部才能继续调用loadMoreFn
  212. }
  213. });
  214. }
  215. //查看选中详情 todo
  216. function selectDetail() {
  217. }
  218. //调用充值
  219. function charge() {
  220. if (selectList.length == 0) {
  221. mui.toast("请选择设备进行续费");
  222. return;
  223. }
  224. sendRequest("/dealer/sim/order/create", "post", {"list": selectList}, function (res) {
  225. if (res.result == 1) {
  226. var url = "payOrderDetail.html?orderNo=" + res.para;
  227. goPage(url);
  228. } else {
  229. mui.toast(res.description);
  230. }
  231. });
  232. }
  233. //展示充值记录:订单
  234. function showChargeRecord() {
  235. var url = "payOrderList.html";
  236. goPage(url);
  237. }
  238. </script>
  239. </body>
  240. </html>