utils.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import request from '../request/index.js'
  2. //格式化日期
  3. //data: 日期对象或时间戳
  4. //format: 格式化字符串,默认"YYYY-MM-DD hh:mm:ss"
  5. export function formatDate(
  6. data = { date: null, timestamp: null },
  7. format = "YYYY-MM-DD hh:mm:ss"
  8. ) {
  9. if (!data?.date && !data?.timestamp) {
  10. return ""
  11. }
  12. let date = data?.date
  13. if (!date) {
  14. date = data?.timestamp * 1000
  15. }
  16. const d = new Date(date);
  17. const year = d.getFullYear();
  18. const month = String(d.getMonth() + 1).padStart(2, "0");
  19. const day = String(d.getDate()).padStart(2, "0");
  20. const hour = String(d.getHours()).padStart(2, "0");
  21. const minute = String(d.getMinutes()).padStart(2, "0");
  22. const second = String(d.getSeconds()).padStart(2, "0");
  23. return format
  24. .replace("YYYY", year)
  25. .replace("MM", month)
  26. .replace("DD", day)
  27. .replace("hh", hour)
  28. .replace("mm", minute)
  29. .replace("ss", second);
  30. }
  31. //获取唯一id
  32. export function getUid(len = 16) {
  33. const ts = Date.now().toString(36);
  34. const rand = Math.random().toString(36).slice(2);
  35. return (ts + rand).slice(0, len);
  36. }
  37. let permissions = []
  38. //判断是否有某个功能权限
  39. export function hasFunction(key) {
  40. const baseUrl = import.meta.env.VITE_APP_API_BASEURL
  41. return new Promise((resolve, reject) => {
  42. if (permissions.length) {
  43. resolve(permissions.includes(key))
  44. return
  45. }
  46. request(
  47. "/v1/api/basic/home/menu?type=3",
  48. {
  49. baseUrl
  50. },
  51. 'GET'
  52. ).then((res) => {
  53. permissions = res.data?.permissions || []
  54. resolve(permissions.includes(key))
  55. }).catch(err => {
  56. reject(err)
  57. })
  58. })
  59. }
  60. //
  61. /**
  62. * 分页获取本地数据
  63. * @param {Object} params
  64. * @param {number} params.page 当前页码
  65. * @param {number} params.size 每页条数
  66. * @param {Array} params.initData 原始数据源
  67. * @param {Array} params.data 当前已加载数据
  68. * @returns {Object} { page, data }
  69. */
  70. export function getPaginatedList({ page = 0, size = 10, initData = [], data = [] }) {
  71. if (!data) data = [];
  72. if (
  73. data.length >= initData.length
  74. ) {
  75. return {};
  76. }
  77. const _page = (page || 0) + 1;
  78. const start = (_page - 1) * size;
  79. const end = Math.min(
  80. start + size,
  81. initData?.length || 0
  82. );
  83. data = [
  84. ...data,
  85. ...(initData?.slice(start, end) || []),
  86. ];
  87. return {
  88. page: _page,
  89. data
  90. }
  91. }