core.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. /**
  2. 初始化处理 vue component
  3. **/
  4. (function (window, undefined) {
  5. "use strict";
  6. var vc = window.vc || {};
  7. var _vmOptions = {};
  8. var _initMethod = [];
  9. var _initEvent = [];
  10. var _component = {};
  11. var _destroyedMethod = [];
  12. var _timers = [];//定时器
  13. var _map = [];// 共享数据存储
  14. var _namespace = [];
  15. _vmOptions = {
  16. el: '#component',
  17. data: {},
  18. watch: {},
  19. methods: {},
  20. destroyed: function () {
  21. window.vc.destroyedMethod.forEach(function (eventMethod) {
  22. eventMethod();
  23. });
  24. //清理所有定时器
  25. window.vc.timers.forEach(function (timer) {
  26. clearInterval(timer);
  27. });
  28. _timers = [];
  29. }
  30. };
  31. vc = {
  32. version: "v0.0.1",
  33. name: "vue component",
  34. author: 'java110',
  35. vmOptions: _vmOptions,
  36. namespace: _namespace,
  37. initMethod: _initMethod,
  38. initEvent: _initEvent,
  39. component: _component,
  40. destroyedMethod: _destroyedMethod,
  41. debug: false,
  42. timers: _timers,
  43. _map: {}
  44. };
  45. //通知window对象
  46. window.vc = vc;
  47. })(window);
  48. /**
  49. vc 函数初始化
  50. add by wuxw
  51. **/
  52. (function (vc) {
  53. var DEFAULT_NAMESPACE = "default";
  54. vc.http = {
  55. post: function (componentCode, componentMethod, param, options, successCallback, errorCallback) {
  56. vc.loading('open');
  57. Vue.http.post('/callComponent/' + componentCode + "/" + componentMethod, param, options)
  58. .then(function (res) {
  59. successCallback(res.bodyText, res);
  60. vc.loading('close');
  61. }, function (error) {
  62. errorCallback(error.bodyText, error);
  63. vc.loading('close');
  64. });
  65. },
  66. get: function (componentCode, componentMethod, param, successCallback, errorCallback) {
  67. //加入缓存机制
  68. var _getPath = '/' + componentCode + '/' + componentMethod;
  69. if (vc.constant.GET_CACHE_URL.includes(_getPath)) {
  70. var _cacheData = vc.getData(_getPath);
  71. //浏览器缓存中能获取到
  72. if (_cacheData != null && _cacheData != undefined) {
  73. successCallback(JSON.stringify(_cacheData), {status: 200});
  74. return;
  75. }
  76. }
  77. vc.loading('open');
  78. Vue.http.get('/callComponent/' + componentCode + "/" + componentMethod, param)
  79. .then(function (res) {
  80. successCallback(res.bodyText, res);
  81. if (vc.constant.GET_CACHE_URL.includes(_getPath) && res.status == 200) {
  82. vc.saveData(_getPath, JSON.parse(res.bodyText));
  83. }
  84. vc.loading('close');
  85. }, function (error) {
  86. errorCallback(error.bodyText, error);
  87. vc.loading('close');
  88. });
  89. },
  90. upload: function (componentCode, componentMethod, param, options, successCallback, errorCallback) {
  91. vc.loading('open');
  92. Vue.http.post('/callComponent/upload/' + componentCode + "/" + componentMethod, param, options)
  93. .then(function (res) {
  94. successCallback(res.bodyText, res);
  95. vc.loading('close');
  96. }, function (error) {
  97. errorCallback(error.bodyText, error);
  98. vc.loading('close');
  99. });
  100. },
  101. };
  102. var vmOptions = vc.vmOptions;
  103. //继承方法,合并 _vmOptions 的数据到 vmOptions中
  104. vc.extends = function (_vmOptions) {
  105. if (typeof _vmOptions !== "object") {
  106. throw "_vmOptions is not Object";
  107. }
  108. var nameSpace = DEFAULT_NAMESPACE;
  109. if (_vmOptions.hasOwnProperty("namespace")) {
  110. nameSpace = _vmOptions.namespace;
  111. vc.namespace.push({
  112. namespace:_vmOptions.namespace,
  113. })
  114. }
  115. //处理 data 对象
  116. if (_vmOptions.hasOwnProperty('data')) {
  117. for (var dataAttr in _vmOptions.data) {
  118. if (nameSpace == DEFAULT_NAMESPACE) {
  119. vmOptions.data[dataAttr] = _vmOptions.data[dataAttr];
  120. } else {
  121. if(!vmOptions.data.hasOwnProperty(nameSpace)){
  122. vmOptions.data[nameSpace] = {};
  123. }
  124. var dataNameSpace = vmOptions.data[nameSpace];
  125. dataNameSpace[dataAttr] = _vmOptions.data[dataAttr];
  126. }
  127. }
  128. }
  129. //处理methods 对象
  130. if (_vmOptions.hasOwnProperty('methods')) {
  131. for (var methodAttr in _vmOptions.methods) {
  132. if (nameSpace == DEFAULT_NAMESPACE) {
  133. vmOptions.methods[methodAttr] = _vmOptions.methods[methodAttr];
  134. } else {
  135. if(!vmOptions.methods.hasOwnProperty(nameSpace)){
  136. vmOptions.methods[nameSpace] = {};
  137. }
  138. var methodNameSpace = vmOptions.methods[nameSpace];
  139. methodNameSpace[methodAttr] = _vmOptions.methods[methodAttr];
  140. /*vmOptions.methods[nameSpace][methodAttr] = _vmOptions.methods[methodAttr];*/
  141. }
  142. }
  143. }
  144. //处理methods 对象
  145. if (_vmOptions.hasOwnProperty('watch')) {
  146. for (var watchAttr in _vmOptions.watch) {
  147. if (nameSpace == DEFAULT_NAMESPACE) {
  148. vmOptions.watch[watchAttr] = _vmOptions.watch[watchAttr];
  149. } else {
  150. if(!vmOptions.watch.hasOwnProperty(nameSpace)){
  151. vmOptions.watch[nameSpace] = {};
  152. }
  153. var methodNameSpace = vmOptions.watch[nameSpace];
  154. methodNameSpace[watchAttr] = _vmOptions.watch[watchAttr];
  155. /*vmOptions.watch[nameSpace][watchAttr] = _vmOptions.watch[watchAttr];*/
  156. }
  157. }
  158. }
  159. //处理_initMethod 初始化执行函数
  160. if (_vmOptions.hasOwnProperty('_initMethod')) {
  161. vc.initMethod.push(_vmOptions._initMethod);
  162. }
  163. //处理_initEvent
  164. if (_vmOptions.hasOwnProperty('_initEvent')) {
  165. vc.initEvent.push(_vmOptions._initEvent);
  166. }
  167. //处理_initEvent_destroyedMethod
  168. if (_vmOptions.hasOwnProperty('_destroyedMethod')) {
  169. vc.destroyedMethod.push(_vmOptions._destroyedMethod);
  170. }
  171. };
  172. //绑定跳转函数
  173. vc.jumpToPage = function (url) {
  174. window.location.href = url;
  175. };
  176. //保存菜单
  177. vc.setCurrentMenu = function (_menuId) {
  178. window.localStorage.setItem('hc_menuId', _menuId);
  179. };
  180. //获取菜单
  181. vc.getCurrentMenu = function () {
  182. return window.localStorage.getItem('hc_menuId');
  183. };
  184. //保存用户菜单
  185. vc.setMenus = function (_menus) {
  186. window.localStorage.setItem('hc_menus', JSON.stringify(_menus));
  187. };
  188. //获取用户菜单
  189. vc.getMenus = function () {
  190. return JSON.parse(window.localStorage.getItem('hc_menus'));
  191. };
  192. //保存菜单状态
  193. vc.setMenuState = function (_menuState) {
  194. window.localStorage.setItem('hc_menu_state', _menuState);
  195. };
  196. //获取菜单状态
  197. vc.getMenuState = function () {
  198. return window.localStorage.getItem('hc_menu_state');
  199. };
  200. //保存用户菜单
  201. vc.saveData = function (_key, _value) {
  202. window.localStorage.setItem(_key, JSON.stringify(_value));
  203. };
  204. //获取用户菜单
  205. vc.getData = function (_key) {
  206. return JSON.parse(window.localStorage.getItem(_key));
  207. };
  208. //保存当前小区信息 _communityInfo : {"communityId":"123213","name":"测试小区"}
  209. vc.setCurrentCommunity = function (_currentCommunityInfo) {
  210. window.localStorage.setItem('hc_currentCommunityInfo', JSON.stringify(_currentCommunityInfo));
  211. };
  212. //获取当前小区信息
  213. // @return {"communityId":"123213","name":"测试小区"}
  214. vc.getCurrentCommunity = function () {
  215. return JSON.parse(window.localStorage.getItem('hc_currentCommunityInfo'));
  216. };
  217. //保存当前小区信息 _communityInfos : [{"communityId":"123213","name":"测试小区"}]
  218. vc.setCommunitys = function (_communityInfos) {
  219. window.localStorage.setItem('hc_communityInfos', JSON.stringify(_communityInfos));
  220. };
  221. //获取当前小区信息
  222. // @return {"communityId":"123213","name":"测试小区"}
  223. vc.getCommunitys = function () {
  224. return JSON.parse(window.localStorage.getItem('hc_communityInfos'));
  225. };
  226. //删除缓存数据
  227. vc.clearCacheData = function () {
  228. window.localStorage.clear();
  229. };
  230. //将org 对象的属性值赋值给dst 属性名为一直的属性
  231. vc.copyObject = function (org, dst) {
  232. //for(key in Object.getOwnPropertyNames(dst)){
  233. for (var key in dst) {
  234. if (org.hasOwnProperty(key)) {
  235. dst[key] = org[key]
  236. }
  237. }
  238. };
  239. //扩展 现有的对象 没有的属性扩充上去
  240. vc.extendObject = function (org, dst) {
  241. for (var key in dst) {
  242. if (!org.hasOwnProperty(key)) {
  243. dst[key] = org[key]
  244. }
  245. }
  246. };
  247. //获取url参数
  248. vc.getParam = function (_key) {
  249. //返回当前 URL 的查询部分(问号 ? 之后的部分)。
  250. var urlParameters = location.search;
  251. //如果该求青中有请求的参数,则获取请求的参数,否则打印提示此请求没有请求的参数
  252. if (urlParameters.indexOf('?') != -1) {
  253. //获取请求参数的字符串
  254. var parameters = decodeURI(urlParameters.substr(1));
  255. //将请求的参数以&分割中字符串数组
  256. parameterArray = parameters.split('&');
  257. //循环遍历,将请求的参数封装到请求参数的对象之中
  258. for (var i = 0; i < parameterArray.length; i++) {
  259. if (_key == parameterArray[i].split('=')[0]) {
  260. return parameterArray[i].split('=')[1];
  261. }
  262. }
  263. }
  264. return "";
  265. };
  266. //查询url
  267. vc.getUrl = function () {
  268. //返回当前 URL 的查询部分(问号 ? 之后的部分)。
  269. var urlParameters = location.pathname;
  270. return urlParameters;
  271. };
  272. //对象转get参数
  273. vc.objToGetParam = function (obj) {
  274. var str = [];
  275. for (var p in obj)
  276. if (obj.hasOwnProperty(p)) {
  277. str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
  278. }
  279. return str.join("&");
  280. };
  281. //空判断 true 为非空 false 为空
  282. vc.notNull = function (_paramObj) {
  283. if (_paramObj == null || _paramObj == undefined || _paramObj.trim() == '') {
  284. return false;
  285. }
  286. return true;
  287. };
  288. //设置debug 模式
  289. vc.setDebug = function (_param) {
  290. vc.debug = _param;
  291. };
  292. //数据共享存放 主要为了组件间传递数据
  293. vc.put = function (_key, _value) {
  294. vc.map[_key] = _value;
  295. };
  296. //数据共享 获取 主要为了组件间传递数据
  297. vc.get = function (_key) {
  298. return vc.map[_key];
  299. };
  300. })(window.vc);
  301. /**
  302. vc 定时器处理
  303. **/
  304. (function (w, vc) {
  305. /**
  306. 创建定时器
  307. **/
  308. vc.createTimer = function (func, sec) {
  309. var _timer = w.setInterval(func, sec);
  310. vc.timers.push(_timer); //这里将所有的定时器保存起来,页面退出时清理
  311. return _timer;
  312. };
  313. //清理定时器
  314. vc.clearTimer = function (timer) {
  315. clearInterval(timer);
  316. }
  317. })(window, window.vc);
  318. /**
  319. 时间处理工具类
  320. **/
  321. (function (vc) {
  322. function add0(m) {
  323. return m < 10 ? '0' + m : m
  324. }
  325. vc.dateFormat = function (shijianchuo) {
  326. //shijianchuo是整数,否则要parseInt转换
  327. var time = new Date(parseInt(shijianchuo));
  328. var y = time.getFullYear();
  329. var m = time.getMonth() + 1;
  330. var d = time.getDate();
  331. var h = time.getHours();
  332. var mm = time.getMinutes();
  333. var s = time.getSeconds();
  334. return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
  335. }
  336. })(window.vc);
  337. (function (vc) {
  338. vc.propTypes = {
  339. string: "string",//字符串类型
  340. array: "array",
  341. object: "object",
  342. number: "number"
  343. }
  344. })(window.vc);
  345. /**
  346. toast
  347. **/
  348. (function (vc) {
  349. vc.toast = function Toast(msg, duration) {
  350. duration = isNaN(duration) ? 3000 : duration;
  351. var m = document.createElement('div');
  352. m.innerHTML = msg;
  353. 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;";
  354. document.body.appendChild(m);
  355. setTimeout(function () {
  356. var d = 0.5;
  357. m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
  358. m.style.opacity = '0';
  359. setTimeout(function () {
  360. document.body.removeChild(m)
  361. }, d * 1000);
  362. }, duration);
  363. }
  364. })(window.vc);