common.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. import md5 from 'js-md5'
  2. import dayjs from 'dayjs'
  3. /**
  4. * md5 加密
  5. * @param val string
  6. * @returns strng
  7. */
  8. export const fnMd5 = (val: string) => md5(val)
  9. /**
  10. * 判断对象是否为空
  11. * @param obj Object
  12. * @returns boolean
  13. */
  14. export const isEmptyObject = (obj: object) => Object.keys(obj).length > 0
  15. /**
  16. * 时间的处理
  17. * @param date new Date
  18. * @returns string
  19. */
  20. export const dayJs = (date?: Date | string) => dayjs(date)
  21. /**
  22. * 生成一个唯一值
  23. * @returns string
  24. */
  25. export const generateRandom = (): string => {
  26. return Math.random().toString(16).slice(2)
  27. }
  28. /**
  29. *
  30. * @param menuList 菜单列表
  31. * @param result 输出得结果
  32. * @param parent 子菜单
  33. * @returns object
  34. */
  35. export const getAllBreadcrumbList = (menuList: any, result: { [key: string]: any } = {}, parent = []) => {
  36. for (const item of menuList) {
  37. result[item.T_permission.trim()] = [...parent, item]
  38. if (item.Children) getAllBreadcrumbList(item.Children, result, result[item.T_permission])
  39. }
  40. return result
  41. }
  42. const get_name = (name: string): string => {
  43. if (/\//.test(name)) {
  44. return name.split('/')[1]
  45. }
  46. return name
  47. }
  48. /**
  49. * 将扁平化的数组转换成带有meta component字段的新数组
  50. * @param menuList []
  51. */
  52. export const AddRouterMeta = (menuList: any[]) => {
  53. let reg = /^[a-zA-Z]+$/
  54. menuList.forEach((menu: any) => {
  55. if (menu?.Children) {
  56. AddRouterMeta(menu?.Children)
  57. }
  58. menu.path = menu.T_permission
  59. menu.name = get_name(menu.T_permission)
  60. menu.meta = {
  61. icon: reg.test(menu.T_icon) ? menu.T_icon : menu.T_icon.slice(1),
  62. title: menu.T_name,
  63. isKeepAlive: true
  64. }
  65. menu.component = menu.T_uri
  66. })
  67. return menuList
  68. }
  69. /**
  70. * tree to flat
  71. * @param menuList []
  72. */
  73. export const flatMenuListGet = (menuList: any) => {
  74. const result = []
  75. for (let menu of menuList) {
  76. if (menu.Children) {
  77. let res: any = flatMenuListGet(menu.Children)
  78. result.push(...res)
  79. } else {
  80. result.push({ ...menu })
  81. }
  82. }
  83. return result
  84. }
  85. /**
  86. * 分钟转小时
  87. * @param time
  88. */
  89. export const getFormatDuration = (time: number) => {
  90. let hour = (time / 60).toString().padStart(2,'0')
  91. let minute = (time % 60).toString().padStart(2,'0')
  92. return (parseInt(hour) == 0 ?'':parseInt(hour)+'小时') + (Number(minute)<0?minute.substring(1,3) +'分':Number(minute)==0?'':parseInt(minute)+'分')
  93. // let hour = 0
  94. // let minute = 0
  95. // let result = ''
  96. // if (time >= 60 || time < 0) {
  97. // hour = time / 60
  98. // minute = time % 60
  99. // } else {
  100. // result = '' + time + '小时'
  101. // }
  102. // if (Math.abs(minute) > 0) {
  103. // result = '' + parseInt(minute + '') + '分' + result
  104. // }
  105. // if (Math.abs(hour) > 0) {
  106. // result = '' + parseInt(hour + '') + '小时' + result
  107. // }
  108. // return result
  109. }
  110. interface iconsType {
  111. [propName: string]: string | number
  112. }
  113. export const icons: iconsType = {
  114. ue7d1: '\ue7d1',
  115. ue63e: '\ue63e',
  116. ue603: '\ue603',
  117. ue636: '\ue636',
  118. ue661: '\ue661',
  119. ue648: '\ue648',
  120. ue6a1: '\ue6a1',
  121. ue645: '\ue645',
  122. ue619: '\ue619',
  123. ue627: '\ue627',
  124. ue64c: '\ue64c',
  125. ue6aa: '\ue6aa',
  126. ue690: '\ue690',
  127. ue663: '\ue663',
  128. ue7cd: '\ue7cd',
  129. ue831: '\ue831',
  130. ue7ec: '\ue7ec',
  131. ue626: '\ue626',
  132. ue608: '\ue608',
  133. ue60c: '\ue60c',
  134. ue607: '\ue607',
  135. ue72c: '\ue72c',
  136. ue71f: '\ue71f',
  137. ue682: '\ue682',
  138. ue670: '\ue670',
  139. ue60b: '\ue60b',
  140. ue88f: '\ue88f',
  141. ue612: '\ue612',
  142. ue60a: '\ue60a',
  143. ue613: '\ue613',
  144. ue628: '\ue628',
  145. ue60f: '\ue60f',
  146. ue7e8: '\ue7e8',
  147. ue62a: '\ue62a',
  148. ue63a: '\ue63a',
  149. ue7d3: '\ue7d3',
  150. ue6db: '\ue6db',
  151. ue614: '\ue614',
  152. ue609: '\ue609',
  153. ue651: '\ue651',
  154. ue675: '\ue675',
  155. ue679: '\ue679'
  156. }
  157. export function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void {
  158. let timerId: number | undefined
  159. return (...args: Parameters<T>) => {
  160. if (timerId) {
  161. clearTimeout(timerId)
  162. }
  163. timerId = window.setTimeout(() => {
  164. fn(...args)
  165. timerId = undefined
  166. }, delay)
  167. }
  168. }