sinake
6 天以前 1fa81f8c3c68b14e08554637eda80679f90b46ee
src/views/ecg/doctor/components/DevReadyPanel.vue
@@ -9,29 +9,44 @@
      :rules="formRules"
      label-width="100px"
      v-loading="formLoading"
    >
     <el-row>
    <el-col :span="12">
      <el-form-item label="检查项目" prop="">
        {{formData?.checkType && getCheckTypeName(formData?.checkType)}}
        {{getCheckTypeName(formData.checkType)}}
      </el-form-item>
      <el-form-item label="患者编号" prop="patId">
      </el-col>
      <el-col :span="12">
      <el-form-item label="患者编号" prop="patId" >
        <el-input v-model="formData.patId" placeholder="请输入患者编号" @input="getRentInfoByPatId" />
        <Barcode v-if="displayBarCode" :value="displayBarCode" :width=100 />
        <el-button @click="copyBarcode()">复制</el-button>
      </el-form-item>
      </el-col>
      <el-col :span="12">
      <el-form-item label="患者名称" prop="patName">
        <el-input v-model="formData.patName" placeholder="请输入患者名称" />
      </el-form-item>
     </el-col>
      <el-col :span="12">
      <el-form-item label="患者描述" prop="patDeptDesc">
        <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-col :span="12">
      <el-form-item label="设备编号" prop="devId">
        <el-input v-model="formData.devId" placeholder="请输入设备编号" @input="getDevInfo"/>
      </el-form-item>
           </el-col>
      <el-col :span="12">
      <el-form-item label="设备描述" prop="">
        {{ devInfo?.brand||'-' }} {{ devInfo?.model||'-' }} {{ tranlateDevState(devInfo?.state) }}
      </el-form-item>
           </el-col>
      <el-col :span="12">
      <el-form-item label="领用时间" prop="rentTime">
        <el-date-picker
          v-model="formData.rentTime"
@@ -40,6 +55,14 @@
          placeholder="选择领用时间"
        />
      </el-form-item>
           </el-col>
      <el-col :span="12">
       <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-row>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="formData.remark" placeholder="请输入备注" />
      </el-form-item>
@@ -51,10 +74,11 @@
        </el-radio-group>
      </el-form-item>
-->
    </el-form>
    <el-button @click="submitForm" type="primary" :disabled="formLoading">领用完成</el-button>
    <el-checkbox style="margin-left:10px" label="自动&nbsp;" v-model="autoPrint" />
    <el-button @click="printBill(formData.patId!, formData.checkType!)">打印小票</el-button>
    <el-button @click="printBill(formData.patDetails?.appointmentId)">打印小票</el-button>
    <el-button @click="cancelReady"  :disabled="formLoading">放弃领用</el-button>
    <el-button @click="resetForm()">重 置</el-button>
    <el-button v-if="needAutoFeeConfirm(formData.checkType)" @click="feeConfirm"  :disabled="formLoading">确费</el-button>
@@ -147,7 +171,7 @@
import {AppointmentApi, AppointmentVO} from "@/api/ecg/appointment";
import {useCheckTypeStore} from '@/store/modules/checkType'
import {calGender, getBookBeginTime} from "@/utils";
import {DICT_TYPE} from "@/utils/dict";
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import {tranlateDevState} from "@/utils/statusFormatter";
import {getCheckTypeName, needAutoFeeConfirm} from "../../../../utils/checkTypeFormatter";
@@ -215,6 +239,9 @@
// 根据患者或设备, 获取 Free的租赁
const getFreeRentInfo = async (devRentVO) => {
  if ((devRentVO.devId == null || devRentVO.devId === '') && (devRentVO.patId == null || devRentVO.patId === '') )
    return
  const data = await DevRentApi.getFreeRent(devRentVO)
  if (null === data)
    return
@@ -238,7 +265,7 @@
    await DevRentApi.devReady(formData.value)
    if (autoPrint.value && formData.value.patId && formData.value.checkType) {
      printBill(formData.value.patId, formData.value.checkType)
      printBill(formData.value.patDetails?.appointmentId)
    }
    // 自动确费
@@ -354,10 +381,11 @@
  devInfo.value.state = data.devState
}
const printBill = async (patId: string, checkType: number, printMode?: number) => {
const printBill = async (appointmentId: number | null | undefined, printMode?: number) => {
  if ( appointmentId == null )
    return
  const curAppointment: AppointmentVO = await AppointmentApi.getCurAppointmentByPatIdAndCheckType( patId, checkType )
  //console.info( curAppointment )
  const curAppointment: AppointmentVO = await AppointmentApi.getAppointment( appointmentId )
// 引入后使用示例
  hiprint.init({
@@ -442,33 +470,51 @@
const feeConfirm = async () => {
  if (formData.value.id == null) {
    message.error(t('请先领用'))
    message.error('请先领用')
    return
  }
  const result = await DevRentApi.feeConfirm(formData.value.id)
  if (0 === result)
    message.success(t('确费操作成功'))
 try {
    const result = await DevRentApi.feeConfirm(formData.value.id)
    if (0 === result) {
      //message.success('确费操作成功')
    }
  } catch (err) {
    // 框架 会给出 后台的 错误信息
  }
}
const feeCancel = async () => {
  if (formData.value.id == null) {
    message.error(t('请先领用'))
    message.error('请先领用')
    return
  }
  const result = await DevRentApi.feeCancel(formData.value.id)
  if (0 === result)
    message.success(t('操作成功'))
  try {
    const result = await DevRentApi.feeCancel(formData.value.id)
    if (0 === result) {
      //message.success('确费取消成功')
    }
  } catch (err) {
    // 框架 会给出 后台的 错误信息
  }
}
/**
 * 获取条形码,显示与否  同一个值
 */
const getDisplayBarcode = (): string => {
  if (formData.value.checkType == null)
    return ""
  const displayBarcode: number[] = checkTypeStore.getCheckTypeDispBarCode(formData.value.checkType!)
  if (formData.value.patDetails == null || formData.value.patDetails.source == null ||
      !displayBarcode.includes( formData.value.patDetails.source ))
  if (formData.value.patDetails?.source == null)
    return ""
  const displayBarcode: number[] = checkTypeStore.getCheckTypeDispBarCode(formData.value.checkType)
  if (displayBarcode == null || displayBarcode.length === 0)
    return ""
  if (!displayBarcode.includes( formData.value.patDetails.source ))
    return ""
  return getBarcode()
@@ -492,7 +538,12 @@
const copyBarcode = async () => {
  displayBarCode.value = getDisplayBarcode()
  await navigator.clipboard.writeText( getBarcode() );
  const barCode = getBarcode()
  if (isStringEmpty(barCode))
    return
  await navigator.clipboard.writeText( barCode );
}
/** 初始化 **/