5.vue3医疗在线问诊项目 - _极速问诊-前置准备 ==> 需求分析、枚举类型、pinia仓库的初始化

news2024/10/7 16:22:19

5.vue3医疗在线问诊项目 - _极速问诊-前置准备 ==> 需求分析、枚举类型、pinia仓库的初始化

极速问诊-需求分析{#consult-product}

极速问诊阶段流程分析

线下看病流程:

选择医院(三甲、普通)=》挂号=》选择科室 =》选择医生(专家、主任)=》支付=》订单=》患者去医院找医生,当面沟通=》医生确定病情,开药=》患者去药房买药

线上看病流程:

image-20220813195713860

极速问诊阶段:

  1. 极速问诊(记录-问诊类型

  2. 三甲图文问诊 或 普通图文问诊(记录-问诊级别

  3. 选择科室(记录-疾病科室)

  4. 描述病情(记录-症状详情、时间、是否问诊过、图片)

  5. 选择患者(记录-患者ID)

  6. 支付问诊费

所有流程走完才能组合成完整的问诊记录,而且是不同的页面采集数据,这个实现需要 pinia

接口数据:

  • type 问诊类型: 1找医生 2极速问诊 3开药问诊 type:1|2|3
  • illnessType 极速问诊类型:0普通 1三甲 illnessType: 0|1

提问:

  • 刚刚看到 1 2 3 的时候你能记得他们代表什么意思吗?
    • 不清楚,对于数字字面量类型的联合类型语义差,建议使用 枚举

枚举基本语法{#enum-base}

掌握:枚举的基本语法和使用细节

  • 作用:表示一组明确可选的值,和字面量类型配合联合类型类似。
  • 解释:枚举可以定义一组常量,使用该类型后,约定只能使用这组常量中的其中一个。
// 创建枚举类型
enum Direction { Up, Down, Left, Right }

// 使用枚举类型
const changeDirection = (direction: Direction) => {
  console.log(direction)
}

// 调用函数时,需要应该传入:枚举 Direction 成员的任意一个
// 类似于 JS 中的对象,直接通过 点(.)语法 访问枚举的成员
changeDirection(Direction.Up)

问题:

  • 通过枚举访问其成员,成员的值是什么?
    • 默认从 0 开始自增的数值
  • 可以修改其成员的值吗?
    • Up = 10 , 后面是从 10 开始自增
  • 成员的值可以使用字符串吗?
    • Up = 'Up' 可以,但是后面的值都需要使用字符串。

枚举使用场景{#enum-intro}

场景:用于一组没有语义的可选值,给它们添加类型。

比如:

  • 后台给的数据: 0 是男 1 是女 ---- 1 是待付款 5 是已付款 8 是已完成
  • 好处,通过枚举可以让成员更加语义化,提高代码可读性

代码:

// 性别
enum GenderType {
  Boy,
  Girl
}
const showGender = (gender: GenderType) => {
  if (gender === GenderType.Boy) {
    console.log('性别:男')
  }
}
showGender(GenderType.Boy)
// 订单状态
enum OrderStatus {
  UnPay = 1,
  Payed = 5,
  Complete = 8
}
const showOrderStatus = (status: OrderStatus) => {
  if (status === OrderStatus.Complete) {
    console.log('状态:已完成')
  }
}
showOrderStatus(OrderStatus.Complete)

小结:

  • 枚举一般使用在,表示一组明确可选的值,语义化不高的情况。
  • 如果这组可选值语义很高,如 unpay | payed | complete ,使用字面量配合联合类型更简单些。
    思考:
  • 枚举的选项可以代表值,可以写在 d.ts 文件吗?
    • 不能,有值的需要写在 ts 文件中

极速问诊-定义类型{#consult-type}

根据api接口,定义问诊订单记录数据相关类型

步骤:

  • 问诊类型枚举
  • 患病时间枚举
  • 图片数组类型
  • 问诊记录类型(创建问诊订单)

代码:

enums/index.ts

// 问诊类型:1找医生 2== 极速问诊 == 3开药问诊
export enum ConsultType {
  Doctor = 1,
  Fast = 2,
  Medication = 3
}
// 患病时间:1一周内2一月内3半年内4半年以上
export enum ConsultTime {
  Week = 1,
  Month,
  HalfYear,
  More
}

types/consult.d.ts

import { ConsultType, ConsultTime } from '@/enums'

// 图片列表
export type Image = {
  id: string
  url: string
}
// 问诊记录
export type Consult = {
  id: string
  type: ConsultType // 问诊类型:1找医生 2极速问诊 3开药问诊
  illnessType: 0 | 1 // 问诊级别:0普通  1三甲
  depId: string // 问诊科室id
  illnessDesc: string // 病情描述
  illnessTime: ConsultTime // 患病时间
  consultFlag: 0 | 1 // 是否问诊过:0未问诊1问诊过
  pictures: Image[] // 病例信息-图片集合
  patientId: string // 患者id
  couponId: string // 优惠卷id
}

// 问诊记录-全部可选
// Required 转换为全部必须   Partial 转换问全部可选  两个内置的泛型类型
export type PartialConsult = Partial<Consult>

小结:

  • 全部可选是因为信息是一点一点累加上去的
  • Required 转换为全部必须
  • Partial 转换问全部可选

注意:

  • 枚举类型需要在 ts 文件中,因为枚举会编译成 js 代码

极速问诊-问诊记录仓库{#consult-store}

实现:病情描述仓库的定义,实现问诊记录分步修改

问题❓:如何跨页面共享使用数据?

需求:

  • 定义仓库,提供

    1. 问诊记录数据,创建订单使用

    2. 修改问诊类型type方法:1找医生 2极速问诊 3开药问诊

    3. 修改极速问诊类型illnessType方法:0普通 1三甲

    4. 修改科室id方法

    5. 修改病情描述相关信息方法:illnessDesc、illnessTime、consultFlag、pictures

    6. 修改患者patientId的方法

    7. 修改优惠卷couponId的方法

    8. 清空问诊记录方法

  • 导出仓库

  • 首页点击极速问诊记录问诊类型且跳转页面

代码:

  1. 定义仓库 stores/modules/consult.ts
import type { ConsultType } from '@/enums'
import type { PartialConsult } from '@/types/consult'
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const useConsultStore = defineStore(
  'cp-consult',
  () => {
    // 1. 问诊记录数据
    const consult = ref<PartialConsult>({})
    // 2. 设置问诊类型
    const setType = (type: ConsultType) => (consult.value.type = type)
    // 3; 设置极速问诊级别
    const setIllnessType = (type: 0 | 1) => (consult.value.illnessType = type)
    // 4. 设置科室
    const setDep = (id: string) => (consult.value.depId = id)
    // 5. 设置病情描述
    const setIllness = (
      illness: Pick<PartialConsult, 'illnessDesc' | 'illnessTime' | 'consultFlag' | 'pictures'>
    ) => {
      consult.value.illnessDesc = illness.illnessDesc
      consult.value.illnessTime = illness.illnessTime
      consult.value.consultFlag = illness.consultFlag
      consult.value.pictures = illness.pictures
    }
    // 6. 设置患者
    const setPatient = (id: string) => (consult.value.patientId = id)
    // 7. 设置优惠券
    const setCunpon = (id?: string) => (consult.value.couponId = id)
    // 8. 清空记录
    const clear = () => (consult.value = {})

    return { consult, setType, setIllnessType, setDep, setIllness, setPatient, setCunpon, clear }
  },
  {
    persist: true
  }
)
  1. 导出仓库 stores/index.ts
export * from './modules/consult'
  1. 首页点击极速问诊记录问诊类型且跳转页面 views/Home/index.vue
import { useConsultStore } from '@/stores'
import { ConsultType } from '@/enums'

const store = useConsultStore()
<router-link to="/consult/fast"
+            @click="store.setType(ConsultType.Fast)"
             class="nav">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客网专项练习——C语言错题集(5)

文章目录 指针的值指针与数组、函数的组合空结构体* 和 的优先级 指针的值 指针的值是一个地址&#xff0c;题目中的字符串 “girl” 应该是 *p 的值&#xff0c;即指针 p 所指地址存储的数据的值。 指针与数组、函数的组合 int *p[n] 等价于 int (*)p[n]&#xff0c;是一个…

xinput1_3.dll丢失怎么办?xinput1_3.dll丢失的修复方法

xinput1_3.dll是电脑文件中的dll文件&#xff08;动态链接库文件&#xff09;。如果计算机中丢失了某个dll文件&#xff0c;可能会导致某些软件和游戏等程序无法正常启动运行&#xff0c;并且导致电脑系统弹窗报错。 在我们打开软件或者游戏的时候&#xff0c;电脑提示xinput1_…

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 Proteus仿真小实验&#xff1a; STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 功能&#xff1a; 硬件组成&#xff1a;STM32F103C6单片机 LCD1602显示器HCSR04超声波传感器按键(加 减)电机蜂鸣器 1.单片机…

学习Angular的编程之旅

目录 1、简介 2、特点 2.1 横跨多种平台 2.2 速度与性能 2.3 美妙的工具 3、Angular 应用&#xff1a;知识要点 3.1 组件 3.2 模板 3.3 依赖注入 4、与其他框架的对比 1、简介 Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用。 A…

Java(二):Spring Boot 项目-文件的增删改查下载

Spring Boot 项目-文件的增删改查下载 准备docker运行mysql设置MySQL时区查看当前MySQL使用的时区MySQL建库建表 定义两个实体类数据表实体类查询条件实体类 工具类com/example/user/utils/FileUtil.java 用到的SQL语句mapper user/src/main/resources/mapper/FileTableDao.xml…

基于SSM框架的Java的医院管理系统的设计与实现+文档

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于SSM框架的Java的医院管理系统的设计与实现文档 视频演示 视频去哪了呢&#xff1f;_哔哩哔哩_bilibili 系统介绍 摘 要 随着互联网技术的快速进…

ARM-驱动

字符设备驱动的内部实现&#xff1a; 文件存在文件系统中&#xff0c;会有一个标识inode号&#xff0c;基于这个标识找到了struct_inode结构体&#xff08;保存当前文件信息&#xff09;&#xff0c;struct_inode结构体中有一个struct cdev *i_cdev类型的字符设备指针&#x…

糖基化修饰1240252-34-9,Fmoc-Thr((Ac4Galβ1-3)Ac3GlcNAcβ1-6AcGalNAcα)-OH,反应特点及性质研究

文章关键词&#xff1a;糖化学试剂&#xff0c;多肽合成&#xff0c;Fmoc-保护氨基酸&#xff0c;糖基化修饰 Fmoc-Thr((Ac4Galβ1-3)Ac3GlcNAcβ1-6AcGalNAcα)-OH &#xff08;文章编辑来源于&#xff1a;西安凯新生物科技有限公司小编WMJ&#xff09;​ 一、Product stru…

Golang每日一练(leetDay0098) 生命、Nim、猜数字游戏

目录 289. 生命游戏 Game Of Life 292. Nim 游戏 Nim Game 299. 猜数字游戏 Bulls and Cows &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 289. 生命游戏 Game Of L…

牛客小白月赛56

今天无聊vp了一下 A.省略 B.最优肯定是全部都是1 C.直接统计每个余数下可以填多少个数&#xff0c;然后排序从小到大的排序输出即可 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue> #inc…

Linux yum常用命令

Linux服务器安装成功后&#xff0c;我们会经常使用yum安装rpm包以满足使用的需要。使用yum源安装rpm包有两种方式&#xff1a; 方式一&#xff1a; 搭建本地yum源环境&#xff0c;进行rpm包的安装&#xff0c;具体搭建方式&#xff0c;参考(chapter-5)&#xff1a; Linux常规…

Android12之如何查看hidl服务(一百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

关闭网络钓鱼攻击 - 类型、方法、检测、预防清单

在当今互联互通的世界中&#xff0c;数字通信和交易占主导地位&#xff0c;网络钓鱼攻击已成为一种无处不在的威胁。 通过伪装成可信赖的实体&#xff0c;网络钓鱼攻击欺骗用户和组织泄露敏感信息&#xff0c;例如密码、财务数据和个人详细信息。 网络钓鱼攻击是网络罪犯使用…

【SpringCloud入门】-- 认识SpringCloudAlibabaNacos服务注册和配置中心

目录 1.Nacos是什么&#xff1f; 2.Nacos能干什么&#xff1f; 3. 各种服务注册中心比较 4.Nacos安装与运行 5.介绍一下Nacos图形化界面 6.NameSpace&#xff0c;Group&#xff0c;Data ID三者的关系&#xff1f;为什么这样设计&#xff1f; 7.Nacos集群和持久化配置 前…

MATLAB与自动化控制:控制系统设计、仿真和实现的应用和优化

章节一&#xff1a;介绍 自动化控制系统是现代工程中的关键组成部分&#xff0c;它在许多领域中发挥着重要作用&#xff0c;如机械工程、电气工程和航空航天工程等。在控制系统设计、仿真和实现过程中&#xff0c;MATLAB成为了一种强大的工具。本文将探讨MATLAB在自动化控制中…

用户模块封装数据模型层

数据模型层 数据模型层&#xff08;Data Model Layer&#xff09;是指在应用程序中用于表示和处理数据的模型层。这一层通常是应用程序的核心&#xff0c;因为它 负责从各种数据源获取数据并保证这些数据与应用程序的功能相匹配 。 在一个应用程序中&#xff0c;数据模型层通…

MidJourney使用教程:二 初识Prompts

最近AIGC这么火&#xff0c;除了chatGPT以外&#xff0c;这种图像类的产品也是非常有意思&#xff0c;其中就有MidJourney和Stable Diffusion这俩个比较出圈。这里我先选择MidJourney来体验并整理出一个教程。一方面MidJourney最简单&#xff0c;能当路Discord&#xff0c;注册…

正则替换的方式删除特定的内容

以前&#xff0c;公司网络限制&#xff0c;无法通过用户名密码登录某些网站&#xff0c;但是可以通过浏览器打开网站&#xff0c;而这些网站有个问题&#xff0c;非登录用户&#xff0c;不能复制博客中的代码&#xff0c;这个就有些麻烦了。 好在&#xff0c;这些代码是可以通过…

6.vue3医疗在线问诊项目 - _极速问诊-订单选择页面 ==> 问诊级别(普通/三甲)、科室选择(一级科室、二级科室)、病情描述、选择患者

6.vue3医疗在线问诊项目 - _极速问诊-订单选择页面 > 问诊级别&#xff08;普通/三甲&#xff09;、科室选择&#xff08;一级科室、二级科室&#xff09;、病情描述、选择患者 极速问诊-选择问诊级别-路由{#consult-change-type} 完成选择三甲还是普通问诊页面&#xff0c…

【Hadoop】大数据开发环境配置

【Hadoop】大数据开发环境配置 文章目录 【Hadoop】大数据开发环境配置1 设置静态ip2 设置主机名3 关闭防火墙4 ssh免密码登录5 JDK配置6 hadoop安装并配置6.1 集群节点之间时间同步6.2 SSH免密码登录完善6.3 hadoop配置 1 设置静态ip 进入ifcfg-ens33文件 vi /etc/sysconfig/n…