chenyincheng
2023-04-10 06365e9e66d7b9b51c069698746366b0af3cbc22
src/views/home/index.vue
@@ -7,7 +7,6 @@
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'
@@ -75,7 +74,6 @@
        }
        else {
          clearInterval(timer)
          const datetimeCON = patientInfoStore().patientInfo.datetime
          patientInfoStore().setpatientInfo({
            id: 0,
            code: '',
@@ -84,9 +82,8 @@
            deviceCode: '',
            hemoCode: '',
            pureWeight: '',
            datetime: datetimeCON
            datetime: ''
          })
          state.clockNum = patientInfoStore().viewNumber
          sockteStore().setweightSockte({
            type: '体重秤',
            deviceName: '',
@@ -109,9 +106,55 @@
      }, 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,
@@ -124,7 +167,7 @@
      state1: state1,
      state2: state2,
      state3: state3,
      dialogVisible: false,
      dialogVisible: true,
      isActive: false,
      inputCode: "",
      Newdate: "",
@@ -161,6 +204,7 @@
        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("播报完成...")
          })
@@ -178,12 +222,14 @@
        }
        // 没有排班
        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
        }
      }
@@ -206,18 +252,12 @@
              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
              }
            // 计算目标脱水量
@@ -229,7 +269,7 @@
    );
    watch(
      () => xyjInfo.value.resultTime,
      () => {
      async () => {
        if (xyjInfo.value.result !== '') {
          const list = xyjInfo.value.result.split(',')
          if (list.length === 3) {
@@ -242,29 +282,19 @@
              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 = ""
@@ -285,12 +315,14 @@
        }
      }
    );
    // 患者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,
@@ -298,6 +330,25 @@
        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 () {
@@ -313,34 +364,40 @@
    }
    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>
@@ -501,11 +558,20 @@
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 {
@@ -538,7 +604,7 @@
  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;