| | |
| | | <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"> |
| | |
| | | :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> |
| | |
| | | </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> |
| | | |
| | |
| | | }); |
| | | } |
| | | } else { |
| | | ElMessage.warning('请选择患者'); |
| | | // ElMessage.warning('请选择患者'); |
| | | } |
| | | } |
| | | ); |
| | |
| | | * 查询 |
| | | */ |
| | | const searchFun = async () => { |
| | | if (!searchForm.value.patCode) return ElMessage.warning('请选择患者'); |
| | | if (!searchForm.value.patCode) return true |
| | | if (!searchForm.value.feeItemName) return ElMessage.warning('请选择收费项目'); |
| | | loading.value = true; |
| | | try { |
| | |
| | | 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; |
| | |
| | | height -= demoFormDom.scrollHeight; |
| | | } |
| | | |
| | | height = height - 200; |
| | | height = height - 140; |
| | | tableHeight.value = height; |
| | | }; |
| | | |
| | |
| | | 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(); |
| | |
| | | // @ts-ignore |
| | | searchForm.value.patCode = patientsInfo.value.code |
| | | } else { |
| | | ElMessage.warning('请选择患者'); |
| | | // ElMessage.warning('请选择患者'); |
| | | } |
| | | getFeeItems(); |
| | | }); |