説明なし

util.js 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. const isLeapYear = y => y % 4 == 0 && y % 100 != 0 || y % 100 == 0 && y % 400 == 0
  2. const variables = {
  3. y: {
  4. text: "年",
  5. range: [null, null]
  6. },
  7. m: {
  8. text: "月",
  9. range: [1, 12]
  10. },
  11. d: {
  12. text: "日",
  13. range: [1, 31]
  14. },
  15. h: {
  16. text: "时",
  17. range: [0, 23]
  18. },
  19. i: {
  20. text: "分",
  21. range: [0, 59]
  22. },
  23. s: {
  24. text: "秒",
  25. range: [0, 59]
  26. }
  27. }
  28. export function templateFactory(args) {
  29. const {
  30. mode,
  31. yearRange
  32. } = args
  33. let val
  34. // #ifdef VUE2
  35. val = args.value
  36. // #endif
  37. // #ifdef VUE3
  38. val = args.modelValue
  39. // #endif
  40. const [start, end] = yearRange
  41. let ret = {}
  42. for (const key of mode) {
  43. ret[key] = variables[key]
  44. }
  45. if (mode.indexOf("y") !== -1) ret['y'].range = [start || 2016, end || new Date().getFullYear()]
  46. if (mode.indexOf("d") !== -1) {
  47. const date = getDate(val || getLocalTime(mode))
  48. ret['d'].range = [1, date]
  49. }
  50. return ret
  51. }
  52. export function getDate(dt) {
  53. const s = dt.substring(0, dt.lastIndexOf("-"))
  54. let year, month
  55. const d = new Date()
  56. switch (s.length) {
  57. case 0:
  58. year = d.getFullYear()
  59. month = d.getMonth() + 1
  60. break;
  61. case 2:
  62. year = d.getFullYear()
  63. month = parseInt(s)
  64. break;
  65. default:
  66. const [y, m] = s.split("-")
  67. year = parseInt(y)
  68. month = parseInt(m)
  69. break;
  70. }
  71. const days = [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  72. return days[month - 1]
  73. }
  74. export function getLocalTime(fmt) {
  75. if (!fmt) return null
  76. const da = new Date()
  77. const y = fmtNumber(da.getFullYear()),
  78. m = fmtNumber(da.getMonth() + 1),
  79. d = fmtNumber(da.getDate()),
  80. h = fmtNumber(da.getHours()),
  81. i = fmtNumber(da.getMinutes()),
  82. s = fmtNumber(da.getSeconds())
  83. const types = {
  84. 'y': `${y}`,
  85. 'm': `${m}`,
  86. 'd': `${d}`,
  87. 'h': `${h}`,
  88. 'i': `${i}`,
  89. 's': `${s}`,
  90. 'ym': `${y}-${m}`,
  91. 'md': `${m}-${d}`,
  92. 'hi': `${h}:${i}`,
  93. 'is': `${i}:${s}`,
  94. 'ymd': `${y}-${m}-${d}`,
  95. 'his': `${h}:${i}:${s}`,
  96. 'mdh': `${m}-${d} ${h}`,
  97. 'ymdh': `${y}-${m}-${d} ${h}`,
  98. 'mdhi': `${m}-${d} ${h}:${i}`,
  99. 'mdhis': `${m}-${d} ${h}:${m}:${s}`,
  100. 'yd': `${y}-${d}`,
  101. 'ymdhi': `${y}-${m}-${d} ${h}:${i}`,
  102. 'ymdhis': `${y}-${m}-${d} ${h}:${i}:${s}`,
  103. }
  104. return types[fmt]
  105. }
  106. export function fmtNumber(n) {
  107. // return n.toString().padStart(2,"0")
  108. return n > 9 ? n + "" : "0" + n
  109. }
  110. export function time2Timestamp(timer) {
  111. return new Date(timer).getTime()
  112. }
  113. export function getForm(name = 'uniForms') {
  114. let parent = this.$parent;
  115. let parentName = parent.$options.name;
  116. while (parentName !== name) {
  117. parent = parent.$parent;
  118. if (!parent) return false;
  119. parentName = parent.$options.name;
  120. }
  121. return parent;
  122. }