/** 初始化处理 vue component **/ (function (window, undefined) { "use strict"; var vc = window.vc || {}; var _vmOptions = {}; var _initMethod = []; var _initEvent = []; var _component = {}; var _destroyedMethod = []; var _timers = [];//定时器 var _map = [];// 共享数据存储 var _namespace = []; _vmOptions = { el: '#component', data: {}, watch: {}, methods: {}, destroyed: function () { window.vc.destroyedMethod.forEach(function (eventMethod) { eventMethod(); }); //清理所有定时器 window.vc.timers.forEach(function (timer) { clearInterval(timer); }); _timers = []; } }; vc = { version: "v0.0.1", name: "vue component", author: 'skyround', vmOptions: _vmOptions, namespace: _namespace, initMethod: _initMethod, initEvent: _initEvent, component: _component, destroyedMethod: _destroyedMethod, debug: false, timers: _timers, _map: {} }; //通知window对象 window.vc = vc; })(window); /** vc 函数初始化 add by Kevin **/ (function (vc) { var DEFAULT_NAMESPACE = "default"; vc.http = { post: function (componentCode, componentMethod, param, options, successCallback, errorCallback) { vc.loading('open'); Vue.http.post('/callComponent/' + componentCode + "/" + componentMethod, param, options) .then(function (res) { try { successCallback(res.bodyText, res); } catch (e) { console.error(e); } finally { vc.loading('close'); } }, function (error) { try { errorCallback(error.bodyText, error); } catch (e) { console.error(e); } finally { vc.loading('close'); } }); }, get: function (componentCode, componentMethod, param, successCallback, errorCallback) { //加入缓存机制 var _getPath = '/' + componentCode + '/' + componentMethod; if (vc.constant.GET_CACHE_URL.includes(_getPath)) { var _cacheData = vc.getData(_getPath); //浏览器缓存中能获取到 if (_cacheData != null && _cacheData != undefined) { successCallback(JSON.stringify(_cacheData), {status: 200}); return; } } vc.loading('open'); Vue.http.get('/callComponent/' + componentCode + "/" + componentMethod, param) .then(function (res) { try { successCallback(res.bodyText, res); if (vc.constant.GET_CACHE_URL.includes(_getPath) && res.status == 200) { vc.saveData(_getPath, JSON.parse(res.bodyText)); } } catch (e) { console.error(e); } finally { vc.loading('close'); } }, function (error) { try { errorCallback(error.bodyText, error); } catch (e) { console.error(e); } finally { vc.loading('close'); } }); }, upload: function (componentCode, componentMethod, param, options, successCallback, errorCallback) { vc.loading('open'); Vue.http.post('/callComponent/upload/' + componentCode + "/" + componentMethod, param, options) .then(function (res) { try { successCallback(res.bodyText, res); } catch (e) { console.error(e); } finally { vc.loading('close'); } }, function (error) { try { errorCallback(error.bodyText, error); } catch (e) { console.error(e); } finally { vc.loading('close'); } }); }, }; var vmOptions = vc.vmOptions; //继承方法,合并 _vmOptions 的数据到 vmOptions中 vc.extends = function (_vmOptions) { if (typeof _vmOptions !== "object") { throw "_vmOptions is not Object"; } var nameSpace = DEFAULT_NAMESPACE; if (_vmOptions.hasOwnProperty("namespace")) { nameSpace = _vmOptions.namespace; vc.namespace.push({ namespace: _vmOptions.namespace, }) } //处理 data 对象 if (_vmOptions.hasOwnProperty('data')) { for (var dataAttr in _vmOptions.data) { if (nameSpace == DEFAULT_NAMESPACE) { vmOptions.data[dataAttr] = _vmOptions.data[dataAttr]; } else { /* if(!vmOptions.data.hasOwnProperty(nameSpace)){ vmOptions.data[nameSpace] = {}; } var dataNameSpace = vmOptions.data[nameSpace]; dataNameSpace[dataAttr] = _vmOptions.data[dataAttr];*/ vmOptions.data[nameSpace + "_" + dataAttr] = _vmOptions.data[dataAttr]; } } } //处理methods 对象 if (_vmOptions.hasOwnProperty('methods')) { for (var methodAttr in _vmOptions.methods) { if (nameSpace == DEFAULT_NAMESPACE) { vmOptions.methods[methodAttr] = _vmOptions.methods[methodAttr]; } else { /*if(!vmOptions.methods.hasOwnProperty(nameSpace)){ vmOptions.methods[nameSpace] = {}; } var methodNameSpace = vmOptions.methods[nameSpace]; methodNameSpace[methodAttr] = _vmOptions.methods[methodAttr];*/ vmOptions.methods[nameSpace + "_" + methodAttr] = _vmOptions.methods[methodAttr]; } } } //处理methods 对象 if (_vmOptions.hasOwnProperty('watch')) { for (var watchAttr in _vmOptions.watch) { if (nameSpace == DEFAULT_NAMESPACE) { vmOptions.watch[watchAttr] = _vmOptions.watch[watchAttr]; } else { /*if (!vmOptions.watch.hasOwnProperty(nameSpace)) { vmOptions.watch[nameSpace] = {}; } var methodNameSpace = vmOptions.watch[nameSpace]; methodNameSpace[watchAttr] = _vmOptions.watch[watchAttr];*/ vmOptions.watch[nameSpace + "_" + watchAttr] = _vmOptions.watch[watchAttr]; } } } //处理_initMethod 初始化执行函数 if (_vmOptions.hasOwnProperty('_initMethod')) { vc.initMethod.push(_vmOptions._initMethod); } //处理_initEvent if (_vmOptions.hasOwnProperty('_initEvent')) { vc.initEvent.push(_vmOptions._initEvent); } //处理_initEvent_destroyedMethod if (_vmOptions.hasOwnProperty('_destroyedMethod')) { vc.destroyedMethod.push(_vmOptions._destroyedMethod); } }; //绑定跳转函数 vc.jumpToPage = function (url) { window.location.href = url; }; //保存菜单 vc.setCurrentMenu = function (_menuId) { window.localStorage.setItem('hc_menuId', _menuId); }; //获取菜单 vc.getCurrentMenu = function () { return window.localStorage.getItem('hc_menuId'); }; //保存用户菜单 vc.setMenus = function (_menus) { window.localStorage.setItem('hc_menus', JSON.stringify(_menus)); }; //获取用户菜单 vc.getMenus = function () { return JSON.parse(window.localStorage.getItem('hc_menus')); }; //保存菜单状态 vc.setMenuState = function (_menuState) { window.localStorage.setItem('hc_menu_state', _menuState); }; //获取菜单状态 vc.getMenuState = function () { return window.localStorage.getItem('hc_menu_state'); }; //保存用户菜单 vc.saveData = function (_key, _value) { window.localStorage.setItem(_key, JSON.stringify(_value)); }; //获取用户菜单 vc.getData = function (_key) { return JSON.parse(window.localStorage.getItem(_key)); }; //保存当前小区信息 _communityInfo : {"communityId":"123213","name":"测试小区"} vc.setCurrentCommunity = function (_currentCommunityInfo) { window.localStorage.setItem('hc_currentCommunityInfo', JSON.stringify(_currentCommunityInfo)); }; //获取当前小区信息 // @return {"communityId":"123213","name":"测试小区"} vc.getCurrentCommunity = function () { return JSON.parse(window.localStorage.getItem('hc_currentCommunityInfo')); }; //保存当前小区信息 _communityInfos : [{"communityId":"123213","name":"测试小区"}] vc.setCommunitys = function (_communityInfos) { window.localStorage.setItem('hc_communityInfos', JSON.stringify(_communityInfos)); }; //获取当前小区信息 // @return {"communityId":"123213","name":"测试小区"} vc.getCommunitys = function () { return JSON.parse(window.localStorage.getItem('hc_communityInfos')); }; //删除缓存数据 vc.clearCacheData = function () { window.localStorage.clear(); }; //将org 对象的属性值赋值给dst 属性名为一直的属性 vc.copyObject = function (org, dst) { //for(key in Object.getOwnPropertyNames(dst)){ for (var key in dst) { if (org.hasOwnProperty(key)) { dst[key] = org[key] } } }; //扩展 现有的对象 没有的属性扩充上去 vc.extendObject = function (org, dst) { for (var key in dst) { if (!org.hasOwnProperty(key)) { dst[key] = org[key] } } }; //获取url参数 vc.getParam = function (_key) { //返回当前 URL 的查询部分(问号 ? 之后的部分)。 var urlParameters = location.search; //如果该求青中有请求的参数,则获取请求的参数,否则打印提示此请求没有请求的参数 if (urlParameters.indexOf('?') != -1) { //获取请求参数的字符串 var parameters = decodeURI(urlParameters.substr(1)); //将请求的参数以&分割中字符串数组 parameterArray = parameters.split('&'); //循环遍历,将请求的参数封装到请求参数的对象之中 for (var i = 0; i < parameterArray.length; i++) { if (_key == parameterArray[i].split('=')[0]) { return parameterArray[i].split('=')[1]; } } } return ""; }; //查询url vc.getUrl = function () { //返回当前 URL 的查询部分(问号 ? 之后的部分)。 var urlParameters = location.pathname; return urlParameters; }; vc.getBack = function(){ window.location.href = document.referrer; window.history.back(-1); } //对象转get参数 vc.objToGetParam = function (obj) { var str = []; for (var p in obj) if (obj.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); } return str.join("&"); }; //空判断 true 为非空 false 为空 vc.notNull = function (_paramObj) { if (_paramObj == null || _paramObj == undefined || _paramObj.trim() == '') { return false; } return true; }; vc.isEmpty = function (_paramObj) { if (_paramObj == null || _paramObj == undefined ) { return true; } return false; }; //设置debug 模式 vc.setDebug = function (_param) { vc.debug = _param; }; //数据共享存放 主要为了组件间传递数据 vc.put = function (_key, _value) { vc.map[_key] = _value; }; //数据共享 获取 主要为了组件间传递数据 vc.get = function (_key) { return vc.map[_key]; }; vc.getDict = function(_name,_type,_callFun){ var param = { params: { name:_name, type:_type } }; //发送get请求 vc.http.get('core', 'list', param, function(json, res) { if(res.status == 200){ var _dictInfo = JSON.parse(json); _callFun(_dictInfo); return ; } }, function(errInfo, error) { console.log('请求失败处理'); }); } })(window.vc); /** vc 定时器处理 **/ (function (w, vc) { /** 创建定时器 **/ vc.createTimer = function (func, sec) { var _timer = w.setInterval(func, sec); vc.timers.push(_timer); //这里将所有的定时器保存起来,页面退出时清理 return _timer; }; //清理定时器 vc.clearTimer = function (timer) { clearInterval(timer); } })(window, window.vc); /** * vc.toast(""); 时间处理工具类 **/ (function (vc) { function add0(m) { return m < 10 ? '0' + m : m } vc.dateFormat = function (shijianchuo) { //shijianchuo是整数,否则要parseInt转换 var time = new Date(parseInt(shijianchuo)); var y = time.getFullYear(); var m = time.getMonth() + 1; var d = time.getDate(); var h = time.getHours(); var mm = time.getMinutes(); var s = time.getSeconds(); return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s); } })(window.vc); (function (vc) { vc.propTypes = { string: "string",//字符串类型 array: "array", object: "object", number: "number" } })(window.vc); /** toast **/ (function (vc) { vc.toast = function Toast(msg, duration) { duration = isNaN(duration) ? 3000 : duration; var m = document.createElement('div'); m.innerHTML = msg; m.style.cssText = "max-width:60%;min-width: 150px;padding:0 14px;height: 40px;color: rgb(255, 255, 255);line-height: 40px;text-align: center;border-radius: 4px;position: fixed;top: 30%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;"; document.body.appendChild(m); setTimeout(function () { var d = 0.5; m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; m.style.opacity = '0'; setTimeout(function () { document.body.removeChild(m) }, d * 1000); }, duration); } })(window.vc); /** toast **/ (function (vc) { vc.urlToBase64 = function urlToBase64(_url, _callFun) { var imgData; var reader = new FileReader(); getImageBlob(_url, function (blob) { reader.readAsDataURL(blob); }); reader.onload = function (e) { imgData = e.target.result; _callFun(imgData); }; function getImageBlob(_url, cb) { var xhr = new XMLHttpRequest(); xhr.open("get", _url, true); xhr.responseType = "blob"; xhr.onload = function () { if (this.status == 200) { if (cb) cb(this.response); } }; xhr.send(); } } })(window.vc);