tools.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /**
  2. * 判断值是否为空
  3. * @param value 值
  4. * @returns {boolean}
  5. */
  6. export function isValueEmpty(value: any): boolean {
  7. if (value === null || value === undefined) {
  8. return true;
  9. }
  10. if (typeof value === "string" && value.trim() === "") {
  11. return true;
  12. }
  13. if (Array.isArray(value) && value.length === 0) {
  14. return true;
  15. }
  16. if (
  17. typeof value === "object" &&
  18. !Array.isArray(value) &&
  19. Object.keys(value).length === 0
  20. ) {
  21. return true;
  22. }
  23. if (typeof value === "symbol" && value.toString() === "Symbol()") {
  24. return true;
  25. }
  26. return false;
  27. }
  28. /**
  29. * 获取表单数据中有值的数据
  30. * @param formData 表单数据
  31. * @returns {T}
  32. */
  33. export function getFromValue<T>(formData: T): T {
  34. const result: any = {};
  35. for (const key in formData) {
  36. if (!isValueEmpty(formData[key])) {
  37. result[key] = formData[key];
  38. }
  39. }
  40. return result;
  41. }
  42. export function resetFromValue<T>(formData: T) {
  43. const result: any = {};
  44. for (const key in formData) {
  45. result[key] = '';
  46. }
  47. return result;
  48. }
  49. /**
  50. * 更新部门数据
  51. * @param arr 部门数据源
  52. * @param flag 是否需要添加全部人员和未分配
  53. * @returns
  54. */
  55. export function updateDepTreeData(arr: any, flag: boolean = false) {
  56. const result = []; // 创建一个新数组来存储结果
  57. for (let i = 0; i < arr.length; i++) {
  58. if (arr[i].id !== -1 && arr[i].id !== 0) {
  59. if (Array.isArray(arr[i].children) && arr[i].children.length > 0) {
  60. arr[i].children = updateDepTreeData(arr[i].children); // 递归更新子节点
  61. }
  62. arr[i].value = arr[i].id; // 更新value字段
  63. result.push(arr[i]); // 将更新后的节点添加到结果数组
  64. }
  65. }
  66. if(flag) {
  67. result.splice(0, 0, {
  68. id: -1,
  69. label: '全部人员',
  70. });
  71. result.push({
  72. id: 0,
  73. label: '未分配',
  74. });
  75. return result;
  76. }
  77. return result; // 返回更新后的数组,不包含id为-1或0的节点
  78. }