EmrSidebar.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <el-input v-model="filterText" placeholder="节点过滤" @input="filterChange" clearable/>
  3. <el-radio-group v-model="templateType" @change="typeChange">
  4. <el-radio-button :label="0">全院模板</el-radio-button>
  5. <el-radio-button :label="1">科室模板</el-radio-button>
  6. <el-radio-button :label="2">患者数据</el-radio-button>
  7. </el-radio-group>
  8. <el-tree :data="treeData"
  9. :props="defaultProps"
  10. @node-click="handleNodeClick"
  11. node-key="_id"
  12. ref="treeRef"
  13. :filter-node-method="filterNode"
  14. default-expand-all>
  15. </el-tree>
  16. </template>
  17. <script setup name='EmrSidebar'>
  18. import {getEmrTree} from "@/api/zhu-yuan-yi-sheng/emr-api";
  19. import {huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
  20. import {getPatientData} from "@/api/zhu-yuan-yi-sheng/emr-patient";
  21. const emit = defineEmits(['nodeClick', 'typeChange'])
  22. let treeData = $ref([])
  23. let returnData = $ref([])
  24. let filterText = $ref('')
  25. let treeRef = $ref('')
  26. const defaultProps = {
  27. children: 'children',
  28. label: 'name',
  29. }
  30. let templateType = $ref(0)
  31. const handleNodeClick = (val) => {
  32. emit('nodeClick', val, templateType)
  33. }
  34. const typeChange = (val) => {
  35. switch (val) {
  36. case 0 :
  37. return treeData = returnData.emrTree;
  38. case 1:
  39. return treeData = [];
  40. case 2:
  41. return treeData = returnData.patientTree;
  42. }
  43. emit("typeChange", val)
  44. }
  45. const queryHistory = async (times) => {
  46. templateType = 2
  47. returnData.patientTree = await getPatientData(huanZheXinXi.value.inpatientNo, times)
  48. treeData = returnData.patientTree
  49. }
  50. const filterChange = (val) => {
  51. treeRef.filter(val)
  52. }
  53. const filterNode = (value, data) => {
  54. if (!value) return true
  55. return data.name.includes(value)
  56. }
  57. const changeTemplateType = (val) => {
  58. templateType = val
  59. typeChange(val)
  60. }
  61. defineExpose({queryHistory, changeTemplateType})
  62. onMounted(() => {
  63. nextTick(() => {
  64. getEmrTree(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes).then((res) => {
  65. treeData = res.emrTree
  66. returnData = res
  67. })
  68. })
  69. })
  70. </script>
  71. <style scoped>
  72. </style>