| | |
| | | import { ipcRenderer } from 'electron' |
| | | import { patientInfoStore } from '@/stores/patient' |
| | | 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 { formatDate } from '@/utils/formatTime' |
| | |
| | | import step3 from '@/assets/mp3/step3.mp3' |
| | | import step2 from '@/assets/mp3/step2.mp3' |
| | | import step1 from '@/assets/mp3/step1.mp3' |
| | | import step7 from '@/assets/mp3/chongfuchengzhong.mp3' |
| | | import login from '@/views/login/index.vue' |
| | | import { confingInfoStore } from '@/stores/StoresConfing' |
| | | |
| | | export default { |
| | | name: 'hoem', |
| | | components: { login }, |
| | | setup() { |
| | | let timer: any = 0 |
| | | const loginRef = ref(); |
| | | const speech=ref(null) |
| | | const user = userInfoStore() |
| | | const sockte = sockteStore() |
| | | const inputRef = ref() |
| | | const AudioRef0 = ref() |
| | | const AudioRef = ref() |
| | | const AudioRef2 = ref() |
| | | const AudioRef3 = ref() |
| | | const AudioRef4=ref() |
| | | const AudioRef5=ref() |
| | | const AudioRef7=ref() |
| | | let patientCodeLs='' |
| | | const isUseFaceRecogService=ref(false) |
| | | const isLink = computed(() => { |
| | | return !sockte.isLink |
| | | }) |
| | |
| | | step5:step5, |
| | | step4:step4, |
| | | step3:step3, |
| | | step7:step7, |
| | | step2:step2, |
| | | step1:step1, |
| | | step6:step6, |
| | |
| | | () => patientInfo.value.datetime, |
| | | () => { |
| | | console.log('患者信息变化',patientInfo.value) |
| | | if (patientInfo.value.id !== 0) { |
| | | AudioRef.value.play(); |
| | | sockteStore().setweightSockte({ |
| | | type: "体重秤", |
| | | state: 2, |
| | | deviceName: "", |
| | | result: "0", |
| | | resultTime: "" |
| | | }) |
| | | sockteStore().setxyjSockte({ |
| | | type: "血压计", |
| | | state: 2, |
| | | deviceName: "", |
| | | result: "", |
| | | resultTime: "" |
| | | }) |
| | | settime() |
| | | patientCodeLs='' |
| | | console.log(patientCodeLs,'患者codec初始化') |
| | | |
| | | if (patientInfo.value.id !== 0) { |
| | | let str=`${patientInfo.value.name}识别成功。` |
| | | speech.value?.speak({text:str}).then(()=>{ |
| | | console.log("播报完成...") |
| | | }) |
| | | sockteStore().setweightSockte({ |
| | | type: "体重秤", |
| | | state: 2, |
| | | deviceName: "", |
| | | result: "0", |
| | | resultTime: "" |
| | | }) |
| | | sockteStore().setxyjSockte({ |
| | | type: "血压计", |
| | | state: 2, |
| | | deviceName: "", |
| | | result: "", |
| | | resultTime: "" |
| | | }) |
| | | settime() |
| | | |
| | | } |
| | | else if(patientInfo.value.name===''){ |
| | | AudioRef4.value.play(); |
| | | return |
| | | } |
| | | // 没有找到患者 |
| | | else if(patientInfo.value.name===''){ |
| | | speech.value?.speak({text:"没有找到患者,请重新刷卡"}).then(()=>{ |
| | | console.log("播报完成...") |
| | | }) |
| | | if(isUseFaceRecogService.value){ |
| | | state.dialogVisible=true |
| | | } |
| | | else if(patientInfo.value.isScheduled===0){ |
| | | AudioRef5.value.play(); |
| | | return |
| | | } |
| | | return |
| | | } |
| | | // 没有排班 |
| | | else if(patientInfo.value.isScheduled===0){ |
| | | speech.value?.speak({text:"当前患者没有排班,不能自动签到"}).then(()=>{ |
| | | console.log("播报完成...") |
| | | }) |
| | | if(isUseFaceRecogService.value){ |
| | | state.dialogVisible=true |
| | | } |
| | | return |
| | | } |
| | | } |
| | | ); |
| | | watch( |
| | | () => weightInfo.value.resultTime, |
| | | () => { |
| | | console.log("体重变化了",weightInfo.value) |
| | | // AudioRef2.value.play() |
| | | if (patientInfo.value.id === 0) { |
| | | AudioRef0.value.play() |
| | | inputRef.value.focus(); |
| | | speech.value?.speak({text:"没有识别的患者,请先验证患者"}).then(()=>{ |
| | | console.log("播报完成...") |
| | | }) |
| | | |
| | | } |
| | | else { |
| | | AudioRef2.value.play() |
| | | // 发送结果到sockte服务 |
| | | const mode = { |
| | | patientCode: patientInfo.value.code, |
| | | weight: weightInfo.value.result, |
| | | bloodPressure: '' |
| | | if(weightInfo.value.result!=="0"){ |
| | | // 发送结果到sockte服务 |
| | | const mode = { |
| | | patientCode: patientInfo.value.code, |
| | | weight: weightInfo.value.result, |
| | | bloodPressure: '' |
| | | |
| | | } |
| | | console.log('发送患者结果,前提是患者code 不能重复', mode) |
| | | if(patientCodeLs!==mode.patientCode){ |
| | | console.log('发送患者结果') |
| | | AudioRef2.value.play() |
| | | sendPationSet(mode) |
| | | patientCodeLs=mode.patientCode |
| | | } |
| | | else{ |
| | | console.log(`patientCodeLs===${patientCodeLs} ,mode.patCode${mode.patientCode}`) |
| | | AudioRef7.value.play() |
| | | } |
| | | // 计算目标脱水量 |
| | | if (Number(weightInfo.value.result) > 0 && Number(patientInfo.value.pureWeight) !== 0) { |
| | | state.aimTSL = (Number(weightInfo.value.result) - Number(patientInfo.value.pureWeight)).toFixed(2) |
| | | } |
| | | } |
| | | console.log('发送患者结果', mode) |
| | | sendPationSet(mode) |
| | | // 计算目标脱水量 |
| | | if (Number(weightInfo.value.result) > 0 && Number(patientInfo.value.pureWeight) !== 0) { |
| | | state.aimTSL = (Number(weightInfo.value.result) - Number(patientInfo.value.pureWeight)).toFixed(2) |
| | | } |
| | | |
| | | } |
| | | } |
| | | ); |
| | |
| | | } |
| | | if (patientInfo.value.id === 0) { |
| | | AudioRef0.value.play() |
| | | inputRef.value.focus(); |
| | | // inputRef.value.focus(); |
| | | settime() |
| | | } else { |
| | | AudioRef3.value.play() |
| | |
| | | watch( |
| | | () => dkqInfo.value.resultTime, |
| | | () => { |
| | | state.dialogVisible=false |
| | | console.log(dkqInfo.value,'读卡器') |
| | | if (dkqInfo.value.result !== ''&&dkqInfo.value.result !== undefined) { |
| | | const code=dkqInfo.value.result.split(",")[0] |
| | |
| | | } |
| | | 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 () { |
| | | console.log('sockte链接成功指标指向input',isLink.value) |
| | | inputRef.value.focus(); |
| | | }, 1000) |
| | | speech.value=new Speech(); |
| | | speech.value?.setLanguage('zh-CN') |
| | | speech.value?.init().then(()=>{ |
| | | console.log('语音初始化成功') |
| | | }) |
| | | |
| | | }) |
| | | return { |
| | | ...toRefs(state), guyanbi,isLink, netLink, weightInfo, patientInfo, xyjInfo, inputRef, AudioRef0, AudioRef, AudioRef4,AudioRef5, AudioRef2, AudioRef3, inputChabge |
| | | ...toRefs(state), guyanbi, loginRef,isLink, netLink, weightInfo, patientInfo, xyjInfo, inputRef, inputChabge |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <template> |
| | | <div class="pagehome"> |
| | | <div > |
| | | <div class="pagehome"> |
| | | <el-dialog v-model="dialogVisible" width="80%" center :show-close="false"> |
| | | <template> |
| | | <div class="my-header"> |
| | | <h4>人脸识别中。。。</h4> |
| | | </div> |
| | | </template> |
| | | <login ref="loginRef" /> |
| | | </el-dialog> |
| | | </div> |
| | | <!-- 提醒刷卡 --> |
| | | <audio :src="step1" ref="AudioRef0" id="eventAudio1"></audio> |
| | | <!-- 患者信息读取成功 --> |
| | | <audio :src="step2" ref="AudioRef" id="eventAudio2"></audio> |
| | | |
| | | <!-- 体重结果回传成功 --> |
| | | <audio :src="step3" ref="AudioRef2" id="eventAudio3"></audio> |
| | | <!-- 血压结果回传成功 --> |
| | | <audio :src="step4" ref="AudioRef3" id="eventAudio4"></audio> |
| | | <!-- 没有找到患者 --> |
| | | <audio :src="step5" ref="AudioRef4" id="eventAudio5"></audio> |
| | | <!-- 没有找到排班 --> |
| | | <audio :src="step6" ref="AudioRef5" id="eventAudio6"></audio> |
| | | <!-- <el-dialog title="提示" v-model="netLink" width="30%"> |
| | | <!-- 不能重复称重 --> |
| | | <audio :src="step7" ref="AudioRef7" id="eventAudio7"></audio> |
| | | <el-dialog title="提示" v-model="netLink" width="30%"> |
| | | <span>无法链接到网络!</span> |
| | | </el-dialog> --> |
| | | <!-- <el-dialog title="提示" v-model="isLink" width="30%"> |
| | | </el-dialog> |
| | | <el-dialog title="提示" v-model="isLink" width="30%"> |
| | | <span>sockte连接失败正在重连。。。。。。</span> |
| | | </el-dialog> --> |
| | | </el-dialog> |
| | | <el-row class="header"> |
| | | <el-col :span="8"> |
| | | <img |
| | |
| | | <span class="text_1" @click="guyanbi">自助签到</span> <span class="text_2"></span> |
| | | </el-col> |
| | | <el-col :span="8" class="inputcla"> |
| | | |
| | | {{clockNum}} |
| | | </el-col> |
| | | |
| | | |
| | | |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | |
| | | </el-row> |
| | | <el-row class="divbody"> |
| | | <div class="bodeText"> |
| | | {{ gao_ya }}/{{ di_ya }} |
| | | {{ Number(gao_ya) }}/{{ Number(di_ya) }} |
| | | <br/>{{Number(mai_bu)}} |
| | | </div> |
| | | </el-row> |
| | | </div> |
| | |
| | | </div> |
| | | |
| | | </template> |
| | | <style scoped> |
| | | <style lang="less" scoped> |
| | | body{ |
| | | background: #F3F6FE; |
| | | padding: 0; |
| | |
| | | vertical-align:middle; |
| | | width: 100%; |
| | | text-align: center; |
| | | font-size: 800%; |
| | | font-size: 700%; |
| | | font-family: DINAlternate-Bold, DINAlternate; |
| | | font-weight: bold; |
| | | color: #769AFF; |
| | |
| | | |
| | | |
| | | |
| | | |
| | | </style> |