12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340 |
- <!DOCTYPE html>
- <!--suppress ALL -->
- <html>
- <head>
- <meta charset="utf-8"/>
- <meta name="author" content=""/>
- <meta name="description" content=""/>
- <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
- <meta name="format-detection" content="telphone=no,email=no"/>
- <meta name="viewport"
- content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <title>设备管理</title>
- <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css"/>
- <link rel="stylesheet" href="../components/custom/css/common.css"/>
- <link rel="stylesheet" href="css/xyf.common.min.css"/>
- <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>
- </head>
- <style>
- .nav-container {
- padding-bottom: 60px;
- position: absolute;
- height: 100%;
- width: 100%;
- }
- /*定制样式*/
- .mgr-bd {
- transition: .25s all ease-in-out;
- height: calc(100% - 80px - 50px);
- margin-top: 80px;
- }
- .mui-icon.mui-icon-clear {
- right: 0;
- }
- .or-order-status .mui-radio input {
- position: relative;
- right: auto;
- top: 2px;
- }
- #pullrefresh .mui-scroll {
- top: 1px;
- }
- .device-mgr .c-handle-panel {
- bottom: 50px;
- }
- .hide_device_working_status .working-status {
- display: none;
- }
- /*由于批量设置的按钮可能存在多行,得多留点底部空间*/
- .list {
- padding-bottom: 40px;
- }
- </style>
- <body class="device-mgr">
- <div class="nav-container">
- <div class="mui-input-group mui-reset">
- <form class="mui-row" action="">
- <div class="mui-col-xs-7 mui-col-sm-7">
- <div class="mui-input-row mui-search">
- <input type="search" class="mui-input-clear" id="searchKey" placeholder="设备编号/投放地址">
- </div>
- </div>
- <div class="mui-col-xs-5 mui-col-sm-5 mui-text-right">
- <div class="filter-btn"><span>筛选</span><i class="iconfont icon-triangle-up"></i></div>
- <div class="in-row-btn" onclick="batchOper()">多选<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 or-order-status" id="showPickerAddress">
- <label class="or-label-text">地址</label>
- <span class="mui-icon mui-icon-arrowright"></span>
- <span class="or-order-status-font or-longWrap selected-text or-ellipsis">全部</span>
- </div>
- <div class="or-border-fir mui-input-row input-clear or-order-status" id="showPickerStatus">
- <label class="or-label-text">状态</label>
- <span class="mui-icon mui-icon-arrowright"></span>
- <span class="or-order-status-font or-longWrap selected-text or-ellipsis">全部</span>
- </div>
- <div class="or-border-fir mui-input-row input-clear or-order-status">
- <label class="or-label-text">排序<span></span></label>
- <div class="mui-row or-order-status-font">
- <div class="mui-radio mui-col-xs-4 mui-col-sm-4">
- <input class="" value="logicalCode" type="radio" name="sortName" checked>
- <span class="font-14">编号</span>
- </div>
- <div class="mui-radio mui-col-xs-4 mui-col-sm-4">
- <input class="" value="devType" type="radio" name="sortName">
- <span class="font-14">类型</span>
- </div>
- <div class="mui-radio mui-col-xs-4 mui-col-sm-4">
- <input class="" value="tag" type="radio" name="sortName">
- <span class="font-14">标签</span>
- </div>
- <div class="mui-radio mui-col-xs-4 mui-col-sm-4">
- <input class="" value="remarks" type="radio" name="sortName">
- <span class="font-14">备注</span>
- </div>
- </div>
- </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="dev-top-info flexbox">
- <div class="flex"><span class="putOnAddress">0</span>个地址,<span class="equipmentNum">0</span>台设备</div>
- <span class="text-right handle-reg c-blue" onclick="goReg()">手动注册</span>
- </h5>
- <div id="pullrefresh" class="mui-content mui-clearfix mui-scroll-wrapper mgr-bd">
- <!-- 设备列表 -->
- <div class="mui-scroll">
- <div class="list"></div>
- </div>
- </div>
- <div class="mgr-tip mui-hidden"></div>
- <div class="c-handle-panel mui-hidden">
- <div class="handle-btn">
- <div class="mui-checkbox ">
- <input id="checkbox-all" class="checkbox-all" type="checkbox">
- <label for="checkbox-all">全选</label>
- </div>
- </div>
- <div class="handle-btn-list mui-text-right by-dev">
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary mui-hidden batchSettingParams"
- onclick="editParams()">设备参数
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary mui-hidden batchSettingServerParams"
- onclick="editServerParams()">服务器参数
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary " onclick="editDesc()">说明
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary " onclick="editPackage()">套餐
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-danger mui-hidden" id="editTempPackage"
- onclick="editTempPackage()">临时套餐
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-danger mui-hidden" id="setAutoRefund"
- onclick="setAutoRefund()">自动退款
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-danger "
- onclick="setBatchDevsSwitch()">禁用
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-danger "
- onclick="setDND()">勿扰
- </button>
- </div>
- <div class="handle-btn-list mui-text-right by-group">
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary mui-hidden batchGroupSettingParams"
- onclick="editParams()">设备参数
- </button>
- <button type="button" class="mui-btn mui-btn-outlined mui-btn-primary mui-hidden batchGroupSettingServerParams"
- onclick="editServerParams()">服务器参数
- </button>
- </div>
- </div>
- <!--使用说明-->
- <div class="instructionsDialog edit-back mui-hidden">
- <div class="edit-content">
- <div class="edit-box">
- <div class="reg-des">
- <label>使用说明</label>
- <textarea id="instructionsContent" maxlength="100" rows="3" placeholder=""></textarea>
- </div>
- </div>
- <div class="mui-popup-buttons">
- <span class="mui-popup-button">取消</span>
- <span class="mui-popup-button mui-popup-button-bold">保存</span>
- </div>
- </div>
- </div>
- <!--多选模式,支持直接多选地址-->
- <div id="batchMenu" class="mui-popover mui-popover-action mui-popover-bottom">
- <ul class="mui-table-view">
- <li class="mui-table-view-cell batch-dev">
- 设备多选
- </li>
- <li class="mui-table-view-cell batch-group">
- 地址多选
- </li>
- </ul>
- <ul class="mui-table-view">
- <li class="mui-table-view-cell batch-cancel">
- 取消多选
- </li>
- </ul>
- </div>
- </div>
- <script src="https://cdn.washpayer.com/components/lib/jquery.min.js?v=1"></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/lib/moment.zh.js"></script>
- <script src="/components/custom/js/common.js"></script>
- <script src="js/xyf.common.js"></script>
- <script src="js/device-features.js"></script>
- <script>
- window.initDealerNav && initDealerNav('device_management'); // initDealerNav内有获取当前账号菜单权限
- var statusEnum = [{value: null, text: '全部状态'},
- {value: '1', text: '在线'},
- {value: '0', text: '离线'},]
- //设备地址 选择器
- var statusPicker = new mui.PopPicker({
- layer: 1
- });
- statusPicker.setData(statusEnum);
- //设备地址 选择器
- var addressPicker = new mui.PopPicker({
- layer: 1
- });
- var condition = {};
- var pageType = 'deviceMgr';
- var pageIndex = 0;
- var pageSize = 20;
- var total = 0;
- var groupCount = 0;
- var isOnline = "";
- var equipmentGroupId = "";
- var groupName = "";
- var setCondition = function () {
- var data = {
- searchKey: $("#searchKey").val(),
- equipmentGroupId: equipmentGroupId,
- groupName: groupName,
- isOnline: isOnline,
- sortName: $("input[name='sortName']:checked").val(),
- };
- var conArr = localStorage.condition ? JSON.parse(localStorage.condition) : {};
- conArr[pageType] = data;
- localStorage.condition = JSON.stringify(conArr);
- };
- //如果调到子页面,返回后还是保留查询条件
- var orRecordBack = getQueryString('orRecord');
- if (orRecordBack) {
- history.replaceState(null, null, "device-mgr.html");//清除orRecord
- condition = localStorage.condition ? JSON.parse(localStorage.condition)[pageType] : {};
- if (condition.searchKey) {
- $("#searchKey").val(condition.searchKey);
- }
- if (condition.isOnline != null) {
- isOnline = condition.isOnline
- for (var index in statusEnum) {
- if (statusEnum[index].value == condition.isOnline) {
- statusPicker.pickers[0].setSelectedValue(statusEnum[index].value);
- $('#showPickerStatus .selected-text').html(statusEnum[index].text);
- }
- }
- }
- if (condition.equipmentGroupId) {
- equipmentGroupId = condition.equipmentGroupId
- groupName = condition.groupName
- }
- if (condition.sortName) {
- $("[value='" + condition.sortName + "']")[0].checked = true;
- }
- } else {
- // 如果是刷新进来该页面,则清空掉条件缓存
- setCondition()
- }
- 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);
- }
- });
- var FeatureMap = {}
- var groupBatchFeature = ['batchGroupSettingParams', 'batchGroupSettingServerParams']
- var queryFeature = ['hide_device_working_status', 'batchSettingParams', 'batchSettingServerParams',].concat(groupBatchFeature)
- getFeatureList("dealer", {list: queryFeature}, function (payload) {
- FeatureMap = payload;
- // 隐藏工作状态的特性
- if (payload.hide_device_working_status) {
- $('body').addClass('hide_device_working_status')
- }
- // 批量设置参数的特性
- if (payload.batchSettingParams) {
- $(".batchSettingParams").removeClass("mui-hidden")
- }
- // 批量设置参数的特性
- if (payload.batchSettingServerParams) {
- $(".batchSettingServerParams").removeClass("mui-hidden")
- }
- if (payload.batchGroupSettingParams) {
- $(".batchGroupSettingParams").removeClass("mui-hidden")
- }
- if (payload.batchGroupSettingServerParams) {
- $(".batchGroupSettingServerParams").removeClass("mui-hidden")
- }
- });
- sendRequest("/dealer/accountInfo", "GET", null, function (response) {
- if (response.result == 1) {
- var payload = response.payload
- // 临时套餐
- if (payload.hasTempPackage) {
- $("#editTempPackage").removeClass("mui-hidden")
- }
- } else {
- mui.toast(response.description);
- }
- });
- FilterComponent({
- ok: function () {
- /*合法性验证*/
- pageIndex = 0;
- searchByKey()
- }
- });
- //全选
- $("#checkbox-all").on("change", function () {
- if ($(this).is(":checked")) {
- $(".checkbox-btn").prop("checked", true);
- } else {
- $(".checkbox-btn").prop("checked", false);
- }
- });
- //复选框事件重写
- $("#pullrefresh").on("tap", ".mui-checkbox-wear", function (evt) {
- var box = $(this).find(".mui-checkbox input");
- if (box.is(":checked")) {
- box.prop("checked", false);
- } else {
- box.prop("checked", true);
- }
- evt.stopPropagation();
- evt.preventDefault();
- }).on("tap", ".groupSelect", function () {
- //组全选:该事件必须在上个事件之后
- var input = $(this).find("input");
- var checked = input.is(":checked");
- var groupDom = $(this).closest("li").find(".group-content");
- if (checked) {
- groupDom.find(".checkbox-btn").prop("checked", true);
- } else {
- groupDom.find(".checkbox-btn").prop("checked", false);
- }
- });
- // 页面跳转前标记说明:要缓存过滤条件
- function pageJumpOper(url) {
- history.replaceState(null, null, "device-mgr.html?orRecord=true&t=" + new Date().getTime());//再次返回该页面会带上orRecord
- goPage(url);
- }
- //去手动注册
- function goReg() {
- var url = "/dealer/index.html#/deviceReg?handle=true";
- pageJumpOper(url);
- }
- mui('#batchMenu').on('tap', 'li', function () {
- if ($(this).hasClass('batch-dev')) {
- batchOperByDev()
- } else if ($(this).hasClass('batch-group')) {
- batchOperByGroup()
- } else if ($(this).hasClass('batch-cancel')) {
- batchOperCancel()
- }
- mui('#batchMenu').popover('toggle');
- });
- //激活批量操作
- function batchOper() {
- // 默认为设备多选,如果配置了地址批量选择,则多一个地址批量选择的选项
- var flag = false
- $(groupBatchFeature).each(function (index, item) {
- if (FeatureMap[item]) {
- flag = true
- }
- })
- if (flag) {
- mui('#batchMenu').popover('toggle');
- return
- }
- batchOperJustDev();
- }
- function batchOperJustDev() {
- if ($("body").hasClass("batch-model")) {
- batchOperCancel();
- } else {
- batchOperActive();
- }
- }
- function batchOperByDev() {
- $("body").removeClass("batch-model-group");
- batchOperActive();
- }
- function batchOperByGroup() {
- $("body").addClass("batch-model-group");
- batchOperActive();
- }
- function batchOperActive() {
- $(".in-row-btn").addClass('active');
- $("body").addClass("batch-model");
- $(".c-handle-panel").removeClass('mui-hidden')
- }
- function batchOperCancel() {
- $(".in-row-btn").removeClass('active');
- $("body").removeClass("batch-model");
- $(".c-handle-panel").addClass('mui-hidden')
- }
- // 批量参数设置:主要是发到设备测的参数
- function editParams() {
- var isGroupModel = $('body').hasClass('batch-model-group')
- var idInfo = getSelectIdInfo(true);
- var type = "";
- var code = null;
- var logicalCodeList = [];
- if (!idInfo || idInfo.idList.length == 0) {
- if (isGroupModel) {
- mui.toast("请选择设备组。");
- } else {
- mui.toast("请确保选中的都是同类设备,请重新选择。");
- }
- return;
- } else {
- type = idInfo.type;
- code = idInfo.code;
- logicalCodeList = idInfo.logicalCodeList;
- }
- // 判断要去哪个参数设置的页面
- var devFeatures = getDeviceFeatures({code: code});
- var url = devFeatures.param;
- if (isGroupModel) {
- if (url) {
- var url = url + "?groupId=" + JSON.stringify(idInfo.idList) + "&code=" + code + "&type=" + type
- pageJumpOper(url)
- } else {
- mui.alert('该设备无法进行参数配置', '提示', '确定');
- }
- return;
- }
- if (url) {
- var url = url + "?logicalCode=" + JSON.stringify(logicalCodeList) + "&code=" + code + "&type=" + type
- pageJumpOper(url)
- } else {
- mui.alert('该设备无法进行参数配置', '提示', '确定');
- }
- }
- // 服务器参数,不用远程发命令给设备(后续服务器参数都单独的提取出来,和设备测的参数分开)
- function editServerParams() {
- var isGroupModel = $('body').hasClass('batch-model-group')
- var idInfo = getSelectIdInfo(true);
- var type = "";
- var code = null;
- var logicalCodeList = [];
- if (!idInfo || idInfo.idList.length == 0) {
- if (isGroupModel) {
- mui.toast("请选择设备组。");
- } else {
- mui.toast("请确保选中的都是同类设备,请重新选择。");
- }
- return;
- } else {
- type = idInfo.type;
- code = idInfo.code;
- logicalCodeList = idInfo.logicalCodeList;
- }
- // 判断要去哪个参数设置的页面
- var devFeatures = getDeviceFeatures({code: code});
- var url = devFeatures.serverParam;
- if (isGroupModel) {
- if (url) {
- var url = url + "?groupId=" + JSON.stringify(idInfo.idList) + "&code=" + code + "&type=" + type
- pageJumpOper(url)
- } else {
- mui.alert('此设备无服务器参数特性', '提示', '确定');
- }
- return;
- }
- if (url) {
- var url = url + "?logicalCode=" + JSON.stringify(logicalCodeList) + "&code=" + code + "&type=" + type
- pageJumpOper(url)
- } else {
- mui.alert('此设备无服务器参数特性', '提示', '确定');
- }
- }
- //批量编辑使用说明
- function editDesc() {
- var idInfo = getSelectIdInfo(true);
- var idList = [];
- if (!idInfo) {
- mui.toast("请确保选中的都是同类设备,请重新选择。");
- return;
- }
- if (idInfo.idList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- } else {
- idList = idInfo.idList;
- }
- $('.instructionsDialog').removeClass('mui-hidden');
- $('body').on('touchmove', function (e) {
- e.preventDefault();
- });
- var data = {"typeId": idInfo.typeId};
- var url = "/device/getInstructionsByType";
- sendRequest(url, "GET", data, function (res) {
- if (res.result == 1) {
- //使用说明
- if (res.para) {
- $('#instructionsContent').val(res.para);
- $('#instructionsContent').prop("placeholder", res.para);
- }
- }
- });
- $('.instructionsDialog .mui-popup-buttons span').off().tap(function () {
- if ($(this).index() == 0) {
- //点击取消
- $('.instructionsDialog').addClass('mui-hidden');
- $('body').off('touchmove');
- } else {
- //点击保存
- var instructionsText = $('#instructionsContent').val();
- if ($.isEmptyObject(instructionsText)) {
- return;
- }
- var data = {"value": idList, "instructions": instructionsText};
- var url = "/device/updateEquipmentInstructions";
- sendRequest(url, "POST", data, function (res) {
- if (res.result == 1) {
- $('.instructionsDialog').addClass('mui-hidden');
- mui.toast("保存成功");
- $('body').off('touchmove');
- } else {
- mui.toast(res.description);
- }
- }, "json");
- }
- return false;
- });
- }
- //批量编辑套餐
- function editPackage() {
- var idInfo = getSelectIdInfo(true);
- var typeId = null;
- var type = "";
- var code = null;
- var unit = '分钟';
- var logicalCodeList = [];
- if (!idInfo) {
- mui.toast("请确保选中的都是同类设备,请重新选择。");
- return;
- } else {
- if (idInfo.code == 110000 || idInfo.code == 111000) {
- mui.toast("售货柜不用设置套餐");
- return;
- }
- typeId = idInfo.typeId;
- type = idInfo.type;
- code = idInfo.code;
- unit = idInfo.unit;
- logicalCodeList = idInfo.logicalCodeList;
- }
- if (idInfo.idList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- }
- var url = "/dealer/index.html#/packageSettingsBatch?logicalCode=" + JSON.stringify(logicalCodeList) + "&unit=" + unit + "&code=" + code + "&type=" + type + "&typeId=" + typeId;
- pageJumpOper(url)
- }
- //批量编辑临时套餐
- function editTempPackage() {
- var idInfo = getSelectIdInfo(true);
- var typeId = null;
- var type = "";
- var code = null;
- var unit = '分钟';
- var logicalCodeList = [];
- if (!idInfo) {
- mui.toast("请确保选中的都是同类设备,请重新选择。");
- return;
- } else {
- if (idInfo.code == 110000 || idInfo.code == 111000) {
- mui.toast("售货柜不用设置套餐");
- return;
- }
- typeId = idInfo.typeId;
- type = idInfo.type;
- code = idInfo.code;
- unit = idInfo.unit;
- logicalCodeList = idInfo.logicalCodeList;
- }
- if (idInfo.idList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- }
- var url = "/dealer/index.html#/tempPackageSettingsBatch?logicalCode=" + JSON.stringify(logicalCodeList) + "&unit=" + unit + "&code=" + code + "&type=" + type + "&typeId=" + typeId;
- pageJumpOper(url)
- }
- //批量禁用
- function setBatchDevsSwitch() {
- var idInfo = getSelectIdInfo();
- var idList = [];
- if (idInfo.idList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- } else {
- idList = idInfo.idList;
- }
- var btnArray = ['<span class="c-red noClick">禁用</span>', '<span class="c-green noClick">启用</span>', '取消'];
- mui.confirm("停用或启用这些设备", '设置', btnArray, function (e) {
- if (e.index == 0 || e.index == 1) {
- sendRequest({
- url: "/dealer/setBatchDevsSwitch",
- type: "POST",
- data: {
- logicalCodes: idList,
- isFault: e.index == 0
- },
- contentType: "json",
- success: function (res) {
- if (res.result == 1) {
- mui.toast("禁用成功!");
- setTimeout(function () {
- location.reload();
- }, 1200);
- } else {
- mui.toast(res.description);
- }
- }
- });
- }
- });
- }
- // 去设置勿扰模式
- function setDND() {
- var idInfo = getSelectIdInfo();
- var idList = [];
- if (idInfo.logicalCodeList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- } else {
- idList = idInfo.logicalCodeList;
- }
- localStorage.setItem('dnd_config', JSON.stringify({
- isDND: true,
- logicalCodes: idList
- }))
- goPage('/dealer/index.html#/device/switch/dnd')
- }
- // 某些设备支持自动退款
- function setAutoRefund() {
- var idInfo = getSelectIdInfo();
- var idList = [];
- if (idInfo.idList.length == 0) {
- mui.toast("请您选择设备。");
- return;
- } else {
- idList = idInfo.idList;
- }
- var btnArray = ['<span class="c-red noClick">关</span>', '<span class="c-green noClick">开</span>', '取消'];
- mui.confirm("自动退款功能开关", '设置', btnArray, function (e) {
- if (e.index == 0 || e.index == 1) {
- sendRequest({
- url: "/device/setDevAutoRefund",
- type: "POST",
- data: {
- logicalCodes: idList,
- autoRefund: e.index,
- },
- contentType: "json",
- success: function (res) {
- if (res.result == 1) {
- mui.toast(res.description);
- } else {
- mui.toast(res.description);
- }
- }
- });
- }
- });
- }
- //获取被选中设备的ID,并检测选中的设备是否同类型,todo待后台鉴权管理员才能修改后,前台不带入合伙设备ID
- function getSelectIdInfo(sameTypeFlag) {
- var idList = [];
- var logicalCodeList = [];
- var typeId = null;
- var type = "";
- var code = null;
- var typeSame = true;//检测是否同设备类型
- var unit;
- // 地址批量选择模式
- if ($('body').hasClass('batch-model-group')) {
- $("[role='manage'] .groupSelect").each(function () {
- var checked = $(this).find("input").is(":checked");
- if (checked) {
- if ($(this).next()) {
- idList.push($(this).next().attr('id'))
- }
- }
- var dataStr = $(this).closest("li").find('.deviceRow:eq(0)').attr("data");
- var dataJSON = {devType: {}};
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- type = dataJSON.type;
- code = dataJSON.devType.code; // 默认取最后一组的第一个code作为参数入口,暂时先就这样
- }
- });
- if (idList.length) {
- return {
- idList: idList,
- code: code,
- type: type,
- }
- }
- return null
- }
- // 只遍历管理员下的设备
- $("[role='manage'] .devCheck").each(function () {
- var checked = $(this).find("input").is(":checked");
- if (checked) {
- var dataStr = $(this).closest(".deviceRow").attr("data");
- var dataJSON = {devType: {}};
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- }
- var role = $(this).closest(".groupRow").attr("role");
- var id = dataJSON.id;
- var logicalCode = dataJSON.logicalCode;
- var getTypeId = dataJSON.typeId;
- var getType = dataJSON.type;
- var getCode = dataJSON.devType.code;
- var timeBased = dataJSON.timeBased;
- //判断设备类型是否相同,合伙人设备不判断
- if (role != "limit-user" && typeId != null && getTypeId != typeId && sameTypeFlag) {
- typeSame = false;
- return false;//结束循环
- } else {
- typeId = getTypeId;
- code = getCode;
- type = getType;
- if (unit == null) {
- unit = dataJSON.unit;
- if (unit && unit != "null" && unit != "undefined") {
- } else {
- // 如果没有单位,则根据timeBased得到单位
- unit = (timeBased == true ? "分钟" : "次");
- }
- }
- }
- //判断是否是合伙人设备,合伙人设备不记录
- if (role == "limit-user") {
- return;//继续循环
- }
- if (id) {
- idList.push(id);
- }
- if (logicalCode) {
- logicalCodeList.push(logicalCode);
- }
- }
- });
- if (!typeSame) {
- return null;
- } else {
- return {
- idList: idList,
- logicalCodeList: logicalCodeList,
- typeId: typeId,
- unit: unit,
- code: code,
- type: type
- };
- }
- }
- /**
- * 信号操作
- */
- var _SignalOperate = {
- signalIcon: '',
- setSignalIcon: function (online, signal) {
- var iconClass = '';
- if (signal == 0) {
- iconClass = '';
- } else if (signal > 0 && signal <= 6) {
- iconClass = 'icon-xinhao1';
- } else if (signal >= 7 && signal <= 12) {
- iconClass = 'icon-xinhao2';
- } else if (signal >= 13 && signal <= 18) {
- iconClass = 'icon-xinhao3';
- } else if (signal >= 19 && signal <= 24) {
- iconClass = 'icon-xinhao4';
- } else {
- iconClass = 'icon-xinhao5';
- }
- // 离线的话图片灰色
- if (online == 0) {
- iconClass = iconClass + ' font-b-4'
- } else {
- iconClass = iconClass + ' c-green'
- }
- this.signalIcon = iconClass
- }
- };
- //关键字搜索
- document.onkeydown = function (ev) {
- if (ev.keyCode == 13) {
- ev.preventDefault();
- searchByKey();
- }
- };
- function searchByKey() {
- pageIndex = 0; // 分页重置
- $(".list").empty(); // 清空数据
- mui('#pullrefresh').pullRefresh().refresh(true);//重置上拉加载
- pullupRefresh();
- // 只能放在此处,因为只有用户操作界面上的过滤条件才缓存过滤条件,如果放字 pullupRefresh 里面,会导致初始化设置空条件。。。
- setCondition()
- }
- //设备点击
- mui('body').on('tap', '.deviceRow', function () {
- if ($("body").hasClass("batch-model")) {
- } else {
- var dataStr = $(this).closest(".deviceRow").attr("data");
- var dataJSON = {devType: {}};
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- }
- var code = dataJSON.devType.code
- var url = url = 'device-details.html'
- // 父节点是100263,可以扫码绑定子。直接跳走,因为只需要几个基础菜单;
- if (code == 100263) {
- url = 'device-details-100263.html'
- }
- if (code == 100274) {
- // 暂时就用设备详情 ,需要扫码绑定子节点功能
- }
- if (code == 100287) {
- url = 'device-details-100287.html'
- }
- url = url + '?logicalCode=' + dataJSON.logicalCode
- pageJumpOper(url);
- }
- });
- //点击信号值
- mui('body').on('tap', '.editSignal', function () {
- var $scope = $(this);
- var deviceRow = $scope.closest(".deviceRow");
- var dataStr = deviceRow.attr("data");
- var dataJSON = {devType: {}};
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- }
- var logicalCode = dataJSON.logicalCode;
- sendRequest({
- url: "/device/sendSignal",
- type: "GET",
- data: {logicalCode: logicalCode},
- mask: "正在获取信号值...",
- success: function (res) {
- if (res.result == 1) {
- var signal = res.para;
- dataJSON.signal = signal;
- if (signal > 0) {
- dataJSON.online = 1;
- } else {
- dataJSON.online = 0;
- }
- var signalConfig = getSignalConfig(dataJSON)
- var onlineMarkDom = signalConfig.onlineMarkDom;
- var onlineSignalDom = signalConfig.onlineSignalDom;
- deviceRow.find('.online-mark').replaceWith(onlineMarkDom);
- $scope.replaceWith(onlineSignalDom);
- } else {
- mui.toast(res.description);
- }
- }
- })
- return false;
- });
- var lastHelpDevDom = null
- var lastSelectedDev = {}
- mui('body').on('tap', '.offline-help', function () {
- lastHelpDevDom = $(this);
- var off = lastHelpDevDom.find('.offline')
- var deviceRow = lastHelpDevDom.closest(".deviceRow");
- var dataStr = deviceRow.attr("data");
- var dataJSON = {devType: {}};
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- }
- lastSelectedDev = dataJSON
- if (off.length > 0) {
- goPage('/dealer/index.html#/signal/chart?logicalCode=' + lastSelectedDev.logicalCode);
- return false;
- }
- });
- //地址选择器展示
- $("#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;
- })
- //状态选择器展示
- $("#showPickerStatus").on("tap", function () {
- statusPicker.show(function (rs) {
- isOnline = rs[0].value;
- $('#showPickerStatus .selected-text').html(rs[0].text);
- });
- return false;
- })
- mui.init({
- pullRefresh: {
- container: '#pullrefresh',
- up: {
- contentrefresh: '正在加载...',
- contentnomore: '',
- callback: pullupRefresh
- }
- }
- });
- function getSignalConfig(obj) {
- var onlineStatus = "";//离线状态文字
- var onlineClass = "";//在线状态样式
- var helpTip = ''
- var signalStatus = "";//信号状态
- var offTimeDate = obj.offTimeDate;
- //如果是纯蓝牙设备,则不展示离线、在线
- if (obj.channelType && obj.channelType.indexOf('BlueTooth') > -1) {
- onlineStatus = "蓝牙";
- onlineClass = "mark-blue iconfont icon-lanya online";//蓝牙设备永久在线
- signalStatus = false;
- } else {
- if (obj.online == 1) {
- onlineStatus = "在线";
- onlineClass = "online";
- } else if (obj.online == 0) {
- onlineStatus = "离线";
- onlineClass = "offline";
- helpTip = ',<span class="c-red">点击帮助</span>'
- if (offTimeDate) {
- onlineStatus = moment(offTimeDate).fromNow() + "离线";
- }
- }
- signalStatus = true;
- }
- var onlineMarkDom = '<span class="offline-help padding-t-b-10"><em class="online-mark ' + onlineClass + '">' + onlineStatus + helpTip + '</em>'
- onlineMarkDom = onlineMarkDom + '</span>'
- _SignalOperate.setSignalIcon(obj.online, obj.signal);
- var onlineSignalDom = "";
- if (signalStatus) {
- onlineSignalDom = ('<div class="custom-signal editSignal">' +
- '<span class="signal-type">' + (obj.channelType || '') + '</span>' +
- '<i class="signal-icon iconfont ' + _SignalOperate.signalIcon + '"></i><i class="iconfont icon-xinhao5 signal-icon-back"></i>' +
- '</div>')
- }
- return {
- onlineMarkDom: onlineMarkDom,
- onlineSignalDom: onlineSignalDom,
- }
- }
- /* 上拉加载具体业务实现*/
- function pullupRefresh() {
- var groupId = null;
- pageIndex++;
- var searchKey = $("#searchKey").val();
- var data = {
- "pageIndex": pageIndex,
- "pageSize": pageSize,
- "searchKey": searchKey,
- "sort": $("input[name='sortName']:checked").val(),
- "online": isOnline,
- "equipmentGroupId": equipmentGroupId
- };
- sendRequest("/dealer/equipmentList?random=" + Math.random() * 1000, "GET", data, function (res) {
- if (res.result == 1) {
- if (pageIndex == 1) {
- total = res.para.total;
- groupCount = res.para.groupCount;
- resultList = "";
- groupId = null;
- }
- var length = res.para.dataList.length;
- addressPickerOper.setEquipmentNumAndAddressNum(groupCount, total);
- if (pageIndex == 1 && length == 0) {
- $(".mgr-bd").hide();
- $(".mgr-tip").removeClass("mui-hidden");
- } else {
- $(".mgr-bd").show();
- $(".mgr-tip").addClass("mui-hidden");
- }
- mui('#pullrefresh').pullRefresh().endPullupToRefresh((pageIndex * pageSize >= total));
- var dataTree = [];
- var expandFlag = "";
- for (var i = 0; i < length; i++) {
- var obj = res.para.dataList[i];
- // 只要有一台设备支持 自动退款的功能,则显示设置按钮
- if (obj.autoRefundEnable) {
- $("#setAutoRefund").removeClass('mui-hidden')
- }
- // 如果是搜索,默认展开第一组数据
- if (i == 0 && searchKey != "") {
- expandFlag = "mui-active";
- } else {
- expandFlag = "";
- }
- if (obj.groupId != groupId) {
- var cacthData = {};
- cacthData[obj.groupId] = [];
- dataTree.push(cacthData);
- // 如果改分组还没有在页面上,说明是新分组,则展示在页面上
- groupId = obj.groupId;
- if ($("#" + obj.groupId).length == 0) {
- if (obj.isManager) {
- var role = "manage";
- } else {
- var role = "limit-user";
- }
- var groupList = '<ul role="' + role + '" class="mui-table-view groupRow"><li class="mui-table-view-cell mui-collapse ' + expandFlag + '"><a class="mui-navigate-right" href="javascript:void 0;">' +
- '<div class="mui-checkbox-wear groupSelect"><div class="mui-checkbox"><input class="checkbox-btn" value="" type="checkbox"></div></div>' +
- '<span class="font-18 v-middle" id="' + obj.groupId + '">' +
- obj.name + '</span><em permission="limit-user-show" class="total-mark">合伙</em><span class="mui-pull-right group-ele-total font-12">' +
- '0台</span></a><div class="mui-collapse-content"><ul class="mui-table-view group-content">'
- + '</ul></div></li></ul>';
- $(".list").append(groupList)
- }
- }
- var workStatus = null;//工作状态文字
- var workClass = null;//工作状态样式
- // 设备工作信息: 0空闲 1工作 异常的单独走
- if (obj.status == 0) {
- workClass = "c-success";
- workStatus = "空闲";
- } else if (obj.status == 1) {
- workClass = "c-lgreen";
- workStatus = obj.statusInfo || "繁忙";
- // } else if (obj.status == 2) {
- // workClass = "c-red";
- // workStatus = obj.statusInfo || "故障";
- } else {
- workClass = "font-4";
- workStatus = obj.statusInfo;
- }
- //设备管理状态【人为设置的暂停使用优于一切设备的工作状态】
- if (obj.isFault == true) {
- workStatus = "暂停使用";
- workClass = "c-red";
- }
- var portInfo = ''
- // 如果有端口信息
- if (!$.isEmptyObject(obj.portStatus)) {
- var portStatus = obj.portStatus
- portInfo = '<span class="mui-col-xs-10 mui-col-sm-10 mui-text-left font-b-14-8 margin-t-5">' + portStatus.all + '个端口:';
- if (portStatus.idle) {
- portInfo = portInfo + '<span class="c-green">' + portStatus.idle + '空闲 </span>'
- }
- if (portStatus.used) {
- portInfo = portInfo + '<span class="c-lgreen">' + portStatus.used + '工作 </span>'
- }
- if (portStatus.fault) {
- portInfo = portInfo + '<span class="c-red">' + portStatus.fault + '故障 </span>'
- }
- portInfo = portInfo + '</span>'
- // 置空设备工作信息,因为有端口信息后不需要工作信息
- workStatus = '';
- }
- var signalConfig = getSignalConfig(obj);
- var onlineMarkDom = signalConfig.onlineMarkDom;
- var onlineSignalDom = signalConfig.onlineSignalDom;
- var devDataJson = JSON.stringify(obj);
- var resultList = $('<li class="mui-table-view-cell deviceRow">' +
- '<div class="mui-row">' +
- '<div class="devCheck mui-checkbox-wear"><div class="mui-checkbox"><input class="checkbox-btn" value="" type="checkbox"></div></div>' +
- '<div class=" mui-text-left">' + "<i class='c-blue iconfont v-middle " + getDevIconName(obj.type) + "'></i> <span class='v-middle'>" + obj.type + ' ' + obj.logicalCode + '</span>' + onlineMarkDom + '</div>' +
- onlineSignalDom +
- portInfo +
- '<span class="mui-col-xs-7 mui-col-sm-7 mui-text-left mui-ellipsis font-b-14-4 margin-t-5" style="min-height: 1.5em">' + wordlimit(obj.remarks, 10) +
- (obj.sevenDaysAverage!=null ? ('<div>近7日平均使用率为:<span class="c-green">'+obj.sevenDaysAverage+'%<span></div>') : "") +
- (obj.isDND ? ('<div class="c-green">勿扰模式</div>') : "") +
- '</span><div class="mui-pull-right text-right font-12">' +
- (workStatus ? ('<div class="working-status margin-t-5 ' + workClass + '">' + workStatus + '</div>') : "") +
- (obj.deviceWarning ? ('<div class="c-red deviceWarning">' + "告警状态" + '</div>') : "") +
- (obj.simExpireDate ? ('<div class="c-red">SIM卡过期</div>') : "") +
- '</div></div>' +
- '</li>');
- resultList.attr("data", devDataJson)
- var lastElement = dataTree[dataTree.length - 1];
- lastElement[obj.groupId].push(resultList);
- }
- $.each(dataTree, function (i, groupDomMap) {
- //获取到该组id的dom
- for (var groupId in groupDomMap) {
- $("#" + groupId).closest("ul").find(".group-content").append(groupDomMap[groupId]);
- }
- });
- // 设备刷新完后刷新设备在线 总数目
- setDevCount();
- } else {
- mui.toast(res.description);
- }
- });
- }
- // 主机故障点击
- mui('body').on('tap', '.deviceWarning', function (e) {
- // 阻止事件冒泡传递到设备点击事件
- event.stopPropagation();
- var dataStr = $(this).closest(".deviceRow").attr("data");
- var dataJSON;
- var url;
- if (dataStr) {
- dataJSON = JSON.parse(dataStr);
- } else {
- dataJSON = {devType: {}};
- }
- url = 'device-fault.html?logicalCode=' + dataJSON.logicalCode + '&type=' + dataJSON.type;
- pageJumpOper(url);
- });
- // 翻页或是刷新信号,可能会引起设备数量的变化,所以每次都要根据dom树去找在线或离线的设备
- function setDevCount() {
- var g = $(".group-content");
- var onlineTotal = 0;
- $.each(g, function () {
- var e = $(this);
- var len = e.children().length;
- //找到在线的数量
- var onlineLength = $(this).find('.online').length;
- e.parent().prev("a").find(".group-ele-total").html('<em class="c-green">' + onlineLength + '</em>/' + len + "台");
- onlineTotal = onlineLength + onlineTotal
- });
- // 刷新总的数目
- $('.equipmentNum').html('<em class="c-green">' + onlineTotal + '</em>/' + $('.deviceRow').length);
- }
- if (mui.os.plus) {
- mui.plusReady(function () {
- setTimeout(function () {
- mui('#pullrefresh').pullRefresh().pullupLoading();
- }, 1000);
- });
- } else {
- mui.ready(function () {
- mui('#pullrefresh').pullRefresh().pullupLoading();
- });
- }
- </script>
- </body>
- </html>
|