common.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import md5 from 'js-md5'
  2. import dayjs from 'dayjs'
  3. import * as qiniu from 'qiniu-js'
  4. /**
  5. * md5 加密
  6. * @param val string
  7. * @returns strng
  8. */
  9. export const fnMd5 = (val: string) => md5(val)
  10. /**
  11. * 判断对象是否为空
  12. * @param obj Object
  13. * @returns boolean
  14. */
  15. export const isEmptyObject = (obj: object) => Object.keys(obj).length > 0
  16. /**
  17. * 时间的处理
  18. * @param date new Date
  19. * @returns string
  20. */
  21. export const dayJs = (date: Date | string) => dayjs(date)
  22. /**
  23. *
  24. * @param menuList 菜单列表
  25. * @param result 输出得结果
  26. * @param parent 子菜单
  27. * @returns object
  28. */
  29. export const getAllBreadcrumbList = (menuList: any, result: { [key: string]: any } = {}, parent = []) => {
  30. for (const item of menuList) {
  31. result[item.T_permission.trim()] = [...parent, item]
  32. if (item.Children) getAllBreadcrumbList(item.Children, result, result[item.T_permission])
  33. }
  34. return result
  35. }
  36. const path = {
  37. account: ['/roles', '/users'],
  38. salary: ['/salaryCount', '/salaryMy', '/salary'],
  39. workAttendance: ['/leave', '/myLeave', '/myOvertime', '/overtime', '/recordsFinance', '/records']
  40. }
  41. const permissionPath = (permission: string): string => {
  42. if (path.account.includes(permission)) {
  43. return '/account'
  44. } else if (path.salary.includes(permission)) {
  45. return '/salary'
  46. } else if (path.workAttendance.includes(permission)) {
  47. return '/workAttendance'
  48. }
  49. return ''
  50. }
  51. const get_name = (name: string): string => {
  52. if (/\//.test(name)) {
  53. return name.split('/')[1]
  54. }
  55. return name
  56. }
  57. const functionucFirst = (str: string) => str[0].toUpperCase() + str.slice(1)
  58. /**
  59. * 将扁平化的数组转换成带有meta component字段的新数组
  60. * @param menuList []
  61. */
  62. export const AddRouterMeta = (menuList: any) => {
  63. let reg = /^[a-zA-Z]+$/
  64. menuList.forEach((menu: any) => {
  65. if (menu?.Children) {
  66. AddRouterMeta(menu?.Children)
  67. }
  68. menu.path = menu.T_permission
  69. menu.name = get_name(menu.T_permission)
  70. menu.meta = {
  71. icon: reg.test(menu.T_icon) ? menu.T_icon : menu.T_icon.slice(1),
  72. title: menu.T_name,
  73. isKeepAlive: true
  74. }
  75. menu.component = permissionPath(menu.T_permission) + '/' + functionucFirst(menu.name)
  76. })
  77. return menuList
  78. }
  79. /**
  80. * tree to flat
  81. * @param menuList []
  82. */
  83. export const flatMenuListGet = (menuList: any) => {
  84. const result = []
  85. for (let menu of menuList) {
  86. if (menu.Children) {
  87. let res: any = flatMenuListGet(menu.Children)
  88. result.push(...res)
  89. } else {
  90. result.push({ ...menu })
  91. }
  92. }
  93. return result
  94. }
  95. /**
  96. * 分钟转小时
  97. * @param time
  98. */
  99. export const getFormatDuration = (time: number) => {
  100. let hour = 0
  101. let minute = 0
  102. let result = ''
  103. if (time >= 60) {
  104. hour = time / 60
  105. minute = time % 60
  106. } else {
  107. result = '' + time + '分'
  108. }
  109. if (minute > 0) {
  110. result = '' + parseInt(minute + '') + '分' + result
  111. }
  112. if (hour > 0) {
  113. result = '' + parseInt(hour + '') + '小时' + result
  114. }
  115. return result
  116. }
  117. /**
  118. *
  119. * @param {*} file 上传的文件
  120. * @param {*} token 上传需要的token
  121. */
  122. export const qiniuUpLoadFun = (file: any, token: any) => {
  123. //七牛上传方法
  124. return new Promise(function (resolve) {
  125. let timestamp = new Date().valueOf()
  126. let params = {
  127. file: file, //要上传的文件
  128. key: 'paper_file/' + timestamp + file.name, //自定义文件地址
  129. token: token,
  130. config: {
  131. useCdnDomain: false,
  132. // region: undefined,
  133. region: qiniu.region.z2,
  134. domin: 'https://qiniu.region.z2',
  135. chunkSize: 1000
  136. },
  137. putExtra: {
  138. fname: file.name,
  139. params: {},
  140. mimeType: [] || null
  141. }
  142. }
  143. console.log('domin')
  144. resolve(params)
  145. })
  146. }
  147. export function upLoadQiniu(params: any) {
  148. let observable = qiniu.upload(params.file, params.key, params.token, params.putExtra, params.config)
  149. let observer = {
  150. next(res: any) {
  151. // console.log(res);
  152. console.log('上传中', res)
  153. },
  154. error(err: any) {
  155. console.log(err)
  156. },
  157. complete(res: any) {
  158. // let url = 'http://xxxxxx.cn/' + res.key
  159. // layer.close(loading) //关闭loading效果
  160. console.log(res)
  161. // resolve(url)
  162. }
  163. }
  164. observable.subscribe(observer)
  165. }
  166. interface iconsType {
  167. [propName: string]: string | number
  168. }
  169. export const icons: iconsType = {
  170. ue7d1: '\ue7d1',
  171. ue63e: '\ue63e',
  172. ue603: '\ue603',
  173. ue636: '\ue636',
  174. ue661: '\ue661',
  175. ue648: '\ue648',
  176. ue6a1: '\ue6a1',
  177. ue645: '\ue645',
  178. ue619: '\ue619',
  179. ue627: '\ue627',
  180. ue64c: '\ue64c',
  181. ue6aa: '\ue6aa',
  182. ue690: '\ue690',
  183. ue663: '\ue663',
  184. ue7cd: '\ue7cd',
  185. ue831: '\ue831'
  186. }