gx
chenyc
2025-02-27 4afd7755b465829a21b238fc0ccb98d08a8381e6
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">
        <el-dialog v-model="state.dialogTableVisible" title="营养饮食指导方案" :fullscreen="true" width="100%">
            <div class="container" style="width: 100%; height: 100%;overflow: auto;" >
                <div id="fanganprintFrom1" 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>
@@ -63,66 +64,15 @@
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr">饮食回顾时间</td>
                                        <td class="htr">早餐</td>
                                        <td class="htr">加餐</td>
                                        <td class="htr">午餐</td>
                                        <td class="htr">加餐</td>
                                        <td class="htr">晚餐</td>
                                        <td class="htr">加餐</td>
                                        <td class="htr">其他</td>
                                        <td  class="htr">营养记录汇总</td>
                                        <td colspan="7">
                                            <el-form-item>
                                                <el-input v-model="state.tableData.营养记录汇总" type="textarea"
                                                    :autosize="{ minRows: 1, maxRows: 3 }" placeholder="营养记录汇总" />
                                            </el-form-item>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr">透析日</td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.早餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.早加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.午餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.午加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.晚餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.透析日.其他" placeholder="" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr">非透析日</td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.早餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.早加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.午餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.午加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.晚餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.加餐" placeholder="" />
                                        </td>
                                        <td>
                                            <el-input v-model="state.tableData.非透析日.其他" placeholder="" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr">饮食问题</td>
                                        <td colspan="7">
@@ -204,6 +154,16 @@
                                            A:营养评估结果,计算所需摄入量</td>
                                    </tr>
                                    <tr>
                                        <td class="htr">营养饮食现状</td>
                                        <td colspan="7">
                                            <el-form-item>
                                                <el-input v-model="state.tableData.营养饮食现状" type="textarea"
                                                    :autosize="{ minRows: 1, maxRows: 3 }" placeholder="" />
                                            </el-form-item>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr">营养指导初期目标</td>
                                        <td colspan="7">
@@ -214,18 +174,91 @@
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="htr" rowspan="6">营养师指导建议</td>
                                        <td class="htr" rowspan="7">营养师指导建议</td>
                                        <td rowspan="3">透析饮食指导</td>
                                        <td>能量</td>
                                        <td> <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.能量" placeholder="" />
                                        <td>
                                             <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.能量" placeholder="" >
                                                <template #append>
                                                    <span @click="state.centerDialogVisibleNL=true">计算</span>
                                                </template>
                                            </el-input>
                                            <el-dialog v-model="state.centerDialogVisibleNL" title="计算能量" width="400" center>
                                                <span>
                                                    <div style="text-align: center">
                                                        <span> 体重:{{state.最近一次体重}}</span>*
                                                        <span><el-input-number v-model="state.nljsz"></el-input-number> </span>
                                                        ={{nlValue}}
                                                    </div>
                                                </span>
                                                <template #footer>
                                                <div class="dialog-footer">
                                                    <el-button @click="state.centerDialogVisibleNL = false">取消</el-button>
                                                    <el-button type="primary" @click="nlqd">
                                                        确定
                                                    </el-button>
                                                </div>
                                                </template>
                                            </el-dialog>
                                        </td>
                                        <td>蛋白质</td>
                                        <td>
                                            <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.蛋白质" placeholder="" />
                                            <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.蛋白质" placeholder="">
                                                <template #append>
                                                    <span @click="state.centerDialogVisibleDBZ=true">计算</span>
                                                </template>
                                            </el-input>
                                            <el-dialog v-model="state.centerDialogVisibleDBZ" title="计算蛋白质" width="400" center>
                                                <span>
                                                    <div style="text-align: center">
                                                        <span> 体重:{{state.最近一次体重}}</span>*
                                                        <span><el-input-number :step="0.1" v-model="state.dbzjsz"></el-input-number> </span>
                                                        ={{dbzValue}}
                                                    </div>
                                                </span>
                                                <template #footer>
                                                <div class="dialog-footer">
                                                    <el-button @click="state.centerDialogVisibleDBZ = false">取消</el-button>
                                                    <el-button type="primary" @click="dbzqd">
                                                        确定
                                                    </el-button>
                                                </div>
                                                </template>
                                            </el-dialog>
                                        </td>
                                        <td>优质蛋白</td>
                                        <td>
                                            <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.优质蛋白" placeholder="" />
                                            <el-input v-model="state.tableData.营养师指导建议.透析饮食指导.优质蛋白" placeholder="" >
                                                <template #append>
                                                    <span @click="state.centerDialogVisibleYZDBZ=true">计算</span>
                                                </template>
                                            </el-input>
                                            <el-dialog v-model="state.centerDialogVisibleYZDBZ" title="计算蛋白质" width="400" center>
                                                <span>
                                                    <div style="text-align: center">
                                                        <span> 蛋白质:{{state.tableData.营养师指导建议.透析饮食指导.蛋白质}}</span>*
                                                        <span><el-input-number :step="0.1" v-model="state.yzdbzjsz"></el-input-number> </span>
                                                        ={{yzdbzValue}}
                                                    </div>
                                                </span>
                                                <template #footer>
                                                <div class="dialog-footer">
                                                    <el-button @click="state.centerDialogVisibleYZDBZ = false">取消</el-button>
                                                    <el-button type="primary" @click="yzdbzqd">
                                                        确定
                                                    </el-button>
                                                </div>
                                                </template>
                                            </el-dialog>
                                        </td>
                                    </tr>
                                    <tr>
@@ -296,7 +329,23 @@
                                                placeholder="" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td >其他指导</td>
                                        <td>便秘</td>
                                        <td>
                                            <el-input v-model="state.tableData.营养师指导建议.其他指导.便秘" placeholder="" />
                                        </td>
                                        <td>腹泻</td>
                                        <td>
                                            <el-input v-model="state.tableData.营养师指导建议.其他指导.腹泻" placeholder="" />
                                        </td>
                                        <td>体重管理</td>
                                        <td>
                                            <el-input v-model="state.tableData.营养师指导建议.其他指导.体重管理"
                                                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 +539,7 @@
                                            </el-input>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="8" style=" background-color: rgb(250, 236, 216);font-weight:800 ;">
                                            食物替换法</td>
@@ -559,7 +609,7 @@
                    <el-button type="primary" @click="onSubmit">
                        保存
                    </el-button>
                    <el-button v-if="state.viewInfo.id" type="primary" v-print="'#printFrom1'">
                    <el-button v-if="state.viewInfo.id" type="primary" v-print="'#fanganprintFrom1'">
                        <el-icon>
                            <Printer />
                        </el-icon>
@@ -602,14 +652,17 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
import { Check } from '@element-plus/icons-vue'
import { Check,Edit } from '@element-plus/icons-vue'
import html2pdf from 'html2pdf.js';
import { reactive, onMounted, onUnmounted, ref } from 'vue';
import html2canvas from 'html2canvas';
import { jsPDF } from 'jspdf';
import { reactive, onMounted, onUnmounted, ref,computed} from 'vue';
import { formatDate } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
import { useUserInfo } from '/@/stores/userInfo';
import { usePatientsInfo } from '/@/stores/patientsInfo';
const storesPat = usePatientsInfo();
import { getPatData} from '/@/api/Patients';
import { Add, update, deleteId, tiaochabiaoInfo, list } from '/@/api/tiaochabiao/index'
import { storeToRefs } from 'pinia';
import { useRoute, useRouter } from 'vue-router';
@@ -620,6 +673,13 @@
const router = useRouter()
const emit = defineEmits(["shuaxin"]);
const state = reactive({
    centerDialogVisibleYZDBZ:false,
    yzdbzjsz:2,
    centerDialogVisibleDBZ:false,
    dbzjsz:1.2,
    centerDialogVisibleNL:false,
    最近一次体重:0,
    nljsz:30,
    modeType:'',
    mobanlist:[
        '食材提前浸泡、焯水,可以去除1/2-2/3的磷钾;',
@@ -631,13 +691,14 @@
    innerVisible:false,
    tableData: {
        表名: '患者方案表',
        初次调查日期: "",
        实施日期: "",
        填表日期: '',
        更新日期: '',
        记录者: '陈银成',
        食物过敏原: "",
        胃肠功能状况: "",
        蛋白粉补充情况: "",
        营养记录汇总:"",
        透析日: {
            早餐: '',
            早加餐: '',
@@ -673,6 +734,7 @@
        异常生化指标: '',
        // A:营养评估结果,计算所需摄入量
        营养指导初期目标: '',//优先改善( )的问题,遵循血透饮食低磷低钾优质蛋白充足能量的饮食原则
        营养饮食现状:'',
        营养师指导建议: {
            透析饮食指导: {
                能量: "",
@@ -694,6 +756,11 @@
                高尿酸: '',
                高钾血症: '',
                蛋白质能量摄入不足: ''
            },
            其他指导:{
                便秘:'',
                腹泻:'',
                体重管理:''
            }
        },
        // P:饮食营养方案及食谱,定期随访并及时调整
@@ -751,12 +818,65 @@
        surveryTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'),
        surveryPerson: userInfos.value.code,
        surveryJsonBody: '',
        suveryFormName: '营养指导报告',
        suveryFormName: '营养饮食指导方案',
        surveryFormType: 2,
        updateTime: ''
    }
})
const numberPart=(str:any)=>{
    if(str){
         // 使用正则表达式匹配数字
        const numberPart = str.match(/\d+/);
        // 将匹配到的数字字符串转换为数字
        const num = numberPart ? Number(numberPart[0]) : '';
        return num
    }else{
        return ''
    }
}
// 优质蛋白质确定
const yzdbzqd=()=>{
    state.centerDialogVisibleYZDBZ = false
    state.tableData.营养师指导建议.透析饮食指导.优质蛋白=yzdbzValue.value
}
const yzdbzValue= computed(() => {
    if(state.最近一次体重&&numberPart(state.tableData.营养师指导建议.透析饮食指导.蛋白质)){
        return Number(Number(numberPart(state.tableData.营养师指导建议.透析饮食指导.蛋白质))/state.yzdbzjsz).toFixed(0)+'g'
    }
    else{
        return ''
    }
})
const dbzValue= computed(() => {
    if(state.最近一次体重){
        return Number(Number(state.最近一次体重)*state.dbzjsz).toFixed(0)+'g'
    }
    else{
        return ''
    }
})
// 蛋白质确定
const dbzqd=()=>{
    state.centerDialogVisibleDBZ = false
    state.tableData.营养师指导建议.透析饮食指导.蛋白质=dbzValue.value
}
//能量计算
const nlValue= computed(() => {
    if(state.最近一次体重){
        return Number(Number(state.最近一次体重)*state.nljsz).toFixed(0)+'kcal'
    }
    else{
        return ''
    }
})
// 能量确定
const nlqd=()=>{
    state.centerDialogVisibleNL = false
    state.tableData.营养师指导建议.透析饮食指导.能量=nlValue.value
}
const Edit1=(mode)=>{
    state.innerVisible=true
    state.modeType=mode
@@ -819,9 +939,9 @@
}
const generatePDF = () => {
    const element = document.getElementById('printFrom1');
    const element = document.getElementById('fanganprintFrom1');
    const opt = {
        margin: 10,
        margin: 0,
        filename: `${state.tableData.表名}.pdf`,
        image: { type: 'jpeg', quality: 0.98 },
        html2canvas: { scale: 2 },
@@ -842,7 +962,7 @@
        surveryTime: formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'),
        surveryPerson: userInfos.value.code,
        surveryJsonBody: JSON.stringify(state.tableData),
        suveryFormName: '营养指导报告',
        suveryFormName: '营养饮食指导方案',
        updateTime: ''
    }
    console.log(info)
@@ -865,13 +985,14 @@
const getPageInfo = async () => {
    state.tableData = {
        表名: '患者方案表',
        初次调查日期: "",
        实施日期: formatDate(new Date(),'YYYY-mm-dd'),
        填表日期: '',
        更新日期: '',
        记录者: userInfos.value.userName,
        食物过敏原: "",
        胃肠功能状况: "",
        蛋白粉补充情况: "",
        营养记录汇总:"",
        透析日: {
            早餐: '',
            早加餐: '',
@@ -907,6 +1028,7 @@
        异常生化指标: '',
        // A:营养评估结果,计算所需摄入量
        营养指导初期目标: '',//优先改善( )的问题,遵循血透饮食低磷低钾优质蛋白充足能量的饮食原则
        营养饮食现状:'',
        营养师指导建议: {
            透析饮食指导: {
                能量: "",
@@ -928,6 +1050,11 @@
                高尿酸: '',
                高钾血症: '',
                蛋白质能量摄入不足: ''
            },
            其他指导:{
                便秘:'',
                腹泻:'',
                体重管理:''
            }
        },
        // P:饮食营养方案及食谱,定期随访并及时调整
@@ -969,49 +1096,40 @@
            其他: '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()
    if (from1.data.list.length >= 1) {
        const from1Json = JSON.parse(from1.data.list[0].surveryJsonBody)
        console.log(from1Json)
        state.tableData.食物过敏原= from1Json.过敏食物.type.join()
        state.tableData.胃肠功能状况=from1Json.胃肠道紊乱者.input1
        state.tableData.生活习惯.大小便=from1Json.排便情况.input1
        state.tableData.生活习惯.睡眠=from1Json.睡眠.input1
        state.tableData.生活习惯.吞咽咀嚼功能=from1Json.排便情况.input1
        state.tableData.生活习惯.烟酒=from1Json.是否吸烟.type+''+from1Json.是否饮酒.type
        state.tableData.生活习惯.运动=from1Json.运动.input1
        state.tableData.透析日.早餐=from1Json.三天饮食记录表.透析日1.早餐
        state.tableData.透析日.早加餐=from1Json.三天饮食记录表.透析日1.加餐1
        state.tableData.透析日.午餐=from1Json.三天饮食记录表.透析日1.午餐
        state.tableData.透析日.午加餐=from1Json.三天饮食记录表.透析日1.加餐2
        state.tableData.透析日.晚餐=from1Json.三天饮食记录表.透析日1.晚餐
        state.tableData.非透析日.早餐=from1Json.三天饮食记录表.非透析日.早餐
        state.tableData.非透析日.早加餐=from1Json.三天饮食记录表.非透析日.加餐1
        state.tableData.非透析日.午餐=from1Json.三天饮食记录表.非透析日.午餐
        state.tableData.非透析日.午加餐=from1Json.三天饮食记录表.非透析日.加餐2
        state.tableData.非透析日.晚餐=from1Json.三天饮食记录表.非透析日.晚餐
    }
    if (from2.data.list.length >= 1) {
        const from2Json = JSON.parse(from2.data.list[0].surveryJsonBody)
        console.log(from2Json)
        state.tableData.营养筛查评估.营养风险筛查结果=from2Json.结果
        state.tableData.营养筛查评估.营养风险筛查结果=from2Json.表名+ ' 评估得分:'+from2Json.结果?.value+', 评估结果:'+from2Json.结果?.label
    }
    if (from3.data.list.length >= 1) {
        const from3Json = JSON.parse(from3.data.list[0].surveryJsonBody)
        state.tableData.营养筛查评估.营养评估结果=from3Json.结果
        state.tableData.营养筛查评估.营养评估结果=from3Json.表名+ ' 评估得分:'+from3Json.结果?.value+', 评估结果:'+from3Json.结果?.label
        console.log(from3Json)
    }
}
// 获取最近的一次体重
const getPatDatas= ()=>{
     getPatData({ patCode: patientsInfo.value.code }).then(res=>{
        if(res.data?.上一次透前体重){
            state.最近一次体重=res.data?.上一次透前体重
        }
     })
}
// 获取膳食调查表
const getFrom1 = async () => {
@@ -1021,7 +1139,7 @@
        wherecondition: `survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
        ordercondition: 'survery_time desc'
    }
    pasm.wherecondition += "and suvery_form_name='膳食调查表'"
    pasm.wherecondition += "and suvery_form_name='膳食生活调查表'"
    const yinyangbiaodan1 = await list(pasm)
    return yinyangbiaodan1
}
@@ -1033,7 +1151,7 @@
        wherecondition: `survery_form_type=1 and patient_code='${patientsInfo.value.code}'`,
        ordercondition: 'survery_time desc'
    }
    pasm.wherecondition += "and suvery_form_name='营养风险筛查表(NRS2002)'"
    pasm.wherecondition += "and suvery_form_name='NRS-2002'"
    const yinyangbiaodan1 = await list(pasm)
    return yinyangbiaodan1
}
@@ -1045,7 +1163,7 @@
        wherecondition: `survery_form_type=1 and patient_code='${patientsInfo.value.code}'`,
        ordercondition: 'survery_time desc'
    }
    pasm.wherecondition += "and suvery_form_name='GNIR营养评估分'"
    pasm.wherecondition += "and suvery_form_name='SGA'"
    const yinyangbiaodan1 = await list(pasm)
    return yinyangbiaodan1
}
@@ -1058,6 +1176,8 @@
// 打开查看或者编辑明细
const openShow = (type: string, mode: tiaochabiaoInfo) => {
    console.log(type)
    console.log(patientsInfo.value)
    getPatDatas()
    if (type === 'add') {
        getPageInfo()
        state.dialogTableVisible = true
@@ -1066,6 +1186,8 @@
        console.log(mode)
        state.viewInfo = mode
        state.tableData = JSON.parse(mode.surveryJsonBody)
        state.tableData.实施日期=mode.surveryTime
        state.tableData.更新日期=mode.updateTime
        state.dialogTableVisible = true
@@ -1081,7 +1203,7 @@
<style scoped lang="scss">
.gridtable {
    font-family: verdana, arial, sans-serif;
    font-size: 11px;
    color: #333333;
    border-width: 1px;
    border-color: #666666;
@@ -1114,4 +1236,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>