report.api.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { cacheFor } from '@/request/api/index';
  2. import { useVisitor } from '@/stores';
  3. import HTTP from '../alova';
  4. import { fromAnalysisModel, fromReportData, fromSchemeRequest } from '../model';
  5. export function getAnalysisResultsMethod() {
  6. const Visitor = useVisitor();
  7. return HTTP.Post(
  8. `/fdhb-tablet/dialogueManage/dialog/${ Visitor.patientId }/${ Visitor.resultId }`,
  9. { questions: [], asyncTongueResult: false, patientId: Visitor.patientId },
  10. {
  11. meta: { ignoreException: true },
  12. async transform(data: Record<string, any>, headers) {
  13. const id = data?.tonguefaceAnalysisReportId;
  14. const date = data?.tonguefaceAnalysisReportDate;
  15. const miniProgramURL = data?.tonguefaceAnalysisReportAppletImg;
  16. data = data.nextQuestions?.find((item: any) => item.classify === 'tongue_result');
  17. let message = '';
  18. if ( data ) {
  19. const tongue = fromAnalysisModel('tongue', data);
  20. const face = fromAnalysisModel('face', data);
  21. if (!tongue.result && !face.result) {
  22. message = data.content;
  23. } else {
  24. const { show, force } = await miniProgramMethod('report');
  25. return {
  26. id, date, miniProgramURL: show ? miniProgramURL : void 0,
  27. tongue, face,
  28. payLock: show && force,
  29. };
  30. }
  31. }
  32. throw { message: message || `[分析结果] 照片不符合检测要求,图片不是舌头(请拍摄带有舌头的、清晰的彩色照!)` };
  33. },
  34. },
  35. );
  36. }
  37. export function getReportMethod(id: string) {
  38. const Visitor = useVisitor();
  39. const params = { healthAnalysisReportId: id, patientId: Visitor.patientId?.toString() };
  40. return HTTP.Get(`/fdhb-tablet/analysisManage/getHealRepDetailById`, {
  41. params,
  42. async transform(data, headers) {
  43. const patientId = (<any>data)?.patientId?.toString()
  44. if (params.patientId !== patientId ) Visitor.$reset()
  45. const report = fromReportData(<any> data);
  46. Visitor.updatePulseReport(report.pulse, patientId);
  47. const { show, force } = await miniProgramMethod('report');
  48. if ( !show ) { report.miniProgramURL = void 0; }
  49. report.payLock = show && force;
  50. return report;
  51. },
  52. });
  53. }
  54. export function getAlcoholReportMethod() {
  55. const Visitor = useVisitor();
  56. const params = { healthAnalysisReportId: Visitor.reportId, patientId: Visitor.patientId };
  57. return HTTP.Get(`/fdhb-tablet/analysisManage/getHealRepDetailById`, {
  58. params,
  59. transform(data: Record<string, any>) {
  60. return {
  61. date: data?.alcoholAnalysisReportDate /*?? data?.reportTime*/,
  62. alcohol: fromAnalysisModel('alcohol', data),
  63. }
  64. }
  65. });
  66. }
  67. export function updateReportMethod(id: string, data: Record<string, any>) {
  68. const Visitor = useVisitor();
  69. const params = {
  70. healthAnalysisReportId: id,
  71. constitutionGroupImg: data?.constitutionGroupImg,
  72. factorItemRadarImg: data?.factorItemRadarImg,
  73. patientId: Visitor.patientId
  74. };
  75. return HTTP.Post(`/fdhb-tablet/analysisManage/upConFacImgById`, params, {});
  76. }
  77. export function getReportSchemeMethod(id: string, standalone?: boolean) {
  78. const Visitor = useVisitor();
  79. const params = { healthAnalysisReportId: id, patientId: Visitor.patientId, standalone };
  80. return HTTP.Get(`/fdhb-tablet/analysisManage/getCondProgDetailById`, {
  81. params,
  82. async transform(data: any, headers) {
  83. const scheme = fromSchemeRequest(data);
  84. const { show, force } = await miniProgramMethod('scheme');
  85. if ( !show ) { scheme.miniProgramURL = void 0; }
  86. scheme.payLock = show && force;
  87. return scheme;
  88. },
  89. });
  90. }
  91. export function miniProgramMethod(type: 'report' | 'scheme' = 'report') {
  92. return HTTP.Post<{ show: boolean; force: boolean; }, { tabletRequiredPageOperationElements: string[] }>(
  93. `/fdhb-tablet/warrantManage/getPageSets`, void 0, {
  94. cacheFor, name: `variate:mini_program`,
  95. params: { k: `mini_program_${type}` },
  96. transform(data, headers) {
  97. const cfg = Array.isArray(data.tabletRequiredPageOperationElements) ? data.tabletRequiredPageOperationElements : [];
  98. /**
  99. * - health_analysis_report_page_appletbutton
  100. * - health_analysis_report_page_appletscan
  101. *
  102. * - health_analysis_scheme_page_appletbutton
  103. * - health_analysis_scheme_page_appletscan
  104. */
  105. return {
  106. show: cfg.includes(`health_analysis_${type}_page_appletbutton`),
  107. force: cfg.includes(`health_analysis_${type}_page_appletscan`),
  108. };
  109. },
  110. });
  111. }