1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051 |
- <!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="../components/custom/css/common.css">
- <link rel="stylesheet" href="css/xyf.common.min.css">
- <style>
- .oper-btn {
- margin-right: -5px;
- }
- .port-head {
- width: 100%;
- }
- .port-info {
- float: left;
- width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .mui-table-view-cell:after{
- left: 0;
- }
- .order-info,.order-info-loading {
- background: #fafafb;
- position: relative;
- padding: 6px;
- margin: 8px 0;
- }
- .p-title{
- }
- .power-graph-box {
- background: #fff;
- width: 100%;
- height: 220px;
- padding: 0;
- }
- .chart-box {
- background: #fff;
- width: 100%;
- height: 220px;
- }
- </style>
- </head>
- <body class="">
- <h4 class="param-title" id="device">设备</h4>
- <div class="mui-input-group mui-control-content mui-active" id="portPanel">
- </div>
- <!--生成二维码-->
- <div class="common-mask" id="codePanel">
- <div class="common-model">
- <div class="common-model-tit">长按二维码保存
- </div>
- <img id="previewImg" style="margin: auto;display: block">
- <div class="common-model-close" onclick="closeQRCode()">关闭</div>
- </div>
- </div>
- <div class="common-mask" id="showPG">
- <div class="common-model">
- <div class="common-model-tit" id="pgTitle">数据获取中...</div>
- <div class="power-graph-box chart-box" id="powerGraph"></div>
- <div class="common-model-close" onclick="closePG()">关闭</div>
- </div>
- </div>
- <!--没有操作按钮-->
- <script type="text/html" id="modal100201">
- <div class="mui-table-view-cell">
- <div class="port-head">
- <span class="port-name"></span>
- </div>
- </div>
- </script>
- <!--有停止、启用、禁用-->
- <script type="text/html" id="modal100202">
- <div class="mui-table-view-cell">
- <div class="port-head">
- <span class="port-name"></span>
- <span data-id="33" class="mui-pull-right oper-btn font-b-8" permission="manage-show">
- <em onclick="stopPort()" class="padding-5 stopPort mui-hidden"><i
- class="iconfont icon-close-dark font-18 c-lgreen"></i><i
- class="">停止</i></em>
- <em onclick="activePort()" class="padding-5 activePort"><i class="iconfont icon-fault font-16 "></i><i
- class="word"> 禁用</i></em>
- </span>
- </div>
- </div>
- </script>
- <!--只有停止-->
- <script type="text/html" id="modal100203">
- <div class="mui-table-view-cell">
- <div class="port-head">
- <span class="port-name"></span>
- <span data-id="33" class="mui-pull-right oper-btn font-b-8" permission="manage-show">
- <em onclick="stopPort()" class="padding-5 stopPort mui-hidden"><i
- class="iconfont icon-close-dark font-18 c-lgreen"></i><i
- class="">停止</i></em>
- </span>
- </div>
- </div>
- </script>
- <!--100805的充电柜 可以直接进行开锁的-->
- <script type="text/html" id="modal100805">
- <div class="mui-table-view-cell">
- <div class="port-head">
- <span class="port-name"></span>
- <span data-id="33" class="mui-pull-right oper-btn font-b-8" permission="manage-show">
- <em onclick="unlockPort()" class="padding-5 stopPort "><i
- class="iconfont icon-unlock font-18 c-red"></i><i
- class=""> 开锁</i></em>
- </span>
- </div>
- </div>
- </script>
- <!--换电柜 直接启动给电池充电-->
- <script type="text/html" id="modal100230">
- <div class="mui-table-view-cell">
- <div class="port-head">
- <span class="port-name"></span>
- <span data-id="33" class="mui-pull-right oper-btn font-b-8" permission="manage-show">
- <em onclick="activePort()" class="padding-5 activePort">
- <i class="iconfont icon-fault font-16 "></i>
- <i class="word"> 禁用</i>
- </em>
- <em onclick="chargePort()" class="padding-5 chargePort">
- <i class="iconfont icon-start font-16 c-green"></i>
- <i class=""> 充电</i>
- </em>
- </span>
- </div>
- </div>
- </script>
- <div id="stopTypeMenu" class="mui-popover mui-popover-action mui-popover-bottom">
- <ul class="mui-table-view">
- <li class="mui-table-view-cell" onclick="confirmStop('dealerStopUsingPort')">
- <div class='mui-navigate-right'><span>管理员停止端口</span></div>
- </li>
- <li class="mui-table-view-cell" onclick="confirmStop('dealerCancelOrder')">
- <div class='mui-navigate-right'><span>管理员取消订单</span></div>
- </li>
- <li class="mui-table-view-cell" onclick="confirmStop('illegalUseStop')">
- <div class='mui-navigate-right'><span>违规使用停止</span></div>
- </li>
- <li class="mui-table-view-cell" onclick="confirmStop('packageMismatchStop')">
- <div class='mui-navigate-right'><span>套餐不符停止</span></div>
- </li>
- </ul>
- </div>
- <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/echarts.js"></script>
- <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
- <script src="https://cdn.washpayer.com/components/lib/mui.min.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>
- var logicalCode = getQueryString("logicalCode");
- var code = getQueryString("code");
- var type = getQueryString("type");
- $("#device").html("<i class='c-primary iconfont " + getDevIconName(type) + "'></i> " + type + logicalCode + '的端口');
- var portListUrl = "/dealer/getDevicePort"
- if (code === "100206" || code === "100202"|| code === "100256"|| code === "101206" || code === "102256" || code === "103210") {
- portListUrl = "/dealer/getPortsInfo"
- }
- //获取 设备功能设置
- sendRequest({
- url: portListUrl,
- type: "GET",
- data: {logicalCode: logicalCode},
- mask: "正在获取端口信息...",
- success: function (response) {
- if (response.result == 1) {
- var payload = response.payload;
- if (payload.isManager || payload.isManager == null) {
- $("body").attr("role", "manage");
- } else {
- $("body").attr("role", "limit-user");
- }
- var portList = payload.portList;
- if (portList.length > 0) {
- for (var index in portList) {
- var port = portList[index];
- if (code) {
- setNodeData(code, port);
- }
- }
- }
- } else {
- mui.toast(response.description);
- }
- }
- });
- function loadOnePort(dom, portConfig, port) {
- sendRequest({
- url: "/dealer/getDevicePortDetail",
- type: "GET",
- data: {logicalCode: logicalCode, portIndex: port.index},
- mask: "正在获取端口详细信息...",
- success: function (response) {
- if (response.result === 1) {
- var payload = response.payload;
- renderPortDetail(dom, portConfig, payload)
- } else {
- mui.toast(response.description);
- }
- }
- });
- }
- function getPortStatusDom(status) {
- var statusMap = {
- // 这三个状态根据配置来确定是否可用
- idle: {
- name: '空闲',
- style: 'c-success'
- },
- busy: {
- name: '繁忙',
- style: 'c-lgreen'
- },
- finished: {
- name: '完成',
- style: 'c-success'
- },
- connected: {
- name: '连接',
- style: 'c-lgreen'
- },
- // 以下两个状态 完全不能用
- fault: {
- name: '故障',
- style: 'c-red'
- },
- ban: {
- name: '禁用',
- style: 'font-4'
- },
- estop: {
- name: '急停状态',
- style: 'c-red'
- },
- ready: {
- name: '就绪',
- style: 'c-lgreen'
- },
- // 0:'空闲',
- // 1:'繁忙',
- // 2:'故障',
- // 3:'禁用',
- // 4:'暂停',
- // 5:'已连接',
- // 6:'充电完成',
- // 7:'维护中',
- // 8:'预约中',
- 0: {
- name: '空闲',
- style: 'c-success'
- },
- 1: {
- name: '繁忙',
- style: 'c-lgreen'
- },
- 2: {
- name: '故障',
- style: 'c-red'
- },
- 3: {
- name: '禁用',
- style: 'c-red'
- },
- 4: {
- name: '暂停',
- style: 'c-lgreen'
- },
- 5: {
- name: '已连接',
- style: 'c-success'
- },
- 6: {
- name: '充电完成',
- style: 'c-success'
- },
- 7: {
- name: '维护中',
- style: 'c-red'
- },
- 8: {
- name: '预约中',
- style: 'c-red'
- },
- 10: {
- name: '占位状态',
- style: 'c-lgreen'
- },
- 11: {
- name: '急停状态',
- style: 'c-red'
- },
- 12: {
- name: '就绪',
- style: 'c-success'
- },
- 13: {
- name: '继电器粘连',
- style: 'c-red'
- },
- }
- var item = statusMap[status]
- // 普通充电桩
- if (item) {
- return "<span class='" + item.style + "'>" + item.name + "</span>"
- } else {
- return "<span class='font-4'>未知</span>"
- }
- }
- function setNodeData(code, port) {
- var dom;
- // todo 缺少参数mcuVersion ,但目前的后台实现机制其实也用不上了
- var devFeatures = getDeviceFeatures({code: code});
- var portConfig = devFeatures.portConfig
- // 如果没有端口配置,说明没有操作按钮
- if (!portConfig) {
- dom = $($("#modal100201").html());
- } else if (portConfig.stop && portConfig.toggle) {
- dom = $($("#modal100202").html());
- var banBtn = '<i class="iconfont icon-fault font-16 c-red"></i><i class="word"> 禁用</i>';
- if (port.status == "busy") {
- dom.find(".stopPort").removeClass("mui-hidden");
- } else if (port.status == "fault" || port.status == "ban") {
- banBtn = '<i class="iconfont icon-start font-16 c-success"></i><i class="word"> 启用</i>';
- }
- //todo 停止|启动,似乎目前只有停止,不能远程启动?
- dom.find(".activePort").html(banBtn);
- } else if (portConfig.toggle && portConfig.charge) {
- dom = $($("#modal100230").html());
- if (port.status == "ban" || port.status == "fault"){
- var banBtn = '<i class="iconfont icon-start font-16 c-success"></i><i class="word"> 启用</i>';
- dom.find(".activePort").html(banBtn);
- }
- } else if (portConfig.toggle) {
- dom = $($("#modal100202").html());
- var banBtn = '<i class="iconfont icon-fault font-16 c-red"></i><i class="word"> 禁用</i>';
- if (port.status == "fault" || port.status == "ban") {
- banBtn = '<i class="iconfont icon-start font-16 c-success"></i><i class="word"> 启用</i>';
- }
- dom.find(".activePort").html(banBtn);
- } else if (portConfig.stop) {
- dom = $($("#modal100203").html());
- if (port.status == "busy" || port.status == "ready") {
- dom.find(".stopPort").removeClass("mui-hidden");
- } else {
- }
- } else if (portConfig.unlock) {
- dom = $($("#modal100805").html());
- }
- if (!dom) {
- return
- }
- //端口基本信息
- dom.find(".port-name").text("端口:" + port.index).append('<span class="margin-l-10 port-status"></span>');
- dom.attr("index", port.index);
- dom.attr("status", port.status);
- dom.find(".port-status").html(getPortStatusDom(port.status));
- $("#portPanel").append(dom);
- if (port.isLazy) {
- var loadingDom = $('<div class="order-info-loading mui-clearfix mui-navigate-right">' +
- ' <em class="padding-5 ">' +
- ' <i class="iconfont icon-eye font-18 c-blue"></i><i class="word"> 工作详情</i>' +
- ' </em></div>')
- loadingDom.on('click', function () {
- $(this).remove()
- loadOnePort(dom, portConfig, port)
- })
- dom.append(loadingDom)
- }
- renderPortDetail(dom, portConfig, port)
- }
- var gearMap = {
- 0: "第一档",
- 1: "第二档",
- 2: "第三档",
- 3: "第四档",
- 4: "第五档",
- }
- function renderPortDetail(dom, portConfig, port) {
- dom.find('.order-info,.port-foot').remove() // 先尝试清空旧的信息
- function getPayTypeEnum(item, type) {
- // 单位后台确定
- var payTypeEnum = {
- 'mobile': '扫码付费' + (item.coins || 0),
- 'mobile_vcard': '虚拟卡抵扣',
- 'monthlyPackage': '包月卡抵扣',
- 'coin': '投币' + (item.coins || 0),
- 'card': '刷卡' + (item.coins || 0),
- 'serverBilling': '后台计费',
- 'powerBilling': '功率计费',
- 'postpaid': '后付费',
- 'billAsServicePostpaid': '后付费',
- 'isFree': '免费时段',
- null: "未知"
- }
- return payTypeEnum[type]
- }
- var devDom = $('<div class="order-info mui-clearfix"><div class="font-14 p-title">设备详情</div></div>')
- var orderDom = $('<div class="order-info mui-clearfix"><div class="font-14 p-title">当前订单详情</div></div>')
- dom.append(devDom)
- dom.append(orderDom)
- // 公共字段,订单信息
- if (port.nickName) {
- orderDom.append('<p class="port-info no-alert margin-t-5 " onclick="goUser(\'' + (port.openId || '') + '\')"><span class="">用户昵称:</span><span class="c-success">' + port.nickName + '</span></p>')
- }
- if (port.cardNo) {
- orderDom.append('<p class="port-info no-alert margin-t-5 " onclick="goUserCard(\'' + (port.openId || '') + '\')"><span class="">卡号:</span><span class="c-success" >' + port.cardNo + '</span></p>')
- }
- if (port.cardName) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">卡名:</span><span class="c-success">' + port.cardName + '</span></p>')
- }
- if (port.pw != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">密码:</span><span class="c-success">' + port.pw + '</span></p>')
- }
- if (port.consumeType != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">消费:</span><span class="c-success">' + getPayTypeEnum(port,port.consumeType) + '</span></p>')
- }
- if (port.elecFee != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">电量费用:</span><span class="c-success">' + port.elecFee + '</span>元</p>')
- }
- if (port.serviceFee != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">服务费:</span><span class="c-success">' + port.serviceFee + '</span>元</p>')
- }
- if (port.statusErrorInfo != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">异常信息:</span><span class="c-red">' + port.statusErrorInfo + '</span></p>')
- }
- if (port.faultDesc != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">故障描述:</span><span class="c-red">' + (port.faultDesc || '') + '</span></p>')
- }
- if (port.startTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">开始时间:</span><span class="c-success">' + (port.startTime) + '</span></p>')
- }
- if (port.needTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">订购时间:</span><span class="c-success">' + (port.needTime || 0) + '</span></p>')
- }
- if (port.actualNeedTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">实际预定时间:</span><span class="c-success">' + port.actualNeedTime + '</span>分钟</p>')
- }
- if (port.usedTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">已充时间:</span><span class="c-success">' + (port.usedTime || 0) + '</span>分钟</p>')
- }
- if (port.duration != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">充电时间:</span><span class="c-success">' + (port.duration || 0) + '</span>分钟</p>')
- }
- if (port.leftTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">剩余时间:</span><span class="c-success">' + (port.leftTime || 0) + '</span>分钟</p>')
- }
- if (port.occTime != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">占位时间:</span><span class="c-success">' + (port.occTime || 0) + '</span>分钟</p>')
- }
- if (port.allPayMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">订单总金额:</span><span class="c-success">' + (port.allPayMoney || 0) + '</span></p>')
- }
- if (port.consumeMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">已消费金额:</span><span class="c-success">' + (port.consumeMoney || 0) + '</span></p>')
- }
- if (port.chargedMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">已充金额:</span><span class="c-success">' + (port.chargedMoney || 0) + '</span>元</p>')
- }
- if (port.leftMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">本次消费余额:</span><span class="c-success">' + (port.leftMoney || 0) + '</span></p>')
- }
- if (port.leftElec != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">剩余电量:</span><span class="c-success">' + (port.leftElec || 0) + '</span>度</p>')
- }
- if (port.usedElec != null && port.usedElec !=0) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">已充入电量:</span><span class="c-success">' + (port.usedElec || 0) + '</span>度</p>')
- }
- if (port.elec != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">已充电量:</span><span class="c-success">' + (port.elec || 0) + '</span>度</p>')
- }
- if (port.needElec != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">订购电量:</span><span class="c-success">' + (port.needElec || 0) + '</span>度</p>')
- }
- if (port.cardConsumeMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">本次刷卡已使用:</span><span class="c-success">' + (port.cardConsumeMoney || '') + '</span></p>')
- }
- if (port.lastPayMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">单次刷卡金额:</span><span class="c-success">' + (port.lastPayMoney || '') + '</span></p>')
- }
- if (port.cardLeftMoney != null) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">本次刷卡剩余:</span><span class="c-success">' + (port.cardLeftMoney || '') + '</span></p>')
- }
- if (port.cardBalance) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">卡上余额:</span><span class="c-success">' + (port.cardBalance || '') + '</span></p>')
- }
- if (port.sequanceNo) {
- orderDom.append('<p class="port-info margin-t-5 "><span class="">流水号:</span><span class="c-success">' + (port.sequanceNo || '') + '</span></p>')
- }
- // 等待执行的订单
- if (port.waittingOrder && port.waittingOrder.length) {
- for (var index in port.waittingOrder) {
- var item = port.waittingOrder[index]
- var orderWaitDom = $('<div class="order-info mui-clearfix"><div class="font-14 p-title">等待执行订单' + (parseInt(index) + 1) + '</div></div>')
- dom.append(orderWaitDom)
- if (item.createTime != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">创建时间:</span><span class="c-success">' + item.createTime + '</span></p>')
- }
- if (item.nickName != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">用户昵称:</span><span class="c-success">' + item.nickName + '</span></p>')
- }
- if (item.consumeType != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">消费:</span><span class="c-success">' + getPayTypeEnum(item, item.consumeType) + '</span></p>')
- }
- if (item.needTime != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">订购时间:</span><span class="c-success">' + (item.needTime || 0) + '</span></p>')
- }
- if (item.needElec != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">订购电量:</span><span class="c-success">' + (item.needElec || '') + '</span>度</p>')
- }
- if (item.cardNo != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">卡号:</span><span class="c-success">' + item.cardNo + '</span></p>')
- }
- if (item.cardBalance != null) {
- orderWaitDom.append('<p class="port-info margin-t-5 "><span class="">卡上余额:</span><span class="c-success">' + item.cardBalance + '</span></p>')
- }
- }
- }
- let qiangStatusMap = {
- yes: '是',
- no: '否',
- unknow: '未知'
- }
- // 设备信息
- if (port.power != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">功率:</span><span class="c-success">' + (port.power || 0) + '</span>瓦</p>')
- }
- if (port.STA != null) {
- devDom.append('<p class="port-info margin-t-5"><span>STA:</span><span class="c-success">' + (port.STA || '') + '</span></p>')
- }
- if (port.isPlugin != null) {
- devDom.append('<p class="port-info margin-t-5"><span>是否插枪:</span><span class="c-success">' + (qiangStatusMap[port.isPlugin] || '') + '</span></p>')
- }
- if (port.qiangGuiwei != null) {
- devDom.append('<p class="port-info margin-t-5"><span>枪是否归位:</span><span class="c-success">' + (qiangStatusMap[port.qiangGuiwei] || '') + '</span></p>')
- }
- if (port.electricity != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电流:</span><span class="c-success">' + (port.electricity || 0) + '</span>安</p>')
- }
- if (port.current != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电流:</span><span class="c-success">' + (port.current || 0) + '</span>安</p>')
- }
- if (port.ampere != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电流大小:</span><span class="c-success">' + (port.ampere || 0) + '</span>安</p>')
- }
- if (port.outputVoltage != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">输出电压:</span><span class="c-success">' + (port.outputVoltage || 0) + '</span>伏</p>')
- }
- if (port.outputElec != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">输出电流:</span><span class="c-success">' + (port.outputElec || 0) + '</span>安</p>')
- }
- if (port.chargeStatus != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">充电状态:</span><span class="c-success">' + (port.chargeStatus || 0) + '</span></p>')
- }
- if (port.batteryVoltage != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电池电压:</span><span class="c-success">' + (port.batteryVoltage || 0) + '</span>伏</p>')
- }
- if (port.voltage != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电压:</span><span class="c-success">' + (port.voltage || 0) + '</span>伏</p>')
- }
- if (port.doorStatus != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">柜门状态:</span><span class="c-success">' + (port.doorStatus || '') + '</span></p>')
- }
- if (port.batteryImei != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电池编号:</span><span class="c-success">' + (port.batteryImei || '') + '</span></p>')
- }
- if (port.devTemp != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">充电桩芯片组温度:</span><span class="c-success">' + (port.devTemp || '') + '</span>℃</p>')
- }
- if (port.elecPoint != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">电量百分比:</span><span class="c-success">' + (port.elecPoint || 0) + '</span></p>')
- }
- if (port.gear != null) {
- devDom.append('<p class="port-info margin-t-5 "><span class="">充电档位:</span><span class="c-success">' + (gearMap[port.gear]) + '</span></p>')
- }
- //公共的 2018.6.5 所有设备的端口都需要:扫码带端口号的二维码直接使用
- dom.append('<p class="port-foot mui-text-right margin-t-5">' +
- (port.showPG != null ? ('<span class="iconfont icon-chart-line c-green font-18 padding-10" style="vertical-align: -2px;" onclick="goPowerGraph(\'' + port.index + '\',' + '\'' + (port.startTime || '') + '\')"></span>') : '') +
- '<span class="iconfont icon-qrcode c-primary padding-10" onclick="getQRCode(\'' + port.index + '\')"></span>' +
- '</p>')
- if (portConfig && portConfig.param) {
- dom.append('<p class="port-foot padding-t-10 c-primary" onclick="goConfig(\'' + port.index + '\')"><i class="iconfont icon-setting"></i> 参数配置</p>')
- }
- // 隐藏不含信息的模块
- if (devDom.find('p.port-info').length === 0) {
- devDom.hide()
- }
- if (orderDom.find('p.port-info').length === 0) {
- orderDom.hide()
- }
- }
- var lastPort = null
- // 立马停止充电
- function stopPort() {
- var dom = $(event.target).closest(".mui-table-view-cell");
- lastPort = dom.attr("index");
- if (code == 110700) {
- mui('#stopTypeMenu').popover('toggle');
- return
- }
- confirmStop()
- }
- function confirmStop(type){
- var tit = "您确定要立即停止充电?";
- var btnArray = ['取消', '确定'];
- mui.confirm(tit, '温馨提示', btnArray, function (e) {
- if (e.index == 1) {
- sendRequest("/device/operDevicePort", "POST", {
- logicalCode: logicalCode,
- stop: true,
- type: type,
- portIndex: lastPort
- }, function (response) {
- if (response.result == 1) {
- mui.toast("操作成功");
- setTimeout(function () {
- window.location.reload();
- }, 1000);
- } else {
- mui.toast(response.description);
- }
- });
- }
- });
- }
- function unlockPort() {
- var dom = $(event.target).closest(".mui-table-view-cell");
- var index = dom.attr("index");
- var tit = "您确定要立即开锁?";
- var btnArray = ['取消', '确定'];
- mui.confirm(tit, '温馨提示', btnArray, function (e) {
- if (e.index == 1) {
- sendRequest("/device/unlockPort", "POST", {
- logicalCode: logicalCode,
- portIndex: index
- }, function (response) {
- if (response.result == 1) {
- mui.toast("操作成功");
- setTimeout(function () {
- window.location.reload();
- }, 1000);
- } else {
- mui.toast(response.description);
- }
- });
- }
- });
- }
- // 启动端口的充电
- function chargePort() {
- var dom = $(event.target).closest(".mui-table-view-cell");
- var index = dom.attr("index");
- var status = dom.attr("status");
- var chargePort = true;
- var tit = "";
- if (status === "idle") {
- tit = "确定启动该端口充电?";
- } else {
- tit = "确定停止该端口充电?";
- }
- var btnArray = ['取消', '确定'];
- mui.confirm(tit, '温馨提示', btnArray, function (e) {
- if (e.index == 1) {
- sendRequest(
- "/device/operDevicePort",
- "POST",
- {
- logicalCode: logicalCode,
- charge: chargePort,
- portIndex: index
- },
- function (response) {
- if (response.result == 1) {
- mui.toast("操作成功");
- // setTimeout(
- // function () {
- // window.location.reload();
- // },
- // 1000
- // );
- } else {
- mui.toast(response.description);
- }
- }
- );
- }
- });
- }
- // 启用或禁用充电端口
- function activePort() {
- var dom = $(event.target).closest(".mui-table-view-cell");
- var index = dom.attr("index");
- var status = dom.attr("status");
- var active = "";
- var tit = "";
- if (status == "ban" || status == "fault") {
- active = true;
- tit = "您确定要启用该端口?";
- } else {
- active = false;
- tit = "您确定要禁用该端口?";
- }
- var btnArray = ['取消', '确定'];
- mui.confirm(tit, '温馨提示', btnArray, function (e) {
- if (e.index == 1) {
- sendRequest("/device/operDevicePort", "POST", {
- logicalCode: logicalCode,
- active: active,
- portIndex: index
- }, function (response) {
- if (response.result == 1) {
- mui.toast("操作成功");
- setTimeout(function () {
- window.location.reload();
- }, 1000);
- } else {
- mui.toast(response.description);
- }
- });
- }
- });
- }
- //生成带端口号的二维码
- function getQRCode(index) {
- $("#codePanel").show();
- var protocol = location.protocol;
- if (logicalCode.indexOf('B') > -1) {
- protocol = "https:"
- }
- var currentDomain = protocol + "//" + location.host;
- var userUrl = currentDomain + "/userLogin?l=" + logicalCode + "&chargeIndex=" + index;
- var dataURL = getQRCodeImageData(userUrl, logicalCode + '-' + index);
- $("#previewImg").attr({
- "width": 200,
- "height": 230,
- "src": dataURL
- });
- }
- function goConfig(index) {
- var devFeatures = getDeviceFeatures({code: code});
- var portConfig = devFeatures.portConfig
- var url = portConfig.param;
- var option = {
- logicalCode: logicalCode,
- port: index,
- type: type,
- };
- if (url) {
- goPage(url, option);
- } else {
- mui.alert('该设备端口无法进行参数配置', '提示', '确定');
- }
- }
- function closeQRCode() {
- $("#codePanel").hide();
- }
- function goPowerGraph(index, startTime) {
- function powerChartOption(showCurrent, dataList) {
- var xData = [];
- var powerSeries = [];
- var voltageSeries = [];
- var currentSeries = [];
- for (var index in dataList) {
- let item = dataList[index]
- xData.push(moment(item.time).format("HH:mm"));
- powerSeries.push(parseFloat(item.power));
- voltageSeries.push(parseFloat(item.voltage));
- currentSeries.push(parseFloat(item.current));
- }
- var option = {
- grid: {
- x: 40,
- x2: 15,
- y: 45,
- y2: 40,
- },
- toolbox: {
- },
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- lineStyle: {
- color: '#108EE9',
- width: .3,
- }
- }
- },
- legend: {
- data: ['功率']
- },
- xAxis: [{
- type: 'category',
- axisLabel: {
- textStyle: {
- color: "#aaa",
- fontSize: "12px"
- }
- },
- axisTick: {
- show: false,
- },
- axisLine: {
- show: false,
- },
- data: xData,
- min: 'dataMin',
- max: 'dataMax'
- }],
- yAxis: [
- {
- type: 'value',
- axisLabel: {
- textStyle: {
- color: "#aaa",
- fontSize: "12px"
- }
- },
- axisTick: {
- show: false,
- },
- axisLine: {
- show: false,
- },
- splitLine: {
- lineStyle: {
- color: '#ccc',
- width: 0.3,
- type: 'dotted'
- }
- },
- }
- ],
- series: [
- {
- name: '功率',
- type: 'line',
- itemStyle: {
- normal: {
- color: "#108EE9",
- }
- },
- data: powerSeries
- }
- ]
- };
- if (showCurrent == true) {
- option.legend.data = option.legend.data.concat(['电压', '电流'])
- option.series = option.series.concat([{
- name: '电压',
- type: 'line',
- itemStyle: {
- normal: {
- color: "#07C160",
- }
- },
- data: voltageSeries
- }, {
- name: '电流',
- type: 'line',
- itemStyle: {
- normal: {
- color: "#ED6066",
- }
- },
- data: currentSeries
- }])
- }
- return option
- }
- moment.locale('zh-cn');
- var _startTime = moment().subtract(8, 'hour').format("YYYY-MM-DD HH:mm:ss")
- var _endTime = moment().format("YYYY-MM-DD HH:mm:ss")
- if (startTime) {
- _startTime = moment(startTime.substr(-14, 14), 'MM-DD HH:mm:ss').subtract(4, 'hour').format("YYYY-MM-DD HH:mm:ss")
- }
- $("#showPG").show();
- $("#pgTitle").html('功率曲线( 端口: <em class="c-success">' + index + '</em> )' );
- var powerGraph = echarts.init(document.getElementById('powerGraph'));
- let url = '/common/getPowerGraph'
- sendRequest({
- url: url,
- type: "GET",
- data: {
- logicalCode: logicalCode,
- startTime: _startTime,
- endTime: _endTime,
- port: index
- },
- mask: "正在获取端口详细信息...",
- success: function (response) {
- if (response.result === 1) {
- var payload = response.payload;
- powerGraph.setOption(powerChartOption(0, payload.dataList))
- powerGraph.resize()
- } else {
- mui.toast(response.description);
- }
- }
- });
- }
- function closePG() {
- $("#showPG").hide();
- }
- function goUpper() {
- var url = "remote-upper.html";
- var option = {logicalCode: logicalCode,}
- goPage(url, option);
- }
- function goUser(openId) {
- if (openId) {
- var url = "/dealer/index.html#/user/detail?openId=" + openId
- goPage(url);
- }
- }
- function goUserCard(openId) {
- if (openId) {
- var url = "/app/card-manage.html?userId=" + openId
- goPage(url);
- }
- }
- // 点击字段看详情
- $(function () {
- $('body').on('click', '.port-info:not(".no-alert")', function () {
- mui.alert($(this).text())
- })
- })
- </script>
- </body>
- </html>
|