siminfo.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  7. <link rel="stylesheet" href="../css/mescroll.min.css">
  8. <link rel="stylesheet" href="../css/mui.min.css" />
  9. <link rel="stylesheet" href="../css/common.css" />
  10. <!--<link rel="stylesheet" type="text/css" href="../css/equipList.css"/>-->
  11. <style type="text/css">
  12. .mescroll {
  13. position: fixed;
  14. top: 55px;
  15. bottom: 0;
  16. height: auto;
  17. /*如设置bottom:50px,则需height:auto才能生效*/
  18. }
  19. ul {
  20. padding: 0;
  21. margin: 0;
  22. /*padding-top: 15px;*/
  23. }
  24. #dataList>li {
  25. background: #fff;
  26. margin-bottom: 15px;
  27. padding: 0 10px;
  28. }
  29. .item .title {
  30. line-height: 44px;
  31. position: relative;
  32. border-bottom: 1px dashed #ccc;
  33. }
  34. .item .title span {
  35. position: absolute;
  36. right: 10px;
  37. line-height: 26px;
  38. top: 11px;
  39. border-radius: 10px;
  40. padding: 0px 7px;
  41. font-size: 12px;
  42. }
  43. .grayState {
  44. background: #e8e8e8;
  45. color: #858585;
  46. }
  47. .greenState {
  48. background: #c6ffb2;
  49. color: #2cae00;
  50. }
  51. .redState {
  52. background: #ffb2b2;
  53. color: #ae0000;
  54. }
  55. .blueState {
  56. background: #b2fcff;
  57. color: #00aead;
  58. }
  59. .brief {
  60. line-height: 33px;
  61. }
  62. .useFlow {
  63. color: #00a5e2;
  64. }
  65. .useFlow i {
  66. font-style: inherit;
  67. font-size: 28px;
  68. }
  69. .progressbar {
  70. position: relative;
  71. display: block;
  72. overflow: hidden;
  73. width: 100%;
  74. height: 2px;
  75. -webkit-transform-origin: center top;
  76. transform-origin: center top;
  77. vertical-align: middle;
  78. border-radius: 2px;
  79. background: #b6b6b6;
  80. -webkit-transform-style: preserve-3d;
  81. transform-style: preserve-3d;
  82. }
  83. .progressbar span {
  84. position: absolute;
  85. top: 0;
  86. left: 0%;
  87. width: 100%;
  88. height: 100%;
  89. -webkit-transition: 150ms;
  90. transition: 150ms;
  91. -webkit-transform: translate3d(-100%, 0, 0);
  92. transform: translate3d(-100%, 0, 0);
  93. background: #007aff;
  94. }
  95. </style>
  96. </head>
  97. <body>
  98. <header class="mui-bar mui-bar-nav">
  99. <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
  100. <h1 class="mui-title">SIM卡信息</h1>
  101. </header>
  102. <div class="mui-content">
  103. <!--<div class="searchBox">
  104. <div class="searchControl">
  105. <div class="mui-input-row mui-search">
  106. <input type="search" id="searchInp" class="mui-input-clear" placeholder="请输入设备ID">
  107. </div>
  108. <button id="searchBtn" class="searchBtn">搜索</button>
  109. </div>
  110. </div>-->
  111. <div id="scrollPlace" class="mescroll">
  112. <!--id可以改,而"mescroll"的class不能删-->
  113. <ul id="dataList">
  114. <!--<li class="item">
  115. <div class="title">设备ID:868575028810101 <span class="state greenState">使用中</span></div>
  116. <div class="brief">
  117. <div>SIM卡iccid:89860411101892464191</div>
  118. <div class="">
  119. <div class="">套餐<span>(Mb)</span></div>
  120. <div id="" class="progressbar">
  121. <span></span>
  122. </div>
  123. <table border="0" cellspacing="0" cellpadding="0" style="width: 100%;">
  124. <tr>
  125. <th style="width: 60%;">流量剩余</th>
  126. <th>流量已用</th>
  127. </tr>
  128. <tr>
  129. <td><span class="useFlow"><i>6.04</i>MB</span>/2.03GB</td>
  130. <td>1.1GB</td>
  131. </tr>
  132. </table>
  133. </div>
  134. <div>到期时间:2020-2-29 00:00:00</div>
  135. </div>
  136. </li>-->
  137. </ul>
  138. </div>
  139. <script src="../js/jquery-2.1.0.js"></script>
  140. <script src="../js/mescroll.min.js" charset="utf-8"></script>
  141. <script src="../js/mui.min.js"></script>
  142. <script type="text/javascript">
  143. mui.init()
  144. //创建MeScroll对象,内部已默认开启下拉刷新,自动执行up.callback,重置列表数据;
  145. var mescroll = new MeScroll("scrollPlace", {
  146. up: {
  147. callback: getListData, //上拉回调,此处可简写; 相当于 callback: function (page) { getListData(page); }
  148. isBounce: false, //此处禁止ios回弹,解析(务必认真阅读,特别是最后一点): http://www.mescroll.com/qa.html#q10
  149. clearEmptyId: "dataList", //1.下拉刷新时会自动先清空此列表,再加入数据; 2.无任何数据时会在此列表自动提示空
  150. toTop: { //配置回到顶部按钮
  151. src: "../images/totop.png", //默认滚动到1000px显示,可配置offset修改
  152. offset: 700
  153. },
  154. empty: {
  155. //列表第一页无任何数据时,显示的空提示布局; 需配置warpId才显示
  156. warpId: "dataList", //父布局的id (1.3.5版本支持传入dom元素)
  157. icon: "../images/listNull.png", //图标,默认null,支持网络图
  158. tip: "暂无相关数据~" //提示
  159. },
  160. htmlNodata: '<p class="upwarp-nodata">-- 没有更多内容了 --</p>',
  161. noMoreSize: 5, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;
  162. lazyLoad: {
  163. use: true // 是否开启懒加载,默认false
  164. }
  165. }
  166. });
  167. /*联网加载列表数据 page = {num:1, size:10}; num:当前页 从1开始, size:每页数据条数 */
  168. function getListData(page) {
  169. //联网加载数据
  170. getListDataFromNet(page.num, page.size, function(curPageData, totalSize) {
  171. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  172. //mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
  173. //方法二(推荐): 后台接口有返回列表的总数据量 totalSize
  174. mescroll.endBySize(curPageData.length, totalSize); //必传参数(当前页的数据个数, 总数据量)
  175. //设置列表数据,因为配置了emptyClearId,第一页会清空dataList的数据,所以setListData应该写在最后;
  176. setListData(curPageData);
  177. }, function() {
  178. //联网失败的回调,隐藏下拉刷新和上拉加载的状态;
  179. mescroll.endErr();
  180. mui.toast('数据请求失败');
  181. });
  182. }
  183. /*设置列表数据*/
  184. function setListData(curPageData) {
  185. var html = '';
  186. var dat = curPageData;
  187. for(var i = 0; i < dat.length; i++) {
  188. var statusTxt, status;
  189. if(dat[i].account_status == "0") {
  190. statusTxt = "未知";
  191. status = 'grayState';
  192. } else if(dat[i].account_status == "1") {
  193. statusTxt = "测试期";
  194. status = 'blueState';
  195. } else if(dat[i].account_status == "2") {
  196. statusTxt = "沉默期";
  197. status = 'blueState';
  198. } else if(dat[i].account_status == "3") {
  199. statusTxt = "使用中";
  200. status = 'greenState';
  201. } else if(dat[i].account_status == "4") {
  202. statusTxt = "停机";
  203. status = 'blueState';
  204. status = 'redState';
  205. } else if(dat[i].account_status == "5") {
  206. statusTxt = "停机保号";
  207. status = 'redState';
  208. } else if(dat[i].account_status == "6") {
  209. statusTxt = "预销号";
  210. status = 'redState';
  211. } else if(dat[i].account_status == "7") {
  212. statusTxt = "销号";
  213. status = 'grayState';
  214. }
  215. if(dat[i].iccid) {
  216. var plan = dat[i].data_plan;
  217. var usage = dat[i].data_usage.toFixed(2);
  218. var balance = dat[i].data_balance.toFixed(2);
  219. var timestamp4 = new Date(dat[i].expiry_date * 1000); //直接用 new Date(时间戳) 格式转化获得当前时间
  220. var time = timestamp4.toLocaleDateString().replace(/\//g, "-") + " " + timestamp4.toTimeString().substr(0, 8);
  221. var proportionVal = (usage / plan * 100).toFixed(0);
  222. // console.log(usage)
  223. // console.log(plan)
  224. // console.log(proportionVal)
  225. } else {
  226. var plan = '--';
  227. var usage = '--';
  228. var balance = '--';
  229. var time = '--';
  230. var proportionVal = 0;
  231. }
  232. html += '<li class="item"><div class="title">设备ID:' + dat[i].equip_id + ' <span class="state ' + status + '">' + statusTxt + '</span></div>' +
  233. '<div class="brief"><div>SIM卡iccid:' + dat[i].iccid + '</div><div class="">' +
  234. '<div class="">套餐<span>(Mb)</span></div><div id="" class="progressbar">' +
  235. '<span>' + proportionVal + '</span></div><table border="0" cellspacing="0" cellpadding="0" style="width: 100%;">' +
  236. '<tr><th style="width: 60%;">流量剩余</th><th>流量已用</th></tr><tr>' +
  237. '<td><span class="useFlow"><i>' + balance + '</i>MB</span>/' + plan + 'MB</td><td>' + usage + 'MB</td>' +
  238. '</tr></table></div><div>到期时间:' + time + '</div></div></li>';
  239. }
  240. $('#dataList').append(html);
  241. $('.progressbar span').each(function(index, value) {
  242. // console.log(value);
  243. var val = $(value).html() + '%';
  244. $(value).css('left', val);
  245. })
  246. }
  247. /*联网加载列表数据*/
  248. function getListDataFromNet(pageNum, pageSize, successCallback, errorCallback) {
  249. mui.ajax({
  250. type: 'POST',
  251. url: 'http://192.168.1.11:8000/app_siminfo',
  252. timeout: 100000, //超时时间设置,单位毫秒
  253. data: {
  254. 'page': pageNum,
  255. 'req': 'reqdat'
  256. },
  257. dataType: 'json',
  258. success: function(data) {
  259. successCallback(data.dat, data.nums);
  260. },
  261. error: function() {
  262. errorCallback();
  263. }
  264. });
  265. }
  266. var markingid = '' //用于记录点击的当前id 以便刷新
  267. window.addEventListener('refresh', function(event) { //如果详情页面更改数据 才页面刷新
  268. $('#dataList li').each(function() {
  269. if(markingid == $(this).data('id')) {
  270. $(this).find('.equipName').html(event.detail.markingEquipName);
  271. }
  272. })
  273. })
  274. //搜索操作
  275. $("#searchInp").on('keypress', function(e) {
  276. var keycode = e.keyCode;
  277. if(keycode == '13') {
  278. e.preventDefault();
  279. //请求搜索接口
  280. if(mui('#searchInp')[0].value) {
  281. getListData({
  282. num: 1,
  283. size: 10
  284. })
  285. } else {
  286. mui.toast("请输入设备ID");
  287. }
  288. }
  289. })
  290. // document.getElementById('searchBtn').addEventListener('tap', function() {
  291. // if(mui('#searchInp')[0].value) {
  292. // getListData({
  293. // num: 1,
  294. // size: 10
  295. // })
  296. // } else {
  297. // mui.toast("请输入设备ID");
  298. // }
  299. // })
  300. </script>
  301. </body>
  302. </html>