| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 | <!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta http-equiv="Cache-Control" content="no-cache,no-store,no-siteapp,must-revalidate">    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="expires" content="0">    <meta name="author" content="">    <meta name="description" content=""/>    <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>    <meta name="format-detection" content="telephone=no,email=no">    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">    <title>远程上分</title>    <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css">    <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>    <link rel="stylesheet" href="../components/lib/weui.min.css">    <link rel="stylesheet" href="../components/custom/css/common.css">    <link rel="stylesheet" href="css/xyf.common.min.css">    <style>        .selectDev {            position: absolute;            z-index: 1;            width: 40px !important;            right: 0;            border: 1px solid #c8c7cc;            background: #ececec;        }        .selectDev:after {            right: 7px;        }        #goSearch {            width: 40px;            position: absolute;            right: 40px;            height: 100%;            line-height: 44px;            text-align: center;        }        .attach-param {            background: #f4f4f5;        }        .mui-numbox {            width: 180px;        }        #packagePanel .mui-table-view-cell{            padding-left: 45px;        }        #packagePanel input[type=radio]{            left: 12px;            top: 6px;        }    </style></head><body><div class="mui-input-group remote">    <div class="mui-input-row">        <label>上分设备</label>        <input type="search" id="logicalCode" placeholder="设备编号" class="">        <div id="goSearch" class="mui-icon mui-icon-search"></div>        <p class="mui-navigate-right selectDev font-b-16-6" id="deviceID"></p>    </div></div><ul class="mui-table-view ">    <li class="mui-table-view-cell" id="devInfo">        <p class="font-b-6">暂无设备信息</p>    </li></ul><div class="padding-l-r-10 padding-t-10 " id="upperTab">    <div class="mui-segmented-control">        <a class="mui-control-item" href="#packageUpper" upperType="packageUpper">常规上分</a>        <a class="mui-control-item mui-hidden" href="#packageBatchUpper" upperType="packageBatchUpper">批量上分</a>        <a class="mui-control-item mui-hidden" href="#cardUpper" upperType="chargeCard">远程充卡</a>    </div></div><!-- 常规上分 --><div id="packageUpper" class="mui-control-content">    <div class="mui-input-group margin-t-10 mui-hidden attach-param" id="attachParam">    </div>    <!-- 套餐容器 -->    <form class="mui-input-group  custom-top mui-hidden mui-radio" id="packagePanel">    </form></div><!-- 批量上分 --><div id="packageBatchUpper" class="mui-control-content"></div><!-- 远程充卡 --><div id="cardUpper" class="mui-control-content mui-input-group custom-top remote">    <div class="mui-input-row autoheight">        <label>充卡金额</label>        <div class="">            <div class="mui-numbox" data-numbox-min='1' data-numbox-max='1000' data-numbox-step='10'>                <button class="mui-btn mui-btn-numbox-minus" type="button">−</button>                <input class="mui-input-numbox" id="coins" type="tel" value="10" inputmode="tel"/>                <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>            </div>            <p class="remote-range">数值范围 1~1000</p>        </div>    </div></div><div class="custom-subt">    <a id="submitBtn" class="custom-btn custom-btn-primary" href="javascript:;">确定</a></div><div class="custom-subt mui-text-center">    <a class="c-primary" href="remote-upper-record.html">        远程上分记录<i class="mui-icon mui-icon-arrowright"></i>    </a></div><script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script><script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script><script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script><script src="../components/lib/weui.min.js"></script><script src="/components/custom/js/common.js"></script><script src="js/xyf.common.js"></script><script>    var nowUpperType = "";    $(function () {        // 从链接中获取参数        var logicalCode = "",//逻辑编码                deviceIDDom = $("#deviceID");        // 也可能是其他页面直接过来        var logicalCodeQ = getQueryString("logicalCode");        if (logicalCodeQ) {            logicalCode = logicalCodeQ        }        function commonSuccess(res) {          console.log(res)          if (res.result == 1) {            if (res && res.payload && res.payload.errorList && res.payload.errorList.length) {              var errList = res.payload.errorList              mui.alert('批量上分完成,' + (errList.length ? '<span class="c-red">部分端口失败:</span>' : '全部成功') + errList.join(','), '上分完成', '我知道了');            } else {              mui.toast('上分成功');            }          } else {            mui.toast(res.description);          }        }        //上分        var onPoints = function () {            var coins = $("#coins").val();            var ruleId = $('[name="onPoint"]:checked ').val();            var logicalCode = $("#logicalCode").val();            var data = {};            if (!logicalCode) {                mui.toast('请选择上分设备');                return;            } else {                data.logicalCode = logicalCode            }            if (logicalCode.indexOf("B") === 0) {                mui.alert('蓝牙设备不能远程上分!');                return;            }            var newAttachParas = $.extend(true, {}, attachParas);            var url = "/dealer/onPoints";            // 如果是充卡操作,则需要金额参数            if (nowUpperType == "chargeCard") {                data.coins = coins;                data.type = nowUpperType;// 类型定为充卡                oPointsRequest(url, data, commonSuccess);            } else if (nowUpperType == "packageUpper" || nowUpperType == "packageBatchUpper") {                // 有端口的设备必须选择端口                if (!$.isEmptyObject(devData.chargeIndex) && $.isEmptyObject(newAttachParas.chargeIndex)) {                  mui.alert('请选择端口');                  return;                }                if (ruleId == null) {                    if (ruleList.length === 0) {                        // 如门禁系统                        console.log('设备没有套餐,无需选择')                    } else {                        mui.alert('请选择套餐进行上分');                        return;                    }                } else {                    //组装套餐id和附加参数                    data.ruleId = ruleId;                }                // 自定义套餐,接口用onCustomizePoint。支持批量端口,无需特殊处理。                if (ruleId === 'custom') {                  url = "/dealer/onCustomizePoint";                  data.time = $('#onPointTime').val();                  data.unit = $('#unitPicker').val();                  if(!data.time) {                    mui.alert('请输入自定义的上分数');                    return;                  }                  if(!data.unit) {                    mui.alert('请选择自定义的上单位');                    return;                  }                  data.attachParas = JSON.stringify(newAttachParas);                  oPointsRequest(url, data, commonSuccess);                } else {                  if (newAttachParas.chargeIndex instanceof Array) {                    batchOnPoints(url, data);                  } else {                    // 单个上分                    data.attachParas = JSON.stringify(newAttachParas);                    oPointsRequest(url, data, commonSuccess);                  }                }            }        };        function batchOnPoints(url, data) {          var newAttachParas = $.extend(true, {}, attachParas);          var chargeIndexList = newAttachParas.chargeIndex;          var length = chargeIndexList.length;          var nowIndex = 0;          let errList = [];          function next() {            if (nowIndex >= length) {              mui.alert('批量上分完成,' + (errList.length ? '<span class="c-red">部分端口失败:</span>' : '全部成功') + errList.join(','), '上分完成', '我知道了');              return            }            let port = chargeIndexList[nowIndex]            newAttachParas.chargeIndex = port;            data.attachParas = JSON.stringify(newAttachParas);            sendRequest({              url: url,              type: "POST",              data: data,              success: function (res) {                if (res.result != 1) {                  errList.push(port)                }              },              error: function () {                errList.push(port)              },              complete: function () {                nowIndex++;                next();              }            });          }          next();        }        function oPointsRequest(url, data, success) {          sendRequest({            url: url,            type: "POST",            data: data,            success: success          });        }        /**         * 初始化         */        var init = function () {            if (logicalCode.length !== 0) {                $("#logicalCode").val(logicalCode);                if (logicalCode) {                    //加载套餐                    getPackages(logicalCode);                }            }        };        init();        //跳转到设备选择界面        deviceIDDom.tap(function () {            sendRequest("/dealer/getEquipmentTotal", "GET", {}, function (res) {                if (res.result == 1) {                    var total = res.para;                    if (total === 0) {                        mui.confirm("您还未上线任何设备", "", ["添加设备", "取消"], function (obj) {                            var index = obj.index;                            if (index == 0) {                                scanQRCodeToReg();                            }                        });                    } else {                        var url = "remote-upper-devicefilter.html";                        goPage(url);                    }                }            });        });        $("#submitBtn").tap(function () {            onPoints();        });    });    function initTabCard(code) {        var tabIndex = 0;        //如果设备是100209中创,则展示tab页,可以远程充卡、套餐上分        if (code == 100209) {            //显示选项卡            $("#upperTab [upperType=chargeCard]").removeClass("mui-hidden");        }        //激活上一次操作的tab        tabIndex = getSessionStorage("upper-tab-index") || 0;        $(".mui-control-item").eq(tabIndex).addClass("mui-active");        $(".mui-control-content").eq(tabIndex).addClass("mui-active");        nowUpperType = $(".mui-control-item").eq(tabIndex).attr("upperType");        //tab操作记录cookie        mui('.mui-segmented-control').on('tap', '.mui-control-item', function (e) {            nowUpperType = $(this).attr("upperType");            setSessionStorage("upper-tab-index", $(this).index(), 1000 * 3600 * 24);            location.reload();        });        // 放到正确的容器        if (nowUpperType === 'packageUpper') {          $('#packageUpper').append($('#attachParam,#packagePanel'))        } else {          $('#packageBatchUpper').append($('#attachParam,#packagePanel'))        }    }    //关键字搜索    document.onkeydown = function (ev) {        if (ev.keyCode == 13) {            ev.preventDefault();            getPackages($("#logicalCode").val());        }    };    $('#goSearch').on('click', function () {        getPackages($("#logicalCode").val());    })    var attachParas = {}; //加载附加参数    var devData;// 设备信息    var ruleList = []    function getPackages(logicalCode) {        if(!logicalCode) {            mui.toast('请输入设备编号');            return        }        //初始化加载各个类型设备的套餐        var url = "/dealer/getPackages";        var data = {"logicalCode": logicalCode, "isRemoteUpper": true};        sendRequest(url, "GET", data, function (res) {            if (res.result == 1) {                devData = res.payload.devData;                initTabCard(devData.typeCode);                //chargeIndex,则展示附加参数                if (!$.isEmptyObject(devData.chargeIndex)) {                  $("#upperTab [upperType=packageBatchUpper]").removeClass("mui-hidden");                  $("#attachParam").removeClass("mui-hidden");                  attachParas = PackageSelectComponent({                    devTypeInfo: {code: devData.typeCode, chargeIndex: devData.chargeIndex},                    multiple: nowUpperType === 'packageBatchUpper',                    el: "#attachParam",                  }).attachParas;                }                $("#devInfo").html('<a href="javascript:void(0);">' +                        '<div>' + "<i class='c-primary iconfont " + getDevIconName(devData.type) + "'></i> " + devData.type + '-' + logicalCode + '</div>' +                        '<p class="mui-ellipsis">地址:' + devData.groupName + '</p></a>');                var html = "";                ruleList = res.payload.ruleList || []                ruleList.sort(function (objA, objB) {                    return objA.coins - objB.coins;                });                $.each(ruleList, function (i, obj) {                    var timeText = (obj.time ? obj.time + (obj.unit || "分钟") : "");                    if (obj.name == "充满自停" && devData.typeCode == 100207) {                        timeText = ""                    }                    html += '<div class="mui-table-view-cell">' +                            '<label for="onPoint' + obj.id + '">'+                            '<input name="onPoint" type="radio" value="' + obj.id + '" id="onPoint' + obj.id + '"> <span class="noClick">' +                            (obj.coins || 0) + '币 <span class="">' + (obj.price || 0) + '元</span> ' + obj.name +                            " " + timeText +                            '</span></label></div>';                });                $("#packagePanel").html(html).removeClass("mui-hidden");                sendRequest('/dealer/getCustomizePoint', "GET", data, function (res) {                    var payload = res.payload                    if (payload && payload.length) {                      $("#packagePanel").append(                          '<div class="mui-table-view-cell padding-t-b-5 flexbox">' +                          '    <input id="onPointLastRadio" name="onPoint" type="radio" value="custom"/>' +                          '    <input id="onPointTime" type="text" placeholder="自定义输入上分数量" class="font-14 padding-l-0" onclick="onCustomClick()"/>' +                          '    <input id="unitPicker" readonly placeholder="单位" class="font-14 pull-right c-blue" style="width: 36px" onclick="onUnitClick(event)">' +                          '</div>'                      );                      if (typeof payload === 'string') {                        unitList = [payload];                      } else{                        unitList = payload;                      }                      for (var index = 0; index < unitList.length; index++) {                        unitList[index] = {                          label: unitList[index],                          value: unitList[index],                        }                      }                      $('#unitPicker').val(unitList[0].value);//默认使用第一个单位                    }                });            }        });    }    var unitList = [];    function onCustomClick() {      $('#onPointLastRadio')[0].checked = true    }    function onUnitClick(event) {      event && event.stopPropagation();      event && event.preventDefault();      weui.picker(unitList, {        id: 'unitPicker',        defaultValue: [unitList[0]],        onConfirm: function (result) {          $('#unitPicker').val(result[0].value);        },      })    }</script></body></html>
 |