| | |
| | | <template> |
| | | <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> |
| | | <el-dialog v-model="state.dialogTableVisible" title="GNRI" :fullscreen="true" width="100%"> |
| | | <div style="width: 100%; height: 100%;overflow: auto;"> |
| | | <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> |
| | |
| | | |
| | | </td> |
| | | <td colspan="2" rowspan="3" style="text-align: center;font-size: 18px;"> |
| | | {{ sum }} |
| | | <div v-if="sum"> |
| | | |
| | | |
| | | <span v-if="sum<82">高营养风险</span> |
| | | <span v-if="sum>=82&&sum<92">中营养风险</span> |
| | | <span v-if="sum>=92&&sum<98">低营养风险</span> |
| | | <span v-if="sum>98">无营养风险</span> |
| | | </div> |
| | | <br> |
| | | |
| | | <div v-if="sum.label" :style="{color:sum.color}"> |
| | | {{ sum.value }}分,{{sum.label}} |
| | | </div> |
| | | |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | |
| | | </td> |
| | | <td colspan="2"> |
| | | 血清白蛋白浓度 |
| | | <el-input v-model="state.tableData.血清白蛋白浓度" placeholder="轻输入血清白蛋白浓度"> |
| | | <el-input v-model="state.tableData.血清白蛋白浓度" placeholder="请输入血清白蛋白浓度"> |
| | | <template #append>g/L</template> |
| | | </el-input> |
| | | </td> |
| | |
| | | 注意事项:<br> |
| | | 对于直立困难而无法测量身高的患者,可以通过测量膝高来估算身高。 |
| | | 男性身高=2.02x膝高(cm)-0.04x年龄+64.19;<br> |
| | | 女性身高=1.83x膝高(cm)-0.24x年龄+84.88。如果体重大于理想体重,<br> |
| | | 女性身高=1.83x膝高(cm)-0.24x年龄+84.88。如果体重>理想体重,<br> |
| | | 体重与理想体重的比值以1计算。 |
| | | |
| | | |
| | |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6" style="color: #E6A23C;"> |
| | | GNIR营养评估分为4个等级:<br> |
| | | 高营养风险(GNIR<82<br> |
| | | 中营养风险(82≤GNIR<92)<br> |
| | | 低营养风险(92≤GNIR≤98)<br> |
| | | 无营养风险(GNIR>98) |
| | | GNRI为4个等级:<br> |
| | | 高营养风险(GNRI<82<br> |
| | | 中营养风险(82≤GNRI<92)<br> |
| | | 低营养风险(92≤GNRI≤98)<br> |
| | | 无营养风险(GNRI>98) |
| | | |
| | | |
| | | </td> |
| | |
| | | <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'; |
| | | import { useUserInfo } from '/@/stores/userInfo'; |
| | | import { usePatientsInfo } from '/@/stores/patientsInfo'; |
| | | import dayjs from 'dayjs'; |
| | | const storesPat = usePatientsInfo(); |
| | | import { Add, update, deleteId, tiaochabiaoInfo } from '/@/api/tiaochabiao/index' |
| | | import { storeToRefs } from 'pinia'; |
| | | import { useRoute, useRouter } from 'vue-router'; |
| | | import { ElMessage } from 'element-plus'; |
| | | import { getPatData } from '/@/api/Patients'; |
| | | import { ElLoading, ElMessage } from 'element-plus'; |
| | | import { getPatData,getLisResults } from '/@/api/Patients'; |
| | | import { number } from 'echarts'; |
| | | const stores = useUserInfo(); |
| | | const { patientsInfo } = storeToRefs(storesPat); |
| | |
| | | options: [0, 1], |
| | | dialogTableVisible: false, |
| | | tableData: { |
| | | 表名: 'GNIR营养评估分', |
| | | 表名: 'GNRI', |
| | | 初次调查日期: "", |
| | | 填表日期: '', |
| | | 更新日期: '', |
| | |
| | | 理想体重: '', |
| | | 血清白蛋白浓度: '', |
| | | 无法测量身高: false, |
| | | 膝高: '' |
| | | 膝高: '', |
| | | 结果:'' |
| | | |
| | | |
| | | |
| | |
| | | surveryTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'), |
| | | surveryPerson: userInfos.value.code, |
| | | surveryJsonBody: '', |
| | | suveryFormName: 'GNIR营养评估分', |
| | | suveryFormName: 'GNRI', |
| | | surveryFormType: 1, |
| | | updateTime: '' |
| | | } |
| | |
| | | } |
| | | }) |
| | | const sum = computed(() => { |
| | | const res={ |
| | | value:'', |
| | | label:'', |
| | | color:'' |
| | | } |
| | | let data=0 |
| | | if (isNumeric(state.tableData.体重) && isNumeric(state.tableData.身高) && isNumeric(state.tableData.血清白蛋白浓度)) { |
| | | if (Number(state.tableData.体重) <= Number(state.tableData.理想体重)) { |
| | | return Number(((1.498 * Number(state.tableData.血清白蛋白浓度)) + (41.7 * ((Number(state.tableData.体重) / Number(state.tableData.理想体重))))).toFixed(2)) |
| | | data= Number(((1.498 * Number(state.tableData.血清白蛋白浓度)) + (41.7 * ((Number(state.tableData.体重) / Number(state.tableData.理想体重))))).toFixed(2)) |
| | | } else { |
| | | return Number(((1.498 * Number(state.tableData.血清白蛋白浓度)) + 41.7).toFixed(2)) |
| | | data= Number(((1.498 * Number(state.tableData.血清白蛋白浓度)) + 41.7).toFixed(2)) |
| | | } |
| | | if(data<82){ |
| | | res.value=data |
| | | res.label='高营养风险' |
| | | res.color='#F56C6C' |
| | | }else if(data>=82&&data<92){ |
| | | res.value=data |
| | | res.label='中营养风险' |
| | | res.color='#E6A23C' |
| | | }else if(data>=92&&data<98){ |
| | | res.value=data |
| | | res.label='低营养风险' |
| | | res.color='#E6A23C' |
| | | }else if(data>=98){ |
| | | |
| | | res.value=data |
| | | res.label='无营养风险' |
| | | res.color='#303133' |
| | | } |
| | | return res |
| | | } else{ |
| | | return '' |
| | | return res |
| | | } |
| | | }) |
| | | const funhui = () => { |
| | | state.dialogTableVisible = false |
| | | } |
| | | const onSubmit = () => { |
| | | state.tableData.结果=sum.value |
| | | console.log('submit!') |
| | | console.log(state.tableData) |
| | | const info: tiaochabiaoInfo = { |
| | |
| | | surveryTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'), |
| | | surveryPerson: userInfos.value.code, |
| | | surveryJsonBody: JSON.stringify(state.tableData), |
| | | suveryFormName: 'GNIR营养评估分', |
| | | suveryFormName: 'GNRI', |
| | | updateTime: '' |
| | | } |
| | | console.log(info) |
| | |
| | | |
| | | } |
| | | // 打开查看或者编辑明细 |
| | | const openShow = (type: string, mode: tiaochabiaoInfo) => { |
| | | const openShow = async (type: string, mode: tiaochabiaoInfo) => { |
| | | console.log(type) |
| | | if (type === 'add') { |
| | | state.tableData.初次调查日期 = formatDate(new Date(), 'YYYY-mm-dd') |
| | | state.tableData.更新日期 = formatDate(new Date(), 'YYYY-mm-dd') |
| | | state.tableData.记录者 = userInfos.value.userName |
| | | getPageInfo() |
| | | await getPageInfo() |
| | | state.dialogTableVisible = true |
| | | } |
| | | |
| | |
| | | console.log(mode) |
| | | state.viewInfo = mode |
| | | state.tableData = JSON.parse(mode.surveryJsonBody) |
| | | state.tableData.初次调查日期=mode.surveryTime |
| | | state.tableData.更新日期=mode.updateTime |
| | | state.dialogTableVisible = true |
| | | } |
| | | |
| | | } |
| | | const getPageInfo = async () => { |
| | | const res = await getPatData({ patCode: patientsInfo.value.code, }) |
| | | console.log(res.data, '----') |
| | | state.tableData = { |
| | | 表名: 'GNIR营养评估分', |
| | | 初次调查日期: formatDate(new Date(), 'YYYY-mm-dd'), |
| | | 填表日期: '', |
| | | 更新日期: formatDate(new Date(), 'YYYY-mm-dd'), |
| | | 记录者: userInfos.value.userName, |
| | | 身高: res.data.身高, |
| | | 体重: res.data.身高.上一次透前体重, |
| | | 理想体重: '', |
| | | 血清白蛋白浓度: '', |
| | | 无法测量身高: false, |
| | | 膝高: '' |
| | | const loading = ElLoading.service({ |
| | | lock: true, |
| | | text: 'Loading', |
| | | background: 'rgba(0, 0, 0, 0.7)', |
| | | }) |
| | | try{ |
| | | const pam2 = { |
| | | clientCode: userInfos.value.clientCode, |
| | | patCode: patientsInfo.value.code, |
| | | date1: dayjs().add(-30, 'day').format('YYYY-MM-DD'), |
| | | date2: dayjs().format('YYYY-MM-DD'), |
| | | } |
| | | |
| | | const res = await getPatData({ patCode: patientsInfo.value.code, }) |
| | | const res2= await getLisResults(pam2) |
| | | loading.close() |
| | | console.log(res2.data, '-1111---') |
| | | let x=-1 |
| | | // 默认白蛋白 |
| | | if(res2.data.length>0){ |
| | | x=res2.data.findIndex(e=>{return e.item_name==='白蛋白'}) |
| | | } |
| | | |
| | | console.log(x) |
| | | state.tableData = { |
| | | 表名: 'GNRI', |
| | | 初次调查日期: formatDate(new Date(), 'YYYY-mm-dd'), |
| | | 填表日期: '', |
| | | 更新日期: formatDate(new Date(), 'YYYY-mm-dd'), |
| | | 记录者: userInfos.value.userName, |
| | | 身高: res.data.身高, |
| | | 体重: res.data.上一次透前体重, |
| | | 理想体重: '', |
| | | 血清白蛋白浓度: x===-1?'':res2.data[x].item_result, |
| | | 无法测量身高: false, |
| | | 膝高: '', |
| | | 结果:'' |
| | | |
| | | } |
| | | console.log(state.tableData ) |
| | | 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:'GNRI', |
| | | surveryFormType:1, |
| | | updateTime: '' |
| | | } |
| | | }catch(err){ |
| | | loading.close() |
| | | } |
| | | |
| | | } |
| | | 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> |
| | |
| | | background: yellow; |
| | | } |
| | | </style> |
| | | |
| | | function dayjs() { |
| | | throw new Error('Function not implemented.'); |
| | | } |