LIJU 3 місяців тому
батько
коміт
2fac47a8a3

+ 773 - 0
src/views/medical-advice/nursing-manage/bodyThreeTestList.vue

@@ -0,0 +1,773 @@
+<template>
+    <el-container>
+        <el-aside width="210px">
+          <PatientBaseList  :selectFlag="selectFlag" @allPatientList="selectAllPatientList"   @selectPatientInfo="selectPatientInfo" ></PatientBaseList>
+        </el-aside>
+        <el-container>
+            <el-header style="height: 10%">
+                录入日期
+                    <el-date-picker
+                            v-model="queryParam.recDateStr"
+                            type="date"
+                            size="small"
+                            :clearable="clearable"
+                            format="YYYY-MM-DD" value-format="YYYY-MM-DD"
+                    ></el-date-picker>
+                时间
+                <el-select v-model="queryParam.recTimeStr"  style="width: 100px">
+                    <el-option v-for="item in recTimeStrList" :key="item.code" :label="item.name" :value="item.code">
+                        <span>{{ item.name }}</span>
+                    </el-option>
+                </el-select>
+                <el-select v-model="queryParam.temperatureType"  style="width: 100px">
+                    <el-option v-for="item in temperatureTypeList" :key="item.code" :label="item.name" :value="item.code">
+                        <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                        <el-divider direction="vertical"></el-divider>
+                        <span>{{ item.name }}</span>
+                    </el-option>
+                </el-select>
+                <el-button icon="Search" type="primary" @click="queryInfo">查询</el-button>
+                <el-button type="success" @click="saveThreeTestInfo">保存</el-button>
+                <el-button icon="Search" type="primary" @click="openPsInfo">皮试信息</el-button>
+              <el-button icon="Edit" type="success" @click="twMbDialog=true">修改体温脉搏阈值</el-button>
+            </el-header>
+            <el-main>
+                    <el-tabs
+                            v-model="activeName"
+                            type="card"
+                            class="demo-tabs"
+                            @tab-click="handleClick"
+                    >
+                        <el-tab-pane label="图表数据" name="first">
+                            <div>
+                            <el-table :data="yzTemperatureVOS"  highlight-current-row stripe border show-overflow-tooltip :height="tableHeight"   style="width: 100%;">
+                                <el-table-column label="排序" type="index" width="40" />
+                                <el-table-column prop="recDateStr" label="日期"/>
+                                <el-table-column prop="inpatientNo" label="住院号"/>
+                                <el-table-column prop="admissTimes" label="住院次数" width="80"/>
+                                <el-table-column prop="name" label="病人姓名"/>
+                                <el-table-column prop="sex" label="性别" width="40"/>
+                                <el-table-column prop="bedNo" label="床号" width="40" />
+                                <el-table-column prop="toStringRecTime" label="时间"/>
+                                <el-table-column prop="temperatureType" label="类型" min-width="130">
+                                    <template #default="scope">
+                                        <el-select v-model="scope.row.temperatureType" style="width: 100px">
+                                            <el-option v-for="item in temperatureTypeList" :key="item.code" :label="item.name" :value="item.code">
+                                                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                                                <el-divider direction="vertical"></el-divider>
+                                                <span>{{ item.name }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="temperature" label="体温℃">
+                                    <template #default="scope">
+                                        <el-input v-model="scope.row.temperature"></el-input>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="physicalMethodFlag" label="降温">
+                                    <template #default="scope">
+                                        <span>x</span>
+                                        <el-switch v-model="scope.row.physicalMethodFlag" active-value="1" inactive-value="0"  style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" />
+                                        <span>√</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="temperatureCool" label="降温后">
+                                    <template #default="scope">
+                                        <el-input v-model="scope.row.temperatureCool"></el-input>
+                                    </template>
+                                </el-table-column>
+
+                                <el-table-column prop="breathe" label="呼吸">
+                                    <template #default="scope">
+                                        <el-input v-model="scope.row.breathe"></el-input>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="breatheMachine" label="呼吸机">
+                                    <template #default="scope">
+                                        <el-select v-model="scope.row.breatheMachine" style="width: 100px">
+                                            <el-option v-for="item in breatheMachineList" :key="item.code" :label="item.name" :value="item.code">
+
+                                            </el-option>
+                                        </el-select>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="pulse" label="脉搏">
+                                    <template #default="scope">
+                                        <el-input v-model="scope.row.pulse"></el-input>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="heart" label="心率">
+                                    <template #default="scope">
+                                        <el-input v-model="scope.row.heart"></el-input>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="scdSpecialtext" label="特殊标注"  min-width="100">
+                                    <template #default="scope">
+                                      <el-autocomplete
+                                          v-model="scope.row.scdSpecialtext"
+                                          :fetch-suggestions="queryScdSpecialtextSearch"
+                                          clearable
+                                      />
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="specialtextTimeStr" label="标注时间"  min-width="130">
+                                    <template #default="scope">
+                                        <el-time-picker v-model="scope.row.specialtextTimeStr" style="width: 110px" format="HH:mm" value-format="HH:mm"   />
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="userName" label="录入人"/>
+                                <el-table-column prop="painLvl" label="疼痛强度"  min-width="130">
+                                    <template #default="scope">
+                                        <el-select v-model="scope.row.painLvl" style="width: 100px">
+                                            <el-option v-for="item in painLvlList" :key="item.code" :label="item.name" :value="item.code">
+
+                                            </el-option>
+                                        </el-select>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="操作">
+                                    <template #default="scope">
+                                        <el-button type="danger" @click="delYzTemperature(scope.row,scope.$index)">删除</el-button>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            </div>
+                        </el-tab-pane>
+                        <el-tab-pane label="出入总量" name="second">
+                            <div>
+                                <el-table :data="yzTemperatureSums"  highlight-current-row stripe border show-overflow-tooltip :height="tableHeight"   style="width: 100%;">
+                                    <el-table-column label="排序" type="index" width="40" />
+                                    <el-table-column prop="recDateStr" label="日期"/>
+                                    <el-table-column prop="inpatientNo" label="住院号"/>
+                                    <el-table-column prop="admissTimes" label="住院次数" width="80"/>
+                                    <el-table-column prop="name" label="病人姓名"/>
+                                    <el-table-column prop="sex" label="性别" width="40"/>
+                                    <el-table-column prop="bedNo" label="床号" width="40" />
+                                    <el-table-column prop="pressureAm" style="color: red" label="血压(上午)">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.pressureAm"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="pressurePm" style="color: red" label="血压(下午)" min-width="130">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.pressurePm"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="intake" label="总入液量(ml)">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.intake"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="intakeInfo" label="入量(特殊)" width="120">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.intakeInfo" >
+                                                <el-option  key="24小时入量" label="24小时入量" value="24小时入量">
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="shitOther" label="大便(次)">
+                                        <template #default="scope">
+                                            <!-- 原有选择框代码(已屏蔽,保留以备后用)
+                                            <el-select v-model="scope.row.shitOther" >
+                                                <el-option v-for="item in shitOtherList" :key="item.code" :label="item.name" :value="item.code">
+                                                </el-option>
+                                            </el-select>
+                                            -->
+                                            <!-- 新的输入框实现 -->
+                                            <el-input v-model="scope.row.shitOther" placeholder="请输入大便次数" clearable></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="urineQuanInfo" label="尿量(ml)" >
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.urineQuanInfo"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="urineInfo" label="尿量(特殊)" width="120">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.urineInfo" >
+                                                <el-option v-for="item in urineInfoList" :key="item.code" :label="item.name" :value="item.code">
+
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="outputOther" label="出量">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.outputOther"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="outputInfo" label="出量(特殊)" width="120">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.outputInfo" >
+                                                <el-option  key="24小时出量" label="24小时出量" value="24小时出量">
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="bodyWeightInfo" label="体重(特殊)" width="100px">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.bodyWeightInfo" style="width: 80px" @change="handleBodyWeightInfoChange(scope.row)">
+                                                <el-option v-for="item in bodyWeightInfoList" :key="item.code" :label="item.name" :value="item.code">
+
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="bodyWeight" label="体重(kg)">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.bodyWeight" :disabled="isBodyWeightDisabled(scope.row)"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column prop="bodyLength" label="身高(cm)">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.bodyLength" :disabled="isBodyLengthDisabled(scope.row)"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column label="操作">
+                                        <template #default="scope">
+                                            <el-button type="danger" @click="delYzTemperatureSum(scope.row,scope.$index)">删除</el-button>
+                                        </template>
+                                    </el-table-column>
+                                </el-table>
+                            </div>
+                        </el-tab-pane>
+                        <el-tab-pane label="过敏药物" name="third">
+                            <div style="margin-bottom: 20px">
+                                <el-button  type="primary" @click="onAdd">+</el-button>
+                                <el-button  type="primary" @click="onReduce">-</el-button>
+                                <el-button  icon="Search" type="primary" @click="queryGmInfo">查询过敏信息</el-button>
+                                <el-button  type="success" @click="saveGmInfo">保存过敏信息</el-button>
+                            </div>
+                            <div >
+                                <el-input v-for="(item,i) of items" v-model="items[i]" :key="i" clearable style="width: 150px"  placeholder=""></el-input>
+                            </div>
+                        </el-tab-pane>
+                    </el-tabs>
+            </el-main>
+        </el-container>
+    </el-container>
+    <el-dialog v-model="psDialogFlag"  title="皮试信息" :destroy-on-close="true" style="width:75%;height:75% ">
+        <PsInfo :patintList="allPatientList" :curWard="curWard"  :height="getWindowSize.h/1.2-140"></PsInfo>
+    </el-dialog>
+  <el-dialog v-model="twMbDialog"  title="编辑体温脉搏阈值" draggable  style="width: 300px">
+    <twMbEdit   @closeTwMb="closeTwMb" ></twMbEdit>
+  </el-dialog>
+</template>
+
+<script setup name='ThreeTestList'>
+import PatientBaseList from "@/components/medical-advice/PatientBaseList.vue"
+import twMbEdit from "@/components/medical-advice/nursing-manage/twMbEdit.vue"
+import PsInfo from "@/views/medical-advice/nursing-manage/PsInfo.vue"
+import {queryThreeTestList,saveThreeTest,queyGm,saveGm,deleteYzTemperature,deleteYzTemperatureSum} from "@/api/medical-advice/nursing-manage";
+import {getPatientBaseInfo} from "@/api/medical-advice/medical-advice-management";
+import { getFormatDatetime } from "@/utils/date";
+import {onMounted} from "vue";
+import {stringNotBlank} from "@/utils/blank-utils";
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {getWindowSize} from "@/utils/window-size";
+const selectFlag = ref(true)
+const clearable = ref(false)
+//图表数据
+const yzTemperatureVOS = ref([])
+//总量数据
+const yzTemperatureSums = ref([])
+const allPatientList = ref([])
+const curWard = ref('')
+// 患者详细信息列表,用于入院时间验证
+const patientDetailInfoList = ref([])
+//过敏信息
+
+const psDialogFlag = ref(false)
+const queryParam = ref({
+    recDateStr:getFormatDatetime(new Date(),'YYYY-MM-DD'),
+    recTimeStr:'0',
+    temperatureType:'2',
+    visitIds:[],
+    patientInfoList:[]
+})
+
+const twMbDialog = ref(false)
+const closeTwMb = ()=>{
+  twMbDialog.value = false
+}
+const openPsInfo = ()=>{
+    psDialogFlag.value = true
+}
+//过敏药物
+const items = ref([])
+const onAdd = ()=>{
+    items.value.push('')
+}
+
+const onReduce = ()=>{
+    items.value.pop()
+}
+
+const outputInfo = ref('24小时出量')
+
+const painLvlList = ref([])
+
+const bodyWeightInfoList = ref([
+    {
+        code:'',
+        name:'',
+    },{
+        code:'卧床',
+        name:'卧床',
+    },{
+        code:'平车',
+        name:'平车',
+    }
+])
+
+const urineInfoList = ref([
+    {
+        code:'0',
+        name:'0',
+    },{
+        code:'+',
+        name:'+',
+    },{
+        code:'24小时尿量',
+        name:'24小时尿量',
+    },{
+        code:'*',
+        name:'*',
+    }
+])
+
+// 大便(次)选项列表(已屏蔽,保留以备后用)
+const shitOtherList = ref([
+    {
+        code:'☆',
+        name:'☆',
+    },{
+        code:'0/E',
+        name:'0/E',
+    },{
+        code:'1/E',
+        name:'1/E',
+    },{
+        code:'2/E',
+        name:'2/E',
+    },{
+        code:'*/E',
+        name:'*/E',
+    },{
+        code:'1 1/E',
+        name:'1 1/E',
+    },{
+        code:'1,2/E',
+        name:'1,2/E',
+    },{
+        code:'2/2E',
+        name:'2/2E',
+    }
+])
+
+
+const scdSpecialtextList = ref([{
+  value:'外出',
+  name:'外出',
+},{
+  value:'转入',
+  name:'转入',
+},{
+  value:'死亡',
+  name:'死亡',
+},{
+  value:'手术',
+  name:'手术',
+},{
+  value:'分娩',
+  name:'分娩',
+},{
+  value:'出生',
+  name:'出生',
+},{
+  value:'转科',
+  name:'转科',
+},{
+  value:'出院',
+  name:'出院',
+}])
+
+const queryScdSpecialtextSearch =(queryString,cb)=>{
+  if(stringNotBlank(queryString) && queryString !='null'){
+    cb(scdSpecialtextList.value.filter(createFilter(queryString)))
+  }else {
+    cb(scdSpecialtextList.value)
+  }
+}
+
+const createFilter = (queryString)=>{
+  return (restaurant)=>{
+    return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase())===0)
+  }
+}
+
+
+const breatheMachineList = ref([
+    {
+        code:'A',
+        name:'A',
+    },{
+        code:'R',
+        name:'R',
+    }
+])
+
+const temperatureTypeList=ref([{
+    code:'1',
+    name:'口表',
+},{
+    code:'2',
+    name:'腋表',
+},{
+    code:'3',
+    name:'肛表',
+}])
+// 已屏蔽,保留以备后用
+// const recTimeStrList=ref([{
+//     code:'0',
+//     name:'全部',
+// },{
+//     code:'3',
+//     name:'3',
+// },{
+//     code:'7',
+//     name:'7',
+// },{
+//     code:'11',
+//     name:'11',
+// },{
+//     code:'15',
+//     name:'15',
+// },{
+//     code:'19',
+//     name:'19',
+// },{
+//     code:'23',
+//     name:'23',
+// }])
+
+const recTimeStrList=ref([{
+    code:'0',
+    name:'全部',
+},{
+    code:'2',
+    name:'2',
+},{
+    code:'6',
+    name:'6',
+},{
+    code:'10',
+    name:'10',
+},{
+    code:'14',
+    name:'14',
+},{
+    code:'18',
+    name:'18',
+},{
+    code:'22',
+    name:'22',
+}])
+
+const companyFunc = (val, company) => {
+    if (stringNotBlank(val)) {
+        return val + company
+    } else {
+        return ''
+    }
+}
+const queryInfo=()=>{
+    if(queryParam.value.visitIds.length === 0){
+        return ElMessage.error('选中要查询的病人')
+    }
+    queryThreeTestList(queryParam.value).then((res) => {
+        yzTemperatureVOS.value = res.yzTemperatureVOS
+        yzTemperatureSums.value = res.yzTemperatureSums
+    })
+}
+
+const delYzTemperature=(row,index)=>{
+    ElMessageBox.confirm('请确认是否删除', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+    })
+        .then(() => {
+            deleteYzTemperature(row).then((res) => {
+                yzTemperatureVOS.value.splice(index,1)
+            })
+        })
+        .catch(() => {
+        })
+
+
+}
+
+
+const delYzTemperatureSum = (row,index)=>{
+    ElMessageBox.confirm('请确认是否删除', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+    })
+        .then(() => {
+            deleteYzTemperatureSum(row).then((res) => {
+                yzTemperatureSums.value.splice(index,1)
+            })
+        })
+        .catch(() => {
+        })
+
+
+
+}
+
+//保存过敏信息
+const saveGmInfo =()=>{
+    ElMessageBox.confirm('请确认是否保存', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+    })
+        .then(() => {
+            let saveData = {
+                visitIds:queryParam.value.visitIds,
+                gmItems:items.value
+            }
+            saveGm(saveData).then(() => {
+            })
+        })
+        .catch(() => {
+        })
+
+}
+//查询过敏信息
+const queryGmInfo=()=>{
+    if(queryParam.value.visitIds.length != 1){
+        return ElMessage.error('请选择一个病人')
+    }
+    queyGm(queryParam.value).then((res) => {
+        items.value = res
+    })
+
+}
+const selectAllPatientList = (val)=>{
+    allPatientList.value=val.allPatientList
+    curWard.value = val.currentWard
+}
+
+const selectPatientInfo=(val)=>{
+    queryParam.value.patientInfoList = val
+    let tempVisitIds = []
+    for (let i = 0; i < val.length; i++) {
+        let visitId = val[i].inpatientNo + '_' + val[i].admissTimes
+        tempVisitIds.push(visitId)
+    }
+    queryParam.value.visitIds= tempVisitIds;
+    
+    // 获取所有选中患者的详细信息(包含入院时间)
+    patientDetailInfoList.value = []
+    if (val && val.length > 0) {
+        // 使用 Promise.all 并行获取所有患者的详细信息
+        const promises = val.map(patient => {
+            const params = {
+                inpatientNo: patient.inpatientNo,
+                admissTimes: patient.admissTimes,
+                inOutStatusFlag: '0'
+            }
+            return getPatientBaseInfo(params)
+        })
+        
+        Promise.all(promises).then((results) => {
+            patientDetailInfoList.value = results
+        }).catch((error) => {
+            console.error('获取患者详细信息失败:', error)
+        })
+    }
+}
+
+const activeName = ref('first')
+//保存数据
+const saveThreeTestInfo = () =>{
+    // 验证体重数据
+    if (!validateBodyWeightData()) {
+        return
+    }
+    
+    // 验证入院时间
+    if (!validateSaveDataAdmissionDate()) {
+        return
+    }
+    
+    ElMessageBox.confirm('请确认是否保存', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+    })
+        .then(() => {
+            let saveData = {
+                yzTemperatureVOS: yzTemperatureVOS.value,
+                yzTemperatureSums: yzTemperatureSums.value,
+            }
+            saveThreeTest(saveData).then((res) => {
+                queryInfo()
+            })
+        })
+        .catch(() => {
+        })
+
+}
+
+const handleClick = (tab,event) => {
+}
+
+
+onMounted(() => {
+    tableHeight.value = getWindowSize.value.h/1.2-10
+
+    let items = []
+    items.push({ code:'',
+        name:'空',})
+    for (let i = 0; i < 12; i++) {
+        let item = {
+            code: i+'',name:i+''
+        }
+        items.push(item)
+    }
+    painLvlList.value = items
+
+})
+
+
+const tableHeight = ref(0)
+
+// 处理体重特殊选项变化
+const handleBodyWeightInfoChange = (row) => {
+    // 如果选择了"卧床"或"平车",清空体重和身高,并禁用输入框
+    if (row.bodyWeightInfo === '卧床' || row.bodyWeightInfo === '平车') {
+        row.bodyWeight = ''
+        row.bodyLength = ''
+    }
+}
+
+// 判断体重输入框是否禁用
+const isBodyWeightDisabled = (row) => {
+    return row.bodyWeightInfo === '卧床' || row.bodyWeightInfo === '平车'
+}
+
+// 判断身高输入框是否禁用
+const isBodyLengthDisabled = (row) => {
+    return row.bodyWeightInfo === '卧床' || row.bodyWeightInfo === '平车'
+}
+
+// 验证体重数据
+const validateBodyWeightData = () => {
+    for (let i = 0; i < yzTemperatureSums.value.length; i++) {
+        const row = yzTemperatureSums.value[i]
+        const hasSpecialInfo = stringNotBlank(row.bodyWeightInfo) && row.bodyWeightInfo !== ''
+        const hasWeight = stringNotBlank(row.bodyWeight)
+        const hasLength = stringNotBlank(row.bodyLength)
+        
+        // 必须填写体重(特殊)或(体重+身高)中的一个
+        //if (!hasSpecialInfo && (!hasWeight || !hasLength)) {
+        //    ElMessage.error(`第${i + 1}行:必须填写体重(特殊)或同时填写体重(kg)和身高(cm)`)
+        //    return false
+        //}
+        
+        // 如果选择了"卧床"或"平车",体重和身高应该为空
+        if ((row.bodyWeightInfo === '卧床' || row.bodyWeightInfo === '平车') && (hasWeight || hasLength)) {
+            ElMessage.error(`第${i + 1}行:选择"卧床"或"平车"时,体重(kg)和身高(cm)应该为空`)
+            return false
+        }
+    }
+    return true
+}
+
+
+
+// 验证保存数据时的入院时间(使用最晚的入院时间,精确到时分秒)
+const validateSaveDataAdmissionDate = () => {
+    if (!patientDetailInfoList.value || patientDetailInfoList.value.length === 0) {
+        return true
+    }
+    
+    // 找到最晚的入院时间(最严格的限制)
+    let latestAdmissionDate = null
+    for (const patientInfo of patientDetailInfoList.value) {
+        if (patientInfo && patientInfo.admissDate) {
+            const admissionDate = new Date(patientInfo.admissDate)
+            if (!latestAdmissionDate || admissionDate > latestAdmissionDate) {
+                latestAdmissionDate = admissionDate
+            }
+        }
+    }
+    
+    if (!latestAdmissionDate) {
+        return true
+    }
+    
+    const admissionDateStr = getFormatDatetime(latestAdmissionDate, 'YYYY-MM-DD HH:mm:ss')
+    const admissionDateStrChange = getFormatDatetime(latestAdmissionDate, 'YYYY-MM-DD HH:mm:00')
+    const latestAdmissionDateChange = new Date(admissionDateStrChange)
+    // 验证图表数据
+    for (let i = 0; i < yzTemperatureVOS.value.length; i++) {
+        const row = yzTemperatureVOS.value[i]
+        if (row.recDateStr && row.specialtextTimeStr) {
+            // 构建完整的日期时间字符串:recDateStr + specialtextTimeStr
+            const inputDateTimeStr = `${row.recDateStr} ${row.specialtextTimeStr}:00`
+            const inputDateTime = new Date(inputDateTimeStr)
+            
+            // if (inputDateTime < latestAdmissionDate) {
+            //     ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+            //     return false
+            // }
+            if (inputDateTime < latestAdmissionDateChange) {
+                ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+                return false
+            }
+        }
+    }
+    
+    // 验证总量数据
+    for (let i = 0; i < yzTemperatureSums.value.length; i++) {
+        const row = yzTemperatureSums.value[i]
+        if (row.recDateStr && row.specialtextTimeStr) {
+            // 构建完整的日期时间字符串:recDateStr + specialtextTimeStr
+            const inputDateTimeStr = `${row.recDateStr} ${row.specialtextTimeStr}:00`
+            const inputDateTime = new Date(inputDateTimeStr)
+            
+            // if (inputDateTime < latestAdmissionDate) {
+            //     ElMessage.error(`第${i + 1}行总量数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+            //     return false
+            // }
+            if (inputDateTime < latestAdmissionDateChange) {
+                ElMessage.error(`第${i + 1}行图表数据:输入时间 ${inputDateTimeStr} 不能早于患者入院时间 ${admissionDateStr}`)
+                return false
+            }            
+        }
+    }
+    
+    return true
+}
+</script>
+
+<style scoped>
+.status_color {
+    width: 10px;
+    height: 10px;
+}
+.demo-tabs > .el-tabs__content {
+    padding: 32px;
+    color: #6b778c;
+    font-size: 32px;
+    font-weight: 600;
+}
+.height670{
+   height: 600px;
+   width: 1300px;
+}
+
+</style>