2.0 KiB
2.0 KiB
挂号列表按类型筛选
变更
- 仅在截图对应的
admin/src/views/consumer/prescription/guahao.vue筛选区新增“挂号类型”下拉:全部、视频问诊、图文问诊。 - 类型通过现有查询和分页请求提交;点击“查询”回到第一页,“重置”同时清除类型及原有筛选条件。
server/app/adminapi/lists/doctor/AppointmentLists.php新增共享applyAppointmentTypeFilter,列表、总数、状态 Tab 角标均应用相同类型过滤。计数不依赖先执行列表。- 全部、未传参数及 null 表示不按类型限制,保留历史电话等记录。视频筛选包括明确视频类型及按
AppointmentTypeEnum::normalizeStored规则默认成视频的历史 null、空串、纯空白值。图文筛选仅匹配明确图文记录。 - 非法筛选值(未知值、电话、错误大小写、带空格值、数字、布尔值、数组等)返回空结果及零计数,不默认成视频。存储的未知类型也不会由于 MySQL 默认大小写不敏感比较被当成视频。
验证
从 D:/web/zyt/admin 运行:
node --test tests/appointment-type-filter.test.cjs
8 tests passed; 0 failures
server/tests/AppointmentTypeFilterSqlFixture.php使用实际AppointmentLists和 ThinkPHP MySQL SQL builder 生成列表、count、状态分组 SQL。数据库连接方法被替换为抛错,测试不能连接业务库。- 测试在 Node 内存 SQLite 中执行生成的查询,仅将 MySQL
BINARY比较转换为 SQLite 等价的显式二进制排序。覆盖历史空值、未知/电话类型、软删除诊单、非法输入、类型与状态/医生/患者条件组合、分页及计数一致性。 - 实际 Vue setup 与实际
usePaging验证选择类型后查询的请求参数、回到第一页以及重置行为;SFC 脚本与模板编译通过。 - PHP 语法检查及
git diff --check通过。
未访问真实数据库或外部服务,未提交代码。前序挂号类型及 IM 聊天修改均保留;未修改其他界面或 app/。.trellis/ 不存在。