eight
2024-09-06 438d1b156d1eb038bb54ad92cb12a6bf28889011
拆装机功能
已添加1个文件
已修改2个文件
171 ■■■■■ 文件已修改
src/views/ecg/appointment/AppointmentConfirm.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/components/DevRentPanel.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/index.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/appointment/AppointmentConfirm.vue
@@ -179,7 +179,6 @@
    message.info(data)
}
/** é‡ç½®è¡¨å• */
const resetForm = () => {
  formData.value = {
src/views/ecg/doctor/components/DevRentPanel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,147 @@
<template>
  å½“前患者: {{patient.patId}} {{patient.patName}}
    <el-form
      ref="formRef"
      :model="formData"
      :rules="formRules"
      label-width="100px"
      v-loading="formLoading"
    >
      <el-form-item label="设备编号" prop="devId">
        <el-input v-model="formData.devId" placeholder="请输入设备编号" />
      </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-form-item label="拆机时间" prop="returnTime">
        <el-date-picker
          v-model="formData.returnTime"
          type="date"
          value-format="x"
          placeholder="选择拆机时间"
        />
      </el-form-item>
      <el-form-item label="干扰数" prop="interference">
        <el-input v-model="formData.interference" placeholder="请输入干扰数" />
      </el-form-item>
      <el-form-item label="基线粗" prop="baseline">
        <el-input v-model="formData.baseline" placeholder="请输入基线粗" />
      </el-form-item>
      <el-form-item label="脱离" prop="detachment">
        <el-input v-model="formData.detachment" placeholder="请输入脱离" />
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="formData.remark" placeholder="请输入备注" />
      </el-form-item>
    </el-form>
    <el-button @click="submitForm" type="primary" :disabled="formLoading">ç¡® å®š</el-button>
    <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
</template>
<script setup lang="ts">
import {defineComponent, PropType} from "vue";
import { DevRentApi, DevRentVO } from '@/api/ecg/devrent'
import {QueueVO} from "@/api/ecg/queue";
/** è£…机拆机 è¡¨å• */
defineComponent({ name: 'DevRentPanel' })
const emit = defineEmits(['success']) // å®šä¹‰ success äº‹ä»¶ï¼Œç”¨äºŽæ“ä½œæˆåŠŸåŽçš„å›žè°ƒ
const  props = defineProps({
  patient: {
    type: Object as PropType<QueueVO>,
    required: true
  }
})
const { t } = useI18n() // å›½é™…化
const message = useMessage() // æ¶ˆæ¯å¼¹çª—
const dialogVisible = ref(false) // å¼¹çª—的是否展示
const formLoading = ref(false) // è¡¨å•的加载中:1)修改时的数据加载;2)提交的按钮禁用
const formType = ref('create') // è¡¨å•的类型:create - æ–°å¢žï¼›update - ä¿®æ”¹
const formData = ref({
  id: undefined,
  devId: undefined,
  patId: props.patient.patId,
  patName: props.patient.patName,
  rentTime: undefined,
  returnTime: undefined,
  interference: undefined,
  baseline: undefined,
  detachment: undefined,
  remark: undefined
})
const formRules = reactive({
  devId: [{ required: true, message: '设备编号不能为空', trigger: 'blur' }],
  patId: [{ required: true, message: '患者编号不能为空', trigger: 'blur' }],
  patName: [{ required: true, message: '患者名称不能为空', trigger: 'blur' }]
})
const formRef = ref() // è¡¨å• Ref
/** æ‰“开弹窗 */
const open = async (type: string, id?: number) => {
  dialogVisible.value = true
  formType.value = type
  resetForm()
  // ä¿®æ”¹æ—¶ï¼Œè®¾ç½®æ•°æ®
  if (id) {
    formLoading.value = true
    try {
      formData.value = await DevRentApi.getDevRent(id)
    } finally {
      formLoading.value = false
    }
  }
}
defineExpose({ open }) // æä¾› open æ–¹æ³•,用于打开弹窗
/** æäº¤è¡¨å• */
const submitForm = async () => {
  // æ ¡éªŒè¡¨å•
  await formRef.value.validate()
  // æäº¤è¯·æ±‚
  formLoading.value = true
  try {
    const data = formData.value as unknown as DevRentVO
    data.patId = props.patient.patId
    data.patName = props.patient.patName
    if (formType.value === 'create') {
      await DevRentApi.createDevRent(data)
      message.success(t('common.createSuccess'))
    } else {
      await DevRentApi.updateDevRent(data)
      message.success(t('common.updateSuccess'))
    }
    dialogVisible.value = false
    // å‘送操作成功的事件
    emit('success')
  } finally {
    formLoading.value = false
  }
}
/** é‡ç½®è¡¨å• */
const resetForm = () => {
  formData.value = {
    id: undefined,
    devId: undefined,
    patId: undefined,
    patName: undefined,
    rentTime: undefined,
    returnTime: undefined,
    interference: undefined,
    baseline: undefined,
    detachment: undefined,
    remark: undefined
  }
  formRef.value?.resetFields()
}
</script>
src/views/ecg/doctor/index.vue
@@ -5,6 +5,7 @@
import {useUserStore} from "@/store/modules/user";
import {QueueVO} from "@/api/ecg/queue";
import {ElNotification} from "element-plus";
import DevRentPanel from "@/views/ecg/doctor/components/DevRentPanel.vue";
const userStore = useUserStore();
@@ -13,6 +14,11 @@
    roomName: null,
    bedNo: null
}
const onStagePatient = ref<QueueVO>({
  bedNo: "", bookCheckType: 0, bookTimeslot: 0, expired: 0, id: 0, jumpFlag: 0, passed: 0,
  patGender: 0, patId: "1", patName: "OKK", roomId: 0, roomName: "", seqNum: 0, status: 0
})
const patientStat = ref<PatientStatisticVO>({
    finishedNum: 0,
@@ -50,6 +56,14 @@
  }
}
const getOnstagePatient = () => {
  const tempPatient : QueueVO | undefined = patientList.value.find(item => item.status === 30)
  if (tempPatient !== undefined) {
    onStagePatient.value= tempPatient
    //onStagePatient.value.patName = tempPatient.patName
  }
}
const initLoad = async () => {
  if (roomBedVO.roomId == null) {
    ElNotification.error({
@@ -61,6 +75,7 @@
  }
  patientList.value = await DoctorApi.getPatientList(roomBedVO)
  getOnstagePatient()
  patientStat.value = await DoctorApi.getPatientStatistic(roomBedVO)
  const queueVO2 = await DoctorApi.bedDoctorGet(roomBedVO)
  if (queueVO2.status === 20)
@@ -85,7 +100,7 @@
}
const doctorTimer = () => {
  console.log('doctor ...')
  console.log('doctorTimer ...')
  initLoad()
  if (timerRunFlag)
    setTimeout(doctorTimer, 5000) // five seconds
@@ -119,6 +134,10 @@
  timerRunFlag = false
})
const onEvent = () => {
  console.info("onDevRentPanelEvent...")
}
</script>
<template>
@@ -128,7 +147,7 @@
    </el-header>
    <el-container>
      <el-main>
        è£…机界面
        <DevRentPanel :patient="onStagePatient"  @success="onEvent"/>
      </el-main>
      <el-aside width="300px" style="background-color: var(--el-color-primary-light-7);">
        <QueuePanel :queue="patientList"/>