chenyc
2025-10-14 a6f64303f88508d1c4d6ce53ff46be6b745cfb93
src/views/tongji/index.vue
@@ -17,16 +17,20 @@
         <el-form-item>
            <el-button type="primary" @click="onSubmit">查询</el-button>
         </el-form-item>
         <el-form-item>
            <el-button type="success" @click="daochuExcel">导出</el-button>
         </el-form-item>
      </el-form>
      <div>
      <div class="scrollable-table" :style="{maxHeight:tableHe}">
         <table id="tabledome" class="gridtable">
            <thead>
            <tr>
               <th colspan="22">健康管理服务明细表</th>
            </tr>
            <tr>
               <td colspan="10">服务单位:{{clientName}}</td>
               <td colspan="22">服务期({{state.formInline.date[0]}}到{{state.formInline.date[2]}})</td>
               <td colspan="22">服务期({{state.formInline.date[0]}}到{{state.formInline.date[1]}})</td>
            </tr>
            <tr>
               <th rowspan="2">序号</th>
@@ -62,6 +66,7 @@
               
               
            </tr>
         </thead>
            <tbody>
               <tr v-for="(row,index)  in state.tableData" :key="index">
@@ -88,7 +93,33 @@
                  <td></td>
                  <td></td>
               </tr>
            </tbody>
            <tfoot>
               <tr>
                  <td colspan="3">合计</td>
                  <td>{{HJcheckIsData}}</td>
                  <td>{{HJNRS}}</td>
                  <td>{{HJSGA}}</td>
                  <td>{{HJMIS}}</td>
                  <td>{{HJGNRI}}</td>
                  <td>{{HJPEW}}</td>
                  <td>{{HJ膳食生活调查表}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td>{{HJ营养饮食指导方案}}</td>
                  <td></td>
                  <td>{{HJ随访记录}}</td>
                  <td></td>
                  <td></td>
               </tr>
            </tfoot>
         </table>
      </div>
   </div>
@@ -102,6 +133,7 @@
import {nutritionalSummary} from '/@/api/Patients'
import {editUserInfo} from '/@/api/login'
import { ElLoading } from 'element-plus';
import * as XLSX from 'xlsx';
import {formatDate} from '/@/utils/formatTime'
const stores = useUserInfo();
const { userInfos } = storeToRefs(stores);
@@ -137,6 +169,106 @@
const clientName=computed(()=>{
   return userInfos.value.clientName
})
const HJcheckIsData=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row.checkIsData){
            x++
         }
      });
   }
   return x
})
const HJNRS=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['NRS-2002']?.id){
            x++
         }
      });
   }
   return x
})
const HJSGA=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['SGA']?.id){
            x++
         }
      });
   }
   return x
})
const HJMIS=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['MIS']?.id){
            x++
         }
      });
   }
   return x
})
const HJGNRI=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['GNRI']?.id){
            x++
         }
      });
   }
   return x
})
const HJPEW=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['PEW']?.id){
            x++
         }
      });
   }
   return x
})
const HJ膳食生活调查表=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['膳食生活调查表']?.id){
            x++
         }
      });
   }
   return x
})
const HJ营养饮食指导方案=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['营养饮食指导方案']?.id){
            x++
         }
      });
   }
   return x
})
const HJ随访记录=computed(()=>{
   let x=0
   if(state.tableData.length>0){
      state.tableData.forEach(row => {
         if(row?.surveryTimeMap?.['随访记录']?.id){
            x++
         }
      });
   }
   return x
})
const tableHe = computed(() => {
   let height = document.documentElement.clientHeight;
    console.log('窗口高度')
@@ -144,7 +276,7 @@
    if (navDom) {
        height -= navDom.scrollHeight;
    }
   return height+'px'
   return height-60+'px'
})
// 当前时间提示语
const end = new Date()
@@ -161,6 +293,15 @@
    },
    dialogTableVisible:false
})
const daochuExcel=()=>{
   let table = document.getElementById('tabledome');
      if (table) {
      const wb = XLSX.utils.table_to_book(table, { sheet: "Sheet1" });
         XLSX.writeFile(wb, "患者健康服务统计.xlsx"); // 文件名和扩展名可以根据需要更改
      } else {
        console.error("找不到指定的表格");
      }
}
const onSubmit=()=>{
   const pasm={
      startTime:state.formInline.date[0]+ ' 00:00:00',
@@ -169,9 +310,16 @@
      queryValue:''
   }
   console.log(pasm)
   const loading = ElLoading.service({
      lock: true,
      text: 'Loading',
      background: 'rgba(0, 0, 0, 0.7)',
   })
   nutritionalSummary(pasm).then(re=>{
      console.log(re.data)
      state.tableData=re.data
   }).finally(()=>{
      loading.close()
   })
}
@@ -181,6 +329,34 @@
</script>
<style scoped lang="scss">
.scrollable-table {
    width: 100%;
    overflow-y: auto;
    display: block;
  }
  table {
    width: 100%;
    border-collapse: collapse;
  }
  thead, tfoot {
    background-color: #f5f5f5;
    position: sticky;
    left: 0;
    right: 0;
    z-index: 2;
  }
  thead {
    top: 0;
  }
  tfoot {
    bottom: 0;
  }
  th, td {
    padding: 8px 12px;
    text-align: left;
    border: 1px solid #ddd;
  }
.gridtable {
   width: 100%;
    font-family: verdana, arial, sans-serif;