| | |
| | | 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/' |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | 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({ |
| | |
| | | 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){ |
| | |
| | | <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> |
| | |
| | | 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){ |
| | |
| | | console.log(mode) |
| | | state.viewInfo=mode |
| | | state.tableData=JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | |
| | | |
| | |
| | | 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) { |
| | |
| | | console.log(mode) |
| | | state.viewInfo = mode |
| | | state.tableData = JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | |
| | | |
| | |
| | | <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%"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | |
| | | </th> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;"> |
| | | S:询问饮食营养状况、生活习惯</td> |
| | |
| | | placeholder="" /> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr class="page-break"></tr> |
| | | <tr> |
| | | <td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;"> |
| | | P:饮食营养方案及食谱,定期随访并及时调整</td> |
| | |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;"> |
| | | 食物替换法</td> |
| | |
| | | <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'; |
| | |
| | | innerVisible:false, |
| | | tableData: { |
| | | 表名: '患者方案表', |
| | | 初次调查日期: "", |
| | | 实施日期: "", |
| | | 填表日期: '', |
| | | 更新日期: '', |
| | | 记录者: '陈银成', |
| | |
| | | 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 }, |
| | |
| | | const getPageInfo = async () => { |
| | | state.tableData = { |
| | | 表名: '患者方案表', |
| | | 初次调查日期: "", |
| | | 实施日期: formatDate(new Date(),'YYYY-mm-dd'), |
| | | 填表日期: '', |
| | | 更新日期: '', |
| | | 记录者: userInfos.value.userName, |
| | |
| | | 其他: '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() |
| | |
| | | console.log(mode) |
| | | state.viewInfo = mode |
| | | state.tableData = JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.实施日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | |
| | | |
| | |
| | | .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> |
| | |
| | | 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){ |
| | |
| | | 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){ |
| | |
| | | </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; |
| | |
| | | <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%"> |
| | |
| | | <th colspan="2"> |
| | | <el-form-item label="初次调查日期"> |
| | | <el-date-picker |
| | | readonly |
| | | v-model="state.tableData.初次调查日期" |
| | | type="date" |
| | | style="width: 100px" |
| | |
| | | <th colspan="2"> |
| | | <el-form-item label="更新日期"> |
| | | <el-date-picker |
| | | readonly |
| | | v-model="state.tableData.更新日期" |
| | | type="date" |
| | | style="width: 100px" |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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'; |
| | |
| | | console.log(mode); |
| | | state.viewInfo = mode; |
| | | state.tableData = JSON.parse(mode.surveryJsonBody); |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true; |
| | | } |
| | | }; |
| | |
| | | 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 }); |
| | |
| | | border-color: #666666; |
| | | background-color: #ffffff; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <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%"> |
| | |
| | | <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> |
| | |
| | | </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;" placeholder="" /> |
| | | <el-input v-model="state.tableData.记录者" style="width: 100px;" readonly placeholder="" /> |
| | | </el-form-item> |
| | | </th> |
| | | |
| | |
| | | <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> |
| | |
| | | </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'; |
| | |
| | | console.log(mode) |
| | | state.viewInfo = mode |
| | | state.tableData = JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | |
| | | |
| | |
| | | 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> |
| | |
| | | <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%"> |
| | |
| | | <tr> |
| | | <th colspan="2"> |
| | | <el-form-item label="初次调查日期"> |
| | | <el-date-picker |
| | | <el-date-picker readonly |
| | | v-model="state.tableData.初次调查日期" |
| | | type="date" |
| | | style="width: 100px" |
| | |
| | | </th> |
| | | <th colspan="2"> |
| | | <el-form-item label="更新日期"> |
| | | <el-date-picker |
| | | <el-date-picker readonly |
| | | v-model="state.tableData.更新日期" |
| | | type="date" |
| | | style="width: 100px" |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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'; |
| | |
| | | console.log(mode); |
| | | state.viewInfo = mode; |
| | | state.tableData = JSON.parse(mode.surveryJsonBody); |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true; |
| | | } |
| | | }; |
| | |
| | | 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> |
| | |
| | | <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%"> |
| | |
| | | <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> |
| | | |
| | |
| | | </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> |
| | | |
| | |
| | | <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> |
| | |
| | | </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'; |
| | |
| | | console.log(mode) |
| | | state.viewInfo=mode |
| | | state.tableData=JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | |
| | | |
| | |
| | | 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 }) |
| | |
| | | <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%"> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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'; |
| | |
| | | console.log(mode) |
| | | state.viewInfo = mode |
| | | state.tableData = JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | } |
| | | |
| | |
| | | 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> |
| | |
| | | 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){ |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | | <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> |
| | |
| | | <!-- 随访 --> |
| | | <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> |
| | |
| | | </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> |
| | | |
| | |
| | | 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 }) |
| | |
| | | right: 30px; |
| | | width: 200px; |
| | | height: 100px; |
| | | background-color: #ffffff; |
| | | color: rgb(16, 3, 3); |
| | | padding: 10px; |
| | | z-index: 999; |
| New file |
| | |
| | | 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; |
| | | } |
| | | |
| New file |
| | |
| | | <!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> |