index.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /**
  2. * This is just a simple version of deep copy
  3. * Has a lot of edge cases bug
  4. * If you want to use a perfect deep copy, use lodash's _.cloneDeep
  5. * @param {Object} source
  6. * @returns {Object}
  7. */
  8. export function deepClone (source) {
  9. if (!source && typeof source !== 'object') {
  10. throw new Error('error arguments', 'deepClone')
  11. }
  12. const targetObj = source.constructor === Array ? [] : {}
  13. Object.keys(source).forEach(keys => {
  14. if (source[keys] && typeof source[keys] === 'object') {
  15. targetObj[keys] = deepClone(source[keys])
  16. } else {
  17. targetObj[keys] = source[keys]
  18. }
  19. })
  20. return targetObj
  21. }
  22. /**
  23. * @description:封装方法:获取今天、昨天、明天
  24. * @param {*} dates 0 今天 -1 -2
  25. * @returns
  26. */
  27. export function getDay (dates) {
  28. var dd = new Date()
  29. var n = dates || 0
  30. dd.setDate(dd.getDate() + n)
  31. var y = dd.getFullYear()
  32. var m = dd.getMonth() + 1
  33. var d = dd.getDate()
  34. m = m < 10 ? '0' + m : m
  35. d = d < 10 ? '0' + d : d
  36. var day = y + '-' + m + '-' + d
  37. return day
  38. }
  39. /**
  40. * @description: 获取某月的起始、结束日期
  41. * @param {*} val 年月 2023-01
  42. * @returns
  43. */
  44. export function getMonday (val) {
  45. let date = new Date(val)
  46. let new_year = date.getFullYear() // 取当前的年份
  47. let month = date.getMonth()
  48. let new_month = month + 1 // 取当前的月份
  49. let mon = ''
  50. let day = ''
  51. if (month > 12) {
  52. new_month -= 12 // 月份减
  53. new_year++ // 年份增
  54. }
  55. let firstDay = new Date(new_year, new_month, 1) // 取当年当月中的第一天
  56. let lastDay = new Date(firstDay.getTime() - 1000 * 60 * 60 * 24).getDate() // 获取当月最后一天日期
  57. if (firstDay.getMonth() < 10) {
  58. mon = '0' + firstDay.getMonth()
  59. } else {
  60. mon = firstDay.getMonth()
  61. }
  62. if (lastDay < 10) {
  63. day = '0' + lastDay
  64. } else {
  65. day = lastDay
  66. }
  67. let startDate =
  68. firstDay.getFullYear() + '-' + mon + '-' + '0' + firstDay.getDate()
  69. let endDate = firstDay.getFullYear() + '-' + mon + '-' + day
  70. let dateRange = [startDate, endDate]
  71. return dateRange
  72. }
  73. /**
  74. * @description: 获取本周起始日期
  75. * @param {*} type s 周开始 e周结束
  76. * @param {*} dates 0 本周
  77. * @returns
  78. */
  79. export function getDate (type, dates = 0) {
  80. var now = new Date()
  81. var nowTime = now.getTime()
  82. var day = now.getDay()
  83. var longTime = 24 * 60 * 60 * 1000
  84. var n = longTime * 7 * (dates || 0)
  85. if (type == 's') {
  86. var dd = nowTime - (day - 1) * longTime + n
  87. }
  88. if (type == 'e') {
  89. var dd = nowTime + (7 - day) * longTime + n
  90. }
  91. dd = new Date(dd)
  92. var y = dd.getFullYear()
  93. var m = dd.getMonth() + 1
  94. var d = dd.getDate()
  95. m = m < 10 ? '0' + m : m
  96. d = d < 10 ? '0' + d : d
  97. var day = y + '-' + m + '-' + d
  98. return day
  99. }
  100. /**
  101. * @description 获取最近 7天日期
  102. * @returns days
  103. */
  104. export function getRecent7Days () {
  105. let days = []
  106. for (let i = 0; i <= 24 * 6; i += 24) {
  107. // 使用当天时间戳减去以前的时间毫秒(小时 * 分 * 秒 * 毫秒)
  108. let dateItem = new Date(Date.now() - i * 60 * 60 * 1000)
  109. let y = dateItem.getFullYear()
  110. let m = dateItem.getMonth() + 1
  111. let d = dateItem.getDate()
  112. m = addDate0(m)
  113. d = addDate0(d)
  114. let valueItem = y + '-' + m + '-' + d
  115. days.push(valueItem)
  116. }
  117. return days
  118. }
  119. // 给日期拼接 0
  120. function addDate0 (time) {
  121. if (time.toString().length === 1) {
  122. time = '0' + time.toString()
  123. }
  124. return time
  125. }
  126. //补零 000
  127. export function pushZero (num) {
  128. let count = 3 - String(num).length
  129. if (count > 0) {
  130. return new Array(count).fill('0').join('') + num
  131. }
  132. return num
  133. }
  134. //表格分页 序号连续
  135. export function tableIndex (index, page, size) {
  136. return index + 1 + size * (page - 1)
  137. }