utils.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. //格式化日期
  2. export function getDate(type) {
  3. const date = new Date();
  4. let year = date.getFullYear();
  5. let month = date.getMonth() + 1;
  6. let day = date.getDate();
  7. if (type === 'end') {
  8. day = day + 1;
  9. }
  10. month = month > 9 ? month : '0' + month;
  11. day = day > 9 ? day : '0' + day;
  12. return `${year}-${month}-${day}`;
  13. }
  14. export function getDateNew(type = 'day') {
  15. const date = new Date();
  16. let year = date.getFullYear();
  17. let month = date.getMonth() + 1;
  18. let day = date.getDate();
  19. if (type === 'end') {
  20. day = day + 1;
  21. }
  22. month = month > 9 ? month : '0' + month;
  23. day = day > 9 ? day : '0' + day;
  24. if (type === 'year') return `${year}`
  25. if (type === 'month') return `${year}-${month}`
  26. return `${year}-${month}-${day}`;
  27. }
  28. export function stopScroll() {
  29. var box = function(e) {
  30. passive: false;
  31. };
  32. document.body.style.overflow = 'hidden';
  33. document.addEventListener("touchmove", box, false);
  34. }
  35. export function startScroll() {
  36. var box = function(e) {
  37. passive: false
  38. };
  39. document.body.style.overflow = ''; //出现滚动条
  40. document.removeEventListener("touchmove", box, false);
  41. }
  42. // 生成随机数
  43. export const getRuleNo = (suffix = 'R') => {
  44. const randomNum = Math.floor(Math.random() * 1000000)
  45. return `${suffix}${parseTime(new Date(), '{y}{m}{d}')}${randomNum}`
  46. }
  47. export function parseTime(time, cFormat) {
  48. if (arguments.length === 0 || !time) {
  49. return null
  50. }
  51. const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  52. let date
  53. if (typeof time === 'object') {
  54. date = time
  55. } else {
  56. if (typeof time === 'string') {
  57. if (/^[0-9]+$/.test(time)) {
  58. // support "1548221490638"
  59. time = parseInt(time)
  60. } else {
  61. // support safari
  62. // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
  63. time = time.replace(new RegExp(/-/gm), '/')
  64. }
  65. }
  66. if (typeof time === 'number' && time.toString().length === 10) {
  67. time = time * 1000
  68. }
  69. date = new Date(time)
  70. }
  71. const formatObj = {
  72. y: date.getFullYear(),
  73. m: date.getMonth() + 1,
  74. d: date.getDate(),
  75. h: date.getHours(),
  76. i: date.getMinutes(),
  77. s: date.getSeconds(),
  78. a: date.getDay()
  79. }
  80. const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
  81. const value = formatObj[key]
  82. // Note: getDay() returns 0 on Sunday
  83. if (key === 'a') {
  84. return ['日', '一', '二', '三', '四', '五', '六'][value]
  85. }
  86. return value.toString().padStart(2, '0')
  87. })
  88. return time_str
  89. }
  90. /**
  91. * 将毫秒,转换成时间字符串。例如说,xx 分钟
  92. *
  93. * @param ms 毫秒
  94. * @returns {string} 字符串
  95. */
  96. export function getDates(ms) {
  97. const day = Math.floor(ms / (24 * 60 * 60 * 1000));
  98. const hour = Math.floor((ms / (60 * 60 * 1000) - day * 24));
  99. const minute = Math.floor(((ms / (60 * 1000)) - day * 24 * 60 - hour * 60));
  100. const second = Math.floor((ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60));
  101. if (day > 0) {
  102. return day + "天" + hour + "小时" + minute + "分钟";
  103. }
  104. if (hour > 0) {
  105. return hour + "小时" + minute + "分钟";
  106. }
  107. if (minute > 0) {
  108. return minute + "分钟";
  109. }
  110. if (second > 0) {
  111. return second + "秒";
  112. } else {
  113. return 0 + "秒";
  114. }
  115. }
  116. //机构一维数组转树形结构
  117. export function toTreeData(option) {
  118. var _a, _b;
  119. if (Array.isArray(option)) {
  120. option = {
  121. data: arguments[0],
  122. idField: arguments[1],
  123. parentIdField: arguments[2],
  124. childrenField: arguments[3],
  125. parentId: arguments[4],
  126. addParentIds: arguments[5],
  127. parentIdsField: arguments[6],
  128. parentIds: arguments[7]
  129. };
  130. }
  131. const data = option.data;
  132. const idField = option.idField || option.idKey || "id";
  133. const parentIdField = option.parentIdField || option.pidKey || "parentId";
  134. const childrenField = option.childrenField || option.childKey || "children";
  135. const parentIdIsNull = typeof option.parentId === "undefined" && typeof option.pid === "undefined";
  136. const parentId = parentIdIsNull ? [] : (_a = option.parentId) != null ? _a : option.pid;
  137. const addParentIds = (_b = option.addParentIds) != null ? _b : option.addPIds;
  138. const parentIdsField = option.parentIdsField || option.parentsKey || "parentIds";
  139. const parentIds = option.parentIds;
  140. if (parentIdIsNull) {
  141. data.forEach((d) => {
  142. let flag = true;
  143. for (let i = 0; i < data.length; i++) {
  144. if (d[parentIdField] == data[i][idField]) {
  145. flag = false;
  146. break;
  147. }
  148. }
  149. if (flag) {
  150. parentId.push(d[parentIdField]);
  151. }
  152. });
  153. }
  154. const result = [];
  155. data.forEach((d) => {
  156. if (d[idField] == d[parentIdField]) {
  157. throw new Error(
  158. [
  159. "data error: {",
  160. idField + ": ",
  161. JSON.stringify(d[idField]),
  162. parentIdField + ": ",
  163. JSON.stringify(d[parentIdField]),
  164. "}"
  165. ].join("")
  166. );
  167. }
  168. const isArr = Array.isArray(parentId);
  169. const isParent = isArr ? parentId.includes(d[parentIdField]) : d[parentIdField] == parentId;
  170. if (isParent) {
  171. const r = {
  172. ...d
  173. };
  174. const children = toTreeData({
  175. data,
  176. idField,
  177. parentIdField,
  178. childrenField,
  179. parentId: d[idField],
  180. addParentIds,
  181. parentIdsField,
  182. parentIds: (parentIds != null ? parentIds : []).concat([d[idField]])
  183. });
  184. if (children.length > 0) {
  185. r[childrenField] = children;
  186. }
  187. if (addParentIds) {
  188. r[parentIdsField] = parentIds != null ? parentIds : [];
  189. }
  190. result.push(r);
  191. }
  192. });
  193. return result;
  194. }