From a986a8d6fb5e44f7044469f5f420ce0d7b5bf235 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 26 十一月 2025 11:36:02 +0800
Subject: [PATCH] 11
---
src/views/ecg/doctor/components/RoutinePanel.vue | 328 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 210 insertions(+), 118 deletions(-)
diff --git a/src/views/ecg/doctor/components/RoutinePanel.vue b/src/views/ecg/doctor/components/RoutinePanel.vue
index 2b76667..61a6a6d 100644
--- a/src/views/ecg/doctor/components/RoutinePanel.vue
+++ b/src/views/ecg/doctor/components/RoutinePanel.vue
@@ -1,85 +1,116 @@
<!-- 甯歌妫�鏌� 鍖荤敓鐣岄潰-->
<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-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="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-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-row>
- </el-form>
- <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 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-form
+ ref="formRef"
+ :model="formData"
+ :rules="formRules"
+ label-width="100px"
+ v-loading="formLoading"
+ >
+ <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="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-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-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>
+ <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()">骞虫澘杩愬姩蹇冪數鍥剧煡鎯呭悓鎰忎功</el-button>
+ <el-button @click="sgdownload()">椋熺蹇冭剰鐢电敓鐞嗚瘖鐤楃煡鎯呭悓鎰忎功</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-column label="id" align="center" prop="id" />-->
- <el-table-column label="妫�鏌ョ姸鎬�" align="center" prop="lost" >
+ <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">
<span v-if="scope.row.jobType === 60">宸叉鏌�</span>
<span v-if="scope.row.jobType === 50">宸叉斁寮�</span>
</template>
</el-table-column>
-<!-- <el-table-column label="浣滀笟绫诲瀷" align="center" prop="jobType" />-->
-<!-- <el-table-column label="鍖荤敓缂栧彿" align="center" prop="docId" />-->
+ <!-- <el-table-column label="浣滀笟绫诲瀷" align="center" prop="jobType" />-->
+ <!-- <el-table-column label="鍖荤敓缂栧彿" align="center" prop="docId" />-->
<el-table-column label="鍖荤敓鍚嶇О" align="center" prop="docName" />
-<!-- <el-table-column label="璁惧缂栧彿" align="center" prop="devId" />-->
+ <!-- <el-table-column label="璁惧缂栧彿" align="center" prop="devId" />-->
<el-table-column label="鎮h�呯紪鍙�" align="center" prop="patId" />
<el-table-column label="鎮h�呭悕绉�" align="center" prop="patName" />
<el-table-column
- label="浣滀笟鏃堕棿"
- align="center"
- prop="jobTime"
- :formatter="dateFormatter"
- width="180px"
+ label="浣滀笟鏃堕棿"
+ align="center"
+ prop="jobTime"
+ :formatter="dateFormatter"
+ width="180px"
/>
-<!-- <el-table-column label="浣滀笟姒傝" align="center" prop="summary" />-->
+ <!-- <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"
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ :formatter="dateFormatter"
+ width="180px"
/>
-<!--
+ <!--
<el-table-column label="鎿嶄綔" align="center" min-width="120px">
<template #default="scope">
<el-button
@@ -104,35 +135,40 @@
</el-table>
<!-- 鍒嗛〉 -->
<Pagination
- :total="total"
- v-model:page="queryParams.pageNo"
- v-model:limit="queryParams.pageSize"
- @pagination="getList"
+ :total="total"
+ v-model:page="queryParams.pageNo"
+ v-model:limit="queryParams.pageSize"
+ @pagination="getList"
/>
</ContentWrap>
-
</template>
<script setup lang="ts">
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+
import { DevRentApi, DevRentVO } from '@/api/ecg/devrent'
-import {dateFormatter} from "@/utils/formatTime";
-import {JobRecordApi, JobRecordVO} from "@/api/ecg/jobrecord";
-import {isStringEmpty} from "@/utils/stringUtil";
-import {curDayEnd, curDayStart} from "@/utils/dateUtil";
-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 {getCheckTypeName, needAutoFeeConfirm} from "../../../../utils/checkTypeFormatter";
+import { dateFormatter } from '@/utils/formatTime'
+import { JobRecordApi, JobRecordVO } from '@/api/ecg/jobrecord'
+import { isStringEmpty } from '@/utils/stringUtil'
+import { curDayEnd, curDayStart } from '@/utils/dateUtil'
+import { QueueVO } from '@/api/ecg/queue'
+import { RoomBedVO, DoctorApi } from '@/api/ecg/doctor'
+import { Barcode } from '@/components/Barcode'
+import { useCheckTypeStore } from '@/store/modules/checkType'
+import { getCheckTypeName, needAutoFeeConfirm } from '../../../../utils/checkTypeFormatter'
/** 璁惧瑁呮満 琛ㄥ崟 */
defineComponent({ name: 'RoutinePanel' })
-const props = defineProps({
+const props = defineProps({
room: {
type: Object as PropType<RoomBedVO>,
required: true
+ },
+ setappointmentId: {
+ type: [String, Number],
+ required: false,
+ default: null
}
})
@@ -169,16 +205,16 @@
rentTime: new Date().getTime(),
returnTime: undefined,
remark: undefined,
- paid: undefined,
+ paid: undefined
})
const formRules = reactive({
// devId: [{ required: true, message: '璁惧缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }],
- rentTime: [{ required: true, message: '璇烽�夋嫨瑁呮満鏃ユ湡', trigger: 'blur' }],
+ rentTime: [{ required: true, message: '璇烽�夋嫨瑁呮満鏃ユ湡', trigger: 'blur' }]
})
const formRef = ref() // 琛ㄥ崟 Ref
-const displayBarCode = ref<string> ()
+const displayBarCode = ref<string>()
/** 鎻愪氦琛ㄥ崟 */
const submitForm = async () => {
@@ -202,7 +238,7 @@
// 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢
emit('event_routine')
resetForm()
- getList() // 鍖荤敓浣滀笟鍘嗗彶
+ getList() // 鍖荤敓浣滀笟鍘嗗彶
} finally {
formLoading.value = false
}
@@ -229,31 +265,81 @@
}
formRef.value?.resetFields()
}
+const yddownload = async () => {
+ const response = await DoctorApi.yddownload(props.setappointmentId)
+ console.log(response, 'xml1')
+ console.log(response.fileContent, 'xml2')
+ console.log(DoctorApi.yddownload(props.setappointmentId));
+ downloadWordFile(response.fileContent, response.fileName)
+}
+const sgdownload = async () => {
+ const obj = await DoctorApi.sgdownload(props.setappointmentId)
+ downloadWordFile(obj, '椋熺蹇冭剰鐢电敓鐞嗚瘖鐤楃煡鎯呭悓鎰忎功.doc')
+}
+const downloadWordFile = (data, filename = 'document') => {
+ try {
+ // 1. 纭繚鏂囦欢鍚嶄互.doc缁撳熬
+ if (!filename.endsWith('.doc')) {
+ filename += '.doc'
+ }
+ // 2. 鍒涘缓Blob瀵硅薄锛屾寚瀹歁IME绫诲瀷涓篧ord鏂囨。[9,10](@ref)
+ // 瀵逛簬Word 2003 XML鏍煎紡锛屼娇鐢�'application/msword'
+ const blob = new Blob([data], { type: 'application/msword' })
+
+ // 3. 涓築lob瀵硅薄鍒涘缓涓�涓复鏃剁殑涓嬭浇URL[8,10](@ref)
+ const url = URL.createObjectURL(blob)
+
+ // 4. 鍒涘缓涓�涓殣钘忕殑涓嶅彲瑙佺殑<a>閾炬帴鍏冪礌[10](@ref)
+ const link = document.createElement('a')
+ link.style.display = 'none' // 闅愯棌閾炬帴
+ link.href = url
+ link.download = filename // 璁剧疆涓嬭浇鐨勬枃浠跺悕
+
+ // 5. 灏嗛摼鎺ユ坊鍔犲埌DOM涓紝妯℃嫙鐐瑰嚮锛岀劧鍚庣Щ闄ゅ畠[10](@ref)
+ document.body.appendChild(link)
+ link.click()
+ document.body.removeChild(link)
+
+ // 6. 閲婃斁URL瀵硅薄浠ラ噴鏀惧唴瀛榌9,10](@ref)
+ // 浣跨敤setTimeout纭繚涓嬭浇瑙﹀彂鍚庡啀閲婃斁
+ setTimeout(() => {
+ URL.revokeObjectURL(url)
+ }, 100)
+
+ console.log('鏂囦欢涓嬭浇宸茶Е鍙戯紒')
+ } catch (error) {
+ console.error('涓嬭浇鏂囦欢鏃跺彂鐢熼敊璇�:', error)
+ // 杩欓噷鍙互娣诲姞鏇村弸濂界殑鐢ㄦ埛閿欒鎻愮ず锛屼緥濡備娇鐢╝lert鎴栭〉闈㈠脊绐�
+ }
+}
const getRentInfoByPatId = () => {
- const tempPatId = formData.value.patId;
+ const tempPatId = formData.value.patId
resetForm()
- if (isStringEmpty(tempPatId))
- return
+ if (isStringEmpty(tempPatId)) return
- formData.value.patId = tempPatId;
+ formData.value.patId = tempPatId
getFreeRentInfo(formData.value)
copyBarcode()
}
const getFreeRentInfo = async (devRentVO) => {
- const data = await DevRentApi.getFreeRent(devRentVO)
- if (null === data)
+ if (
+ (devRentVO.devId == null || devRentVO.devId === '') &&
+ (devRentVO.patId == null || devRentVO.patId === '')
+ )
return
+
+ const data = await DevRentApi.getFreeRent(devRentVO)
+ if (null === data) return
// formDate 瀵瑰簲 DevRent
// formData.value = data //涓嶈兘鏁翠釜璧嬪�硷紝 榛樿棰嗙敤鏃堕棿琚竻绌�
- formData.value.id = data.id; //rent id
- formData.value.applyNo = data.applyNo;
- formData.value.episodeId = data.episodeId;
+ formData.value.id = data.id //rent id
+ formData.value.applyNo = data.applyNo
+ formData.value.episodeId = data.episodeId
formData.value.patDetails = data.patDetails
}
-
const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑
const list = ref<JobRecordVO[]>([]) // 鍒楄〃鐨勬暟鎹�
@@ -285,8 +371,7 @@
}
const onRowClick = (cur) => {
- if (cur !== null)
- getSelectedRent( cur.rentId )
+ if (cur !== null) getSelectedRent(cur.rentId)
}
const getSelectedRent = async (rentId) => {
@@ -313,9 +398,14 @@
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(t('纭垂鎿嶄綔鎴愬姛'))
+ }
+ } catch (err) {
+ // 妗嗘灦 浼氱粰鍑� 鍚庡彴鐨� 閿欒淇℃伅
+ }
}
const feeCancel = async () => {
@@ -324,42 +414,45 @@
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(t('纭垂鍙栨秷鎴愬姛'))
+ }
+ } catch (err) {
+ // 妗嗘灦 浼氱粰鍑� 鍚庡彴鐨� 閿欒淇℃伅
+ }
}
const getDisplayBarcode = (): string => {
- if (formData.value.checkType == null)
- return ""
+ 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 ))
- return ""
+ 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 == null)
- return ""
+ if (formData.value.checkType == null) return ''
const patSource = formData.value.patDetails?.source
- if (patSource == null)
- return ""
+ if (patSource == null) return ''
- if (1 === patSource || 2 === patSource)
- return formData.value.applyNo??""
- else if (3 === patSource || 4 === patSource)
- return formData.value.episodeId??""
+ if (1 === patSource || 2 === patSource) return formData.value.applyNo ?? ''
+ else if (3 === patSource || 4 === patSource) return formData.value.episodeId ?? ''
- return ""
+ return ''
}
const copyBarcode = async () => {
displayBarCode.value = getDisplayBarcode()
- await navigator.clipboard.writeText( getBarcode() );
+ await navigator.clipboard.writeText(getBarcode())
}
/** 鍒濆鍖� **/
@@ -367,5 +460,4 @@
resetForm()
getList()
})
-
</script>
--
Gitblit v1.9.3