From 376fce588c5662012e0ebafbf91dbf22ec5e4bc5 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期三, 16 十月 2024 13:18:58 +0800
Subject: [PATCH] gx

---
 .env.development                           |    4 
 src/views/home/components/patient_file.vue |  247 +++++++++++++++++++++++++++++++++----------------
 src/api/Patients/index.ts                  |    7 +
 3 files changed, 176 insertions(+), 82 deletions(-)

diff --git a/.env.development b/.env.development
index f6a2c27..4db89da 100644
--- a/.env.development
+++ b/.env.development
@@ -2,5 +2,5 @@
 ENV = development
 
 # 本地环境接口地址
-VITE_API_URL = 'http://testbs.ihemodialysis.com/'
-# VITE_API_URL = 'https://hemobs.icoldchain.cn/'
+# VITE_API_URL = 'http://testbs.ihemodialysis.com/'
+VITE_API_URL = 'https://hemobs.icoldchain.cn/'
diff --git a/src/api/Patients/index.ts b/src/api/Patients/index.ts
index 49a5725..92151b2 100644
--- a/src/api/Patients/index.ts
+++ b/src/api/Patients/index.ts
@@ -42,5 +42,12 @@
         params
     });
 }
+export function update(params: Object) {
+	return request({
+		url: '/patient/info/update',
+		method: 'post',
+		data: params,
+	});
+}
 
 
diff --git a/src/views/home/components/patient_file.vue b/src/views/home/components/patient_file.vue
index f73cbe6..f367297 100644
--- a/src/views/home/components/patient_file.vue
+++ b/src/views/home/components/patient_file.vue
@@ -1,80 +1,99 @@
 <template>
     <div class="dietarySurvey-home">
         <div v-if="patientsInfo.id" v-loading="state.loading">
-            <el-card class="box-card" >
-                <div  class="clearfix" >
-                    <el-icon size="16" color="#409efc"><Briefcase /></el-icon>  <span> &nbsp; 服务套餐</span> 
+            <el-card class="box-card">
+                <div class="clearfix">
+                    <el-icon size="16" color="#409efc">
+                        <Briefcase />
+                    </el-icon> <span> &nbsp; 服务套餐</span>
                 </div>
                 <div>
-                   基础服务100套餐
-                   膳食套餐,
-                   体检套餐,
+                    基础服务100套餐
+                    膳食套餐,
+                    体检套餐,
                 </div>
             </el-card>
             <el-card class="box-card" style="margin-top:10px;">
-                <div  class="clearfix" >
-                    <el-icon size="16" color="#409efc"><CreditCard /></el-icon>  <span> &nbsp; 患者基本信息</span> 
+                <div class="clearfix">
+                    <el-icon size="16" color="#409efc">
+                        <CreditCard />
+                    </el-icon> <span> &nbsp; 患者基本信息</span>
                 </div>
                 <div>
                     <table class="gridtable">
                         <tr>
-                            <td>姓名:{{patientsInfo.patientName}}</td>
-                            <td>年龄:<span v-if="patientsInfo.age">{{patientsInfo.age}}  岁</span></td>
-                            <td>性别:{{patientsInfo.patientGenderText}}</td>
-                            <td>身高:{{patientsInfo.patientHeight}}</td>
-                            <td>干体重:<span v-if="state.patientData.干体重">{{state.patientData.干体重}} (kg)</span></td>
-                            
+                            <td>姓名:{{ patientsInfo.patientName }}</td>
+                            <td>年龄:<span v-if="patientsInfo.age">{{ patientsInfo.age }} 岁</span></td>
+                            <td>性别:{{ patientsInfo.patientGenderText }}</td>
+                            <td>身高:{{ state.patientData.身高 }} <span v-if="state.patientData.身高">(cm)</span>
+
+                                <span>
+                                    <el-icon :size="14" color="#409EFF" @click="updateSg">
+                                        <Edit />
+                                    </el-icon>
+                                </span>
+                            </td>
+                            <td>干体重:<span>{{ state.patientData.干体重 }} (kg)</span></td>
+
+
                         </tr>
                         <tr>
-                            <td>透析龄:<span v-if="patientsInfo.medHistoryStatByMonth">{{patientsInfo.medHistoryStatByMonth}} (月)</span></td>
-                          
-                            <td colspan="4">证件号:{{patientsInfo.patientIdentityNo}}</td>
-                            
+                            <td colspan="2">证件号:{{ patientsInfo.patientIdentityNo }}</td>
+                            <td>透析龄:<span v-if="patientsInfo.medHistoryStatByMonth">{{
+                                patientsInfo.medHistoryStatByMonth }}
+                                    (月)</span></td>
+                            <td>最近体重:<span>{{ state.patientData.上一次透前体重 }} (kg)</span></td>
+                            <td>BMI:<span>{{ BMI }}</span></td>
+
                         </tr>
                         <tr>
-                            <td >电话号码:{{patientsInfo.patientTelNo}}</td>
-                            <td >家属电话:{{patientsInfo.patientTelNoRelative}}</td>
-                            <td colspan="3">家庭地址:{{patientsInfo.patientAddress}}</td>
-                            
+                            <td>电话号码:{{ patientsInfo.patientTelNo }}</td>
+                            <td>家属电话:{{ patientsInfo.patientTelNoRelative }}</td>
+                            <td colspan="3">家庭地址:{{ patientsInfo.patientAddress }}</td>
+
                         </tr>
                         <tr>
-                            <td colspan="5">患者诊断:{{state.patientData.诊断}}</td>
+                            <td colspan="5">患者诊断:{{ state.patientData.诊断 }}</td>
                         </tr>
                     </table>
                 </div>
             </el-card>
             <el-card class="box-card" style="margin-top:10px;">
-                <div  class="clearfix" >
-                    <el-icon size="16" color="#409efc"><CreditCard /></el-icon>  <span> &nbsp; 最新生化数据</span> 
+                <div class="clearfix">
+                    <el-icon size="16" color="#409efc">
+                        <CreditCard />
+                    </el-icon> <span> &nbsp; 最新生化数据</span>
                 </div>
-                <div >
+                <div>
                     <el-row :gutter="10" v-if="state.listData.length">
-                        <el-col :xs="8" :sm="8" :md="6" :lg="6" :xl="4" v-for="(item, key) in state.listData" :key="key">
-                            <div class="itemLis" v-if="item?.item_result" >
+                        <el-col :xs="8" :sm="8" :md="6" :lg="6" :xl="4" v-for="(item, key) in state.listData"
+                            :key="key">
+                            <div class="itemLis" v-if="item?.item_result">
                                 <div class="title">
-                                    {{key}}
+                                    {{ key }}
                                 </div>
-                                <div  class="itemRes">
-                                    <div  class="itemResDtile"   >
-                                       <div style="text-align: center;width: 100%;">
-                                        {{ item?.item_name }}
-                                       </div>
-                                       <div>
-                                        {{ item?.item_result }}<span class="tdate">{{item?.item_result_unit}}</span>
-                                       </div>
+                                <div class="itemRes">
+                                    <div class="itemResDtile">
+                                        <div style="text-align: center;width: 100%;">
+                                            {{ item?.item_name }}
+                                        </div>
+                                        <div>
+                                            {{ item?.item_result }}<span class="tdate">{{ item?.item_result_unit
+                                                }}</span>
+                                        </div>
                                     </div>
                                 </div>
-                                <div  class="tdate" >
-                                    {{item?.sample_date_str}}
+                                <div class="tdate">
+                                    {{ item?.sample_date_str }}
                                 </div>
-                               
+
                             </div>
-                          
+
                         </el-col>
                     </el-row>
                 </div>
             </el-card>
-            
+
         </div>
         <el-empty v-else description="无数据,请先选择患者"></el-empty>
     </div>
@@ -86,9 +105,12 @@
 import { usePatientsInfo } from '/@/stores/patientsInfo';
 import { useUserInfo } from '/@/stores/userInfo';
 import { computed, onMounted, reactive } from 'vue';
-import { getPatData,getLisResults } from '/@/api/Patients';
+import { getPatData, getLisResults,update } from '/@/api/Patients';
 import { userInfo } from 'os';
+import { Search } from '@element-plus/icons-vue'
 import dayjs from 'dayjs';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { number } from 'echarts';
 const storesPat = usePatientsInfo();
 const stores = useUserInfo();
 
@@ -96,77 +118,135 @@
 const { userInfos } = storeToRefs(stores);
 const props = defineProps(['tableHeight'])
 const state = reactive({
+
     tableData: [],
     loading: false,
-    patientData:{
-        姓名:'',
-        干体重:'',
-        证件号:"",
-        诊断:'',
-        身高:''
+    patientData: {
+        姓名: '',
+        干体重: '',
+        证件号: "",
+        诊断: '',
+        身高: '',
+        上一次透前体重: ''
     },
-    listData:<any>{}
+    listData: <any>{}
 })
 const tableHe = computed(() => {
     return props.tableHeight - 130
+})
+/**打开修改身高 */
+const updateSg = () => {
+    ElMessageBox.prompt('请输入你要修改的身高单位cm', '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        inputValue:state.patientData.身高,
+    })
+        .then(({ value }) => {
+            const params={
+                id:patientsInfo.value.id,
+                patientHeight:value
+            }
+            update(params).then(re=>{
+                getPatData({ patCode: patientsInfo.value.code,}).then(res=>{
+                    state.patientData = res.data
+                })
+            })
+        })
+        .catch(() => {
+            ElMessage({
+                type: 'info',
+                message: '取消修改',
+            })
+        })
+}
+
+const BMI = computed(() => {
+    if (state.patientData.干体重 && state.patientData.身高) {
+        return (Number(state.patientData.干体重) / (Number(state.patientData.身高)/100 * Number(state.patientData.身高)/100)).toFixed(2)
+    } else {
+        return ''
+    }
 })
 // 第一步:定义子组件里面的方法
 const getData = async (str: string) => {
     var pam = {
         patCode: patientsInfo.value.code,
     }
-    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 pam2 = {
+        clientCode: userInfos.value.clientCode,
+        patCode: patientsInfo.value.code,
+        date1: dayjs().add(-30, 'day').format('YYYY-MM-DD'),
+        date2: dayjs().format('YYYY-MM-DD'),
     }
-    try{
+    try {
         state.loading = true
-        const [res1,res2]=await Promise.all([
+        const [res1, res2] = await Promise.all([
             getPatData(pam),
             getLisResults(pam2)
         ])
-        state.patientData=res1.data
-        state.listData=res2.data
-        console.log('lis数据',state.listData)
+        state.patientData = res1.data
+        state.listData = res2.data
+        console.log('lis数据', state.listData)
         state.loading = false
     }
-    catch(error){
+    catch (error) {
         state.loading = false
+        ElMessage.error('结果请求错误,请联系管理员!')
     }
-    
+
 }
-onMounted(()=>{
+onMounted(() => {
     // console.log(dayjs().add(-7, 'day').format('YYYY-MM-DD'),'---shan')
 })
 const formatResKeys = (obj: Object) => {
-	return Object.keys(obj).filter((k) => k !== '标本日期');
+    return Object.keys(obj).filter((k) => k !== '标本日期');
 };
 const formatResKeysDate = (obj: Object) => {
-	return Object.keys(obj).filter((k) => k === '标本日期');
+    return Object.keys(obj).filter((k) => k === '标本日期');
 };
 
 // 第二步:暴露方法
 defineExpose({ getData })
 </script>
 
-<style  lang="scss">
- .gridtable {font-family: verdana,arial,sans-serif;font-size:14px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;width: 100%;}
+<style lang="scss">
+.gridtable {
+    font-family: verdana, arial, sans-serif;
+    font-size: 14px;
+    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 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;}
-.clearfix{
+.gridtable td {
+    border-width: 1px;
+    padding: 8px;
+    border-style: solid;
+    border-color: #666666;
+    background-color: #ffffff;
+}
+
+.clearfix {
     font-weight: 800;
     flex: 1;
     height: inherit;
     display: flex;
     align-items: center;
-    margin-top: -10px;margin-bottom: 10px;
+    margin-top: -10px;
+    margin-bottom: 10px;
 }
 
-.itemLis{
+.itemLis {
     margin-bottom: 10px;
     width: 100%;
     padding-left: 10px;
@@ -179,37 +259,44 @@
     border-radius: 5px;
     text-align: center;
     margin-left: 10px;
-    .title{
+
+    .title {
         text-align: left;
         color: #909399;
         font-size: 13px;
         height: 20px;
         line-height: 20px;
     }
-    .itemRes{
+
+    .itemRes {
         height: 60px;
         flex: 1;
         display: flex;
         align-items: center;
         color: #303133;
         font-size: 16px;
-        div{
+
+        div {
             width: 100%;
-            line-height: 30px;text-align: center; padding-left: 10px; padding-right: 10px;
+            line-height: 30px;
+            text-align: center;
+            padding-left: 10px;
+            padding-right: 10px;
         }
+
         .itemResDtile:not(:first-child) {
             width: 100%;
             /* 在这里添加你想要的样式 */
-            border-left: 1px solid #909399; /* 示例样式:为除第一个div外的所有div添加红色边框 */
+            border-left: 1px solid #909399;
+            /* 示例样式:为除第一个div外的所有div添加红色边框 */
         }
     }
-    .tdate{
+
+    .tdate {
         color: #909399;
         font-size: 13px;
         height: 20px;
         line-height: 20px;
     }
 }
-
-
 </style>

--
Gitblit v1.8.0