EmrPatientList.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <transition name="el-zoom-in-center">
  3. <div class="drawer" ref="drawer" v-show="props.modelValue">
  4. <div class="header">
  5. <div>
  6. <el-select-v2 v-model="currentWard" :options="allWards" @change="fetchOverviews"/>
  7. </div>
  8. <div @click="close" class="icon">
  9. <el-icon>
  10. <CloseBold/>
  11. </el-icon>
  12. </div>
  13. </div>
  14. <el-table :data="overviews"
  15. :height="400"
  16. highlight-current-row
  17. @row-click="rowClick">
  18. <el-table-column label="床" prop="bedNo" width="30"/>
  19. <el-table-column label="姓名" width="70" prop="name">
  20. <template #default="{row}">
  21. <span>
  22. {{ row.name }}
  23. </span>
  24. <span v-if="row.orderNoCount > 0" style="color: red">
  25. {{ row.orderNoCount }}
  26. </span>
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="住院号" prop="inpatientNo" width="65">
  30. <template #default="{row}">
  31. <div :style="{color: row.dismissOrder ===1 ? 'red' : '#19e63c'}">
  32. {{ row.inpatientNo }}
  33. </div>
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="性别" prop="sex" width="65">
  37. <template #default="scope">
  38. {{ cptSex(scope.row.sex) }}
  39. </template>
  40. </el-table-column>
  41. </el-table>
  42. </div>
  43. </transition>
  44. </template>
  45. <script setup name='EmrPatientList'>
  46. import {getOverView} from "@/api/inpatient/patient";
  47. import {ref} from "vue";
  48. import {getEmrAllWardsApi} from "@/api/zhu-yuan-yi-sheng/emr-patient";
  49. import {cptSex} from "@/utils/computed";
  50. const props = defineProps({
  51. modelValue: {
  52. type: Boolean
  53. }
  54. })
  55. const emit = defineEmits(['rowClick', 'update:modelValue'])
  56. const allWards = ref([])
  57. const currentWard = ref()
  58. const overviews = ref([])
  59. const fetchOverviews = () => {
  60. getOverView(currentWard.value).then((res) => {
  61. overviews.value = res
  62. })
  63. }
  64. const rowClick = (val) => {
  65. emit('rowClick', val)
  66. }
  67. const close = () => {
  68. emit('update:modelValue', false)
  69. }
  70. const drawer = ref()
  71. onMounted(() => {
  72. nextTick(() => {
  73. const body = document.querySelector("body");
  74. if (body.append) {
  75. body.append(drawer.value);
  76. } else {
  77. body.appendChild(drawer.value);
  78. }
  79. })
  80. getEmrAllWardsApi().then(res => {
  81. allWards.value = res
  82. })
  83. })
  84. </script>
  85. <style scoped lang="scss">
  86. .drawer {
  87. width: 18vw;
  88. height: 100vh;
  89. border: 1px solid;
  90. position: fixed;
  91. top: 0;
  92. background-color: white;
  93. left: 0;
  94. z-index: 9;
  95. }
  96. .header {
  97. top: 5px;
  98. display: flex;
  99. justify-content: space-between;
  100. .icon {
  101. cursor: pointer;
  102. margin-right: 5px;
  103. display: flex;
  104. align-items: center;
  105. }
  106. }
  107. </style>