//动态加载文件对象,并存储根路径 ismobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())); isios = (/iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase())); isweiin = (/MicroMessenger/i.test(navigator.userAgent.toLowerCase())); var ver = 4; var loadFile; loadFile = new (function () { this.head = document.getElementsByTagName('head')[0]; //根路径 this.rootPath = (function () { var s = document.getElementsByTagName('script'); for (var i = 0; i < s.length; i++) { var src = s[i].src; if (src.indexOf("shell/appjs/page.js") > 0) { return src.replace(/shell\/appjs\/page.js.*/, ''); } } return ""; })(); this.curPath = (function () { var v = location.href; if (v.indexOf('?') > 0) v = v.match(/^.*\?/)[0]; return v.replace(/\/[^\/]*$/, "/"); })(); this.curProjectPath = (function (v) { var s = v.match(/^.*project\/[^\/]*/); if (s && s.length > 0) return s[0] + "/"; else return ""; })(this.curPath); this.setProjectPath = function (v) { if (this.curProjectPath == "") { this.curPath = this.rootPath + "project/" + v + "/"; this.curProjectPath = this.rootPath + "project/" + v + "/"; } return this; }; //在头目加入meta this.meta = function (name, content) { var meta = document.createElement('meta'); meta.name = name; meta.content = content; this.head.appendChild(meta); }; var self = this; function waitFor(obj, path, todo) { if (obj[path] == 2) todo(); else setTimeout(function () { waitFor(obj, path, todo) }, 10); } //动态加载css文件 this._cssArray = {}; this.css = function (path, callback) { if (!this._cssArray[path]) { this._cssArray[path] = 1; var link = document.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.media = 'screen'; if (link.readyState) { link.onreadystatechange = function () { if (link.readyState == 'loaded' || link.readyState == 'complete') { link.onreadystatechange = null; self._cssArray[path] = 2; } } } else { link.onload = function () { self._cssArray[path] = 2; } } link.href = path; this.head.appendChild(link); } if (callback) { waitFor(this._cssArray, path, callback); } }; this.mulCss = function (path, callback) { if (path.length > 0) { var self = this; function load(i) { self.css(path[i], function () { i++; if (i == path.length) { if (callback) callback(); } else load(i); }) } load(0); } else callback(); }; //动态加载js文件,并保证不会通过该函数多次加载同一文件,加载完成调用回调函数 this._jsArray = {}; this.js = function (path, callback) { if (!this._jsArray[path]) { this._jsArray[path] = 1; var script = document.createElement('script'); script.type = 'text/javascript'; if (script.readyState) { script.onreadystatechange = function () { if (script.readyState == 'loaded' || script.readyState == 'complete') { script.onreadystatechange = null; self._jsArray[path] = 2; } } } else { script.onload = function () { self._jsArray[path] = 2; } } script.src = path; this.head.appendChild(script); } if (callback) { waitFor(this._jsArray, path, callback); } }; this.mulJs = function (path, callback) { if (path.length > 0) { var self = this; function load(i) { self.js(path[i], function () { i++; if (i == path.length) { if (callback) callback(); } else load(i); }) } load(0); } else callback(); }; //model:"smart","bt","layui","layout","bstable","echart","leaflet","webService","ztree","weui","canvas";以上文件有加载顺序, //"table","input" this.loadJsCss = function (model, callback, modifyConfigFun, pro) { this.meta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'); var jr = [this.rootPath + 'plugin/jquery/jquery-2.1.4.min.js?ver=' + ver, this.curProjectPath + 'config-1.0.js?ver=' + ver, this.rootPath + 'shell/utils/util.js?ver=' + ver]; var cr = [this.rootPath + 'shell/css/common.css?ver=' + ver]; var self = this; function fm(v) { for (var i = 0; i < model.length; i++) { if (model[i] == v) { return true; } } return false; } function aj(p) { jr.push(self.rootPath + p + '?ver=' + ver); } function ac(p) { cr.push(self.rootPath + p + '?ver=' + ver); } if (fm("smart")) { ac("plugin/fontawesome/font-awesome-4.7.0/css/font-awesome.min.css"); aj("shell/appjs/appcon.js"); aj("shell/appjs/app.js"); var css_Mobile = ismobile; ac("plugin/SmartAdmin/css/smartadmin-production-plugins.min.css"); if (css_Mobile) ac('plugin/SmartAdmin/css/smartadmin-production_nomedia.css'); else ac('plugin/SmartAdmin/css/smartadmin-production.min.css'); ac('plugin/SmartAdmin/css/smartadmin-skins.min.css'); ac('plugin/SmartAdmin/css/smartadmin-rtl.min.css'); ac('plugin/jquery/jquery-ui.min.css'); aj('plugin/jquery/jquery-ui.min.js'); } if (fm("layui")) { aj('plugin/layui/layui.js'); aj('plugin/layui/lay/modules/layer.js'); ac('plugin/layui/css/layui.css'); ac('plugin/layui/layer_v2.1/layer/skin/layer.css'); } if (fm("layout")) { aj('shell/utils/layoutcontrol.js'); aj('shell/utils/singlePage.js'); aj('shell/utils/picpanelExtend.js'); } if (fm("bt")) { aj('plugin/bootstrap/js/bootstrap.min.js'); ac('plugin/bootstrap/css/bootstrap.min.css'); } if (fm("bstable")) { aj('plugin/bootstrap/js/bootstrap.min.js'); ac('plugin/bootstrap/css/bootstrap.min.css'); aj('plugin/bstable/bootstrap-table.min.js'); aj('plugin/bstable/locale/bootstrap-table-zh-CN.min.js'); aj('shell/utils/bstableExtend.js'); ac('plugin/bstable/bootstrap-table.css'); ac('plugin/fontawesome/font-awesome-4.7.0/css/font-awesome.css'); } if (fm("echart")) { aj('plugin/echart/echarts.min.js'); aj('shell/utils/echartExtend.js'); } if (fm("leaflet")) { ac('plugin/leaflet/leaflet.css'); aj('plugin/leaflet/leaflet.js'); aj('shell/utils/leafletExtend.js'); } if (fm("webService")) { aj('shell/webapi/webSqlApi.js'); } if (fm("webServiceApi")) {//弃用 aj('shell/webapi/webServerApi.js'); } if (fm("ztree")) { ac("plugin/zTree/css/zTreeStyle-3.5.css"); aj("plugin/zTree/js/jquery.ztree.core.js"); aj("plugin/zTree/js/jquery.ztree.excheck.js"); aj("plugin/zTree/js/jquery.ztree.exedit.js"); } if (fm("weiui")) { ac("plugin/weui/weui.css"); ac("plugin/weui/jquery-weui.min.css"); aj("plugin/weui/weui.min.js"); aj("plugin/weui/jquery-weui.min.js"); aj("plugin/weui/example/zepto.min.js"); aj("plugin/weui/jweixin-1.0.0.js"); } if (fm("hchart")) { aj("plugin/highchart/highcharts.js"); aj("plugin/highchart/highcharts-zh_CN.js"); aj("plugin/highchart/exporting.js"); aj("plugin/highchart/data.js"); aj("plugin/highchart/heatmap.js"); } if (fm("jqgrid")) { ac("plugin/fontawesome/font-awesome-4.7.0/css/font-awesome.min.css"); ac("plugin/SmartAdmin/css/smartadmin-production-plugins.min.css"); ac('plugin/SmartAdmin/css/smartadmin-production_nomedia.css'); ac('plugin/bootstrap/css/bootstrap.min.css'); aj("plugin/SmartAdmin/js/plugin/jqgrid/jquery.jqGrid.min.js"); aj("plugin/SmartAdmin/js/plugin/jqgrid/grid.locale.js"); aj("shell/utils/tableManger.js"); aj("shell/utils/tableUtil.js"); } if (fm("table")) { // ac("plugin/fontawesome/font-awesome-4.7.0/css/font-awesome.min.css"); // ac("plugin/SmartAdmin/css/smartadmin-production-plugins.min.css"); // ac('plugin/SmartAdmin/css/smartadmin-production_nomedia.css'); // ac('plugin/bootstrap/css/bootstrap.min.css'); aj("plugin/SmartAdmin/js/plugin/jqgrid/jquery.jqGrid.min.js"); aj("plugin/SmartAdmin/js/plugin/jqgrid/grid.locale.js"); aj("shell/utils/tableManger.js"); } if (fm("search")) { aj('plugin/jquery/jquery.searchableSelect.js'); ac("plugin/jquery/searchableSelect.css"); } if (fm("canvas")) { aj("shell/utils/canvasExtend.js"); } if (fm("input")) { aj("shell/utils/thirdControl.js"); aj("plugin/laydate/laydate.js"); } self.mulCss(cr, function () { self.mulJs(jr, function () { if (typeof (webSqlApi) != "undefined") webSqlApi.setVer(ver); if (modifyConfigFun) modifyConfigFun(); if (loadFile.curProjectPath.indexOf("yl") != -1) { _afertInit(true, pro); } callback(); }); }); }; this.bstable = function (callback) { //待删除 loadFile.css(loadFile.rootPath + "plugin/bootstrap/css/bootstrap.min.css?ver=" + ver, function () { loadFile.css(loadFile.rootPath + "plugin/bstable/bootstrap-table.min.css?ver=" + ver, function () { loadFile.css(loadFile.rootPath + "plugin/fontawesome/font-awesome-4.7.0/css/font-awesome.min.css?ver=" + ver, function () { loadFile.mulJs([loadFile.rootPath + "plugin/bootstrap/js/bootstrap.min.js?ver=" + ver, loadFile.rootPath + "plugin/bstable/bootstrap-table.min.js?ver=" + ver, loadFile.rootPath + "plugin/bstable/locale/bootstrap-table-zh-CN.min.js?ver=" + ver, loadFile.rootPath + "shell/utils/bstableExtend.js?ver=" + ver ], callback) }) }) }) }; this.webServerApi = function (callback) { //待删除 this.js(this.rootPath + "shell/webapi/webServerApi.js?ver=" + ver, function () { webServerApi.setVer(ver); webServerApi.setHostCodeFiled(ez.hostcode); callback(); }); }; this.webSqlApi = function (callback) { //待删除 this.js(this.rootPath + "shell/webapi/webSqlApi.js?ver=" + ver, function () { webSqlApi.setVer(ver); callback(); }); } this.echart = function (callback) { //待删除 loadFile.mulJs([loadFile.rootPath + "plugin/echart/echarts.min.js?ver=" + ver, loadFile.rootPath + "shell/utils/echartExtend.js?ver=" + ver], callback); }; this.maputil = function (callback) { this.js(this.rootPath + "shell/utils/mapUtil.js?ver=" + ver, callback); }; this.morris = function (callback) { loadFile.mulJs([loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/morris/raphael.min.js?ver=' + ver, loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/morris/morris.min.js?ver=' + ver], callback) }; this.tables = function (callback) { loadFile.mulJs([loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/datatables/jquery.dataTables.min.js?ver=' + ver, loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/datatables/dataTables.colVis.min.js?ver=' + ver, loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/datatables/dataTables.tableTools.min.js?ver=' + ver, loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/datatables/dataTables.bootstrap.min.js?ver=' + ver, loadFile.rootPath + 'plugin/SmartAdmin/js/plugin/datatable-responsive/datatables.responsive.min.js?ver=' + ver, loadFile.rootPath + 'shell/utils/tableManger.js?ver=' + ver], callback) }; this.sparkLine = function (callback) { loadFile.js(loadFile.rootPath + "plugin/SmartAdmin/js/plugin/sparkline/jquery.sparkline.min.js?ver=" + ver, callback); }; this.select2 = function (callback) { loadFile.js(loadFile.rootPath + "plugin/SmartAdmin/js/plugin/select2/select2.min.js?ver=" + ver, callback); }; this.lCalendar = function (callback) { loadFile.css(loadFile.rootPath + "plugin/lCalendar/lCalendar.css?ver=" + ver, function () { loadFile.js(loadFile.rootPath + "plugin/lCalendar/lCalendar.js?ver=" + ver, callback); }); }; }); function loadPagejs() { loadFile.js(location.href.replace(/.html.*$/, ".js?ver=" + ver)); } //保存登录信息到storage中,expires: token过期时间 function saveLoginInfo(u, uid, t, e) { localStorage.smartshowlogintoken = t; var v = {usrname: u, usrid: uid, token: t, expires: e, lastLogin: (new Date()).getTime()}; localStorage.smartshowlogininfo = JSON.stringify(v); } //返回保存在storage中的登录信息 function loadLoginInfo() { var s = localStorage.smartshowlogininfo; s = s ? JSON.parse(s) : {usrname: '', token: '', expires: 0, lastLogin: 0}; s.token = localStorage.smartshowlogintoken; return s; } //iniFull或iniBase动态加载js文件后,执行页面默认操作 function _afertInit(flag, pro) { if (flag) {//需要登录权限 if (pro) isLogin(pro); else isLogin(); } //检查页面title if (($('title').length == 0) || ($('title').text() == "")) document.title = ez.pageTitle; //setStyle(ez.defaultStyleIndex); } function findUrlState(str) { var str1 = str.substring(str.indexOf(".") + 1, str.length - 1); return str1.substring(0, str1.indexOf(".")); } function judgeLogin(pro) { var lp; if (pro) lp = ez[pro]; else lp = ez.loginPage; //判定是否已经登录,未登录跳转到登录页 var i = loadLoginInfo(); if (lp) { var p = loadFile.rootPath + lp; if (p != location.href.substring(0, p.length)) { if (i.lastLogin + i.expires * 1000 <= (new Date()).getTime()) { if (location.href.indexOf("state") > 0) { location.href = loadFile.rootPath + lp + "?page=" + location.href; } else { location.href = loadFile.rootPath + lp + "?page=" + location.href + "&state=" + findUrlState(location.href); } } if (!getToken()) $.ajaxSetup({headers: {"X-AUTH-TOKEN": localStorage.smartshowlogintoken}}); else $.ajaxSetup({headers: {"X-AUTH-TOKEN": getToken()}}); } } } //判断是否登录 function isLogin(pro) { var lp; if (pro) lp = ez[pro]; else lp = ez.login_page; //判定是否已经登录,未登录跳转到登录页 var s = localStorage.smartshowlogininfo; if (s == "null") { location.href = loadFile.curProjectPath + "login.html"; } var i = loadLoginInfo(); if (lp) { var p = loadFile.rootPath + lp; if (p != location.href.substring(0, p.length)) { if (i.lastLogin + i.expires * 1000 <= (new Date()).getTime()) { if (location.href.indexOf("login") == -1) { location.href = loadFile.curProjectPath + "login.html"; } } if (!getToken()) $.ajaxSetup({headers: {"X-AUTH-TOKEN": localStorage.smartshowlogintoken}}); else $.ajaxSetup({headers: {"X-AUTH-TOKEN": getToken()}}); } } } function getToken() { try { return localStorage.smartshowlogininfo.token; } catch (e) { return false; } } var css_Mobile = ismobile; var css_afterLoad = null; function loadDefaultCss(callback) { //待删除 var root = loadFile.rootPath + 'plugin/SmartAdmin/css/'; loadFile.meta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'); loadFile.css(root + 'bootstrap.min.css?ver=' + ver, function () { loadFile.css(root + 'font-awesome.min.css?ver=' + ver, function () { loadFile.css(root + 'smartadmin-production-plugins.min.css?ver=' + ver, function () { var s = ""; if (css_Mobile) s = root + 'smartadmin-production_nomedia.css?ver=' + ver; else s = root + 'smartadmin-production.min.css?ver=' + ver; loadFile.css(s, function () { loadFile.css(root + 'smartadmin-skins.min.css?ver=' + ver, function () { loadFile.css(root + 'smartadmin-rtl.min.css?ver=' + ver, function () { loadFile.css(root + 'your_style.css?ver=' + ver, function () { if (css_afterLoad) css_afterLoad(); if (callback) callback(); }); }); }); }); }); }); }); } function initPublic(callback, modifyConfigFun, pro) { //待删除 loadDefaultCss(function () { loadFile.mulJs([loadFile.rootPath + 'plugin/SmartAdmin/js/libs/jquery-2.1.1.min.js?ver=' + ver, loadFile.curProjectPath + 'config-1.0.js?ver=' + ver, loadFile.rootPath + 'shell/utils/util.js?ver=' + ver], function () { if (modifyConfigFun) modifyConfigFun(); _afertInit(false, pro); callback(); }); }) } function initLayout(callback, modifyConfigFun, pro) { //待删除 loadFile.mulJs([loadFile.rootPath + 'plugin/jquery/jquery-2.1.4.min.js?ver=' + ver, loadFile.rootPath + 'shell/webapi/webServerApi.js?ver=' + ver, loadFile.rootPath + 'plugin/layui/layer_v2.1/layer/layer.js?ver=' + ver, loadFile.rootPath + 'plugin/zTree/js/jquery.ztree.core.js?ver=' + ver, loadFile.rootPath + 'plugin/zTree/js/jquery.ztree.excheck.js?ver=' + ver, loadFile.rootPath + 'plugin/zTree/js/jquery.ztree.exedit.js?ver=' + ver, loadFile.rootPath + 'shell/utils/config.js?ver=' + ver, loadFile.rootPath + 'shell/utils/util.js?ver=' + ver, loadFile.rootPath + 'shell/utils/layoutcontrol.js?ver=' + ver,], function () { if (modifyConfigFun) modifyConfigFun(); _afertInit(false, pro); callback(); }); loadFile.css(loadFile.rootPath + "plugin/layui/layer_v2.1/layer/skin/layer.css?ver=" + ver, function () { }); }