|
|
@@ -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>
|