monograph.api.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import type {
  2. MonographDTO,
  3. MonographSubmitVO,
  4. MonographVO,
  5. } from './monograph.schema';
  6. import type { PageQueryMethodArgs } from '#/request/schema';
  7. import type { PageDTO } from '#/request/schema/record';
  8. import { getEnvelopeData, httpClient } from '#/request';
  9. import {
  10. pageQueryArgsTransform,
  11. paginateTransform,
  12. transform,
  13. } from '#/request/schema';
  14. import {
  15. mockDeleteMonographMethod,
  16. mockEditMonographMethod,
  17. mockGetMonographMethod,
  18. mockListMonographMethod,
  19. USE_MONOGRAPH_MOCK,
  20. } from './monograph.mock';
  21. import {
  22. decodeMonograph,
  23. decodeMonographType,
  24. encodeMonograph,
  25. encodeMonographQuery,
  26. filterMonographPageByCategory,
  27. } from './monograph.schema';
  28. export { USE_MONOGRAPH_MOCK } from './monograph.mock';
  29. export type {
  30. MonographCategory,
  31. MonographQueryVO,
  32. MonographSubmitVO,
  33. MonographVO,
  34. } from './monograph.schema';
  35. export {
  36. getMonographCategoryLabel,
  37. MONOGRAPH_CATEGORY_OPTIONS,
  38. MonographVOSchema,
  39. } from './monograph.schema';
  40. /** 论著分页列表 */
  41. export function listMonographMethod(...args: PageQueryMethodArgs) {
  42. if (USE_MONOGRAPH_MOCK) {
  43. return mockListMonographMethod(...args) as any;
  44. }
  45. const { params, data } = pageQueryArgsTransform(args, encodeMonographQuery);
  46. const filterCategory = data.type ? decodeMonographType(data.type) : undefined;
  47. return httpClient.Post(
  48. `/wis-pc/outcome/treatiseManage/page`,
  49. { ...params, ...data },
  50. {
  51. params,
  52. hitSource: /^outcome-monograph:(edit|delete)/,
  53. transform: (page: PageDTO<MonographDTO>) =>
  54. filterMonographPageByCategory(
  55. paginateTransform(decodeMonograph)(page),
  56. filterCategory,
  57. ),
  58. },
  59. );
  60. }
  61. /** 新增论著 */
  62. export function createMonographMethod(vo: MonographSubmitVO) {
  63. if (USE_MONOGRAPH_MOCK) {
  64. return mockEditMonographMethod(vo) as any;
  65. }
  66. return httpClient.Post(
  67. `/wis-pc/outcome/treatiseManage/add`,
  68. encodeMonograph(vo),
  69. {
  70. name: 'outcome-monograph:edit',
  71. transform: getEnvelopeData<null | string>,
  72. },
  73. );
  74. }
  75. /** 修改论著 */
  76. export function updateMonographMethod(vo: MonographSubmitVO) {
  77. if (USE_MONOGRAPH_MOCK) {
  78. return mockEditMonographMethod(vo) as any;
  79. }
  80. return httpClient.Post(
  81. `/wis-pc/outcome/treatiseManage/update`,
  82. encodeMonograph(vo),
  83. {
  84. name: 'outcome-monograph:edit',
  85. transform: getEnvelopeData<null | string>,
  86. },
  87. );
  88. }
  89. /** 新增 / 修改论著 */
  90. export function editMonographMethod(vo: MonographSubmitVO) {
  91. return vo.id ? updateMonographMethod(vo) : createMonographMethod(vo);
  92. }
  93. /** 论著详情 */
  94. export function getMonographMethod(vo: Partial<MonographVO>) {
  95. if (USE_MONOGRAPH_MOCK) {
  96. return mockGetMonographMethod(vo) as any;
  97. }
  98. return httpClient.Post(
  99. `/wis-pc/outcome/treatiseManage/detail/${vo.id}`,
  100. {},
  101. {
  102. hitSource: /^outcome-monograph:edit/,
  103. transform: transform(decodeMonograph),
  104. },
  105. );
  106. }
  107. /** 删除论著 */
  108. export function deleteMonographMethod(vo: Pick<MonographVO, 'id'>) {
  109. if (USE_MONOGRAPH_MOCK) {
  110. return mockDeleteMonographMethod(vo) as any;
  111. }
  112. return httpClient.Post(
  113. `/wis-pc/outcome/treatiseManage/delete/${vo.id}`,
  114. {},
  115. {
  116. name: 'outcome-monograph:delete',
  117. meta: { ignoreError: true },
  118. },
  119. );
  120. }