yxh
2026-09-29 6ab4b1e0b68e4c347110e37018fa005603f53904
src/views/ecg/queue/index.vue
@@ -182,22 +182,76 @@
<!--      <el-table-column label="id" align="center" prop="id" />-->
      <el-table-column label="就诊流水号" align="center" prop="episodeId" min-width="110px"/>
      <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="patId" />
      <el-table-column label="患者姓名" align="center" min-width="160px">
      <!-- 本列标签由「就诊卡号」改为「门诊号」(经确认)。原因(详见《部署清单》5.1):
           HIS 在卡号槽位传空,medical_card 全库 159,116 行**无一非空**;
           实测该列 99.9% 显示的是 outpatient_no(65% 形如身份证、35% 为门诊号)。
           resolveCardNo 仍按值形态给出**来源标注**(身份证/住院号/门诊号)。 -->
      <el-table-column label="门诊号" align="center" min-width="140px">
        <template #default="scope">
          {{scope.row.patName}} ({{genderFormat(scope.row.patGender)}})
          <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patDetails?.source" />
          <span>{{ resolveCardNo(scope.row).value }}</span>
          <el-tag v-if="resolveCardNo(scope.row).from" size="small" type="info" effect="plain" class="ml-1">
            {{ resolveCardNo(scope.row).from }}
          </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="patName" min-width="90px" />
      <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" width="90px">
        <template #default="scope">
          <!-- 优先用预约单平铺值,回退到 patDetails 快照 -->
          <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE"
                    :value="scope.row.patSrc ?? scope.row.patDetails?.source ?? 0" />
        </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" prop="bookCheckType" min-width="100px">
        <template #default="scope">
          {{getCheckTypeName(scope.row.bookCheckType)}}
        </template>
      </el-table-column>
      <el-table-column label="患者详情" align="center" prop="patDetails" min-width="300px">
      <el-table-column label="病区" align="center" min-width="110px">
        <template #default="scope">{{ scope.row.patWardDesc || scope.row.patDetails?.wardDesc || '-' }}</template>
      </el-table-column>
      <el-table-column label="病床号" align="center" width="90px">
        <template #default="scope">
          <span>{{scope.row.patDetails?.mobile}} {{scope.row.patDetails?.wardDesc}} {{scope.row.patDetails?.bedNo}}</span>
          <!-- 注意:scope.row.bedNo 是【诊疗床】(工位),不是病床号;
               病床号取 patBedNo / patDetails.bedNo -->
          {{ scope.row.patBedNo || scope.row.patDetails?.bedNo || '-' }}
        </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 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>
      <el-table-column label="预约时段" align="center" prop="bookTimeslot" min-width="100px">
        <template #default="scope">
@@ -209,11 +263,10 @@
          <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="scope.row.status" />
        </template>
      </el-table-column>
      <el-table-column label="预约号" align="center" prop="bookSeqNum" />
      <el-table-column label="排队号" align="center" prop="seqNum" />
      <el-table-column label="多耐药" width="150" align="center" prop="tolerance" >
         <template #default="scope">
          <dict-tag :type="DICT_TYPE.ecg_tolerance" :value="scope.row.tolerance" />
          <!-- 需求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" />
@@ -256,6 +309,8 @@
import AppointmentForm from "@/views/ecg/appointment/AppointmentForm.vue";
import {genderFormat} from "@/utils/stringUtil";
import {getCheckTypeName} from "../../../utils/checkTypeFormatter";
// 需求1:患者信息 18 项的公共格式化(年龄、距今天数等)
import { formatAge, formatDaysFromOrder, formatDateTime, formatDateOnly, resolveCardNo } from '@/utils/patientInfo'
/** 排队 列表 */
defineOptions({ name: 'queue' })