PatientList.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <el-select v-model="currentWard"
  3. :clearable="wardsClearable"
  4. style="width: 90px"
  5. @change="fetchOverviews">
  6. <el-option v-for="item in allWards"
  7. :key="item.code"
  8. :label="item.name"
  9. :value="item.code"/>
  10. </el-select>
  11. <xc-checkbox v-model="myPatient" @change="myPatientChange" label="我的病人"/>
  12. <el-table :data="cptOverviews"
  13. height="400"
  14. @row-click="handleClickOverview"
  15. ref="elTableRef"
  16. :row-class-name="rowClass"
  17. class="remove_hover"
  18. @row-contextmenu="settingUpAThirdLevelDoctor">
  19. <el-table-column label="床" prop="bedNo" width="30"/>
  20. <el-table-column label="姓名" width="70" prop="name">
  21. <template #default="{row}">
  22. <span>
  23. {{ row.name }}
  24. </span>
  25. <span v-if="row.orderNoCount > 0" style="color: red">
  26. {{ row.orderNoCount }}
  27. </span>
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="住院号" prop="inpatientNo" width="65">
  31. <template #default="{row}">
  32. <div :style="{color: row.dismissOrder ===1 ? 'red' : '#19e63c'}">
  33. {{ row.inpatientNo }}
  34. </div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column label="性别" prop="sex" width="65">
  38. <template #default="scope">
  39. {{ cptSex(scope.row.sex) }}
  40. </template>
  41. </el-table-column>
  42. </el-table>
  43. <xc-dialog-v2 v-model="thirdLevelDoctorSetting.dialog" width="450px" title="三级医生设置">
  44. <el-form label-width="80px">
  45. <el-form-item label="患者:">
  46. {{ thirdLevelDoctorSetting.data.name }}
  47. </el-form-item>
  48. <el-form-item label="管床医生:">
  49. <select-staff-code v-model="thirdLevelDoctorSetting.data"
  50. :name="['referPhysician', 'referPhysicianName']"
  51. dept-code/>
  52. </el-form-item>
  53. <el-form-item label="主治医生:">
  54. <select-staff-code v-model="thirdLevelDoctorSetting.data"
  55. :name="['consultPhysician', 'consultPhysicianName']"
  56. dept-code/>
  57. </el-form-item>
  58. <el-form-item label="科室医生:">
  59. <select-staff-code v-model="thirdLevelDoctorSetting.data"
  60. :name="['deptDirector', 'deptDirectorName']" dept-code/>
  61. </el-form-item>
  62. <el-form-item label="科室医生:">
  63. <el-button @click="submitToTheThirdLevelDoctor">提交</el-button>
  64. </el-form-item>
  65. </el-form>
  66. </xc-dialog-v2>
  67. </template>
  68. <script setup name='PatientList'>
  69. import {computed, onMounted, ref} from "vue";
  70. import {getWardsApi} from "@/api/login";
  71. import {getOverView} from "@/api/inpatient/patient";
  72. import {allWardsVisible} from "@/utils/permission";
  73. import XcCheckbox from "@/components/xiao-chan/checkbox/XcCheckbox";
  74. import {cptSex} from "@/utils/computed";
  75. import {getMyPatient, saveTheThirdLevelDoctor} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
  76. import {clickOnThePatient, huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
  77. import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
  78. import SelectStaffCode from "@/components/SelectStaffCode.vue";
  79. const myPatient = ref(false)
  80. const wardsClearable = allWardsVisible()
  81. const allWards = ref([])
  82. const currentWard = ref()
  83. const overviews = ref([])
  84. const fetchOverviews = () => {
  85. getOverView(currentWard.value).then((res) => {
  86. overviews.value = res
  87. })
  88. }
  89. const cptOverviews = computed(() => {
  90. return overviews.value
  91. })
  92. const elTableRef = ref(null)
  93. const handleClickOverview = (row) => {
  94. clickOnThePatient(row, elTableRef.value)
  95. }
  96. const myPatientChange = () => {
  97. if (myPatient.value) {
  98. getMyPatient().then((res) => {
  99. overviews.value = res
  100. currentWard.value = ''
  101. });
  102. } else {
  103. currentWard.value = allWards.value[0].code
  104. fetchOverviews()
  105. }
  106. };
  107. const rowClass = ({row}) => {
  108. if (huanZheXinXi.value.inpatientNo === row.inpatientNo) {
  109. return 'el_table__current'
  110. }
  111. }
  112. const thirdLevelDoctorSetting = $ref({
  113. dialog: false,
  114. data: {},
  115. deptList: []
  116. })
  117. const settingUpAThirdLevelDoctor = (row, column, event) => {
  118. event.returnValue = false
  119. thirdLevelDoctorSetting.dialog = true
  120. thirdLevelDoctorSetting.data = row
  121. }
  122. const submitToTheThirdLevelDoctor = () => {
  123. saveTheThirdLevelDoctor(thirdLevelDoctorSetting.data).then(() => {
  124. thirdLevelDoctorSetting.dialog = false
  125. })
  126. }
  127. onMounted(() => {
  128. getWardsApi().then((res) => {
  129. if (res.length > 0) {
  130. allWards.value = res
  131. currentWard.value = wardsClearable ? '' : res[0].code
  132. fetchOverviews()
  133. }
  134. })
  135. })
  136. </script>
  137. <style scoped lang="scss">
  138. .el_table__current {
  139. background-color: #a7d3ff;
  140. }
  141. </style>