gx
chenyc
2025-02-27 4afd7755b465829a21b238fc0ccb98d08a8381e6
src/views/home/components/lis_.ui.vue
@@ -1,31 +1,6 @@
<template>
   <div class="inspection_project_report_container">
      <el-row>
         <el-col :span="24" class="card_box card_box_search">
            <el-form :model="searchForm" inline size="small">
               <!-- <el-form-item label="收费项目">
                  <el-select v-model="searchForm.feeItemName" filterable placeholder="收费项目" :loading="feeItemNameLoading" @change="feeItemChange">
                     <el-option v-for="(item, index) in feeItemOptions" :key="index" :label="item" :value="item" />
                  </el-select>
               </el-form-item> -->
               <!-- <el-form-item label="患者">
                  <el-select v-model="searchForm.patCode" filterable placeholder="患者" :loading="patLoading">
                     <el-option v-for="(item, index) in patOptions" :key="index" :label="item.patientName" :value="item.code" />
                  </el-select>
               </el-form-item> -->
               <el-form-item>
                  <el-button type="primary" :loading="loading" @click="searchFun">
                     <el-icon><RefreshRight /></el-icon>
                     刷新
                  </el-button>
                  <!-- <el-button type="success" :loading="loading" @click="addFun">
                     <el-icon><Plus /></el-icon>
                     新增检验数据
                  </el-button> -->
               </el-form-item>
               <el-form-item></el-form-item>
            </el-form>
         </el-col>
         <el-col :span="24" v-loading="loading">
            <el-row :gutter="15">
               <el-col :span="4">
@@ -41,8 +16,7 @@
                           :row-class-name="feeItemTableRowClassName"
                           @row-click="feeItemRowClick"
                        >
                           <!-- <el-table-column label="序号" type="index" width="100" /> -->
                           <el-table-column label="收费项目">
                           <el-table-column label="检验项目">
                              <template #default="scope">
                                 {{ scope.row }}
                              </template>
@@ -51,150 +25,24 @@
                     </el-col>
                  </el-row>
               </el-col>
               <el-col :span="20" class="card_box" v-loading="loading">
                  <el-empty v-if="tableData.length <= 0" description="暂无检验数据" />
                  <div class="result_box" v-if="tableHeight > 0" :style="{ height: (tableHeight-10) + 'px' }">
                     <el-descriptions
                        v-for="item in tableData"
                        :key="item.reportCode"
                        class="fee_item_box"
                        :title="formatDescriptionsTitle(item.sampleDate)"
                        :column="4"
                        size="small"
                        border
                     >
                        <!-- <template #extra>
                           <el-button type="primary" size="small" :loading="false" @click="editRow(item)">编辑</el-button>
                           <el-button type="danger" size="small" :loading="false" @click="delRow(item)">删除</el-button>
                        </template> -->
                        <el-descriptions-item v-for="(td, index) in item.results" :key="index">
                           <template #label>
                              <div class="cell-item">
                                 {{ td.itemName }}
                              </div>
                           </template>
                           <el-popover placement="right" :width="220" trigger="click">
                              <template #reference>
                                 <span class="item_res_text" :style="{ color: formatResultColor(td.resultFlag) }"
                                    >{{ td.itemResult }} {{ td.itemResultUnit ? `(${td.itemResultUnit})` : '' }}</span
                                 >
                              </template>
                              <div>
                                 <el-button type="success" size="mini" @click="editItem(td, item)">编辑</el-button>
                                 <el-button type="danger" size="mini" @click="delItem(td)">删除</el-button>
                              </div>
                           </el-popover>
                        </el-descriptions-item>
                     </el-descriptions>
                  </div>
               <el-col :span="20" class="patTabel" v-loading="loading" >
                  <el-table  stripe border :data="tableData" class="patient_table" :row-class-name="feeItemTableRowClassName">
                     <el-table-column  min-width="110"  fixed  prop="itemType" label="检验日期">
                        <template #default="scope">
                           {{scope.row.sampleDate.substring(0,11)}}
                        </template>
                     </el-table-column>
                     <el-table-column  min-width="100" v-for="(col,index) in tableCols" :key="index" >
                        <template #header> {{col.name}}<br/>{{`${col.参考值 || ''}${col.单位 || ''}`}}</template>
                        <template #default="scope">
                           <span  v-html="funJg(col,scope.row)"></span>
                        </template>
                     </el-table-column>
                  </el-table>
               </el-col>
            </el-row>
         </el-col>
      </el-row>
      <!-- 修改单项的dialog -->
      <el-dialog v-model="isEditItemDialogShow" title="编辑" center width="400px">
         <el-form ref="editItemFormRef" :model="editItemForm" size="small" :rules="editItemFormRules">
            <el-form-item label="检验日期">
               <el-date-picker v-model="editItemForm.sampleDate" type="date" style="width: 100%" placeholder="检验日期" :clearable="false" />
            </el-form-item>
            <el-form-item label="检验项目">
               <el-input disabled v-model="editItemForm.itemName"></el-input>
            </el-form-item>
            <el-form-item label="检验结果" prop="itemResult">
               <el-input v-model="editItemForm.itemResult" @change="(e) => itemInpChangeyz(e, editItemForm)" placeholder="检验结果" clearable>
                  <template #append>
                     <span v-if="editItemForm.itemResultUnit">{{ editItemForm.itemResultUnit }}</span>
                  </template>
               </el-input>
            </el-form-item>
         </el-form>
         <template #footer>
            <el-button size="small" :loading="loading" @click="isEditItemDialogShow = false">取消</el-button>
            <el-button type="primary" size="small" :loading="loading" @click="editItemSubmit(editItemFormRef)">保存</el-button>
         </template>
      </el-dialog>
      <!-- 修改多项 -->
      <el-dialog v-model="isManyFeeShow" title="编辑" center width="800px" :close-on-click-modal="false">
         <el-form ref="editManyFeeFormRef" :model="editManyFeeForm" size="small" label-width="150px" label-position="right">
            <el-row :gutter="10">
               <el-col :span="12" class="m_b_20">
                  <el-form-item label="检验日期">
                     <el-date-picker v-model="editManyFeeForm.sampleDate" type="date" style="width: 100%" placeholder="检验日期" :clearable="false" />
                  </el-form-item>
               </el-col>
               <el-col :span="12" class="m_b_20">
                  <el-form-item label="收费项目">
                     <el-input v-model="searchForm.feeItemName" disabled></el-input>
                  </el-form-item>
               </el-col>
               <el-col v-for="(item, index) in editManyFeeForm.children" :key="item.code" :span="12" class="m_b_20">
                  <el-form-item :label="item.itemName">
                     <el-input
                        v-model="item.itemResult"
                        :disabled="item.itemSystemName === '转铁蛋白饱和度' || disabledItem.includes(item.itemSystemName)"
                        @change="(e) => itemInpChangeyz(e, item)"
                        @input="(e) => itemInpChange2(e, item)"
                     >
                        <template #append>
                           <span v-if="item.itemResultUnit">{{ item.itemResultUnit }}</span>
                        </template>
                     </el-input>
                  </el-form-item>
               </el-col>
               <el-col :span="24" v-if="searchForm.feeItemName === 'KT/V检查'">
                  <el-form-item label=" ">
                     <el-button type="success" size="small" :loading="loading || addLoading" @click="calculatorKtvAndUrrByUpdate">计算URR K/TV</el-button>
                  </el-form-item>
               </el-col>
            </el-row>
         </el-form>
         <template #footer>
            <el-button size="small" :loading="loading" @click="isManyFeeShow = false">取消</el-button>
            <el-button type="primary" size="small" :loading="loading" @click="editManySubmit(editManyFeeFormRef)">保存</el-button>
         </template>
      </el-dialog>
      <!-- 新增 -->
      <el-dialog v-model="isShowAddFeeShow" title="新增检验数据" center width="800px" :close-on-click-modal="false">
         <el-form :model="addFeeForm" v-loading="addLoading" size="small" label-width="150px" label-position="right">
            <el-row :gutter="10">
               <el-col :span="12" class="m_b_20">
                  <el-form-item label="检验日期">
                     <el-date-picker v-model="addFeeForm.sampleDate" type="date" style="width: 100%" placeholder="检验日期" :clearable="false" />
                  </el-form-item>
               </el-col>
               <el-col :span="12" class="m_b_20">
                  <el-form-item label="收费项目">
                     <el-select v-model="addFeeForm.feeItemName" filterable placeholder="收费项目" @change="feeItemChangeByAdd">
                        <el-option v-for="(item, index) in feeItemOptions" :key="index" :label="item" :value="item" />
                     </el-select>
                  </el-form-item>
               </el-col>
               <el-col v-for="(item, index) in addFeeForm.details" :key="index" :span="12" class="m_b_20">
                  <el-form-item :label="item.testItem">
                     <el-input
                        v-model="item.testValue"
                        :disabled="disabledItem.includes(item.stName)"
                        :placeholder="item.placeholder"
                        @change="(e) => itemInpChangeyz(e, item)"
                        @input="(e) => itemInpChange(e, item)"
                     >
                        <template #append>{{ item.testItemUnit }}</template>
                     </el-input>
                  </el-form-item>
               </el-col>
               <el-col :span="24" v-if="addFeeForm.feeItemName === 'KT/V检查'">
                  <el-form-item label=" ">
                     <el-button type="success" size="small" :loading="loading || addLoading" @click="calculatorKtvAndUrr">计算URR K/TV</el-button>
                  </el-form-item>
               </el-col>
            </el-row>
         </el-form>
         <template #footer>
            <el-button size="small" :loading="loading || addLoading" @click="isShowAddFeeShow = false">取消</el-button>
            <el-button type="primary" size="small" :loading="loading || addLoading" @click="addSubmit">保存</el-button>
         </template>
      </el-dialog>
   </div>
</template>
@@ -310,7 +158,8 @@
         isFilterTestItem: 1,
      };
      const { data } = await listReportsByPatientApi(params);
      tableCols.value = data.cols;
      // tableCols.value = data.cols;
      tableCols.value=[...data.cols.filter(e => e.排序 !== null).sort((a, b) => a.排序 - b.排序), ...data.cols.filter(e => e.排序 === null)]
      tableData.value = data.reports;
   } finally {
      loading.value = false;
@@ -741,7 +590,7 @@
      height -= demoFormDom.scrollHeight;
   }
   height = height - 200;
   height = height - 140;
   tableHeight.value = height;
};
@@ -822,7 +671,33 @@
      addLoading.value = false;
   }
};
const funJg=(col:any,row:any)=>{
   const name=col.系统默认名称;
   if(row.results.length>0){
      const x= row.results.findIndex((e:any)=>{return e.itemSystemName===name})
      if(x==-1){
         return ''
      }else{
         if(row.results[x].resultFlag==='正常'){
            return `<span style="color: black;">${row.results[x].itemResult}</span>`
         }else if(row.results[x].resultFlag==='偏高'){
            return `<span style="color: red;">${row.results[x].itemResult}</span>`
         }else if(row.results[x].resultFlag==='高'){
            return `<span style="color: red;">${row.results[x].itemResult}</span>`
         }
         else if(row.results[x].resultFlag==='偏低'){
            return `<span style="color: #409EFF;">${row.results[x].itemResult}</span>`
         }else if(row.results[x].resultFlag==='低'){
            return `<span style="color: #409EFF;">${row.results[x].itemResult}</span>`
         } else {
            return `<span>${row.results[x].itemResult}</span>`
         }
      }
   }else{
      return ''
   }
}
onMounted(async () => {
   setTableHeight();
   // await getPatients();