From 359a3d84ba7d9378cb183710db221580d7ba845a Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 04 七月 2022 16:55:35 +0800
Subject: [PATCH] up

---
 .vscode/tasks.json         |   78 +++++++++++-
 src/views/home/index.vue   |   81 ++++++++++---
 logipc.png                 |    0 
 src/samples/sockteStomp.ts |   95 +++++++++++++--
 index.html                 |    2 
 src/samples/node-api.ts    |    3 
 package.json               |    2 
 electron/main/index.ts     |    2 
 src/stores/sockteInfo.ts   |   58 +++++----
 9 files changed, 246 insertions(+), 75 deletions(-)

diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index c915b16..b51f6ce 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,14 +1,78 @@
 {
-  // See https://go.microsoft.com/fwlink/?LinkId=733558 
-  // for the documentation about the tasks.json format
   "version": "2.0.0",
   "tasks": [
     {
-      "label": "start .debug.script.mjs",
+      "label": "haas-studio: Config",
       "type": "shell",
-      "command": "node .vscode/.debug.script.mjs",
-      "isBackground": true,
-      "problemMatcher": []
+      "command": "aos",
+      "args": [
+        "make",
+        "@haaseduk1",
+        "-c",
+        "config"
+      ],
+      "presentation": {
+        "focus": true
+      }
+    },
+    {
+      "label": "haas-studio: Make",
+      "type": "shell",
+      "command": "aos",
+      "args": [
+        "make"
+      ],
+      "presentation": {
+        "focus": true
+      }
+    },
+    {
+      "label": "haas-studio: Burn",
+      "type": "shell",
+      "command": "aos",
+      "args": [
+        "burn"
+      ],
+      "presentation": {
+        "focus": true
+      }
+    },
+    {
+      "label": "haas-studio: Serial Monitor",
+      "type": "shell",
+      "command": "aos",
+      "args": [
+        "monitor",
+        "",
+        "1500000"
+      ],
+      "presentation": {
+        "focus": true,
+        "panel": "dedicated"
+      }
+    },
+    {
+      "label": "haas-studio: Clean",
+      "type": "shell",
+      "command": "aos",
+      "args": [
+        "make",
+        "clean"
+      ],
+      "presentation": {
+        "focus": true
+      }
+    },
+    {
+      "label": "dummy_aos3.3.0",
+      "command": "pwd"
     }
-  ]
+  ],
+  "windows": {
+    "options": {
+      "env": {
+        "PATH": "C:\\ProgramData\\aos\\miniconda3;C:\\ProgramData\\aos\\miniconda3\\Scripts;C:\\ProgramData\\aos\\miniconda3\\Library\\bin;${env:PATH}"
+      }
+    }
+  }
 }
diff --git a/electron/main/index.ts b/electron/main/index.ts
index 31d21c7..6ead326 100644
--- a/electron/main/index.ts
+++ b/electron/main/index.ts
@@ -52,7 +52,7 @@
   // 测试推送消息到Renderer进程
   win.webContents.on('did-finish-load', () => {
     win?.webContents.send('main-process-message', new Date().toLocaleString())
-    win?.webContents.send('getConfigData',store.get('clientCode'),store.get('deviceList'))
+    win?.webContents.send('getConfigData',store.get('clientCode'),store.get('deviceList'),store.path)
   })
 
   // Make all links open with the browser, not with the application
diff --git a/index.html b/index.html
index 9de8d3f..d241b01 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
-    <link rel="icon" href="/favicon.ico" />
+    <link rel="icon" href="/logipc.png" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
     <title>自助签到</title>
diff --git a/logipc.png b/logipc.png
new file mode 100644
index 0000000..c95340f
--- /dev/null
+++ b/logipc.png
Binary files differ
diff --git a/package.json b/package.json
index 9ef224d..5e0cc35 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "electron-vue-vite",
+  "name": "Device-Communication-UI",
   "version": "2.0.0",
   "main": "dist/electron/main/index.js",
   "author": "",
diff --git a/src/samples/node-api.ts b/src/samples/node-api.ts
index 5f4cac5..6d900bc 100644
--- a/src/samples/node-api.ts
+++ b/src/samples/node-api.ts
@@ -3,7 +3,8 @@
 import { ipcRenderer } from 'electron'
 import {creatorClient} from './sockteStomp'
 import {sockteStore} from '@/stores/sockteInfo'
-import internetAvailable  from "internet-available"
+// import internetAvailable  from "internet-available"
+var internetAvailable = require("internet-available")
 let deviceList=[]
 let clientCode=''
 // 主进程发送消息到渲染进程
diff --git a/src/samples/sockteStomp.ts b/src/samples/sockteStomp.ts
index 1726050..eff72a3 100644
--- a/src/samples/sockteStomp.ts
+++ b/src/samples/sockteStomp.ts
@@ -1,4 +1,5 @@
 import Stomp from 'stompjs'
+import os from 'os'
 var stompClient: Stomp.Client | null=null
 
 import { userInfoStore } from '@/stores/userInfo'
@@ -14,7 +15,10 @@
 
 let devices:Array<device>=[]
 let clientCode:string=''
-
+/**
+ * 保存结果到vuex
+ * @param resultInfo 结果写入
+ */
 const writeResult=(resultInfo:any)=>{
     if(devices.length>0){
         const deviceInfo=devices.find(de=>{de.deviceName===resultInfo.deviceName})
@@ -27,7 +31,7 @@
                             type:"读卡器",
                             result:resultInfo.result,
                             resultTime:resultInfo.resultTime,
-                            state:true
+                            state:0
                         }
                     )
                     break
@@ -38,7 +42,7 @@
                             type:"体重秤",
                             result:resultInfo.result,
                             resultTime:resultInfo.resultTime,
-                            state:true
+                            state:0
                         }
                     )
                     break
@@ -49,7 +53,47 @@
                             type:"血压计",
                             result:resultInfo.result,
                             resultTime:resultInfo.resultTime,
-                            state:true
+                            state:0
+                        }
+                    )
+                    break
+                default:
+                    console.log('有配置类型没有匹配')
+            }
+        }
+    }
+
+}
+const writeStatu=(resultInfo:any)=>{
+    if(devices.length>0){
+        const deviceInfo=devices.find(de=>{
+            console.log(de.deviceName,resultInfo.deviceName)
+            return de.deviceName===resultInfo.deviceName
+        })
+        if(deviceInfo!==undefined){
+            switch(deviceInfo.deviceType){
+                case '读卡器':
+                    sockteStore().setdkqSockte(
+                        {
+                            deviceName:resultInfo.deviceName,
+                            type:"读卡器",
+                            result:resultInfo.result,
+                            resultTime:resultInfo.resultTime,
+                            state:0
+                        }
+                    )
+                    break
+                case "体重秤":
+                    sockteStore().setweightState(resultInfo.status)
+                    break
+                case "血压计":
+                    sockteStore().setxyjSockte(
+                        {
+                            deviceName:resultInfo.deviceName,
+                            type:"血压计",
+                            result:resultInfo.result,
+                            resultTime:resultInfo.resultTime,
+                            state:0
                         }
                     )
                     break
@@ -72,29 +116,41 @@
         alert("接收数据异常");
     }
 };
-const callbackState=function(message:any){
+const callbackState=function(message:any) {
     if (message.body) {
         const data=JSON.parse(message.body)
-    if(data.deviceName)
+        if(data){
+            writeStatu(data)
+        }
         console.log(data,'设备心跳包数据')
-        writeResult(data)
-    } else {
-        alert("接收数据异常");
     }
 }
+const PatientCallback=function(message:any){
+    if (message.body) {
+        const data=JSON.parse(message.body)
+        console.log(data,'患者信息读取')
+    }
+    
+}
 const connectCallback=function(){
-    console.log("链接成功",stompClient)
+    const pcName= os.hostname()
+    // 订阅患者信息服务
+    stompClient.subscribe(`/queue/patient/info/${pcName}`,PatientCallback)
+    console.log("链接成功",stompClient,pcName)
     // 更新sockte链接状态
     sockteStore().setsockteIsLink(true)
     console.log(sockteStore().isLink)
-    if(stompClient!==null){
-        if(devices.length>0){
-            devices.forEach(de=>{
+    console.log(devices)
+    if(devices.length>0){
+        devices.forEach(de=>{
+            if(stompClient!==null){
                 stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback)
+                // /queue/{clientCode}/{deviceName}/keepalive
+                stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState)
                 stompClient.send(`/app/device/request/${clientCode}/${de.deviceName}`, {}, JSON.stringify({"deviceNumber":de.deviceName}));
-            })
-        }
-        
+
+            } 
+        })
     }
 }
 const error_callback=function(error:any){
@@ -118,4 +174,9 @@
     stompClient.connect({}, connectCallback,error_callback)
 
 }
-export {creatorClient}
+const sendPationCode=(codeStr:string)=>{
+    if(stompClient!==null){
+        stompClient.send(`/app/patient/info/get/${os.hostname()}`,{},codeStr)
+    }
+}
+export {creatorClient,sendPationCode}
diff --git a/src/stores/sockteInfo.ts b/src/stores/sockteInfo.ts
index d528f82..319c934 100644
--- a/src/stores/sockteInfo.ts
+++ b/src/stores/sockteInfo.ts
@@ -7,74 +7,80 @@
     deviceName:string;
     result:string;
     resultTime:string;
-    state:boolean;
+    state:0;
 }
 
 let weightInfo:info={
     type:"体重秤",
-    state:false,
+    state:0,
     deviceName:"",
-    result:"",
+    result:"0",
     resultTime:""
 } 
 let xyjInfo:info={
     type:"血压计",
-    state:false,
+    state:0,
     deviceName:"",
     result:"",
     resultTime:""
 } 
 let dkqInfo:info={
     type:"读卡器",
-    state:false,
+    state:0,
     deviceName:"",
     result:"",
     resultTime:""
 }
 export const sockteStore =defineStore('sockteInfo',()=>{
     const isLink=ref(false) // sockte 链接状态
-    const netLink=ref(false) // 网络链接状态
-    const weightSockte=weightInfo // 体重秤sockte结果
-    const xyjSockte=xyjInfo // 血压计sockte结果
-    const dkqSockte=dkqInfo // 读卡器sockte结果
+    const netLink=ref(true) // 网络链接状态
+    const weightSockte=ref(weightInfo) // 体重秤sockte结果
+    const xyjSockte=ref(xyjInfo) // 血压计sockte结果
+    const dkqSockte=ref(dkqInfo) // 读卡器sockte结果
     // 更新连接状态
     function setsockteIsLink(Link:boolean){
         isLink.value=Link
     }
-    // 更新连接状态
+    // 更新网络连接状态
     function setnetLink(Link:boolean){
         netLink.value=Link
     }
     /**
      * 更新体重秤结果
-     * @param roleText 体重结果
+     * @param info 体重结果
      */
     function setweightSockte(info:info){
-        weightSockte.deviceName=info.deviceName
-        weightSockte.result=info.result
-        weightSockte.resultTime=info.resultTime
-        weightSockte.state=info.state
+        weightSockte.value.deviceName=info.deviceName
+        weightSockte.value.result=info.result
+        weightSockte.value.resultTime=info.resultTime
+    }
+     /**
+     * 更新体重秤工作状态
+     * @param state 体重秤运行状态
+     */
+      function setweightState(state:any){
+        weightSockte.value.state=state
     }
       /**
      * 更新血压计结果
-     * @param roleText 体重结果
+     * @param info 体重结果
      */
     function setxyjSockte(info:info){
-        xyjSockte.deviceName=info.deviceName
-        xyjSockte.result=info.result
-        xyjSockte.resultTime=info.resultTime
-        xyjSockte.state=info.state
+        xyjSockte.value.deviceName=info.deviceName
+        xyjSockte.value.result=info.result
+        xyjSockte.value.resultTime=info.resultTime
     }
       /**
      * 更新血压计结果
-     * @param roleText 体重结果
+     * @param info 体重结果
      */
     function setdkqSockte(info:info){
-        dkqSockte.deviceName=info.deviceName
-        dkqSockte.result=info.result
-        dkqSockte.resultTime=info.resultTime
-        dkqSockte.state=info.state
+        dkqSockte.value.deviceName=info.deviceName
+        dkqSockte.value.result=info.result
+        dkqSockte.value.resultTime=info.resultTime
     }
 
-    return {isLink,netLink,weightSockte,xyjSockte,dkqSockte,setsockteIsLink,setnetLink,setweightSockte,setxyjSockte,setdkqSockte}
+    return {isLink,netLink,weightSockte,xyjSockte,dkqSockte,setsockteIsLink,setnetLink,setweightSockte,
+        setweightState,
+        setxyjSockte,setdkqSockte}
 })
\ No newline at end of file
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index e5464c7..cd1bcde 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -2,36 +2,66 @@
 import { userInfoStore } from '@/stores/userInfo'
 import { sockteStore } from '@/stores/sockteInfo'
 import { ipcRenderer } from 'electron'
-import { reactive,computed, toRefs } from "vue"
+import { reactive,computed, toRefs,onMounted ,ref} from "vue"
+import{sendPationCode} from '../../samples/sockteStomp'
+import {formatDate} from '@/utils/formatTime'
+import { popper } from '@popperjs/core'
  export default {
         setup() {
             const user = userInfoStore()
             const sockte= sockteStore()
+            const inputRef=ref()
             const isLink= computed(()=>{
-                return sockte.isLink
+                return !sockte.isLink
             }) 
             const netLink= computed(()=>{
-                return sockte.netLink
+                return !sockte.netLink
+            })
+            const weightInfo= computed(()=>{
+                return sockte.weightSockte
             })
             const state=reactive({
+                dialogVisible:false,
+                isActive:false,
+                inputCode:"",
+                Newdate:""
             })
-            const ubtCilert=()=>{
-                console.log('ss')
-                // console.log(user.userInfo)
-                // console.log(sockteStore().isLink)
-                // ipcRenderer.send('main-process-message2', { 'param1': "hello" });
-                // console.log(window.myApi.fun('陈银城'))
+            const inputChabge=()=>{
+                sendPationCode(state.inputCode)
             }
-            return{ ...toRefs(state), ubtCilert,isLink,netLink
+            onMounted(() => {
+                console.log('Component is mounted!')
+                inputRef.value.focus();
+                console.log(inputRef)
+                setTimeout(function(){
+                    // state.inputCode="3434"
+                    console.log('-----------sdsds')
+                    inputRef.value.focus();
+                },10000)
+                setInterval(function(){
+                    state.Newdate=formatDate(new Date(),"YYYY-mm-dd HH:MM:SS")
+                    console.log(state.Newdate,'----ss')
+                },1000)
+            })
+            return{ ...toRefs(state),isLink,netLink,weightInfo,inputRef,inputChabge
             }
         }
     }
 </script>
 <template>
     <div class="home">
-        <!-- <el-button @click="ubtCilert">
-            test
-        </el-button> -->
+        <el-dialog
+            title="提示"
+            v-model="netLink"
+            width="30%">
+            <span>无法链接到网络!</span>
+        </el-dialog>
+        <el-dialog
+            title="提示"
+            v-model="isLink"
+            width="30%">
+            <span>sockte连接失败正在重连。。。。。。</span>
+        </el-dialog>
         <el-row>
             <el-col :span="12">
                 <div class="tale">
@@ -39,8 +69,9 @@
                 </div>
             </el-col>
             <el-col :span="12">
-                <div> sockte连接状态{{isLink}}</div>
-                <div> 网络连接状态{{netLink}}</div>
+                <!-- <div> sockte连接状态{{isLink}}</div>
+                <div> 网络连接状态{{netLink}}</div> -->
+                <el-input id="inputCode" @change="inputChabge" v-model="inputCode" ref="inputRef" placeholder="" />
             </el-col>
         </el-row>
         <div class="grid-container">
@@ -55,11 +86,11 @@
             </div>
             <div class="grid-item">
                 <div class="lableText">当前时间:</div>
-                <div class="conText">2022-06-21 14:10</div>
+                <div class="conText">{{Newdate}}</div>
             </div>
             <div class="grid-item">
-                <div class="lableText">当前时间:</div>
-                <div class="conText">2022-06-21 14:10</div>
+                <div class="lableText">透析号:</div>
+                <div class="conText">123456</div>
             </div>
             <div class="grid-item">
                 <div class="lableText">机号:</div>
@@ -73,9 +104,13 @@
                 <div class="lableText">干体重(kg):</div>
                 <div class="conText">88</div>
             </div>
-            <div class="grid-item">
-                <div class="lableText">透前称重(kg):</div>
-                <div class="conText">90</div>
+            <div class="grid-item" >
+                <div>
+                    <div class="lableText" v-if="weightInfo.state===2">透前称重(kg):</div>
+                    <div class="lableText" v-if="weightInfo.state===1" style="color:red">体重秤通讯服务正常运行但未联通设备</div>
+                    <div class="lableText" v-if="weightInfo.state===0" style="color:red">体重秤通讯服务不正常 </div>
+                    <div class="conText">{{weightInfo.result}}</div>
+                </div>
             </div>
             <div class="grid-item">
                 <div class="lableText">目标脱水量:</div>
@@ -137,4 +172,8 @@
     margin-top: 15pt;
     color: #769aff;
 }
+.active{
+    background: #c1c2c6;
+    color: black;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0