From 6cc31048cb4c1f7a97d845217485ae317f6cf627 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期五, 13 六月 2025 14:53:22 +0800
Subject: [PATCH] 1739 随访记录添加时优化项
---
src/views/home/index.vue | 425 +++++++++++++++++++++++++++++++++--------------------
1 files changed, 265 insertions(+), 160 deletions(-)
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index d2343fc..cee4bd8 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,136 +1,163 @@
<template>
<div class="home-container layout-pd ">
- <el-row>
- <el-col class="patTabel" :xs="6" :sm="6" :md="4" :lg="3" :xl="3" v-if="state.isTable">
- <el-table :data="state.filterTableData" stripe :height="state.tableHeight.left" size="default"
- highlight-current-row @current-change="handleCurrentChange" style="width: 100%">
- <el-table-column>
- <template #header>
- <div class="home-title">
- <el-avatar shape="square"
- style="width: 16px; height: 16px;background-color: #ffffff;margin-right: 10px;margin-left: 10px;"
- fit="contain" :src="huanzheliebiao" />
- <div class="titleHome">患者列表</div>
- </div>
- <el-input size="default" @change="getPatients" v-model="state.search" placeholder="支持模糊查询"
- :prefix-icon="Search" />
- </template>
- <template #default="scope">
- <el-row>
- <el-col :span="12">{{ scope.row.patientName }}</el-col>
- <el-col :span="6">{{ scope.row.patientGenderText }}</el-col>
- <el-col :span="6">{{ scope.row.age }}</el-col>
- </el-row>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- <el-col :xs="6" :sm="18" :md="20" :lg="21" :xl="21" >
- <el-tabs v-model="state.activeName" class="demo-tabs" @tab-click="handleClick">
- <el-tab-pane label="患者档案" name="患者档案">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Avatar />
- </el-icon>
- <span style="margin-left: 5px">患者档案</span>
- </span>
- </template>
- </el-tab-pane>
- <el-tab-pane label="生化数据" name="生化数据">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Aim />
- </el-icon>
- <span style="margin-left: 5px">生化数据</span>
- </span>
- </template>
- <lisUi ref="lisUiRef"></lisUi>
- </el-tab-pane>
- <el-tab-pane label="用药记录" name="用药记录">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Edit />
- </el-icon>
- <span style="margin-left: 5px">用药记录</span>
- </span>
- </template>
+ <div class="container">
+ <div class="container-left" v-if="isLeftVisible">
+ <div class="patTabel">
+ <el-table :data="state.filterTableData" stripe :height="state.tableHeight.left" size="default"
+ highlight-current-row @current-change="handleCurrentChange" style="width: 300px">
+ <el-table-column>
+ <template #header>
+ <div class="home-title">
+ <el-avatar shape="square"
+ style="width: 16px; height: 16px;background-color: #ffffff;margin-right: 10px;margin-left: 10px;"
+ fit="contain" :src="huanzheliebiao" />
+ <div class="titleHome">患者列表</div>
+ </div>
+ <el-input size="default" @change="getPatients" v-model="state.search" placeholder="支持模糊查询"
+ :prefix-icon="Search" />
- </el-tab-pane>
- <el-tab-pane label="历史服务" name="历史服务">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <ZoomIn />
- </el-icon>
- <span style="margin-left: 5px">历史服务</span>
- </span>
- </template>
- Task
- </el-tab-pane>
- <el-tab-pane label="膳食调查" name="膳食调查">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Notification />
- </el-icon>
- <span style="margin-left: 5px">膳食调查</span>
- </span>
- </template>
-
- </el-tab-pane>
- <el-tab-pane label="营养筛查评估" name="营养筛查评估">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Histogram />
- </el-icon>
- <span style="margin-left: 5px">营养筛查评估</span>
- </span>
- </template>
- Task
- </el-tab-pane>
- <el-tab-pane label="方案" name="方案">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <Grid />
- </el-icon>
- <span style="margin-left: 5px">方案</span>
- </span>
- </template>
- Task
- </el-tab-pane>
- <el-tab-pane label="随访记录" name="随访记录">
- <template #label>
- <span class="custom-tabs-label home-title">
- <el-icon>
- <ChatDotRound />
- </el-icon>
- <span style="margin-left: 5px">随访记录</span>
- </span>
- </template>
- Task
- </el-tab-pane>
- </el-tabs>
- <div class="itemDoby">
- <patientFile v-if="state.activeName === '患者档案'" :tableHeight="state.tableHeight.detailRight"
- ref="patientFileRef" />
- <lisUi v-if="state.activeName === '生化数据'" ref="lisUiRef">
- </lisUi>
- <MedicationRecords v-if="state.activeName === '用药记录'" :tableHeight="state.tableHeight.detailRight" ref="MedicationRecordsRef">
- </MedicationRecords>
- <dietarySurvey ref="dietarySurveyRef" v-if="state.activeName === '膳食调查'" :tableHeight="state.tableHeight.detailRight"></dietarySurvey>
-
+ <el-row style="margin-top: 5px;">
+ <el-col :span="10">姓名</el-col>
+ <el-col :span="5">性别</el-col>
+ <el-col :span="4">年龄</el-col>
+ <el-col :span="5">床号</el-col>
+ </el-row>
+ </template>
+ <template #default="scope">
+ <el-row>
+ <el-col :span="10">{{ scope.row.patientName }}</el-col>
+ <el-col :span="5">{{ scope.row?.patientGender===0?'男':'女' }}</el-col>
+ <el-col :span="4">{{ scope.row.age }}</el-col>
+ <el-col :span="5">{{ scope.row.deviceNo }}</el-col>
+ </el-row>
+ </template>
+ </el-table-column>
+ </el-table>
</div>
+ </div>
+ <div class="right" :class="{'full-width': !isLeftVisible}" style="width: 100%;">
+ <div style="width: 100%;">
+ <el-tabs v-model="state.activeName" class="demo-tabs" @tab-click="handleClick">
+ <el-tab-pane label="患者档案" name="患者档案">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Avatar />
+ </el-icon>
+ <span style="margin-left: 5px">患者档案</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="营养筛查评估" name="营养筛查评估">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Histogram />
+ </el-icon>
+ <span style="margin-left: 5px">营养筛查评估</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="膳食调查" name="膳食调查">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Notification />
+ </el-icon>
+ <span style="margin-left: 5px">膳食调查</span>
+ </span>
+ </template>
+
+ </el-tab-pane>
- </el-col>
- </el-row>
- <div class="fixed-div" v-show="patientsInfo.patientName">
+ <el-tab-pane label="食物过敏原及胃肠功能调查" name="食物过敏原及胃肠功能调查">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Notification />
+ </el-icon>
+ <span style="margin-left: 5px">食物过敏原及胃肠功能调查</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="随访记录" name="随访记录">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <ChatDotRound />
+ </el-icon>
+ <span style="margin-left: 5px">随访记录</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="营养饮食指导方案" name="营养饮食指导方案">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Grid />
+ </el-icon>
+ <span style="margin-left: 5px">营养饮食指导方案</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="生化数据" name="生化数据">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Aim />
+ </el-icon>
+ <span style="margin-left: 5px">生化数据</span>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane label="用药记录" name="用药记录">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Edit />
+ </el-icon>
+ <span style="margin-left: 5px">用药记录</span>
+ </span>
+ </template>
+
+ </el-tab-pane>
+ <el-tab-pane label="营养服务管理记录" name="营养服务管理记录">
+ <template #label>
+ <span class="custom-tabs-label home-title">
+ <el-icon>
+ <Edit />
+ </el-icon>
+ <span style="margin-left: 5px">营养服务管理记录</span>
+ </span>
+ </template>
+
+ </el-tab-pane>
+ </el-tabs>
+ <div class="itemDoby">
+ <patientFile v-show="state.activeName === '患者档案'" :tableHeight="state.tableHeight.detailRight"
+ ref="patientFileRef" />
+ <lisUi v-show="state.activeName === '生化数据'" ref="lisUiRef">
+ </lisUi>
+ <MedicationRecords v-show="state.activeName === '用药记录'" :tableHeight="state.tableHeight.detailRight" ref="MedicationRecordsRef">
+ </MedicationRecords>
+ <dietarySurvey ref="dietarySurveyRef" v-show="state.activeName === '膳食调查'" :tableHeight="state.tableHeight.detailRight"></dietarySurvey>
+ <shiwuguoming ref="shiwuguomingRef" v-show="state.activeName === '食物过敏原及胃肠功能调查'" :tableHeight="state.tableHeight.detailRight"></shiwuguoming>
+ <pinggubiao ref="pinggubiaoRef" v-show="state.activeName === '营养筛查评估'" :tableHeight="state.tableHeight.detailRight"></pinggubiao>
+ <fangAn ref="fangAnRef" v-show="state.activeName === '营养饮食指导方案'" :tableHeight="state.tableHeight.detailRight"></fangAn>
+ <suifangjilu ref="suifangjiluRef" v-show="state.activeName === '随访记录'" :tableHeight="state.tableHeight.detailRight"></suifangjilu>
+
+ <jilubiao ref="jilubiaoRef" v-show="state.activeName === '营养服务管理记录'" :tableHeight="state.tableHeight.detailRight"></jilubiao>
+
+
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="fixed-div" v-show="patientsInfo.patientName" @click="toggleVisibility">
<el-avatar :size="80" :src="patientsInfo.patientAvatarIcon" />
- <div @click="state.isTable = false">{{ patientsInfo.patientName }}</div>
+ <div>{{ patientsInfo.patientName }}</div>
+ <el-icon size="20" v-if="isLeftVisible"><Fold /></el-icon>
+ <el-icon size="20" v-else><Expand /></el-icon>
</div>
</div>
</template>
@@ -138,8 +165,9 @@
<script setup lang="ts" name="home">
import huanzheliebiao from '/@/assets/imgs/huanzheliebiao.png'
import { reactive, onMounted, ref, watch, nextTick, onActivated, markRaw } from 'vue';
-import { QueryList } from '/@/api/Patients'
+import { QueryList,getRecordsInToday2 } from '/@/api/Patients'
import { storeToRefs } from 'pinia';
+import {formatDate} from '/@/utils/formatTime'
import { useUserInfo } from '/@/stores/userInfo';
import { usePatientsInfo } from '/@/stores/patientsInfo';
const stores = useUserInfo();
@@ -152,10 +180,19 @@
import MedicationRecords from './components/Medication_records.vue'
// 膳食调查
import dietarySurvey from './components/dietary_survey.vue'
+import shiwuguoming from './components/shiwuguoming/index.vue'
// 患者档案
import patientFile from './components/patient_file.vue'
// 化验结果
import lisUi from './components/lis_.ui.vue'
+// 评估表
+import pinggubiao from './components/pingubiao/index.vue'
+// 方案
+import fangAn from './components/fangAn/index.vue'
+// 随访记录
+import suifangjilu from './components/suifangjilu/index.vue'
+// 营养记录表
+import jilubiao from './components/jilubiao/index.vue'
interface User {
code: string,
patientName: string
@@ -166,8 +203,15 @@
const patientFileRef = ref()
const currentRow = ref()
const lisUiRef = ref()
+const pinggubiaoRef=ref()
const dietarySurveyRef=ref()// 膳食调查
+const shiwuguomingRef=ref()
+const fangAnRef=ref()
+const suifangjiluRef=ref()
+const jilubiaoRef=ref()
+const isLeftVisible=ref(true)
const state = reactive({
+
global: {
homeChartOne: null,
homeChartTwo: null,
@@ -175,7 +219,7 @@
dispose: [null, '', undefined],
} as any,
filterTableData: [],
- activeName: '膳食调查',
+ activeName: '患者档案',
tableHeight: {
left: 0,
detailRight: 0
@@ -187,42 +231,77 @@
setTableHeight()
getPatients()
})
+// 定义一个方法来切换左边div的显示状态
+const toggleVisibility = () => {
+ isLeftVisible.value = !isLeftVisible.value;
+};
const handleCurrentChange = (val: any | undefined) => {
if (val) {
+ console.log(val)
currentRow.value = val
+ const ps={
+ id: val.patientId,
+ code: val.patientCode,
+ age: val.age,
+ patientName:val.patientName,
+ patientGenderText: val?.patientGender?'女':'男',
+ patientAvatarIcon: val?.patientAvatar,
+ clientCode:val.clientCode
+ }
//缓存到vuex 中
- storesPat.setPatientsInfo(val)
+ storesPat.setPatientsInfo(ps)
getTabsData()
}
}
/**获取患者列表 */
const getPatients = () => {
- const loading = ElLoading.service({
- lock: true,
- text: 'Loading',
- background: 'rgba(0, 0, 0, 0.7)',
- })
- var ps = {
- page: 0,
- size: 0,
- wherecondition: `client_code="${userInfos.value.clientCode}" and (patient_name like "%${state.search.toLowerCase()}%"
- OR patient_name_py like "%${state.search.toLowerCase()}%")`
- }
+ // 初始化患者信息
storesPat.setPatientsInfo({
id: '',
code: '',
age: 0,
patientName: '',
patientGenderText: '',
- patientAvatarIcon: ''
+ patientAvatarIcon: '',
+ clientCode:''
+
})
- QueryList(ps).then(res => {
- console.log('----------------患者--------')
- console.log(res.data)
- state.filterTableData = res.data.list
+ // 患者信息查询条件
+ const pp={
+ timeSlot:3,
+ patientFrom:-1,
+ patientName:state.search.toLowerCase(),
+ orderCondition:2,
+ clientCode:userInfos.value.clientCode,
+ dateBegin:formatDate(new Date(),'YYYY-mm-dd')+ " 00:00:00",
+ dateEnd:formatDate(new Date(),'YYYY-mm-dd')+" 23:59:59"
+ }
+ const loading = ElLoading.service({
+ lock: true,
+ text: 'Loading',
+ background: 'rgba(0, 0, 0, 0.7)',
+ })
+ getRecordsInToday2(pp).then(re=>{
+ console.log(re.data)
+ state.filterTableData = re.data
}).finally(() => {
- loading.close()
- })
+ loading.close()
+ })
+
+ // var ps = {
+ // page: 0,
+ // size: 0,
+ // wherecondition: `client_code="${userInfos.value.clientCode}" and (patient_name like "%${state.search.toLowerCase()}%"
+ // OR patient_name_py like "%${state.search.toLowerCase()}%")`
+ // }
+
+ // QueryList(ps).then(res => {
+ // console.log('----------------患者--------')
+ // console.log(res.data)
+ // state.filterTableData = res.data.list
+ // }).finally(() => {
+ // loading.close()
+ // })
}
/**设置高度 */
const setTableHeight = () => {
@@ -251,29 +330,52 @@
patientFileRef.value.getData()
} else if(state.activeName === '膳食调查'){
dietarySurveyRef.value.getData()
+ }else if(state.activeName === '食物过敏原及胃肠功能调查'){
+ shiwuguomingRef.value.getData()
+ }
+ else if(state.activeName === '营养筛查评估'){
+ pinggubiaoRef.value.getData()
+ }else if(state.activeName==='营养饮食指导方案'){
+ fangAnRef.value.getData()
+ }else if(state.activeName==='随访记录'){
+ suifangjiluRef.value.getData()
+ }else if(state.activeName==='营养服务管理记录'){
+ jilubiaoRef.value.getData()
}
}
}
</script>
<style lang="scss">
-$homeNavLengh: 8;
+.container {
+ gap: 10px; /* 在flex项目之间设置间距 */
+ display: flex;
+}
+.container-left {
+ width: 300px; /* 右边div的固定宽度 */
+ transition: all 0.3s ease; /* 添加过渡效果,使宽度变化更加平滑 */
+}
+.right {
+ flex-grow: 1; /* 让这个div扩展以填充可用空间 */
+ transition: all 0.3s ease; /* 添加过渡效果,使宽度变化更加平滑 */
+}
+.full-width {
+ width: 100%; /* 当左边div隐藏时,右边div占据全部宽度 */
+}
.home-container {
overflow: hidden;
-
.patTabel {
+ width: 100%;
.el-table th.el-table__cell {
background-color: #6babfa;
- color: #606266;
+ color: #ffffff;
}
.el-table__body tr.current-row>td.el-table__cell {
- background: #E4F6DE;
- color: #5FCD00;
- /* height: 25px; */
- /* border: tomato solid 1px; */
+ background: rgb(197.7, 225.9, 255);
+ color: #409EFF;
}
}
@@ -315,9 +417,8 @@
align-items: center;
bottom: 10px;
right: 30px;
- width: 200px;
+ width: 220px;
height: 100px;
- background-color: #ffffff;
color: rgb(16, 3, 3);
padding: 10px;
z-index: 999;
@@ -328,9 +429,13 @@
font-size: 20px;
}
}
+.el-tabs__nav-scroll {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch; /* 确保在 iOS 上平滑滚动 */
+}
-.parent {
- display: grid;
- grid-template-columns: minmax(150px, 20%) 1fr;
+.el-tabs__item {
+ cursor: pointer;
+ user-select: none;
}
</style>
--
Gitblit v1.8.0