Revert "```"

This reverts commit abc0674531.
This commit is contained in:
2025-12-26 22:21:21 +08:00
parent ae6c486114
commit 3115e38cc4
920 changed files with 14452 additions and 107025 deletions

View File

@@ -1,9 +0,0 @@
import request from '@/utils/request';
// 体温单图表展示
export function getSummaryList(data) {
return request({
url: '/document/record/summary',
method: 'get',
params: data,
});
}

View File

@@ -1,844 +0,0 @@
<template>
<div class="main">
<PatientList :selected-patient="patientInfo" :on-select="handlePatientSelect" />
<el-container style="height: 100%">
<el-main style="padding: 0">
<div style="margin-bottom: 10px">
<el-date-picker
v-model="intervalTime"
type="daterange"
range-separator="~"
start-placeholder="起始时间"
end-placeholder="结束时间"
:size="medium"
value-format="YYYY-MM-DD"
/>
<el-button style="margin-left: 10px" type="primary" size="default" @click="onSearch"
>搜索</el-button
>
<el-button type="primary" size="default" @click="onAddRecord">新增</el-button>
<el-button type="primary" size="default" @click="printNursingRecord">打印</el-button>
</div>
<div class="header">
<div class="header-item" v-for="(item, index) in personInfo1" :key="index">
<div class="header-title">
<el-text>{{ item.title }}</el-text>
</div>
<div class="header-content">
<el-text>{{ item.text }}</el-text>
</div>
</div>
<!-- <div class="header-item">
<div class="header-title"><el-text></el-text></div>
<div class="header-content"><el-text>20</el-text></div>
<div class="header-title"><el-text></el-text></div>
</div> -->
</div>
<div class="table-contanier">
<el-table
:data="tableData"
:span-method="arraySpanMethod"
border
style="width: 100%"
class="custom-header-table"
height="100%"
>
<!-- 日期与时间合并表头 -->
<el-table-column align="center" class-name="date-time-header" width="150px">
<template #header>
<div class="date-time-container">
<div class="date-label">日期</div>
<div class="time-label">时间</div>
</div>
</template>
<template #default="scope">
<div class="date-time-cell">
<div
v-if="
recordsData[scope.$index].id === null ||
recordsData[scope.$index].id === undefined
"
>
<div style="color: red; font-weight: bold">
总入量为:{{ scope.row.input }}、总出量为:{{ scope.row.output }}
</div>
</div>
<div v-else style="display: flex">
<div class="date-cell">{{ scope.row.date }}</div>
/
<div class="time-cell">{{ scope.row.time }}</div>
</div>
</div>
</template>
</el-table-column>
<!-- 一般column -->
<!-- <el-table-column
v-for="column in averageColumn"
:key="column.id"
:label="column.title"
align="center"
>
<template #default="scope">
{{ averageColumn($index).prop == 'temperature' ? scope.temperature : '' }}
</template>
</el-table-column> -->
<!-- 嵌套column -->
<!-- <el-table-column
v-for="column in nestingColumn"
:key="column.id"
:label="column.title"
align="center"
>
<el-table-column
v-for="column in column.child"
:prop="column.prop"
:key="column.id"
:label="column.title"
align="center"
></el-table-column>
</el-table-column> -->
<el-table-column label="意识" align="center" width="200px">
<template #default="scope">
<!-- <el-select
v-model="scope.row.consciousnessCodeList"
placeholder=""
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="99"
disabled=""
>
<el-option
v-for="item in ysOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> -->
<el-tag
style="margin: 2px"
type=""
v-for="item in filterYs(scope.row.consciousnessCodeList)"
:key="item.value"
>{{ item.label }}</el-tag
>
</template>
</el-table-column>
<el-table-column label="体温(℃)" align="center" width="100px">
<template #default="scope">
<el-text> {{ scope.row.temperature }}</el-text>
</template>
</el-table-column>
<el-table-column label="脉搏(次/分)" align="center" width="100px">
<template #default="scope">
<el-text> {{ scope.row.pulse }}</el-text>
</template>
</el-table-column>
<el-table-column label="呼吸(次/分)" align="center" width="100px">
<template #default="scope">
<el-text> {{ scope.row.breathe }}</el-text>
</template>
</el-table-column>
<el-table-column label="血压(mmHg)" align="center" width="100px">
<template #default="scope">
<el-text> {{ scope.row.bloodPressure }}</el-text>
</template>
</el-table-column>
<el-table-column label="血氧饱和度(%)" align="center" width="110px">
<template #default="scope">
<el-text> {{ scope.row.bloodOxygen }}</el-text>
</template>
</el-table-column>
<el-table-column label="吸氧升/分" align="center" width="110px">
<template #default="scope">
<el-text> {{ scope.row?.oxygen }}</el-text>
</template>
</el-table-column>
<!-- 入量列组 -->
<el-table-column label="入量(ml)" align="center">
<el-table-column label="名称用法" align="center">
<template #default="scope">
<el-text> {{ scope.row.inputName }}</el-text>
</template>
</el-table-column>
<el-table-column label="量" align="center">
<template #default="scope">
<el-text> {{ scope.row.input }}</el-text>
</template>
</el-table-column>
</el-table-column>
<!-- 出量列组 -->
<el-table-column label="出量" align="center">
<el-table-column label="名称" align="center">
<template #default="scope">
<el-text> {{ scope.row.outputName }}</el-text>
</template>
</el-table-column>
<el-table-column label="量" align="center">
<template #default="scope">
<el-text> {{ scope.row.output }}</el-text>
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="skin" label="皮肤" align="center" width="200px">
<template #default="scope">
<!-- <el-select
placeholder=""
v-model="scope.row.skinconditionCodeList"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="99"
disabled=""
>
<el-option
v-for="item in skinconditionOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> -->
<el-tag
style="margin: 2px"
type=""
v-for="item in filterPf(scope.row.skinconditionCodeList)"
:key="item.value"
>{{ item.label }}</el-tag
>
</template>
</el-table-column>
<el-table-column prop="tube" label="管路" align="center" width="200px">
<template #default="scope">
<!-- <el-select
placeholder=""
v-model="scope.row.pipelinecare"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="99"
disabled=""
>
<el-option
v-for="item in pipelinecareOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> -->
<el-tag
style="margin: 2px"
type=""
v-for="item in filterGl(scope.row.pipelinecare)"
:key="item.value"
>{{ item.label }}</el-tag
>
</template>
</el-table-column>
<el-table-column prop="observation" label="病情观察及措施" align="center" width="120px">
<template #default="scope">
<el-text> {{ scope.row.condition }}</el-text>
</template>
</el-table-column>
<el-table-column
prop="nurse"
label="护士签名"
align="center"
width="100px"
></el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="150px">
<template #default="scope" style="display: flex">
<el-button
type="primary"
size="small"
plain
@click="onEdit(scope.row, scope.$index)"
>编辑</el-button
>
<el-button
type="danger"
size="small"
plain
@click="onDelete(scope.row, scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div class="tip-text">
<el-text
>备注:以下项目在相应表格中填写序号:一意识(1、意识清 2、嗜睡3、意识模糊 4、昏睡5.浅昏迷
6.深昏迷)二、管路(1.尿管2.鼻饲管3.胃肠减压管4.
外周静脉置管)5.中心静脉置管6.胸腔闭式引流管 7.腹腔引流管 8.头部引流管 9.其他引流管 10
其他置管)三、皮肤(1.完好 2压疮 3.出血点 4.破损 5. 水肿)。</el-text
>
</div>
</el-main>
</el-container>
<!-- 弹出框 -->
<el-dialog v-model="dialogTableVisible" :show-close="false" width="85%" style="height: 700px">
<OperationRecord
@cancleDialog="onCancle"
@refreshData="refreshFn"
ref="redordRef"
></OperationRecord>
</el-dialog>
</div>
</template>
<script setup>
import { ref, reactive, nextTick, watch } from 'vue';
import OperationRecord from './operationrecord.vue';
import { patientInfo, updatePatientInfo } from '../../inpatientDoctor/home/store/patient';
import { getTemperatureType } from '../tprsheet/api/api';
import { getSummaryList } from './api';
import { getRecordByEncounterIdList } from '../../inpatientDoctor/home/emr/api';
import { deleteRecord } from '../../inpatientDoctor/home/emr/api';
import printUtils, { PRINT_TEMPLATE } from '@/utils/printUtils';
import PatientList from '@/components/PatientList/patient-list.vue';
import { ElMessage } from 'element-plus';
// 处理患者选择
const handlePatientSelect = (patient) => {
updatePatientInfo(patient);
};
const dialogTableVisible = ref(false);
const intervalTime = ref([]);
const redordRef = ref();
const isTemplate = ref(false);
const editForm = ref({
definitionId: '',
startTime: '',
endTime: '',
});
const recordsData = ref([]);
watch(patientInfo, (newVal) => {
const dataArr = [
{ title: '科别', text: newVal.inHospitalOrgName ?? '' },
{ title: '姓名', text: newVal.patientName ?? '' },
{ title: '年龄', text: newVal.age ?? '' },
{ title: '性别', text: newVal.genderEnum_enumText ?? '' },
{ title: '床号', text: newVal.bedName ?? '' },
{ title: '住院', text: '人民医院' },
{ title: '入院日期', text: newVal.inHospitalTime ?? '' },
{ title: '诊断', text: newVal.regDiagnosisName ?? '' },
];
Object.assign(personInfo1, dataArr);
getDefinitionIdNet();
});
// 意识
const ysOptions = [
{
value: '1',
label: '清醒',
},
{
value: '2',
label: '嗜睡',
},
{
value: '3',
label: '意识模糊',
},
{
value: '4',
label: '昏睡',
},
{
value: '5',
label: '谵妄',
},
{
value: '6',
label: '浅昏迷',
},
{
value: '7',
label: '中度昏迷',
},
{
value: '8',
label: '深昏迷',
},
{
value: '9',
label: '全麻未醒',
},
{
value: '10',
label: '镇静',
},
];
// 氧疗
const oxygenOptions = [
{
value: '1',
label: '鼻导管吸氧',
},
{
value: '2',
label: '面罩吸氧',
},
{
value: '3',
label: '高流量氧疗',
},
{
value: '4',
label: '机械通气',
},
];
// 皮肤情况
const skinconditionOption = [
{
value: '1',
label: '完好',
},
{
value: '2',
label: '压疮',
},
{
value: '3',
label: '出血点',
},
{
value: '4',
label: '破损',
},
{
value: '5',
label: '水肿',
},
{
value: '6',
label: '瘀斑',
},
{
value: '7',
label: '过敏',
},
{
value: '8',
label: '其他',
},
];
// 管路护理
const pipelinecareOption = [
{
value: '1',
label: '胃管',
},
{
value: '2',
label: '导尿管',
},
{
value: '3',
label: '静脉置管',
},
{
value: '4',
label: '吸氧管',
},
{
value: '5',
label: 'T管',
},
{
value: '6',
label: '胸腔引流管',
},
{
value: '7',
label: '腹腔引流管',
},
{
value: '8',
label: '伤口引流管',
},
{
value: '9',
label: '脑室引流管',
},
{
value: '10',
label: '其他',
},
];
// 过滤意识
const filterYs = (row) => {
let dats = [];
(row || []).forEach((str) => {
ysOptions.forEach((item) => {
if (item.value == str) {
dats.push(item);
}
});
});
return dats;
};
// 过滤皮肤
const filterPf = (row) => {
let dats = [];
(row || []).forEach((str) => {
skinconditionOption.forEach((item) => {
if (item.value == str) {
dats.push(item);
}
});
});
return dats;
};
// 过滤管路
const filterGl = (row) => {
let dats = [];
(row || []).forEach((str) => {
pipelinecareOption.forEach((item) => {
if (item.value == str) {
dats.push(item);
}
});
});
return dats;
};
// 获取护理记录单类型
const getDefinitionIdNet = async () => {
const res = await getTemperatureType({ menuEnum: '3' });
//默认选中第一个
if (res.data?.length > 0) {
isTemplate.value = true;
const obj = res.data[0];
editForm.value.definitionId = obj.id;
getTableList();
} else {
isTemplate.value = false;
}
};
const refreshFn = () => {
getTableList();
};
// 获取列表数据
const getTableList = async () => {
const res = await getSummaryList({
...editForm.value,
encounterId: patientInfo.value.encounterId,
patientId: patientInfo.value.patientId,
});
console.log('getTableList========>', JSON.stringify(res.data));
recordsData.value = res.data || [];
const tables = [];
(res.data || []).forEach((item) => {
const obj = JSON.parse(item.contentJson);
tables.push(obj);
});
tableData.value = tables;
};
// 个人信息
const personInfo1 = reactive([
{ title: '科别', text: '' },
{ title: '姓名', text: '' },
{ title: '年龄', text: '' },
{ title: '性别', text: '' },
{ title: '床号', text: '' },
{ title: '住院', text: '' },
{ title: '入院日期', text: '' },
{ title: '诊断', text: '' },
]);
// 普通表头配置
const averageColumn = [
{
id: '0',
prop: 'consciousness',
title: '意识',
},
{
id: '1',
prop: 'temperature',
title: '体温(℃)',
},
{
id: '2',
prop: 'pulse',
title: '脉搏(次/分)',
},
{
id: '3',
prop: 'respiration',
title: '呼吸(次/分)',
},
{
id: '4',
prop: 'bloodPressure',
title: '血压(mmHg)',
},
{
id: '5',
prop: 'bloodOxygen',
title: '血氧饱和度(%)',
},
{
id: '6',
prop: 'oxygenFlow',
title: '吸氧(升/分)',
},
];
//
const nestingColumn = ref([
{
id: '7',
prop: '',
title: '入量(ml)',
child: [
{
id: '7-1',
prop: 'name',
title: '名称用法',
},
{
id: '7-2',
prop: 'plan',
title: '量',
},
],
},
{
id: '8',
prop: '',
title: '出量',
child: [
{
id: '8-1',
prop: 'name',
title: '名称',
},
{
id: '8-2',
prop: 'plan',
title: '量',
},
],
},
]);
// 表格数据
const tableData = ref([]);
// 合并单元格
const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
const obj = recordsData.value[rowIndex];
if (obj.id === undefined || obj.id === null) {
if (columnIndex == 0) {
return {
rowspan: 1,
colspan: 17,
};
} else {
return {
rowspan: 0,
colspan: 0,
};
}
}
return {
rowspan: 1,
colspan: 1,
};
// if (rowIndex == 1) {
// if (columnIndex == 0) {
// return {
// rowspan: 1,
// colspan: 17,
// };
// } else {
// return {
// rowspan: 0,
// colspan: 0,
// };
// }
// }
// return {
// rowspan: 1,
// colspan: 1,
// };
};
// 编辑
const onEdit = (row, index) => {
const item = recordsData.value[index];
dialogTableVisible.value = true;
nextTick(() => {
if (redordRef) {
redordRef.value.editEmit(item);
}
});
};
// 新增
const onAddRecord = () => {
if (!patientInfo.value) {
ElMessage({
type: 'error',
message: '请选择患者',
});
return;
}
if (!isTemplate.value) {
ElMessage({
type: 'error',
message: '护理记录未配置,请联系管理员',
});
return;
}
dialogTableVisible.value = true;
nextTick(() => {
if (redordRef) {
redordRef.value.reset();
}
});
};
// 搜索
const onSearch = () => {
if (typeof intervalTime === 'object' && intervalTime === null) {
editForm.value.startTime = '';
editForm.value.endTime = '';
getTableList();
} else {
if (intervalTime.value?.length > 0) {
editForm.value.startTime = intervalTime.value[0];
editForm.value.endTime = intervalTime.value[1];
getTableList();
} else {
editForm.value.startTime = '';
editForm.value.endTime = '';
getTableList();
}
}
};
// 删除
const onDelete = async (row, index) => {
const ids = recordsData.value[index].id;
debugger;
// recordsData.value
await deleteRecord([ids]);
getTableList();
};
// 关闭弹出曾次
const onCancle = () => {
dialogTableVisible.value = false;
};
</script>
<style lang="scss" scoped>
.main {
padding-top: 10px;
display: flex;
height: 100%;
.header {
// background: red;
display: flex;
justify-content: space-between;
padding: 0 10px;
.header-item {
display: flex;
align-items: center;
}
}
.table-contanier {
margin-top: 10px;
background: red;
height: calc(100vh - 280px);
.custom-header-table ::v-deep .el-table__header-wrapper th {
background-color: #f5f7fa;
font-weight: normal;
}
/* 日期时间表头样式 */
.date-time-header {
width: 120px;
}
.date-time-container {
position: relative;
width: 100%;
height: 100%;
min-height: 60px;
}
.date-label {
position: absolute;
top: 5px;
left: 5px;
z-index: 1;
}
.time-label {
position: absolute;
bottom: 5px;
right: 5px;
z-index: 1;
}
.date-time-container::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
154deg,
transparent 49.5%,
#dcdfe6 49.5%,
#dcdfe6 50.5%,
transparent 50.5%
);
pointer-events: none;
}
/* 日期时间单元格样式 */
.date-time-cell {
// position: relative;
display: flex;
// flex-direction: column;
align-items: center;
// height: 100%;
// min-height: 48px;
}
.date-cell {
// position: absolute;
// top: 5px;
// left: 5px;
// background: red;
}
.time-cell {
// position: absolute;
// bottom: 5px;
// right: 5px;
height: 100%;
// width: 100%;
text-align: left;
}
}
.tip-text {
padding: 0 10px;
}
}
</style>

View File

@@ -1,662 +0,0 @@
<template>
<div class="main">
<div class="title">
<h1>患者护理记录单</h1>
</div>
<el-scrollbar height="500px" style="height: 100%">
<div class="content">
<el-form :model="rulesFrom" :rules="rules" ref="formRef">
<el-card>
<div class="commoncss">
<el-form-item prop="date" label="日期:" label-width="100px">
<el-date-picker
v-model="rulesFrom.date"
type="date"
placeholder="请选择"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
@change="dateChange"
/>
</el-form-item>
<el-form-item prop="time" label="时间:" label-width="100px">
<el-time-picker
v-model="rulesFrom.time"
placeholder="请选择时间"
format="HH:mm"
value-format="HH:mm"
@change="dateChange"
/>
</el-form-item>
</div>
<!-- 基本信息 -->
<div class="foundation">
<div class="commone-title">基本信息</div>
<div class="foundation-content">
<div class="foundation-content-first">
<el-form-item label="意识:" label-width="100px">
<el-select
v-model="rulesFrom.consciousnessCodeList"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="1"
placeholder="请选择"
style="width: 220px"
>
<el-option
v-for="item in ysOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="体温:" label-width="100px">
<div class="commoncss">
<el-input
v-model="rulesFrom.temperature"
placeholder="请输入"
clearable
style="width: 220px"
/>
<div></div>
</div>
</el-form-item>
<el-form-item label="心率:" label-width="100px">
<div class="commoncss">
<el-input
v-model="rulesFrom.heartRate"
placeholder="请选择"
clearable
style="width: 220px"
/>
<div class="unit">/</div>
</div>
</el-form-item>
</div>
<div class="foundation-content-second">
<el-form-item label="脉率:" label-width="100px" class="wait-flex">
<div class="commoncss">
<el-input
v-model="rulesFrom.pulse"
placeholder="请选择"
clearable
class="wait-flex"
style="width: 180px"
/>
<div class="unit">/</div>
</div>
</el-form-item>
<el-form-item label="呼吸:" label-width="100px" class="wait-flex">
<div class="commoncss">
<el-input
v-model="rulesFrom.breathe"
placeholder="请选择"
clearable
class="wait-flex"
style="width: 180px"
/>
<div class="unit">/</div>
</div>
</el-form-item>
<el-form-item label="血压:" label-width="100px" class="wait-flex">
<div class="commoncss">
<el-input
v-model="rulesFrom.bloodPressure"
placeholder="请选择"
clearable
style="width: 180px"
/>
<div class="unit">mmHg</div>
</div>
</el-form-item>
<el-form-item label="血氧饱和度:" label-width="100px" class="wait-flex">
<div class="commoncss">
<el-input
v-model="rulesFrom.bloodOxygen"
placeholder="请选择"
clearable
style="width: 180px"
/>
<div class="unit">%</div>
</div>
</el-form-item>
</div>
<div>
<el-form-item label="吸氧升/分:" label-width="100px" class="wait-flex">
<div class="commoncss">
<el-input
v-model="rulesFrom.oxygen"
placeholder="请选择"
clearable
style="width: 180px"
/>
<div class="unit">/</div>
</div>
</el-form-item>
</div>
</div>
</div>
<!-- 氧疗 -->
<div class="oxygen">
<div class="oxygen-title commone-title">氧疗/min</div>
<div class="oxygen-content">
<el-form-item label="方式:" label-width="100px">
<el-select
v-model="rulesFrom.oxygenCodeList"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="1"
placeholder="请选择"
style="width: 220px"
>
<el-option
v-for="item in oxygenOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="流量:" label-width="100px">
<div>
<el-input
v-model="rulesFrom.oxygenflow"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
</div>
</div>
<!-- 入量 -->
<div class="input">
<div class="input-title commone-title">入量</div>
<div class="input-content">
<el-form-item label="名称:" label-width="100px">
<div>
<el-input
v-model="rulesFrom.inputName"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
<el-form-item label="ml" label-width="100px">
<div>
<el-input
v-model="rulesFrom.input"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
<el-form-item label="途径:" label-width="100px">
<div>
<el-input
v-model="rulesFrom.inputvia"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
</div>
</div>
<!-- 出量 -->
<div class="out">
<div class="out-title commone-title">出量</div>
<div class="out-content">
<el-form-item label="名称:" label-width="100px">
<div>
<el-input
v-model="rulesFrom.outputName"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
<el-form-item label="ml" label-width="100px">
<div>
<el-input
v-model="rulesFrom.output"
placeholder="请输入"
clearable
style="width: 220px"
/>
</div>
</el-form-item>
</div>
</div>
<!-- 皮肤情况 -->
<div class="skin">
<el-form-item label="皮肤情况:" label-width="100px">
<el-select
v-model="rulesFrom.skinconditionCodeList"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="3"
placeholder="请选择"
style="width: 380px"
>
<el-option
v-for="item in skinconditionOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<!-- 管路护理 -->
<div class="nursing">
<el-form-item label="管路护理:" label-width="100px">
<el-select
v-model="rulesFrom.pipelinecare"
multiple
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="3"
placeholder="请选择"
style="width: 380px"
>
<el-option
v-for="item in pipelinecareOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<!-- 病情措施 -->
<div class="nursing">
<el-form-item label="病情措施:" label-width="100px">
<div>
<el-input
type="textarea"
v-model="rulesFrom.condition"
placeholder="请选择"
clearable
style="width: 380px"
:rows="10"
:autosize="{ minRows: 5, maxRows: 10 }"
/>
</div>
</el-form-item>
</div>
<!-- 护士签名 -->
<div class="nurse">
<el-form-item label="护士签名:" label-width="100px">
<div>
<el-input
v-model="rulesFrom.nurse"
placeholder="请选择"
clearable
style="width: 380px"
/>
</div>
</el-form-item>
</div>
</el-card>
</el-form>
</div>
</el-scrollbar>
<div style="display: flex; justify-content: flex-end; margin-top: 10px">
<el-button @click="onCancle">取消</el-button>
<el-button type="primary" @click="saveData">保存</el-button>
</div>
</div>
</template>
<script setup>
import { computed, nextTick, reactive, ref, watch, watchEffect } from 'vue';
import dayjs from 'dayjs';
import { getTemperatureType, addRecord } from '../tprsheet/api/api';
import { patientInfo } from '../../inpatientDoctor/home/store/patient';
import { ElMessage } from 'element-plus';
const formRef = ref();
// 意识
const ysOptions = [
{
value: '1',
label: '清醒',
},
{
value: '2',
label: '嗜睡',
},
{
value: '3',
label: '意识模糊',
},
{
value: '4',
label: '昏睡',
},
{
value: '5',
label: '谵妄',
},
{
value: '6',
label: '浅昏迷',
},
{
value: '7',
label: '中度昏迷',
},
{
value: '8',
label: '深昏迷',
},
{
value: '9',
label: '全麻未醒',
},
{
value: '10',
label: '镇静',
},
];
// 氧疗
const oxygenOptions = [
{
value: '1',
label: '鼻导管吸氧',
},
{
value: '2',
label: '面罩吸氧',
},
{
value: '3',
label: '高流量氧疗',
},
{
value: '4',
label: '机械通气',
},
];
// 皮肤情况
const skinconditionOption = [
{
value: '1',
label: '完好',
},
{
value: '2',
label: '压疮',
},
{
value: '3',
label: '出血点',
},
{
value: '4',
label: '破损',
},
{
value: '5',
label: '水肿',
},
{
value: '6',
label: '瘀斑',
},
{
value: '7',
label: '过敏',
},
{
value: '8',
label: '其他',
},
];
// 管路护理
const pipelinecareOption = [
{
value: '1',
label: '胃管',
},
{
value: '2',
label: '导尿管',
},
{
value: '3',
label: '静脉置管',
},
{
value: '4',
label: '吸氧管',
},
{
value: '5',
label: 'T管',
},
{
value: '6',
label: '胸腔引流管',
},
{
value: '7',
label: '腹腔引流管',
},
{
value: '8',
label: '伤口引流管',
},
{
value: '9',
label: '脑室引流管',
},
{
value: '10',
label: '其他',
},
];
const rulesFrom = ref({
date: '', //日期 年月日
time: '', //时间 十分
recordTime: '', //组合日期时间 年月日时分
consciousnessCodeList: [], //意识code
temperature: '', //体温
heartRate: '', //心率
pulse: '', //脉搏
breathe: '', //呼吸
bloodPressure: '', //血压
bloodOxygen: '', //血氧
oxygenCodeList: [], //氧疗
oxygenflow: '', //氧疗流量
inputName: '', //入量名称
input: '', //入量
inputvia: '', //入量途径
outputName: '', //出量名称
output: '', //出量
skinconditionCodeList: [], //皮肤情况
pipelinecare: [], //管路护理
condition: '', //病情
nurse: '', //护士
oxygen: '',
});
const rules = reactive({
date: [{ required: true, message: '请选择日期', trigger: 'blur' }],
time: [{ required: true, message: '请选择时间', trigger: 'blur' }],
});
const dateChange = () => {
rulesFrom.value.recordTime = rulesFrom.value.date + ' ' + rulesFrom.value.time + ':00';
};
// 计算时间
rulesFrom.value.recordTime = computed(() => {
console.log('11111111111111');
return rulesFrom.value.date + ' ' + rulesFrom.value.time;
});
// 保存form
const editForm = ref({
id: '',
definitionId: '',
definitionBusNo: '',
contentJson: '',
statusEnum: 1, // 0草稿/暂存 1提交 2归档 3修改
organizationId: 0,
encounterId: '',
patientId: '',
recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
createBy: '',
source: '3',
});
const emit = defineEmits(['cancleDialog', 'refreshData']);
const onCancle = () => {
emit('cancleDialog');
};
// 保存数据
const saveData = () => {
if (!patientInfo.value) {
ElMessage({
type: 'error',
message: '请选择患者',
});
}
editForm.value.contentJson = JSON.stringify(rulesFrom.value);
editForm.value.encounterId = patientInfo.value.encounterId;
editForm.value.patientId = patientInfo.value.patientId;
editForm.value.recordTime = rulesFrom.value.recordTime;
console.log('editForm=================>', JSON.stringify(rulesFrom.value));
formRef.value.validate(async (res) => {
if (res) {
await addRecord(editForm.value);
if (editForm.value.id && editForm.value.id.length > 0) {
ElMessage.success('护理记录修改成功');
} else {
ElMessage.success('护理记录保存成功');
}
emit('refreshData');
}
});
};
// 获取护理记录单类型
const getDefinitionIdNet = async () => {
const res = await getTemperatureType({ menuEnum: '3' });
//默认选中第一个
if (res.data?.length > 0) {
const obj = res.data[0];
editForm.value.definitionId = obj.id;
editForm.value.definitionBusNo = obj.busNo;
}
};
watch(patientInfo, () => {
getDefinitionIdNet();
});
// 重置
const reset = () => {
rulesFrom.value = {
date: '', //日期 年月日
time: '', //时间 十分
recordTime: '', //组合日期时间 年月日时分
consciousnessCodeList: [], //意识code
temperature: '', //体温
heartRate: '', //心率
pulse: '', //脉搏
breathe: '', //呼吸
bloodPressure: '', //血压
bloodOxygen: '', //血氧
oxygenCodeList: [], //氧疗
oxygenflow: '', //氧疗流量
inputName: '', //入量名称
input: '', //入量
inputvia: '', //入量途径
outputName: '', //出量名称
output: '', //出量
skinconditionCodeList: [], //皮肤情况
pipelinecare: [], //管路护理
condition: '', //病情
nurse: '', //护士
};
editForm.value = {
id: '',
definitionId: '',
definitionBusNo: '',
contentJson: '',
statusEnum: 1, // 0草稿/暂存 1提交 2归档 3修改
organizationId: 0,
encounterId: '',
patientId: '',
recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
createBy: '',
source: '3',
};
getDefinitionIdNet();
};
// 编辑
const editEmit = (row) => {
console.log('rowwwww=======>', JSON.stringify(row));
editForm.value.id = row.id;
editForm.value.definitionId = row.definitionId;
editForm.value.definitionBusNo = row.definitionBusNo;
rulesFrom.value = JSON.parse(row.contentJson);
};
defineExpose({ reset, editEmit });
</script>
<style lang="scss" scoped>
.main {
display: flex;
flex-direction: column;
.title {
width: 100%;
text-align: center;
}
.foundation {
.foundation-content {
.foundation-content-first {
display: flex;
}
.foundation-content-second {
display: flex;
}
}
}
.oxygen {
.oxygen-title {
}
.oxygen-content {
display: flex;
}
}
.input {
.input-title {
}
.input-content {
display: flex;
}
}
.out {
.out-title {
}
.out-content {
display: flex;
}
}
}
.commoncss {
display: flex;
}
.unit {
width: 50px;
}
.wait-flex {
flex: 1;
}
.commone-title {
font-weight: bold;
}
</style>