|  |  | 
 |  |  |       v-loading="formLoading" | 
 |  |  |     > | 
 |  |  |       <el-form-item label="检查项目" prop=""> | 
 |  |  |         {{formData?.checkType && checkTypeStore.getCheckTypeName(formData?.checkType)}} | 
 |  |  |         {{formData?.checkType && getCheckTypeName(formData?.checkType)}} | 
 |  |  |       </el-form-item> | 
 |  |  |       <el-form-item label="患者编号" prop="patId"> | 
 |  |  |         <el-input v-model="formData.patId" placeholder="请输入患者编号" @input="getRentInfoByPatId" /> | 
 |  |  | 
 |  |  |     <el-button @click="submitForm" type="primary" :disabled="formLoading">领用完成</el-button> | 
 |  |  |     <el-checkbox style="margin-left:10px" label="自动 " v-model="autoPrint" /> | 
 |  |  |     <el-button @click="printBill(formData.patId!, formData.checkType!)">打印小票</el-button> | 
 |  |  |     <el-button @click="printBill(formData.patId!, formData.checkType!, 8)">打印小票2</el-button> | 
 |  |  |     <el-button @click="cancelReady"  :disabled="formLoading">放弃领用</el-button> | 
 |  |  |     <el-button @click="resetForm()">重 置</el-button> | 
 |  |  |     <el-button v-if="formData.checkType && checkTypeStore.getExpenseRecognition(formData.checkType)" @click="feeConfirm"  :disabled="formLoading">确费</el-button> | 
 |  |  |     <el-button v-if="formData.checkType && checkTypeStore.getExpenseRecognition(formData.checkType)" @click="feeCancel"  :disabled="formLoading">取消确费</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> | 
 |  |  | 
 |  |  | import {calGender, getBookBeginTime} from "@/utils"; | 
 |  |  | import {DICT_TYPE} from "@/utils/dict"; | 
 |  |  | import {tranlateDevState} from "@/utils/statusFormatter"; | 
 |  |  | import {getCheckTypeName, needAutoFeeConfirm} from "../../../../utils/checkTypeFormatter"; | 
 |  |  |  | 
 |  |  | /** 设备领用 表单 */ | 
 |  |  | defineComponent({ name: 'DevReadyPanel' }) | 
 |  |  | 
 |  |  | const { t } = useI18n() // 国际化 | 
 |  |  | const message = useMessage() // 消息弹窗 | 
 |  |  |  | 
 |  |  | const dialogVisible = ref(false) // 弹窗的是否展示 | 
 |  |  |  | 
 |  |  | const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 | 
 |  |  |  | 
 |  |  | const autoPrint = ref<boolean>(true); | 
 |  |  | 
 |  |  |  | 
 |  |  | const formData = ref<DevRentVO>({ | 
 |  |  |   id: undefined, | 
 |  |  |   applyNo: undefined, | 
 |  |  |   episodeId: undefined, | 
 |  |  |   devId: undefined, | 
 |  |  |   patId: undefined, | 
 |  |  |   patName: undefined, | 
 |  |  | 
 |  |  |   checkType: undefined, | 
 |  |  |   rentTime: new Date().getTime(), | 
 |  |  |   returnTime: undefined, | 
 |  |  |   interference: undefined, | 
 |  |  |   baseline: undefined, | 
 |  |  |   detachment: undefined, | 
 |  |  |   remark: undefined, | 
 |  |  |   paid: undefined, | 
 |  |  |   roomId: props.room.roomId, | 
 |  |  |   bedNo: props.room.bedNo | 
 |  |  | }) | 
 |  |  |  | 
 |  |  | const formRules = reactive({ | 
 |  |  | 
 |  |  |   try { | 
 |  |  |     formData.value.roomId = props.room.roomId | 
 |  |  |     formData.value.bedNo = props.room.bedNo | 
 |  |  |     const data = formData.value | 
 |  |  |     console.info( data ) | 
 |  |  |     await DevRentApi.devReady(formData.value) | 
 |  |  |  | 
 |  |  |     await DevRentApi.devReady(data) | 
 |  |  |     if (autoPrint.value && formData.value.patId && formData.value.checkType) { | 
 |  |  |       printBill(formData.value.patId, formData.value.checkType) | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     if (autoPrint.value && data.patId && data.checkType) | 
 |  |  |       printBill( data.patId, data.checkType) | 
 |  |  |     // 自动确费 | 
 |  |  |     if (needAutoFeeConfirm(formData.value.checkType)) { | 
 |  |  |       feeConfirm() | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     dialogVisible.value = false | 
 |  |  |     // 发送操作成功的事件 | 
 |  |  |     emit('event_dev_ready') | 
 |  |  |     resetForm() | 
 |  |  |     getList() | 
 |  |  |  | 
 |  |  |     // 发送操作成功的事件 | 
 |  |  |     emit('event_dev_ready') | 
 |  |  |     message.success(t('操作完成')) | 
 |  |  |   } finally { | 
 |  |  |     formLoading.value = false | 
 |  |  | 
 |  |  | /** 重置表单 */ | 
 |  |  | const resetForm = () => { | 
 |  |  |   formData.value = { | 
 |  |  |     id: undefined, | 
 |  |  |     applyNo: undefined, | 
 |  |  |     episodeId: undefined, | 
 |  |  |     devId: undefined, | 
 |  |  |     patId: undefined, | 
 |  |  |     patName: undefined, | 
 |  |  |     checkType: undefined, | 
 |  |  |     rentTime: new Date().getTime(), | 
 |  |  |     returnTime: undefined, | 
 |  |  |     interference: undefined, | 
 |  |  |     baseline: undefined, | 
 |  |  |     detachment: undefined, | 
 |  |  |     remark: undefined, | 
 |  |  |     patDetails: undefined, | 
 |  |  |     paid: undefined, | 
 |  |  |     roomId: props.room.roomId, | 
 |  |  |     bedNo: props.room.bedNo | 
 |  |  |   } | 
 |  |  |   formRef.value?.resetFields() | 
 |  |  |  | 
 |  |  | 
 |  |  |   formData.value.patId = queueVO?.patId | 
 |  |  |   formData.value.patName = queueVO?.patName | 
 |  |  |   formData.value.checkType = queueVO?.bookCheckType | 
 |  |  |   getFreeRentInfo(formData.value) | 
 |  |  |   getFreeRentInfo(formData.value)  // 待检查的信息  @ dev_rent 表 | 
 |  |  |   copyBarcode() | 
 |  |  | } | 
 |  |  | defineExpose({ setPatient }) // 提供 setPatient 方法,用于设置患者 | 
 |  |  | 
 |  |  | const printBill = async (patId: string, checkType: number, printMode?: number) => { | 
 |  |  |  | 
 |  |  |   const curAppointment: AppointmentVO = await AppointmentApi.getCurAppointmentByPatIdAndCheckType( patId, checkType ) | 
 |  |  |   console.info( curAppointment ) | 
 |  |  |   //console.info( curAppointment ) | 
 |  |  |  | 
 |  |  | // 引入后使用示例 | 
 |  |  |   hiprint.init({ | 
 |  |  | 
 |  |  |   //var panel = hiprintTemplate.addPrintPanel({ width: 100, height: 130, paperFooter: 340, paperHeader: 10 }); 导致走三页 | 
 |  |  |   var panel = hiprintTemplate.addPrintPanel({ width: 140, height: 130, paperNumberDisabled:true}); | 
 |  |  | //文本 | 
 |  |  |   const checkTypeName = checkTypeStore.getCheckTypeName(curAppointment.bookCheckType) | 
 |  |  |   const checkTypeName = getCheckTypeName(curAppointment.bookCheckType) | 
 |  |  |   panel.addPrintText({ options: { width: 140, height: 12, top: 2, left: 20, title: checkTypeName, textAlign: 'center', fontSize: 10, fontFamily: '微软雅黑',  fontWeight: '700', } }); | 
 |  |  |   const patientBaisc = curAppointment.patName + "  " + calGender(curAppointment.patGender) + "  " + calculateAge(curAppointment.patBirthday) + "岁" | 
 |  |  |   panel.addPrintText({ options: { width: 140, height: 12, top: 16, left: 20, title: patientBaisc, textAlign: 'center' , fontSize: 10, fontFamily: '微软雅黑',  fontWeight: '700', } }); | 
 |  |  | 
 |  |  |   panel.addPrintText({ options: { width: 140, height: 22, top: 86, left: 20, title: curAppointment.episodeId, textType: 'barcode' } }); | 
 |  |  |  | 
 |  |  | //打印 | 
 |  |  |   if (undefined === printMode) | 
 |  |  |     hiprintTemplate.print2([{},{},{}]); // 可以传 [定位参数]  http://https://ccsimple.github.io/sv-print-docs/config/template.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%BE%E8%AE%A1%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B | 
 |  |  |   if (printMode == null) | 
 |  |  |     hiprintTemplate.print2([{},{},{}]); // 预览方式 可以传 [定位参数]  http://https://ccsimple.github.io/sv-print-docs/config/template.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%BE%E8%AE%A1%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B | 
 |  |  |   else | 
 |  |  |     hiprintTemplate.print([{},{},{}]); | 
 |  |  | } | 
 |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const feeConfirm = async () => { | 
 |  |  |   if (formData.value?.id === undefined) { | 
 |  |  |   if (formData.value.id == null) { | 
 |  |  |     message.error(t('请先领用')) | 
 |  |  |     return | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   const result = await DevRentApi.feeConfirm(formData.value.id) | 
 |  |  |   if (0 == result) | 
 |  |  |   if (0 === result) | 
 |  |  |     message.success(t('确费操作成功')) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const feeCancel = async () => { | 
 |  |  |   if (formData.value?.id === undefined) { | 
 |  |  |   if (formData.value.id == null) { | 
 |  |  |     message.error(t('请先领用')) | 
 |  |  |     return | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   const result = await DevRentApi.feeCancel(formData.value.id) | 
 |  |  |   if (0 == result) | 
 |  |  |   if (0 === result) | 
 |  |  |     message.success(t('操作成功')) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const getDisplayBarcode = (): string => { | 
 |  |  |   if (!formData.value.checkType) | 
 |  |  |   if (formData.value.checkType == null) | 
 |  |  |     return "" | 
 |  |  |  | 
 |  |  |   const displayBarcode: number[] = checkTypeStore.getCheckTypeDispBarCode(formData.value.checkType!) | 
 |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const getBarcode = (): string => { | 
 |  |  |   if (!formData.value.checkType) | 
 |  |  |   if (formData.value.checkType == null) | 
 |  |  |     return "" | 
 |  |  |  | 
 |  |  |   const patSource = formData.value.patDetails?.source |