device-reg.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="description" content=""/>
  6. <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
  7. <meta name="format-detection" content="telphone=no,email=no"/>
  8. <meta name="viewport"
  9. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  10. <meta http-equiv="pragma" content="no-cache">
  11. <meta http-equiv="cache-control" content="no-cache">
  12. <meta http-equiv="expires" content="0">
  13. <title id="title">代理商:经销商设备注册</title>
  14. <link rel="stylesheet" href="/components/lib/mui.min.css"/>
  15. <link rel="stylesheet" href="/components/lib/mui.picker.min.css"/>
  16. <link rel="stylesheet" href="/components/custom/css/common.css"/>
  17. <link rel="stylesheet" href="/app/css/xyf.common.min.css">
  18. <style>
  19. textarea {
  20. font-size: 14px;
  21. }
  22. </style>
  23. </head>
  24. <body class="reg-bg">
  25. <div id="progress" class="mui-progressbar mui-progressbar-infinite" style="display: none;top: 0">
  26. <span></span>
  27. </div>
  28. <div style="padding-bottom: 80px" class="font-14">
  29. <div class="mui-content">
  30. <!-- 头部 -->
  31. <div class="mui-content reg">
  32. <div class="mui-input-group custom-bottom">
  33. <div class="mui-input-row">
  34. <label>设备编号</label>
  35. <input type="tel" id="uniqueCode" readonly class="mui-text-right">
  36. </div>
  37. <div class="mui-input-row">
  38. <label>设备IMEI</label>
  39. <input type="tel" id="imeiCode" readonly class="mui-text-right">
  40. </div>
  41. </div>
  42. <div class="mui-input-group reg-hd">
  43. <div class="mui-input-row">
  44. <label>经销商</label>
  45. <input type="text" id="customer" placeholder="请填写" readonly class="mui-text-right padding-r-25">
  46. <span class="mui-navigate-right"></span>
  47. <input type="hidden" id="customerId"/>
  48. </div>
  49. <div class="mui-input-row">
  50. <label>投放地址</label>
  51. <input type="text" id="location" placeholder="请填写" readonly class="mui-text-right padding-r-25">
  52. <span class="mui-navigate-right"></span>
  53. </div>
  54. <div class="mui-input-row">
  55. <label>设备类型</label>
  56. <input type="text" id="type" placeholder="请填写" readonly class="mui-text-right padding-r-25"
  57. value="">
  58. <input type="hidden" id="typeId" value="">
  59. <span class="mui-navigate-right"></span>
  60. </div>
  61. </div>
  62. </div>
  63. <!-- 套餐 -->
  64. <div class="mui-hidden" id="wash">
  65. <h5 class="mui-content-padded">请设置服务套餐(在整个投放地址生效)</h5>
  66. <ul class="reg-wash">
  67. <div id="packageSetting"></div>
  68. </ul>
  69. </div>
  70. <h5 class="mui-content-padded">请选择或输入组内地址/编号</h5>
  71. <div class="" id="groupNumberSelect">
  72. <div class="mui-input-group reg-hd">
  73. <div class="mui-input-row ">
  74. <label>组内地址/编号</label>
  75. <input type="text" id="groupNumber" placeholder="组内地址/编号" class="mui-text-right ">
  76. </div>
  77. </div>
  78. <div class="mui-input-group reg-bd">
  79. <div class="mui-input-row">
  80. <ol>
  81. <li>快速选择组内地址/编号</li>
  82. </ol>
  83. <div class="mui-row">
  84. <div class="mui-col-xs-4 mui-col-sm-4">
  85. <span class="mui-inline done"></span>已注册
  86. </div>
  87. <div class="mui-col-xs-4 mui-col-sm-4">
  88. <span class="mui-inline option"></span>可选
  89. </div>
  90. <div class="mui-col-xs-4 mui-col-sm-4">
  91. <span class="mui-inline active"></span>选中
  92. </div>
  93. </div>
  94. </div>
  95. <div class="mui-input-row reg-list">
  96. <!-- 分组编号列表 -->
  97. <div class="mui-row option-list"></div>
  98. </div>
  99. </div>
  100. </div>
  101. <!--设备备注 说明-->
  102. <div class="mui-content custom-top">
  103. <div class="mui-input-group custom-bottom reg-hd">
  104. <div class="mui-input-row ">
  105. <label>备注</label>
  106. <input type="text" id="remarks" placeholder="非必填" class="mui-text-right ">
  107. </div>
  108. <div class="mui-input-row" style="min-height: 62px">
  109. <label>使用说明</label>
  110. <textarea type="text" id="instructions" placeholder="非必填" class="mui-text-right"></textarea>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="custom-btn-area custom-fixed-b cf">
  117. <a href="javascript:register();" class="custom-btn custom-btn-primary">提交注册</a>
  118. </div>
  119. <script type="text/javascript" src="/components/lib/vue.min.js"></script>
  120. <script src="/components/lib/jquery.min.js"></script>
  121. <script src="/components/lib/mui.min.js"></script>
  122. <script src="/components/lib/mui.picker.min.js"></script>
  123. <script src="/app/js/xyf.common.js"></script>
  124. <script src="/components/custom/js/common.js"></script>
  125. <script src="/app/js/package-setting.js"></script>
  126. <script>
  127. //全局-是否有弹出框,用于阻止点击事件
  128. (function () {
  129. //ios返回刷新
  130. var isPageHide = false;
  131. window.addEventListener('pageshow', function () {
  132. if (isPageHide) {
  133. window.location.reload();
  134. }
  135. });
  136. window.addEventListener('pagehide', function () {
  137. isPageHide = true;
  138. });
  139. })();
  140. var DEVICE_REG_PARAM = getSessionStorage("DEVICE_REG_PARAM") || {};// 使用缓存数据,避免传来传去
  141. //设备分组ID
  142. var groupId = DEVICE_REG_PARAM.groupId;
  143. //分组地址信息
  144. var groupName = DEVICE_REG_PARAM.groupName;
  145. //设备编号 = devNo
  146. var eid = DEVICE_REG_PARAM.devNo;
  147. var logicalCode = DEVICE_REG_PARAM.logicalCode;
  148. var qrCodeUrl = DEVICE_REG_PARAM.qrCodeUrl;// 需要传带域名的完整url
  149. var customerId = DEVICE_REG_PARAM.customerId;
  150. var customer = DEVICE_REG_PARAM.customer;
  151. //设备类型code
  152. var code = "";//设备code
  153. var unit = '分钟';
  154. var typePicker;
  155. var typeList = [];
  156. (function (mui, doc) {
  157. mui.init();
  158. mui.ready(function () {
  159. //type 选择
  160. typePicker = new mui.PopPicker();
  161. var showType = doc.getElementById('type');
  162. var typeIdDom = doc.getElementById('typeId');
  163. showType.addEventListener('tap', function (event) {
  164. if (customerId == null) {
  165. mui.alert("请先选择经销商", '温馨提示', '我知道了');
  166. return null;
  167. }
  168. sendRequest("/agent/dealer/findDevTypeCandidate", "GET",
  169. { logicalCode: logicalCode, customerId: customerId}, function (res) {
  170. typeList = res.data.dataList || [];
  171. //适配数据
  172. for (var i = 0; i < typeList.length; i++) {
  173. var item = typeList[i];
  174. item.text = item.alias;
  175. item.value = item.id;
  176. }
  177. typePicker.setData(typeList);
  178. typePicker.show(function (items) {
  179. showType.value = (items[0] || {}).text;
  180. typeIdDom.value = (items[0] || {}).value;
  181. var obj = (items[0] || {})
  182. unit = obj.unit ? obj.unit : (obj.timeBased == true ? "分钟" : "次");
  183. code = obj.code;
  184. serviceData(typeIdDom.value);
  185. });
  186. });
  187. }, false);
  188. });
  189. })(mui, document);
  190. //初始化动作
  191. $(function () {
  192. //展示经销商名称
  193. if (customer != null) {
  194. $("#customer").val(customer);
  195. }
  196. //写入经销商编号
  197. if (customerId != null) {
  198. $("#customerId").val(customerId);
  199. }
  200. //展示地址
  201. if (groupId != null && groupName != null) {
  202. $("#location").val(groupName);
  203. groupNumberData(groupId);
  204. }
  205. if (eid != null) {
  206. $("#imeiCode").val(eid);
  207. }
  208. if (logicalCode != null) {
  209. $("#uniqueCode").val(logicalCode);
  210. }
  211. // 同步刷新快速选择器
  212. $('#groupNumber').on('input', function () {
  213. // 取消其他的选中
  214. $('.reg-list a.active').removeClass('active').addClass('option');
  215. // 选中当前
  216. var nowValue = $(this).val()
  217. $('.reg-list a').each(function () {
  218. var eachVal = $(this).text()
  219. if (nowValue == eachVal) {
  220. $(this).not('.done').removeClass('option').addClass('active');
  221. }
  222. })
  223. })
  224. });
  225. //加载经销商
  226. (function ($, doc) {
  227. $.init();
  228. $.ready(function () {
  229. sendRequest("/agent/getCustomerList", "GET", {}, function (res) {
  230. if (res && res.para && res.para.dataList) {
  231. //经销商列表
  232. var customerPicker = new $.PopPicker();
  233. customerPicker.setData(res.para.dataList);
  234. var customerDom = doc.getElementById('customer');
  235. var customerIdDom = doc.getElementById('customerId');
  236. //picker事件绑定
  237. customerDom.addEventListener('tap', function (event) {
  238. if (res.para.dataList.length < 1) {
  239. mui.toast("您还未添加经销商,请先为其开户");
  240. return;
  241. }
  242. customerPicker.show(function (items) {
  243. customer = customerDom.value = (items[0] || {}).text;
  244. customerId = customerIdDom.value = (items[0] || {}).value;
  245. if (customerIdDom.value) {
  246. sendRequest("/device/defaultEquipmentGroup", "GET", {'customerId': customerId},
  247. function (res) {
  248. if (res.result === 1) {
  249. if (res.para.gid) {
  250. //自动填充默认地址
  251. jQuery("#location").val(res.para.name);
  252. //设置地址ID到全局变量
  253. groupId = res.para.gid;
  254. // 加载groupNumber的选择器
  255. groupNumberData(groupId);
  256. }
  257. }
  258. });
  259. }
  260. });
  261. }, false);
  262. // 从增加地址跳转获取customerId ,当url获取到customerId时,自动设置经销商名字
  263. if (customerId) {
  264. var filtered = res.para.dataList.filter(function (_) {
  265. return _.value === customerId
  266. });
  267. if (filtered.length === 1) {
  268. customerDom.value = filtered[0].text;
  269. customerIdDom.value = customerId;
  270. }
  271. }
  272. }
  273. });
  274. });
  275. })(mui, document);
  276. //加载分组编号
  277. function groupNumberData(groupId) {
  278. var data = {"groupId": groupId};
  279. //获取哪些分组编号已经占用
  280. sendRequest("/device/groupUsedNumber", "GET", data, function (res) {
  281. if (res.result == 1) {
  282. var groupNumberHtml = "";
  283. var classValue = "";
  284. var isDefual = false;
  285. var length = res.para.length;
  286. var nowSelect = 1;
  287. for (var i = 1, j = 0; j < length, i <= 32; i++) {
  288. if (length == j) {
  289. if (!isDefual) {
  290. classValue = "active";
  291. nowSelect = i;
  292. isDefual = true;
  293. } else {
  294. classValue = "option";
  295. }
  296. } else {
  297. if (res.para[j].groupNumber == i) {
  298. classValue = "done";
  299. j++;
  300. } else {
  301. if (!isDefual) {
  302. classValue = "active";
  303. isDefual = true;
  304. nowSelect = i;
  305. } else {
  306. classValue = "option";
  307. }
  308. }
  309. }
  310. groupNumberHtml += '<div class="mui-col-xs-3 mui-col-sm-3 option-list-item">' +
  311. '<a href="javascript:;" class=' + classValue + '>' + i + '</a>' +
  312. '</div>';
  313. }
  314. groupNumberHtml += '';
  315. $(".option-list").html(groupNumberHtml);
  316. //按钮选择
  317. $('.option-list-item a').tap(function () {
  318. var other = $(this).parent().siblings().find('a');
  319. if ($(this).is('.option')) {
  320. $(this).removeClass('option').addClass('active');
  321. other.not('.done').removeClass('active').addClass('option');
  322. // 马上刷新输入框的编号
  323. $('#groupNumber').val($(this).text())
  324. }
  325. });
  326. // 刷新默认的选中到输入框
  327. $('#groupNumber').val(nowSelect)
  328. } else {
  329. mui.toast(res.description);
  330. }
  331. });
  332. }
  333. // 套餐组件
  334. var packageModal;
  335. //加载服务套餐
  336. function serviceData(typeId) {
  337. if (!groupId) {
  338. mui.toast("请选择投放地址");
  339. } else {
  340. if (!typeId) {
  341. mui.toast("请选择投放类型");
  342. return;
  343. }
  344. var payload = {
  345. 'dealerId': $("#customerId").val(),
  346. 'devNo': eid,
  347. 'typeId': typeId
  348. };
  349. sendRequest("/agent/getDefaultPackageList", "GET", payload,
  350. function (res) {
  351. if (res.result == 1) {
  352. $("#wash").removeClass();
  353. $("#addWash").siblings().remove();
  354. if (packageModal) {
  355. packageModal.update({
  356. devData: {code: code},
  357. unit: unit,
  358. packages: res.para
  359. });
  360. } else {
  361. packageModal = new PackageComponent({
  362. el: "#packageSetting",
  363. devData: {code: code},
  364. unit: unit,
  365. packages: res.para
  366. });
  367. }
  368. } else {
  369. mui.toast(res.description);
  370. }
  371. });
  372. }
  373. }
  374. //投放地址
  375. $('#location').tap(function (e) {
  376. e.preventDefault();
  377. var customerIdVal = $('#customerId').val();
  378. if (!customerIdVal) {
  379. mui.alert("请先选择经销商", '温馨提示', '我知道了');
  380. return null;
  381. }
  382. if ($("#location").val()) {
  383. var url = 'location-option.html?eid=' + eid + '&logicalCode=' + logicalCode +
  384. "&customerId=" + customerIdVal + "&customer=" + customer;
  385. goPage(url);
  386. } else {
  387. var url = 'location-add.html?eid=' + eid + '&logicalCode=' + logicalCode +
  388. "&customerId=" + customerIdVal + "&customer=" + customer;
  389. goPage(url);
  390. }
  391. // 缓存数据,避免后退丢失
  392. var cache = {customerId: customerId, customer: customer}
  393. setSessionStorage("DEVICE_REG_PARAM", $.extend(true, getSessionStorage("DEVICE_REG_PARAM"), cache), 1000 * 60 * 30);
  394. });
  395. var registerFlag = false;
  396. function register() {
  397. if (!registerFlag) {
  398. var location = $("#location").val();
  399. var customerId = $("#customerId").val();
  400. var typeId = $("#typeId").val();
  401. var groupNumber = $("#groupNumber").val();
  402. var remarks = $("#remarks").val();
  403. var instructions = $("#instructions").val();
  404. if (!logicalCode) {
  405. mui.toast("请输入设备编码,或是扫码注册");
  406. return;
  407. }
  408. if (customerId === null || customerId === "" || customerId === undefined) {
  409. mui.toast("请选择经销商");
  410. return;
  411. }
  412. if (!location) {
  413. mui.toast("请选择投放地址");
  414. return;
  415. }
  416. if (!typeId) {
  417. mui.toast("请选择设备类型");
  418. return;
  419. }
  420. if (groupNumber === '') {
  421. mui.toast("请输入组内地址/编号");
  422. return;
  423. }
  424. var washServiceData = packageModal.getPackages();
  425. var displaySwitchs = packageModal.getDisplaySwitchs();
  426. if (code == 110000 || code == 111000) {
  427. // 售货柜不需要套餐
  428. } else {
  429. if (!packageModal) {
  430. mui.toast("默认套餐未加载,请刷新重试");
  431. return;
  432. }
  433. if (washServiceData.length < 1) {
  434. mui.toast("请添加服务套餐");
  435. return;
  436. }
  437. }
  438. registerFlag = true;
  439. var href = window.location.href;
  440. var url = "/device/registerEquipment";
  441. var data = {
  442. "customerId": customerId,
  443. "logicalCode": logicalCode,
  444. "devNo": eid,// 扫码注册时才有
  445. "qrCodeUrl": qrCodeUrl,// 扫码注册时才有
  446. "groupId": groupId,
  447. "typeId": typeId,
  448. "washConfigs": washServiceData,
  449. "displaySwitchs": displaySwitchs,
  450. "href": href,
  451. "groupNumber": groupNumber,
  452. remarks: remarks,
  453. instructions: instructions
  454. };
  455. $("#progress").show();
  456. sendRequest(url, "POST", data, function (res) {
  457. if (res.result == 1) {
  458. var btnArray = ['返回', '继续注册'];
  459. mui.confirm('线上手机收费套餐已设置成功,线下投币收费套餐请在投币箱或者设备上设置', '注册成功', btnArray, function (e) {
  460. if (e.index == 0) {
  461. history.back();
  462. } else if (e.index == 1) {
  463. scanQRCodeToReg();
  464. }
  465. });
  466. } else {
  467. registerFlag = false;
  468. mui.alert(res.description, '温馨提示', '我知道了');
  469. }
  470. }, "json", null, function () {
  471. $("#progress").hide();
  472. });
  473. }
  474. }
  475. </script>
  476. </body>
  477. </html>