提交merge1.3

This commit is contained in:
2025-12-27 15:30:25 +08:00
parent 8c607c8749
commit 088861f66e
1245 changed files with 220442 additions and 77616 deletions

View File

@@ -0,0 +1,725 @@
<template>
<div style="padding: 20px; max-width: 1200px; margin: 0 auto" ref="bodyRef">
<!-- 标题区域 - 居中加粗增加层次感 -->
<div style="text-align: center; margin-bottom: 30px">
<div style="font-size: 22px; color: #333; letter-spacing: 1px">长春市朝阳区中医院</div>
<div
style="
font-size: 32px;
font-weight: 700;
color: #222;
padding: 12px 0;
border-bottom: 2px solid #333;
display: inline-block;
"
>
入院记录
</div>
<div style="margin-top: 8px; font-size: 14px; color: #666"> 1 1 </div>
</div>
<!-- 基本信息模块 - 卡片式布局优化间距和对齐 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
基本信息
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 18px;
"
>
<!-- 第一列 -->
<div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>姓名</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.patientName
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>性别</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.gender
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>民族</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.nation || '汉族'
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>婚姻状况</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.marriage || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>入院时间</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.admissionTime || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>病史陈述</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.historyReporter || ''
}}</span>
</div>
</div>
<!-- 第二列 -->
<div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>住院号</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.hospitalNo || '123456'
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>年龄</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.age || '16 岁'
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>职业</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.occupation || '中医'
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>出生地</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.birthplace || '阿拉善'
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>记录时间</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.recordTime || '2025-12-18 14:04:00'
}}</span>
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>可靠程度</span
>
<span style="font-size: 14px; color: #666; line-height: 1.5">{{
formData.reliability
}}</span>
</div>
</div>
</div>
</div>
<!-- 病史信息模块 - 优化布局内容可换行 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
病史信息
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 18px;
"
>
<!-- 第一列 -->
<div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>家族史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.familyHistory || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>现病史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.presentIllness || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>既往史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.pastIllness || formData.pastHistory || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>主诉</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.complaint || ''
}}</span>
</div>
</div>
<!-- 第二列 -->
<div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>婚育史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.maritalHistory || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 16px">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>月经史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.menstrualHistory || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 80px; font-size: 15px"
>个人史</span
>
<span style="font-size: 14px; color: #666; line-height: 1.6">{{
formData.personalHistory || ''
}}</span>
</div>
</div>
</div>
</div>
<!-- 中医望闻问切模块 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
中医望闻问切
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 120px; font-size: 15px"
>详细记录</span
>
<span style="font-size: 14px; color: #666; line-height: 1.8">{{
formData.tcmInfo || ''
}}</span>
</div>
</div>
<!-- 体格检查模块 - 优化两列布局信息对齐 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
体格检查
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 25px;
"
>
<!-- 第一列生命体征 -->
<div>
<div
style="
font-size: 16px;
font-weight: 500;
color: #333;
margin-bottom: 15px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
"
>
生命体征
</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px">
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">体温</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.temp || '' }}
</div>
</div>
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">脉搏</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.pulse || '' }}
</div>
</div>
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">呼吸</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.respiration || '' }}
</div>
</div>
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">血压</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.bp || '' }}
</div>
</div>
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">身高</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.height || '' }}
</div>
</div>
<div style="padding: 10px; background: #f8f8f8; border-radius: 4px; text-align: center">
<div style="font-size: 13px; color: #666; margin-bottom: 4px">体重</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.weight || '' }}
</div>
</div>
<div
style="
padding: 10px;
background: #f8f8f8;
border-radius: 4px;
text-align: center;
grid-column: 1/3;
"
>
<div style="font-size: 13px; color: #666; margin-bottom: 4px">BMI</div>
<div style="font-size: 14px; color: #333; font-weight: 500">
{{ formData.bmi || '' }}
</div>
</div>
</div>
</div>
<!-- 第二列检查详情 -->
<div>
<div
style="
font-size: 16px;
font-weight: 500;
color: #333;
margin-bottom: 15px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
"
>
检查详情
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 14px">
<span style="font-weight: 500; color: #333; min-width: 100px; font-size: 14px"
>皮肤粘膜</span
>
<span style="font-size: 13px; color: #666; line-height: 1.5">{{
formData.skin || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 14px">
<span style="font-weight: 500; color: #333; min-width: 100px; font-size: 14px"
>胸部</span
>
<span style="font-size: 13px; color: #666; line-height: 1.5">{{
formData.chest || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 14px">
<span style="font-weight: 500; color: #333; min-width: 100px; font-size: 14px"
>腹部</span
>
<span style="font-size: 13px; color: #666; line-height: 1.5">{{
formData.abdomen || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start; margin-bottom: 14px">
<span style="font-weight: 500; color: #333; min-width: 100px; font-size: 14px"
>一般情况</span
>
<span style="font-size: 13px; color: #666; line-height: 1.5">{{
formData.general || ''
}}</span>
</div>
<div style="display: flex; align-items: flex-start">
<span style="font-weight: 500; color: #333; min-width: 100px; font-size: 14px"
>四肢/神经</span
>
<span style="font-size: 13px; color: #666; line-height: 1.5">{{
formData.limbsNervous || ''
}}</span>
</div>
</div>
</div>
</div>
<!-- 辅助检查模块 - 合并重复模块优化显示 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
辅助检查
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 20px;
"
>
<div style="padding: 15px; background: #f8f8f8; border-radius: 6px">
<div style="font-weight: 500; color: #333; font-size: 15px; margin-bottom: 8px">
检查结果
</div>
<div style="font-size: 14px; color: #666; line-height: 1.6">
{{ formData.auxExam || '' }}
</div>
</div>
</div>
</div>
<!-- 诊断信息模块 - 修正分类优化布局 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
诊断信息
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 20px;
"
>
<div style="padding: 18px; background: #f8f8f8; border-radius: 6px">
<div style="font-weight: 500; color: #333; font-size: 15px; margin-bottom: 10px">
中医诊断
</div>
<div style="font-size: 14px; color: #666; line-height: 1.8">
{{ formData.tcmDiagnosis || '' }}
</div>
</div>
<div style="padding: 18px; background: #f8f8f8; border-radius: 6px">
<div style="font-weight: 500; color: #333; font-size: 15px; margin-bottom: 10px">
西医诊断
</div>
<div style="font-size: 14px; color: #666; line-height: 1.8">
{{ formData.westernDiagnosis || '' }}
</div>
</div>
</div>
</div>
<!-- 签名信息模块 -->
<div
style="
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
margin-bottom: 30px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #333;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
"
>
签名信息
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 30px;
max-width: 800px;
margin: 0 auto;
"
>
<div style="text-align: center">
<div
style="
font-weight: 500;
color: #333;
font-size: 15px;
margin-bottom: 40px;
border-bottom: 1px solid #333;
padding-bottom: 2px;
display: inline-block;
"
>
医师签名
</div>
<div style="font-size: 14px; color: #666">{{ formData.doctorSign || '' }}</div>
</div>
<div style="text-align: center">
<div
style="
font-weight: 500;
color: #333;
font-size: 15px;
margin-bottom: 40px;
border-bottom: 1px solid #333;
padding-bottom: 2px;
display: inline-block;
"
>
上级医师
</div>
<div style="font-size: 14px; color: #666">{{ formData.superiorSign || '' }}</div>
</div>
<div style="text-align: center">
<div
style="
font-weight: 500;
color: #333;
font-size: 15px;
margin-bottom: 40px;
border-bottom: 1px solid #333;
padding-bottom: 2px;
display: inline-block;
"
>
记录日期
</div>
<div style="font-size: 14px; color: #666">{{ formData.signDate || '' }}</div>
</div>
</div>
</div>
<!-- 底部备注 -->
<div
style="
text-align: center;
font-size: 13px;
color: #888;
margin-bottom: 20px;
padding-top: 10px;
border-top: 1px solid #eee;
"
>
本记录由长春市朝阳区中医院医师根据患者病情如实记录仅供临床诊疗参考 |
地址长春市朝阳区XX街XX号 | 联系电话0431-XXXXXXX
</div>
<!-- 打印按钮 - 优化样式居中显示 -->
<!-- <div style="text-align: center; margin-bottom: 30px">
<el-button type="primary" @click="onPrint" style="padding: 10px 30px; font-size: 15px"
>打印预览</el-button
>
</div> -->
</div>
</template>
<script setup>
import { ref, reactive } from 'vue';
import { previewPrint } from '../../../utils/printUtils';
const bodyRef = ref();
// 响应式表单数据
const formData = reactive({
// 基础信息
patientName: '', // 原patient?.name
hospitalNo: '', // 原patient?.busNo
gender: '', // 原patient?.genderEnum_enumText
age: '',
nation: '',
occupation: '', // 职业
marriage: '', // 婚姻状况
birthplace: '', // 出生地
admissionTime: '', // 入院时间
recordTime: '', // 记录时间
historyReporter: '', // 病史陈述者
reliability: '可靠', // 可靠程度
// 病史信息
complaint: '', // 主诉
presentIllness: '', // 现病史
pastIllness: '', // 既往史
personalHistory: '', // 个人史
allergyHistory: '', // 过敏史
pastHistory: '', // 既往史(重复字段,保留兼容)
familyHistory: '', // 家族史
maritalHistory: '', // 婚姻史
menstrualHistory: '', // 月经史
// 中医信息
tcmInfo: '',
// 体格检查
temp: '',
pulse: '',
respiration: '',
bp: '',
height: '',
weight: '',
bmi: '',
general: '',
skin: '',
chest: '',
abdomen: '',
limbsNervous: '',
// 辅助检查
auxExam: '',
// 诊断信息
tcmDiagnosis: '',
westernDiagnosis: '',
// 签名信息
doctorSign: '',
superiorSign: '',
signDate: '',
});
// 打印方法
const onPrint = () => {
// previewPrint(bodyRef.value);
};
const getDom = () => {
return bodyRef.value;
};
const setData = (data) => {
console.log('设置数据=========>', JSON.stringify(data));
Object.assign(formData, data);
};
defineExpose({
setData,
getDom,
});
</script>
<style scoped>
/* 打印样式优化,隐藏不必要元素 */
@media print {
.el-button {
display: none !important;
}
body {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
div[style*='box-shadow'] {
box-shadow: none !important;
}
}
</style>

View File

@@ -0,0 +1,543 @@
<template>
<div
ref="bodyRef"
style="
padding: 30px 20px;
max-width: 1200px;
margin: 0 auto;
min-height: 100vh;
background: #f8f9fa;
font-family: 'Microsoft YaHei', 'PingFang SC', sans-serif;
"
>
<!-- 标题区域 - 强化正式感与层次感 -->
<div style="text-align: center; margin-bottom: 35px; padding: 20px 0">
<div
style="
font-size: 24px;
color: #2c3e50;
letter-spacing: 2px;
font-weight: 500;
margin-bottom: 8px;
"
>
长春市朝阳区中医院
</div>
<div
style="
font-size: 32px;
font-weight: 700;
color: #1a2b48;
padding: 12px 0;
border-bottom: 2px solid #2c3e50;
display: inline-block;
letter-spacing: 1px;
"
>
出院诊断病历
</div>
</div>
<!-- 基础信息卡片 -->
<div
style="
border: 1px solid #e5e8eb;
border-radius: 12px;
padding: 25px;
margin-bottom: 25px;
background: #ffffff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #2c3e50;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #f0f2f5;
position: relative;
"
>
基础信息
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 18px;
"
>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>姓名</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.patientName }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>性别</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.gender }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>年龄</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.age }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>住院号</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.busNo }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>职业</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.temperature }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>入院时间</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.admissionDate }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>出院时间</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.dischargeDate }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>住院天数</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.hospitalDays }}</span
>
</div>
</div>
</div>
<!-- 诊断信息卡片 -->
<div
style="
border: 1px solid #e5e8eb;
border-radius: 12px;
padding: 25px;
margin-bottom: 25px;
background: #ffffff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
"
>
<div
style="
font-size: 18px;
font-weight: 600;
color: #2c3e50;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #f0f2f5;
position: relative;
"
>
诊断
</div>
<div
style="
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 18px;
"
>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>出诊诊断</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.DischargeDiagnosis }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
grid-column: 1 / -1;
padding: 4px 0;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>出院病情摘要</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.SummaryAndDiagnosisAndTreatmentProcess }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
grid-column: 1 / -1;
padding: 4px 0;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>出院后要求及注意事项</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.RequirementsAndPrecautionsAfterDischarge }}</span
>
</div>
<div
style="
display: flex;
align-items: flex-start;
margin-bottom: 16px;
line-height: 1.6;
word-wrap: break-word;
grid-column: 1 / -1;
padding: 4px 0;
"
>
<span
style="
font-weight: 500;
color: #34495e;
min-width: 80px;
font-size: 15px;
flex-shrink: 0;
word-wrap: break-word;
"
>中医调护</span
>
<span
style="
font-size: 14px;
color: #606266;
flex: 1;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
"
>{{ formData.TraditionalChineseMedicineNursing }}</span
>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'; // 补充缺失的reactive导入
const bodyRef = ref(null);
const showPrintPreview = ref(false); // 控制弹窗显隐
// 表单数据
const formData = reactive({
patientName: '', // 姓名
age: '', // 年龄
gender: '', // 性别
busNo: '', // 住院号
admissionDate: '', // 入院日期
dischargeDate: '', // 出院日期
hospitalDays: '', // 住院天数
DischargeDiagnosis: '', // 出院诊断
SummaryAndDiagnosisAndTreatmentProcess: '', // 出院病情摘要及诊疗经过
RequirementsAndPrecautionsAfterDischarge: '', // 出院后要求及注意事项
TraditionalChineseMedicineNursing: '', // 中医调护
});
const getDom = () => {
return bodyRef.value;
};
const setData = (data) => {
console.log('设置数据=========>', JSON.stringify(data));
Object.assign(formData, data);
};
defineExpose({
setData,
getDom,
});
</script>
<style scoped>
/* 以下是内联样式无法实现的样式(保留说明) */
/* 1. 伪元素样式card-title::after内联样式不支持伪元素 */
/* 2. hover效果内联样式不支持:hover伪类 */
/* 3. 媒体查询响应式:内联样式无法编写@media规则 */
/* 4. 打印预览相关样式:若需要打印功能,需单独处理 */
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,347 @@
<template>
<div style="padding: 20px; background: #f8f9fa; min-height: 100vh;" ref="bodyRef">
<!-- 标题区域 - 强化正式感 -->
<div
style="text-align: center; margin-bottom: 30px; padding: 20px; background: #fff; border-radius: 12px; box-shadow: 0 2px 6px rgba(0,0,0,0.03);">
<div style="font-size: 22px; color: #2d3748; letter-spacing: 1px;">长春市朝阳区中医院</div>
<div
style="font-size: 28px; font-weight: 700; margin: 12px 0; padding: 8px 0; border-bottom: 2px solid #e8f4f8; display: inline-block;">
住院患者入院沟通记录单</div>
<div style="display: flex; justify-content: center; align-items: center; gap: 10px; font-size: 15px; ">
<span style="font-weight: 500;">住院号</span>
<span style="font-weight: 600; text-decoration: underline;">20210001</span>
</div>
</div>
<!-- 基本信息模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">基本信息</span>
</div>
<div class="card-content grid-2col">
<div class="info-item">
<span class="info-label">姓名</span>
<span class="info-value">张三</span>
</div>
<div class="info-item">
<span class="info-label">性别</span>
<span class="info-value"></span>
</div>
<div class="info-item">
<span class="info-label">年龄</span>
<span class="info-value">34 </span>
</div>
<div class="info-item">
<span class="info-label">科室/病区</span>
<span class="info-value">中医科</span>
</div>
<div class="info-item">
<span class="info-label">病房/床号</span>
<span class="info-value">305-2</span>
</div>
<div class="info-item">
<span class="info-label">入院日期</span>
<span class="info-value">2025-02-14</span>
</div>
</div>
</div>
<!-- 团队信息模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">团队信息</span>
</div>
<div class="card-content grid-2col">
<div class="info-item">
<span class="info-label">经治医生</span>
<span class="info-value">华佗</span>
</div>
<div class="info-item">
<span class="info-label">主治医生</span>
<span class="info-value">王海明</span>
</div>
<div class="info-item">
<span class="info-label">科主任</span>
<span class="info-value">特斯拉</span>
</div>
</div>
</div>
<!-- 病情与诊断模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">病情与诊断</span>
</div>
<div class="card-content grid-2col">
<div class="info-item">
<span class="info-label">病情状况</span>
<div class="info-value multi-line">
1111111111111111111111111111111111111111111111111111111111111111111111111111</div>
</div>
<div class="info-item">
<span class="info-label">中医诊断</span>
<div class="info-value multi-line">
1111111111111111111111111111111111111111111111111111111111111111111111111111</div>
</div>
<div class="info-item">
<span class="info-label">西医诊断</span>
<div class="info-value multi-line">
1111111111111111111111111111111111111111111111111111111111111111111111111111</div>
</div>
</div>
</div>
<!-- 治疗与检查计划模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">治疗与检查计划</span>
</div>
<div class="card-content grid-2col">
<div class="info-item">
<span class="info-label">治疗方案</span>
<div class="info-value multi-line">
1111111111111111111111111111111111111111111111111111111111111111111111111111</div>
</div>
<div class="info-item">
<span class="info-label">进一步检查项目</span>
<div class="info-value multi-line">血常规肝肾功能腹部B超心电图中医辨证分型检查肿瘤标志物筛查</div>
</div>
</div>
</div>
<!-- 风险告知模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">风险告知</span>
</div>
<div class="card-content">
<div class="info-item full-width">
<span class="info-label">告知内容</span>
<div class="info-value multi-line">
1. 治疗过程中可能出现药物不良反应如过敏胃肠道不适等若出现不适需及时告知医护人员<br />
2. 检查项目存在一定的操作风险如穿刺出血感染等医护人员将严格按照规范操作<br />
3. 病情可能因个体差异出现变化需根据实际情况调整治疗方案<br />
4. 若患者存在隐瞒病史不配合治疗等情况可能影响治疗效果相关风险由患者自行承担
</div>
</div>
</div>
</div>
<!-- 签署确认模块 -->
<div class="card-container">
<div class="card-header">
<span class="card-title">签署确认</span>
</div>
<div class="card-content grid-2col">
<div class="info-item">
<span class="info-label">患者或家属</span>
<span class="info-value">张三</span>
</div>
<div class="info-item">
<span class="info-label">与患者关系</span>
<span class="info-value">妻子</span>
</div>
<div class="info-item">
<span class="info-label">签字日期</span>
<span class="info-value">2025-02-14</span>
</div>
<div class="info-item">
<span class="info-label">沟通医师签字</span>
<span class="info-value">华佗</span>
</div>
<div class="info-item">
<span class="info-label">沟通日期</span>
<span class="info-value">2025-02-14</span>
</div>
</div>
</div>
</div>
</template>
<style scoped>
/* 全局卡片容器统一样式 */
.card-container {
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
}
/* 卡片hover效果 */
.card-container:hover {
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
transform: translateY(-1px);
}
/* 卡片头部样式 */
.card-header {
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
background-color: #f5fafe;
display: flex;
align-items: center;
}
/* 卡片标题样式 */
.card-title {
font-size: 18px;
font-weight: 600;
letter-spacing: 0.5px;
}
/* 卡片内容区统一样式 */
.card-content {
padding: 22px;
gap: 20px;
}
/* 2列网格布局桌面端 */
.grid-2col {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
/* 信息项统一样式 */
.info-item {
display: flex;
align-items: flex-start;
/* 改为顶端对齐,适配多行文本 */
padding: 9px 0;
gap: 8px;
}
/* 信息标签样式 */
.info-label {
font-weight: 500;
color: #333;
min-width: 110px;
font-size: 15px;
padding-top: 5px;
/* 对齐多行文本的顶部 */
}
/* 信息值样式(单行) */
.info-value {
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
min-height: 28px;
/* 确保单行和多行高度一致 */
display: flex;
align-items: center;
}
/* 多行文本样式(适配长内容) */
.info-value.multi-line {
align-items: flex-start;
padding: 10px 12px;
line-height: 1.6;
min-height: 80px;
/* 最小高度,避免内容过少时显得空旷 */
white-space: pre-line;
/* 支持换行符和空格 */
}
/* 全屏宽度信息项(如风险告知) */
.info-item.full-width {
width: 100%;
}
/* 信息值hover效果 */
.info-value:hover {
background: #f2f2f2;
border-color: #e0e0e0;
}
/* 响应式适配移动端1列布局 */
@media (max-width: 768px) {
.grid-2col {
grid-template-columns: 1fr;
}
.card-content {
padding: 16px;
gap: 16px;
}
.card-header {
padding: 12px 16px;
}
.card-title {
font-size: 16px;
}
.info-item {
padding: 10px 0;
}
.info-label {
min-width: 90px;
font-size: 14px;
padding-top: 4px;
}
.info-value {
font-size: 14px;
padding: 4px 10px;
min-height: 24px;
}
.info-value.multi-line {
padding: 8px 10px;
min-height: 60px;
line-height: 1.5;
}
/* 标题区域适配移动端 */
div[style*="font-size: 28px"] {
font-size: 24px !important;
}
div[style*="font-size: 22px"] {
font-size: 20px !important;
}
}
/* 打印样式优化 */
@media print {
body {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
background: #fff !important;
}
.card-container {
box-shadow: none !important;
border: 1px solid #ddd !important;
margin-bottom: 15px !important;
transform: none !important;
}
.card-header {
background: #f8f8f8 !important;
border-bottom: 1px solid #ddd !important;
}
.info-value {
background: #fff !important;
border: 1px dashed #eee !important;
}
.card-container:hover {
box-shadow: none !important;
}
}
</style>
<script setup>
</script>

View File

@@ -0,0 +1,877 @@
<template>
<div style="padding: 20px; background: #f8f9fa; min-height: 100vh" ref="bodyRef">
<!-- 标题区域 - 强化正式感 -->
<div
style="
text-align: center;
margin-bottom: 30px;
padding: 20px;
background: #fff;
border-radius: 12px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
"
>
<div style="font-size: 22px; color: #2d3748; letter-spacing: 1px">长春市朝阳区中医院</div>
<div
style="
font-size: 28px;
font-weight: 700;
margin: 12px 0;
padding: 8px 0;
border-bottom: 2px solid #e8f4f8;
display: inline-block;
"
>
患者与手术基础信息
</div>
<div
style="
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
font-size: 15px;
color: #4a5568;
"
>
<span style="font-weight: 500">住院号</span>
<span style="font-weight: 600; text-decoration: underline">{{ formData.busNo }}</span>
</div>
</div>
<!-- 基本信息模块统一为card样式 -->
<div
style="
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
"
>
<div
style="
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
display: flex;
align-items: center;
"
>
<span style="font-size: 18px; font-weight: 600; letter-spacing: 0.5px">基本信息</span>
</div>
<div style="padding: 22px; gap: 20px; display: grid; grid-template-columns: repeat(2, 1fr)">
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>姓名</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.patientName }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>性别</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.gender }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>年龄</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.age }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>科室</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.department }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>病房/床号</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.bedNo }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术日期</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.operationDateTime }}</span
>
</div>
</div>
</div>
<!-- 手术团队信息模块 -->
<div
style="
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
"
>
<div
style="
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
display: flex;
align-items: center;
"
>
<span style="font-size: 18px; font-weight: 600; letter-spacing: 0.5px">手术团队信息</span>
</div>
<div style="padding: 22px; gap: 20px; display: grid; grid-template-columns: repeat(2, 1fr)">
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术者</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.surgeon }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>第一助手</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.firstAssistant }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>第二助手</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.secondAssistant }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>器械护士</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.scrubNurse }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>麻醉医师</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.anesthesiologist }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>巡逻护士</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.circulatingNurse }}</span
>
</div>
</div>
</div>
<!-- 手术详情模块 -->
<div
style="
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
"
>
<div
style="
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
display: flex;
align-items: center;
"
>
<span style="font-size: 18px; font-weight: 600; letter-spacing: 0.5px">手术详情</span>
</div>
<div style="padding: 22px; gap: 20px; display: grid; grid-template-columns: repeat(2, 1fr)">
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术名称</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.operationName }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术方式</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.operationMethod }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术入路</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.surgicalApproach }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>术中发现</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.intraoperativeFindings }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术过程</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.operationProcess }}</span
>
</div>
</div>
</div>
<!-- 术后情况模块 -->
<div
style="
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
"
>
<div
style="
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
display: flex;
align-items: center;
"
>
<span style="font-size: 18px; font-weight: 600; letter-spacing: 0.5px">术后情况</span>
</div>
<div style="padding: 22px; gap: 20px; display: grid; grid-template-columns: repeat(2, 1fr)">
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>术中出血量</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.bloodLoss }}ml</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>输血情况</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.bloodTransfusion }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>引流管放置</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.drainageTube }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>标本处理</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.specimenDisposal }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术结束时间</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.operationEndTime }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>患者去向</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.patientDestination }}</span
>
</div>
</div>
</div>
<!-- 签署确认模块 -->
<div
style="
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
background: #fff;
transition: box-shadow 0.3s ease, transform 0.2s ease;
"
>
<div
style="
padding: 14px 20px;
border-bottom: 1px solid #f0f0f0;
display: flex;
align-items: center;
"
>
<span style="font-size: 18px; font-weight: 600; letter-spacing: 0.5px">签署确认</span>
</div>
<div style="padding: 22px; gap: 20px; display: grid; grid-template-columns: repeat(2, 1fr)">
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>手术者签名</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.surgeonSignature }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>记录者签名</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.recorderSignature }}</span
>
</div>
<div style="display: flex; align-items: center; padding: 9px 0">
<span
style="
font-weight: 500;
color: #333;
min-width: 100px;
font-size: 15px;
margin-right: 10px;
"
>记录日期</span
>
<span
style="
font-size: 15px;
color: #222;
padding: 5px 12px;
background: #f9f9f9;
border-radius: 4px;
flex: 1;
border: 1px solid #f0f0f0;
transition: all 0.2s ease;
"
>{{ formData.recordDate }}</span
>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive, defineExpose } from 'vue';
const bodyRef = ref();
// 响应式表单数据
const formData = reactive({
// 患者与手术基础信息
busNo: '',
patientName: '',
gender: '',
age: '',
department: '',
bedNo: '',
operationDateTime: '', // 手术日期时间
// 手术团队信息
surgeon: '', // 主刀医师
firstAssistant: '', // 第一助手
secondAssistant: '', // 第二助手
anesthesiologist: '', // 麻醉医师
circulatingNurse: '', // 巡回护士
scrubNurse: '', // 器械护士
// 手术详情
operationName: '', // 规范手术名称
operationMethod: '', // 手术方式
surgicalApproach: '', // 手术入路
intraoperativeFindings: '', // 术中发现
operationProcess: '', // 手术过程
// 术后情况
bloodLoss: '', // 术中出血量
bloodTransfusion: '', // 输血情况
drainageTube: '', // 引流管放置
specimenDisposal: '', // 标本处理
operationEndTime: '', // 手术结束时间
patientDestination: '', // 患者去向
// 签署信息
surgeonSignature: '', // 手术者签名
recorderSignature: '', // 记录者签名
recordDate: '', // 记录日期
});
const getDom = () => {
return bodyRef.value;
};
const setData = (data) => {
console.log('设置数据=========>', JSON.stringify(data));
Object.assign(formData, data);
};
defineExpose({
setData,
getDom,
});
</script>

View File

@@ -1,305 +1,548 @@
<template>
<div class="form-header">
<h2 class="form-title">住院病案首页</h2>
</div>
<h2 class="form-title">住院病案首页</h2>
</div>
<div class="form-content">
<!-- 医院信息 -->
<div class="section">
<div class="section-title">医院信息</div>
<div class="form-row">
<div class="form-item">
<label>组织机构代码:</label>
<el-input type="text" v-model="formData.hospital.orgCode" placeholder="41275054-7" />
<div class="form-content">
<!-- 医院信息 -->
<div class="section">
<div class="section-title">医院信息</div>
<div class="form-row">
<div class="form-item">
<label>组织机构代码:</label>
<el-input
type="text"
v-model="formData.hospitalInfo.medins_orgcode"
placeholder="请填写组织机构代码"
/>
</div>
<div class="form-item">
<label>医疗付费方式:</label>
<el-select placeholder="请选择" v-model="formData.hospitalInfo.medfee_paymtd_code">
<el-option
v-for="item in medicalSelectOptions"
:key="item.id"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="form-item">
<label>医疗付费方式:</label>
<el-select v-model="formData.hospital.paymentMethod">
<el-option value="">请选择</el-option>
<el-option value="城镇职工基本医疗保险">城镇职工基本医疗保险</el-option>
<el-option value="城乡居民基本医疗保险">城乡居民基本医疗保险</el-option>
<el-option value="自费">自费</el-option>
<el-option value="其他">其他</el-option>
</el-select>
</div>
<!-- 患者基本信息 -->
<div class="section">
<div class="section-title">患者基本信息</div>
<div class="form-row">
<div class="form-item">
<label>健康卡号:</label>
<el-input
type="text"
v-model="formData.patientInfo.healthCardNo"
placeholder="请填写健康卡号"
/>
</div>
<div class="form-item">
<label>姓名:</label>
<el-input
type="text"
v-model="formData.patientInfo.patientName"
placeholder="请填写健康姓名"
/>
</div>
<div class="form-item">
<label>性别:</label>
<el-select v-model="formData.patientInfo.gend">
<el-option
v-for="item in sexOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
<!-- <el-input v-model="formData.patientInfo.gend" placeholder="请输入"></el-input> -->
</div>
<div class="form-item">
<label>出生日期:</label>
<el-input type="date" v-model="formData.patientInfo.brdy" />
</div>
<div class="form-item">
<label>年龄:</label>
<el-input max="120" min="0" v-model="formData.patientInfo.age" placeholder="请填写年龄" />
</div>
<div class="form-item">
<label>国籍:</label>
<el-input type="text" v-model="formData.patientInfo.ntly" placeholder="请填写国籍" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>籍贯:</label>
<el-input type="text" v-model="formData.patientInfo.napl" placeholder="请填写籍贯" />
</div>
<div class="form-item">
<label>民族:</label>
<!-- <el-input type="text" v-model="formData.patientInfo.ethnicity" placeholder="请填写民族" /> -->
<el-select placeholder="请选择" v-model="formData.patientInfo.naty">
<el-option
v-for="item in natyOptions"
:key="item.id"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>身份证号:</label>
<el-input
type="text"
v-model="formData.patientInfo.certno"
placeholder="请填写身份证号"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>户口地址:</label>
<el-input
type="text"
v-model="formData.patientInfo.resd_addr"
placeholder="请填写户口地址"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>工作单位及地址:</label>
<el-input
type="text"
v-model="formData.patientInfo.empr_addr"
placeholder="请填写工作单位及地址"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>联系人姓名:</label>
<el-input
type="text"
v-model="formData.patientInfo.coner_name"
placeholder="请填写联系人姓名"
/>
</div>
<div class="form-item">
<label>关系:</label>
<!-- <el-input
type="text"
v-model="formData.patientInfo.contactRelation"
placeholder="请填写关系"
/> -->
<el-select placeholder="请选择" v-model="formData.patientInfo.coner_rlts_code">
<el-option
v-for="item in patn_rltsOptions"
:key="item.id"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>地址:</label>
<el-input
type="text"
v-model="formData.patientInfo.coner_addr"
placeholder="请填写地址"
/>
</div>
<div class="form-item">
<label>电话:</label>
<el-input type="text" v-model="formData.patientInfo.coner_tel" placeholder="请填写电话" />
</div>
</div>
</div>
<!-- 住院信息 -->
<div class="section">
<div class="section-title">住院信息</div>
<div class="form-row">
<div class="form-item">
<label>第几次住院:</label>
<el-input
type="number"
v-model="formData.admission.patn_ipt_cnt"
min="1"
placeholder="请填写第几次住院"
/>
</div>
<div class="form-item">
<label>住院号:</label>
<el-input type="text" v-model="formData.admission.ipt_no" placeholder="请填写住院号" />
</div>
<div class="form-item">
<label>病案号:</label>
<el-input type="text" v-model="formData.admission.medcasno" placeholder="请填写病案号" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>入院途径:</label>
<el-select v-model="formData.admission.adm_way_code" placeholder="请选择">
<el-option
v-for="item in admissionOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>入院时间:</label>
<el-input type="date" v-model="formData.admission.adm_time" />
</div>
<div class="form-item">
<label>入院科室:</label>
<el-input
type="text"
v-model="formData.admission.adm_dept_name"
placeholder="请填写入院科室"
/>
</div>
<div class="form-item">
<label>病房:</label>
<el-input type="text" v-model="formData.admission.adm_ward" placeholder="请填写病房" />
</div>
<div class="form-item">
<label>确诊日期:</label>
<el-input type="date" v-model="formData.admission.adm_date" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>出院时间:</label>
<el-input type="datetime-local" v-model="formData.admission.dscg_date" />
</div>
<div class="form-item">
<label>出院科室:</label>
<el-input
type="text"
v-model="formData.admission.dscg_caty"
placeholder="请填写出院科室"
/>
</div>
<div class="form-item">
<label>病房:</label>
<el-input type="text" v-model="formData.admission.dscg_ward" placeholder="请填写病房" />
</div>
<div class="form-item">
<label>实际住院天数:</label>
<el-input
type="number"
v-model="formData.admission.act_ipt_days"
placeholder="请填写实际住院天数"
/>
</div>
</div>
</div>
<!-- 诊断信息 -->
<div class="section">
<div class="section-title">诊断信息</div>
<el-col :span="23" :xs="24">
<el-form disabled :model="formData" :rules="rules" ref="formRef">
<el-table ref="diagnosisTableRef" :data="formData?.diagnosisList" width="100px">
<el-table-column label="序号" type="index" width="50" />
<el-table-column label="诊断排序" align="center" prop="diagSrtNo">
<template #default="scope">
<el-input-number
v-model="scope.row.diagSrtNo"
controls-position="right"
:controls="false"
/>
</template>
</el-table-column>
<el-table-column label="诊断类别" align="center" prop="diagSrtNo">
<template #default="scope">
<el-form-item
:prop="`diagnosisList.${scope.$index}.medTypeCode`"
:rules="rules.medTypeCode"
>
<el-select
v-model="scope.row.medTypeCode"
placeholder=" "
style="margin-top: 15px"
>
<el-option
v-for="item in med_type"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="诊断名称" align="center" prop="name">
<template #default="scope">
<el-form-item :prop="`diagnosisList.${scope.$index}.name`" :rules="rules.name">
<el-popover
:popper-style="{ padding: '0' }"
placement="bottom-start"
:visible="scope.row.showPopover"
trigger="manual"
>
<diagnosislist
:diagnosisSearchkey="diagnosisSearchkey"
@selectDiagnosis="handleSelsectDiagnosis"
/>
<template #reference>
<el-input
v-model="scope.row.name"
placeholder="请选择诊断"
@input="handleChange"
@focus="handleFocus(scope.row, scope.$index)"
@blur="handleBlur(scope.row)"
style="margin-top: 15px"
/>
</template>
</el-popover>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="医保码" align="center" prop="ybNo" />
<el-table-column label="诊断类型" align="center" prop="maindiseFlag">
<template #default="scope">
<div style="display: flex">
<el-checkbox
label="主诊断"
:trueLabel="1"
:falseLabel="0"
v-model="scope.row.maindiseFlag"
border
size="small"
@change="(value) => handleMaindise(value, scope.$index)"
/>
<el-select
v-model="scope.row.verificationStatusEnum"
placeholder=" "
style="padding-bottom: 5px; padding-left: 10px"
size="small"
>
<el-option
v-for="item in diagnosisOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</template>
</el-table-column>
</el-table>
</el-form>
</el-col>
</div>
<!-- 医疗信息 -->
<div class="section">
<div class="section-title">医疗信息</div>
<div class="form-row">
<div class="form-item">
<label>是否输血:</label>
<el-select v-model="formData.medicalInfo.bloodTransfusion">
<el-option
v-for="item in bloodOption"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>血型:</label>
<el-select v-model="formData.medicalInfo.abo_code" placeholder="请选择">
<el-option
v-for="item in bloodTypeOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>Rh:</label>
<el-select v-model="formData.medicalInfo.rh_code" placeholder="请选择">
<el-option
v-for="item in rhOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>药物过敏史:</label>
<el-select v-model="formData.medicalInfo.die_autp_flag" placeholder="请选择"
><el-option
v-for="item in drugAllergyOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
</div>
</div>
<!-- 医师信息 -->
<div class="section">
<div class="section-title">医师信息</div>
<div class="form-row">
<div class="form-item">
<label>科主任:</label>
<el-input
type="text"
v-model="formData.doctorInfo.deptdrt_name"
placeholder="请填写科主任"
/>
</div>
<div class="form-item">
<label>主任(副主任)医师:</label>
<el-input
type="text"
v-model="formData.doctorInfo.chfdr_name"
placeholder="请填写主任(副主任)医师"
/>
</div>
<div class="form-item">
<label>主治医师:</label>
<el-input
type="text"
v-model="formData.doctorInfo.chfpdr_name"
placeholder="请填写主治医师"
/>
</div>
<div class="form-item">
<label>住院医师:</label>
<el-input
type="text"
v-model="formData.doctorInfo.ipt_dr_name"
placeholder="请填写住院医师"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>责任护士:</label>
<el-input
type="text"
v-model="formData.doctorInfo.resp_nurs_name"
placeholder="请填写责任护士"
/>
</div>
<div class="form-item">
<label>住院总医师:</label>
<el-input
type="text"
v-model="formData.doctorInfo.chiefResident"
placeholder="请填写住院总医师"
/>
</div>
<div class="form-item">
<label>实习医师:</label>
<el-input
type="text"
v-model="formData.doctorInfo.intn_dr_name"
placeholder="请填写实习医师"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>病案质量:</label>
<el-select v-model="formData.doctorInfo.medcas_qlt_code" placeholder="请选择">
<el-option
v-for="item in recordQualityOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>编码员:</label>
<el-input
type="text"
v-model="formData.doctorInfo.codr_name"
placeholder="请填写编码员"
/>
</div>
<div class="form-item">
<label>质控日期:</label>
<el-input type="date" v-model="formData.doctorInfo.qltctrl_date" />
</div>
</div>
</div>
</div>
<!-- 患者基本信息 -->
<div class="section">
<div class="section-title">患者基本信息</div>
<div class="form-row">
<div class="form-item">
<label>健康卡号:</label>
<el-input type="text" v-model="formData.patient.healthCardNo" />
</div>
<div class="form-item">
<label>姓名:</label>
<el-input type="text" v-model="formData.patient.name" />
</div>
<div class="form-item">
<label>性别:</label>
<el-select v-model="formData.patient.gender">
<el-option value="" label="请选择"></el-option>
<el-option value="1" label="男"></el-option>
<el-option value="2" label="女"></el-option>
</el-select>
</div>
<div class="form-item">
<label>出生日期:</label>
<el-date-picker v-model="formData.patient.birthDate" type="date" size="default"></el-date-picker>
</div>
<div class="form-item">
<label>年龄:</label>
<el-input type="number" max="120" min="0" v-model="formData.patient.age" />
</div>
<div class="form-item">
<label>国籍:</label>
<el-input type="text" v-model="formData.patient.nationality" placeholder="中国" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>籍贯:</label>
<el-input type="text" v-model="formData.patient.nativePlace" />
</div>
<div class="form-item">
<label>民族:</label>
<el-input type="text" v-model="formData.patient.ethnicity" placeholder="汉族" />
</div>
<div class="form-item">
<label>身份证号:</label>
<el-input type="text" v-model="formData.patient.idCardNo" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>户口地址:</label>
<el-input type="text" v-model="formData.patient.householdAddress" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>工作单位及地址:</label>
<el-input type="text" v-model="formData.patient.workUnit" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>联系人姓名:</label>
<el-input type="text" v-model="formData.patient.contactName" />
</div>
<div class="form-item">
<label>关系:</label>
<el-input type="text" v-model="formData.patient.contactRelation" />
</div>
<div class="form-item">
<label>地址:</label>
<el-input type="text" v-model="formData.patient.contactAddress" />
</div>
<div class="form-item">
<label>电话:</label>
<el-input type="text" v-model="formData.patient.contactPhone" />
</div>
</div>
</div>
<!-- 住院信息 -->
<div class="section">
<div class="section-title">住院信息</div>
<div class="form-row">
<div class="form-item">
<label>第几次住院:</label>
<el-input type="number" v-model="formData.admission.times" min="1" />
</div>
<div class="form-item">
<label>住院号:</label>
<el-input type="text" v-model="formData.admission.hospitalNo" />
</div>
<div class="form-item">
<label>病案号:</label>
<el-input type="text" v-model="formData.admission.recordNo" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>入院途径:</label>
<el-select v-model="formData.admission.channel">
<el-option value="">请选择</el-option>
<el-option value="1">急诊</el-option>
<el-option value="2">门诊</el-option>
<el-option value="3">其他医疗机构转入</el-option>
</el-select>
</div>
<div class="form-item">
<label>入院时间:</label>
<el-input type="date" v-model="formData.admission.admitTime" />
</div>
<div class="form-item">
<label>入院科室:</label>
<el-input type="text" v-model="formData.admission.department" />
</div>
<div class="form-item">
<label>病房:</label>
<el-input type="text" v-model="formData.admission.ward" />
</div>
<div class="form-item">
<label>确诊日期:</label>
<el-input type="date" v-model="formData.admission.confirmDate" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>出院时间:</label>
<el-input type="datetime-local" v-model="formData.admission.dischargeTime" />
</div>
<div class="form-item">
<label>出院科室:</label>
<el-input type="text" v-model="formData.admission.dischargeDepartment" />
</div>
<div class="form-item">
<label>病房:</label>
<el-input type="text" v-model="formData.admission.dischargeWard" />
</div>
<div class="form-item">
<label>实际住院天数:</label>
<el-input type="number" v-model="formData.admission.hospitalDays" />
</div>
</div>
</div>
<!-- 诊断信息 -->
<div class="section">
<div class="section-title">诊断信息</div>
<div class="form-row">
<div class="form-item full-width">
<label>主要诊断:</label>
<el-input type="text" v-model="formData.diagnosis.mainDiagnosis" placeholder="腰椎间盘突出症(L4-5)" />
</div>
</div>
<div class="form-row">
<div class="form-item full-width">
<label>其他诊断:</label>
<el-input type="textarea" v-model="formData.diagnosis.otherDiagnosis" placeholder="腰椎管狭窄(L4-5)\n右下肢不全瘫"></el-input>
</div>
</div>
</div>
<!-- 医疗信息 -->
<div class="section">
<div class="section-title">医疗信息</div>
<div class="form-row">
<div class="form-item">
<label>是否输血:</label>
<el-select v-model="formData.medicalInfo.bloodTransfusion">
<el-option value="">请选择</el-option>
<el-option value="1"></el-option>
<el-option value="2"></el-option>
</el-select>
</div>
<div class="form-item">
<label>血型:</label>
<el-select v-model="formData.medicalInfo.bloodType">
<el-option value="">请选择</el-option>
<el-option value="A">A</el-option>
<el-option value="B">B</el-option>
<el-option value="AB">AB</el-option>
<el-option value="O">O</el-option>
<el-option value="不详">不详</el-option>
</el-select>
</div>
<div class="form-item">
<label>Rh:</label>
<el-select v-model="formData.medicalInfo.rhType">
<el-option value="">请选择</el-option>
<el-option value="1"></el-option>
<el-option value="2"></el-option>
<el-option value="3">不详</el-option>
</el-select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>药物过敏史:</label>
<el-select v-model="formData.medicalInfo.drugAllergy">
<el-option value="">请选择</el-option>
<el-option value="1" label="无"></el-option>
<el-option value="2" label="有过敏药物"></el-option>
</el-select>
</div>
</div>
</div>
<!-- 医师信息 -->
<div class="section">
<div class="section-title">医师信息</div>
<div class="form-row">
<div class="form-item">
<label>科主任:</label>
<el-input type="text" v-model="formData.doctorInfo.departmentDirector" />
</div>
<div class="form-item">
<label>主任(副主任)医师:</label>
<el-input type="text" v-model="formData.doctorInfo.chiefPhysician" />
</div>
<div class="form-item">
<label>主治医师:</label>
<el-input type="text" v-model="formData.doctorInfo.attendingPhysician" />
</div>
<div class="form-item">
<label>住院医师:</label>
<el-input type="text" v-model="formData.doctorInfo.residentPhysician" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>责任护士:</label>
<el-input type="text" v-model="formData.doctorInfo.chargeNurse" />
</div>
<div class="form-item">
<label>住院总医师:</label>
<el-input type="text" v-model="formData.doctorInfo.chiefResident" />
</div>
<div class="form-item">
<label>实习医师:</label>
<el-input type="text" v-model="formData.doctorInfo.intern" />
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>病案质量:</label>
<el-select v-model="formData.doctorInfo.recordQuality">
<el-option value="">请选择</el-option>
<el-option value="1" label="甲"></el-option>
<el-option value="2" label="乙"></el-option>
<el-option value="3" label="丙"></el-option>
</el-select>
</div>
<div class="form-item">
<label>编码员:</label>
<el-input type="text" v-model="formData.doctorInfo.coder" />
</div>
<div class="form-item">
<label>质控日期:</label>
<el-input type="date" v-model="formData.doctorInfo.qualityControlDate" />
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue';
import { reactive, watch, ref } from 'vue';
import formDataJs from '../../doctorstation/components/store/medicalpage';
import { patientInfo } from '../../inpatientDoctor/home/store/patient';
import diagnosislist from '../../inpatientDoctor/home/components/diagnosis/diagnosislist.vue';
import { diagnosisInit } from '../../doctorstation/components/api';
import useUserStore from '@/store/modules/user';
const { proxy } = getCurrentInstance();
const { med_type } = proxy.useDict('med_type');
const {
medfee_paymtd_code,
blotype_abo,
blotype_rh,
skintst_dicm,
gend,
adm_way,
medcas_qlt_code,
sys_yes_no,
naty,
patn_rlts,
} = proxy.useDict(
'medfee_paymtd_code',
'blotype_abo',
'blotype_rh',
'skintst_dicm',
'gend',
'adm_way',
'medcas_qlt_code',
'sys_yes_no',
'naty',
'patn_rlts'
);
const formRef = ref();
const diagnosisTableRef = ref();
// 诊断类型下拉选
const diagnosisOptions = ref([]);
const userStore = useUserStore();
const fixmedinsCode = userStore.fixmedinsCode;
formDataJs.hospitalInfo.medins_orgcode = fixmedinsCode;
// 医疗付费方式
const medicalSelectOptions = medfee_paymtd_code;
// 性别
const sexOptions = gend;
// 入院途径
const admissionOptions = adm_way;
<<<<<<< HEAD
// 表单数据
const formData = reactive({
//组织机构代码
@@ -502,9 +745,69 @@ const formData = reactive({
coder: '',
qualityControlDate: ''
}
=======
// 是否输血
const bloodOption = sys_yes_no;
// 血型
const bloodTypeOptions = blotype_abo;
// Rh类型
const rhOptions = blotype_rh;
// 过敏史
const drugAllergyOptions = skintst_dicm;
// 病案质量
const recordQualityOptions = medcas_qlt_code;
// 民族
const natyOptions = naty;
// 与联系人关系
const patn_rltsOptions = patn_rlts;
const formData = reactive(formDataJs);
defineExpose({
formData,
});
// 映射性别
const mapSex = (data = '') => {
let code = '0';
if (data.indexOf('男') !== -1) {
code = '1';
}
if (data.indexOf('女') !== -1) {
code = '2';
}
return code;
};
watch(
patientInfo,
(newValue) => {
if (newValue) {
const birthDate = newValue.birthDate.split(' ');
formData.patientInfo.patientName = newValue.patientName ?? '';
formData.patientInfo.healthCardNo = newValue.busNo ?? '';
formData.patientInfo.gend = mapSex(newValue.genderEnum_enumText) ?? '';
formData.patientInfo.brdy = birthDate.length > 0 ? birthDate[0] : '';
formData.patientInfo.age = newValue.age ?? '';
formData.admission.patn_ipt_cnt = newValue.inHospitalDays ?? '';
formData.admission.dscg_ward = newValue.houseName ?? '';
formData.admission.adm_ward = newValue.houseName ?? '';
formData.admission.ipt_no = newValue.contractNo ?? '';
}
},
{ immediate: true }
);
init();
function init() {
diagnosisInit().then((res) => {
if (res.code == 200) {
diagnosisOptions.value = res.data.verificationStatusOptions;
}
});
}
const rules = ref({
name: [{ required: true, message: '请选择诊断', trigger: 'change' }],
medTypeCode: [{ required: true, message: '请选择诊断类型', trigger: 'change' }],
diagSrtNo: [{ required: true, message: '请输入诊断序号', trigger: 'change' }],
>>>>>>> v1.3
});
</script>
<style scoped>
@@ -573,7 +876,9 @@ label {
font-size: 14px;
}
input, select, textarea {
input,
select,
textarea {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
@@ -594,7 +899,8 @@ textarea {
margin-top: 30px;
}
.print-btn, .reset-btn {
.print-btn,
.reset-btn {
padding: 10px 20px;
margin: 0 10px;
border: none;
@@ -604,7 +910,7 @@ textarea {
}
.print-btn {
background-color: #4CAF50;
background-color: #4caf50;
color: white;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,33 @@
<template>
<div style="width: 100%" class="medicalSec">
<<<<<<< HEAD
<div style="margin-bottom: 5px;margin-top: 20px;">
<el-button type="primary" @click="addItem" :disabled="false">
新增
</el-button>
=======
<div style="margin-bottom: 5px; margin-top: 20px">
<el-button type="primary" @click="addItem" :disabled="false"> 新增 </el-button>
>>>>>>> v1.3
<el-button type="danger" plain @click="handleDelete" :disabled="false"> 删除 </el-button>
</div>
<div class="tableBox">
<div class="tableBoxInner">
<<<<<<< HEAD
<div :class="{'borderBottom':!tableData_top.length}" class="tableBoxItemHeader">
<div class="item itemIndex">
<div :class="{'itemCheckBox':!isChooseAll,'itemCheckBoxAct':isChooseAll}" @click="chooseAll">
=======
<div
:class="{ borderBottom: !formData.medicalSecond.surgery_tableData.length }"
class="tableBoxItemHeader"
>
<div class="item itemIndex">
<div
:class="{ itemCheckBox: !isChooseAll, itemCheckBoxAct: isChooseAll }"
@click="chooseAll"
>
>>>>>>> v1.3
<span v-show="isChooseAll"></span>
</div>
</div>
@@ -18,11 +35,21 @@
<div class="item itemSurgeryLevel">手术级别</div>
<div class="item itemSurgeryName">手术及操作名称</div>
<div class="itemSpec">
<<<<<<< HEAD
<div class="spec" style="width: 100%;border-bottom: 1px solid #ebeef5;">手术及操作医师</div>
<div class="spec">
<div class="specItem">术者</div>
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅰ助</div>
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅱ助</div>
=======
<div class="spec" style="width: 100%; border-bottom: 1px solid #ebeef5">
手术及操作医师
</div>
<div class="spec">
<div class="specItem">术者</div>
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅰ助</div>
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅱ助</div>
>>>>>>> v1.3
</div>
</div>
<div class="item itemCutLevel">切口愈合等级</div>
@@ -31,17 +58,31 @@
<div class="item itemTime borderRight">手术时长(H)</div>
</div>
<div
<<<<<<< HEAD
class="tableBoxItem"
:class="{'borderBottom':index+1===tableData_top.length}"
v-for="(item,index) in tableData_top"
:key="index">
<div class="item itemIndex">
<div :class="{'itemCheckBox':!item['isChoose'],'itemCheckBoxAct':item['isChoose']}" @click="checkItem(item)">
=======
class="tableBoxItem"
:class="{ borderBottom: index + 1 === formData.medicalSecond.surgery_tableData.length }"
v-for="(item, index) in formData.medicalSecond.surgery_tableData"
:key="index"
>
<div class="item itemIndex">
<div
:class="{ itemCheckBox: !item['isChoose'], itemCheckBoxAct: item['isChoose'] }"
@click="checkItem(item, false)"
>
>>>>>>> v1.3
<span v-show="item['isChoose']"></span>
</div>
</div>
<div class="item itemDate">
<el-date-picker
<<<<<<< HEAD
v-model="item.ctrlDate"
type="date"
value-format="YYYY-MM-DD"
@@ -56,10 +97,26 @@
:key="item.value"
:label="item.title"
:value="item.value"
=======
v-model="item.oprn_oprt_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="手术操作日期"
/>
</div>
<div class="item itemSurgeryLevel">
<el-select v-model="item.oprn_lv_code" placeholder="请选择手术级别">
<el-option
v-for="item in surgeryLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemSurgeryName">
<<<<<<< HEAD
<el-input v-model="item.surgeryName"></el-input>
</div>
<div class="itemSpec">
@@ -72,41 +129,86 @@
</div>
<div class="specItem" style="padding: 10px;border-left: 1px solid #ebeef5;">
<el-input v-model="item.surgeryMasterName_2"></el-input>
=======
<el-input v-model="item.oprn_oprt_name"></el-input>
</div>
<div class="itemSpec">
<div class="spec_">
<div class="specItem" style="padding: 10px">
<el-input v-model="item.oper_name"></el-input>
</div>
<div class="specItem" style="padding: 10px; border-left: 1px solid #ebeef5">
<el-input v-model="item.asit_1_name"></el-input>
</div>
<div class="specItem" style="padding: 10px; border-left: 1px solid #ebeef5">
<el-input v-model="item.asit_name2"></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.cutLevel">
<el-option
v-for="item in item['cutLevelArr']"
:key="item.value"
:label="item.title"
:value="item.value"
=======
<el-select v-model="item.sinc_heal_lv_code">
<el-option
v-for="item in cutLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.anesthesiaType" placeholder="请选择手术级别">
<el-option
v-for="item in operationLevelList"
:key="item.id"
:label="item.name"
:value="item.id"
=======
<el-select v-model="item.anst_mtd_code" placeholder="请选择麻醉方式">
<el-option
v-for="item in anesthesiaTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.anesthesiaLevel" placeholder="请选择手术级别">
<el-option
v-for="item in item.anesthesiaLevelArr"
:key="item.id"
:label="item.name"
:value="item.id"
=======
<el-select v-model="item.anst_lv_code" placeholder="请选择麻醉分级">
<el-option
v-for="item in anesthesiaLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemTime borderRight">
<<<<<<< HEAD
<el-input v-model="item.surgeryTime"></el-input>
=======
<el-input v-model="item.oprn_con_time"></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -114,6 +216,7 @@
<div class="form-row">
<div class="form-item">
<label>手术方式:</label>
<<<<<<< HEAD
<el-select v-model="formData['surgeryType']">
<el-option v-for="(item,index) in formData['surgeryTypeArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
</el-select>
@@ -122,40 +225,96 @@
<label>离院方式:</label>
<el-select v-model="formData['leaveType']">
<el-option v-for="(item,index) in formData['leaveTypeArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<el-select v-model="formData.medicalSecond.surgeryType">
<el-option
v-for="item in surgeryTypeOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</div>
<div class="form-item">
<label>离院方式:</label>
<el-select v-model="formData.medicalSecond.dscg_way">
<el-option
v-for="item in leaveTypeOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>是否有出院31天内再住院计划:</label>
<<<<<<< HEAD
<el-select v-model="formData['isPlan']">
<el-option v-for="(item,index) in formData['isPlanArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<el-select v-model="formData.medicalSecond.dscg_31days_rinp_flag">
<el-option
v-for="item in isPlanOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
<div class="form-item">
<label>目的:</label>
<<<<<<< HEAD
<el-input v-model="formData['purpose']"></el-input>
=======
<el-input
v-model="formData.medicalSecond.dscg_31days_rinp_pup"
placeholder="请填写目的"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>颅脑损伤患者昏迷时间-入院前:</label>
<<<<<<< HEAD
<el-input type="date" v-model="formData['comaDurationTime_before']" />
</div>
<div class="form-item">
<label>入院后:</label>
<el-input type="date" v-model="formData['comaDurationTime_after']" />
=======
<el-input type="date" v-model="formData.medicalSecond.brn_damg_bfadm_coma_dura" />
</div>
<div class="form-item">
<label>入院后:</label>
<el-input type="date" v-model="formData.medicalSecond.brn_damg_afadm_coma_dura" />
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>肿瘤分期:</label>
<<<<<<< HEAD
<el-select v-model="formData['tumorStaging']">
<el-option v-for="(item,index) in formData['tumorStagingArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<el-select v-model="formData.medicalSecond.tumorStaging">
<el-option
v-for="item in tumorStagingOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
<div class="form-item" style="flex: 0">
<label>T:</label>
<<<<<<< HEAD
<label class="form-item-specLabel"><div class="specLabelInner" style="width: 80px;margin: 0 8px 0 0;"><el-input v-model="formData['tumor_T']"></el-input></div> </label>
</div>
<div class="form-item" style="flex: 0">
@@ -165,25 +324,71 @@
<div class="form-item" style="flex: 0">
<label>M:</label>
<label class="form-item-specLabel"><div class="specLabelInner" style="width: 80px;margin: 0 8px 0 0;"><el-input v-model="formData['tumor_M']"></el-input></div> </label>
=======
<label class="form-item-specLabel"
><div class="specLabelInner" style="width: 80px; margin: 0 8px 0 0">
<el-input v-model="formData.medicalSecond.tumor_T"></el-input>
</div>
</label>
</div>
<div class="form-item" style="flex: 0">
<label>N:</label>
<label class="form-item-specLabel"
><div class="specLabelInner" style="width: 80px; margin: 0 8px 0 0">
<el-input v-model="formData.medicalSecond.tumor_N"></el-input>
</div>
</label>
</div>
<div class="form-item" style="flex: 0">
<label>M:</label>
<label class="form-item-specLabel"
><div class="specLabelInner" style="width: 80px; margin: 0 8px 0 0">
<el-input v-model="formData.medicalSecond.tumor_M"></el-input>
</div>
</label>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>判断依据:</label>
<<<<<<< HEAD
<el-select v-model="formData['judgmentBase']">
<el-option v-for="(item,index) in formData['judgmentBaseArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<el-select v-model="formData.medicalSecond.judgmentBase">
<el-option
v-for="item in judgmentBaseOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
<div class="form-item">
<label>分化程度:</label>
<<<<<<< HEAD
<el-input type="date" v-model="formData['degreeDifferentiation']" />
=======
<!-- <el-input type="date" v-model="formData.medicalSecond.bkup_deg" /> -->
<el-select v-model="formData.medicalSecond.bkup_deg_code" placeholder="请选择分化程度">
<el-option
v-for="item in bkup_deg_codeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>临床路径-进入路径</label>
<<<<<<< HEAD
<el-select v-model="formData['enterPath']">
<el-option v-for="(item,index) in formData['enterPathArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
</el-select>
@@ -192,18 +397,53 @@
<label>变异:</label>
<el-select v-model="formData['mutation']">
<el-option v-for="(item,index) in formData['mutationArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<!-- <el-select v-model="formData.medicalSecond.enterPath">
<el-option
v-for="item in enterPathOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select> -->
<el-input v-model="formData.medicalSecond.enterPath" placeholder="请输入"></el-input>
</div>
<div class="form-item">
<label>变异:</label>
<el-select v-model="formData.medicalSecond.mutation">
<el-option
v-for="item in mutationOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>退出路径</label>
<<<<<<< HEAD
<el-select v-model="formData['outPath']">
<el-option v-for="(item,index) in formData['outPathArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
</el-select>
</div>
<div class="form-item">
</div>
=======
<!-- <el-select v-model="formData.medicalSecond.outPath">
<el-option
v-for="item in outPathOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
</el-select> -->
<el-input v-model="formData.medicalSecond.outPath" placeholder="请输入"></el-input>
</div>
<div class="form-item"></div>
>>>>>>> v1.3
</div>
<div class="form-row" styLe="margin: 0;">
<div class="form-item" styLe="margin: 0;">
@@ -212,6 +452,7 @@
</div>
<div class="form-row">
<div class="form-item" style="flex: 0">
<<<<<<< HEAD
<label class="form-item-specLabel">特级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_spec']"></el-input></div> 小时</label>
</div>
<div class="form-item" style="flex: 0">
@@ -223,24 +464,78 @@
</div>
<div class="form-item" style="flex: 0">
<label class="form-item-specLabel">3级护理 <div class="specLabelInner"><el-input v-model="formData['nursingLevel_3']"></el-input></div> 小时</label>
=======
<label class="form-item-specLabel"
>特级护理
<div class="specLabelInner">
<el-input v-model="formData.medicalSecond.nursingLevel_spec"></el-input>
</div>
小时</label
>
</div>
<div class="form-item" style="flex: 0">
<label class="form-item-specLabel"
>1级护理
<div class="specLabelInner">
<el-input v-model="formData.medicalSecond.nursingLevel_1"></el-input>
</div>
小时</label
>
</div>
<div class="form-item" style="flex: 0">
<label class="form-item-specLabel"
>2级护理
<div class="specLabelInner">
<el-input v-model="formData.medicalSecond.nursingLevel_2"></el-input>
</div>
小时</label
>
</div>
<div class="form-item" style="flex: 0">
<label class="form-item-specLabel"
>3级护理
<div class="specLabelInner">
<el-input v-model="formData.medicalSecond.nursingLevel_3"></el-input>
</div>
小时</label
>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>呼吸机使用:</label>
<<<<<<< HEAD
<el-select v-model="formData['ventilatorUse']">
<el-option v-for="(item,index) in formData['ventilatorUseArr']" :key="index" :value="item['value']" :label="item['title']"></el-option>
=======
<el-select v-model="formData.medicalSecond.use_vent_flag">
<el-option
v-for="item in ventilatorUseOptions"
:key="item.id"
:value="item.value"
:label="item.label"
></el-option>
>>>>>>> v1.3
</el-select>
</div>
<div class="form-item">
<label>有创呼吸机使用时间小时:</label>
<<<<<<< HEAD
<el-input v-model="formData['ventilatorUseTime']"></el-input>
=======
<el-input
v-model="formData.medicalSecond.vent_used_dura"
placeholder="请填写有创呼吸机使用时间(小时)"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
</template>
<script setup>
<<<<<<< HEAD
import {nextTick, reactive, ref, watch} from 'vue';
import { ElMessage } from 'element-plus'
@@ -424,11 +719,89 @@ const operationLevelList = [
{ name: '二级', id: 2 },
{ name: '三级', id: 3 },
];
=======
import { reactive, ref, watch } from 'vue';
import { ElMessage } from 'element-plus';
import { cloneDeep, forEach } from 'lodash';
import formDataJs from '../../doctorstation/components/store/medicalpage';
let chooseData = reactive([]); //表格中选中的数据 TODO
let surgery_tableData = reactive([]);
const tableData_sub = ref([{}, {}]);
let isChooseAll = ref(false);
const formData = reactive(formDataJs);
const { proxy } = getCurrentInstance();
const {
dscg_way,
days_rinp_flag_31,
use_vent,
oprn_oprt_lv_code,
sinc_heal_lv_code,
anst_mtd_code,
anst_lv_code,
sys_tumor_staging,
sys_according_to,
sys_entry_path,
sys_yes_no,
sys_exit_path,
oprn_patn_type_code,
bkup_deg_code,
} = proxy.useDict(
'dscg_way',
'days_rinp_flag_31',
'use_vent',
'oprn_oprt_lv_code',
'sinc_heal_lv_code',
'anst_mtd_code',
'anst_lv_code',
'sys_tumor_staging',
'sys_according_to',
'sys_entry_path',
'sys_yes_no',
'sys_exit_path',
'oprn_patn_type_code',
'bkup_deg_code'
);
>>>>>>> v1.3
// 手术类型
const surgeryTypeOptions = oprn_patn_type_code;
// 离院方式
const leaveTypeOptions = dscg_way;
// 计划出院
const isPlanOptions = days_rinp_flag_31;
// 肿瘤分期
const tumorStagingOptions = sys_tumor_staging;
// 判断依据
const judgmentBaseOptions = sys_according_to;
// 临床路径
const enterPathOptions = sys_entry_path;
// 变异
const mutationOptions = sys_yes_no;
// 退出路径
const outPathOptions = sys_exit_path;
// 呼吸机使用
const ventilatorUseOptions = use_vent;
// 手术级别
const surgeryLevelOptions = oprn_oprt_lv_code;
// 切口愈合等级
const cutLevelOptions = sinc_heal_lv_code;
// 麻醉方式
const anesthesiaTypeOptions = anst_mtd_code;
// 麻醉分级
const anesthesiaLevelOptions = anst_lv_code;
// 分化程度
const bkup_deg_codeOptions = bkup_deg_code;
watch(
() => formData.medicalSecond.surgery_tableData,
(newValue) => {
checkItem({}, false);
}
);
// 新增
const addItem = () => {
let data = {
//手术操作日期 oprn_oprt_date
<<<<<<< HEAD
oprn_date: '',
//手术级别 手术级别名称--oprn_lv_code
@@ -619,19 +992,106 @@ const msgSuccess = (msg) => {
type: 'success',
})
}
=======
oprn_oprt_date: '',
// 手术级别
oprn_lv_code: '',
// 手术操作名称
oprn_oprt_name: '',
// 术者
oper_name: '',
// Ⅰ助
asit_1_name: '',
// Ⅱ助
asit_name2: '',
// 切口愈合等级
sinc_heal_lv_code: '',
// 麻醉方式
anst_mtd_code: '',
// 麻醉分级
anst_lv_code: '',
// 手术时常
oprn_con_time: '',
// 是否选中
isChoose: false,
};
//push
formData.medicalSecond.surgery_tableData.unshift(data);
checkItem({}, true);
};
const checkItem = (e, isAdd) => {
if (!isAdd) {
e['isChoose'] = !e['isChoose'];
}
let isSeletAll = false;
for (let index = 0; index < formData.medicalSecond.surgery_tableData.length; index++) {
const obj = formData.medicalSecond.surgery_tableData[index];
if (!obj.isChoose) {
isSeletAll = false;
break;
}
isSeletAll = true;
}
if (isSeletAll) {
isChooseAll.value = true;
} else {
isChooseAll.value = false;
}
};
const chooseAll = () => {
isChooseAll.value = !isChooseAll.value;
if (isChooseAll.value) {
formData.medicalSecond.surgery_tableData.forEach((item) => {
item.isChoose = true;
});
} else {
formData.medicalSecond.surgery_tableData.forEach((item) => {
item.isChoose = false;
});
}
};
//删除方法
const handleDelete = () => {
if (!formData.medicalSecond.surgery_tableData.length) return;
const newtableData_top = formData.medicalSecond.surgery_tableData.filter((item) => {
return !item.isChoose;
});
formData.medicalSecond.surgery_tableData.length = 0;
newtableData_top.forEach((item) => {
formData.medicalSecond.surgery_tableData.push(item);
});
isChooseAll.value = false;
msgSuccess('删除成功');
};
>>>>>>> v1.3
const msgSuccess = (msg) => {
ElMessage({
message: msg,
type: 'success',
});
};
</script>
<style lang="scss">
.medicalSec {
<<<<<<< HEAD
.el-date-editor.el-input, .el-date-editor.el-input__wrapper {
=======
.el-date-editor.el-input,
.el-date-editor.el-input__wrapper {
>>>>>>> v1.3
width: 100%;
}
.el-table td.el-table__cell div {
width: 100%;
}
}
<<<<<<< HEAD
=======
>>>>>>> v1.3
</style>
<style lang="scss" scoped>
:deep(.el-table__expand-icon) {
@@ -938,4 +1398,4 @@ label {
font-weight: bold;
font-size: 14px;
}
</style>
</style>

View File

@@ -1,15 +1,33 @@
<template>
<div style="width: 100%" class="medicalSec">
<<<<<<< HEAD
<div class="thirdItem" style="margin-top: 20px;">
=======
<div class="thirdItem" style="margin-top: 20px">
>>>>>>> v1.3
<div class="thirdItemTitle">住院费用</div>
<div class="form-row">
<div class="form-item subTitle">
<label>总费用:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['hosCharges']"></el-input>
</div>
<div class="form-item subTitle">
<label>自付金额:</label>
<el-input v-model="thirdFormData['hosCharges_self']"></el-input>
=======
<el-input
v-model="formData.hospitalization.medfee_sumamt"
placeholder="请填写总费用"
></el-input>
</div>
<div class="form-item subTitle">
<label>自付金额:</label>
<el-input
v-model="formData.hospitalization.selfpay_amt"
placeholder="请填写自付金额"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -18,21 +36,49 @@
<div class="form-row">
<div class="form-item subTitle">
<label>1一般医疗服务费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['medicalServices_1']"></el-input>
</div>
<div class="form-item subTitle">
<label>2一般治疗操作费:</label>
<el-input v-model="thirdFormData['medicalServices_2']"></el-input>
=======
<el-input
v-model="formData.medicalServices.ordn_med_servfee"
placeholder="请填写一般医疗服务费"
></el-input>
</div>
<div class="form-item subTitle">
<label>2一般治疗操作费:</label>
<el-input
v-model="formData.medicalServices.ordn_trt_oprt_fee"
placeholder="请填写一般治疗操作费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>3护理费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['medicalServices_3']"></el-input>
</div>
<div class="form-item subTitle">
<label>4其他费用:</label>
<el-input v-model="thirdFormData['medicalServices_4']"></el-input>
=======
<el-input
v-model="formData.medicalServices.nurs_fee"
placeholder="请填写护理费"
></el-input>
</div>
<div class="form-item subTitle">
<label>4其他费用:</label>
<el-input
v-model="formData.medicalServices.com_med_serv_oth_fee"
placeholder="请填写其他费用"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -41,21 +87,49 @@
<div class="form-row">
<div class="form-item subTitle">
<label>5病理诊断费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['diagnosis_5']"></el-input>
</div>
<div class="form-item subTitle">
<label>6实验室诊断费:</label>
<el-input v-model="thirdFormData['diagnosis_6']"></el-input>
=======
<el-input
v-model="formData.diagnosisClass.palg_diag_fee"
placeholder="请填写病理诊断费"
></el-input>
</div>
<div class="form-item subTitle">
<label>6实验室诊断费:</label>
<el-input
v-model="formData.diagnosisClass.lab_diag_fee"
placeholder="请填写实验室诊断费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>7影像学诊断费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['diagnosis_7']"></el-input>
</div>
<div class="form-item subTitle">
<label>8临床诊断项目费:</label>
<el-input v-model="thirdFormData['diagnosis_8']"></el-input>
=======
<el-input
v-model="formData.diagnosisClass.rdhy_diag_fee"
placeholder="请填写影像学诊断费"
></el-input>
</div>
<div class="form-item subTitle">
<label>8临床诊断项目费:</label>
<el-input
v-model="formData.diagnosisClass.clnc_dise_fee"
placeholder="请填写临床诊断项目费"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -64,17 +138,38 @@
<div class="form-row">
<div class="form-item subTitle">
<label>9非手术治疗项目费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['treatment_9']"></el-input>
</div>
<div class="form-item subTitle">
<label>临床物理治疗费:</label>
<el-input v-model="thirdFormData['treatment_9_1']"></el-input>
=======
<el-input
v-model="formData.treatmentClass.nsrgtrt_item_fee"
placeholder="请填写非手术治疗项目费"
></el-input>
</div>
<div class="form-item subTitle">
<label>临床物理治疗费:</label>
<el-input
v-model="formData.treatmentClass.clnc_phys_trt_fee"
placeholder="请填写临床物理治疗费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>10手术治疗费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['treatment_10']"></el-input>
=======
<el-input
v-model="formData.treatmentClass.rgtrt_trt_fee"
placeholder="请填写手术治疗费"
></el-input>
>>>>>>> v1.3
</div>
<div class="form-item subTitle">
<label></label>
@@ -83,11 +178,25 @@
<div class="form-row">
<div class="form-item subTitle">
<label>麻醉费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['treatment_10_1']"></el-input>
</div>
<div class="form-item subTitle">
<label>手术费:</label>
<el-input v-model="thirdFormData['treatment_10_2']"></el-input>
=======
<el-input
v-model="formData.treatmentClass.anst_fee"
placeholder="请填写麻醉费"
></el-input>
</div>
<div class="form-item subTitle">
<label>手术费:</label>
<el-input
v-model="formData.treatmentClass.rgtrt_fee"
placeholder="请填写手术费"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -96,7 +205,11 @@
<div class="form-row">
<div class="form-item subTitle">
<label>11康复费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['recovery_11']"></el-input>
=======
<el-input v-model="formData.recoveryClass.rhab_fee" placeholder="请填写康复费"></el-input>
>>>>>>> v1.3
</div>
<div class="form-item subTitle">
<label></label>
@@ -108,7 +221,14 @@
<div class="form-row">
<div class="form-item subTitle">
<label>12中医治疗费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['TCM_12']"></el-input>
=======
<el-input
v-model="formData.TCMClass.tcm_trt_fee"
placeholder="请填写中医治疗费"
></el-input>
>>>>>>> v1.3
</div>
<div class="form-item subTitle">
<label></label>
@@ -120,11 +240,22 @@
<div class="form-row">
<div class="form-item subTitle">
<label>13西药费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['Western_13']"></el-input>
</div>
<div class="form-item subTitle">
<label>抗菌药物费用</label>
<el-input v-model="thirdFormData['Western_13_1']"></el-input>
=======
<el-input v-model="formData.WesternClass.wm_fee" placeholder="请填写西药费"></el-input>
</div>
<div class="form-item subTitle">
<label>抗菌药物费用</label>
<el-input
v-model="formData.WesternClass.abtl_medn_fee"
placeholder="请填写抗菌药物费用"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -133,11 +264,25 @@
<div class="form-row">
<div class="form-item subTitle">
<label>14中成药费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['chinese_14']"></el-input>
</div>
<div class="form-item subTitle">
<label>15中草药费:</label>
<el-input v-model="thirdFormData['chinese_15']"></el-input>
=======
<el-input
v-model="formData.chineseClass.tcmpat_fee"
placeholder="请填写中成药费"
></el-input>
</div>
<div class="form-item subTitle">
<label>15中草药费:</label>
<el-input
v-model="formData.chineseClass.tcmherb_fee"
placeholder="请填写中草药费"
></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -146,27 +291,59 @@
<div class="form-row">
<div class="form-item subTitle">
<label>16血费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['blood_16']"></el-input>
</div>
<div class="form-item subTitle">
<label>17白蛋白类制品费:</label>
<el-input v-model="thirdFormData['blood_17']"></el-input>
=======
<el-input v-model="formData.bloodClass.blo_fee" placeholder="请填写血费"></el-input>
</div>
<div class="form-item subTitle">
<label>17白蛋白类制品费:</label>
<el-input
v-model="formData.bloodClass.albu_fee"
placeholder="请填写白蛋白类制品费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>18球蛋白类制品费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['blood_18']"></el-input>
</div>
<div class="form-item subTitle">
<label>19凝血因子类制品费:</label>
<el-input v-model="thirdFormData['blood_19']"></el-input>
=======
<el-input
v-model="formData.bloodClass.glon_fee"
placeholder="请填写球蛋白类制品费"
></el-input>
</div>
<div class="form-item subTitle">
<label>19凝血因子类制品费:</label>
<el-input
v-model="formData.bloodClass.clotfac_fee"
placeholder="请填写凝血因子类制品费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>20细胞因子类制品费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['blood_20']"></el-input>
=======
<el-input
v-model="formData.bloodClass.cyki_fee"
placeholder="请填写细胞因子类制品费"
></el-input>
>>>>>>> v1.3
</div>
<div class="form-item subTitle">
<label></label>
@@ -178,17 +355,38 @@
<div class="form-row">
<div class="form-item subTitle">
<label>21检查用一次性医用材料费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['consumables_21']"></el-input>
</div>
<div class="form-item subTitle">
<label>22治疗用一次性医用材料费:</label>
<el-input v-model="thirdFormData['consumables_22']"></el-input>
=======
<el-input
v-model="formData.consumablesClass.exam_dspo_matl_fee"
placeholder="请填写检查用一次性医用材料费"
></el-input>
</div>
<div class="form-item subTitle">
<label>22治疗用一次性医用材料费:</label>
<el-input
v-model="formData.consumablesClass.trt_dspo_matl_fee"
placeholder="请填写治疗用一次性医用材料费"
></el-input>
>>>>>>> v1.3
</div>
</div>
<div class="form-row">
<div class="form-item subTitle">
<label>23手术用一次性医用材料费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['consumables_23']"></el-input>
=======
<el-input
v-model="formData.consumablesClass.oprn_dspo_matl_fee"
placeholder="请填写手术用一次性医用材料费"
></el-input>
>>>>>>> v1.3
</div>
<div class="form-item subTitle">
<label></label>
@@ -200,7 +398,11 @@
<div class="form-row">
<div class="form-item subTitle">
<label>24其他费:</label>
<<<<<<< HEAD
<el-input v-model="thirdFormData['other_24']"></el-input>
=======
<el-input v-model="formData.otherClass.oth_fee" placeholder="请填写其他费"></el-input>
>>>>>>> v1.3
</div>
<div class="form-item">
<label></label>
@@ -209,6 +411,7 @@
</div>
<div style="margin-bottom: 5px">
<<<<<<< HEAD
<el-button type="primary" @click="addSubItem" :disabled="false">
新增
</el-button>
@@ -221,12 +424,29 @@
<div class="subTableItem1" :class="{'borderBottom':!tableData_sub.length}">
<div class="subItemCheckbox">
<div class="" :class="{'subItemCheckboxAct':isChooseAllSub,'subChooseAll':!isChooseAllSub}" @click="chooseAll(2)"><span v-show="isChooseAllSub"></span></div>
=======
<el-button type="primary" @click="addSubItem" :disabled="false"> 新增 </el-button>
<el-button type="danger" plain @click="handleSubDelete" :disabled="false"> 删除 </el-button>
</div>
<div class="subTable">
<div class="subTableHeader">其他诊断及手术附加页</div>
<div class="subTableItem1" :class="{ borderBottom: !formData.other_tableData.length }">
<div class="subItemCheckbox">
<div
class=""
:class="{ subItemCheckboxAct: isChooseAllSub, subChooseAll: !isChooseAllSub }"
@click="chooseAll(2)"
>
<span v-show="isChooseAllSub"></span>
</div>
>>>>>>> v1.3
</div>
<div class="subItem1">出院诊断</div>
<div class="subItem2">疾病编码</div>
<div class="subItem2">入院病情</div>
<div class="subItem2">转归情况</div>
</div>
<<<<<<< HEAD
<div class="subTableItem"
:class="{'borderBottom':index+1===tableData_sub.length}"
v-for="(item,index) in tableData_sub" :key="index">
@@ -244,21 +464,64 @@
</div>
<div class="subItem2">
<el-input v-model="item.back"></el-input>
=======
<div
class="subTableItem"
:class="{ borderBottom: index + 1 === formData.other_tableData.length }"
v-for="(item, index) in formData.other_tableData"
:key="index"
>
<div class="subItemCheckbox" @click="checkItem(item, 2, false)">
<div
class=""
:class="{ subItemCheckboxAct: item['isChoose'], subChooseAll: !item['isChoose'] }"
>
<span v-show="item['isChoose']"></span>
</div>
</div>
<div class="subItem1">
<el-input v-model="item.dscg_dise_dscr" placeholder="请填写出院诊断"></el-input>
</div>
<div class="subItem2">
<el-input v-model="item.code" placeholder="请填写疾病编码"></el-input>
</div>
<div class="subItem2">
<el-input v-model="item.adm_cond" placeholder="请填写入院病情"></el-input>
</div>
<div class="subItem2">
<el-input v-model="item.back" placeholder="请填写转归情况"></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
<div style="margin-bottom: 5px">
<<<<<<< HEAD
<el-button type="primary" @click="addItem" :disabled="false">
新增
</el-button>
=======
<el-button type="primary" @click="addItem" :disabled="false"> 新增 </el-button>
>>>>>>> v1.3
<el-button type="danger" plain @click="handleDelete" :disabled="false"> 删除 </el-button>
</div>
<div class="tableBox">
<div class="tableBoxInner">
<<<<<<< HEAD
<div :class="{'borderBottom':!tableData_top.length}" class="tableBoxItemHeader">
<div class="item itemIndex">
<div :class="{'itemCheckBox':!isChooseAll,'itemCheckBoxAct':isChooseAll}" @click="chooseAll(1)">
=======
<div
:class="{ borderBottom: !formData.surgery_tableData.length }"
class="tableBoxItemHeader"
>
<div class="item itemIndex">
<div
:class="{ itemCheckBox: !isChooseAll, itemCheckBoxAct: isChooseAll }"
@click="chooseAll(1)"
>
>>>>>>> v1.3
<span v-show="isChooseAll"></span>
</div>
</div>
@@ -266,11 +529,21 @@
<div class="item itemSurgeryLevel">手术级别</div>
<div class="item itemSurgeryName">手术及操作名称</div>
<div class="itemSpec">
<<<<<<< HEAD
<div class="spec" style="width: 100%;border-bottom: 1px solid #ebeef5;">手术及操作医师</div>
<div class="spec">
<div class="specItem">术者</div>
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅰ助</div>
<div class="specItem" style="border-left: 1px solid #ebeef5;">Ⅱ助</div>
=======
<div class="spec" style="width: 100%; border-bottom: 1px solid #ebeef5">
手术及操作医师
</div>
<div class="spec">
<div class="specItem">术者</div>
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅰ助</div>
<div class="specItem" style="border-left: 1px solid #ebeef5">Ⅱ助</div>
>>>>>>> v1.3
</div>
</div>
<div class="item itemCutLevel">切口愈合等级</div>
@@ -279,17 +552,31 @@
<div class="item itemTime borderRight">手术时长(H)</div>
</div>
<div
<<<<<<< HEAD
class="tableBoxItem"
:class="{'borderBottom':index+1===tableData_top.length}"
v-for="(item,index) in tableData_top"
:key="index">
<div class="item itemIndex">
<div :class="{'itemCheckBox':!item['isChoose'],'itemCheckBoxAct':item['isChoose']}" @click="checkItem(item,1)">
=======
class="tableBoxItem"
:class="{ borderBottom: index + 1 === formData.surgery_tableData.length }"
v-for="(item, index) in formData.surgery_tableData"
:key="index"
>
<div class="item itemIndex">
<div
:class="{ itemCheckBox: !item['isChoose'], itemCheckBoxAct: item['isChoose'] }"
@click="checkItem(item, 1, false)"
>
>>>>>>> v1.3
<span v-show="item['isChoose']"></span>
</div>
</div>
<div class="item itemDate">
<el-date-picker
<<<<<<< HEAD
v-model="item.ctrlDate"
type="date"
value-format="YYYY-MM-DD"
@@ -304,10 +591,27 @@
:key="item.value"
:label="item.title"
:value="item.value"
=======
v-model="item.oprn_oprt_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="手术操作日期"
:default-time="item.oprn_date"
/>
</div>
<div class="item itemSurgeryLevel">
<el-select v-model="item.oprn_lv_code" placeholder="请选择手术级别">
<el-option
v-for="item in surgeryLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemSurgeryName">
<<<<<<< HEAD
<el-input v-model="item.surgeryName"></el-input>
</div>
<div class="itemSpec">
@@ -320,41 +624,86 @@
</div>
<div class="specItem" style="padding: 10px;border-left: 1px solid #ebeef5;">
<el-input v-model="item.surgeryMasterName_2"></el-input>
=======
<el-input v-model="item.oprn_oprt_name" placeholder="请填写手术及操作名称"></el-input>
</div>
<div class="itemSpec">
<div class="spec_">
<div class="specItem" style="padding: 10px">
<el-input v-model="item.oper_name"></el-input>
</div>
<div class="specItem" style="padding: 10px; border-left: 1px solid #ebeef5">
<el-input v-model="item.asit_1_name"></el-input>
</div>
<div class="specItem" style="padding: 10px; border-left: 1px solid #ebeef5">
<el-input v-model="item.asit_name2"></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.cutLevel">
<el-option
v-for="item in item['cutLevelArr']"
:key="item.value"
:label="item.title"
:value="item.value"
=======
<el-select v-model="item.sinc_heal_lv_code">
<el-option
v-for="item in cutLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.anesthesiaType" placeholder="请选择手术级别">
<el-option
v-for="item in operationLevelList"
:key="item.id"
:label="item.name"
:value="item.id"
=======
<el-select v-model="item.anst_mtd_code" placeholder="请选择麻醉方式">
<el-option
v-for="item in anesthesiaTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemCutLevel">
<<<<<<< HEAD
<el-select v-model="item.anesthesiaLevel" placeholder="请选择手术级别">
<el-option
v-for="item in item.anesthesiaLevelArr"
:key="item.id"
:label="item.name"
:value="item.id"
=======
<el-select v-model="item.anst_lv_code" placeholder="请选择麻醉分级">
<el-option
v-for="item in anesthesiaLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>>>>>>> v1.3
></el-option>
</el-select>
</div>
<div class="item itemTime borderRight">
<<<<<<< HEAD
<el-input v-model="item.surgeryTime"></el-input>
=======
<el-input v-model="item.oprn_con_time" placeholder="请填写手术时常"></el-input>
>>>>>>> v1.3
</div>
</div>
</div>
@@ -362,6 +711,7 @@
</div>
</template>
<<<<<<< HEAD
<script setup lang="ts">
import {nextTick, reactive, ref, watch} from 'vue';
import { ElMessage } from 'element-plus'
@@ -866,13 +1216,196 @@ const chooseAll = (type) => {
}
=======
<script setup>
import { reactive, ref, watch, watchEffect } from 'vue';
import { ElMessage } from 'element-plus';
import { cloneDeep } from 'lodash';
import formDataJs from '../../doctorstation/components/store/medicalpage';
const props = defineProps(['formData']);
const formData = reactive(formDataJs);
let isChooseAll = ref(false);
let isChooseAllSub = ref(false);
const { proxy } = getCurrentInstance();
const { oprn_oprt_lv_code, sinc_heal_lv_code, anst_mtd_code, anst_lv_code } = proxy.useDict(
'oprn_oprt_lv_code',
'sinc_heal_lv_code',
'anst_mtd_code',
'anst_lv_code'
);
// 手术级别
const surgeryLevelOptions = oprn_oprt_lv_code;
// 切口愈合
const cutLevelOptions = sinc_heal_lv_code;
// 麻醉方式
const anesthesiaTypeOptions = anst_mtd_code;
// 麻醉分级
const anesthesiaLevelOptions = anst_lv_code;
watch([() => formData.other_tableData, () => formData.surgery_tableData], () => {
checkItem({}, 1);
checkItem({}, 2);
});
//最下table--新增
const addItem = () => {
let data = {
// 是否选中
isChoose: false,
// 手术操作日期
oprn_oprt_date: '',
// 手术级别
oprn_lv_code: '',
// 手术操作名称
oprn_oprt_name: '',
// 术者
oper_name: '',
// I助
asit_1_name: '',
// II助
asit_name2: '',
// 切口愈合等级
sinc_heal_lv_code: '',
// 麻醉方式
anst_mtd_code: '',
// 麻醉等级
anst_lv_code: '',
// 手术时常
oprn_con_time: '',
};
//push
formData.surgery_tableData.unshift(data);
checkItem({}, 1, true);
};
//最下table--删除
const handleDelete = () => {
if (!formData.surgery_tableData.length) return;
const newtableData_sub = formData.surgery_tableData.filter((item) => {
return !item.isChoose;
});
formData.surgery_tableData.length = 0;
newtableData_sub.forEach((item) => {
formData.surgery_tableData.push(item);
});
isChooseAll.value = false;
msgSuccess('删除成功');
};
//其他诊断及手术附加页 添加方法
const addSubItem = () => {
let item = {
isChoose: false,
// 出院诊断
dscg_dise_dscr: '',
// 疾病编码
code: '',
// 入院病情
adm_cond: '',
// 转归情况
back: '',
};
formData.other_tableData.unshift(item);
checkItem({}, 2, true);
};
//其他诊断及手术附加页 删除方法
const handleSubDelete = () => {
if (!formData.other_tableData.length) return;
const newtableData_sub = formData.other_tableData.filter((item) => {
return !item.isChoose;
});
formData.other_tableData.length = 0;
newtableData_sub.forEach((item) => {
formData.other_tableData.push(item);
});
isChooseAllSub.value = false;
msgSuccess('删除成功');
};
//公共全选
const checkItem = (e, type, isAdd = false) => {
if (type === 1) {
if (!isAdd) {
e['isChoose'] = !e['isChoose'];
}
let isSeletAll = false;
for (let index = 0; index < formData.surgery_tableData.length; index++) {
const obj = formData.surgery_tableData[index];
if (!obj.isChoose) {
isSeletAll = false;
break;
}
isSeletAll = true;
}
if (isSeletAll) {
isChooseAll.value = true;
} else {
isChooseAll.value = false;
}
} else {
if (!isAdd) {
e['isChoose'] = !e['isChoose'];
}
let isSeletAll = false;
for (let index = 0; index < formData.other_tableData.length; index++) {
const obj = formData.other_tableData[index];
if (!obj.isChoose) {
isSeletAll = false;
break;
}
isSeletAll = true;
}
if (isSeletAll) {
isChooseAllSub.value = true;
} else {
isChooseAllSub.value = false;
}
}
};
const chooseAll = (type) => {
// logHtml()
if (type === 1) {
if (formData.surgery_tableData.length) {
isChooseAll.value = !isChooseAll.value;
if (isChooseAll.value) {
formData.surgery_tableData.forEach((item) => {
item.isChoose = true;
});
} else {
formData.surgery_tableData.forEach((item) => {
item.isChoose = false;
});
}
}
} else {
if (formData.other_tableData.length) {
isChooseAllSub.value = !isChooseAllSub.value;
if (isChooseAllSub.value) {
formData.other_tableData.forEach((item) => {
item.isChoose = true;
});
} else {
formData.other_tableData.forEach((item) => {
item.isChoose = false;
});
}
}
}
};
>>>>>>> v1.3
const msgSuccess = (msg) => {
ElMessage({
message: msg,
type: 'success',
<<<<<<< HEAD
})
}
=======
});
};
>>>>>>> v1.3
const logHtml = () => {
let html = `<!DOCTYPE html>
@@ -1878,24 +2411,39 @@ const logHtml = () => {
</div>
</div>
</body>
<<<<<<< HEAD
</html>`
console.log(JSON.stringify(html))
}
=======
</html>`;
console.log(JSON.stringify(html));
};
>>>>>>> v1.3
</script>
<style lang="scss">
.medicalSec {
<<<<<<< HEAD
.el-date-editor.el-input, .el-date-editor.el-input__wrapper {
=======
.el-date-editor.el-input,
.el-date-editor.el-input__wrapper {
>>>>>>> v1.3
width: 100%;
}
.el-table td.el-table__cell div {
width: 100%;
}
}
<<<<<<< HEAD
=======
>>>>>>> v1.3
</style>
<style lang="scss" scoped>
:deep(.el-table__expand-icon) {
@@ -2311,4 +2859,8 @@ label {
font-weight: bold;
font-size: 14px;
}
</style>
<<<<<<< HEAD
</style>
=======
</style>
>>>>>>> v1.3