helper.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. export default {
  2. // 继承对象
  3. Extend(old, ...obj) {
  4. return Object.assign(old, ...obj)
  5. },
  6. // 判断是否是空对象、数组
  7. IsEmpty(obj) {
  8. if (obj == null) return true;
  9. if (obj.length > 0) return false;
  10. if (obj.length === 0) return true;
  11. for (var key in obj) {
  12. if (Object.prototype.hasOwnProperty.call(obj, key)) return false;
  13. }
  14. return true;
  15. },
  16. // 完美深拷贝
  17. DeepCopy(obj) {
  18. var str, newobj = obj.constructor === Array ? [] : {};
  19. if (typeof obj !== 'object') {
  20. return;
  21. } else if (JSON) {
  22. str = JSON.stringify(obj), //系列化对象
  23. newobj = JSON.parse(str); //还原
  24. } else {
  25. for (var i in obj) {
  26. newobj[i] = typeof obj[i] === 'object' ?
  27. cloneObj(obj[i]) : obj[i];
  28. }
  29. }
  30. return newobj;
  31. },
  32. // 拷贝对象,对于null,undefined,function等数据会失效
  33. Origin(obj) {
  34. if (typeof obj === 'object') {
  35. try {
  36. return JSON.parse(JSON.stringify(obj))
  37. } catch (err) {}
  38. }
  39. console.log('Fun-Origin 错误的对象格式', obj)
  40. return obj
  41. },
  42. // 数组转成对象
  43. ArrayToObject(arr, key) {
  44. let obj = {}
  45. if (Array.isArray(arr) && arr.length) {
  46. arr.forEach((item, index) => {
  47. obj[item[key] ? item[key] : index] = this.Origin(item)
  48. })
  49. }
  50. return obj
  51. },
  52. //
  53. // 缓存
  54. //
  55. Cache(key, val, timeout) {
  56. if (key) {
  57. let date = new Date()
  58. if (val === null) {
  59. // 清除缓存
  60. uni.removeStorageSync(`${key}_timeout`)
  61. return uni.removeStorageSync(key)
  62. } else if (val === undefined && timeout === undefined) {
  63. // 获取缓存
  64. let cache = uni.getStorageSync(key)
  65. if (cache === undefined) {
  66. return undefined
  67. } else {
  68. let expired = uni.getStorageSync(`${key}_timeout`)
  69. if (expired && date > expired) {
  70. uni.removeStorageSync(key)
  71. uni.removeStorageSync(`${key}_timeout`)
  72. return undefined
  73. }
  74. return cache
  75. }
  76. } else if (val !== undefined) {
  77. // 存储缓存
  78. if (timeout) {
  79. let throughSecond = 0
  80. if (typeof timeout === 'number') {
  81. throughSecond = timeout
  82. } else if (typeof timeout === 'string') {
  83. let number = parseInt(timeout)
  84. let unit = timeout.charAt(timeout.length - 1)
  85. if (number && number > 0) {
  86. if (unit === 'd' || unit === 'day' || unit === 'D') {
  87. throughSecond = number * 60 * 60 * 24
  88. } else if (unit === 'h' || unit === 'hour' || unit === 'H') {
  89. throughSecond = number * 60 * 60
  90. } else if (unit === 'm' || unit === 'minute' || unit === 'H') {
  91. throughSecond = number * 60
  92. } else {
  93. throughSecond = number
  94. }
  95. }
  96. }
  97. if (throughSecond) {
  98. let expired = new Date(throughSecond * 1000 + (new Date()).valueOf())
  99. uni.setStorageSync(`${key}_timeout`, expired)
  100. }
  101. }
  102. return uni.setStorageSync(key, val)
  103. }
  104. }
  105. return undefined
  106. },
  107. CacheClean() {
  108. uni.clearStorage()
  109. },
  110. Token(token) {
  111. if (token === undefined) {
  112. return this.Cache('token')
  113. } else if (token === null) {
  114. return this.Cache('token', null)
  115. } else if (token) {
  116. return this.Cache('token', token)
  117. }
  118. },
  119. //
  120. // 时间
  121. //
  122. Time(data, format = "yyyy-MM-dd hh:mm") {
  123. return this.UnTimestamp(data, format)
  124. },
  125. Timestamp(date) {
  126. let time = date ? new Date(date) : new Date()
  127. return Date.parse(time) / 1000
  128. },
  129. UnTimestamp(time = new Date(), format = "yyyy-MM-dd hh:mm:ss") {
  130. if (typeof time === 'string' || typeof time === 'number') {
  131. if (time % 1 === 0 && time < 10000000000) {
  132. time = new Date(time * 1000)
  133. } else {
  134. time = new Date(time)
  135. }
  136. }
  137. if (time === null || time === '0000-00-00 00:00:00' || time == '') {
  138. time = new Date(0)
  139. }
  140. let date = {
  141. "M+": time.getMonth() + 1,
  142. "d+": time.getDate(),
  143. "h+": time.getHours(),
  144. "m+": time.getMinutes(),
  145. "s+": time.getSeconds(),
  146. "q+": Math.floor((time.getMonth() + 3) / 3),
  147. "S+": time.getMilliseconds()
  148. };
  149. if (/(y+)/i.test(format)) {
  150. format = format.replace(RegExp.$1, (time.getFullYear() + '').substr(4 - RegExp.$1.length));
  151. }
  152. for (let k in date) {
  153. if (new RegExp("(" + k + ")").test(format)) {
  154. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ?
  155. date[k] : ("00" + date[k]).substr(("" + date[k]).length));
  156. }
  157. }
  158. return format
  159. },
  160. }