目录
- [1. 前言:从"大杂烩"到"精细化"](#1. 前言:从“大杂烩”到“精细化”)
- [2. 数据库设计:医生信息表](#2. 数据库设计:医生信息表)
- [3. 功能搭建](#3. 功能搭建)
-
- [3.1 搭建表格视图](#3.1 搭建表格视图)
- [3.2 切换视图](#3.2 切换视图)
- [3.3 搭建列表视图](#3.3 搭建列表视图)
- [4. 总结](#4. 总结)
1. 前言:从"大杂烩"到"精细化"
在项目初期,为了快速跑通流程,我们将医生、护士、管理员都统一放在了 t_personnel(人员表)中,通过 role 字段来区分。
但随着业务深入,我们发现这种"一表通吃"的设计越来越捉襟见肘:
- 字段冗余:医生有"职称"、"擅长领域"、"挂号费",但管理员不需要这些,导致表里出现大量空字段。
- 关联混乱 :之前的
t_schedule(排班)关联的是人员表,但实际上排班应该只针对医生。 - 扩展性差:未来如果医生要加"多点执业"、"评价分数"、"科研成果",人员表会变得臃肿不堪。
本篇目标 :
我们将进行一次架构重构 ,将医生信息从人员表中剥离,建立独立的 医生信息表 (t_doctor)。
t_personnel:负责存基础信息(姓名、手机号、工号、登录凭证)。t_doctor:负责存医疗属性(职称、介绍、挂号费),并通过 ID 关联回人员表。
2. 数据库设计:医生信息表
这张表是医生作为"医疗资源"的核心档案。
表名 :t_doctor
| 字段名称 | 标识 (Key) | 数据类型 | 必填 | 说明 |
|---|---|---|---|---|
| 关联人员 | personnel_id |
关联关系 | 是 | 核心外键,关联 t_personnel (1对1),用于绑定登录账号 |
| 所属科室 | dept_id |
关联关系 | 是 | 核心外键,关联 t_department,决定排班归属 |
| 医生姓名 | name |
文本 (String) | 是 | 冗余字段,与人员表保持一致,减少连表查询次数 |
| 医生工号 | doctor_no |
文本 (String) | 是 | 医院内部唯一工号,如:DOC2025001 |
| 临床职称 | job_title |
枚举 (Enum) | 是 | 选项:主任医师 / 副主任医师 / 主治医师 / 住院医师 |
| 学术职称 | academic_title |
枚举 (Enum) | 否 | 选项:教授 / 副教授 / 讲师 / 博士生导师 |
| 擅长疾病 | good_at |
文本 (String) | 是 | 简短概括,用于列表展示,如:高血压、冠心病介入治疗 |
| 个人简介 | introduction |
富文本 (RichText) | 否 | 详细履历、执业经历,支持HTML格式 |
| 职业格言 | motto |
文本 (String) | 否 | 显示在头像下方的短句,增强亲和力 |
| 形象照 | avatar_url |
图片 (Image) | 是 | 医生专业白大褂半身照 (区别于生活头像) |
| 主页背景图 | bg_image |
图片 (Image) | 否 | 医生个人主页顶部的Banner背景图 |
| 视频介绍 | video_intro |
文件 (File) | 否 | 医生的自我介绍短视频地址 |
| 标准挂号费 | reg_fee |
数字 (Number) | 是 | 单位:元,作为排班的默认价格基准 |
| 服务患者数 | service_count |
数字 (Number) | 否 | 累计接诊人数,如:1205 (用于展示热度) |
| 综合评分 | score |
数字 (Number) | 否 | 满分5.0,如:4.9 (用于展示口碑) |
| 平均等待 | avg_wait_time |
数字 (Number) | 否 | 单位:分钟,如:15 (用于患者预期管理) |
| 排序权重 | priority |
数字 (Number) | 否 | 默认为0,数字越大在列表中越靠前 |
| 状态 | status |
枚举 (Enum) | 是 | 1:出诊 (正常), 0:停诊 (隐藏), 2:暂离 |

3. 功能搭建
除了单调的表格视图,我们还希望有一种卡片视图来呈现数据,先搭建表格视图
3.1 搭建表格视图
以前我们都是使用的数据表格的自带模板,但是考虑到医生的信息是非常多的,弹窗操作不方便,我们这次用模板来生成。
点击创建页面的图标

选择表格与表单页,数据模型选择医生信息表,布局选择左侧导航布局

自动生成了列表、编辑和查看页面

我看有的博主总结,这一步他也叫低代码,他是生成代码减少重复写代码的数量。我认为这种不能算是低代码的范畴,你本质还是为了生成代码模板。低代码是一行都不写,全程可视化配置,只是发布那一刻才进行转写。
配置查询条件

切换到布局设计,在业务管理下添加子菜单,选择列表页面

修改页面的标题和图标

3.2 切换视图
切换视图我们用两个图标来控制,点击一个图标的时候一种视图呈现,点击另外一个图片切换到其他视图。

需要先创建一个变量来决定哪个视图呈现

然后在标题的旁边添加两个图标组件

这里用图标的样式绑定来控制一个选中的效果

bash
$page.dataset.state.viewType === 'table' ? {color:'#1890ff'} :{color:'#000000'}
然后给图标设置点击事件,点击的时候给变量进行赋值

在布局内容里添加一个普通容器,把数据表格移入

然后给普通容器绑定条件展示,当我们的变量等于table时显示

bash
$w.page.dataset.state.viewType=="table"
按照同样的方法,继续添加一个普通容器,里边添加一个数据列表组件

这个我们绑定普通容器的条件展示,当变量等于card时候展示

bash
$w.page.dataset.state.viewType=="card"
3.3 搭建列表视图
列表视图我们主要是需要把纵向排列的数据改为横向排列

修改数据列表的模板为卡片列表

调节列的数量改为4就可以

4. 总结
通过这次重构,我们将"人"与"角色"解耦了:
- 专业度提升 :
t_doctor表专门承载医疗属性,支持更复杂的业务(如未来增加"挂号费配置"、"排班规则"等)。 - 为支付铺路 :我们在
t_doctor里定义了reg_fee(挂号费)。这为下一篇的**"支付下单"**提供了准确的价格来源。