|  |  |  | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="排队状态" prop="status"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | multiple | 
|---|
|  |  |  | v-model="queryParams.status" | 
|---|
|  |  |  | placeholder="请选择排队状态" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 列表 --> | 
|---|
|  |  |  | <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-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="patId" /> | 
|---|
|  |  |  | <el-table-column label="患者姓名" align="center" min-width="120px"> | 
|---|
|  |  |  | <el-table-column label="患者姓名" align="center" min-width="160px"> | 
|---|
|  |  |  | <template #default="scope"> | 
|---|
|  |  |  | {{scope.row.patName}} ({{genderFormat(scope.row.patGender)}}) | 
|---|
|  |  |  | <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patDetails?.source" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="检查类型" align="center" prop="bookCheckType" > | 
|---|
|  |  |  | <el-table-column label="检查类型" align="center" prop="bookCheckType" min-width="100px"> | 
|---|
|  |  |  | <template #default="scope"> | 
|---|
|  |  |  | {{checkTypeStore.getCheckTypeName(scope.row.bookCheckType)}} | 
|---|
|  |  |  | {{getCheckTypeName(scope.row.bookCheckType)}} | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="患者详情" align="center" prop="patDetails" /> | 
|---|
|  |  |  | <el-table-column label="预约时段" align="center" prop="bookTimeslot" > | 
|---|
|  |  |  | <el-table-column label="患者详情" align="center" prop="patDetails" min-width="300px"> | 
|---|
|  |  |  | <template #default="scope"> | 
|---|
|  |  |  | <span>{{scope.row.patDetails?.mobile}} {{scope.row.patDetails?.wardDesc}} {{scope.row.patDetails?.bedNo}}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="预约时段" align="center" prop="bookTimeslot" min-width="100px"> | 
|---|
|  |  |  | <template #default="scope"> | 
|---|
|  |  |  | <dict-tag :type="DICT_TYPE.ECG_BOOK_TIMESLOT" :value="scope.row.bookTimeslot" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="排队序号" align="center" prop="bookSeqNum" /> | 
|---|
|  |  |  | <el-table-column label="排队序号" align="center" prop="seqNum" /> | 
|---|
|  |  |  | <el-table-column label="VIP" align="center" prop="isVip" /> | 
|---|
|  |  |  | <el-table-column label="状态" align="center" prop="status" > | 
|---|
|  |  |  | <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="bookSeqNum" /> | 
|---|
|  |  |  | <el-table-column label="排队号" align="center" prop="seqNum" /> | 
|---|
|  |  |  | <el-table-column label="VIP" align="center" prop="isVip" /> | 
|---|
|  |  |  | <el-table-column label="过号标记" align="center" prop="passed" /> | 
|---|
|  |  |  | <el-table-column label="过期标记" align="center" prop="expired" /> | 
|---|
|  |  |  | <el-table-column label="诊室编号" align="center" prop="roomId" /> | 
|---|
|  |  |  | 
|---|
|  |  |  | :formatter="dateFormatter" | 
|---|
|  |  |  | width="180px" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-table-column label="操作" align="center" min-width="120px"> | 
|---|
|  |  |  | <template #default="scope"> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | link | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | @click="openAppointmentForm('preview', scope.row.patId)" | 
|---|
|  |  |  | 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 === 5" | 
|---|
|  |  |  | v-hasPermi="['ecg:queue:recall']" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 召回 | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | <!-- 分页 --> | 
|---|
|  |  |  | <Pagination | 
|---|
|  |  |  | 
|---|
|  |  |  | import {useCheckTypeStore} from "@/store/modules/checkType"; | 
|---|
|  |  |  | import AppointmentForm from "@/views/ecg/appointment/AppointmentForm.vue"; | 
|---|
|  |  |  | import {genderFormat} from "@/utils/stringUtil"; | 
|---|
|  |  |  | import {getCheckTypeName} from "../../../utils/checkTypeFormatter"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 排队 列表 */ | 
|---|
|  |  |  | defineOptions({ name: 'queue' }) | 
|---|
|  |  |  | 
|---|
|  |  |  | bookTimeslot: undefined, | 
|---|
|  |  |  | bookCheckType: undefined, | 
|---|
|  |  |  | seqNum: undefined, | 
|---|
|  |  |  | status: undefined, | 
|---|
|  |  |  | status: [], | 
|---|
|  |  |  | passed: undefined, | 
|---|
|  |  |  | expired: undefined, | 
|---|
|  |  |  | roomId: undefined, | 
|---|
|  |  |  | 
|---|
|  |  |  | const openForm = (type: string, id?: number) => { | 
|---|
|  |  |  | formRef.value.open(type, id) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | const openAppointmentForm = (type: string, patId: string, status: number) => { | 
|---|
|  |  |  | formRef.value.openByQueue(type, patId, status) | 
|---|
|  |  |  | const openAppointmentForm = (type: string, patId: string, checkType: number) => { | 
|---|
|  |  |  | formRef.value.openByQueue(type, patId, checkType) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 删除按钮操作 */ | 
|---|
|  |  |  | 
|---|
|  |  |  | } catch {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const passWaitingPatient = async (item: QueueVO) => { | 
|---|
|  |  |  | const patientVO: PatientVO = { | 
|---|
|  |  |  | patId: item.patId, | 
|---|
|  |  |  | checkType: item.bookCheckType, | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const data = await DoctorApi.passWaitingPatient(patientVO); | 
|---|
|  |  |  | message.info(data) | 
|---|
|  |  |  | // 刷新列表 | 
|---|
|  |  |  | await getList() | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const recall = async (item: QueueVO) => { | 
|---|
|  |  |  | const patientVO: PatientVO = { | 
|---|
|  |  |  | roomId: item.roomId, | 
|---|
|  |  |  | bedNo: item.bedNo, | 
|---|
|  |  |  | patId: item.patId, | 
|---|
|  |  |  | jumpFlag: 0 | 
|---|
|  |  |  | checkType: item.bookCheckType, | 
|---|
|  |  |  | //jumpFlag: 0, | 
|---|
|  |  |  | roomId_operator: item.roomId,  // 队列界面 召回操作时 保持原来的工位 | 
|---|
|  |  |  | bedNo_operator: item.bedNo,    // 队列界面 召回操作时 保持原来的工位 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const data = await DoctorApi.recallPatient(patientVO); | 
|---|
|  |  |  | let data = "" | 
|---|
|  |  |  | if (item.status === 3) // 排队中 患者 过号 | 
|---|
|  |  |  | data = await DoctorApi.recallPassWaitingPatient(patientVO); | 
|---|
|  |  |  | else if (item.status === 5) // 常规、领用 过号 | 
|---|
|  |  |  | data = await DoctorApi.recallPatient(patientVO); | 
|---|
|  |  |  | else if (item.status === 7) | 
|---|
|  |  |  | data = await DoctorApi.recallInstallPatient(patientVO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | message.info(data) | 
|---|
|  |  |  | // 刷新列表 | 
|---|
|  |  |  | await getList() | 
|---|
|  |  |  | 
|---|
|  |  |  | onMounted(() => { | 
|---|
|  |  |  | getList() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onActivated(() => { | 
|---|
|  |  |  | console.info("queue onActivated...") | 
|---|
|  |  |  | handleQuery() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | </script> | 
|---|