| | |
| | | <el-input v-model="queryParams.roomId" placeholder="请输入诊室编号" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | | <el-form-item label="诊疗床号" prop="bedNo"> |
| | | <el-form-item label="诊室工位" prop="bedNo"> |
| | | <el-input v-model="queryParams.bedNo" placeholder="请输入诊疗床号" clearable @keyup.enter="handleQuery" |
| | | class="!w-240px" /> |
| | | </el-form-item> |
| | |
| | | |
| | | <!-- 列表 --> |
| | | <ContentWrap> |
| | | <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> |
| | | <el-table-column label="操作" align="center" min-width="120px"> |
| | | <template #default="scope"> |
| | | <!-- <el-button |
| | | link |
| | | type="primary" |
| | | @click="openAppointmentForm('preview', scope.row.patId, scope.row.bookCheckType)" |
| | | v-hasPermi="['ecg:appointment:preview']" |
| | | > |
| | | 查看 |
| | | </el-button>--> |
| | | <!-- |
| | | <el-button |
| | | link |
| | | type="danger" |
| | | @click="handleDelete(scope.row.id)" |
| | | v-hasPermi="['ecg:queue:delete']" |
| | | > |
| | | 删除 |
| | | </el-button> |
| | | --> |
| | | <el-button link type="danger" @click="handleJump(scope.row)" v-if="scope.row.status === 10" |
| | | v-hasPermi="['ecg:queue:jump']"> |
| | | {{ scope.row.jumpFlag === 0 ? "加急" : "取消加急" }} |
| | | </el-button> |
| | | <el-button link type="danger" @click="recall(scope.row)" |
| | | v-if="scope.row.status === 3 || scope.row.status === 5 || scope.row.status === 7" |
| | | v-hasPermi="['ecg:queue:recall']"> |
| | | 召回 |
| | | </el-button> |
| | | <el-button link type="danger" @click="passWaitingPatient(scope.row)" v-if="scope.row.status === 10" |
| | | v-hasPermi="['ecg:queue:pass']"> |
| | | 过号 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" |
| | | :row-class-name="queueRowClass"> |
| | | <!-- <el-table-column label="id" align="center" prop="id" />--> |
| | | <el-table-column label="申请单号" align="center" prop="applyNo" min-width="110px" /> |
| | | <el-table-column label="排队序号" align="center" prop="seqNum" /> |
| | | <el-table-column label="预约号" align="center" prop="bookSeqNum" /> |
| | | <el-table-column label="过号标记" align="center" prop="passed" /> |
| | | <el-table-column label="患者编号" align="center" prop="patId" /> |
| | | <el-table-column label="患者姓名" align="center" prop="patName" min-width="90px" /><el-table-column label="检查项目" |
| | | align="center" prop="bookCheckType" min-width="100px"> |
| | | <el-table-column label="申请单号" align="center" prop="applyNo" min-width="110px" /> |
| | | <el-table-column label="检查项目" align="center" prop="bookCheckType" min-width="150px"> |
| | | <template #default="scope"> |
| | | {{ getCheckTypeName(scope.row.bookCheckType) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="来源" align="center" width="90px"> |
| | | <!-- |
| | | 排队号(本需求):只保留 seq_num 一个号,显示为「检查项目前缀 + 号」。 |
| | | 原来的「排队序号(bookSeqNum)」列已删除 —— 它和「检查序号(seqNum)」并存正是号混乱的来源。 |
| | | 号按检查项目各自编号,不同检查项目会出现相同数字,故用前缀区分。 |
| | | --> |
| | | <el-table-column label="排队序号" align="center" prop="seqNum"> |
| | | <template #default="scope"> |
| | | <!-- 优先用预约单平铺值,回退到 patDetails 快照 --> |
| | | <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc ?? scope.row.patDetails?.source ?? 0" /> |
| | | {{ getCheckTypeSeqPrefix(scope.row.bookCheckType) }}{{ scope.row.seqNum ?? '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="过号标记" align="center" prop="passed" /> --> |
| | | <el-table-column label="患者编号" align="center" prop="patId" /> |
| | | <el-table-column label="姓名" align="center" min-width="200px"> |
| | | <template #default="scope"> |
| | | {{ scope.row.patName }} <dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.patGender" />{{ formatAge(scope.row.patBirthday) }} |
| | | <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="预约时段" align="center" prop="bookTimeslot" min-width="100px"> |
| | |
| | | <dict-tag :type="DICT_TYPE.ECG_BOOK_TIMESLOT" :value="scope.row.bookTimeslot" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="状态" align="center" prop="status"> |
| | | <el-table-column label="状态" align="center" prop="status" width="90px"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="scope.row.status" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="多耐药" align="center" prop="tolerance"> |
| | | <template #default="scope"> |
| | | <!-- 需求6:多耐走字典;NULL 按"无"显示(Q12) --> |
| | | <dict-tag :type="DICT_TYPE.ECG_TOLERANCE" :value="scope.row.tolerance ?? 0" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="VIP" align="center" prop="isVip" /> |
| | | <!-- VIP:显示「是/否」中文(原先直接显示 0/1)。字典 infra_boolean_string = true/是、false/否 --> |
| | | <el-table-column label="VIP" align="center" width="80px"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="Number(scope.row.isVip) === 1" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="开单医师" align="center" prop="doctor" min-width="100px"> |
| | | <template #default="scope">{{ scope.row.doctor || '-' }}</template> |
| | | </el-table-column> |
| | | <!-- 需求1:医嘱号(HIS observationRequest.id.item[root=2.16.156.10011.1.28])。 |
| | | 该节点在规范中非必须项,历史数据(新增列之前采集的)为空,显示 '-'。 --> |
| | | <el-table-column label="医嘱号" align="center" prop="doctorAdviceNo" min-width="110px"> |
| | | <template #default="scope"> |
| | | {{ scope.row.doctorAdviceNo || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="诊室编号" align="center" prop="roomId" /> |
| | | <el-table-column label="诊室名称" align="center" prop="roomName" /> |
| | | <el-table-column label="诊室工位" align="center" prop="bedNo" /> |
| | | <el-table-column label="就诊号" align="center" prop="episodeId" min-width="110px" /> |
| | | <!-- 本列标签由「就诊卡号」改为「门诊号」(经确认)。原因(详见《部署清单》5.1): |
| | | HIS 在卡号槽位传空,medical_card 全库 159,116 行**无一非空**; |
| | |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 需求1:医嘱号(HIS observationRequest.id.item[root=2.16.156.10011.1.28])。 |
| | | 该节点在规范中非必须项,历史数据(新增列之前采集的)为空,显示 '-'。 --> |
| | | <el-table-column label="医嘱号" align="center" prop="doctorAdviceNo" min-width="110px"> |
| | | <template #default="scope"> |
| | | {{ scope.row.doctorAdviceNo || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="性别" align="center" prop="patGender" width="70px"> |
| | | <template #default="scope">{{ genderFormat(scope.row.patGender) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="出生日期" align="center" min-width="110px"> |
| | | <template #default="scope">{{ formatDateOnly(scope.row.patBirthday) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="年龄" align="center" width="80px"> |
| | | <template #default="scope">{{ formatAge(scope.row.patBirthday) }}</template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="病区" align="center" min-width="110px"> |
| | | <template #default="scope">{{ scope.row.patWardDesc || scope.row.patDetails?.wardDesc || '-' }}</template> |
| | | </el-table-column> |
| | |
| | | {{ scope.row.patBedNo || scope.row.patDetails?.bedNo || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="出生日期" align="center" min-width="110px"> |
| | | <template #default="scope">{{ formatDateOnly(scope.row.patBirthday) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="患者电话" align="center" min-width="120px"> |
| | | <template #default="scope"> |
| | | {{ scope.row.patMobile || scope.row.patPhone || scope.row.patDetails?.mobile || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="登记时间" align="center" min-width="150px"> |
| | | <template #default="scope">{{ formatDateTime(scope.row.registerDate) }}</template> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column label="开单日期" align="center" min-width="150px"> |
| | | <template #default="scope">{{ formatDateTime(scope.row.doctorTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="距今天数" align="center" width="90px"> |
| | | <template #default="scope">{{ formatDaysFromOrder(scope.row.doctorTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="开单医师" align="center" prop="doctor" min-width="100px"> |
| | | <template #default="scope">{{ scope.row.doctor || '-' }}</template> |
| | | <el-table-column label="过期标记" align="center" prop="expired" /> |
| | | <el-table-column label="登记时间" align="center" min-width="150px"> |
| | | <template #default="scope">{{ formatDateTime(scope.row.registerDate) }}</template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="多耐药" width="150" align="center" prop="tolerance"> |
| | | <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" /> |
| | | <!-- 操作列:固定在列表最后位置(fixed="right" 保证始终贴在最右侧) |
| | | 按钮配色与「预约记录」模块的操作列保持一致: |
| | | 加急 / 过号 → 同该模块「编辑」按钮(type=primary plain) |
| | | 召回 → 同该模块「删除」按钮(type=danger plain) --> |
| | | <el-table-column label="操作" fixed="right" align="center" width="180px"> |
| | | <template #default="scope"> |
| | | <!-- 需求6:多耐走字典;NULL 按"无"显示(Q12) --> |
| | | <dict-tag :type="DICT_TYPE.ECG_TOLERANCE" :value="scope.row.tolerance ?? 0" /> |
| | | <el-button type="primary" plain size="small" @click="handleJump(scope.row)" v-if="scope.row.status === 10" |
| | | v-hasPermi="['ecg:queue:jump']"> |
| | | {{ scope.row.jumpFlag === 0 ? "加急" : "取消加急" }} |
| | | </el-button> |
| | | <el-button type="primary" plain size="small" @click="passWaitingPatient(scope.row)" |
| | | v-if="scope.row.status === 10" v-hasPermi="['ecg:queue:pass']"> |
| | | 过号 |
| | | </el-button> |
| | | <el-button type="danger" plain size="small" @click="recall(scope.row)" |
| | | v-if="scope.row.status === 3 || scope.row.status === 5 || scope.row.status === 7" |
| | | v-hasPermi="['ecg:queue:recall']"> |
| | | 召回 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="过期标记" align="center" prop="expired" /> |
| | | <el-table-column label="诊室编号" align="center" prop="roomId" /> |
| | | <el-table-column label="诊室名称" align="center" prop="roomName" /> |
| | | <el-table-column label="诊疗床号" align="center" prop="bedNo" /> |
| | | <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" /> |
| | | </el-table> |
| | | <!-- 分页 --> |
| | | <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" |
| | |
| | | import { useCheckTypeStore } from "@/store/modules/checkType"; |
| | | import AppointmentForm from "@/views/ecg/appointment/AppointmentForm.vue"; |
| | | import { genderFormat } from "@/utils/stringUtil"; |
| | | import { getCheckTypeName } from "../../../utils/checkTypeFormatter"; |
| | | import { getCheckTypeName, getCheckTypeSeqPrefix } from "../../../utils/checkTypeFormatter"; |
| | | // 需求1:患者信息 18 项的公共格式化(年龄、距今天数等) |
| | | import { formatAge, formatDaysFromOrder, formatDateTime, formatDateOnly, resolveCardNo } from '@/utils/patientInfo' |
| | | |
| | |
| | | console.info("queue onActivated...") |
| | | handleQuery() |
| | | }) |
| | | |
| | | /** |
| | | * 队列行样式:把「已过号」的记录整行标红,方便医生一眼识别。 |
| | | * |
| | | * 为什么按行高亮而不是只给状态标签上色: |
| | | * · 字典 ecg_queue_status 里 13 个状态**都没有配 color_type**, |
| | | * 所以 dict-tag 渲染出来全是默认灰色标签,彼此没有区分度; |
| | | * · 过号是最需要被注意的状态(患者错过了叫号),整行标色比小标签更醒目。 |
| | | * |
| | | * 已过号状态值(字典 ecg_queue_status): |
| | | * 3 = 已过号-排队、5 = 已过号、7 = 已过号-安装 |
| | | */ |
| | | const PASSED_STATUSES = [3, 5, 7] |
| | | const queueRowClass = ({ row }: { row: QueueVO }) => { |
| | | return PASSED_STATUSES.includes(Number(row.status)) ? 'queue-row-passed' : '' |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | /* 已过号:整行浅红底 + 左侧红色竖条,扫一眼就能定位 */ |
| | | :deep(.el-table .queue-row-passed) { |
| | | /* el-table 的行背景取自该变量,覆写它可让行底色整体变红 */ |
| | | --el-table-tr-bg-color: var(--el-color-danger-light-9); |
| | | |
| | | td.el-table__cell { |
| | | background-color: var(--el-color-danger-light-9); |
| | | } |
| | | |
| | | /* 左侧竖条用 border-left 而非 box-shadow:与 el-table 的单元格边框模型更兼容 */ |
| | | td.el-table__cell:first-child { |
| | | border-left: 4px solid var(--el-color-danger); |
| | | } |
| | | |
| | | /* 鼠标悬停时保持红色基调,避免被 el-table 的 hover 背景覆盖 */ |
| | | &:hover>td.el-table__cell { |
| | | background-color: var(--el-color-danger-light-8) !important; |
| | | } |
| | | } |
| | | </style> |