findUserByWorkNo.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. interface TreeNode {
  2. children?: TreeNode[];
  3. users?: {
  4. idtUserWorkNo: string;
  5. // 其他用户属性
  6. }[];
  7. }
  8. /**
  9. * 从树形结构数据中查找 idtUserWorkNo 相等的用户项
  10. * @param nodes 树形结构数据
  11. * @param workNo 要查找的工号
  12. * @returns 找到的用户项,如果未找到则返回 undefined
  13. */
  14. export function findUserByWorkNo(nodes: TreeNode[], workNo: string) {
  15. for (const node of nodes) {
  16. if (node.users) {
  17. const foundUser = node.users.find((user) => user.idtUserWorkNo === workNo);
  18. if (foundUser) {
  19. return foundUser;
  20. }
  21. }
  22. if (node.children) {
  23. const result = findUserByWorkNo(node.children, workNo);
  24. if (result) {
  25. return result;
  26. }
  27. }
  28. }
  29. return undefined;
  30. }
  31. interface TreeNode {
  32. children?: TreeNode[];
  33. idtOrgId?: string;
  34. users?: {
  35. idtUserWorkNo: string;
  36. }[];
  37. }
  38. /**
  39. * 从树形结构数据中查找 idtUserWorkNo 相等的用户项,并返回其同级别的 idtOrgOrgCode
  40. * @param nodes 树形结构数据
  41. * @param workNo 要查找的工号
  42. * @returns 找到的 idtOrgId undefined
  43. */
  44. export function findOrgCodeByWorkNo(nodes: TreeNode[], workNo: string): string | undefined {
  45. for (const node of nodes) {
  46. if (node.users) {
  47. const foundUser = node.users.find((user) => user.idtUserWorkNo === workNo);
  48. if (foundUser) {
  49. return node.idtOrgId;
  50. }
  51. }
  52. if (node.children) {
  53. const result = findOrgCodeByWorkNo(node.children, workNo);
  54. if (result) {
  55. return result;
  56. }
  57. }
  58. }
  59. return undefined;
  60. }
  61. interface TreeNode {
  62. children?: TreeNode[];
  63. idtOrgId?: string;
  64. idtOrgName?: string;
  65. users?: {
  66. appAccountAccountName: string;
  67. idtUserWorkNo: string;
  68. }[];
  69. }
  70. export interface TransformedTreeNode {
  71. label: string;
  72. value: string;
  73. children?: TransformedTreeNode[];
  74. }
  75. /**
  76. * 将原始树形结构数据转换为指定格式的树形结构
  77. * @param nodes 原始树形结构数据
  78. * @returns 转换后的树形结构数据
  79. */
  80. export const transformTreeData = (nodes: TreeNode[], isNeedUser = false): TransformedTreeNode[] => {
  81. return nodes.map((node) => {
  82. const { children, idtOrgId, idtOrgName, users } = node;
  83. const result: TransformedTreeNode = {
  84. label: idtOrgName || '',
  85. value: idtOrgId || '',
  86. };
  87. if (children && children.length > 0) {
  88. result.children = transformTreeData(children, isNeedUser);
  89. }
  90. if (isNeedUser && users && users.length > 0) {
  91. result.children = users.map((user) => ({
  92. label: `${user.idtUserWorkNo}(${user.appAccountAccountName})`,
  93. value: user.idtUserWorkNo,
  94. }));
  95. }
  96. return result;
  97. });
  98. };
  99. /**
  100. * 去除字符串中的括号及其内部内容
  101. * @param str 要处理的字符串
  102. * @returns 处理后的字符串
  103. */
  104. export function removeParentheses(str: string) {
  105. return str.replace(/\(.*?\)/g, '');
  106. }