Pārlūkot izejas kodu

fix(@six/wisdom-legacy): 成果管理 - 诊疗方案查询、删除接口对接

cmj 2 dienas atpakaļ
vecāks
revīzija
949ae991f2

+ 22 - 13
apps/wisdom-legacy/src/api/common/illness.api.ts

@@ -3,15 +3,15 @@ import type { PageQueryMethodArgs } from '#/request/schema';
 import { httpClient } from '#/request';
 import { pageQueryArgsTransform, paginateTransform } from '#/request/schema';
 
-import {
-  mockListTherapyMethod,
-  USE_TREATMENT_PLAN_MOCK,
-} from '../outcome/treatment-plan.mock';
 import {
   decodeDisease,
   decodeICD10,
   decodeSymptom,
+  decodeTreatSyn,
+  decodeTreatTherapy,
   encodeIllnessQuery,
+  encodeTreatSynQuery,
+  encodeTreatTherapyQuery,
 } from './illness.schema';
 
 export type { IllnessVO } from './illness.schema';
@@ -42,28 +42,37 @@ export function listDiseaseMethod(...args: PageQueryMethodArgs) {
 
 export function listSymptomMethod(...args: PageQueryMethodArgs) {
   const { params, data } = pageQueryArgsTransform(args, encodeIllnessQuery);
+  return httpClient.Get(`/wis-pc/knowledge/pageDiagnoseSyndrome`, {
+    params: { ...params, ...data },
+    transform: paginateTransform(decodeSymptom),
+  });
+}
+
+/** 知识库——推荐证型分页查询 */
+export function listTreatSynMethod(...args: PageQueryMethodArgs) {
+  const { params, data } = pageQueryArgsTransform(args, encodeTreatSynQuery);
   return httpClient.Post(
-    `/wis-pc/knowledge/pageDiagnoseSyndrome`,
+    `/wis-pc/knowledge/pageDiagnoseSyndrome`, // /knowledge/pageTreatSyn
     { ...params, ...data },
     {
       params,
-      transform: paginateTransform(decodeSymptom),
+      transform: paginateTransform(decodeTreatSyn),
     },
   );
 }
 
+/** 知识库——推荐治法分页查询 */
 export function listTherapyMethod(...args: PageQueryMethodArgs) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockListTherapyMethod(...args) as any;
-  }
-
-  const { params, data } = pageQueryArgsTransform(args, encodeIllnessQuery);
+  const { params, data } = pageQueryArgsTransform(
+    args,
+    encodeTreatTherapyQuery,
+  );
   return httpClient.Post(
-    `/wis-pc/knowledge/pageDiagnoseTherapy`,
+    `/wis-pc/knowledge/pageTreatTherapy`,
     { ...params, ...data },
     {
       params,
-      transform: paginateTransform(decodeSymptom),
+      transform: paginateTransform(decodeTreatTherapy),
     },
   );
 }

+ 80 - 0
apps/wisdom-legacy/src/api/common/illness.schema.ts

@@ -49,6 +49,22 @@ export interface SymptomDTO {
   remarks: string;
 }
 
+/** 推荐证型 / 治法 DTO,对应 `TreatmentDiagnoseVo` */
+export interface TreatmentDiagnoseDTO {
+  disId?: string;
+  disCode?: string;
+  disName?: string;
+  synId?: string;
+  synCode?: string;
+  synName?: string;
+  therapyId?: string;
+  therapyCode?: string;
+  therapyName?: string;
+  therapy?: string;
+  classify?: string;
+  preType?: string;
+}
+
 // ---------------------------------------------------------------------------
 // 疾病类型 — VO
 // ---------------------------------------------------------------------------
@@ -111,6 +127,22 @@ interface IllnessQueryVO {
   type?: '0' | '1';
 }
 
+export interface TreatDiagnoseQueryVO {
+  keyword?: string;
+  disId?: string;
+  disCode?: string;
+  disName?: string;
+  synId?: string;
+  synCode?: string;
+  synName?: string;
+  therapyId?: string;
+  therapyCode?: string;
+  therapyName?: string;
+  therapy?: string;
+  classify?: string;
+  preType?: string;
+}
+
 // ---------------------------------------------------------------------------
 // 编解码
 // ---------------------------------------------------------------------------
@@ -148,6 +180,54 @@ export const decodeSymptom = (dto: SymptomDTO): SymptomVO => ({
   },
 });
 
+export const decodeTreatSyn = (dto: TreatmentDiagnoseDTO): IllnessVO => ({
+  id: dto.synId ?? '',
+  name: dto.synName ?? '',
+  code: dto.synCode ?? '',
+});
+
+export const decodeTreatTherapy = (dto: TreatmentDiagnoseDTO): IllnessVO => ({
+  id: dto.therapyId ?? '',
+  name: dto.therapy ?? dto.therapyName ?? '',
+  code: dto.therapyCode ?? '',
+});
+
+export const encodeTreatSynQuery = (
+  query: Partial<TreatDiagnoseQueryVO>,
+): Partial<TreatmentDiagnoseDTO> => {
+  const keyword = query.keyword?.trim();
+  return {
+    disId: query.disId,
+    disCode: query.disCode,
+    disName: query.disName,
+    synId: query.synId,
+    synCode: query.synCode,
+    synName: keyword || query.synName,
+    classify: query.classify,
+    preType: query.preType,
+  };
+};
+
+export const encodeTreatTherapyQuery = (
+  query: Partial<TreatDiagnoseQueryVO>,
+): Partial<TreatmentDiagnoseDTO> => {
+  const keyword = query.keyword?.trim();
+  return {
+    disId: query.disId,
+    disCode: query.disCode,
+    disName: query.disName,
+    synId: query.synId,
+    synCode: query.synCode,
+    synName: query.synName,
+    therapyId: query.therapyId,
+    therapyCode: query.therapyCode,
+    therapy: keyword || query.therapy,
+    therapyName: keyword || query.therapyName,
+    classify: query.classify,
+    preType: query.preType,
+  };
+};
+
 export const encodeIllnessQuery = (
   query: Partial<IllnessQueryVO>,
 ): Record<string, any> => {

+ 5 - 33
apps/wisdom-legacy/src/api/outcome/treatment-plan.api.ts

@@ -12,20 +12,12 @@ import {
   transform,
 } from '#/request/schema';
 
-import {
-  mockDeleteTreatmentPlanMethod,
-  mockEditTreatmentPlanMethod,
-  mockGetTreatmentPlanMethod,
-  mockListTreatmentPlanMethod,
-  USE_TREATMENT_PLAN_MOCK,
-} from './treatment-plan.mock';
 import {
   decodeTreatmentPlan,
   encodeTreatmentPlan,
   encodeTreatmentPlanQuery,
 } from './treatment-plan.schema';
 
-export { USE_TREATMENT_PLAN_MOCK } from './treatment-plan.mock';
 export type {
   TreatmentPlanSubmitVO,
   TreatmentPlanVO,
@@ -34,16 +26,12 @@ export { TreatmentPlanVOSchema } from './treatment-plan.schema';
 
 /** 诊疗方案分页列表 */
 export function listTreatmentPlanMethod(...args: PageQueryMethodArgs) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockListTreatmentPlanMethod(...args) as any;
-  }
-
   const { params, data } = pageQueryArgsTransform(
     args,
     encodeTreatmentPlanQuery,
   );
   return httpClient.Post(
-    `/wis-pc/outcome/tpManage/page`,
+    `/wis-pc/outcome/therapyPlanManage/page`,
     { ...params, ...data },
     {
       params,
@@ -55,12 +43,8 @@ export function listTreatmentPlanMethod(...args: PageQueryMethodArgs) {
 
 /** 新增诊疗方案 */
 export function createTreatmentPlanMethod(vo: TreatmentPlanSubmitVO) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockEditTreatmentPlanMethod(vo) as any;
-  }
-
   return httpClient.Post(
-    `/wis-pc/outcome/tpManage/add`,
+    `/wis-pc/outcome/therapyPlanManage/add`,
     encodeTreatmentPlan(vo),
     {
       name: 'outcome-tp:edit',
@@ -71,12 +55,8 @@ export function createTreatmentPlanMethod(vo: TreatmentPlanSubmitVO) {
 
 /** 修改诊疗方案 */
 export function updateTreatmentPlanMethod(vo: TreatmentPlanSubmitVO) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockEditTreatmentPlanMethod(vo) as any;
-  }
-
   return httpClient.Post(
-    `/wis-pc/outcome/tpManage/update`,
+    `/wis-pc/outcome/therapyPlanManage/update`,
     encodeTreatmentPlan(vo),
     {
       name: 'outcome-tp:edit',
@@ -92,12 +72,8 @@ export function editTreatmentPlanMethod(vo: TreatmentPlanSubmitVO) {
 
 /** 诊疗方案详情 */
 export function getTreatmentPlanMethod(vo: Partial<TreatmentPlanVO>) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockGetTreatmentPlanMethod(vo) as any;
-  }
-
   return httpClient.Post(
-    `/wis-pc/outcome/tpManage/detail/${vo.id}`,
+    `/wis-pc/outcome/therapyPlanManage/detail/${vo.id}`,
     {},
     {
       hitSource: /^outcome-tp:edit/,
@@ -108,12 +84,8 @@ export function getTreatmentPlanMethod(vo: Partial<TreatmentPlanVO>) {
 
 /** 删除诊疗方案 */
 export function deleteTreatmentPlanMethod(vo: Pick<TreatmentPlanVO, 'id'>) {
-  if (USE_TREATMENT_PLAN_MOCK) {
-    return mockDeleteTreatmentPlanMethod(vo) as any;
-  }
-
   return httpClient.Post(
-    `/wis-pc/outcome/tpManage/delete/${vo.id}`,
+    `/wis-pc/outcome/therapyPlanManage/delete/${vo.id}`,
     {},
     {
       name: 'outcome-tp:delete',

+ 1 - 1
apps/wisdom-legacy/src/api/outcome/treatment-plan.mock.ts

@@ -16,7 +16,7 @@ import {
 } from './treatment-plan.schema';
 
 /** 后端接口就绪后改为 false */
-export const USE_TREATMENT_PLAN_MOCK = true;
+export const USE_TREATMENT_PLAN_MOCK = false;
 
 type MethodLike<T> = PromiseLike<T> & {
   send?: (force?: boolean) => PromiseLike<T>;

+ 9 - 1
apps/wisdom-legacy/src/api/outcome/treatment-plan.schema.ts

@@ -11,11 +11,17 @@ import { decodeAuditRecord } from '#/request/schema/audit-record';
 // DTO
 // ---------------------------------------------------------------------------
 
-/** 诊疗方案 DTO,对应 `OutcomeTreatmentPlanDetail` */
+/** 诊疗方案 DTO,对应 `OutcomeTherapyPlanDetail` */
 export interface TreatmentPlanDTO extends AuditRecordDTO {
   id?: number | string;
+  status?: string;
+  remark?: string;
   personalStudioId?: number | string;
   fileUrl?: string;
+  downloadCount?: number;
+  browseCount?: number;
+  commentCount?: number;
+  praiseCount?: number;
   disease?: string;
   syndrome?: string;
   therapy?: string;
@@ -24,6 +30,8 @@ export interface TreatmentPlanDTO extends AuditRecordDTO {
 
 export interface TreatmentPlanQueryDTO {
   mixture?: string;
+  type?: string;
+  status?: string;
   personalStudioId?: number | string;
   pageNum?: number;
   pageSize?: number;

+ 37 - 2
apps/wisdom-legacy/src/views/outcome/treatment-plan.data.ts

@@ -6,8 +6,8 @@ import { defineEditShell } from '#/adapter/shell/edit';
 import { defineGrid } from '#/adapter/vxe-table';
 import {
   listDiseaseMethod,
-  listSymptomMethod,
   listTherapyMethod,
+  listTreatSynMethod,
 } from '#/api/common';
 import {
   editTreatmentPlanMethod,
@@ -96,6 +96,13 @@ export const treatmentPlanForm = defineEditShell<TreatmentPlanVO>({
         placeholder: '请选择病名',
         getPopupContainer,
       },
+      dependencies: {
+        triggerFields: ['disease.name'],
+        trigger(_values, formApi) {
+          formApi.setFieldValue('syndrome.name', undefined);
+          formApi.setFieldValue('therapy.name', undefined);
+        },
+      },
       rules: TreatmentPlanVOSchema.shape.disease.shape.name,
     },
     {
@@ -103,11 +110,24 @@ export const treatmentPlanForm = defineEditShell<TreatmentPlanVO>({
       fieldName: 'syndrome.name',
       label: '证型',
       componentProps: {
-        api: listSymptomMethod,
+        api: listTreatSynMethod,
         fieldNames: { label: 'name', value: 'name' },
         placeholder: '请选择证型',
         getPopupContainer,
       },
+      dependencies: {
+        triggerFields: ['disease.name'],
+        componentProps(values) {
+          const disName = values.disease?.name;
+          return {
+            params: disName ? { disName } : {},
+            shouldFetch: (query: Record<string, unknown>) => !!query.disName,
+          };
+        },
+        trigger(_values, formApi) {
+          formApi.setFieldValue('therapy.name', undefined);
+        },
+      },
     },
     {
       component: 'ApiSelectPageList',
@@ -119,6 +139,21 @@ export const treatmentPlanForm = defineEditShell<TreatmentPlanVO>({
         placeholder: '请选择治法',
         getPopupContainer,
       },
+      dependencies: {
+        triggerFields: ['disease.name', 'syndrome.name'],
+        componentProps(values) {
+          const disName = values.disease?.name;
+          const synName = values.syndrome?.name;
+          return {
+            params: {
+              ...(disName ? { disName } : {}),
+              ...(synName ? { synName } : {}),
+            },
+            shouldFetch: (query: Record<string, unknown>) =>
+              !!query.disName && !!query.synName,
+          };
+        },
+      },
     },
     {
       component: 'Textarea',