chenyc
2025-07-14 05c827fea632f004821cc746ba73880769fab7cd
src/views/home/components/editDietary.vue
@@ -1,13 +1,13 @@
<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  style="width: 100%; height: 100%;overflow: auto;">
                <div ref="printRef">
                    <div>
                        <el-form size="small">
                            <div style="width: 100%">
                                <table id="tabledome" class="gridtable">
                                    <tr>
                                        <th colspan="2">
                                            <el-form-item label="初次调查日期">
@@ -128,27 +128,27 @@
                                            1.常吃的主食
                                        </td>
                                        <td colspan="5">
                                            <el-form-item>
                                                    <el-radio-group
                                            <el-form-item>
                                                    <el-checkbox-group
                                                        v-model="state.tableData.常吃的主食.type">
                                                        <el-checkbox value="精米面类">A.精米面类</el-checkbox>
                                                        <el-checkbox value="杂豆类">B.杂豆类</el-checkbox>
                                                        <el-checkbox value="粗粮">C.粗粮</el-checkbox>
                                                        <el-checkbox value="薯类">B.薯类</el-checkbox>
                                                        <el-checkbox value="其它">E.其它</el-checkbox>
                                                            <el-checkbox value="精米面类">A.精米面类</el-checkbox>
                                                            <el-checkbox value="杂豆类">B.杂豆类</el-checkbox>
                                                            <el-checkbox value="粗粮">C.粗粮</el-checkbox>
                                                            <el-checkbox value="薯类">B.薯类</el-checkbox>
                                                            <el-checkbox value="其它">E.其它</el-checkbox>
                                                    </el-radio-group>
                                                    </el-checkbox-group >
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.常吃的主食.食用份量"/> 克/天
                                                        <input :style="{width:state.tableData?.常吃的主食?.食用份量?.length?state.tableData?.常吃的主食?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.常吃的主食.食用份量"/> 克/天
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.常吃的主食.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.常吃的主食?.食用频次?.length?state.tableData?.常吃的主食?.食用频次?.length*15+'px':'50px'}" v-model="state.tableData.常吃的主食.食用频次"/> 次/周
                                                </el-form-item>
                                        </td>
                                    </tr>
@@ -158,24 +158,25 @@
                                        </td>
                                        <td colspan="5">
                                                <el-form-item>
                                                <el-radio-group  v-model="state.tableData.常吃的蔬菜.type">
                                                <el-checkbox-group   v-model="state.tableData.常吃的蔬菜.type">
                                                    <el-checkbox value="叶菜">A.叶菜</el-checkbox>
                                                    <el-checkbox value="根茎类">B.根茎类</el-checkbox>
                                                    <el-checkbox value="瓜茄">C.瓜茄</el-checkbox>
                                                    <el-checkbox value="鲜豆">B.鲜豆</el-checkbox>
                                                    <el-checkbox value="菌藻">E.菌藻</el-checkbox>
                                                </el-radio-group>
                                                </el-checkbox-group >
                                                <br/>
                                                &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.常吃的蔬菜.食用份量"/> 克/天
                                                        <input :style="{width:state.tableData?.常吃的蔬菜?.食用份量?.length?state.tableData?.常吃的蔬菜?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.常吃的蔬菜.食用份量"/> 克/天
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.常吃的蔬菜.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.常吃的蔬菜?.食用频次?.length?state.tableData?.常吃的蔬菜?.食用频次?.length*15+'px':'50px'}" v-model="state.tableData.常吃的蔬菜.食用频次"/> 次/周
                                                   
                                            </el-form-item>
                                            
@@ -188,24 +189,24 @@
                                        <td colspan="5">
                                          
                                                <el-form-item>
                                                <el-radio-group  v-model="state.tableData.常吃的肉类.type">
                                                <el-checkbox-group   v-model="state.tableData.常吃的肉类.type">
                                                    <el-checkbox value="畜产品">A.畜产品</el-checkbox>
                                                    <el-checkbox value="禽产品">B.禽产品</el-checkbox>
                                                    <el-checkbox value="水产品类">C.水产品类</el-checkbox>
                                                    <el-checkbox value="蛋类">D.蛋类</el-checkbox>
                                                    <el-checkbox value="其他">E.其他</el-checkbox>
                                                </el-radio-group>
                                                </el-checkbox-group>
                                                &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.常吃的肉类.食用份量"/> 克/天
                                                        <input :style="{width:state.tableData?.常吃的肉类?.食用份量?.length?state.tableData?.常吃的肉类?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.常吃的肉类.食用份量"/> 克/天
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.常吃的肉类.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.常吃的肉类?.食用频次?.length?state.tableData?.常吃的肉类?.食用频次?.length*15+'px':'50px'}" v-model="state.tableData.常吃的肉类.食用频次"/> 次/周
                                                   
                                            </el-form-item>
                                            
@@ -222,13 +223,13 @@
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.常吃的水果.食用份量"/> 克/天;
                                                        <input :style="{width:state.tableData?.常吃的水果?.食用份量?.length?state.tableData?.常吃的水果?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.常吃的水果.食用份量"/> 克/天;
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.常吃的水果.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.常吃的水果?.食用份量?.length?state.tableData?.常吃的水果?.食用频次?.length*15+'px':'50px'}"  v-model="state.tableData.常吃的水果.食用频次"/> 次/周
                                                   
                                            </el-form-item>
                                        </td>
@@ -256,12 +257,12 @@
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.常吃的大豆及其制品是.食用份量"/> 克/天
                                                        <input :style="{width:state.tableData?.常吃的大豆及其制品是?.食用份量?.length?state.tableData?.常吃的大豆及其制品是?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.常吃的大豆及其制品是.食用份量"/> 克/天
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.常吃的大豆及其制品是.食用频次"/> 次/周
                                                    <input  :style="{width:state.tableData?.常吃的大豆及其制品是?.食用频次?.length?state.tableData?.常吃的大豆及其制品是?.食用频次?.length*15+'px':'50px'}"  v-model="state.tableData.常吃的大豆及其制品是.食用频次"/> 次/周
                                                   
                                            </el-form-item>
    
@@ -281,13 +282,13 @@
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.坚果摄入量.食用份量"/> 克/天;
                                                        <input :style="{width:state.tableData?.坚果摄入量?.食用份量?.length?state.tableData?.坚果摄入量?.食用份量?.length*15+'px':'50px'}"  v-model="state.tableData.坚果摄入量.食用份量"/> 克/天;
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.坚果摄入量.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.坚果摄入量?.食用频次?.length?state.tableData?.坚果摄入量?.食用频次?.length*15+'px':'50px'}" style="width: 50px;" v-model="state.tableData.坚果摄入量.食用频次"/> 次/周
                                                   
                                            </el-form-item>
    
@@ -316,13 +317,13 @@
                                                    &nbsp;&nbsp;
                                                    <span>食用份量</span>
                                                    <span>
                                                        <input style="width: 50px;" v-model="state.tableData.奶类摄入量.食用份量"/> 克/天
                                                        <input :style="{width:state.tableData?.奶类摄入量?.食用份量?.length?state.tableData?.奶类摄入量?.食用份量?.length*15+'px':'50px'}" v-model="state.tableData.奶类摄入量.食用份量"/> 克/天
                                                       
                                                    </span>
                                                    &nbsp;&nbsp;
                                                    &nbsp;&nbsp;
                                                    <span>食用频次</span>
                                                    <input style="width: 50px;" v-model="state.tableData.奶类摄入量.食用频次"/> 次/周
                                                    <input :style="{width:state.tableData?.奶类摄入量?.食用频次?.length?state.tableData?.奶类摄入量?.食用频次?.length*15+'px':'50px'}" v-model="state.tableData.奶类摄入量.食用频次"/> 次/周
                                            </el-form-item>   
                                        </td>
                                    </tr>
@@ -451,6 +452,7 @@
                                            </el-form-item>   
                                        </td>
                                    </tr>
                                    <div class="page-break"></div>
                                    <tr>
                                        <td>
                                            12.零食及其他
@@ -639,32 +641,32 @@
                                    <tr>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.早餐" placeholder="" />
                                                <el-input type="textarea"  :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.早餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.早加餐" placeholder="" />
                                                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.早加餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.午餐" placeholder="" />
                                                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.午餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.午加餐" placeholder="" />
                                                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.午加餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.晚餐" placeholder="" />
                                                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.晚餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                        <td>
                                            <el-form-item>
                                                <el-input type="textarea" v-model="state.tableData.二十四小时饮食回顾记录.晚加餐" placeholder="" />
                                                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6 }"  v-model="state.tableData.二十四小时饮食回顾记录.晚加餐" placeholder="" />
                                            </el-form-item>
                                        </td>
                                    </tr> 
@@ -904,14 +906,14 @@
                    <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" @click="onPrint">
                        <el-icon><Printer /></el-icon>
                        打印
                    </el-button>
                    <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
                    <!-- <el-button type="primary" v-if="state.viewInfo.id" @click="generatePDF">
                        <el-icon><Position /></el-icon>
                        导出
                    </el-button>
                    </el-button> -->
                    
                </div>
            </template>
@@ -922,23 +924,26 @@
</template>
<script setup lang="ts" name="visualizingLinkDemo2">
<script setup lang="ts" >
import html2pdf from 'html2pdf.js';
import printJs from 'print-js';
import { reactive, onMounted, onUnmounted, ref } 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 {Add,update,deleteId,tiaochabiaoInfo} from '/@/api/tiaochabiao/index'
import {Add,update,list,tiaochabiaoInfo} from '/@/api/tiaochabiao/index'
import { storeToRefs } from 'pinia';
import { useRoute,useRouter } from 'vue-router';
import { ElMessage } from 'element-plus';
import { ElLoading, ElMessage } from 'element-plus';
const stores = useUserInfo();
const { patientsInfo } = storeToRefs(storesPat);
const { userInfos } = storeToRefs(stores);
const router = useRouter()
const emit = defineEmits([ "shuaxin" ]);
// 定义变量内容
const printRef = ref();
const state = reactive({
    dialogTableVisible:false,
    tableData: {
@@ -966,17 +971,17 @@
            备注: '',
        },
        常吃的主食: {
            type: '', //只能选择独居或者家庭
            type: [], //只能选择独居或者家庭
            食用份量: '',
            食用频次: '',
        },
        常吃的蔬菜: {
            type: '',
            type: [],
            食用份量: '',
            食用频次: '',
        },
        常吃的肉类: {
            type: '',
            type: [],
            食用份量: '',
            食用频次: ''
        },
@@ -1138,10 +1143,16 @@
}
// 打印
const onPrint=()=>{
    printJs({
      printable: printRef.value,
      type: 'html',
      css: ['@/assets/css/printcss.css','//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css', '//unpkg.com/element-plus/dist/index.css'],
      scanStyles: false,
      style: `@media print{}}`,
   });
}
const generatePDF=()=> {
      const element = document.getElementById('printFrom1');
      const element = document.getElementById('printMe');
      const opt = {
        margin: 10,
        filename: `${state.tableData.表名}.pdf`,
@@ -1176,6 +1187,7 @@
    })
  }else if(info.id>0){
    info.surveryTime=state.viewInfo.surveryTime
    console.log()
    update(info).then(re=>{
        console.log(re.data)
        state.dialogTableVisible=false
@@ -1210,17 +1222,17 @@
            备注: '',
        },
        常吃的主食: {
            type: '', //只能选择独居或者家庭
            type: [], //只能选择独居或者家庭
            食用份量: '',
            食用频次: '',
        },
        常吃的蔬菜: {
            type: '',
            type: [],
            食用份量: '',
            食用频次: '',
        },
        常吃的肉类: {
            type: '',
            type: [],
            食用份量: '',
            食用频次: ''
        },
@@ -1381,16 +1393,54 @@
}
// 打开查看或者编辑明细
const openShow = (type: string,mode:tiaochabiaoInfo) => {
const openShow = async (type: string,mode:tiaochabiaoInfo) => {
    console.log(type)
    if(type==='add'){
        getPageInfo()
        state.dialogTableVisible = true
        const pasm={
            page: 0,
            size: 1,
            wherecondition:`survery_form_type=0 and patient_code='${patientsInfo.value.code}' and  suvery_form_name='膳食生活调查表'`,
            ordercondition: 'survery_time desc'
        }
        const re= await list(pasm);
        console.log('店家--------',re.data)
        if(re.data.list.length){
            const model=re.data.list[0]
            state.tableData=JSON.parse(model.surveryJsonBody)
            state.tableData.常吃的主食.type=Array.isArray(state.tableData.常吃的主食.type)?state.tableData.常吃的主食.type:[]
            state.tableData.常吃的蔬菜.type=Array.isArray(state.tableData.常吃的蔬菜.type)?state.tableData.常吃的蔬菜.type:[]
            state.tableData.常吃的肉类.type=Array.isArray(state.tableData.常吃的肉类.type)?state.tableData.常吃的肉类.type:[]
            // state.tableData.常吃的水果.type=Array.isArray(state.tableData.常吃的水果.type)?state.tableData.常吃的水果.type:[]
            // state.tableData.常吃的水果.type=Array.isArray(state.tableData.常吃的水果.type)?state.tableData.常吃的水果.type:[]
            state.dialogTableVisible = true
            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:0,
                updateTime: ''
            }
        }else{
            getPageInfo()
            state.dialogTableVisible = true
        }
    }
    else if(type==='update'){
        console.log(mode)
        console.log(JSON.parse(mode.surveryJsonBody))
        state.viewInfo=mode
        state.tableData=JSON.parse(mode.surveryJsonBody)
        state.tableData.常吃的主食.type=Array.isArray(state.tableData.常吃的主食.type)?state.tableData.常吃的主食.type:[]
        state.tableData.常吃的蔬菜.type=Array.isArray(state.tableData.常吃的蔬菜.type)?state.tableData.常吃的蔬菜.type:[]
        state.tableData.常吃的肉类.type=Array.isArray(state.tableData.常吃的肉类.type)?state.tableData.常吃的肉类.type:[]
        state.tableData.初次调查日期=mode.surveryTime
        state.tableData.更新日期=mode.updateTime
        state.dialogTableVisible = true
@@ -1406,7 +1456,6 @@
<style scoped lang="scss">
.gridtable {
    font-family: verdana, arial, sans-serif;
    font-size: 11px;