mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-23 21:36:37 +08:00
500 lines
16 KiB
JavaScript
500 lines
16 KiB
JavaScript
/**
|
||
初始化处理 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();
|
||
window.sessionStorage.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); |