Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

191 lignes
6.0 KiB

  1. import { fetchApi } from '@/utils/request';
  2. import { firstCharToLowerCase, firstCharToUpperCase } from '@/utils/tool';
  3. import { propertyOf } from 'lodash';
  4. import dayjs from 'dayjs';
  5. export async function fetchAddressBook(companyId) {
  6. const res = await fetchApi('company/queryCompanyById', { id: companyId });
  7. const { company: unfixedCompany = {} } = res.Data || {};
  8. const company = firstCharToLowerCase(unfixedCompany);
  9. const firnode = node('company', company.id, company.companyName, company);
  10. firnode.children = await fetchNodes(companyId);
  11. return [firnode];
  12. }
  13. /**
  14. * 查询单个节点下的节点列表
  15. * @param {string} parentNodeId 若为空,则表示查询根节点
  16. */
  17. async function fetchNodes(parentNodeId) {
  18. const resData = await fetchApi('dept/queryDeptsByDeptId', { superId: parentNodeId });
  19. const nodes = (resData.Data || []).map(d => {
  20. const data = firstCharToLowerCase(d);
  21. data.arraySuper = data.levelId.split('-');
  22. return node('dept', data.id, data.deptName, data);
  23. });
  24. if (nodes.length) {
  25. const childNodesList = await Promise.all(nodes.map(node => fetchNodes(node.id)))
  26. childNodesList.forEach((childNodes, idx) => {
  27. const node = nodes[idx];
  28. if (childNodes.length) {
  29. node.children = childNodes;
  30. } else {
  31. node.isLeaf = true;
  32. }
  33. })
  34. }
  35. return nodes;
  36. }
  37. /**
  38. *
  39. * @param {string} nodeType 节点类型 company | other
  40. * @param {*} id
  41. * @param {*} label
  42. * @param {*} data
  43. * @param {*} topNodeId
  44. * @param {*} isLeaf
  45. * @param {*} disabled
  46. */
  47. function node(nodeType, id, label, data = {}, topNodeId, isLeaf = false, disabled = false) {
  48. return {
  49. id,
  50. label,
  51. // topNodeId,
  52. nodeType,
  53. isLeaf,
  54. disabled,
  55. data,
  56. }
  57. }
  58. /**
  59. * 添加部门
  60. */
  61. export async function createDepartment(lowercaseParams) {
  62. const params = firstCharToUpperCase(lowercaseParams);
  63. return await fetchApi('dept/addDept', params);
  64. }
  65. /**
  66. * 查询指定 部门/企业 下的通讯录
  67. * @param {} node
  68. * @param {*} page
  69. * @param {*} pageSize
  70. */
  71. export async function getUserListByNode(node, page, pageSize, keywords) {
  72. const res = await (keywords
  73. ? fetchApi('user/fuzzyQueryUserOnOneCompany', { companyId: node.id, fuzzy: keywords /* pageIndex: page, pageSize */ })
  74. : fetchApi('user/queryUsersByDeptId', { deptId: node.id, idType: node.nodeType === 'company' ? 0 : 1, pageIndex: page, pageSize }));
  75. const { data: list, total } = res.Data || {};
  76. return {
  77. list: list.map(firstCharToLowerCase),
  78. page,
  79. pageSize,
  80. total,
  81. }
  82. }
  83. export async function getUserInfo(userId) {
  84. const res = await fetchApi('user/queryUserByUserId', { id: userId });
  85. const data = firstCharToLowerCase(Object.assign({}, propertyOf(res)('Data.UserExt', {}), res.Data || {}));
  86. data.roleName = roleMap[data.permission] || '';
  87. data.backgroundRoleName = consoleRoleMap[data.backgroundPermission] || '';
  88. data.userState = stateMap[data.staffStatus] || '';
  89. data.isDeparture = data.staffStatus;
  90. return data;
  91. }
  92. export const roleOptions = [
  93. { value: 99, label: "无权限" },
  94. { value: 0, label: "普通职员" },
  95. { value: 1, label: "项目负责人" },
  96. ];
  97. export const roleMap = roleOptions.reduce((h, { value, label }) => (h[value] = label, h), {});
  98. export const consoleRoleOptions = [
  99. { value: 99, label: "无权限" },
  100. { value: 2, label: "企业管理员" },
  101. ];
  102. export const consoleRoleMap = consoleRoleOptions.reduce((h, { value, label }) => (h[value] = label, h), {});
  103. export const stateOptions = [
  104. { value: 0, label: "在职" },
  105. { value: 1, label: "离职" },
  106. ];
  107. export const stateMap = stateOptions.reduce((h, { value, label }) => (h[value] = label, h), {});
  108. /* 员工接口 */
  109. export async function addUser(lowerCaseParams) {
  110. const params = firstCharToUpperCase({ ...lowerCaseParams });
  111. // 字段传值修正
  112. params.Birthday && (params.Birthday = dayjs(params.Birthday).toISOString());
  113. params.DepartureDate && (params.DepartureDate = dayjs(params.DepartureDate).toISOString());
  114. params.GradutionDate && (params.GradutionDate = dayjs(params.GradutionDate).toISOString());
  115. params.HireDate && (params.HireDate = dayjs(params.HireDate).toISOString());
  116. const userExt = {
  117. Address: params.Address,
  118. Birthday: params.Birthday,
  119. DepartureDate: params.DepartureDate,
  120. Education: params.Education,
  121. GradutionDate: params.GradutionDate,
  122. GradutionSchool: params.GradutionSchool,
  123. HireDate: params.HireDate,
  124. // Id: params.Id,
  125. MaritalStatus: params.MaritalStatus,
  126. National: params.National,
  127. NativePlace: params.NativePlace,
  128. PoliticalLandscape: params.PoliticalLandscape,
  129. Specialty: params.Specialty,
  130. StaffStatus: params.IsDeparture,
  131. };
  132. params.UserExt = userExt;
  133. const res = await fetchApi('user/addUser', params);
  134. return res;
  135. }
  136. /* 员工接口 */
  137. export async function updateUser(lowerCaseParams) {
  138. const params = firstCharToUpperCase({ ...lowerCaseParams });
  139. // 字段传值修正
  140. params.Birthday && (params.Birthday = dayjs(params.Birthday).toISOString());
  141. params.DepartureDate && (params.DepartureDate = dayjs(params.DepartureDate).toISOString());
  142. params.GradutionDate && (params.GradutionDate = dayjs(params.GradutionDate).toISOString());
  143. params.HireDate && (params.HireDate = dayjs(params.HireDate).toISOString());
  144. const userExt = {
  145. Address: params.Address,
  146. Birthday: params.Birthday,
  147. DepartureDate: params.DepartureDate,
  148. Education: params.Education,
  149. GradutionDate: params.GradutionDate,
  150. GradutionSchool: params.GradutionSchool,
  151. HireDate: params.HireDate,
  152. Id: params.Id,
  153. MaritalStatus: params.MaritalStatus,
  154. National: params.National,
  155. NativePlace: params.NativePlace,
  156. PoliticalLandscape: params.PoliticalLandscape,
  157. Specialty: params.Specialty,
  158. StaffStatus: params.IsDeparture,
  159. };
  160. params.UserExt = userExt;
  161. console.log(params);
  162. const res = await fetchApi('user/updateUser', params);
  163. return res;
  164. }
  165. export async function updateUserAvator(userInfo, avatorServerPath) {
  166. const userInfoCopy = Object.assign({}, userInfo,{ headImgUrl: avatorServerPath });
  167. return await updateUser(userInfoCopy);
  168. }