2026-03-09 14:09:14 +08:00
|
|
|
<template>
|
|
|
|
|
<div class="labpat_box">
|
2026-03-19 18:00:24 +08:00
|
|
|
<el-form :model="labPat" label-width="5rem" label-position="right" class="left-form">
|
2026-03-30 15:15:42 +08:00
|
|
|
<div :class="['sh_box', getColor(newStatus)]" v-if="visbileMask">
|
2026-03-19 18:00:24 +08:00
|
|
|
<div class="text">{{ getLableType(newStatus) }}</div>
|
2026-03-16 18:01:58 +08:00
|
|
|
</div>
|
2026-03-09 14:09:14 +08:00
|
|
|
<el-form-item label="病人来源">
|
2026-03-13 17:49:15 +08:00
|
|
|
<SelectTable v-model:data="labPat.patType" :fields="brlyFields" :table-data="dictData.PT" placeholder=""
|
|
|
|
|
@getDataValue="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="病人代号" required>
|
2026-03-19 18:00:24 +08:00
|
|
|
<el-input v-model="labPat.patId" @change="brdhHandle" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-form-item label="姓 名" required>
|
|
|
|
|
<el-input v-model="labPat.patName" @change="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-form-item label="性 别" required>
|
|
|
|
|
<SelectTable v-model:data="labPat.patSex" :table-data="dictData.SX" placeholder=""
|
2026-03-09 14:09:14 +08:00
|
|
|
@getDataValue="handleFieldChange" />
|
|
|
|
|
</el-form-item>
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-form-item label="年龄" required>
|
2026-03-09 14:09:14 +08:00
|
|
|
<el-col :span="14">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.patAge" @change="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="10">
|
2026-03-27 09:04:15 +08:00
|
|
|
<SelectTable v-model:data="labPat.ageUnit" :table-data="dictData.AU" placeholder="" :clearable="false"
|
2026-03-09 14:09:14 +08:00
|
|
|
@getDataValue="handleFieldChange" />
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-form-item>
|
2026-03-16 18:01:58 +08:00
|
|
|
<el-form-item label="生理周期" v-if="labPat.patSex == '2'">
|
|
|
|
|
<SelectTable v-model:data="labPat.slzq" :table-data="dictData.SLZQ" placeholder=""
|
|
|
|
|
@getDataValue="handleFieldChange" />
|
|
|
|
|
</el-form-item>
|
2026-03-09 14:09:14 +08:00
|
|
|
<el-form-item label="送检医生">
|
2026-03-16 18:01:58 +08:00
|
|
|
<SelectTable v-model:data="labPat.doctorCode" :tableData="dictData.DOCTOR" placeholder=""
|
2026-03-19 18:00:24 +08:00
|
|
|
@getDataValue="doctorHandle" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="送检科室">
|
2026-03-27 09:04:15 +08:00
|
|
|
<SelectTable v-model:data="labPat.departCode" :table-data="dictData.DEPT" placeholder=""
|
2026-03-19 18:00:24 +08:00
|
|
|
@getDataValue="deptHandle" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="床 号">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.patBed" @change="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<el-form-item label="临床诊断">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.diagnosisName" @change="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="备 注">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.bz" @change="handleFieldChange" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<el-form-item label="登记人员">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.userName" disabled />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="登记时间">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-date-picker v-model="labPat.orderTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" :disabled="true"
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-form-item label="医疗机构">
|
|
|
|
|
<el-input v-model="labPat.srcHospName" disabled />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="证件类型">
|
2026-03-13 17:49:15 +08:00
|
|
|
<SelectTable v-model:data="labPat.zjlx" :table-data="dictData.ZJLX" placeholder=""
|
2026-03-09 14:09:14 +08:00
|
|
|
@getDataValue="handleFieldChange" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="证件号码">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.patIdentity" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系电话">
|
2026-03-13 17:49:15 +08:00
|
|
|
<el-input v-model="labPat.phone" />
|
2026-03-09 14:09:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import SelectTable from '@/components/SelectTable/index.vue';
|
|
|
|
|
import { getDictData, formatDict, dictData } from '@/hooks'
|
2026-03-19 18:00:24 +08:00
|
|
|
|
2026-03-09 14:09:14 +08:00
|
|
|
const props = defineProps({
|
|
|
|
|
labPat: {
|
|
|
|
|
type: Object,
|
|
|
|
|
required: true
|
|
|
|
|
},
|
2026-03-30 15:15:42 +08:00
|
|
|
//展示水印
|
|
|
|
|
visbileMask: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
default: false
|
2026-03-09 14:09:14 +08:00
|
|
|
},
|
|
|
|
|
});
|
2026-03-19 18:00:24 +08:00
|
|
|
const newStatus = ref('');
|
|
|
|
|
watch(() => props.labPat.status, (newVal: any) => {
|
|
|
|
|
newStatus.value = newVal;
|
2026-03-16 18:01:58 +08:00
|
|
|
})
|
2026-03-09 14:09:14 +08:00
|
|
|
|
|
|
|
|
|
2026-03-19 18:00:24 +08:00
|
|
|
const emit = defineEmits(['update:labPat', 'getBrdh']);
|
2026-03-09 14:09:14 +08:00
|
|
|
|
|
|
|
|
const brlyFields = ref([
|
|
|
|
|
{ prop: 'value', label: '代号', width: 80, enablePinyinSearch: true },
|
|
|
|
|
{ prop: 'label', label: '名称', width: 120, enablePinyinSearch: true },
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
const ysFields = ref([
|
|
|
|
|
{ prop: 'userName', label: '用户代号', width: 80, enablePinyinSearch: true },
|
|
|
|
|
{ prop: 'nickName', label: '用户姓名', width: 150, enablePinyinSearch: true },
|
|
|
|
|
])
|
2026-03-19 18:00:24 +08:00
|
|
|
|
|
|
|
|
const doctorHandle = (data) => {
|
|
|
|
|
props.labPat.doctorName = data.label
|
|
|
|
|
}
|
|
|
|
|
const deptHandle = (data) => {
|
2026-03-27 09:04:15 +08:00
|
|
|
props.labPat.departName = data.label
|
2026-03-19 18:00:24 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-09 14:09:14 +08:00
|
|
|
const handleFieldChange = async () => {
|
2026-03-19 18:00:24 +08:00
|
|
|
|
2026-03-09 14:09:14 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const getLableType = (type: string) => {
|
2026-03-30 15:15:42 +08:00
|
|
|
const item = dictData.value.SQDS.find((p: any) => p.value === type);
|
|
|
|
|
return item && props.visbileMask ? item.label : '';
|
2026-03-09 14:09:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getColor = (type: string) => {
|
|
|
|
|
switch (type) {
|
2026-03-16 18:01:58 +08:00
|
|
|
case '10':
|
2026-03-09 14:09:14 +08:00
|
|
|
return 'cs_color';
|
2026-03-16 18:01:58 +08:00
|
|
|
case '20':
|
2026-03-09 14:09:14 +08:00
|
|
|
return 'sh_color';
|
2026-03-16 18:01:58 +08:00
|
|
|
case '30':
|
2026-03-09 14:09:14 +08:00
|
|
|
return 'cb_color';
|
2026-03-16 18:01:58 +08:00
|
|
|
case '40':
|
2026-03-09 14:09:14 +08:00
|
|
|
return 'eb_color';
|
2026-03-16 18:01:58 +08:00
|
|
|
case '50':
|
2026-03-09 14:09:14 +08:00
|
|
|
return 'sd_color';
|
|
|
|
|
default:
|
|
|
|
|
return 'default';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 病人代号查询病人信息的逻辑
|
|
|
|
|
const brdhHandle = () => {
|
2026-03-19 18:00:24 +08:00
|
|
|
emit('getBrdh', props.labPat.patId)
|
2026-03-09 14:09:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
2026-03-19 18:00:24 +08:00
|
|
|
|
2026-03-09 14:09:14 +08:00
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.labpat_box {
|
|
|
|
|
height: calc(90vh - 40px);
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
border-right: 1px solid #E6E9ED;
|
|
|
|
|
padding-right: 5px;
|
|
|
|
|
|
|
|
|
|
.check_box {
|
|
|
|
|
:deep(.el-checkbox__input.is-checked+.el-checkbox__label) {
|
|
|
|
|
color: #f00 !important;
|
|
|
|
|
font-size: .875rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-checkbox__label) {
|
|
|
|
|
font-size: .875rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-input__wrapper) {
|
|
|
|
|
box-shadow: 0 0 0 1px #96B8D9 inset;
|
|
|
|
|
background-color: rgba(236, 244, 251, 0.5);
|
|
|
|
|
color: #08355E;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.is-focus {
|
|
|
|
|
box-shadow: 0 0 0 1px #1f6dd3 inset !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
box-shadow: 0 0 0 1px #1f6dd3 inset !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// .el-input__placeholder {
|
|
|
|
|
// color: none !important;
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-select__wrapper) {
|
|
|
|
|
box-shadow: 0 0 0 1px #96B8D9 inset;
|
|
|
|
|
background-color: rgba(236, 244, 251, 0.5);
|
|
|
|
|
color: #08355E;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.is-focus {
|
|
|
|
|
box-shadow: 0 0 0 1px #1f6dd3 inset !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
box-shadow: 0 0 0 1px #1f6dd3 inset !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select__placeholder {
|
|
|
|
|
color: #08355E !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-input__inner) {
|
|
|
|
|
color: #08355E !important;
|
|
|
|
|
-webkit-text-fill-color: #08355E;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:deep(.el-select__input) {
|
|
|
|
|
color: #08355E !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2026-03-13 17:49:15 +08:00
|
|
|
.left-form {
|
2026-03-09 14:09:14 +08:00
|
|
|
flex: 1;
|
|
|
|
|
position: relative;
|
|
|
|
|
height: 100%;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
overflow-x: hidden;
|
2026-03-19 18:00:24 +08:00
|
|
|
padding-top: 5px;
|
2026-03-09 14:09:14 +08:00
|
|
|
|
|
|
|
|
.el-form-item {
|
2026-03-13 17:49:15 +08:00
|
|
|
margin-bottom: 8px;
|
2026-03-09 14:09:14 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-13 17:49:15 +08:00
|
|
|
:deep(.el-form-item__label) {
|
2026-03-09 14:09:14 +08:00
|
|
|
padding-bottom: 0px;
|
|
|
|
|
color: #08355E;
|
2026-03-13 17:49:15 +08:00
|
|
|
font-size: .875rem !important;
|
|
|
|
|
|
|
|
|
|
}
|
2026-03-09 14:09:14 +08:00
|
|
|
|
2026-03-13 17:49:15 +08:00
|
|
|
:deep(.el-form-item__label:before) {
|
|
|
|
|
margin-right: 0 !important;
|
2026-03-09 14:09:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-form-item--default .el-form-item__label) {
|
|
|
|
|
height: 27px !important;
|
|
|
|
|
line-height: 27px !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-form-item--default .el-form-item__content) {
|
|
|
|
|
line-height: 27px !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// pointer-events: none;
|
|
|
|
|
|
|
|
|
|
:deep(.el-radio__label) {
|
|
|
|
|
color: #08355E;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:deep(.el-switch__label) {
|
|
|
|
|
color: #08355E;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.sh_box {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
background: rgba(0, 0, 0, 0);
|
|
|
|
|
z-index: 9;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
writing-mode: vertical-rl;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 100px;
|
|
|
|
|
|
|
|
|
|
.text {
|
|
|
|
|
font-style: italic;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// pointer-events: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cs_color {
|
|
|
|
|
color: rgba(40, 189, 187, 0.25);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sh_color {
|
|
|
|
|
color: rgba(238, 8, 8, 0.25);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cb_color {
|
|
|
|
|
color: rgba(0, 128, 0, 0.25);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.eb_color {
|
|
|
|
|
color: rgba(255, 165, 0, 0.25);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sd_color {
|
|
|
|
|
color: rgb(233, 126, 32, .25);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.default {
|
|
|
|
|
color: rgba(40, 189, 187, 0.25);
|
|
|
|
|
}
|
|
|
|
|
</style>
|