Explorar el Código

Merge branch 'bug' into develop

cc12458 hace 10 meses
padre
commit
cff90a82a7

+ 6 - 2
src/components/PatientEdit.vue

@@ -2,7 +2,7 @@
 import type { VxeFormInstance, VxeFormListeners, VxeFormProps } from 'vxe-pc-ui';
 
 import { useForm } from 'alova/client';
-import { pageDiagnoseTypeMethod, pageMedicineMethod } from '@/request/api/care.api';
+import { pageDiagnoseSymptomMethod, pageDiagnoseTypeMethod, pageMedicineMethod } from '@/request/api/care.api';
 import { appendPatientMethod } from '@/request/api/patient.api';
 import { message as Message } from 'ant-design-vue/es/components';
 import RemoteSelect from '@/libs/v-select-page/RemoteSelect.vue';
@@ -51,6 +51,7 @@ const formProps = reactive<VxeFormProps<FormModel>>({
     // { field: 'age', title: '年龄', span: 24, itemRender: { name: 'VxeNumberInput', props: { min: 0, controls: false }, } },
     { field: 'disease', title: '疾病', span: 24, slots: { default: 'disease-remote-select' } },
     { field: 'symptom', title: '证型', span: 24, slots: { default: 'symptom-remote-select' } },
+    { field: 'syndrome', title: '症状', span: 24, slots: { default: 'syndrome-remote-select' } },
     {
       field: 'date',
       title: '就诊日期',
@@ -71,7 +72,7 @@ const formProps = reactive<VxeFormProps<FormModel>>({
     age: [
       { required: true, message: '请输入年龄' },
     ],*/
-    disease: [{ required: true, message: '请输入疾病' }],
+    disease: [{ required: true, message: '请选择疾病' }],
     date: [{ required: true, message: '请选择就诊日期' }],
   },
 });
@@ -97,6 +98,9 @@ const formEmits: VxeFormListeners<FormModel> = {
     <template #symptom-remote-select="{ data, field }">
       <RemoteSelect v-model:value="data[field]" :load="pageDiagnoseTypeMethod" key-prop="name" @blur="formRef?.validateField(field)" @update:value="formRef?.validateField(field)" />
     </template>
+    <template #syndrome-remote-select="{ data, field }">
+      <RemoteSelect v-model:value="data[field]" :load="pageDiagnoseSymptomMethod" :multiple="true" key-prop="name" @blur="formRef?.validateField(field)" @update:value="formRef?.validateField(field)" />
+    </template>
   </vxe-form>
 </template>
 

+ 27 - 0
src/libs/polyfill.ts

@@ -0,0 +1,27 @@
+// @ts-nocheck
+if (Crypto && typeof Crypto.prototype.randomUUID !== 'function') {
+  if (typeof Crypto.prototype.getRandomValues === 'function' && typeof Uint8Array === 'function') {
+    Crypto.prototype.randomUUID = function () {
+      return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, function (c) {
+        const num = Number(c);
+        return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16);
+      });
+    };
+  } else {
+    Crypto.prototype.randomUUID = function () {
+      let timestamp = new Date().getTime();
+      let per = (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0;
+      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+        let random = Math.random() * 16;
+        if (timestamp > 0) {
+          random = (timestamp + random) % 16 | 0;
+          timestamp = Math.floor(timestamp / 16);
+        } else {
+          random = (per + random) % 16 | 0;
+          per = Math.floor(per / 16);
+        }
+        return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16);
+      });
+    };
+  }
+}

+ 3 - 2
src/model/diagnosis-report.model.ts

@@ -1,4 +1,5 @@
 export interface DiagnosisReportDTO {
+  patientMedicalRecordId?: string;
   healthAnalysisReportId: string;
   medicalTime: string;
   medicalDepartment: string;
@@ -32,9 +33,9 @@ export interface DiagnosisReportVO {
   medicalHistory?: MedicalHistoryVO;
 }
 
-export function fromDiagnosisReport(data: DiagnosisReportDTO): DiagnosisReportVO {
+export function fromDiagnosisReport(data: DiagnosisReportDTO, index?: number): DiagnosisReportVO {
   const vo = {
-    id: '',
+    id: data.patientMedicalRecordId ?? crypto.randomUUID(),
     date: data.medicalTime,
     department: { name: data.medicalDepartment },
     doctor: { name: data.medicalDoctor },

+ 15 - 0
src/request/api/care.api.ts

@@ -193,6 +193,21 @@ export function pageDiagnoseTypeMethod(page: number, size: number, query?: Recor
     }
   );
 }
+// 症状分页查询
+export function pageDiagnoseSymptomMethod(page: number, size: number, query?: Record<string, any>) {
+  return request.Post(
+    `/fdhb-pc/common/pageDiagnoseSymptom`,
+    { page, limit: size, keyWord: query?.keyword, ...query },
+    {
+      transform(data: any, headers) {
+        return {
+          data: data.records,
+          total: data.total,
+        };
+      },
+    }
+  );
+}
 // 穴位分页查询
 export function pageAcupointMethod(page: number, size: number, query?: Record<string, any>) {
   return request.Post(

+ 2 - 3
src/request/api/report.api.ts

@@ -281,11 +281,10 @@ export function getPatientHealthIndicatorMethod(patientId: string) {
  * @param query
  */
 export function getPatientDiagnosisRecordsMethod(page: number, size: number, query: { patientId: string }) {
-  const start = (page - 1) * size;
   return request.Post<{ total: number; data: DiagnosisReportVO[] }, { total: number; data: DiagnosisReportDTO[] }>(`/fdhb-pc/patientMedicalManage/pagePatientMedical`, query, {
     params: { pageNum: page, pageSize: size, ...query },
     transform({ data, total }) {
-      return { total, data: data.map((item, index) => Object.assign(fromDiagnosisReport(item), { id: start + index })) };
+      return { total, data: data.map(fromDiagnosisReport) };
     },
   });
 }
@@ -298,7 +297,7 @@ export function getPatientDiagnosisReportMethod(id: string | number, patientId?:
   const index = id % size;
 
   return request.Post<DiagnosisReportVO, { total: number; data: DiagnosisReportDTO[] }>(
-    `/fdhb-pc/patientMedicalManage/pagePatientMedical`,
+    `/fdhb-pc/patientMedicalManage/pagePatientMedical?last`,
     { patientId },
     {
       params: { pageNum: page, pageSize: size, patientId },

+ 10 - 0
src/themes/index.scss

@@ -17,3 +17,13 @@
 #app {
   overflow: hidden;
 }
+
+/* 在 vxe 组件中使用 i18n 无法生效 */
+.ant-image-mask {
+  .ant-image-mask-info {
+    display: none;
+  }
+  &::after {
+    content: "预览";
+  }
+}

+ 1 - 1
src/widgets/PatientPhysicalSignRecordsWidget.vue

@@ -55,7 +55,7 @@ function conversionGrouping(data: HealthIndicatorVO[]): HealthIndicatorVO[] {
         </div>
       </a-collapse-panel>
     </a-collapse>
-    <a-empty v-else></a-empty>
+    <a-empty v-else description="暂无数据"></a-empty>
   </a-spin>
 </template>