From 83ef13dab87cb59fccf0514d7d47f2ca0cae9f0f Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期六, 21 十二月 2024 23:06:11 +0800
Subject: [PATCH] 更新
---
src/views/home/components/pingubiao/editDietary2.vue | 30 +
package-lock.json | 2
src/views/home/components/pingubiao/editDietary4.vue | 31 +
src/views/home/components/dietary_survey.vue | 6
src/views/home/components/editDietary2.vue | 4
src/views/styles.css | 69 +++
src/views/home/components/editDietary.vue | 10
.env.development | 4
src/views/home/components/pingubiao/editDietary3.vue | 30 +
src/views/home/components/suifangjilu/index.vue | 625 ++++++++++++++++++++++++++------
src/views/home/index.vue | 1
src/views/home/components/fangAn/editDietary.vue | 50 ++
src/views/home/components/fangAn/index.vue | 20
src/views/home/components/pingubiao/editDietary5.vue | 32 +
package.json | 2
src/views/home/components/pingubiao/index.vue | 2
src/views/test.html | 144 +++++++
src/views/home/components/pingubiao/editDietary.vue | 31 +
18 files changed, 914 insertions(+), 179 deletions(-)
diff --git a/.env.development b/.env.development
index 4db89da..f6a2c27 100644
--- a/.env.development
+++ b/.env.development
@@ -2,5 +2,5 @@
ENV = development
# 本地环境接口地址
-# VITE_API_URL = 'http://testbs.ihemodialysis.com/'
-VITE_API_URL = 'https://hemobs.icoldchain.cn/'
+VITE_API_URL = 'http://testbs.ihemodialysis.com/'
+# VITE_API_URL = 'https://hemobs.icoldchain.cn/'
diff --git a/package-lock.json b/package-lock.json
index 2f7a8f7..60d4c02 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,9 +20,11 @@
"echarts-gl": "^2.0.9",
"echarts-wordcloud": "^2.1.0",
"element-plus": "^2.6.1",
+ "html2canvas": "^1.4.1",
"html2pdf.js": "^0.10.2",
"js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2",
+ "jspdf": "^2.5.2",
"jsplumb": "^2.15.6",
"mitt": "^3.0.1",
"nprogress": "^0.2.0",
diff --git a/package.json b/package.json
index ef03aa5..cd4dc20 100644
--- a/package.json
+++ b/package.json
@@ -21,9 +21,11 @@
"echarts-gl": "^2.0.9",
"echarts-wordcloud": "^2.1.0",
"element-plus": "^2.6.1",
+ "html2canvas": "^1.4.1",
"html2pdf.js": "^0.10.2",
"js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2",
+ "jspdf": "^2.5.2",
"jsplumb": "^2.15.6",
"mitt": "^3.0.1",
"nprogress": "^0.2.0",
diff --git a/src/views/home/components/dietary_survey.vue b/src/views/home/components/dietary_survey.vue
index 44516e1..3da6815 100644
--- a/src/views/home/components/dietary_survey.vue
+++ b/src/views/home/components/dietary_survey.vue
@@ -163,10 +163,10 @@
wherecondition:`survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
ordercondition: 'survery_time desc'
}
- if(state.formInline.date.length===2){
+ if(state.formInline?.date?.length===2){
pasm.wherecondition+=` and survery_time BETWEEN '${state.formInline.date[0]} 00:00:00' AND '${state.formInline.date[1]} 23:59:59'`
}
- if(state.formInline.formTableName){
+ if(state.formInline?.formTableName){
pasm.wherecondition+=`and suvery_form_name='${state.formInline.formTableName}'`
}
const loading = ElLoading.service({
@@ -202,7 +202,7 @@
wherecondition:`survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
ordercondition:'survery_time DESC'
}
- if(state.formInline.date.length===2){
+ if(state.formInline?.date?.length===2){
pasm.wherecondition+=`and survery_time BETWEEN '${state.formInline.date[0]} 00:00:00' AND '${state.formInline.date[1]} 23:59:59'`
}
if(state.formInline.formTableName){
diff --git a/src/views/home/components/editDietary.vue b/src/views/home/components/editDietary.vue
index 6e39465..8d979c1 100644
--- a/src/views/home/components/editDietary.vue
+++ b/src/views/home/components/editDietary.vue
@@ -12,21 +12,21 @@
<th colspan="2">
<el-form-item label="初次调查日期">
<el-date-picker v-model="state.tableData.初次调查日期" type="date" style="width: 100px;"
- placeholder="" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
+ placeholder="" readonly format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
</el-form-item>
</th>
<th colspan="2">
<el-form-item label="更新日期">
<el-date-picker v-model="state.tableData.更新日期" type="date" style="width: 100px;"
- placeholder="" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
+ placeholder="" readonly format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
</el-form-item>
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" placeholder="" />
+ <el-input readonly v-model="state.tableData.记录者" placeholder="" />
</el-form-item>
</th>
@@ -693,7 +693,7 @@
surveryPerson: userInfos.value.code,
surveryJsonBody: JSON.stringify(state.tableData),
suveryFormName:'膳食调查表',
- updateTime: ''
+ updateTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS')
}
console.log(info)
if(info.id===0){
@@ -799,6 +799,8 @@
console.log(mode)
state.viewInfo=mode
state.tableData=JSON.parse(mode.surveryJsonBody)
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
diff --git a/src/views/home/components/editDietary2.vue b/src/views/home/components/editDietary2.vue
index 25a5eab..05896ef 100644
--- a/src/views/home/components/editDietary2.vue
+++ b/src/views/home/components/editDietary2.vue
@@ -916,7 +916,7 @@
surveryJsonBody: JSON.stringify(state.tableData),
suveryFormName: '营养膳食调查表',
surveryFormType: 0,
- updateTime: ''
+ updateTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'),
}
console.log(info)
if (info.id === 0) {
@@ -952,6 +952,8 @@
console.log(mode)
state.viewInfo = mode
state.tableData = JSON.parse(mode.surveryJsonBody)
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
diff --git a/src/views/home/components/fangAn/editDietary.vue b/src/views/home/components/fangAn/editDietary.vue
index 1bf8873..7219e2c 100644
--- a/src/views/home/components/fangAn/editDietary.vue
+++ b/src/views/home/components/fangAn/editDietary.vue
@@ -1,8 +1,8 @@
<template>
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="营养指导报告" :fullscreen="true" width="100%">
- <div class="container" style="width: 100%; height: 100%;overflow: auto;">
- <div id="printFrom1">
+ <div class="container" style="width: 100%; height: 100%;overflow: auto;" >
+ <div id="printFrom1" class="print-section">
<div>
<el-form size="small">
<div style="width: 100%">
@@ -12,7 +12,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="实施日期">
- <el-date-picker v-model="state.tableData.初次调查日期" type="date"
+ <el-date-picker v-model="state.tableData.实施日期" type="date"
style="width: 100px;" placeholder="" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
</el-form-item>
@@ -20,7 +20,7 @@
<el-col :span="12">
<div style="text-align:right;width: 100%">
- <span>营养师:</span> <el-input v-model="state.tableData.记录者"
+ <span>营养师:</span> <el-input v-model="state.tableData.记录者" readonly
style="width: 100px;" placeholder="" />
</div>
@@ -31,6 +31,7 @@
</th>
</tr>
+
<tr>
<td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;">
S:询问饮食营养状况、生活习惯</td>
@@ -296,7 +297,7 @@
placeholder="" />
</td>
</tr>
-
+ <tr class="page-break"></tr>
<tr>
<td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;">
P:饮食营养方案及食谱,定期随访并及时调整</td>
@@ -490,6 +491,7 @@
</el-input>
</td>
</tr>
+
<tr>
<td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;">
食物替换法</td>
@@ -604,6 +606,8 @@
<script setup lang="ts" name="visualizingLinkDemo2">
import { Check } from '@element-plus/icons-vue'
import html2pdf from 'html2pdf.js';
+import html2canvas from 'html2canvas';
+import { jsPDF } from 'jspdf';
import { reactive, onMounted, onUnmounted, ref } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -631,7 +635,7 @@
innerVisible:false,
tableData: {
表名: '患者方案表',
- 初次调查日期: "",
+ 实施日期: "",
填表日期: '',
更新日期: '',
记录者: '陈银成',
@@ -821,7 +825,7 @@
const generatePDF = () => {
const element = document.getElementById('printFrom1');
const opt = {
- margin: 10,
+ margin: 0,
filename: `${state.tableData.表名}.pdf`,
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
@@ -865,7 +869,7 @@
const getPageInfo = async () => {
state.tableData = {
表名: '患者方案表',
- 初次调查日期: "",
+ 实施日期: formatDate(new Date(),'YYYY-mm-dd'),
填表日期: '',
更新日期: '',
记录者: userInfos.value.userName,
@@ -969,6 +973,18 @@
其他: '1克盐=6.5克酱油=10克蚝油 水果 互相替换,如苹果/梨/西瓜/桃子/火龙果等'
}
}
+ state.viewInfo = {
+ id: 0,
+ code: '',
+ clientCode: userInfos.value.clientCode,
+ patientCode: patientsInfo.value.code,
+ surveryTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'),
+ surveryPerson: userInfos.value.code,
+ surveryJsonBody: '',
+ suveryFormName: '营养指导报告',
+ surveryFormType: 2,
+ updateTime: ''
+ };
const from1 = await getFrom1()
const from2 = await getFrom2()
const from3 = await getFrom3()
@@ -1066,6 +1082,8 @@
console.log(mode)
state.viewInfo = mode
state.tableData = JSON.parse(mode.surveryJsonBody)
+ state.tableData.实施日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
@@ -1114,4 +1132,20 @@
.lvse {
background-color: rgb(239.8, 248.9, 235.3);
}
+@media print, screen {
+ .print-section {
+ width: auto !important;
+ max-width: none !important;
+ overflow: visible !important;
+ }
+
+ .print-section > * {
+ page-break-inside: avoid;
+ }
+
+ .page-break {
+ display: block;
+ page-break-after: always;
+ }
+}
</style>
diff --git a/src/views/home/components/fangAn/index.vue b/src/views/home/components/fangAn/index.vue
index ef48029..99c5162 100644
--- a/src/views/home/components/fangAn/index.vue
+++ b/src/views/home/components/fangAn/index.vue
@@ -150,7 +150,7 @@
wherecondition:`survery_form_type=2 and patient_code='${patientsInfo.value.code}'`,
ordercondition: 'survery_time desc'
}
- if(state.formInline.date.length===2){
+ if(state.formInline?.date?.length===2){
pasm.wherecondition+=` and survery_time BETWEEN '${state.formInline.date[0]} 00:00:00' AND '${state.formInline.date[1]} 23:59:59'`
}
if(state.formInline.formTableName){
@@ -179,7 +179,7 @@
wherecondition:`survery_form_type=2 and patient_code='${patientsInfo.value.code}'`,
ordercondition:'survery_time DESC'
}
- if(state.formInline.date.length===2){
+ if(state.formInline?.date?.length===2){
pasm.wherecondition+=`and survery_time BETWEEN '${state.formInline.date[0]} 00:00:00' AND '${state.formInline.date[1]} 23:59:59'`
}
if(state.formInline.formTableName){
@@ -241,22 +241,6 @@
</script>
<style lang="scss">
-
-
- .gridtable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;width: 100%;}
-
- .gridtable th {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;}
-
- .gridtable td {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;min-width: 100px;}
- .input-underline {
- border: none; /* 移除所有边框 */
- border-bottom: 1px solid #ccc; /* 显示下边框 */
- outline: none; /* 移除点击输入框时浏览器可能会提供的默认轮廓线 */
- text-align: center;
- }
- .width50{
- width: 50px;
- }
.infinite-list {
overflow: auto;
padding: 0;
diff --git a/src/views/home/components/pingubiao/editDietary.vue b/src/views/home/components/pingubiao/editDietary.vue
index ae33d75..44673c0 100644
--- a/src/views/home/components/pingubiao/editDietary.vue
+++ b/src/views/home/components/pingubiao/editDietary.vue
@@ -2,7 +2,7 @@
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="营养风险筛查表(NRS2002)" :fullscreen="true" width="100%">
<div class="container" style="width: 100%; height: 100%; overflow: auto">
- <div>
+ <div id="pinggu1">
<div>
<el-form size="small">
<div style="width: 100%">
@@ -11,6 +11,7 @@
<th colspan="2">
<el-form-item label="初次调查日期">
<el-date-picker
+ readonly
v-model="state.tableData.初次调查日期"
type="date"
style="width: 100px"
@@ -23,6 +24,7 @@
<th colspan="2">
<el-form-item label="更新日期">
<el-date-picker
+ readonly
v-model="state.tableData.更新日期"
type="date"
style="width: 100px"
@@ -34,7 +36,7 @@
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" style="width: 100px" placeholder="" />
+ <el-input v-model="state.tableData.记录者" style="width: 100px" readonly placeholder="" />
</el-form-item>
</th>
</tr>
@@ -188,6 +190,14 @@
<div class="dialog-footer" style="text-align: center">
<el-button @click="funhui">取消</el-button>
<el-button type="primary" @click="onSubmit"> 保存 </el-button>
+ <el-button v-if="state.viewInfo.id" type="primary" v-print="'#pinggu1'">
+ <el-icon><Printer /></el-icon>
+ 打印
+ </el-button>
+ <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
+ <el-icon><Position /></el-icon>
+ 导出
+ </el-button>
</div>
</template>
</el-dialog>
@@ -195,6 +205,7 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
+import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref, computed } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -324,6 +335,8 @@
console.log(mode);
state.viewInfo = mode;
state.tableData = JSON.parse(mode.surveryJsonBody);
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true;
}
};
@@ -362,6 +375,18 @@
updateTime: '',
};
};
+const generatePDF=()=> {
+ const element = document.getElementById('pinggu1');
+ const opt = {
+ margin: 10,
+ filename: `${state.tableData.表名}.pdf`,
+ image: { type: 'jpeg', quality: 0.98 },
+ html2canvas: { scale: 2 },
+ jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
+ };
+ html2pdf().set(opt).from(element).save();
+
+}
// 第二步:暴露方法
defineExpose({ getData, openShow });
@@ -394,4 +419,4 @@
border-color: #666666;
background-color: #ffffff;
}
-</style>
+</style>
\ No newline at end of file
diff --git a/src/views/home/components/pingubiao/editDietary2.vue b/src/views/home/components/pingubiao/editDietary2.vue
index b98b42b..629ba73 100644
--- a/src/views/home/components/pingubiao/editDietary2.vue
+++ b/src/views/home/components/pingubiao/editDietary2.vue
@@ -2,7 +2,7 @@
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="主观全面评定(SGA)评价" :fullscreen="true" width="100%">
<div class="container" style="width: 100%; height: 100%;overflow: auto;">
- <div>
+ <div id="pinggu2">
<div>
<el-form size="small">
<div style="width: 100%">
@@ -11,7 +11,7 @@
<tr>
<th colspan="2">
<el-form-item label="初次调查日期">
- <el-date-picker v-model="state.tableData.初次调查日期" type="date"
+ <el-date-picker v-model="state.tableData.初次调查日期" type="date" readonly
style="width: 100px;" placeholder="" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
</el-form-item>
@@ -19,7 +19,7 @@
</th>
<th colspan="2">
<el-form-item label="更新日期">
- <el-date-picker v-model="state.tableData.更新日期" type="date"
+ <el-date-picker v-model="state.tableData.更新日期" type="date" readonly
style="width: 100px;" placeholder="" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
</el-form-item>
@@ -28,7 +28,7 @@
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" style="width: 100px;" placeholder="" />
+ <el-input v-model="state.tableData.记录者" style="width: 100px;" readonly placeholder="" />
</el-form-item>
</th>
@@ -427,6 +427,14 @@
<el-button type="primary" @click="onSubmit">
保存
</el-button>
+ <el-button v-if="state.viewInfo.id" type="primary" v-print="'#pinggu2'">
+ <el-icon><Printer /></el-icon>
+ 打印
+ </el-button>
+ <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
+ <el-icon><Position /></el-icon>
+ 导出
+ </el-button>
</div>
</template>
</el-dialog>
@@ -437,6 +445,7 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
+import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref, computed } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -621,6 +630,8 @@
console.log(mode)
state.viewInfo = mode
state.tableData = JSON.parse(mode.surveryJsonBody)
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
@@ -720,7 +731,18 @@
updateTime: ''
}
}
+const generatePDF=()=> {
+ const element = document.getElementById('pinggu2');
+ const opt = {
+ margin: 10,
+ filename: `${state.tableData.表名}.pdf`,
+ image: { type: 'jpeg', quality: 0.98 },
+ html2canvas: { scale: 2 },
+ jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
+ };
+ html2pdf().set(opt).from(element).save();
+}
// 第二步:暴露方法
defineExpose({ getData, openShow })
</script>
diff --git a/src/views/home/components/pingubiao/editDietary3.vue b/src/views/home/components/pingubiao/editDietary3.vue
index bba3df4..c8d87a9 100644
--- a/src/views/home/components/pingubiao/editDietary3.vue
+++ b/src/views/home/components/pingubiao/editDietary3.vue
@@ -2,7 +2,7 @@
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="营养不良炎症评分表(MIS)" :fullscreen="true" width="100%">
<div class="container" style="width: 100%; height: 100%; overflow: auto">
- <div>
+ <div id="pinggu3">
<div>
<el-form size="small">
<div style="width: 100%">
@@ -10,7 +10,7 @@
<tr>
<th colspan="2">
<el-form-item label="初次调查日期">
- <el-date-picker
+ <el-date-picker readonly
v-model="state.tableData.初次调查日期"
type="date"
style="width: 100px"
@@ -22,7 +22,7 @@
</th>
<th colspan="2">
<el-form-item label="更新日期">
- <el-date-picker
+ <el-date-picker readonly
v-model="state.tableData.更新日期"
type="date"
style="width: 100px"
@@ -34,7 +34,7 @@
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" style="width: 100px" placeholder="" />
+ <el-input v-model="state.tableData.记录者" style="width: 100px" readonly placeholder="" />
</el-form-item>
</th>
</tr>
@@ -194,6 +194,14 @@
<div class="dialog-footer" style="text-align: center">
<el-button @click="funhui">取消</el-button>
<el-button type="primary" @click="onSubmit"> 保存 </el-button>
+ <el-button v-if="state.viewInfo.id" type="primary" v-print="'#pinggu3'">
+ <el-icon><Printer /></el-icon>
+ 打印
+ </el-button>
+ <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
+ <el-icon><Position /></el-icon>
+ 导出
+ </el-button>
</div>
</template>
</el-dialog>
@@ -201,6 +209,7 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
+import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref, computed } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -343,6 +352,8 @@
console.log(mode);
state.viewInfo = mode;
state.tableData = JSON.parse(mode.surveryJsonBody);
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true;
}
};
@@ -407,7 +418,18 @@
updateTime: '',
};
};
+const generatePDF=()=> {
+ const element = document.getElementById('pinggu3');
+ const opt = {
+ margin: 10,
+ filename: `${state.tableData.表名}.pdf`,
+ image: { type: 'jpeg', quality: 0.98 },
+ html2canvas: { scale: 2 },
+ jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
+ };
+ html2pdf().set(opt).from(element).save();
+}
// 第二步:暴露方法
defineExpose({ getData, openShow });
</script>
diff --git a/src/views/home/components/pingubiao/editDietary4.vue b/src/views/home/components/pingubiao/editDietary4.vue
index b354ec5..d6bedfc 100644
--- a/src/views/home/components/pingubiao/editDietary4.vue
+++ b/src/views/home/components/pingubiao/editDietary4.vue
@@ -2,7 +2,7 @@
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="PEW(蛋白质能量消耗评估)" :fullscreen="true" width="100%">
<div class="container" style="width: 100%; height: 100%;overflow: auto;">
- <div>
+ <div id="pinggu4">
<div>
<el-form size="small" >
<div style="width: 100%">
@@ -11,14 +11,14 @@
<tr>
<th colspan="2">
<el-form-item label="初次调查日期">
- <el-date-picker v-model="state.tableData.初次调查日期" type="date" style="width: 100px;"
+ <el-date-picker v-model="state.tableData.初次调查日期" type="date" readonly style="width: 100px;"
placeholder="" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
</el-form-item>
</th>
<th colspan="2">
<el-form-item label="更新日期">
- <el-date-picker v-model="state.tableData.更新日期" type="date" style="width: 100px;"
+ <el-date-picker v-model="state.tableData.更新日期" type="date" readonly style="width: 100px;"
placeholder="" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
</el-form-item>
@@ -26,7 +26,7 @@
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" style="width: 100px;" placeholder="" />
+ <el-input v-model="state.tableData.记录者" style="width: 100px;" readonly placeholder="" />
</el-form-item>
</th>
@@ -132,6 +132,14 @@
<el-button type="primary" @click="onSubmit">
保存
</el-button>
+ <el-button v-if="state.viewInfo.id" type="primary" v-print="'#pinggu4'">
+ <el-icon><Printer /></el-icon>
+ 打印
+ </el-button>
+ <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
+ <el-icon><Position /></el-icon>
+ 导出
+ </el-button>
</div>
</template>
</el-dialog>
@@ -142,6 +150,7 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
+import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref, computed } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -264,6 +273,8 @@
console.log(mode)
state.viewInfo=mode
state.tableData=JSON.parse(mode.surveryJsonBody)
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
@@ -307,6 +318,18 @@
updateTime: ''
}
}
+const generatePDF=()=> {
+ const element = document.getElementById('pinggu4');
+ const opt = {
+ margin: 10,
+ filename: `${state.tableData.表名}.pdf`,
+ image: { type: 'jpeg', quality: 0.98 },
+ html2canvas: { scale: 2 },
+ jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
+ };
+ html2pdf().set(opt).from(element).save();
+
+}
// 第二步:暴露方法
defineExpose({ getData, openShow })
diff --git a/src/views/home/components/pingubiao/editDietary5.vue b/src/views/home/components/pingubiao/editDietary5.vue
index d6741ca..2b8c9f7 100644
--- a/src/views/home/components/pingubiao/editDietary5.vue
+++ b/src/views/home/components/pingubiao/editDietary5.vue
@@ -2,7 +2,7 @@
<div class="dietarySurvey-item">
<el-dialog v-model="state.dialogTableVisible" title="GNIR营养评估分" :fullscreen="true" width="100%">
<div class="container" style="width: 100%; height: 100%;overflow: auto;">
- <div>
+ <div id="pinggu5">
<div>
<el-form size="small">
<div style="width: 100%">
@@ -11,7 +11,7 @@
<tr>
<th colspan="2">
<el-form-item label="调查日期">
- <el-date-picker v-model="state.tableData.初次调查日期" type="date"
+ <el-date-picker v-model="state.tableData.初次调查日期" type="date" readonly
style="width: 100px;" placeholder="" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
</el-form-item>
@@ -19,16 +19,14 @@
</th>
<th colspan="2">
<el-form-item label="更新日期">
- <el-date-picker v-model="state.tableData.更新日期" type="date"
+ <el-date-picker v-model="state.tableData.更新日期" type="date" readonly
style="width: 100px;" placeholder="" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
</el-form-item>
-
-
</th>
<th colspan="2">
<el-form-item label="记录者">
- <el-input v-model="state.tableData.记录者" style="width: 100px;"
+ <el-input v-model="state.tableData.记录者" style="width: 100px;" readonly
placeholder="" />
</el-form-item>
</th>
@@ -151,6 +149,14 @@
<el-button type="primary" @click="onSubmit">
保存
</el-button>
+ <el-button v-if="state.viewInfo.id" type="primary" v-print="'#pinggu5'">
+ <el-icon><Printer /></el-icon>
+ 打印
+ </el-button>
+ <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
+ <el-icon><Position /></el-icon>
+ 导出
+ </el-button>
</div>
</template>
</el-dialog>
@@ -161,6 +167,7 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
+import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref, computed, watch } from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
@@ -335,6 +342,8 @@
console.log(mode)
state.viewInfo = mode
state.tableData = JSON.parse(mode.surveryJsonBody)
+ state.tableData.初次调查日期=mode.surveryTime
+ state.tableData.更新日期=mode.updateTime
state.dialogTableVisible = true
}
@@ -370,7 +379,18 @@
updateTime: ''
}
}
+const generatePDF=()=> {
+ const element = document.getElementById('pinggu5');
+ const opt = {
+ margin: 10,
+ filename: `${state.tableData.表名}.pdf`,
+ image: { type: 'jpeg', quality: 0.98 },
+ html2canvas: { scale: 2 },
+ jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrai' }
+ };
+ html2pdf().set(opt).from(element).save();
+}
// 第二步:暴露方法
defineExpose({ getData, openShow })
</script>
diff --git a/src/views/home/components/pingubiao/index.vue b/src/views/home/components/pingubiao/index.vue
index c0a7eb8..70bb2d2 100644
--- a/src/views/home/components/pingubiao/index.vue
+++ b/src/views/home/components/pingubiao/index.vue
@@ -176,7 +176,7 @@
wherecondition:`survery_form_type=1 and patient_code='${patientsInfo.value.code}'`,
ordercondition: 'survery_time desc'
}
- if(state.formInline.date.length===2){
+ if(state.formInline?.date?.length===2){
pasm.wherecondition+=` and survery_time BETWEEN '${state.formInline.date[0]} 00:00:00' AND '${state.formInline.date[1]} 23:59:59'`
}
if(state.formInline.formTableName){
diff --git a/src/views/home/components/suifangjilu/index.vue b/src/views/home/components/suifangjilu/index.vue
index a3649ef..30b27dc 100644
--- a/src/views/home/components/suifangjilu/index.vue
+++ b/src/views/home/components/suifangjilu/index.vue
@@ -1,40 +1,64 @@
<template>
<div>
<el-row>
- <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<div class="tableDiv">
<table>
<tr>
<th colspan="7" style="text-align: left">营养服务管理记录</th>
</tr>
<tr>
- <td rowspan="3">基本信息</td>
+ <td :rowspan="2+state.patientData.透析方案.length">基本信息</td>
<td>患者姓名</td>
- <td></td>
+ <td>{{ patientsInfo.patientName }}</td>
<td>性别</td>
- <td></td>
+ <td>{{ patientsInfo.patientGenderText }}</td>
<td>年龄</td>
- <td></td>
+ <td><span v-if="patientsInfo.age">{{ patientsInfo.age }} 岁</span></td>
</tr>
<tr>
- <td>身高(m)</td>
- <td></td>
+ <td>身高</td>
+ <td>{{ state.patientData.身高 }} <span v-if="state.patientData.身高">(cm)</span></td>
<td>病史</td>
- <td></td>
- <td>听力/视力障碍</td>
- <td></td>
- </tr>
- <tr>
-
- <td>透析频次</td>
- <td></td>
- <td>透析时长</td>
- <td></td>
+ <td>{{ state.patientData.诊断 }}</td>
<td>透龄</td>
- <td></td>
+ <td>
+ <span v-if="patientsInfo.medHistoryStatByMonth">{{
+ patientsInfo.medHistoryStatByMonth }}
+ (月)</span>
+ </td>
</tr>
+ <template v-for="(row,index) in state.patientData.透析方案" :key="index">
+ <tr v-if="index===0">
+ <td :rowspan="state.patientData.透析方案.length*1">透析方案</td>
+ <td>
+ {{state.patientData.透析方案[index]?.透析方案}}
+ </td>
+ <td>频次</td>
+ <td>
+ {{state.patientData.透析方案[index]?.透析频率}}
+ </td>
+ <td>时长</td>
+ <td>
+ {{state.patientData.透析方案[index]?.透析时长}}
+ </td>
+ </tr>
+ <tr v-else>
+ <td>
+ {{state.patientData.透析方案[index]?.透析方案}}
+ </td>
+ <td>频次</td>
+ <td>
+ {{state.patientData.透析方案[index]?.透析频率}}
+ </td>
+ <td>时长</td>
+ <td>
+ {{state.patientData.透析方案[index]?.透析时长}}
+ </td>
+ </tr>
+ </template>
<tr>
<td rowspan="2">其他</td>
<td>口腔功能</td>
@@ -53,129 +77,155 @@
<td></td>
</tr>
<tr>
- <td>项目</td>
- <td>序号</td>
- <td>项目内容</td>
- <td>时间</td>
- <td>详情</td>
- <td>备注</td>
- <td>记录者</td>
+ <th>项目</th>
+ <!-- <td>序号</td> -->
+ <th>项目内容</th>
+ <th>时间</th>
+ <th colspan="2">详情</th>
+ <th>备注</th>
+ <th>记录者</th>
</tr>
- <tr>
- <td rowspan="4">食物过敏史及
- <br/>胃肠功能评估</td>
- <td rowspan="2">1</td>
- <td rowspan="2">食物过敏源</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
+ <!-- 食物过敏原 -->
+ <template v-for="(row,index) in state.from1Datas" :key="index">
+ <tr v-if="index===0">
+ <td :rowspan="state.from1Datas.length*2">
+ 食物过敏史及
+ <br/>胃肠功能评估
+ </td>
+ <td :rowspan="state.from1Datas.length*1">食物过敏源</td>
+ <td>{{state.from1Datas[index]?.初次调查日期}}</td>
+ <td colspan="2">
+ {{state.from1Datas[index]?.过敏食物?.type.join()}}
+ </td>
+ <td>
+ {{state.from1Datas[index]?.过敏食物?.input1}}
+ </td>
+ <td>{{state.from1Datas[index]?.记录者}}</td>
+ </tr>
+ <tr v-else>
+ <td>{{state.from1Datas[index].初次调查日期}}</td>
+ <td colspan="2">
+ {{state.from1Datas[index].过敏食物?.type.join()}}
+ </td>
+ <td>
+ {{state.from1Datas[index].过敏食物?.input1}}
+ </td>
+ <td>{{state.from1Datas[index].记录者}}</td>
+ </tr>
+ </template>
+ <!-- 胃肠功能评估 -->
+ <template v-for="(row,index) in state.from1Datas" :key="index">
+ <tr v-if="index===0">
+ <td :rowspan="state.from1Datas.length*1">胃肠功能评估</td>
+ <td>{{state.from1Datas[index].初次调查日期}}</td>
+ <td colspan="2" >
+ <span v-if="state.from1Datas[index]?.胃肠道紊乱者?.type==='是'"></span>
+ 胃肠道紊乱者
+ </td>
+ <td>
+ {{state.from1Datas[index]?.胃肠道紊乱者?.input1}}
+ </td>
+ <td>{{state.from1Datas[index]?.记录者}}</td>
+ </tr>
+ <tr v-else>
+ <td>{{state.from1Datas[index].初次调查日期}}</td>
+ <td colspan="2" >
+ <span v-if="state.from1Datas[index]?.胃肠道紊乱者?.type==='是'"></span>
+ 胃肠道紊乱者
+ </td>
+ <td>
+ {{state.from1Datas[index]?.胃肠道紊乱者?.input1}}
+ </td>
+ <td>{{state.from1Datas[index]?.记录者}}</td>
+ </tr>
- <td rowspan="2">2</td>
- <td rowspan="2">胃肠功能评估</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
+ </template>
+
+
+
+
<!-- 饮食管理 -->
+
<tr>
<td rowspan="6">饮食管理</td>
- <td rowspan="2">1</td>
<td rowspan="2">膳食调查</td>
<td></td>
+ <td colspan="2"></td>
<td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
-
- <td rowspan="2">2</td>
+
<td rowspan="2">饮食问题</td>
<td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
-
- <td rowspan="2">3</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
<td rowspan="2">饮食建议</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<!-- 生活方式管理 -->
<tr>
<td rowspan="4">生活方式管理</td>
- <td rowspan="2">1</td>
+ <!-- <td rowspan="2">1</td> -->
<td rowspan="2">生活习惯</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
- <td rowspan="2">2</td>
+ <!-- <td rowspan="2">2</td> -->
<td rowspan="2">指导建议</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<!-- 用药管理 -->
<tr>
<td rowspan="6">用药管理</td>
- <td rowspan="2">1</td>
+ <!-- <td rowspan="2">1</td> -->
<td rowspan="2">用药调查</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
@@ -187,10 +237,10 @@
</tr>
<tr>
- <td rowspan="2">2</td>
+ <!-- <td rowspan="2">2</td> -->
<td rowspan="2">用药监督</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
@@ -202,10 +252,10 @@
</tr>
<tr>
- <td rowspan="2">3</td>
+ <!-- <td rowspan="2">3</td> -->
<td rowspan="2">指导建议</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
@@ -218,16 +268,278 @@
<!-- 随访 -->
<tr>
<td rowspan="2">随访</td>
- <td rowspan="2">1</td>
+ <!-- <td rowspan="2">1</td> -->
<td rowspan="2">随访情况</td>
<td></td>
- <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <!-- 营养筛查评估 -->
+ <tr>
+ <td rowspan="4">营养筛查评估</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">营养筛查结果</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">营养评估结果</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <!-- 数据评估 -->
+ <tr>
+ <td rowspan="12">数据评估</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">干体重</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">BMI </td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">3</td> -->
+ <td rowspan="2">生化指标 </td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">4</td> -->
+ <td rowspan="2">脱水量 </td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">5</td> -->
+ <td rowspan="2">血压 </td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">6</td> -->
+ <td rowspan="2">血糖 </td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td rowspan="8">个性化管理</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">指导目标</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">指导建议</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">3</td> -->
+ <td rowspan="2">指导方案</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">4</td> -->
+ <td rowspan="2">随访情况</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <!-- 效果反馈 -->
+ <tr>
+ <td rowspan="4">效果反馈</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">生化数据改善</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">主观感受改善</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <!-- 产品管理 -->
+ <tr>
+ <td rowspan="4">产品管理</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">好馨意</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">其他品牌</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td rowspan="4">健康营养宣教</td>
+ <!-- <td rowspan="2">1</td> -->
+ <td rowspan="2">生化指标</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <!-- <td rowspan="2">2</td> -->
+ <td rowspan="2">营养饮食</td>
+ <td></td>
+ <td colspan="2"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="2"></td>
<td></td>
<td></td>
</tr>
@@ -235,27 +547,7 @@
</table>
</div>
</el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
- <div class="tableDiv">
- <table>
- <tr>
- <td rowspan="2">随访</td>
- <td rowspan="2">1</td>
- <td rowspan="2">随访情况</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- </table>
- </div>
- </el-col>
+
</el-row>
</div>
@@ -265,32 +557,125 @@
import { storeToRefs } from 'pinia';
import { usePatientsInfo } from '/@/stores/patientsInfo';
import { computed, reactive } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getPatData } from '/@/api/Patients';
+import { list } from '/@/api/tiaochabiao';
const storesPat = usePatientsInfo();
const { patientsInfo } = storeToRefs(storesPat);
const props = defineProps(['tableHeight'])
const state = reactive({
- tableData: [],
+ tableData: {
+ 基本信息:{
+ 患者姓名:'',
+ 性别:'',
+ 年龄:'',
+ 身高:'',
+ 病史:'',
+ 听力视力障碍:'',
+ 透析频次:"",
+ 透析时长:"",
+ },
+
+ },
+ patientData: {
+ 姓名: '',
+ 干体重: '',
+ 证件号: "",
+ 诊断: '',
+ 身高: '',
+ 上一次透前体重: '',
+ 干体重最近调整记录:[{干体重:'',调整日期:'',调整人:'',备注:""}],
+ 透析方案:[{透析频率: "", 透析时长: "", 透析方案: ""}]
+ },
+ // 隐私调差
+ from1Datas:<any>[],
+ // 风险筛查
+ from2Datas:{},
+ // 风险评估
+ from3Datas:{},
loading: false,
})
const tableHe = computed(() => {
return props.tableHeight - 130
})
+const BMI = computed(() => {
+ if (state.patientData.干体重 && state.patientData.身高) {
+ return (Number(state.patientData.干体重) / (Number(state.patientData.身高) / 100 * Number(state.patientData.身高) / 100)).toFixed(2)
+ } else {
+ return ''
+ }
+})
+
+
// 第一步:定义子组件里面的方法
-const getData = (str: string) => {
+const getData = async (str: string) => {
console.log("子组件获取显示数据!" + str);
console.log(props.tableHeight)
var pam = {
- patientCode: patientsInfo.value.code,
- page: 1,
- size: 100,
- orderType: 1,
- orderIsUse: 2,
- desc: 1,
- orderName: '',
+ patCode: patientsInfo.value.code,
}
- state.loading = true
+ try {
+ state.loading = true
+ state.from1Datas=[]
+ const [res1,fromData1,fromData2,fromData3] = await Promise.all([
+ getPatData(pam),
+ getFrom1(),
+ getFrom2(),
+ getFrom3()
+ ])
+ state.patientData = res1.data
+ const from1 = fromData1
+ if (from1.data.list.length >= 1) {
+ from1.data.list.forEach((element:any) => {
+ state.from1Datas.push(JSON.parse(element?.surveryJsonBody))
+ });
+
+ }
+ console.log('饮食的------------------')
+ console.log(state.from1Datas)
+ }
+ catch (error) {
+ state.loading = false
+ ElMessage.error('结果请求错误,请联系管理员!')
+ }
}
+// 获取膳食调查表
+const getFrom1 = async () => {
+ const pasm = {
+ page: 0,
+ size: 0,
+ wherecondition: `survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
+ ordercondition: 'survery_time desc'
+ }
+ pasm.wherecondition += "and suvery_form_name='膳食调查表'"
+ const yinyangbiaodan1 = await list(pasm)
+ return yinyangbiaodan1
+}
+// 营养风险筛查结果
+const getFrom2 = async () => {
+ const pasm = {
+ page: 0,
+ size: 0,
+ wherecondition: `survery_form_type=1 and patient_code='${patientsInfo.value.code}'`,
+ ordercondition: 'survery_time desc'
+ }
+ pasm.wherecondition += "and suvery_form_name='营养风险筛查表(NRS2002)'"
+ const yinyangbiaodan1 = await list(pasm)
+ return yinyangbiaodan1
+}
+// 营养评估结果
+const getFrom3 = async () => {
+ const pasm = {
+ page: 0,
+ size: 0,
+ wherecondition: `survery_form_type=1 and patient_code='${patientsInfo.value.code}'`,
+ ordercondition: 'survery_time desc'
+ }
+ pasm.wherecondition += "and suvery_form_name='GNIR营养评估分'"
+ const yinyangbiaodan1 = await list(pasm)
+ return yinyangbiaodan1
+}
// 第二步:暴露方法
defineExpose({ getData })
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 13d4ad7..ae5ea81 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -337,7 +337,6 @@
right: 30px;
width: 200px;
height: 100px;
- background-color: #ffffff;
color: rgb(16, 3, 3);
padding: 10px;
z-index: 999;
diff --git a/src/views/styles.css b/src/views/styles.css
new file mode 100644
index 0000000..9ba143d
--- /dev/null
+++ b/src/views/styles.css
@@ -0,0 +1,69 @@
+body {
+ font-family: Arial, sans-serif;
+ margin: 0;
+ padding: 0;
+ background-color: #f5f5f5;
+ }
+
+ .container {
+ max-width: 1200px;
+ margin: 20px auto;
+ padding: 20px;
+ background: white;
+ border: 1px solid #ddd;
+ border-radius: 8px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ }
+
+ .body-analysis {
+ display: flex;
+ align-items: flex-start;
+ }
+
+ .body-figure {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-right: 20px;
+ }
+
+ .figure {
+ width: 50px;
+ height: 200px;
+ background: linear-gradient(to bottom, #87CEEB 37%, #A0D6B4 22%, #FFE4B5 17%, #FFB6C1 4%, #D3D3D3 18%);
+ border-radius: 10px;
+ position: relative;
+ }
+
+ .figure-percentage {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-bottom: 10px;
+ }
+
+ .figure-percentage p {
+ margin: 0;
+ }
+
+ .analysis-table {
+ width: 100%;
+ border-collapse: collapse;
+ }
+
+ .analysis-table th,
+ .analysis-table td {
+ border: 1px solid #ddd;
+ text-align: center;
+ padding: 10px;
+ }
+
+ .analysis-table th {
+ background-color: #4682B4;
+ color: white;
+ }
+
+ .analysis-table tbody tr:nth-child(odd) {
+ background-color: #f9f9f9;
+ }
+
\ No newline at end of file
diff --git a/src/views/test.html b/src/views/test.html
new file mode 100644
index 0000000..b16581a
--- /dev/null
+++ b/src/views/test.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>人体成分分析报告</title>
+ <style>
+ body {
+ font-family: Arial, sans-serif;
+ margin: 0;
+ padding: 0;
+ }
+
+ .container {
+ width: 100%;
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f4f4f4;
+ }
+
+ h1 {
+ color: #c0392b;
+ text-align: center;
+ }
+
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ }
+
+ th, td {
+ border: 1px solid #ddd;
+ padding: 8px;
+ text-align: left;
+ }
+
+ th {
+ background-color: #3498db;
+ color: white;
+ }
+
+ section {
+ margin-top: 20px;
+ }
+
+ .chart {
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .chart img {
+ width: 48%;
+ }
+
+ .analysis {
+ margin-top: 20px;
+ }
+
+ .analysis p {
+ margin-bottom: 10px;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <h1>人体成分分析报告</h1>
+
+ <section>
+ <h2>基本信息</h2>
+ <table>
+ <tr>
+ <th>姓名</th>
+ <th>ID编号</th>
+ <th>性别</th>
+ <th>年龄</th>
+ <th>测试日期</th>
+ </tr>
+ <tr>
+ <td>Jonson</td>
+ <td>7347204156</td>
+ <td>男</td>
+ <td>39</td>
+ <td>2019.09.27 00:00</td>
+ </tr>
+ </table>
+ </section>
+
+ <section>
+ <h2>人体成分分析</h2>
+ <table>
+ <tr>
+ <th>项目</th>
+ <th>测量值</th>
+ <th>体内水分</th>
+ <th>肌肉量</th>
+ <th>去脂肪质量</th>
+ <th>体重</th>
+ <th>标准范围</th>
+ </tr>
+ <tr>
+ <td>细胞内水份(L)</td>
+ <td>30.8</td>
+ <td>49.6</td>
+ <td>64.2</td>
+ <td>67.8</td>
+ <td>83.1</td>
+ <td>22.7~27.7</td>
+ </tr>
+ <!-- 更多行... -->
+ </table>
+ </section>
+
+ <section class="chart">
+ <img src="path_to_image_1.png" alt="Image 1">
+ <img src="path_to_image_2.png" alt="Image 2">
+ </section>
+
+ <section>
+ <h2>综合评价</h2>
+ <p>总分:88.0 / 100 分</p>
+ <p>目标调节指导:...</p>
+ <!-- 更多段落... -->
+ </section>
+
+ <section>
+ <h2>节段肌肉与脂肪分析及体型判定</h2>
+ <img src="path_to_image_3.png" alt="Image 3">
+ <p>体型判定:过重肌肉型</p>
+ </section>
+
+ <section>
+ <h2>肌肉品质</h2>
+ <img src="path_to_image_4.png" alt="Image 4">
+ <p>肌肉品质综合评价:78 / 100 分</p>
+ </section>
+
+ <section>
+ <h2>人体成分历史变化</h2>
+ <img src="path_to_image_5.png" alt="Image 5">
+ </section>
+ </div>
+</body>
+</html>
\ No newline at end of file
--
Gitblit v1.8.0