| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598 | <!DOCTYPE html><html class="remModel"><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>        .top-oper-bar {            position: relative;            height: 38px;            line-height: 38px;            margin: 0;            padding: 0 10px;            background: #f4f4f4;        }        .top-oper-bar .right-link {            margin-top: -10px;            margin-right: -10px;            padding: 10px;        }    </style></head><body class="card-manage"><div class="mui-input-group mui-reset">    <form class="mui-row" action="">        <div class="mui-col-xs-9 mui-col-sm-9">            <div class="mui-input-row mui-search">                <input type="search" class="mui-input-clear" id="searchKey" placeholder=" 请输入卡号、手机、姓名">            </div>        </div>        <div class="mui-col-xs-3 mui-col-sm-3 mui-text-right">            <div class="filter-btn"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>        </div>    </form></div><div class="filter-panel" style="display: none" id="options">    <div class="input-group-vertical mui-table-view clear-b-border">        <div class="or-border-fir mui-input-row input-clear" id="showPickerAddress">            <label class="or-label-text">地址</label>            <span class="mui-icon mui-icon-arrowright"></span>            <span class="l-h-38 font-b-6 selected-text">全部</span>        </div>        <div class=" mui-input-row input-clear " id="frozenStatus">            <label class="or-label-text">状态</label>            <span class="mui-icon mui-icon-arrowright"></span>            <span class="l-h-38 font-b-6 selected-text">全部</span>        </div>        <div class="mui-input-row filter-panel-btn flexbox">            <span class="cancel-btn flex">取消</span>            <span class="ok-btn flex">确定</span>        </div>    </div></div><h5 class="flexbox top-oper-bar">    <span class="text-right c-blue right-link" onclick="checkSendCoinsRecord()">派币记录</span>    <span class="text-right c-blue right-link" onclick="goAddCard()">去录卡</span></h5><!--下拉刷新容器--><div id="pullrefresh" class="mui-content mui-scroll-wrapper" style="margin-top: 82px;">    <div class="mui-scroll">        <!--数据列表-->        <ul class="group-wrap ">        </ul>    </div></div><!--生成二维码--><div class="common-mask" id="codePanel">    <div class="common-model">        <div class="common-model-tit">长按二维码保存</a>        </div>        <img id="previewImg" style="margin: auto;display: block">        <div class="common-model-close" onclick="closeQRCode()">关闭</div>    </div></div><script type="text/html" id="modal">    <ul class="mui-table-view card-detail split interval custom-bottom">        <li class="mui-table-view-cell">            <i class="iconfont icon-card c-primary iconCard"></i>            <p class="card-dashed-line"><i class="iconfont icon-card c-primary "></i> <span                    class="cardNo font-b"></span><span                    class="balance font-b mui-pull-right"></span></p>            <div class="expand-info ">                <p class="mui-hidden">别名<span class="mui-pull-right font-b-8 alias"></span></p>                <p class="mui-hidden">电话<span class="mui-pull-right font-b-8 phone"></span></p>                <p class="mui-hidden">状态<span class="mui-pull-right font-b-8 status"></span></p>                <p class="mui-hidden">挂失状态<span class="mui-pull-right font-b-8 frozen"></span></p>                <p class="mui-hidden">卡主<span class="mui-pull-right font-b-8 cardName"></span></p>                <p class="mui-hidden">绑定状态<span class="mui-pull-right font-b-8 bindStatus"></span></p>                <div class="split-line margin-t-b-5"></div>                <p class="operBtn qrcodeBtn margin-t-10">二维码<span class="mui-navigate-right"></span></p>                <p class="operBtn operRecordBtn">使用记录<span class="mui-navigate-right"></span></p>                <p class="operBtn cardDetail">卡详情<span class="mui-navigate-right"></span></p>            </div>        </li>    </ul></script><script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script><script src="../components/lib/jquery.qrcode.min.js"></script><script src="../components/lib/weui.min.js"></script><script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script><script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script><script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script><script src="/components/custom/js/common.js"></script><script src="js/xyf.login.js"></script><script src="js/xyf.common.js"></script><script>    var equipmentGroupId = "";    var groupName = "";    //地址 选择器    var addressPicker = new mui.PopPicker({        layer: 1    });    var YuChuan = false    var deleteInitIcCard = false;//可以删除卡    getFeatureList("dealer", {list: ['deleteInitIcCard', 'YuChuan']}, function (payload) {        YuChuan = payload.YuChuan        deleteInitIcCard = payload.deleteInitIcCard        mui.init({            pullRefresh: {                container: '#pullrefresh',                up: {                    contentrefresh: '正在加载...',                    contentnomore: '没有更多数据了...',                    callback: pullupRefresh                }            }        });        //初始化刷新一次数据        if (mui.os.plus) {            mui.plusReady(function () {                setTimeout(function () {                    mui('#pullrefresh').pullRefresh().pullupLoading();                }, 1000);            });        } else {            mui.ready(function () {                mui('#pullrefresh').pullRefresh().pullupLoading();            });        }    });    var addressPickerOper = {        getEquipmentNumAndAdressList: function (callback) {            var $scope = this;            sendRequest('/device/getEquipmentNumAndAddressList', 'post', {}, function (res) {                if (res.result == 1) {                    var pickerDatas = []                    pickerDatas.push({                        value: null,                        text: '全部投放地址',                    });                    var datas = res.para.groups                    for (var i = 0, length = datas.length; i < length; i++) {                        var item = {                            value: datas[i].groupId,                            text: datas[i].name,                        };                        pickerDatas.push(item);                    }                    addressPicker.setData(pickerDatas);                    if (callback) {                        callback()                    }                } else {                    mui.toast(res.description);                }            })        },        setEquipmentNumAndAddressNum: function (AddressNum, equipmentNum) {            $('.putOnAddress').text(AddressNum);            $('.equipmentNum').text(equipmentNum);        },    };    // 需要等待地址加载出来,然后才初始化所有的参数    addressPickerOper.getEquipmentNumAndAdressList(function () {        if (equipmentGroupId) {            addressPicker.pickers[0].setSelectedValue(equipmentGroupId);            $('#showPickerAddress .selected-text').html(groupName);        }    });    //地址选择器展示    $("#showPickerAddress").on("tap", function () {        addressPicker.show(function (rs) {            equipmentGroupId = rs[0].value;            groupName = rs[0].text;            $('#showPickerAddress .selected-text').html(rs[0].text);        });        return false;    })    function goAddCard() {        goPage('/dealer/index.html#/card/edit')    }    function checkSendCoinsRecord() {        goPage('/dealer/index.html#/card/sendCoinsRecord')    }    //如果调到子页面,返回后还是保留查询条件    var orRecordBack = getQueryString('orRecord');    // 由外部传入的条件,主要是某个用户下级的实体卡查询    var userId = getQueryString('userId');    var groupId = getQueryString('groupId');    /**     * 向localStorage写入条件数据     */    var searchKey = null;// 定义为null,如果是undefined,ios8 微信ajax时会崩溃,但是有的接口有 undefined却不会崩溃。。。    var frozenStatus = '';//状态    var pageIndex = 0;    var pageSize = 10;    var total = 0;    var condition;    var pageType = 'cardManage';    //获取条件缓存数据    if (orRecordBack) {        history.replaceState(null, null, "card-manage.html");        condition = localStorage.condition ? JSON.parse(localStorage.condition)[pageType] : null;        if (condition.equipmentGroupId) {            equipmentGroupId = condition.equipmentGroupId            groupName = condition.groupName        }    } else {        condition = null;    }    function setCondition() {        var data = {            searchKey: searchKey,            equipmentGroupId: equipmentGroupId,            groupName: groupName,            frozen: frozenStatus,        };        var conArr = localStorage.condition ? JSON.parse(localStorage.condition) : {};        conArr[pageType] = data;        localStorage.condition = JSON.stringify(conArr);    }    var frozenStatusList = [        {            label: '全部',            value: ''        },        {            label: '正常',            value: 0        },        {            label: '已挂失',            value: 1        }    ];    var frozenStatusMap = {0: '正常', 1: '已挂失'};    var bindStatusMap = {false: '未绑定', true: '已绑定'};    var statusMap = {active: '正常'};    /*根据缓存渲染已有条件数据*/    if (condition) {        if (condition.frozen != null) {            frozenStatus = condition.frozen;            $("#frozenStatus .selected-text").html(frozenStatusMap[condition.frozen]);        }        if (condition.searchKey !== '') {            searchKey = condition.searchKey;            $("#searchKey").val(searchKey);        }    } else {    }    //关键字搜索    document.onkeydown = function (ev) {        if (ev.keyCode == 13) {            ev.preventDefault();            search();        }    };    var agentId;    //刷新数据    function pullupRefresh(callback) {        pageIndex++;        var url = "/dealer/getUserCardList";        var data = {            searchKey: searchKey,            equipmentGroupId: equipmentGroupId,            frozen: frozenStatus,            pageIndex: pageIndex,            pageSize: pageSize,        };        if (userId) {            data.userId = userId        }        if (groupId) {            data.groupId = groupId        }        setCondition();         //设置条件到缓存        sendRequest(url, "GET", data, function (res) {            if (res.result === 1) {                if (pageIndex === 1) {                    total = res.payload.total;                    if (total === 0) {                        $('#pullrefresh').addClass('mui-hidden');                        $("body").append('<div class="nomore"></div>');                    } else {                        $('#pullrefresh').removeClass('mui-hidden');                        $('.nomore').remove();                    }                }                mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * pageSize >= total));                var groupWrap = $('.group-wrap');                var length = res.para.dataList.length;                for (var i = 0; i < length; i++) {                    var obj = res.para.dataList[i];                    var html = $($("#modal").html());                    html.find(".expand-info").attr("data-id", obj.cardId)                    html.find(".expand-info").attr("cardNo", obj.cardNo)                    html.find(".expand-info").attr("cardName", obj.cardName)                    html.find(".expand-info").attr("phone", obj.phone)                    html.find(".expand-info").attr("groupId", obj.groupId)                    html.find(".expand-info").attr("groupName", obj.groupName)                    html.find(".expand-info").attr("balance", obj.balance)                    html.find(".cardNo").text(obj.cardNo)                    html.find(".balance").text(obj.balance + "元")                    //附加信息                    setValue(obj, html, "frozen", frozenStatusMap[obj.frozen], (obj.frozen === 1 ? "c-red" : "c-success"))                    setValue(obj, html, "alias")                    setValue(obj, html, "phone")                    setValue(obj, html, "nickname")                    setValue(obj, html, "cardName")                    setValue(obj, html, "bindStatus", bindStatusMap[obj.bindStatus])                    setValue(obj, html, "status", statusMap[obj.status])                    if (obj.frozen === false) {                        html.find(".freezeCard").addClass("isFreeze").find('.btn-label').text("挂失")                    } else {                        html.find(".freezeCard .btn-label").text("解除挂失")                    }                    if (!deleteInitIcCard) {                        html.find(".deleteCard").remove()                    }                    groupWrap.append(html);                    agentId = res.payload.agentId;                    if (callback) {                        callback()                    }                }                if (YuChuan) {                    $('.qrcodeBtn').remove()                    $('.cardDetail').remove()                    $('.balance').remove()                    $('#sumBalance').remove()                }            } else {                mui.toast(res.description);            }        });    }    function setValue(obj, html, key, value, styleClass) {        if (value != null) {        } else {            value = obj[key]        }        value != null && html.find("." + key).html(value).closest('p').removeClass('mui-hidden')        if (styleClass) {            html.find("." + key).addClass(styleClass)        }    }    //通用选择器    var showTypePicker = function (list, options) {        weui.picker(list, {            className: options.className,            defaultValue: [options.default],            onChange: function (result) {                options.onChange && options.onChange(result);            },            onConfirm: function (result) {                options.onConfirm && options.onConfirm(result);            },            id: options.id        })    };    FilterComponent({        ok: function () {            /*合法性验证*/            pageIndex = 0;            search();        }    })    function search() {        pageIndex = 0;        $('.group-wrap').html("");        mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载        searchKey = $("#searchKey").val();        //写入数据        pullupRefresh();    }    //状态    $("#frozenStatus").click(function (e) {        var $ele = $(e.currentTarget);        showTypePicker(frozenStatusList, {            id: $ele.attr('id'),            default: frozenStatus,//如果没有 null则表示全部            onConfirm: function (data) {                $ele.find(".selected-text").html(data[0].label);                frozenStatus = data[0].value;                //写入数据                setCondition();            }        });    });    //添加充值卡    function addCard() {        goPage('card-manage-edit.html');    }    $('body').on('tap', '.card-detail', function () {        if ($(this).hasClass("active")) {            $(this).removeClass("active")        } else {            $(this).addClass("active")        }    }).on('tap', '.operBtn', function (evt) {        evt.stopPropagation();        var cardId = $(this).closest('.expand-info').attr("data-id");        var cardNo = $(this).closest('.expand-info').attr("cardNo");        var phone = $(this).closest('.expand-info').attr("phone");        var cardName = $(this).closest('.expand-info').attr("cardName");        var groupName = $(this).closest('.expand-info').attr("groupName");        var groupId = $(this).closest('.expand-info').attr("groupId");        var balance = $(this).closest('.expand-info').attr("balance");        if (cardId) {            if ($(this).hasClass("freezeCard")) {                var frozen;                var tit = ""                if ($(this).hasClass("isFreeze")) {                    frozen = true;                    tit = "您确定冻结使用该卡吗?"                } else {                    frozen = false;                    tit = "卡片将恢复使用,您确定要解除挂失状态吗?"                }                var btnArray = ['取消', '确定'];                mui.confirm(tit, '温馨提示', btnArray, function (e) {                    if (e.index == 1) {                        var data = {"id": cardId, frozen: frozen};                        sendRequest({                                url: "/dealer/freezeCard",                                data: data,                                type: 'POST',                                contentType: "json",                                success: function (res) {                                    if (res.result == 1) {                                        mui.toast("操作成功");                                        search();//刷新列表                                    }                                }                            }                        );                    }                });            } else if ($(this).hasClass("operRecordBtn")) {                history.replaceState(null, null, "card-manage.html?orRecord=true&t=" + new Date().getTime());                var url = '/user/index.html#balanceChange?cardId=' + cardId;                goPage(url);            } else if ($(this).hasClass("cardDetail")) {                history.replaceState(null, null, "card-manage.html?orRecord=true&t=" + new Date().getTime());                var url = '/dealer/index.html#/card/detail?cardId=' + cardId;                goPage(url);            } else if ($(this).hasClass("operSendCoins")) {                history.replaceState(null, null, "card-manage.html?orRecord=true&t=" + new Date().getTime());                var url = '/dealer/index.html#/card/sendCoins?cardId=' + cardId;                goPage(url);            } else if ($(this).hasClass("deleteCard")) {                var btnArray = ['取消', '确定'];                mui.confirm('确定删除?', '温馨提示', btnArray, function (e) {                    if (e.index === 1) {                        sendRequest({                                url: "/dealer/deleteCard",                                data: {cardId: cardId},                                type: 'POST',                                contentType: "json",                                success: function (res) {                                    if (res.result === 1) {                                        mui.toast("操作成功");                                        search();//刷新列表                                    } else {                                        mui.toast(res.description);                                    }                                }                            }                        );                    }                });            } else if ($(this).hasClass("swapCardNo")) {                goPage('/dealer/index.html#/card/swapCardNo?cardId=' + cardId + '&cardNo=' + cardNo + '&balance=' + balance)            } else if ($(this).hasClass("editCard")) {                goPage('/dealer/index.html#/card/edit?editCard=1&groupId=' + groupId + '&cardName=' + cardName + '&phone=' + phone + '&cardId=' + cardId + '&cardNo=' + cardNo)            } else if ($(this).hasClass("qrcodeBtn")) {                $("#codePanel").show();                var label = cardNo                var protocol = location.protocol;                var currentDomain = protocol + "//" + location.host;                var userUrl;                userUrl = currentDomain + "/userLogin?agentId=" + agentId + "&redirect=" +                    encodeURIComponent("/user/index.html" + "#/user/checkCard?" +                        "cardId=" + cardId +                        "&cardNo=" + cardNo +                        "&cardName=" + cardName +                        "&phone=" + phone +                        "&groupName=" + groupName +                        "&groupId=" + groupId +                        "&dealerEdit=true"                    );                var dataURL = getQRCodeImageData(userUrl, label);                $("#previewImg").attr({                    "width": 200,                    "height": 230,                    "src": dataURL                });            }        }    });    function closeQRCode() {        $("#codePanel").hide();    }</script></body></html>
 |