request.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { Get, Post } from "../../lib/request/method";
  2. import dayjs from "dayjs";
  3. const ref = ['province', 'city', 'area'] as const;
  4. const ref2 = ['womenSpecialPeriod', 'foodAllergy', 'hobbyFlavor', 'job'] as const;
  5. function to(params: App.Patient.Model) {
  6. const { address, ..._data } = params;
  7. const data: Record<string, any> = {}
  8. if (Array.isArray(address)) {
  9. address.forEach(({ name, code }, index) => {
  10. const key = ref[index];
  11. data[`${key}Name`] = name
  12. data[`${key}Code`] = code
  13. })
  14. }
  15. for (const key of ref2) {
  16. if (Array.isArray(_data[key])) _data[key] = _data[key]?.map(item => item?.value || item).join(',') as any;
  17. }
  18. return { ..._data, ...data, }
  19. }
  20. function from(params: Record<string, any>) {
  21. const address = [];
  22. for (const key of ref) {
  23. const name = params[`${key}Name`];
  24. const code = params[`${key}Code`];
  25. if (name && code) {
  26. address[address.length] = { name, code };
  27. delete params[`${key}Name`];
  28. delete params[`${key}Code`];
  29. } else {
  30. break;
  31. }
  32. }
  33. for (const key of ref2) {
  34. if (typeof params[key] === 'string' && params[key]) params[key] = params[key].split(',')
  35. }
  36. return { ...params, address } as App.Patient.Model
  37. }
  38. export function getUserInfoMethod() {
  39. return Post(`/patientInfoManage/getPatientInfoDetail`, {}, {
  40. transform({ data }) {
  41. return from(<any>data)
  42. }
  43. })
  44. }
  45. export function createUserInfoMethod(data: App.Patient.Model) {
  46. return Post(`/patientInfoManage/savePatientInfo`, { ...to(data), mobileAccountId: 0, }, {
  47. transform({ data }) { return { patientId: data } }
  48. });
  49. }
  50. export async function updateUserInfoMethod(data: App.Patient.Model) {
  51. const result = await Post(`/patientInfoManage/updatePatientInfo`, to(data));
  52. }
  53. export function verifyCardnoMethod(value: string) {
  54. return Get(`/patientInfoManage/isExistCardno`, { params: { cardno: value }, transform({ data }) { return data } })
  55. }
  56. export async function getUserRecordMethod() {
  57. const { data: $dictionaries } = await Get(`/dict/getDicts`);
  58. const $is: AnyArray = $dictionaries.find((item: AnyObject) => item.dictType === 'sys_yes_no')?.items ?? [];
  59. const $w: AnyArray = $dictionaries.find((item: AnyObject) => item.dictType === 'women_special_period')?.items ?? [];
  60. const $f: AnyArray = $dictionaries.find((item: AnyObject) => item.dictType === 'food_allergy')?.items ?? [];
  61. const $h: AnyArray = $dictionaries.find((item: AnyObject) => item.dictType === 'hobby_flavor')?.items ?? [];
  62. const $j: AnyArray = $dictionaries.find((item: AnyObject) => item.dictType === 'job')?.items ?? [];
  63. const get = (value: string, $dictionaries: AnyArray) => {
  64. return value?.split(',')
  65. .map(value => {
  66. const [v, l] = value.split(':');
  67. return l ? l.trim() : $dictionaries.find(item => item.dictValue === v)?.dictLabel
  68. })
  69. .filter(Boolean)
  70. .join(', ')
  71. }
  72. return Post(`/patientInfoManage/pageChangeRecord`, {}, {
  73. transform({ data }: AnyObject) {
  74. return {
  75. total: data.total,
  76. data: data.data?.map((item: AnyObject) => {
  77. return {
  78. reportTime: dayjs(item.createTime).format('YY/MM/DD'),
  79. height: item.height ? `${item.height}cm` : '',
  80. weight: item.weight ? `${item.weight}kg` : '',
  81. smokeState: get(item.smokeState, $is),
  82. drinkState: get(item.drinkState, $is),
  83. foodAllergy: get(item.foodAllergy, $f),
  84. hobbyFlavor: get(item.hobbyFlavor, $h),
  85. job: get(item.job, $j),
  86. womenSpecialPeriod: get(item.womenSpecialPeriod, $w),
  87. }
  88. })
  89. };
  90. }
  91. })
  92. }