首页 > 其他分享 >ssts-hospital-web-master项目实战记录三十:项目迁移-Hook实现(useDeviceStore)

ssts-hospital-web-master项目实战记录三十:项目迁移-Hook实现(useDeviceStore)

时间:2024-02-28 20:49:12浏览次数:34  
标签:web deviceInfoList string useDeviceStore ssts hospital deviceStore state const

记录时间:2024-02-28

一、useDeviceStore模块实现

types/device.ts

// 定义 DeviceInfo 的类型 interface DeviceInfo {   Id: string   TypeId: number   TypeName: string   DeviceId: number   OrderNo: number   DeviceName: string   DeviceCode: string   ParentId: number   ParentDeviceName: string | null   ParentDeviceCode: string | null   Config: string }
// 定义 DeviceStatus 的类型 interface DeviceStatus {   Id: string   DeviceName: string   DeviceCode: string   DeviceStatus: string }
export type { DeviceInfo, DeviceStatus }

 

store/useDeviceStore.ts

import { defineStore } from 'pinia' import { DeviceInfo, DeviceStatus } from '@/types/device'
export const useDeviceStore = defineStore('device', {   state: () => ({     TerminalIp: '',     TerminalNo: '',     TypeId: '',     TypeName: '',     DeviceInfoList: [] as Array<DeviceInfo>,     DeviceStatusList: [] as Array<DeviceStatus>   }),
  actions: {     // 设置终端IP     setTerminalIp(ip: string) {       this.TerminalIp = ip     },
    // 设置终端编号     setTerminalNo(ip: string) {       this.TerminalNo = ip     },
    // 设置终端类型Id     setTerminalTypeId(typeId: string) {       this.TypeId = typeId     },
    // 设置终端类型名称     setTerminalTypeName(typeName: string) {       this.TypeName = typeName     },
    // 设置设备信息列表     setDeviceInfoList(deviceInfoList: Array<DeviceInfo>) {       this.DeviceInfoList = deviceInfoList       for (let i = 0; i < deviceInfoList.length; i++) {         const deviceInfo = deviceInfoList[i]         this.DeviceStatusList.push({           Id: deviceInfo.Id,           DeviceName: deviceInfo.DeviceName,           DeviceCode: deviceInfo.DeviceCode,           DeviceStatus: '0'         })       }     },
    // 更新设备状态     updateDeviceStatus(deviceId: string, status: string) {       const deviceIndex = this.DeviceStatusList.findIndex(         (d) => d.Id === deviceId       )       if (deviceIndex !== -1) {         this.DeviceStatusList[deviceIndex].DeviceStatus = status       }     }   },   getters: {     getTerminalIp: (state) => state.TerminalIp,     getTerminalNo: (state) => state.TerminalNo,     getTerminalTypeId: (state) => state.TypeId,     getTerminalTypeName: (state) => state.TypeName,     getDeviceInfoList: (state) => state.DeviceInfoList,     getDeviceStatusList: (state) => state.DeviceStatusList   } })

 

二、调用示例

test-hook-use-device-store.vue <script setup lang="ts"> import { clientWebApi } from '@/service' import { ajaxWebApi } from '@/framework/utils/ajax-util' import { useDeviceStore } from '@/store/useDeviceStore' import { Terminal } from '@/types/terminal'
const deviceStore = useDeviceStore() clientWebApi('/api/System/GetIpAddress', {}).then((res: string) => {   const terminalIp = res   deviceStore.setTerminalIp(terminalIp)
  ajaxWebApi('/api/Terminal/GetTerminalByTerminalIp', true, {     terminalIp: terminalIp   }).then((res: any) => {     const terminals = res     if (terminals && terminals.length > 0) {       const terminal: Terminal = terminals[0]       deviceStore.setTerminalNo(terminal.TerminalNo)       deviceStore.setTerminalTypeId(terminal.TypeId)       deviceStore.setTerminalTypeName(terminal.TypeName)
      ajaxWebApi('/api/Terminal/GetDeviceListByTerminalTypeId', true, {         terminalTypeId: deviceStore.TypeId       }).then((res: any) => {         const deviceInfoList = res         if (deviceInfoList && deviceInfoList.length > 0) {           deviceStore.setDeviceInfoList(deviceInfoList)         }       })     }   }) }) </script>
<template>   <div>     <!-- 显示 terminal 信息 -->     <p>Terminal IP: {{ deviceStore.getTerminalIp }}</p>     <p>Terminal No: {{ deviceStore.getTerminalNo }}</p>     <!-- <p>Terminal Type Id: {{ deviceStore.getTerminalTypeId }}</p> -->     <!-- <p>Terminal Type Name: {{ deviceStore.getTerminalTypeName }}</p> -->     <hr />     <!-- 使用 p元素 和 v-for 遍历 DeviceInfoList 每个对象创建一个新的行 -->     <p v-for="(value, key) in deviceStore.getDeviceInfoList" :key="key">       {{ key }}: {{ value }}     </p>     <hr />     <!-- 使用 p元素 和 v-for 遍历 DeviceStatusList 每个对象创建一个新的行 -->     <p v-for="(value, key) in deviceStore.getDeviceStatusList" :key="key">       {{ key }}: {{ value }}     </p>   </div> </template>
<style scoped></style>

 

三、运行测试

 

 

 

 

翻译

搜索

复制

<iframe></iframe>

标签:web,deviceInfoList,string,useDeviceStore,ssts,hospital,deviceStore,state,const
From: https://www.cnblogs.com/lizhigang/p/18041743

相关文章

  • kettle从入门到精通 第四十八课 ETL之kettle webspoon
    1、kettle自带的客户端spoon工具是cs架构,多人协同办公起来不是特别方便。当然spoon也可以通过文件仓库设置为database模式进行协同办公。每个人在自己电脑上安装&打开spoon客户端,然后设置相同的文件仓库地址。如下图所示。 2、Web-basedSpoon(也称为webSpoon)webSpoon是一个基......
  • javaweb01-html&css
    HTML-CSS基础介绍html:超文本标记语言学习标签css:层叠样式表学习样式基础标签&样式-新浪新闻biao标题标题排版(标签介绍)标题标签h1、h2水平线标签hr图片标签img超链接a标题样式css引入方式:行内样式:内嵌样式:外联样式:<link颜色表示形式:关键字:redrbg表示法:#rgb(......
  • javaweb02-JavaScript&vue
    JavaScript控制网页行为js引入方式内部脚本:script标签外部脚本:js文件js基础语法书写语法区分大小写每行结尾分号可有可无,建议写上输出语句警告框window.alerthtml输出document.write浏览器控制台console.log变量用var关键字声明变量JavaScript是一......
  • ssts-hospital-web-master项目实战记录二十九:项目迁移-Hook实现(useDictStore)
    记录时间:2024-02-28一、useDictStore模块实现const/index.ts//常量constDICT_VERSIONDATA='versionData'constDICT_PAGE='page'constDICT_COMMON='common'constDICT_DEVICE='device'constDICT_SYSTEM='system......
  • ssts-hospital-web-master项目实战记录二十八:项目迁移-Hook实现(useFlowStore)
    记录时间:2024-02-28一、useFlowStore模块实现store/useFlowStore.tsimport{defineStore}from'pinia'import{Flow,Flows}from'@/types/flow'exportconstuseFlowStore=defineStore('flow',{ state:()=>({  flow:{}as......
  • webpack-dev-server 插件问题 Content not from webpack is served from
    在安装了webpack-dev-server插件后启动然后一直报错 Contentnotfromwebpackisservedfrom XXXX在浏览器中访问 一直显示cannot  / 解决办法在wenbpack.config.js的配置文件中加入输出文件路径配置  devServer:{    static:{     ......
  • GitHub上整理的一些工具(Web 前端相关)
    Web服务器性能/压力测试工具/负载均衡器http_load:程序非常小,解压后也不到100Kwebbench:是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力ab:ab是apache自带的一款功能强大的测试工具Siege:一款开源的压力测试工具,可以根据配置对一个WEB......
  • Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>
    前言:在本篇Taurus.MVCWebMVC入门开发教程的第四篇文章中,我们将学习如何实现数据列表的绑定,通过使用List<Model>来展示多个数据项。我们将继续使用Taurus.Mvc命名空间,同时探讨如何在视图中绑定并显示一个Model列表。步骤1:创建Model首先,我们需要更新我们的Model类,......
  • rn 调用webview组件调用h5传参
    webview组件调用html页面并实现互相传值的功能1.rn页面 html——> rnhtml页面传参 if(window.ReactNativeWebView){  window.ReactNativeWebView.postMessage('值');}接收html的数据使用接收onMessage={(event)=>this.onMessage(event)} 2.html页面......
  • SpringBoot 2x 系列之(七)web场景
    web场景1.SpringMVC自动配置概览SpringBootprovidesauto-configurationforSpringMVCthatworkswellwithmostapplications.(大多场景我们都无需自定义配置)Theauto-configurationaddsthefollowingfeaturesontopofSpring’sdefaults:InclusionofCont......