util.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. // 获取url中的参数
  2. export const addParam = (params) => {
  3. let result = [];
  4. for (let key in params) {
  5. result.push(`${key}=${params[key]}`)
  6. }
  7. if (result.length == 0) return ''
  8. return `?${result.join('&')}`
  9. };
  10. export const getUrlParams = (url) => {
  11. let result = {
  12. url: '',
  13. params: {}
  14. };
  15. let list = url.split('?');
  16. result.url = list[0];
  17. let params = list[1];
  18. if (params) {
  19. let list = params.split('&');
  20. list.forEach(ele => {
  21. let dic = ele.split('=');
  22. let label = dic[0];
  23. let value = dic[1];
  24. result.params[label] = value;
  25. });
  26. }
  27. return result;
  28. };
  29. export const getObjType = obj => {
  30. var toString = Object.prototype.toString;
  31. var map = {
  32. '[object Boolean]': 'boolean',
  33. '[object Number]': 'number',
  34. '[object String]': 'string',
  35. '[object Function]': 'function',
  36. '[object Array]': 'array',
  37. '[object Date]': 'date',
  38. '[object RegExp]': 'regExp',
  39. '[object Undefined]': 'undefined',
  40. '[object Null]': 'null',
  41. '[object Object]': 'object'
  42. };
  43. if (obj instanceof Element) {
  44. return 'element';
  45. }
  46. return map[toString.call(obj)];
  47. };
  48. export const deepClone = data => {
  49. var type = getObjType(data);
  50. var obj;
  51. if (type === 'array') obj = [];
  52. else if (type === 'object') obj = {};
  53. else return data;
  54. if (type === 'array') {
  55. for (var i = 0, len = data.length; i < len; i++) {
  56. data[i] = (() => {
  57. if (data[i] === 0) {
  58. return data[i];
  59. }
  60. return data[i];
  61. })();
  62. if (data[i]) {
  63. delete data[i].$parent;
  64. }
  65. obj.push(deepClone(data[i]));
  66. }
  67. } else if (type === 'object') {
  68. for (var key in data) {
  69. if (data) {
  70. delete data.$parent;
  71. }
  72. obj[key] = deepClone(data[key]);
  73. }
  74. }
  75. return obj;
  76. };
  77. export function validatenull (val) {
  78. // 特殊判断
  79. if (val && parseInt(val) === 0) return false;
  80. const list = ['$parent'];
  81. if (val instanceof Date || typeof val === 'boolean' || typeof val === 'number') return false;
  82. if (val instanceof Array) {
  83. if (val.length === 0) return true;
  84. } else if (val instanceof Object) {
  85. val = deepClone(val);
  86. list.forEach(ele => {
  87. delete val[ele];
  88. });
  89. for (var o in val) {
  90. return false;
  91. }
  92. return true;
  93. } else {
  94. if (
  95. val === 'null' ||
  96. val == null ||
  97. val === 'undefined' ||
  98. val === undefined ||
  99. val === ''
  100. ) {
  101. return true;
  102. }
  103. return false;
  104. }
  105. return false;
  106. }
  107. export const setPx = (val, defval = '') => {
  108. if (validatenull(val)) val = defval;
  109. if (validatenull(val)) return '';
  110. val = val + '';
  111. if (val.indexOf('%') === -1) {
  112. val = val + 'px';
  113. }
  114. return val;
  115. };
  116. export const loadFont = (path = '') => {
  117. function checkFont (name) {
  118. const values = document.fonts.values();
  119. let isHave = false;
  120. let item = values.next();
  121. while (!item.done && !isHave) {
  122. let fontFace = item.value;
  123. if (fontFace.family === name) {
  124. isHave = true;
  125. }
  126. return isHave;
  127. }
  128. }
  129. const key = ".ttf"
  130. if (path.indexOf(key) == -1) return
  131. let name = path.substr(path.lastIndexOf('/') + 1).replace(key, '')
  132. if (document.fonts && !checkFont(name)) {
  133. const fontFace = new FontFace(name, `local('${name}'),url('${path}')`);
  134. fontFace.load().then(font => document.fonts.add(font));
  135. }
  136. return name
  137. }