chenyc
2025-07-14 05c827fea632f004821cc746ba73880769fab7cd
src/views/home/components/suifangjilu/index.vue
@@ -1,330 +1,297 @@
<template>
    <div>
        <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
                <div class="tableDiv">
                    <table>
                        <tr>
                            <th colspan="7" style="text-align: left">营养服务管理记录</th>
                        </tr>
                        <tr>
                            <td rowspan="3">基本信息</td>
                            <td>患者姓名</td>
                            <td></td>
                            <td>性别</td>
                            <td></td>
                            <td>年龄</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>身高(m)</td>
                            <td></td>
                            <td>病史</td>
                            <td></td>
                            <td>听力/视力障碍</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>透析频次</td>
                            <td></td>
                            <td>透析时长</td>
                            <td></td>
                            <td>透龄</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td rowspan="2">其他</td>
                            <td>口腔功能</td>
                            <td></td>
                            <td>手机使用度</td>
                            <td></td>
                            <td>营养服务类别</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>知识接受度</td>
                            <td></td>
                            <td>临床依从性</td>
                            <td></td>
                            <td>营养服务认可度</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>项目</td>
                            <td>序号</td>
                            <td>项目内容</td>
                            <td>时间</td>
                            <td>详情</td>
                            <td>备注</td>
                            <td>记录者</td>
                        </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>
                            <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>
                        <!-- 饮食管理 -->
                        <tr>
                            <td rowspan="6">饮食管理</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>
                            <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>
                        <tr>
                            <td rowspan="2">3</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>
                            <td rowspan="4">生活方式管理</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>
                            <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>
                         <!-- 用药管理 -->
                         <tr>
                            <td rowspan="6">用药管理</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>
                            <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>
                        <tr>
                            <td rowspan="2">3</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>
                            <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-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>
    <div class="dietarySurvey-home" >
        <el-row v-if="patientsInfo.id"  style="padding-left: 10px;">
            <el-form size="small" :inline="true" :model="state.formInline">
                <el-form-item label="填报日期">
                    <el-date-picker
                        v-model="state.formInline.date"
                        type="daterange"
                        unlink-panels
                        range-separator="To"
                        start-placeholder="开始"
                        end-placeholder="结束"
                        :shortcuts="shortcuts"
                        format="YYYY/MM/DD"
                        value-format="YYYY-MM-DD"
                    />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="onSubmit">查询</el-button>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" plain @click="addItem">添加</el-button>
                </el-form-item>
            </el-form>
        </el-row>
        <div v-if="patientsInfo.id"  class="divcont">
            <el-table size="default" :data="state.tableData" stripe style="width: 100%"  :height="tableHe">
                <el-table-column fixed label="NO" type="index" widtd="80" >
                        <template #header>
                            <el-icon @click="onSubmit"><RefreshRight /></el-icon>
                        </template>
                    </el-table-column>
                    <el-table-column  prop="surveryTime" label="填表时间" show-overflow-tooltip >
                        <template #default="scope">
                            {{scope.row.updateTime?.substring(0,11)}}
                        </template>
                    </el-table-column>
                    <el-table-column   label="干体重" show-overflow-tooltip >
                        <template #default="scope">
                            {{scope.row.mode.干体重}}
                        </template>
                    </el-table-column>
                    <el-table-column   label="脱水量" show-overflow-tooltip >
                        <template #default="scope">
                            {{scope.row.mode.脱水量}}
                        </template>
                    </el-table-column>
                    <el-table-column   label="指导建议" show-overflow-tooltip >
                        <template #default="scope">
                            {{scope.row.mode.指导建议}}
                        </template>
                    </el-table-column>
                    <el-table-column   label="执行反馈" show-overflow-tooltip >
                        <template #default="scope">
                            {{scope.row.mode.执行反馈}}
                        </template>
                    </el-table-column>
                    <el-table-column  prop="surveryPersonName" label="填表人" show-overflow-tooltip />
                    <!-- <el-table-column  prop="updateTime" label="更新时间" show-overflow-tooltip /> -->
                    <el-table-column  label="操作" >
                        <template #default="scope">
                            <el-button size="small" @click="handleEdit(scope.$index, scope.row)">
                                    编辑
                            </el-button>
                            <el-button
                            size="small"
                            type="danger"
                            @click="handleDelete(scope.$index, scope.row)"
                            >
                                 删除
                            </el-button>
                        </template>
                    </el-table-column>
            </el-table>
            <el-pagination
                v-model:current-page="state.page"
                v-model:page-size="state.size"
                :page-sizes="[10, 20, 30, 40]"
                layout="total, sizes, prev, pager, next, jumper"
                :total="state.total"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
                />
        </div>
        <el-empty v-if="!patientsInfo.id" description="无数据,请先选择患者"></el-empty>
        <editDietary ref="editDietaryRef"  @shuaxin="onSubmit"></editDietary>
    </div>
</template>
<script setup lang="ts">
import { storeToRefs } from 'pinia';
import { usePatientsInfo } from '/@/stores/patientsInfo';
import { computed, reactive } from 'vue';
import {list,tiaochabiaoInfo,deleteId} from '/@/api/tiaochabiao/index'
import { computed, reactive, ref } from 'vue';
import { useRoute,useRouter } from 'vue-router';
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus';
import editDietary from './editDietary.vue'
const storesPat = usePatientsInfo();
const { patientsInfo } = storeToRefs(storesPat);
const props = defineProps(['tableHeight'])
const editDietaryRef=ref()
const router = useRouter()
const shortcuts = [
  {
    text: '上一周',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
      return [start, end]
    },
  },
  {
    text: '上一个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
      return [start, end]
    },
  },
  {
    text: '前三个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
      return [start, end]
    },
  },
]
const state = reactive({
    tableData: [],
    page:1,
    size:10,
    total:0,
    loading: false,
    formInline:{
        user: '',
        formTableName:'随访记录',
        date: [],
    },
    dialogTableVisible:false
})
const tableHe = computed(() => {
    return props.tableHeight - 130
    return (props.tableHeight-200)+'px'
})
const handleSizeChange = (val: number) => {
  console.log(`${val} items per page`)
  state.size=val
  onSubmit()
}
const handleCurrentChange = (val: number) => {
  console.log(`current page: ${val}`)
  state.page=val
  onSubmit()
}
const onSubmit=()=>{
    console.log(state.formInline)
    const pasm={
        page: state.page,
        size: state.size,
        wherecondition:`survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
        ordercondition: 'survery_time desc'
    }
    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){
        pasm.wherecondition+=`and suvery_form_name='${state.formInline.formTableName}'`
    }
    const loading = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.7)',
    })
    list(pasm).then(re=>{
        state.tableData=re.data.list.map((v: any) => {
                v.mode=JSON.parse(v.surveryJsonBody)
                return v;
            })
        state.total=re.data.total
    }).finally(()=>{
        loading.close()
    })
}
const addItem=()=>{
    editDietaryRef.value.openShow('add')
    // router.push({path:'/tiaochabiao1',query:{type:'add',id:0}})
}
// 第一步:定义子组件里面的方法
const getData = (str: string) => {
    console.log("子组件获取显示数据!" + str);
    console.log(props.tableHeight)
    var pam = {
        patientCode: patientsInfo.value.code,
    const pasm = {
        page: 1,
        size: 100,
        orderType: 1,
        orderIsUse: 2,
        desc: 1,
        orderName: '',
        size: 10,
        wherecondition:`survery_form_type=0 and patient_code='${patientsInfo.value.code}'`,
        ordercondition:'survery_time DESC'
    }
    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){
        pasm.wherecondition+=`and suvery_form_name='${state.formInline.formTableName}'`
    }
    const loading = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.7)',
    })
    list(pasm).then(re=>{
        console.log(re)
        state.tableData=re.data.list.map((v: any) => {
            v.mode=JSON.parse(v.surveryJsonBody)
            return v;
        })
        state.total=re.data.total
    }).finally(()=>{
        loading.close()
    })
    state.loading = true
}
// 第二步:暴露方法
defineExpose({ getData })
/**
 * 编辑
 */
const handleEdit = (index: number, row: any) => {
  console.log(index, row,state.formInline.formTableName)
  editDietaryRef.value.openShow('update',row)
}
const handleDelete = (index: number, row: any) => {
  console.log(index, row)
  ElMessageBox.confirm(
    '你确定要删除该条记录?',
    'Warning',
    {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
    .then(() => {
        deleteId(`id=${row.id}`).then(re=>{
            ElMessage.success('删除成功')
            onSubmit()
        }).catch(e=>{
            ElMessage.error('删除失败!')
        })
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '取消操作',
      })
    })
}
</script>
<style  lang="scss">
.tableDiv {
   table {
      width: 100%;
      border-collapse: collapse;
   }
   th,
   td {
      border: 1px solid #ddd;
      padding: 8px;
      text-align: center;
   }
   th {
      background-color: #409eff;
      font-weight: bold;
      color: #ffffff;
   }
   tr:nth-child(even) {
      background-color: #f2f2f2;
   }
   .note {
      color: #409eff;
      font-size: smaller;
   }
   .fontred {
      color: red;
      font-size: large;
   }
    .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;
    margin: 0;
    list-style: none;
}
.infinite-list .infinite-list-item {
  display: flex;
}
.divcont{
    overflow-y: auto; /* 垂直滚动条 */
}
</style>