123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683 |
- var userAgent = navigator.userAgent;
- var BROWSER_TYPE = "";
- if (userAgent.match(/MicroMessenger/i)) {
- BROWSER_TYPE = "wechat";
- } else if (userAgent.match(/Alipay/i)) {
- BROWSER_TYPE = "alipay";
- } else {
- //测试页面暂不做限制
- if (isTest()) {
- } else {
- alert("已禁止本次访问:您必须使用微信或支付宝访问本页面!");
- var opened = window.open("about:blank", "_self");
- opened.opener = null;
- opened.close();
- }
- }
- var ua = navigator.userAgent.toLowerCase()
- if (/android/i.test(ua)) {
- window.OS_TYPE = 'Android'
- } else if (/(iphone|ipad|ipod|ios)/i.test(ua)) {
- window.OS_TYPE = 'IOS'
- } else if (/Windows/i.test(ua)) {
- window.OS_TYPE = 'WinPhone'
- } else {
- window.OS_TYPE = 'Unknown'
- }
- function setTheme() {
- var theme = "";
- // 如果是终端用户,则根据浏览器来配置
- if (location.pathname.indexOf('/pages') == 0) {
- if (BROWSER_TYPE == "wechat") {
- theme = "theme-green";
- } else if (BROWSER_TYPE == "alipay") {
- theme = "theme-alipay";
- }
- } else {
- // 如果是代理商、经销商、测试系统,则用cookied 皮肤配置
- theme = getCookie("theme_name") || "theme-alipay";
- }
- $("html").addClass(theme);
- }
- setTheme();
- //判断是否为测试环境
- function isTest(no5tao) {
- if (no5tao) {
- return location.port != '8000' && (location.host.indexOf("127.0.0.1") > -1 || location.host.indexOf("localhost") > -1 || location.host.indexOf("192.168.") > -1);
- } else {
- return location.port != '8000' && (location.host.indexOf("127.0.0.1") > -1 || location.host.indexOf("localhost") > -1 || location.host.indexOf("192.168.") > -1 || location.host.indexOf("5tao5ai.com") > -1);
- }
- }
- //rem模式
- function remModel() {
- (function (doc, win) {
- var docEl = doc.documentElement,
- resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
- isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
- recalc = function () {
- var clientWidth = docEl.clientWidth;
- var clientHeight = docEl.clientHeight;
- if (!clientWidth) return;
- if (clientWidth >= 750) {
- clientWidth = 750
- }
- docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
- docEl.dataset.percent = 100 * (clientWidth / 750)
- };
- recalc();
- if (!doc.addEventListener) return;
- win.addEventListener(resizeEvt, recalc, false);
- })(document, window);
- }
- if ($("html").hasClass("remModel")) {
- remModel();
- }
- $(function () {
- //测试模式菜单,依赖jQuery,没有mui的css也能显示,只是不好看
- if (isTest()) {
- var fadeTimer = null
- function fadeNode() {
- fadeTimer = setTimeout(function () {
- testHomeBtn.addClass('fade');
- }, 1500);
- }
- function showNode() {
- clearTimeout(fadeTimer)
- testHomeBtn.removeClass('fade');
- }
- function setCss(x, y) {
- if (x !== undefined) {
- $("#testHomeBtn").css({
- 'left': x + 'px',
- 'top': y + 'px'
- });
- }
- }
- function bindCellClick(cell, url) {
- cell.on('click', function () {
- if ($('#testHomePort:checked').length === 1 && url.indexOf('#/') > -1) {
- url = location.origin + ':8080' + url
- }
- location.href = url
- })
- }
- function initPanel() {
- var list = [
- {
- "name": "经销商-VUE",
- "menu": [
- {name: '经营明细', url: '/dealer/index.html#/dealer/billList'},
- {name: '订单查询', url: '/dealer/index.html#/order/list'},
- {name: '告警管理', url: '/dealer/index.html#/alarm/list'},
- {name: '用户审核', url: '/dealer/index.html#/user/identify'},
- {name: '虚拟卡券', url: '/dealer/index.html#/dealer/cardCenter/cardTicketList'},
- {name: '子账号管理', url: '/dealer/index.html#/subAccount'},
- {name: '我的消息', url: '/dealer/index.html#/news/list'},
- {name: '导出报表', url: '/dealer/index.html#/export/exportList'},
- {name: '用户管理', url: '/dealer/index.html#/user/list'},
- {name: '设备信号', url: '/dealer/index.html#/signal/chart'},
- {name: '24小时电价', url: '/dealer/index.html#/device/elcPrice24'},
- {name: '设备格子配置', url: '/dealer/index.html#/deviceGrid/gridList'},
- {name: '从机配置', url: '/dealer/index.html#/device/slaveList'},
- {name: '库存管理', url: '/dealer/index.html#/stock/stockList'},
- {name: '商品种类管理', url: '/dealer/index.html#/goods/goodsList'},
- {name: '加盟管理', url: '/dealer/index.html#/join/main'},
- {name: '电费配置', url: '/dealer/index.html#/elecFee/list'},
- ]
- },
- {
- name: "用户-VUE",
- menu: [
- {name: '用户套餐', url: '/user/index.html#/dev?logicalCode=1'},
- {name: '用户个人中心', url: '/user/index.html#/user/me'},
- {name: '用户地图', url: '/user/index.html#/user/map'},
- ]
- },
- {
- "name": "经销商",
- "menu": [
- {name: '主页', url: '/app/index.html'},
- ]
- },
- {
- "name": "代理商",
- "menu": [
- {name: '主页', url: '/agents/index.html'},
- ]
- },
- {
- "name": "测试",
- "menu": [
- {name: '主页', url: '/test/index.html'},
- ]
- },
- ]
- var testHomePort = localStorage.getItem('testHomePort')
- var testHomePanel = $('<div id="testHomePanel" class="edit-back edit-bottom"><div class="edit-content mui-content"><div class="mui-content-padded c-black text-center">页面测试导航</div>' +
- '<ul class="mui-table-view first-menu"> <li class="mui-table-view-cell">' +
- ' <label for="testHomePort" style="width: 100%;display: block">VUE端口 ' +
- ' <input id="testHomePort" ' + (testHomePort === '8080' ? ' checked ' : '') +
- ' type="checkbox" class="margin-l-10"> 8080 </label>' +
- ' </li>' +
- '</ul>' +
- '</div></div>')
- function appendLink(pDom, item) {
- var cell = $('<li class="mui-table-view-cell"><div class="mui-navigate-right"><em>' + item.name + '</em><span class="mui-pull-right custom-right"></span></div></li>')
- pDom.append(cell)
- bindCellClick(cell, item.url)
- }
- for (var index in list) {
- var item = list[index]
- var menu = item.menu
- var name = item.name
- if (menu) {
- var groupHtml = $(`
- <li class="mui-table-view-cell mui-collapse ">
- <a class="mui-navigate-right"><span>${name}</span></a>
- <div class="mui-collapse-content">
- <ul class="mui-table-view second-menu" style="margin-top: -8px;">
- </ul>
- </div>
- </li>
- `);
- testHomePanel.find('.first-menu').append(groupHtml)
- for (var index2 in menu) {
- var item2 = menu[index2]
- appendLink(groupHtml.find('.second-menu'), item2)
- }
- } else {
- appendLink(testHomePanel.find('.first-menu'), item)
- }
- }
- $('body').append(testHomePanel)
- $('#testHomePanel').on('click', function (evt) {
- if ($(evt.target).closest('.edit-content').length === 0) {
- $('#testHomePanel').hide();
- }
- });
- $('#testHomePort').on('change', function (evt) {
- localStorage.setItem('testHomePort', this.checked ? '8080' : '')
- });
- }
- function showPanel() {
- var testHomePanel = $('#testHomePanel')
- if (testHomePanel.length === 0) {
- initPanel()
- }
- testHomePanel.show();
- }
- var testHomeBtn = $('<div id="testHomeBtn"></div>');
- $("body").prepend(testHomeBtn);
- $('#testHomeBtn').on('touchmove', function (e) {
- // 阻止其他事件
- e.preventDefault();
- // 判断手指数量
- if (e.originalEvent.targetTouches.length === 1) {
- var maxW = $(window).width()
- var maxH = $(window).height()
- // 将元素放在滑动位置
- var touch = e.originalEvent.targetTouches[0];
- var x = touch.clientX > 0 ? touch.clientX : 0
- var y = touch.clientY > 0 ? touch.clientY : 0
- x = x > maxW ? maxW : x
- y = y > maxH ? maxH : y
- setCss(x, y)
- localStorage.setItem('testHomeBtn_x', x)
- localStorage.setItem('testHomeBtn_y', y)
- }
- }).on('touchend', function (e) {
- fadeNode()
- }).on('touchstart', function (e) {
- showNode()
- }).on('click', function (e) {
- showPanel()
- });
- fadeNode()
- setCss(localStorage.getItem('testHomeBtn_x'), localStorage.getItem('testHomeBtn_y'))
- }
- });
- //Cookie常量
- var Cookie_Constant = {
- //用户头像,或是代理商定义的logo作为用户头像
- userHeadImg: "userHeadImg",
- agentLogoUrl: "agentLogoUrl",
- agentBrandName: "agentBrandName",
- };
- //初始化设置所有页面的LOGO
- $(function () {
- var dom = $('<link type="favicon" rel="shortcut icon" type="image/x-icon" href="favicon.ico" />');
- dom.attr("href", getCookie(Cookie_Constant.agentLogoUrl) || "/favicon.ico");
- $("html head").append(dom);
- var titleDom = $("title");
- if (titleDom.hasClass("readonly")) {
- return;
- }
- var oldTitle = titleDom.text();
- var name = getCookie(Cookie_Constant.agentBrandName) || "";
- var title = name + (name && oldTitle ? "-" : "") + oldTitle;
- titleDom.text(title);
- });
- function getCookie(c_name) {
- if ($.cookie) {
- return $.cookie(c_name);
- } else {
- return null
- }
- }
- function setCookie(c_name, value, option) {
- if ($.cookie) {
- $.cookie(c_name, value, option);
- }
- }
- function clearCookie(name) {
- $.cookie(name, null);
- }
- function getQueryString(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null)
- return decodeURI(r[2]);
- return null;
- }
- function getQueryStringByUrl(url, name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- url = url.substring(url.indexOf('?') || 0, url.length)
- var r = url.substr(1).match(reg);
- if (r != null)
- return decodeURI(r[2]);
- return null;
- }
- // exp 单位是毫秒
- function setLocalStorage(key, value, exp) {
- var curTime = new Date().getTime();
- exp = exp || (1000 * 3600 * 24 * 30);//默认30天
- localStorage.setItem(key, JSON.stringify({data: value, expTime: curTime + exp}));
- }
- function getLocalStorage(key) {
- var curTime = new Date().getTime();
- var data = localStorage.getItem(key);
- if (data) {
- var dataObj = JSON.parse(data);
- if (curTime > dataObj.expTime) {
- // 信息过期
- return null;
- } else {
- var dataObjDatatoJson = dataObj.data;
- return dataObjDatatoJson;
- }
- }
- }
- // exp 单位是毫秒
- function setSessionStorage(key, value, exp) {
- var curTime = new Date().getTime();
- exp = exp || (1000 * 3600 * 24 * 30);//默认30天
- sessionStorage.setItem(key, JSON.stringify({data: value, expTime: curTime + exp}));
- }
- function getSessionStorage(key) {
- var curTime = new Date().getTime();
- var data = sessionStorage.getItem(key);
- if (data) {
- var dataObj = JSON.parse(data);
- if (curTime > dataObj.expTime) {
- // 信息过期
- return null;
- } else {
- var dataObjDatatoJson = dataObj.data;
- return dataObjDatatoJson;
- }
- }
- }
- //展示通知消息
- function showNotification(id, text) {
- if (localStorage.Notification != id) {
- var html = $('<div class="notification"> <span class="notification-text"></span></div>');
- $("body").prepend(html);
- html.find(".notification-text").text(text);
- html.click(function () {
- var that = this;
- msgPopup('温馨提示', text, "确定", function (e) {
- localStorage.Notification = id;
- $(that).remove();
- });
- });
- }
- }
- //测试系统提示,避免让用户产生误解
- function showTestInfo() {
- if (isTest()) {
- var html = $('<div class="notification"> <span class="notification-text shine-text shine-white-red">当前为测试系统,所有数据都是模拟数据!!!</span></div>');
- $("body").prepend(html);
- html.click(function () {
- var that = this;
- msgPopup('温馨提示', "当前为测试系统!您可以通过公众号【微付乐管理后台】登录正式系统,谢谢。", "确定", function (e) {
- $(that).remove();
- });
- });
- setTimeout(function () {
- html.fadeOut(2000);
- }, 1000);
- }
- }
- function get_token_session_key(auth_domain) {
- return auth_domain + "_session_id";
- }
- function get_token_headers(auth_domain) {
- var token = localStorage.getItem(get_token_session_key(auth_domain)) || "";
- return {
- 'jwt-auth-domain': auth_domain,
- 'jwt-token': token
- };
- }
- //原ajax封装
- function myAjax(option) {
- //测试用模拟数据,本地局域网调试
- if (isTest(true)) {
- option.url = "/mock" + option.url;
- } else {
- option.url = "" + option.url;
- }
- var type = option.type;
- var data = option.data;
- var maskText = option.mask;
- if (!option.dataType) {
- option.dataType = 'json';//后台服务器返回数据类型,全为json
- }
- //默认超时时间设置
- if (!option.timeout) {
- option.timeout = 60000;//设置超时时间45秒,后台设备通讯的超时时间保持一致
- }
- var mask = null;
- //利用mask防止post操作重复执行
- //如果mask特意配置成false,则不展示
- if (maskText != false) {
- if ((type && type.toUpperCase() == "POST") || maskText != null) {
- //mask倒计时,超时时间为准
- var timeout = Math.round(option.timeout / 1000);
- mask = initMaskInterval(timeout, option.maskDelay, option.maskContainer, maskText);
- }
- }
- //get请求加参数,避免缓存
- if (type.toUpperCase() == "GET") {
- if (data == null) {
- option.data = data = {};
- }
- if (typeof data !== "object") {
- console.warn('不推荐的参数格式', data)
- }
- if (data.random === null && option.url.indexOf("random=") == -1) {
- data.random = Math.random() * 1000;
- }
- }
- //数据内容适配,
- var successHand = option.success;
- var errorHand = option.error;
- var completeHand = option.complete;
- if (successHand) {
- option.success = function (response) {
- //后台可能传data、para、payload,三者兼容
- if (response) {
- if (response.payload) {
- response.para = response.payload;
- response.data = response.payload;
- }
- }
- successHand(response);
- }
- }
- if (errorHand) {
- option.error = function (response) {
- //后台可能传data、para、payload,三者兼容
- if (response) {
- if (response.payload) {
- response.para = response.payload;
- response.data = response.payload;
- }
- }
- errorHand(response);
- }
- }
- option.complete = function (response) {
- //后台可能传data、para、payload,三者兼容
- if (response) {
- if (response.payload) {
- response.para = response.payload;
- response.data = response.payload;
- }
- }
- //清除mask
- if (mask) {
- mask.remove();
- mask = null;
- }
- if (completeHand) {
- completeHand(response);
- }
- };
- $.ajax(option);
- }
- function initMaskInterval(timeout, maskDelay, maskContainer, msg) {
- if (msg == null) {
- msg = "";
- }
- var mask = new Mask({text: msg, container: maskContainer});
- mask.show();
- var maskInter = setInterval(function () {
- timeout = timeout - 1;
- var newMsg = msg + " " + timeout;
- if (!mask.dom) {
- clearInterval(maskInter);
- maskInter = null;
- return;
- }
- if (timeout > 0) {
- mask.text(newMsg);
- } else {
- mask.text("<div class='mask-callback' style='padding: 4px'>" +
- "<div class='iconfont '>o(╥﹏╥)o 出了点小问题,点此处关闭......</div><div></div>" +
- "</div>");
- mask.dark();
- mask.dom.find(".mask-callback").click(function () {
- mask.remove();
- mask = null;
- });
- clearInterval(maskInter);
- maskInter = null;
- }
- }, maskDelay || 1000);
- return mask;
- }
- //jQuery请求公共方法
- function sendRequest(url, type, data, success, contentType, async, complete) {
- //可能直接传递option
- var optionIn = {};
- var mask = null;
- var maskContainer = null;
- var maskDelay = null;
- var headers = null;
- if ($.isPlainObject(url)) {
- optionIn = url;
- url = optionIn.url;
- type = optionIn.type;
- data = optionIn.data;
- headers = optionIn.headers;
- success = optionIn.success;
- contentType = optionIn.contentType;
- async = optionIn.async;
- complete = optionIn.complete
- mask = optionIn.mask;
- maskContainer = optionIn.maskContainer;
- maskDelay = optionIn.maskDelay;
- }
- var options = {
- url: url,
- type: type,
- mask: mask,
- headers: headers,
- maskDelay: maskDelay,
- maskContainer: maskContainer,
- success: function (result) {
- if (success) {
- success(result);
- }
- },
- dataType: 'json',//服务器返回数据类型
- timeout: optionIn.timeout || 60000,
- error: function (xhr) {
- if (xhr.status == 401) {
- window.mui && mui.toast('登录超时,即将跳转到登录页面...');
- setTimeout(function () {
- var url = 'login.html';
- goPage(url);
- }, 1500)
- } else {
- if (optionIn.error) {
- optionIn.error(xhr)
- } else {
- var title = "温馨提示";
- var msg = '获取数据失败,请检查网络';
- var btnword = '我知道了';
- msgPopup(title, msg, btnword);
- }
- }
- },
- complete: function (result) {
- if (complete) {
- complete(result);//目前主要用于$("#progress").hide();
- }
- }
- };
- if (data) {
- if ((type.toUpperCase() == 'PUT' || type.toUpperCase() == 'POST') && contentType == "json" && $.isPlainObject(data)) {
- options.data = JSON.stringify(data);
- options.contentType = 'application/json';//发送给后台的数据类型
- } else {
- options.data = data;
- }
- }
- if (typeof async != 'undefined') {
- options.async = async;
- }
- myAjax(options);
- }
- //带版本号的页面调整
- function goPage(url, para) {
- if (!url || url.indexOf("#") == 0 || url.indexOf("javascript:") > -1 || url.indexOf("tel:") > -1) {
- return;
- }
- url = getVersionUrl(url, para);
- location.href = url;
- }
- //获得APP版本号
- function getAppVersion() {
- var today = new Date();
- var v = "" + today.getFullYear() + (today.getMonth() + 1) + today.getDay();//默认天为版本号
- if (window.APP_VERSION) {
- v = window.APP_VERSION;
- }
- return v;
- }
- //获取带版本号的url
- function getVersionUrl(url, para) {
- function addParam(_url, _para) {
- for (var key in _para) {
- var con = "?";
- if (_url.indexOf("?") > 0) {
- con = "&";
- }
- var value = _para[key];
- _url = _url + con + key + "=" + encodeURIComponent(value);
- }
- return _url
- }
- // 如果含有vue的跳转页面,版本号需要加到html后
- var maodian = url.indexOf('#')
- var mainUrl = url
- var maoUrl = ''
- var version = ''
- //判断参数是否有自定义的v字段,有的话不加版本
- if (para && para.v != null) {
- //nothing
- } else {
- //判断url中是否有v字段,没有v字段则加上版本号
- if (url && url.indexOf("?v=") == -1 && url.indexOf("&v=") == -1) {
- version = getAppVersion();
- }
- }
- // 如果是vue页面
- if (maodian > -1) {
- // 拆分路径,一个是html主路径,一个是路由路径
- mainUrl = url.substring(0, maodian);
- maoUrl = url.substring(maodian);
- //增加一个版本号
- var urlHead = addParam(mainUrl, {v: version})
- //增加路由参数
- var urlSub = addParam(maoUrl, para)
- return urlHead + urlSub
- } else {
- return addParam(mainUrl, $.extend({v: version}, para))
- }
- }
- //不产生历史记录的方式跳转,改善返回操作的体验,某些二级页面中包含子模块不需要产生历史记录
- function replacePage(url, para) {
- history.replaceState(null, null, window.getVersionUrl(url, para));
- location.reload();
- }
- //a标签的html跳转加版本号
- $(function () {
- //不用mui绑定tap和click事件,mui绑定后各种BUG
- $('body').on('tap', 'a[href*=".html"]', function (event) {
- console.log("%c jquery tap a", "color:#1ad618;font-weight:bold;");
- var href = this.getAttribute("href");
- //如果不为空、不是锚点、不是tel和javascript,阻止浏览器的默认跳转,进行自定义跳转
- if (href != "") {
- event.preventDefault();
- goPage(href);
- } else {
- return true;
- }
- });
- });
- function uplog(data) {
- return
- }
- window.onerror = function (errorMessage, scriptURI, lineNumber, columnNumber, errorObj) {
- var info = "【错误信息】:" + errorMessage +
- " 【出错文件】:" + scriptURI +
- " 【出错行号】:" + lineNumber +
- " 【出错列号】:" + columnNumber +
- " 【错误详情】:" + (errorObj ? errorObj.toString() : "");
- uplog && uplog({level: "error", short_message: "js错误", full_message: info});
- }
- //loading
- function showLoading(text) {
- var mask = new Mask(text);
- mask.show();
- }
- //隐藏“加载中”
- function hideLoading() {
- $(".load-mask").remove();
- }
- //文本过长用...代替
- function wordlimit(str, wordlength) {
- if (!str) {
- return "";
- }
- var nowLength = str.length;
- var wordStr = "";
- if (nowLength > wordlength) {
- wordStr = str.substr(0, wordlength) + '...';
- } else {
- wordStr = str;
- }
- return wordStr;
- }
- //动画遮盖层
- function Mask(text) {
- //可能直接传递option
- var optionIn = {};
- var performance = false;
- var container = null;
- if ($.isPlainObject(text)) {
- optionIn = text;
- performance = optionIn.performance;//某些场景不要有动画,否则性能问题
- text = optionIn.text;
- container = optionIn.container;
- }
- var dom = $('<div class="load-mask"><div class="loader-inner ' + (performance ? '' : 'ball-pulse') + '"><div></div><div></div><div></div><span class="load-text"></span></div></div>');
- this.container = container;
- this.dom = dom;
- if (text != null) {
- dom.find(".load-text").html(text);
- }
- if (container) {
- dom.addClass('absolute')
- }
- }
- Mask.prototype.show = function (quickly) {
- var dom = this.dom;
- var container = this.container;
- if (container) {
- $(container).append(dom)
- } else {
- $("body").append(dom);
- }
- if (quickly) {
- dom.addClass("active");
- } else {
- setTimeout(function () {
- dom.addClass("active");
- }, 400);
- }
- return this;
- };
- Mask.prototype.hide = function () {
- this.dom.hide();
- return this;
- };
- Mask.prototype.dark = function () {
- this.dom.addClass("dark");
- return this;
- };
- Mask.prototype.text = function (text) {
- if (text != null) {
- this.dom.find(".load-text").html(text);
- }
- return this;
- };
- Mask.prototype.remove = function () {
- if (this.dom) {
- this.dom.remove();
- this.dom = null;
- }
- };
- //输入框2位小数限制
- function myNumberic(e, len) {
- var obj = e.srcElement || e.target;
- var dot = obj.value.indexOf(".");//alert(e.which);
- len = (typeof (len) == "undefined") ? 2 : len;
- var key = e.keyCode || e.which;
- //不能输入小数点
- if (len <= 0 && key == 46) {
- return false;
- }
- if (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40))//这里为了兼容Firefox的backspace,tab,del,方向键
- return true;
- if (key <= 57 && key >= 48) { //数字
- if (dot == -1)//没有小数点
- return true;
- else if (obj.value.length <= dot + len)//小数位数
- return true;
- } else if ((key == 46) && dot == -1) {//小数点
- return true;
- }
- return false;
- }
- // 输入时光标bug ,导致只有onchange事件好用,正则有待优化,先输小数点不会被过滤掉。。。todo
- function numberFixed(event, len) {
- var value = $(event.target).val();
- var regStrs = [
- ['[^\\d\\.]+$', ''], //禁止录入任何非数字和点
- ['\\.(\\d?)\\.+', '.$1'], //禁止录入两个以上的点
- ['^(\\d+\\.\\d{' + len + '}).+', '$1'] //禁止录入小数点后len位以上
- ];
- for (var i = 0; i < regStrs.length; i++) {
- var reg = new RegExp(regStrs[i][0]);
- value = value.replace(reg, regStrs[i][1]);
- }
- $(event.target).val(value);
- }
- //正整数或两位以内的小数(包括一位小数)
- function isMoney(str) {
- var g = /^\d+(\.\d{1,2})?$/;
- return g.test(str);
- }
- //电话
- function isPhone(str) {
- var phoneReg = /^[1][3456789]\d{9}$/;
- return phoneReg.test(str);
- }
- //整数
- function isPInt(str) {
- var g = /^[1-9]*[1-9][0-9]*$/;
- return g.test(str);
- }
- //如果某几个关键字是包含关系,短的关键字放后面,因为设备真实名称一般是比较长的,比如:XXX脉冲充电桩.indexOf('汽车充电桩')
- window.DEV_ICON_MAP = {
- "空气净化": "kongqijinghuaqi",
- "吸氧": "xiyangji",
- "制氧": "yangqi",
- "微波炉": "weibolu",
- "洗衣机": "xiyiji",
- "烘干": "hongganji",
- "洗鞋": "xiezi",
- "洗澡": "xizao",
- "搓澡": "xizaomuyu",
- "淋浴": "xizaomuyu",
- "吹风": "chuifengji",
- "售液": "water",
- "啤酒": "pijiu",
- "售水": "yinshuiji",
- "饮料": "yinshuiji",
- "喝水": "yinshuiji",
- "饮水": "yinshuiji",
- "漱口水": "pingzi",
- "洗手液": "xishouye",
- "洗衣液": "xiyiye",
- "游戏": "game",
- "射": "sheqiang",
- "枪": "sheqiang",
- "摇摇车": "yaoyaoche",
- "儿童车": "ertongche",
- "娃娃机": "zhuawawa",
- "购物车": "gouwuche",
- "咖啡": "kafei",
- "格子": "shouhuoji",
- "售货": "shouhuoji",
- "储物": "chuwugui",
- "纸巾": "zhijin",
- "体重": "tizhong",
- "洗车": "xicheji",
- "汽车充电": "qichechongdian",
- "充电桩": "chongdianzhuang",
- "充电": "chongdian",
- "足底按摩": "zuliao",
- "足疗": "zuliao",
- "按摩抱枕": "baozhen",
- "按摩": "anmoyi",//有按摩坐垫、按摩椅、足底按摩机
- "水疗": "shuiliaoyi",
- "床": "chuang",
- };
- function getDevIconName(typeName) {
- if (typeName) {
- for (var key in DEV_ICON_MAP) {
- if (typeName.indexOf(key) > -1) {
- return "icon-" + DEV_ICON_MAP[key];
- }
- }
- }
- return "icon-device";
- }
- // 微信提现支持的银行参考:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_4&index=5
- var BANK_COLOR_TYPE = {
- red: {'background-image': 'linear-gradient(120deg, #D2354F 0%, #A22032 100%)'},
- green: {'background-image': 'linear-gradient(120deg, #32A680 0%, #1C9F66 100%)'},
- blue: {'background-image': 'linear-gradient(120deg, #166DD3 0%, #0D3F86 100%)'},
- yellow: {'background-image': 'linear-gradient(120deg, #DE9651 0%, #FF885C 100%)'},
- }
- var BANK_STYLE_MAP = {
- '中国工商银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#E50112', icon: 'bicon-gongshangyinhang',},
- '中国农业银行': {cardStyle: BANK_COLOR_TYPE.green, color: '#008566', icon: 'bicon-nongyeyinhang',},
- '中国银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#9E1F31', icon: 'bicon-zhongguoyinhang',},
- '中国建设银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#003A90', icon: 'bicon-jiansheyinhang',},
- '招商银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#E31E25', icon: 'bicon-zhaoshangyinhang',},
- '中国邮政储蓄银行': {cardStyle: BANK_COLOR_TYPE.green, color: '#006F46', icon: 'bicon-youchuyinhang',},
- '交通银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#1D1F86', icon: 'bicon-jiaotongyinhang',},
- '浦发银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#2D5082', icon: 'bicon-pufayinhang',},
- '中国民生银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#1D2087', icon: 'bicon-minshengyinhang',},
- '兴业银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#003F8D', icon: 'bicon-xingyeyinhang',},
- '平安银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#FF3204', icon: 'bicon-pinganyinhang',},
- '中信银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#BB1D20', icon: 'bicon-zhongxinyinhang',},
- '华夏银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#E50012', icon: 'bicon-huaxiayinhang',},
- '广发银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#E7191B', icon: 'bicon-guangfayinhang',},
- '中国光大银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F39C00', icon: 'bicon-guangdayinhang',},
- '北京银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#C11E22', icon: 'bicon-beijingyinhang',},
- '宁波银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-ningboyinhang',},
- '上海银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-shanghaiyinhang',},
- '南京银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-nanjingyinhang',},
- '长子县融汇村镇银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-yinhang',},
- '长沙银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-changsha',},
- '浙江泰隆商业银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-zhejiangtailongshangyeyinhang',},
- '中原银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-zhongyuanyinhang',},
- '企业银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-qiyeyinhanglogo',},
- '顺德农商银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-shundenongshangyinhang',},
- '衡水市商业银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-hengshuiyinhang',},
- '长治市商业银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-changzhiyinhanglogo',},
- '大同市商业银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-datongyinhanglogo',},
- '河南省农村信用社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-henanshengnongcunxinyongshelianheshe',
- },
- '宁夏黄河农村商业银行': {
- cardStyle: BANK_COLOR_TYPE.blue,
- color: '#F19339',
- icon: 'bicon-ningxiahuanghenongcunshangyeyinhang',
- },
- '山西省农村信用社': {cardStyle: BANK_COLOR_TYPE.green, color: '#F19339', icon: 'bicon-shanxishengnongcunxinyongshe',},
- '安徽省农村信用社': {cardStyle: BANK_COLOR_TYPE.green, color: '#F19339', icon: 'bicon-anhuishengnongcunxinyongshe',},
- '甘肃省农村信用社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-gansushengnongcunxinyongshelianheshe',
- },
- '天津农商银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-tianjinnongshangyinhang',},
- '广西壮族自治区农村信用社联合社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-guangxizhuangzuzizhiqunongcunxinyongshelianheshe',
- },
- '陕西省农信社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-shanxishengnongcunxinyongshelianheshe',
- },
- '深圳农村商业银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-shenzhennongcunshangyeyinhang',},
- '宁波鄞州农商行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-yinzhouyinhang',},
- '浙江省农村信用社联合社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-zhejiangshengnongcunxinyongshelianheshe',
- },
- '江苏省农村信用社联合社': {
- cardStyle: BANK_COLOR_TYPE.green,
- color: '#F19339',
- icon: 'bicon-jiangsushengnongcunxinyongshelianheshe',
- },
- '江苏紫金农村商业银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-jiangsuzijinnongcunshangyeyinhang',},
- '北京中关村银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-yinhang',},
- '星展银行(中国)': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-xingzhanyinhang',},
- '枣庄银行': {cardStyle: BANK_COLOR_TYPE.blue, color: '#F19339', icon: 'bicon-zaozhuangyinhang',},
- '海口联合农商银行': {cardStyle: BANK_COLOR_TYPE.yellow, color: '#F19339', icon: 'bicon-haikoulianhenongshangyinhang',},
- '南洋商业银行': {cardStyle: BANK_COLOR_TYPE.red, color: '#F19339', icon: 'bicon-nanyangshangyeyinhang',},
- };
- function findBankStyle(name) {
- for (var key in BANK_STYLE_MAP) {
- var bankStyle = BANK_STYLE_MAP[key];
- if (name.indexOf(key) > -1) {
- return bankStyle;
- }
- }
- return {color: '#c55055', icon: 'icon-bank-card',};//没找到返回默认图标
- }
- function msgPopup(title, msg, btnword, callback) {
- $('body').append('<div class="backdrop"></div>');
- var popupHtml = '<div class="popup">'
- + '<div class="popup-inner">'
- + '<div class="popup-title">' + title + '</div>'
- + '<div class="popup-text">' + msg + '</div>'
- + '</div>'
- + '<div class="popup-buttons">'
- + '<span class="popup-button">' + btnword + '</span>'
- + '</div>'
- + '</div>';
- $('.backdrop').addClass('active').touchmove(function (e) {
- e.preventDefault();
- }).after(popupHtml);
- $('.popup').addClass('popup-in');
- $('.popup-button').tap(function () {
- if (callback) {
- callback();
- }
- $('.backdrop, .popup').remove();
- return false;
- });
- }
- //尝试获取微信权限
- function getWxconfig(callback) {
- if (!window.wx) {
- if (isTest()) {
- alert('请引入微信api,否则无法扫码')
- }
- return;
- }
- var url = "/user/wxconfig";
- if (location.pathname.indexOf('/pages') === 0) {
- url = "/user/wxconfig";
- } else if (location.pathname.indexOf('/test') === 0) {
- url = "/test/wxconfig";
- } else if (location.pathname.indexOf('/app') === 0) {
- url = "/dealer/wxconfig";
- } else if (location.pathname.indexOf('/agents') === 0) {
- url = "/agent/wxconfig";
- }
- var checkUrl = location.href; // 当前页面路径包含问号参数必须一致,否则微信无法通过校验
- sendRequest(url,
- "GET", {"href": checkUrl}, function (response) {
- if (response.result == 1) {
- wx.config({
- debug: false,
- appId: response.para.wxconfig.appId,
- timestamp: response.para.wxconfig.timestamp,
- nonceStr: response.para.wxconfig.nonceStr,
- signature: response.para.wxconfig.signature,
- jsApiList: [
- 'scanQRCode',
- 'getLocation',
- // 调用的接口太多,反而容易失败
- // 'onMenuShareTimeline',
- // 'hideOptionMenu',//界面操作接口1
- // 'showOptionMenu',//界面操作接口2
- // 'closeWindow', ////界面操作接口3
- // 'hideMenuItems',////界面操作接口4
- // 'showMenuItems',////界面操作接口5
- // 'hideAllNonBaseMenuItem',////界面操作接口6
- // 'showAllNonBaseMenuItem'////界面操作接口7
- ],
- success: function (res) {
- console.log('wx.config success')
- },
- fail: function (res) {
- console.log('wx.config fail')
- },
- error: function (res) {
- console.log('wx.config error')
- },
- });
- if (callback) {
- callback();
- }
- console.log(response)
- }
- });
- }
- /*******
- * 微信扫码必须等待界面加载完,否则微信无法成功调用扫码
- * *******/
- // 获取扫码结果:支付宝、微信都能用,必须导入支付宝、微信api
- function ScanResult(success) {
- getWxconfig(goScan);
- function goScan() {
- if (BROWSER_TYPE == "alipay") {
- if (!window.ap) {
- alert('请引入支付宝api,否则无法扫码')
- return;
- }
- ap.scan(function (res) {
- success(res.code);
- });
- } else if (BROWSER_TYPE == "wechat") {
- if (!window.wx) {
- if (isTest()) {
- alert('请引入微信api,否则无法扫码')
- }
- return;
- }
- var mask = new Mask("正在获取扫码权限...");
- mask.show();
- wx.ready(function () {
- wx.scanQRCode({
- needResult: 1,
- scanType: ["qrCode"],
- success: function (res) {
- var resultStr = res.resultStr;
- success(resultStr);
- },
- fail: function (res) {
- alert(res.errMsg + "权限失效,请重新尝试。");
- },
- error: function (res) {
- if (res.errMsg.indexOf('function_not_exist') > 0) {
- alert('您的微信版本过低,请升级');
- }
- },
- cancel: function () {
- console.log('用户主动取消扫码');
- },
- complete: function () {
- console.log("完成扫码");
- mask.remove();
- }
- });
- });
- }
- }
- }
- // 获取当前地理位置,微信或支付宝接口
- function getLocation(callback, complete) {
- var locationType = "gcj02";
- if (BROWSER_TYPE == "alipay") {
- // 默认是GCJ-02坐标系
- ap.getLocation(function (res) {
- var longitude = res.longitude; // 经度
- var latitude = res.latitude; // 纬度
- if (callback) {
- callback({lng: longitude, lat: latitude, type: locationType})
- }
- complete && complete()
- })
- } else if (BROWSER_TYPE == "wechat") {
- getWxconfig(function () {
- wx.ready(function () {
- wx.getLocation({
- type: locationType, // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
- success: function (res) {
- var longitude = res.longitude; // 经度
- var latitude = res.latitude; // 纬度
- if (callback) {
- callback({lng: longitude, lat: latitude, type: locationType})
- }
- complete && complete()
- },
- fail: function (res) {
- alert('请您打开定位');
- complete && complete()
- },
- error: function (res) {
- if (res.errMsg.indexOf('function_not_exist') > 0) {
- alert('您的微信版本过低,请升级');
- }
- complete && complete()
- },
- cancel: function (res) {
- alert('您已取消定位授权');
- complete && complete()
- }
- });
- });
- });
- }
- }
- // 筛选控件公共事件
- function FilterComponent(optionIn) {
- if ($.isArray(optionIn)) {
- for (var index in optionIn) {
- var optItem = optionIn[index];
- bindEvent(optItem)
- }
- } else {
- bindEvent(optionIn)
- }
- function bindEvent(option) {
- var optionEx = {
- ok: function () {
- },
- cancel: function () {
- }
- };
- option = $.extend(optionEx, option);
- var panelDom;
- if (option.panel) {
- panelDom = $(option.panel)
- } else {
- panelDom = $('#options');
- }
- var maskDom = $('<div class="filter-list-mask mui-hidden"></div>');
- panelDom.append(maskDom);
- var triggerBtn;
- if (option.trigger) {
- triggerBtn = $(option.trigger)
- } else {
- triggerBtn = $('.filter-btn');
- }
- //展开|收起过滤条件
- triggerBtn.tap(function () {
- var hiddenOptions = !panelDom.is(":hidden");
- //无论如何,先隐藏其他模块
- $(".filter-panel").hide();
- $(".filter-btn,.filter-btn-custom").removeClass("active");
- if (hiddenOptions) {
- panelDom.slideUp(100);
- maskDom.addClass("mui-hidden");
- $(this).removeClass("active");
- } else {
- panelDom.slideDown(100);
- maskDom.removeClass("mui-hidden");
- $(this).addClass("active");
- }
- return false;
- });
- maskDom.tap(function () {
- panelDom.slideUp(100);
- $(".filter-list-mask").addClass("mui-hidden");
- option.cancel()
- });
- //弹出查询条件,使用默认的ok-btn按钮
- panelDom.find('.ok-btn').click(function (e) {
- if (option.ok) {
- var flag = option.ok();
- if (flag == false) {
- //如果返回false表示校验不通过,则不收起来
- } else {
- panelDom.slideUp(100);
- maskDom.addClass("mui-hidden");
- }
- }
- });
- if (option.okTrigger) {
- $(option.okTrigger).on("tap", function (e) {
- panelDom.slideUp(100);
- maskDom.addClass("mui-hidden");
- });
- }
- // 弹窗条件取消
- panelDom.find('.cancel-btn').click(function (e) {
- panelDom.slideUp(100);
- maskDom.addClass("mui-hidden");
- option.cancel()
- });
- }
- }
- /***
- * 套餐附加参数选择组件
- */
- function PackageSelectComponent(option) {
- var attachParas = {};
- var devTypeInfo = option.devTypeInfo,
- el = option.el,
- multiple = option.multiple,
- data = option.data || {};
- if($("#modal100200").length === 0) {
- $("body").append(PackageSelectComponentTemplate);//载入模板到页面
- }
- var statusConfig = {
- "idle": {name: "空闲", color: "green"},
- "fault": {name: "故障", color: "red"},
- "busy": {name: "繁忙", color: "lgreen"},
- "ban": {name: "禁用", color: "gray-ccc"},
- "finished": {name: '完成',color: 'lgreen'},
- "connected": {name: '连接',color: "green"},
- "estop": {name: '急停状态',color: 'red'},
- "ready": {name: '就绪',color: 'lgreen'}
- };
- function toggleActive(indexDom) {
- var prevDom = modal.find('.charge-socket.active');
- var prevDefaultClass = prevDom.attr("defaultClass");
- var prevActiveClass = prevDom.attr("activeClass");
- var defaultClass = indexDom.attr("defaultClass");
- var activeClass = indexDom.attr("activeClass");
- if (multiple) {
- if (indexDom.hasClass('active')) {
- indexDom.removeClass('active ' + activeClass).addClass(defaultClass);
- } else {
- indexDom.removeClass(defaultClass).addClass("active " + activeClass);
- }
- } else {
- prevDom.removeClass("active " + prevActiveClass).addClass(prevDefaultClass);
- indexDom.removeClass(defaultClass).addClass("active " + activeClass);
- }
- let portList = [];
- modal.find('.charge-socket.active').each(function () {
- portList.push($(this).attr("chargeIndex"));
- })
- if (multiple) {
- return portList;
- } else {
- return portList[0];
- }
- }
- var modal = "";
- // 平铺展开充电口
- function initChargeIndex() {
- var chargeIndexDom = modal.find(".chargeIndexGrid");
- // 如果设备有充电线路,则渲染
- if (devTypeInfo.chargeIndex) {
- attachParas.needPort = true;
- var initSelectValue;
- var initSelectIndex;
- var index = 0;
- for (var key in devTypeInfo.chargeIndex) {
- var statusEnum = devTypeInfo.chargeIndex[key] || "ban";
- var color = statusConfig[statusEnum].color;
- var name = statusConfig[statusEnum].name;
- var dom = $('<div class="para-item charge-socket c-' + color + '"></div>').attr({
- status: devTypeInfo.chargeIndex[key],
- chargeIndex: key,
- defaultClass: 'c-' + color,
- activeClass: 'btn-' + color + ' border-' + color,
- });
- var tmpText = key + ':' + name;
- dom.html(tmpText);
- chargeIndexDom.append(dom);
- // 匹配初始化端口的信息
- if (data.chargeIndex == key) {
- initSelectValue = devTypeInfo.chargeIndex[key];
- initSelectIndex = index;
- }
- index++;
- }
- // 判断是否有端口,没有则禁用套餐; 目前只支持一个端口选择;
- if (index > 0) {
- //如果有初始化的参数,则选中该端口
- if (data.chargeIndex != null && data.chargeIndex != "") {
- attachParas.chargeIndex = data.chargeIndex;//数据选中
- var indexDom = chargeIndexDom.find(".charge-socket").eq(initSelectIndex);
- toggleActive(indexDom);
- }
- } else {
- //如果没有端口,则显示无可用
- chargeIndexDom.closest(".device-para-row").addClass("fade-node");
- }
- }
- // 点击事件绑定
- modal.off("tap.chargeSocket").on("tap.chargeSocket", ".charge-socket", function () {
- attachParas.chargeIndex = toggleActive($(this));
- })
- }
- // 初始化电池类型选择器:储存在本地,避免用户每次选电池类型
- function initBattery() {
- var batteryTypeList = [
- {"value": "锂电池", "text": "锂电池", "icon": "icon-battery"},
- {"value": "铅酸电池", "text": "铅酸电池", "icon": "icon-xudianchi"}
- ];
- // 获取缓存的默认值
- var defaultValue = localStorage.getItem("user_para_batteryType") || attachParas.batteryType;
- if (defaultValue) {
- attachParas.batteryType = defaultValue;
- }
- console.log(defaultValue)
- var batteryTypeDom = modal.find(".batteryTypeGrid");
- function bind(htmlItem, value) {
- // 点击事件绑定
- htmlItem.on("tap", function () {
- modal.find(".battery-type").removeClass("active2 btn-skin");
- $(this).addClass("active2 btn-skin");
- attachParas.batteryType = value;
- //缓存到本地
- localStorage.setItem("user_para_batteryType", value)
- })
- }
- for (var index in batteryTypeList) {
- var item = batteryTypeList[index];
- var htmlItem = $('<div class="para-item battery-type common-color"><span class="text"></span></div>');
- htmlItem.attr("value", item.value);
- htmlItem.find(".text").text(item.text);
- batteryTypeDom.append(htmlItem);
- // 渲染默认值
- if (defaultValue == item.value) {
- htmlItem.addClass("active2 btn-skin");
- }
- bind(htmlItem, item.value);
- }
- }
- function initVoltage() {
- var voltageList = [
- {"value": 12, "text": "12V"},
- {"value": 24, "text": "24V"},
- {"value": 36, "text": "36V"},
- {"value": 48, "text": "48V"},
- {"value": 60, "text": "60V"},
- {"value": 72, "text": "72V"},
- ];
- // 获取缓存的默认值
- var defaultValue = localStorage.getItem("user_para_voltage") || attachParas.voltage;
- if (defaultValue) {
- attachParas.voltage = defaultValue;
- }
- console.log(defaultValue)
- var voltageDom = modal.find(".voltageGrid");
- function bind(htmlItem, value) {
- // 点击事件绑定
- htmlItem.on("tap", function () {
- modal.find(".voltage-type").removeClass("active2 btn-skin");
- $(this).addClass("active2 btn-skin");
- attachParas.voltage = value;
- //缓存到本地
- localStorage.setItem("user_para_voltage", value)
- })
- }
- for (var index in voltageList) {
- var item = voltageList[index];
- var htmlItem = $('<div class="para-item voltage-type common-color"><span class="text"></span></div>');
- htmlItem.attr("value", item.value);
- htmlItem.find(".text").text(item.text);
- voltageDom.append(htmlItem);
- // 渲染默认值
- if (defaultValue == item.value) {
- htmlItem.addClass("active2 btn-skin");
- }
- bind(htmlItem, item.value);
- }
- }
- // 凯源新能的充电桩
- if (devTypeInfo.code == 100200) {
- attachParas = {"voltage": 12, "batteryType": "锂电池"};//默认附加参数
- modal = $($("#modal100200").html());
- initBattery();
- initVoltage();
- initChargeIndex();
- } else if (!$.isEmptyObject(devTypeInfo.chargeIndex)) {
- attachParas = {};//默认附加参数
- modal = $($("#modal100202").html());
- initChargeIndex();
- }
- if (modal) {
- $(el).html(modal).addClass("active");
- }
- // 如果返回引用,似乎会丢失,暂这样写
- return {attachParas: attachParas};
- }
- var PackageSelectComponentTemplate =
- '<script id="modal100200" desc="" type="text/html">' +
- ' <div class="device-para-row clearfix ">' +
- ' <div class="device-para-grid-title">电池类型</div>' +
- ' <div class="device-para-grid clearfix batteryTypeGrid"></div>' +
- ' </div>' +
- ' <div class="device-para-row clearfix">' +
- ' <div class="device-para-grid-title">充电电压</div>' +
- ' <div class="device-para-grid clearfix voltageGrid"></div>' +
- ' </div>' +
- ' <div class="device-para-row clearfix ">' +
- ' <div class="device-para-grid-title">端口</div>' +
- ' <div class="device-para-grid clearfix chargeIndexGrid"></div>' +
- ' </div>' +
- '</script>' +
- '<script id="modal100202" desc="" type="text/html">' +
- ' <div class="device-para-row clearfix ">' +
- ' <div class="device-para-grid-title">端口</div>' +
- ' <div class="device-para-grid clearfix chargeIndexGrid"></div>' +
- ' </div>' +
- '</script>'
- function loadVconsole() {
- if (OS_TYPE !== 'Android' && OS_TYPE !== 'IOS') {
- // PC 测试无需vconsole
- return
- }
- // 使用缓存获取,避免刷新后重新向服务器请求
- $.ajaxSetup({
- cache: true
- });
- $.ajax({
- url: "/components/lib/vconsole.min.js",
- async: false,
- dataType: "script",
- success: function () {
- new VConsole();
- }
- });
- }
- if (isTest() || getQueryString('isTest')) {
- localStorage.setItem('ENV_TEST', '1');
- loadVconsole()
- } else if (localStorage.getItem('ENV_TEST')) {
- loadVconsole()
- }
- $(function () {
- return
- // 如果是本地纯前台测试,则引入模拟的扫码、支付
- if (isTest(true)) {
- window.WeixinJSBridge = {
- invoke: function (str, obj, callback) {
- callback({err_msg: "get_brand_wcpay_request:ok"})
- }
- }
- window.AlipayJSBridge = {
- call: function (str, obj, callback) {
- callback({resultCode: "9000"})
- }
- }
- window.wx = {
- ready: function (c) {
- c()
- },
- config: function () {
- },
- scanQRCode: function (obj) {
- obj.success({resultStr: "http://www.washpayer.com/dealer/toAuth?l=1001"})
- obj.complete && obj.complete()
- },
- getLocation: function (obj) {
- if (obj.success) {
- obj.success({longitude: 114.31, latitude: 30.52})
- }
- obj.complete && obj.complete()
- }
- }
- window.ap = {
- scan: function (callback) {
- callback({code: "http://www.washpayer.com/userLogin?l=2910"})
- }
- }
- }
- });
- (function () {
- return;
- //此代码为 经销商和代理商系统设置皮肤代码注入gulp源码,使其在其他script之前即可优先执行。 可以用工具压缩再注入。注意加script标签
- // 改代码必须注入到 html标签内部(最好在head结束之前,确保其在其他script之前执行),因为只需要等html加载完即可正常操作html标签,如果注入到html外部,是不能正常修改html标签的!(文档流的html还是空)此段代码写[(function (){})()]其实也没啥用... html文档流严格按从上往下执行!
- function getCookie(name) {
- var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
- if (arr != null) {
- return unescape(arr[2]);
- } else {
- return null;
- }
- }
- var theme = getCookie("theme_name") || "theme-alipay";
- document.querySelectorAll('html')[0].classList.add(theme);
- })();
|