极速问诊路由
-
- 1 极速问诊-需求分析{#consult-product}
- 2 枚举基本语法{#enum-base}
- 3 枚举使用场景{#enum-intro}
- 4 极速问诊-定义类型{#consult-type}
- 5 极速问诊-问诊记录仓库{#consult-store}
- 5 极速问诊-选择问诊级别-路由
- 6 极速问诊-选择科室-路由
- 7 极速问诊-选择科室-业务{#consult-dep-logic}
1 极速问诊-需求分析{#consult-product}
理解:极速问诊阶段流程分析
线下看病流程:
选择医院(三甲、普通)=》挂号=》选择科室 =》选择医生(专家、主任)=》支付=》订单=》患者去医院找医生,当面沟通=》医生确定病情,开药=》患者去药房买药
线上看病流程:
极速问诊阶段:
-
极速问诊(记录-问诊类型)
-
三甲图文问诊 或 普通图文问诊(记录-问诊级别)
-
选择科室(记录-疾病科室)
-
描述病情(记录-症状详情、时间、是否问诊过、图片)
-
选择患者(记录-患者ID)
-
支付问诊费(挂号费)
所有流程走完才能组合成完整的问诊记录,而且是不同的页面采集数据,这个实现需要 pinia
接口数据:
- type 问诊类型: 1找医生 2极速问诊 3开药问诊
type:1|2|3
- illnessType 极速问诊类型:0普通 1三甲
illnessType: 0|1
提问:
- 刚刚看到 1 2 3 的时候你能记得他们代表什么意思吗?
- 不清楚,对于数字字面量类型的联合类型语义差,建议使用
枚举
- 不清楚,对于数字字面量类型的联合类型语义差,建议使用
2 枚举基本语法{#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'
可以,但是后面的值都需要使用字符串。
3 枚举使用场景{#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 文件中