123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <template>
- <el-button @click="daYing">打印</el-button>
- <el-button @click="copyClick" v-if="props.laiYuan===2">复制会诊结果</el-button>
- <div class="main-info-parent" style="padding: 0 20px; overflow: hidden">
- <div id="huiZhenXinXiDaYin">
- <h1 style="text-align: center; font-size: 30px">长沙泰和医院</h1>
- <h4 style="text-align: center; font-size: 17px; margin-top: 0">会 诊 记 录 单</h4>
- <div class="divHuanZheXinXi">
- <div class="huanZheXinXi" style="margin-left: 20px">住院号:{{ huanZheXinXi.inpatientNo }}</div>
- <div class="huanZheXinXi" style="margin-left: 25px">姓名:{{ huanZheXinXi.name }}</div>
- <div class="huanZheXinXi">性别:{{ cptSex(huanZheXinXi.sex) }}</div>
- <div class="huanZheXinXi" style="width: 90px">年龄:{{ huanZheXinXi.age }}</div>
- <div class="huanZheXinXi" style="width: 140px">科室:{{ huanZheXinXi.deptCodeName }}</div>
- <div class="huanZheXinXi">床号:{{ huanZheXinXi.bedNo }}</div>
- </div>
- <div class="huiZhenBody">
- <div>
- <div>
- 请
- <div class="reqDept">{{ huanZheXinXi.reqDept1Name }}</div>
- 会诊
- <div class="huiZhenJiBie">会诊类别:{{ hzLeiBie(huanZheXinXi.hzType) }}</div>
- </div>
- </div>
- <!-- 病情简介 -->
- <div class="zhenDuanBianJu">
- 病情简介 <br/>
- <textarea v-model="huanZheXinXi.reqComment" class="zhenDuanTextarea" readonly="value"
- style="height: 154px"></textarea>
- </div>
- <!-- 目前主要诊断 -->
- <div class="zhenDuanBianJu">
- 目前主要诊断 <br/>
- <textarea v-model="huanZheXinXi.hzZd" class="zhenDuanTextarea" readonly style="height: 50px"></textarea>
- </div>
- <!-- 会诊目的 -->
- <div class="zhenDuanBianJu">
- 会诊目的 <br/>
- <textarea v-model="huanZheXinXi.hzMd" class="zhenDuanTextarea" readonly style="height: 50px"></textarea>
- </div>
- <div class="qingQiuHuiZhenXinXi">
- <div class="div1">请求会诊科室:{{ huanZheXinXi.deptCodeName }}</div>
- <div class="div2">会诊申请医师:{{ huanZheXinXi.reqDoctor }}</div>
- <div>申请时间:{{ huanZheXinXi.reqDate }}</div>
- </div>
- </div>
- <!-- 会诊意见 -->
- <div class="huiZhenBody">
- <!-- 会诊意见 -->
- <div class="zhenDuanBianJu">
- 会诊意见
- <br/>
- <textarea
- v-model="huanZheXinXi.hzComment"
- :readonly="laiYuan === 2 ? 'readonly' : false"
- autoHeight="true"
- class="zhenDuanTextarea"
- maxlength="1100"
- onkeydown="if(event.keyCode === 13)event.returnValue = false;"
- style="height: 329px"
- >
- </textarea>
- </div>
- <div class="qingQiuHuiZhenXinXi">
- <div class="div1">会诊科室:{{ huanZheXinXi.reqDept1Name }}</div>
- <div class="div2">
- 医师:{{ props.laiYuan === 2 ? huanZheXinXi.hzDoctor2Name : store.state.user.info.name }}
- </div>
- <div>会诊时间:{{ huanZheXinXi.hzDate }}</div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script setup name="JieShouHuiZhenDaYing">
- import store from '@/store'
- import {cptSex} from '@/utils/computed'
- import '@/css/hui-zhen-ji-lv-dan.css'
- import {computed, onMounted} from 'vue'
- import {getLodop, initLodop} from '@/utils/c-lodop'
- import {huiZhenJiLvDanCss} from '@/data/css-for-print'
- import {getServerDateApi} from '@/api/public-api'
- import {BizException, ExceptionEnum} from "@/utils/BizException";
- import {
- copyEnum, delEmrCopy,
- getEmrCopy,
- setEmrCopy
- } from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
- import {xcMessage} from "@/utils/xiaochan-element-plus";
- const props = defineProps({
- laiYuan: {
- type: Number,
- default: 1,
- },
- })
- const emit = defineEmits(['fanHuiXinXi'])
- const windowSize = computed(() => {
- return store.state.app.windowSize
- })
- /**
- * 患者信息
- * @type {Ref<UnwrapRef<{}>>}
- */
- const huanZheXinXi = ref({})
- function shiJian() {
- if (props.laiYuan === 1) {
- getServerDateApi().then((res) => {
- huanZheXinXi.value.hzDate = res
- })
- }
- }
- const huiZhenXinXiXiangQing = (val) => {
- shiJian()
- huanZheXinXi.value = val
- }
- const daYing = () => {
- shiJian()
- setTimeout(() => {
- // 在vue 中使用 v-model 绑定的 都需要 这样不然没有数据
- const allTextArea = document.body.getElementsByTagName('textarea')
- const textInput = document.body.getElementsByTagName('input')
- for (let i = 0; i < textInput.length; i++) {
- textInput[i].setAttribute('value', textInput[i].value)
- }
- for (let i = 0; i < allTextArea.length; i++) {
- allTextArea[i].innerText = allTextArea[i].value
- }
- // A4: 210毫米 × 297毫米 = 793.70px * 1122.52px
- let LODOP = getLodop()
- // 导入css样式,以及 内容
- const strFormHtml = huiZhenJiLvDanCss + '<body>' + document.getElementById('huiZhenXinXiDaYin').innerHTML + '</body>'
- LODOP.PRINT_INIT('会诊记录单') // 初始化打印机 名字
- LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '') // 设置纸张大小 A4
- LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
- LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', strFormHtml) //要打印的内容
- LODOP.SET_PRINT_STYLE('ItemType', 3) //设置对象风格
- LODOP.ADD_PRINT_TEXT('290mm', '190mm', '20mm', '2mm', '第#页/共&页') //增加纯文本项
- LODOP.PREVIEW() // 关闭
- }, 100)
- }
- const copyClick = () => {
- if (!huanZheXinXi.value.inpatientNo) {
- BizException(ExceptionEnum.MESSAGE_ERROR, "请先获取患者信息。")
- }
- let temp = huanZheXinXi.value
- let data = {
- '会诊科室': [
- {code: temp.reqDept1, name: temp.reqDept1Name}
- ],
- '会诊医生': [
- {code: temp.hzDoctor2, name: temp.hzDoctor2Name}
- ],
- '会诊意见': temp.hzComment,
- '编辑者': [
- {code: store.state.user.info.code, name: store.state.user.info.name}
- ]
- }
- setEmrCopy(copyEnum.会诊, data)
- xcMessage.success('复制成功。')
- }
- const fanHuiXinXi = () => {
- emit('fanHuiXinXi', {huanZheXinXi})
- }
- onMounted(() => {
- initLodop()
- })
- defineExpose({
- huiZhenXinXiXiangQing
- })
- function hzLeiBie(val) {
- switch (val) {
- case '1':
- return '常规会诊'
- case '2':
- return '疑难病例会诊'
- case '3':
- return '急救会诊'
- }
- }
- </script>
- <style scoped></style>
|