siminfo.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. var parentUserName = $('#parentUserName', parent.document).html();
  2. if (!(parentUserName == 'admin' || parentUserName == 'user')) {
  3. $('.rechargeA').remove();
  4. } else {
  5. $('.rechargeA').show();
  6. }
  7. function strToObj(str) {
  8. str = str.replace(/&/g, "','");
  9. str = str.replace(/=/g, "':'");
  10. str = "({'" + str + "'})";
  11. obj = eval(str);
  12. return obj;
  13. }
  14. function Fill_null_Table(table_id) {
  15. var table = document.getElementById(table_id).children[1];
  16. var row = table.insertRow(table.rows.length);
  17. var c1 = row.insertCell(0);
  18. c1.setAttribute('colspan', '16');
  19. c1.setAttribute('class', 'nullData');
  20. c1.innerHTML = "暂无数据";
  21. }
  22. function Fill_Table(table_id, dat) {
  23. var table = document.getElementById(table_id).children[1];
  24. for (var i = 0; i < dat.length; i++) {
  25. var row = table.insertRow(table.rows.length);
  26. var c1 = row.insertCell(0);
  27. c1.innerHTML = '<div class="deviceId">' + dat[i].equip_id + '</div>';
  28. var c2 = row.insertCell(1);
  29. if (dat[i].equip_name == "") c2.innerHTML = "无";
  30. else c2.innerHTML = dat[i].equip_name;
  31. var c3 = row.insertCell(2);
  32. if (dat[i].iccid) {
  33. c3.innerHTML = dat[i].iccid;
  34. } else {
  35. c3.innerHTML = '暂无SIM卡数据';
  36. }
  37. var c4 = row.insertCell(3);
  38. if (dat[i].iccid) {
  39. c4.innerHTML = dat[i].msisdn;
  40. } else {
  41. c4.innerHTML = '--';
  42. }
  43. var c5 = row.insertCell(4);
  44. var status;
  45. if (dat[i].account_status == "0") {
  46. status = "未知";
  47. } else if (dat[i].account_status == "1") {
  48. status = "测试期";
  49. } else if (dat[i].account_status == "2") {
  50. status = "沉默期";
  51. } else if (dat[i].account_status == "3") {
  52. status = "使用中";
  53. } else if (dat[i].account_status == "4") {
  54. status = "停机";
  55. } else if (dat[i].account_status == "5") {
  56. status = "停机保号";
  57. } else if (dat[i].account_status == "6") {
  58. status = "预销号";
  59. } else if (dat[i].account_status == "7") {
  60. status = "销号";
  61. }
  62. if (dat[i].iccid) {
  63. c5.innerHTML = status;
  64. } else {
  65. c5.innerHTML = '--';
  66. }
  67. var c6 = row.insertCell(5);
  68. if (dat[i].iccid) {
  69. c6.innerHTML = dat[i].data_plan;
  70. } else {
  71. c6.innerHTML = '--';
  72. }
  73. var c7 = row.insertCell(6);
  74. if (dat[i].iccid) {
  75. c7.innerHTML = dat[i].data_usage;
  76. } else {
  77. c7.innerHTML = '--';
  78. }
  79. var c8 = row.insertCell(7);
  80. if (dat[i].iccid) {
  81. c8.innerHTML = dat[i].data_balance;
  82. } else {
  83. c8.innerHTML = '--';
  84. }
  85. var c9 = row.insertCell(8);
  86. if (dat[i].iccid) {
  87. var timestamp4 = new Date(dat[i].expiry_date * 1000);//直接用 new Date(时间戳) 格式转化获得当前时间
  88. c9.innerHTML = timestamp4.toLocaleDateString().replace(/\//g, "-") + " " + timestamp4.toTimeString().substr(0, 8);
  89. } else {
  90. c9.innerHTML = '--';
  91. }
  92. }
  93. }
  94. //筛选:
  95. function sub_filter() {
  96. getData(1, 1, $('#imei').val(), $('#iccid').val(), $('#status').val())
  97. }
  98. $('#imei').on('focus', function () {
  99. $('#iccid').val('');
  100. $('#status').val('');
  101. })
  102. $('#iccid').on('focus', function () {
  103. $('#imei').val('');
  104. $('#status').val('');
  105. })
  106. $('#status').on('change', function () {
  107. $('#imei').val('');
  108. $('#iccid').val('');
  109. })
  110. getData(1, 1, '', '', '')
  111. function getData(page, currpage, e_id, iccid, status) {
  112. $.ajax({
  113. type: 'get',
  114. url: 'siminfo_list',
  115. data: {
  116. page: page,
  117. e_id: e_id,
  118. iccid: iccid,
  119. status: status
  120. },
  121. dataType: "html",
  122. beforeSend: function () {
  123. $('#loadingParent').show();
  124. },
  125. complete: function () {
  126. $('#loadingParent').hide();
  127. },
  128. success: function (data) {
  129. $('#datatable').children().eq(1).html(data);
  130. scrollBar();
  131. layui.use('laypage', function () {
  132. var laypage = layui.laypage;
  133. laypage.render({
  134. elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
  135. // ,count: 30
  136. , curr: currpage
  137. , count: $('#total_nums').val()
  138. , theme: '#428BCA'
  139. , layout: ['prev', 'page', 'next', 'skip']
  140. , jump: function (obj, first) {
  141. if (!first) {
  142. $("#datatable tr:not(:first)").html("");
  143. getData(obj.curr, obj.curr, e_id, iccid, status);
  144. }
  145. }
  146. });
  147. });
  148. },
  149. error: function (type) {
  150. console.log(type)
  151. }
  152. })
  153. }
  154. var pieChart = echarts.init(document.getElementById('pie-chart'));
  155. pieOption = {
  156. title: {
  157. text: 'SIM卡状态比例',
  158. textStyle: {
  159. color: '#029eef'
  160. }
  161. },
  162. tooltip: {
  163. trigger: 'item',
  164. formatter: "{a} <br/>{b} : {c} ({d}%)"
  165. },
  166. legend: {
  167. orient: 'vertical',
  168. left: 'right',
  169. data: []
  170. },
  171. grid: {
  172. left: '3%',
  173. right: '4%',
  174. bottom: '6%',
  175. containLabel: true
  176. },
  177. series: [
  178. {
  179. name: 'SIM卡状态比例',
  180. type: 'pie',
  181. radius: '55%',
  182. radius: ['0%', '70%'],
  183. data: [],
  184. itemStyle: {
  185. emphasis: {
  186. shadowBlur: 10,
  187. shadowOffsetX: 0,
  188. shadowColor: 'rgba(0, 0, 0, 0.5)'
  189. },
  190. normal: {
  191. color: function (params) {
  192. //自定义颜色
  193. var colorList = [
  194. '#ff296c', '#6fb2e2', '#9ac68b', '#e8ad2c', '#af5183', '#f1cfc7', '#911d5a', '#609657',
  195. ];
  196. return colorList[params.dataIndex]
  197. }
  198. }
  199. }
  200. }
  201. ]
  202. };
  203. function lookEchart() {
  204. getEchartData('',1)
  205. $('#typeSelect').val('')
  206. }
  207. $('#typeSelect').on('change', function () {
  208. getEchartData($(this).val(),0);
  209. })
  210. function getEchartData(etype,flag) {
  211. $.ajax({
  212. url: 'siminfo_chart',
  213. type: 'post',
  214. data: {
  215. etype: etype,
  216. },
  217. dataType: 'json',
  218. success: function (data) {
  219. renderEchart(data,flag);
  220. },
  221. error: function (type) {
  222. console.log(type)
  223. }
  224. })
  225. }
  226. function renderEchart(data,flag) {
  227. var v0 = 0, v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v7 = 0;
  228. for (var i = 0; i < data.length; i++) {
  229. if (data[i] == 0) {
  230. v0++;
  231. } else if (data[i] == 1) {
  232. v1++;
  233. } else if (data[i] == 2) {
  234. v2++;
  235. } else if (data[i] == 3) {
  236. v3++;
  237. } else if (data[i] == 4) {
  238. v4++;
  239. } else if (data[i] == 5) {
  240. v5++;
  241. } else if (data[i] == 6) {
  242. v6++;
  243. } else if (data[i] == 7) {
  244. v7++;
  245. }
  246. if (i == data.length - 1) {
  247. var dat = []
  248. if (v0) {
  249. dat.push({ value: v0, name: "未知" })
  250. }
  251. if (v1) {
  252. dat.push({ value: v1, name: "测试期" })
  253. }
  254. if (v2) {
  255. dat.push({ value: v2, name: "沉默期" })
  256. }
  257. if (v3) {
  258. dat.push({ value: v3, name: "使用中" })
  259. }
  260. if (v4) {
  261. dat.push({ value: v4, name: "停机" })
  262. }
  263. if (v5) {
  264. dat.push({ value: v5, name: "停机保号" })
  265. }
  266. if (v6) {
  267. dat.push({ value: v6, name: "预销号" })
  268. }
  269. if (v7) {
  270. dat.push({ value: v7, name: "销号" })
  271. }
  272. pieOption.series[0].data = dat;
  273. pieChart.setOption(pieOption);
  274. }
  275. }
  276. if(flag){
  277. layui.use('layer', function () {
  278. var layer = layui.layer;
  279. layer.open({
  280. type: 1,
  281. title: 'SIM卡状态统计表',
  282. area: ['750px', '550px'],
  283. content: $('#echarts')
  284. })
  285. })
  286. }
  287. }
  288. // 充值
  289. function rechargeFun() {
  290. layui.use('layer', function () {
  291. var layer = layui.layer;
  292. layer.prompt({ formType: 0, title: '请输入iccid' }, function (text, index) {
  293. $.ajax({
  294. url: 'iccid_select',
  295. type: 'post',
  296. dataType: 'json',
  297. data: {
  298. iccid: text,
  299. },
  300. success: function (data) {
  301. if (data.code == 0) {
  302. $('#voucherModel .currIccid').val(text);
  303. var dat = data.data.products;
  304. if (dat.length) {
  305. var html = '';
  306. for (var i = 0; i < dat.length; i++) {
  307. var name = dat[i].product_name.split('/');
  308. html += '<div class="layui-col-xs4"><div class="recharge-demo">' +
  309. '<input type="hidden" value="' + dat[i].product_id + '" class="product_id"><div class="recharge-name">' + name[0] + 'B</div>' +
  310. '<div><div class="price">' + dat[i].price + '<span>元</span></div><div class="desc">' + dat[i].added_month + '个月每月' + name[0] + 'b</div>' +
  311. '</div><div class="switchIcon"></div></div></div>';
  312. if (i == dat.length - 1) {
  313. $('#voucherModel .layui-row').html(html);
  314. }
  315. }
  316. }
  317. layer.open({
  318. type: 1
  319. , title: false //不显示标题栏
  320. , closeBtn: false
  321. , area: '800px;'
  322. , shade: 0.3
  323. , id: 'LAY_layuipro' //设定一个id,防止重复弹出
  324. // , btn: ['我知道了']
  325. , btnAlign: 'c'
  326. , moveType: 1 //拖拽模式,0或者1
  327. , content: $('#voucherModel')
  328. , success: function (layero) {
  329. }
  330. });
  331. layer.close(index);
  332. } else if (data.code == "1") {
  333. layer.msg('操作失败!');
  334. } else if (data.code == "2") {
  335. layer.msg('错误参数!');
  336. } else if (data.code == "4") {
  337. layer.msg('没有权限!');
  338. } else if (data.code == "99") {
  339. layer.msg('服务器错误!');
  340. } else {
  341. layer.msg(data.msg);
  342. }
  343. },
  344. error: function (type) {
  345. layer.msg('请求失败!')
  346. layer.close(index);
  347. }
  348. })
  349. });
  350. });
  351. }
  352. // 套餐筛选
  353. $('.rechargeParent').on('click', '.recharge-demo', function () {
  354. $('.rechargeParent .recharge-demo').removeClass('active');
  355. $(this).addClass('active');
  356. $('.increaseBtnDiv .increaseVal').val(1);
  357. })
  358. //减数量
  359. function reductionOf(obj) {
  360. //减前判断
  361. if ($(obj).next().val() == '') {
  362. $(obj).next().val(1);
  363. }
  364. if (parseInt($(obj).next().val()) - 1 > 0) {
  365. $(obj).next().val(parseInt($(obj).next().val()) - 1);//数值减
  366. $(obj).next().val($(obj).next().val());//赋值给框
  367. }
  368. };
  369. //加数量
  370. function add(obj) {
  371. //加前判断
  372. if ($(obj).prev().val() == '') {
  373. $(obj).prev().val(1);
  374. }
  375. $(obj).prev().val(parseInt($(obj).prev().val()) + 1);//数值加
  376. $(obj).prev().val($(obj).prev().val());//赋值给框
  377. };
  378. //校验数字格式(只能输入正整数)
  379. function checkNumber(obj) {
  380. var reg = /^[1-9]\d*$/;
  381. if (!reg.test($(obj).val()) || $(obj).val() == '') {
  382. $(obj).val(1);
  383. }
  384. }
  385. // 确定充值
  386. function confirmFun() {
  387. if (!$('.recharge-demo.active').length) {
  388. layer.msg('请选择一项套餐');
  389. return false;
  390. }
  391. var curActive = $('.recharge-demo.active');
  392. var productId = curActive.find('.product_id').val();
  393. var currIccid = $('.currIccid').val();
  394. var num = $('.increaseBtnDiv .increaseVal').val();
  395. $.ajax({
  396. url: 'iccid_pay',
  397. type: 'post',
  398. data: {
  399. product_id: productId,
  400. iccid: currIccid,
  401. num: num
  402. },
  403. dataType: 'json',
  404. success: function (data) {
  405. if (data.code == 0) {
  406. layer.msg('充值成功!');
  407. } else if (data.code == "1") {
  408. layer.msg('操作失败!');
  409. } else if (data.code == "2") {
  410. layer.msg('错误参数!');
  411. } else if (data.code == "4") {
  412. layer.msg('没有权限!');
  413. } else if (data.code == "99") {
  414. layer.msg('服务器错误!');
  415. } else {
  416. layer.msg('未知错误!');
  417. }
  418. cancelFun();
  419. },
  420. error: function (type) {
  421. console.log(type)
  422. }
  423. })
  424. }
  425. // 取消
  426. function cancelFun() {
  427. layer.closeAll();
  428. }
  429. // 绑定设备查询
  430. function examineEquip() {
  431. layui.use('layer', function () {
  432. var layer = layui.layer;
  433. var index = layer.prompt({ title: '绑定设备查询', formType: 0, title: '请输入iccid' }, function (text, index) {
  434. $.ajax({
  435. url: 'reverse_lookup',
  436. type: 'post',
  437. dataType: 'json',
  438. data: {
  439. simid: text,
  440. },
  441. success: function (data) {
  442. var dat = data.data;
  443. if (data.length) {
  444. // 获取位置
  445. var geoc = new BMap.Geocoder();
  446. $('#curIccid').html('iccid:' + text)
  447. var html = '';
  448. for (var i = 0; i < data.length; i++) {
  449. (function (i) {
  450. // 经纬度装换
  451. var lng1 = wgs84togcj02(data[i].lng, data[i].lat);
  452. var lng2 = gcj02tobd09(lng1[0], lng1[1]);
  453. var pt = new BMap.Point(lng2[0], lng2[1]);
  454. geoc.getLocation(pt, function (rs) {
  455. var addComp = rs.addressComponents;
  456. html += '<div>IMEI:' + data[i].id + '<br />经度:' + data[i].lat + '<br />纬度:' + data[i].lng + '<br />地区:' + addComp.province + ", " + addComp.city + ", " + addComp.district + '<br />离线时间:' + data[i].offtime + '</div>'
  457. if (i + 1 == data.length) {
  458. $('#bindingRes').html(html);
  459. var layuiopen = layer.open({
  460. type: 1
  461. , title: false //不显示标题栏
  462. , closeBtn: false
  463. , area: '400px;'
  464. , shade: 0.8
  465. , id: 'LAY_layuipro' //设定一个id,防止重复弹出
  466. , btn: ['我知道了']
  467. , btnAlign: 'c'
  468. , moveType: 1 //拖拽模式,0或者1
  469. , content: $('#bindingEquipBox')
  470. , success: function (layero) { }
  471. , yes: function (layero) {
  472. $('#bindingEquipBox').hide()
  473. layer.close(layuiopen)
  474. }
  475. });
  476. layer.close(index);
  477. }
  478. })
  479. }(i))
  480. }
  481. } else {
  482. layer.msg('暂无设备!');
  483. // layer.close(index);
  484. }
  485. }
  486. })
  487. });
  488. });
  489. }
  490. // sim卡查询
  491. function examineSIM() {
  492. layui.use('layer', function () {
  493. var layer = layui.layer;
  494. layer.prompt({ title: 'SIM卡查询', formType: 0, title: '请输入iccid' }, function (text, index) {
  495. $.ajax({
  496. url: 'siminfo',
  497. type: 'post',
  498. dataType: 'json',
  499. data: {
  500. simid: text,
  501. },
  502. success: function (data) {
  503. var dat = data.data;
  504. if (data.code == 0) {
  505. var status;
  506. if (dat.account_status == "0") {
  507. status = "未知";
  508. } else if (dat.account_status == "1") {
  509. status = "测试期";
  510. } else if (dat.account_status == "2") {
  511. status = "沉默期";
  512. } else if (dat.account_status == "3") {
  513. status = "使用中";
  514. } else if (dat.account_status == "4") {
  515. status = "停机";
  516. } else if (dat.account_status == "5") {
  517. status = "停机保号";
  518. } else if (dat.account_status == "6") {
  519. status = "预销号";
  520. } else if (dat.account_status == "7") {
  521. status = "销号";
  522. }
  523. var usage;
  524. if (dat.iccid) {
  525. usage = dat.data_usage;
  526. } else {
  527. usage.innerHTML = '--';
  528. }
  529. var balance;
  530. if (dat.iccid) {
  531. balance = dat.data_balance;
  532. } else {
  533. balance = '--';
  534. }
  535. var time;
  536. if (dat.iccid) {
  537. var timestamp4 = new Date(dat.expiry_date * 1000);//直接用 new Date(时间戳) 格式转化获得当前时间
  538. time = timestamp4.toLocaleDateString().replace(/\//g, "-") + " " + timestamp4.toTimeString().substr(0, 8);
  539. } else {
  540. time = '--';
  541. }
  542. layer.open({
  543. type: 1
  544. , title: false //不显示标题栏
  545. , closeBtn: false
  546. , area: '300px;'
  547. , shade: 0.8
  548. , id: 'LAY_layuipro' //设定一个id,防止重复弹出
  549. , btn: ['我知道了']
  550. , btnAlign: 'c'
  551. , moveType: 1 //拖拽模式,0或者1
  552. , content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">SIM卡查询结果<br>ICCID:' + text + '<br><br>状态:' + status + '<br>套餐:' + dat.data_plan + 'Mb<br>已用流量:' + usage + 'Mb<br>剩余流量:' + balance + 'Mb<br>到期时间:' + time + '</div>'
  553. , success: function (layero) {
  554. }
  555. });
  556. layer.close(index);
  557. } else {
  558. layer.msg('查询失败!');
  559. }
  560. }
  561. })
  562. });
  563. });
  564. }