personApi.ts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. import { defHttp } from '@jeesite/core/utils/http/axios';
  2. import { useGlobSetting } from '@jeesite/core/hooks/setting';
  3. import {
  4. AddPersonGroupDTO,
  5. IntimacyConfigDTO,
  6. PersonBasicInfo,
  7. PersonBasicInfoDTO,
  8. PersonGroup,
  9. PersonGroupRel,
  10. } from './types/dto';
  11. const { adminPath } = useGlobSetting();
  12. const normalizeHasMainValue = (value?: PersonGroupRel['hasMain']) => value === true || value === 'Y';
  13. const normalizePersonGroup = (group: PersonGroup): PersonGroup => ({
  14. ...group,
  15. personList: (group.personList || []).map((item) => ({
  16. ...item,
  17. hasMain: normalizeHasMainValue(item.hasMain),
  18. })),
  19. });
  20. const normalizePersonGroupRequest = (group: PersonGroup) => ({
  21. ...group,
  22. personList: (group.personList || []).map((item) => ({
  23. ...item,
  24. hasMain: normalizeHasMainValue(item.hasMain) ? 'Y' : 'N',
  25. })),
  26. });
  27. // ==================== 亲密度管理 ====================
  28. /**
  29. * 获取亲密度配置列表
  30. */
  31. export const listIntimacy = () => defHttp.get<IntimacyConfigDTO[]>({ url: adminPath + '/intimacy/list' });
  32. /**
  33. * 批量修改亲密度配置
  34. */
  35. export const modifyIntimacy = (data: IntimacyConfigDTO[]) =>
  36. defHttp.postJson<void>(
  37. { url: adminPath + '/intimacy/modify', data },
  38. { skipSuccessMessage: true, skipErrorMessage: true },
  39. );
  40. /**
  41. * 获取特殊日期列表
  42. */
  43. export const listSpecialDateConfig = () =>
  44. defHttp.get<Record<string, any>>(
  45. { url: adminPath + '/sdc/list' },
  46. { skipSuccessMessage: true, skipErrorMessage: true },
  47. );
  48. /**
  49. * 新增特殊日期
  50. */
  51. export const createSpecialDateConfig = (data: Record<string, any>) =>
  52. defHttp.postJson<void>(
  53. { url: adminPath + '/sdc/create', data },
  54. { skipSuccessMessage: true, skipErrorMessage: true },
  55. );
  56. /**
  57. * 更新特殊日期
  58. */
  59. export const updateSpecialDateConfig = (data: Record<string, any>) =>
  60. defHttp.postJson<void>(
  61. { url: adminPath + '/sdc/update', data },
  62. { skipSuccessMessage: true, skipErrorMessage: true },
  63. );
  64. /**
  65. * 删除特殊日期
  66. */
  67. export const deleteSpecialDateConfig = (id: string | number) =>
  68. defHttp.get<void>(
  69. { url: adminPath + '/sdc/delete', params: { id } },
  70. { skipSuccessMessage: true, skipErrorMessage: true },
  71. );
  72. // ==================== 人员基本信息管理 ====================
  73. /**
  74. * 创建或更新人员信息
  75. */
  76. export const createPersonBasicInfo = (data: PersonBasicInfoDTO) =>
  77. defHttp.postJson<void>(
  78. { url: adminPath + '/pbi/create', data },
  79. { skipSuccessMessage: true, skipErrorMessage: true },
  80. );
  81. /**
  82. * 删除人员信息
  83. */
  84. export const deletePersonBasicInfo = (personName: string) =>
  85. defHttp.delete<void>(
  86. { url: adminPath + '/pbi/delete', params: { personName } },
  87. { skipSuccessMessage: true, skipErrorMessage: true },
  88. );
  89. /**
  90. * 更新人员信息
  91. */
  92. export const updatePersonBasicInfo = (data: PersonBasicInfoDTO) =>
  93. defHttp.postJson<void>(
  94. { url: adminPath + '/pbi/update', data },
  95. { skipSuccessMessage: true, skipErrorMessage: true },
  96. );
  97. /**
  98. * 获取所有人员信息
  99. */
  100. export const getPersons = () =>
  101. defHttp.get<PersonBasicInfo[]>(
  102. { url: adminPath + '/pbi/getPersons', timeout: 8000 },
  103. { isShowLoading: false, errorMessageMode: 'none' },
  104. );
  105. /**
  106. * 获取人员下拉选项
  107. */
  108. export const getPersonOptions = async (withAll = true) => {
  109. const list = await getPersons();
  110. const options = (Array.isArray(list) ? list : []).map((item) => ({
  111. label: item.personName || '-',
  112. value: item.personName || '',
  113. }));
  114. if (withAll) {
  115. options.unshift({ label: '全部', value: 'all' });
  116. }
  117. return options;
  118. };
  119. /**
  120. * 设置人员排序
  121. */
  122. export const personOrder = (data: PersonBasicInfo[]) =>
  123. defHttp.postJson<void>(
  124. { url: adminPath + '/pbi/personOrder', data },
  125. { skipSuccessMessage: true, skipErrorMessage: true },
  126. );
  127. // ==================== 人员分组管理 ====================
  128. /**
  129. * 获取分组列表
  130. */
  131. export const listPersonGroups = () =>
  132. defHttp
  133. .get<PersonGroup[]>({ url: adminPath + '/pg/list' }, { skipErrorMessage: true })
  134. .then((list) => (Array.isArray(list) ? list.map(normalizePersonGroup) : []));
  135. /**
  136. * 创建分组
  137. */
  138. export const createPersonGroup = (data: PersonGroup) =>
  139. defHttp.postJson<void>(
  140. { url: adminPath + '/pg/create', data: normalizePersonGroupRequest(data) },
  141. { skipSuccessMessage: true, skipErrorMessage: true },
  142. );
  143. /**
  144. * 更新分组信息
  145. */
  146. export const updatePersonGroup = (data: PersonGroup) =>
  147. defHttp.postJson<void>(
  148. { url: adminPath + '/pg/update', data: normalizePersonGroupRequest(data) },
  149. { skipSuccessMessage: true, skipErrorMessage: true },
  150. );
  151. /**
  152. * 删除分组
  153. */
  154. export const deletePersonGroup = (id: string) =>
  155. defHttp.postJson<void>(
  156. { url: adminPath + '/pg/delete', data: { id } },
  157. { skipSuccessMessage: true, skipErrorMessage: true },
  158. );
  159. /**
  160. * 添加人员到分组
  161. */
  162. export const addPersonToGroup = (data: AddPersonGroupDTO) =>
  163. defHttp.postJson<void>(
  164. { url: adminPath + '/pg/addPerson', data },
  165. { skipSuccessMessage: true, skipErrorMessage: true },
  166. );
  167. /**
  168. * 从分组删除人员
  169. */
  170. export const remPersonFromGroup = (relId: string) =>
  171. defHttp.delete<void>(
  172. { url: adminPath + '/pg/remPerson', params: { relId } },
  173. { skipSuccessMessage: true, skipErrorMessage: true },
  174. );
  175. /**
  176. * 变更主要人员
  177. */
  178. export const changeMainPerson = (relId: string, groupId: string) =>
  179. defHttp.get<void>(
  180. { url: adminPath + '/pg/changeMain', params: { relId, groupId } },
  181. { skipSuccessMessage: true, skipErrorMessage: true },
  182. );