yxh
2026-09-14 cdc47651d6aa723754f3609148b28a35220138bb
允许诊室有人也可以选择
已修改6个文件
已添加1个文件
243 ■■■■■ 文件已修改
src/assets/room/close.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/room/desk-doctor.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/room/doctor.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/room/open.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/components/RoomBedSelect/src/RoomBedSelect.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/components/RoutinePanel.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/room/RoomLoginSelect.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/room/close.jpg

src/assets/room/desk-doctor.jpg
src/assets/room/doctor.png

src/assets/room/open.jpg

src/components/RoomBedSelect/src/RoomBedSelect.vue
@@ -1,9 +1,9 @@
<script lang="ts" setup>
import { RoomVO } from '@/api/ecg/room'
import {PropType} from "vue";
import {useCheckTypeStore} from "@/store/modules/checkType";
import {UserVO} from "@/store/modules/user";
import {getCheckTypeName} from "../../../utils/checkTypeFormatter";
import { PropType } from "vue";
import { useCheckTypeStore } from "@/store/modules/checkType";
import { UserVO } from "@/store/modules/user";
import { getCheckTypeName } from "../../../utils/checkTypeFormatter";
const emit = defineEmits(['event-haveseat', 'event-leaveseat', 'event-setcurseat'])
@@ -11,8 +11,8 @@
  name: 'RoomBedSelect'
})
const  props = defineProps({
// defineProps({
const props = defineProps({
  // defineProps({
  title: {
    type: Number,
    required: true
@@ -45,53 +45,43 @@
/** 初始化 **/
onMounted(() => {
    console.info(props.bedList)
  console.info(props.bedList)
})
</script>
<template>
  <el-card style="width: 200px" shadow="hover" >
    <template #header>{{bedList[0].roomName}}</template>
  <el-card style="width: 200px" shadow="hover">
    <template #header>{{ bedList[0].roomName }}</template>
    <div v-for="(bedItem, index) in bedList" :key="index">
      <div class="deskwarp">
        <div v-for="(checkType, subIndex) in bedItem.checkTypes" :key="subIndex">
          {{getCheckTypeName(checkType)}}
          {{ getCheckTypeName(checkType) }}
        </div>
        <div>
          {{bedItem.opType === 1?"领用":""}}
          {{bedItem.opType === 2?"安装":""}}
          {{ bedItem.opType === 1 ? "领用" : "" }}
          {{ bedItem.opType === 2 ? "安装" : "" }}
        </div>
        <img
            v-if="bedItem.docId === null"
            src="@/assets/room/open.jpg"
            style="width: 100%"
            alt="无医生"
        />
        <img
            v-else
            src="@/assets/room/desk-doctor.jpeg"
            style="width: 100%"
            alt="有医生"
        />
        <div>{{bedItem.bedNo}} {{bedItem.docName}} {{bedItem.status === 30?"-暂停":""}}</div>
        <el-button v-if="bedItem.docId === null" @click = onHaveSeatclick(bedItem)>
           入座
        <img v-if="bedItem.docId === null" src="@/assets/room/open.jpg" style="width: 100%" alt="无医生" />
        <img v-else src="@/assets/room/desk-doctor.jpg" style="width: 100%" alt="有医生" />
        <div>{{ bedItem.bedNo }} {{ bedItem.docName }} {{ bedItem.status === 30 ? "-暂停" : "" }}</div>
        <el-button v-if="bedItem.docId == null || bedItem.docId != curUser.id" @click="onHaveSeatclick(bedItem)">
          入座
        </el-button>
        <div v-if="bedItem.docId === curUser.id">
          <el-button @click = onLeaveSeatclick(bedItem)>
             离座
          <el-button @click=onLeaveSeatclick(bedItem)>
            离座
          </el-button>
          <span v-if="bedItem.roomId === curBed.roomId && bedItem.bedNo === curBed.bedNo" >
             当前
          <span v-if="bedItem.roomId === curBed.roomId && bedItem.bedNo === curBed.bedNo">
            当前
          </span>
          <el-button v-else @click = onSetCurSeatclick(bedItem)>
             设为当前
          <el-button v-else @click=onSetCurSeatclick(bedItem)>
            设为当前
          </el-button>
        </div>
        <el-divider/>
        <el-divider />
      </div>
    </div>
  </el-card>
@@ -123,5 +113,4 @@
  align-items: center;
  /*height: 260px;*/
}
</style>
src/views/ecg/doctor/components/RoutinePanel.vue
@@ -1,55 +1,67 @@
<!-- 常规检查 医生界面-->
<template>
  <el-form
    ref="formRef"
    :model="formData"
    :rules="formRules"
    label-width="100px"
    v-loading="formLoading"
  >
    <el-row :gutter="20">
      <el-col :span="12">
  <el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
    <el-row :gutter="20">
      <el-col :span="6">
        <el-form-item label="患者编号" prop="patId">
          <el-input
            v-model="formData.patId"
            placeholder="请输入患者编号"
            @input="getRentInfoByPatId"
          />
          <!--        <Qrcode v-if="formData.patId !== undefined && formData.patId !== ''" :text="formData.patId" logo="/logo.gif" width=100 />-->
          <el-input v-model="formData.patId" placeholder="请输入患者编号" @input="getRentInfoByPatId" />
          <!--
          <Qrcode v-if="formData.patId !== undefined && formData.patId !== ''" :text="formData.patId" logo="/logo.gif" width=100 />
          <Barcode v-if="displayBarCode" :value="displayBarCode" :width="100" />
          <el-button @click="copyBarcode()">复制</el-button>
        </el-form-item>
        <el-form-item label="患者名称" prop="patName">
          <el-input v-model="formData.patName" placeholder="请输入患者名称" />
        </el-form-item>
        <el-form-item label="患者描述" prop="patDetails">
          <dict-tag
            v-if="formData.patDetails?.source"
            :type="DICT_TYPE.ECG_PAT_SOURCE"
            :value="formData.patDetails?.source"
          />
          {{ formData?.patDetails?.deptDesc }} {{ formData?.patDetails?.wardDesc }}
          {{ formData?.patDetails?.bedNo }}
        </el-form-item>
        <el-form-item label="检查时间" prop="rentTime">
          <el-date-picker
            v-model="formData.rentTime"
            type="date"
            value-format="x"
            placeholder="选择装机时间"
          />
          -->
        </el-form-item>
      </el-col>
      <el-col :span="12">
      <el-col :span="6">
          <el-form-item label="患者名称" prop="patName">
            <el-input v-model="formData.patName" placeholder="请输入患者名称" />
          </el-form-item>
        </el-col>
      <el-col :span="6">
        <el-form-item label="就诊编号" prop="episodeId">
          <el-input v-model="formData.episodeId" placeholder="请输入患者就诊编号" />
        </el-form-item>
      </el-col>
      <el-col :span="6">
        <el-form-item label="联系电话" prop="episodeId">
          {{ formData?.patDetails?.mobile }}
        </el-form-item>
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="6">
        <el-form-item label="申请单号" prop="applyNo">
          <el-input v-model="formData.applyNo" placeholder="请输入申请单号" />
        </el-form-item>
      </el-col>
      <el-col :span="18">
        <el-form-item label="科室病区" prop="patDetails">
          <dict-tag v-if="formData.patDetails?.source" :type="DICT_TYPE.ECG_PAT_SOURCE"
            :value="formData.patDetails?.source" />
          {{ formData?.patDetails?.deptDesc }}-{{ formData?.patDetails?.wardDesc }}-{{ formData?.patDetails?.bedNo }}
        </el-form-item></el-col>
    </el-row>
    <el-row>
      <el-col :span="6">
        <el-form-item label="检查时间" prop="rentTime">
          <el-date-picker v-model="formData.rentTime" type="date" value-format="x" placeholder="选择时间" />
        </el-form-item>
      </el-col>
      <el-col :span="6">
        <el-form-item label="检查项目" prop="">
          {{ formData?.checkType && getCheckTypeName(formData?.checkType) }}
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="formData.remark" placeholder="请输入备注" />
        </el-form-item>
      </el-col>
      <el-col :span="6">
        <el-form-item label="是否多耐" prop="tolerance">
          <el-tag type="info" v-if="formData.tolerance == 0">否</el-tag>
          <el-tag type="danger" v-else>是</el-tag>
        </el-form-item>
      </el-col>
      <el-col :span="6">
        <el-form-item label="备注" prop="remark">
          <el-input v-model="formData.remark" placeholder="请输入备注" />
        </el-form-item>
      </el-col>
    </el-row>
@@ -57,32 +69,14 @@
  <el-button @click="submitForm" type="primary" :disabled="formLoading">检查完成</el-button>
  <el-button @click="cancelInstall" :disabled="formLoading">放弃检查</el-button>
  <el-button @click="resetForm()">重 置</el-button>
  <el-button @click="yddownload()" :loading="yddownloadLoading"
    :disabled="yddownloadLoading">平板运动心电图知情同意书</el-button>
  <el-button @click="sgdownload()" :loading="sgdownloadLoading"
    :disabled="sgdownloadLoading">食管心脏电生理诊疗知情同意书</el-button>
  <el-button
    v-if="needAutoFeeConfirm(formData.checkType)"
    @click="feeConfirm"
    :disabled="formLoading"
    >确费</el-button
  >
  <el-button
    v-if="needAutoFeeConfirm(formData.checkType)"
    @click="feeCancel"
    :disabled="formLoading"
    >取消确费</el-button
  >
  <el-button @click="yddownload()" :loading="yddownloadLoading" :disabled="yddownloadLoading">平板运动心电图知情同意书</el-button>
  <el-button @click="sgdownload()" :loading="sgdownloadLoading" :disabled="sgdownloadLoading">食管心脏电生理诊疗知情同意书</el-button>
  <el-button v-if="needAutoFeeConfirm(formData.checkType)" @click="feeConfirm" :disabled="formLoading">确费</el-button>
  <el-button v-if="needAutoFeeConfirm(formData.checkType)" @click="feeCancel" :disabled="formLoading">取消确费</el-button>
  <!-- 医生装机列表 -->
  <ContentWrap>
    <el-table
      v-loading="loading"
      :data="list"
      :stripe="true"
      :show-overflow-tooltip="true"
      @row-click="onRowClick"
    >
    <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="onRowClick">
      <!--      <el-table-column label="id" align="center" prop="id" />-->
      <el-table-column label="检查状态" align="center" prop="lost">
        <template #default="scope">
@@ -96,22 +90,10 @@
      <!--      <el-table-column label="设备编号" align="center" prop="devId" />-->
      <el-table-column label="患者编号" align="center" prop="patId" />
      <el-table-column label="患者名称" align="center" prop="patName" />
      <el-table-column
        label="作业时间"
        align="center"
        prop="jobTime"
        :formatter="dateFormatter"
        width="180px"
      />
      <el-table-column label="作业时间" align="center" prop="jobTime" :formatter="dateFormatter" width="180px" />
      <!--      <el-table-column label="作业概要" align="center" prop="summary" />-->
      <el-table-column label="备注" align="center" prop="remark" />
      <el-table-column
        label="创建时间"
        align="center"
        prop="createTime"
        :formatter="dateFormatter"
        width="180px"
      />
      <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
      <!--
      <el-table-column label="操作" align="center" min-width="120px">
        <template #default="scope">
@@ -136,12 +118,8 @@
-->
    </el-table>
    <!-- 分页 -->
    <Pagination
      :total="total"
      v-model:page="queryParams.pageNo"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />
    <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
      @pagination="getList" />
  </ContentWrap>
</template>
@@ -274,7 +252,7 @@
    message.warning('当前无就诊中患者请先叫号')
    return
  }
  yddownloadLoading.value = true
  try {
    const response = await DoctorApi.yddownload(props.setappointmentId)
@@ -292,7 +270,7 @@
    message.warning('当前无就诊中患者请先叫号')
    return
  }
  sgdownloadLoading.value = true
  try {
    const response = await DoctorApi.sgdownload(props.setappointmentId)
src/views/ecg/room/RoomLoginSelect.vue
@@ -213,18 +213,32 @@
}
const haveSeat = async (newRoomVO: RoomVO) => {
  ElMessageBox.confirm(
      '入座, 是否继续?',
      '提示',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }
  ).then(async () => {
    haveSeatConfirm(newRoomVO)
  }).catch(() => {
  });
  // 1. 提取不同的提示语
  const message = newRoomVO.docId != null
    ? '已经有人了, 是否确定要继续入座?'
    : '入座, 是否继续?';
  try {
    // 2. 等待用户点击确认
    await ElMessageBox.confirm(message, '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    });
    if (newRoomVO.docId != null) {
      await leaveSeatConfirm(newRoomVO);
    }
    // 4. 离座成功(或原本就没人),最后执行入座
    await haveSeatConfirm(newRoomVO);
  } catch (err) {
    // 只有用户主动点击取消时才忽略,其他报错可以打印出来方便排查
    if (err !== 'cancel') {
      console.error('入座流程异常:', err);
    }
  }
}
const leaveSeat = (roomVO: RoomVO) => {