| | |
| | | import os from "os" |
| | | import Speech from 'speak-tts' |
| | | import { reactive, computed, toRefs, onMounted, ref, watch } from "vue" |
| | | import { sendPationCode, sendPationSet } from '../../samples/sockteStomp' |
| | | import { sendPationCodeApi } from '../../samples/httpApi' |
| | | import { formatDate } from '@/utils/formatTime' |
| | | import state1 from '@/assets/state1.png' |
| | |
| | | } |
| | | else { |
| | | clearInterval(timer) |
| | | const datetimeCON = patientInfoStore().patientInfo.datetime |
| | | patientInfoStore().setpatientInfo({ |
| | | id: 0, |
| | | code: '', |
| | |
| | | deviceCode: '', |
| | | hemoCode: '', |
| | | pureWeight: '', |
| | | datetime: datetimeCON |
| | | datetime: '' |
| | | }) |
| | | state.clockNum = patientInfoStore().viewNumber |
| | | sockteStore().setweightSockte({ |
| | | type: '体重秤', |
| | | deviceName: '', |
| | |
| | | }, 1000) |
| | | // 记录定时器 |
| | | state.timerNum = timer |
| | | console.log(timer) |
| | | } |
| | | //发送消除某些状态 |
| | | const fuxuan=()=>{ |
| | | const datetimeCON = patientInfoStore().patientInfo.datetime |
| | | // 获取是否是一台主机连2个设备 |
| | | const islinkDouble=confingInfoStore().confingInfo.islinkDouble |
| | | // 如果不是就马上清空 |
| | | if(!islinkDouble){ |
| | | patientInfoStore().setpatientInfo({ |
| | | id: 0, |
| | | code: '', |
| | | name: '', |
| | | patientAvatarIcon: '', |
| | | deviceCode: '', |
| | | hemoCode: '', |
| | | pureWeight: '', |
| | | datetime: datetimeCON |
| | | }) |
| | | sockteStore().setweightSockte({ |
| | | type: '体重秤', |
| | | deviceName: '', |
| | | result: '0', |
| | | resultTime: '', |
| | | state: 2 |
| | | }) |
| | | sockteStore().setxyjSockte({ |
| | | type: '血压计', |
| | | deviceName: '', |
| | | result: '', |
| | | resultTime: '', |
| | | state: 2 |
| | | }) |
| | | state.clockNum = patientInfoStore().viewNumber |
| | | state.aimTSL = '' |
| | | state.gao_ya = '' |
| | | state.di_ya = '' |
| | | state.mai_bu = '' |
| | | } |
| | | if (isUseFaceRecogService.value) { |
| | | console.log('开启人脸识别') |
| | | state.dialogVisible = true |
| | | }else{ |
| | | console.log('关闭人脸识别') |
| | | state.dialogVisible = false |
| | | } |
| | | |
| | | } |
| | | const state = reactive({ |
| | | fasongNum:0, |
| | | caozuo: 0,// 点击10下才能关闭 |
| | | logo: logo, |
| | | step5: step5, |
| | |
| | | state1: state1, |
| | | state2: state2, |
| | | state3: state3, |
| | | dialogVisible: false, |
| | | dialogVisible: true, |
| | | isActive: false, |
| | | inputCode: "", |
| | | Newdate: "", |
| | |
| | | settime() |
| | | if (patientInfo.value.id !== 0 && patientInfo.value.name !== '' && patientInfo.value.isScheduled === 1) { |
| | | let str = `${patientInfo.value.name}识别成功。` |
| | | state.dialogVisible = false |
| | | speech.value?.speak({ text: str }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | |
| | | } |
| | | // 没有排班 |
| | | else if (patientInfo.value.isScheduled === 0) { |
| | | //关闭人脸弹框 |
| | | state.dialogVisible = false |
| | | speech.value?.speak({ text: `${patientInfo.value.name}今日没有排班,不能自助签到` }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | | if (isUseFaceRecogService.value) { |
| | | state.dialogVisible = true |
| | | } |
| | | // if (isUseFaceRecogService.value) { |
| | | // state.dialogVisible = true |
| | | // } |
| | | return |
| | | } |
| | | } |
| | |
| | | speech.value?.speak({ text: `称重完成,${tt}kg` }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | | console.log(111111) |
| | | patientCodeLs = mode.patientCode |
| | | for(let x=0;x<3;x++){ |
| | | const res= await updatePatient(mode) |
| | | if(res.code===200){ |
| | | return false |
| | | } |
| | | } |
| | | state.fasongNum=0 |
| | | sundMode(mode) |
| | | } |
| | | else { |
| | | // 临时患者code=当前患者code |
| | | console.log(22222222222) |
| | | patientCodeLs = mode.patientCode |
| | | } |
| | | // 计算目标脱水量 |
| | |
| | | ); |
| | | watch( |
| | | () => xyjInfo.value.resultTime, |
| | | () => { |
| | | async () => { |
| | | if (xyjInfo.value.result !== '') { |
| | | const list = xyjInfo.value.result.split(',') |
| | | if (list.length === 3) { |
| | |
| | | console.log("播报完成...") |
| | | }) |
| | | } else { |
| | | speech.value?.speak({ text: `收缩压:${state.gao_ya},舒张压:${state.di_ya},脉搏:${state.mai_bu}` }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | | const mode = { |
| | | patientCode: patientInfo.value.code, |
| | | weight: '', |
| | | bloodPressure: xyjInfo.value.result |
| | | |
| | | } |
| | | console.log('发送患者结果', mode) |
| | | if (patientCodeLsXy === mode.patientCode) { |
| | | speech.value?.speak({ text: '不能重复测量血压,请重新识别患者再测量血压' }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | | console.log('如果是重复提交 就不要上传到api') |
| | | return false |
| | | } else { |
| | | updatePatient(mode).then(re => { |
| | | speech.value?.speak({ text: `收缩压:${state.gao_ya},舒张压:${state.di_ya},脉搏:${state.mai_bu}` }).then(() => { |
| | | console.log("播报完成...") |
| | | }) |
| | | patientCodeLsXy = mode.patientCode |
| | | console.log(re) |
| | | }) |
| | | sendPationSet(mode) |
| | | } |
| | | // 写入vuex |
| | | // sendPationSet(mode) |
| | | state.fasongNum=0 |
| | | sundMode(mode) |
| | | } |
| | | } else { |
| | | state.gao_ya = "" |
| | |
| | | } |
| | | } |
| | | ); |
| | | // 患者code 发生变化 冲人脸识别来 |
| | | watch( |
| | | ()=>faceInfo.value.result, |
| | | ()=>{ |
| | | console.log('页面收到了人脸识别') |
| | | sendPationCodeApi(faceInfo.value.result) |
| | | // console.log(faceInfo.value.result) |
| | | if(faceInfo.value.result!==''){ |
| | | sendPationCodeApi(faceInfo.value.result) |
| | | } |
| | | } |
| | | ) |
| | | watch(() => viewNumber, |
| | |
| | | state.clockNum = viewNumber.value |
| | | } |
| | | ); |
| | | const sundMode= (mode:any)=>{ |
| | | state.fasongNum++ |
| | | // const res= await updatePatient(mode) |
| | | updatePatient(mode).then(re=>{ |
| | | ElMessage.success('结果发送成功') |
| | | setTimeout(() => { |
| | | fuxuan() |
| | | },5000) |
| | | return false |
| | | }).catch(re=>{ |
| | | ElMessage('结果发送失败') |
| | | if(state.fasongNum<3){ |
| | | setTimeout(sundMode,1000); |
| | | } |
| | | else{ |
| | | return false |
| | | } |
| | | }) |
| | | } |
| | | const inputChabge = () => { |
| | | sendPationCodeApi(state.inputCode) |
| | | setTimeout(function () { |
| | |
| | | } |
| | | onMounted(() => { |
| | | console.log('页面初始化', os.hostname()) |
| | | console.log('页面初始化读取配置文件', confingInfoStore().confingInfo) |
| | | // 是否开启脸识别 |
| | | isUseFaceRecogService.value = confingInfoStore().confingInfo.isUseFaceRecogService |
| | | if (isUseFaceRecogService.value) { |
| | | state.dialogVisible = true |
| | | } |
| | | state.haodu = (document.documentElement.clientHeight - 180) / 2 + 'px' |
| | | state.clockNum = patientInfoStore().viewNumber |
| | | setInterval(function () { |
| | | inputRef.value.focus(); |
| | | }, 1000) |
| | | speech.value = new Speech(); |
| | | speech.value?.setLanguage('zh-CN') |
| | | speech.value?.init().then(() => { |
| | | console.log('语音初始化成功') |
| | | }) |
| | | |
| | | setTimeout(()=>{ |
| | | console.log('3秒后执行') |
| | | // 是否开启脸识别 |
| | | isUseFaceRecogService.value = confingInfoStore().confingInfo.isUseFaceRecogService |
| | | console.log('人脸识别',isUseFaceRecogService.value) |
| | | if (isUseFaceRecogService.value) { |
| | | console.log('开启人脸识别') |
| | | state.dialogVisible = true |
| | | }else{ |
| | | console.log('关闭人脸识别') |
| | | state.dialogVisible = false |
| | | } |
| | | state.haodu = (document.documentElement.clientHeight - 180) / 2 + 'px' |
| | | state.clockNum = patientInfoStore().viewNumber |
| | | setInterval(function () { |
| | | inputRef.value.focus(); |
| | | }, 1000) |
| | | speech.value = new Speech(); |
| | | speech.value?.setLanguage('zh-CN') |
| | | speech.value?.init().then(() => { |
| | | console.log('语音初始化成功') |
| | | }) |
| | | },3000) |
| | | }) |
| | | return { |
| | | ...toRefs(state), guyanbi, loginRef, isLink, netLink, weightInfo, patientInfo, xyjInfo, inputRef, inputChabge |
| | | ...toRefs(state),isUseFaceRecogService, guyanbi, loginRef, isLink, netLink, weightInfo, patientInfo, xyjInfo, inputRef, inputChabge |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <template> |
| | | <div> |
| | | <div class="pagehome"> |
| | | <el-dialog v-model="dialogVisible" width="80%" center :show-close="false"> |
| | | <div class="devcont"> |
| | | <div class="pagehome" v-if="isUseFaceRecogService"> |
| | | <el-dialog v-model="dialogVisible" width="800px" center :show-close="false"> |
| | | <template> |
| | | <div class="my-header"> |
| | | <h4>人脸识别中。。。</h4> |
| | |
| | | body { |
| | | background: #F3F6FE; |
| | | padding: 0; |
| | | margin: 0; |
| | | |
| | | } |
| | | .devcont{ |
| | | width: 100%; |
| | | height: 99%; |
| | | } |
| | | |
| | | .inpu { |
| | | margin-top: 20px; |
| | | // margin-top: 20px; |
| | | position: absolute; |
| | | top:0.2rem; |
| | | right: 40px; |
| | | z-index: 999; |
| | | } |
| | | |
| | | .header { |
| | |
| | | box-shadow: 1px 2px 4px 0px rgba(201, 223, 246, 0.5); |
| | | background-color: rgba(255, 255, 255, 1); |
| | | border-radius: 20px; |
| | | height: 426px; |
| | | height: 100%; |
| | | padding-left: 1.5rem; |
| | | padding-top: 5%; |
| | | padding-right: 0.5rem; |