PatInfomationDialog.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <el-dialog v-model="dialog"
  3. title="患者详情"
  4. class="dialog-temp"
  5. fullscreen
  6. @closed="emits('closed')"
  7. destroy-on-close>
  8. <el-tabs>
  9. <el-tab-pane label="首页">
  10. <first-page-of-medical-record :dics="props.dics"
  11. :sheet-data="sheetData"/>
  12. </el-tab-pane>
  13. <el-tab-pane label="医嘱">
  14. <emr-order-list :pat-no="props.patNo"
  15. :times="props.times"
  16. :in-the-hospital="props.leaveHospital === 1"/>
  17. </el-tab-pane>
  18. <el-tab-pane label="清单">
  19. <charge-list :pat-no="props.patNo"
  20. :show-button="false"
  21. :times="props.times"/>
  22. </el-tab-pane>
  23. <el-tab-pane label="检验">
  24. <inspection-report-index
  25. style="font-size: 12px;height: 100%"
  26. :pat-no="props.patNo"
  27. :start="startDate"
  28. :end="endDate"/>
  29. </el-tab-pane>
  30. <el-tab-pane label="检查">
  31. <emr-inspect :pat-no="props.patNo"
  32. :times="props.times"/>
  33. </el-tab-pane>
  34. <el-tab-pane label="会诊">
  35. <group-consultation :pat-no="props.patNo"
  36. :times="props.times"/>
  37. </el-tab-pane>
  38. <el-tab-pane label="病历">
  39. <electronic-medical-record :pat-no="props.patNo"
  40. :times="props.times"/>
  41. </el-tab-pane>
  42. </el-tabs>
  43. </el-dialog>
  44. </template>
  45. <script setup name='PatInfomationDialog'>
  46. import FirstPageOfMedicalRecord from "@/components/pat-info-list/FirstPageOfMedicalRecord.vue";
  47. import EmrOrderList from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue";
  48. import InspectionReportIndex from "@/views/examination/InspectionReportIndex.vue";
  49. import EmrInspect from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrInspect.vue";
  50. import GroupConsultation from "@/components/pat-info-list/GroupConsultation.vue";
  51. import ElectronicMedicalRecord from "@/components/pat-info-list/ElectronicMedicalRecord.vue";
  52. import {getSheetInfo} from "@/api/case-front-sheet";
  53. import {formatDate} from "@/utils/date";
  54. import {getServerDateApi} from "@/api/public-api";
  55. import ChargeList from '@/components/medical-insurance/charge-list/Index.vue'
  56. const props = defineProps({
  57. patNo: String,
  58. times: Number,
  59. leaveHospital: {
  60. type: Number,
  61. default: 1
  62. },
  63. admissDate: {
  64. type: String
  65. },
  66. dics: {
  67. type: Object
  68. }
  69. })
  70. const emits = defineEmits(['closed'])
  71. const dialog = ref(false)
  72. const sheetData = ref({})
  73. const startDate = ref('')
  74. const endDate = ref('')
  75. const details = async () => {
  76. sheetData.value = await getSheetInfo({
  77. bah: props.patNo,
  78. times: props.times,
  79. inOutFlag: props.leaveHospital ? 2 : 1
  80. })
  81. startDate.value = formatDate(props.admissDate)
  82. dialog.value = true
  83. }
  84. onMounted(async () => {
  85. endDate.value = formatDate(await getServerDateApi())
  86. await details()
  87. })
  88. </script>
  89. <style lang="scss">
  90. .dialog-temp {
  91. .el-dialog__body {
  92. padding: 0 16px;
  93. height: calc(100% - 55px);
  94. }
  95. .el-tabs {
  96. height: calc(100% - 50px);
  97. .el-tabs__content {
  98. height: calc(100% - 50px);
  99. }
  100. .el-tab-pane {
  101. height: calc(100% - 50px);
  102. overflow: auto;
  103. }
  104. }
  105. }
  106. </style>