From 49206ee0689d44367b9f5de3decf0c3ec02bfb51 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 15 四月 2025 10:56:18 +0800 Subject: [PATCH] update --- src/views/ecg/doctor/components/DevInstallPanel.vue | 209 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 155 insertions(+), 54 deletions(-) diff --git a/src/views/ecg/doctor/components/DevInstallPanel.vue b/src/views/ecg/doctor/components/DevInstallPanel.vue index 442d30e..9dc5525 100644 --- a/src/views/ecg/doctor/components/DevInstallPanel.vue +++ b/src/views/ecg/doctor/components/DevInstallPanel.vue @@ -6,16 +6,23 @@ label-width="100px" v-loading="formLoading" > + <el-form-item label="妫�鏌ラ」鐩�" prop=""> + {{formData?.checkType && getCheckTypeName(formData?.checkType)}} + </el-form-item> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="鎮h�呯紪鍙�" 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 />--> + <Barcode v-if="displayBarCode" :value="displayBarCode" :width=100 /> + <el-button @click="copyBarcode()">澶嶅埗</el-button> </el-form-item> <el-form-item label="鎮h�呭悕绉�" prop="patName"> <el-input v-model="formData.patName" placeholder="璇疯緭鍏ユ偅鑰呭悕绉�" /> </el-form-item> - <el-form-item label="鎮h�呮弿杩�" prop="patDeptDesc"> - 绉戝: {{formData.patDeptDesc}} 鐥呭尯: {{formData.patWardDesc}} 搴婁綅: {{formData.patBedNo}} + <el-form-item label="鎮h�呮弿杩�" prop="patDetails"> + <dict-tag :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 @@ -31,9 +38,7 @@ <el-input v-model="formData.devId" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" @input="getDevInfo"/> </el-form-item> <el-form-item label="璁惧鎻忚堪" prop=""> - <span v-if="formData.brand !== null"> {{formData.brand}} </span> - {{" "}} - <span v-if="formData.model !== null"> {{formData.model}} </span> + {{devInfo?.brand || '-'}} {{devInfo?.model || '-' }} {{tranlateDevState(devInfo?.state)}} </el-form-item> <el-form-item label="澶囨敞" prop="remark"> <el-input v-model="formData.remark" placeholder="璇疯緭鍏ュ娉�" /> @@ -77,7 +82,7 @@ :formatter="dateFormatter" width="180px" /> - <el-table-column label="鎿嶄綔" align="center" min-width="120px"> +<!-- <el-table-column label="鎿嶄綔" align="center" min-width="120px"> <template #default="scope"> <el-button link @@ -96,7 +101,7 @@ 鍒犻櫎 </el-button> </template> - </el-table-column> + </el-table-column>--> </el-table> <!-- 鍒嗛〉 --> <Pagination @@ -115,27 +120,78 @@ import {JobRecordApi, JobRecordVO} from "@/api/ecg/jobrecord"; import {isStringEmpty} from "@/utils/stringUtil"; import {curDayEnd, curDayStart} from "@/utils/dateUtil"; -import {DeviceApi} from "@/api/ecg/devmanage"; +import {DeviceApi, DeviceVO} from "@/api/ecg/devmanage"; +import {QueueVO} from "@/api/ecg/queue"; +import {RoomBedVO} from "@/api/ecg/doctor"; +import {Barcode} from "@/components/Barcode"; +import {useCheckTypeStore} from "@/store/modules/checkType"; +import {DICT_TYPE} from "@/utils/dict"; +import {tranlateDevState} from "../../../../utils/statusFormatter"; +import {getCheckTypeName} from "../../../../utils/checkTypeFormatter"; -/** 瑁呮満 琛ㄥ崟 */ -defineOptions({ name: 'DevrInstall' }) +/** 璁惧瑁呮満 琛ㄥ崟 */ +defineComponent({ name: 'DevInstallPanel' }) -const emit = defineEmits(['event_dev_install']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� +const props = defineProps({ + room: { + type: Object as PropType<RoomBedVO>, + required: true + } +}) const { t } = useI18n() // 鍥介檯鍖� const message = useMessage() // 娑堟伅寮圭獥 const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀� +const formRef = ref() // 琛ㄥ崟 Ref + +const displayBarCode = ref<string> () + const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤 -const formData = ref({}) +const formData = ref<Partial<DevRentVO>>({ + applyNo: undefined, + episodeId: undefined, + patId: '', + patName: '', + rentTime: new Date().getTime(), + devId: '', + remark: '', + checkType: undefined, +}) + +const devInfo = ref<Partial<DeviceVO>>({ + category: undefined, + brand: undefined, + model: undefined, + state: undefined, +}) const formRules = reactive({ - // devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], rentTime: [{ required: true, message: '璇烽�夋嫨瑁呮満鏃ユ湡', trigger: 'blur' }], + patId: [{ required: true, message: '鎮h�呬笉鑳戒负绌�', trigger: 'blur' }], + patName: [{ required: true, message: '鎮h�呭悕涓嶈兘涓虹┖', trigger: 'blur' }] }) -const formRef = ref() // 琛ㄥ崟 Ref + + +const emit = defineEmits(['event_dev_install']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� + +const checkTypeStore = useCheckTypeStore() + +const setPatient = (queueVO: QueueVO | undefined) => { + resetForm() + formData.value.applyNo = queueVO?.applyNo + formData.value.episodeId = queueVO?.episodeId + formData.value.patId = queueVO?.patId + formData.value.patName = queueVO?.patName + formData.value.checkType = queueVO?.bookCheckType + getReadyRentInfo(formData.value) + copyBarcode() +} +defineExpose({ setPatient }) // 鎻愪緵 setPatient 鏂规硶锛岀敤浜庤缃偅鑰� + /** 鎻愪氦琛ㄥ崟 */ const submitForm = async () => { @@ -144,8 +200,12 @@ // 鎻愪氦璇锋眰 formLoading.value = true try { + if (null == formData.value) + return + + formData.value.roomId = props.room.roomId + formData.value.bedNo = props.room.bedNo const data = formData.value as unknown as DevRentVO - //await DevRentApi.updateDevRent(data) await DevRentApi.devInstall(data) message.success(t('鎿嶄綔鎴愬姛')) dialogVisible.value = false @@ -165,71 +225,70 @@ devId: undefined, patId: undefined, patName: undefined, - patDeptCode: undefined, - patDeptDesc: undefined, - patWardCode: undefined, - patWardDesc: undefined, - patBedNo: undefined, rentTime: new Date().getTime(), returnTime: undefined, interference: undefined, baseline: undefined, detachment: undefined, remark: undefined, - category: '', - brand: '', - model: '', + checkType: undefined, } formRef.value?.resetFields() + devInfo.value = { + category: undefined, + brand: undefined, + model: undefined, + state: undefined, + } } const getDevInfo = async () => { - if (isStringEmpty(formData.value.devId)) { - formData.value.category = "" - formData.value.brand = "" - formData.value.model = "" + if (formData.value?.devId == null) { + devInfo.value.brand = undefined + devInfo.value.model = undefined + devInfo.value.state = undefined return } - const data = await DeviceApi.getDeviceByDevId(formData.value.devId!) - console.info( data ) - formData.value.category = data === null ? "" : data.category - formData.value.brand = data === null ? "" : data.brand - formData.value.model = data === null ? "" : data.model + const data = await DeviceApi.getDeviceByDevId(formData.value?.devId) + if ( null !== data) + devInfo.value = data } - -/* -const getRentInfoByDevId = () => { - const tempDevId = formData.value.devId; - resetForm() - if (isStringEmpty(tempDevId)) - return - - formData.value.devId = tempDevId; - getRentInfo() -} -*/ const getRentInfoByPatId = () => { - const tempPatId = formData.value.patId; + if (null == formData.value?.patId) + return; + + const tempPatId = formData.value?.patId; resetForm() if (isStringEmpty(tempPatId)) return formData.value.patId = tempPatId; - getRentInfo() + getReadyRentInfo(formData.value) + copyBarcode() } -const getRentInfo = async () => { - const data = await DevRentApi.getReadyRent(formData.value) - if (null === data) +// 鑾峰彇鎮h�呯殑棰嗙敤淇℃伅 +const getReadyRentInfo = async (devRentVO) => { + const data = await DevRentApi.getReadyRent(devRentVO) + if ( data == null) return - formData.value = data - if (data.returnTime === null) - data.returnTime = new Date().getTime() -} + formData.value = data //涓嶈兘鏁翠釜璧嬪�硷紝 榛樿瑁呮満鏃堕棿琚竻绌� + if (formData.value == null) + return + // 榛樿瑁呮満鏃堕棿 閲囩敤褰撳墠鏃ユ湡 + formData.value.rentTime = new Date().getTime() + + // 璁╁尰鐢熸墜鍔ㄨ緭鍏ワ紝閬垮厤鍑洪敊 + formData.value.devId = '' + devInfo.value.category = undefined + devInfo.value.brand = undefined + devInfo.value.model = undefined + devInfo.value.state = undefined +} const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑 const list = ref<JobRecordVO[]>([]) // 鍒楄〃鐨勬暟鎹� @@ -266,10 +325,19 @@ } const getSelectedRent = async (rentId) => { - formData.value = await DevRentApi.getDevRent(rentId) + const data = await DevRentApi.getDevRent(rentId) + + formData.value = data + + devInfo.value.category = data.category + devInfo.value.brand = data.brand + devInfo.value.model = data.model + devInfo.value.state = data.devState } const cancelInstall = async () => { + formData.value.roomId = props.room.roomId + formData.value.bedNo = props.room.bedNo const data = formData.value as unknown as DevRentVO if (formData.value.id === null || formData.value.id === undefined) { const result = await DevRentApi.devInstallCancel(data) @@ -285,6 +353,39 @@ getList() } +const getDisplayBarcode = (): string => { + if (!formData.value.checkType) + 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 )) + return "" + + return getBarcode() +} + +const getBarcode = (): string => { + if (!formData.value.checkType) + return "" + + const patSource = formData.value.patDetails?.source + if (patSource == null) + return "" + + if (1 === patSource || 2 === patSource) + return formData.value.applyNo??"" + else if (3 === patSource || 4 === patSource) + return formData.value.episodeId??"" + + return "" +} + +const copyBarcode = async () => { + displayBarCode.value = getDisplayBarcode() + await navigator.clipboard.writeText( getBarcode() ); +} + /** 鍒濆鍖� **/ onMounted(() => { resetForm() -- Gitblit v1.9.3