<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">
|
<el-row>
|
<el-col :span="24" class="patTabel">
|
<el-table
|
v-if="tableHeight > 0"
|
:data="feeItemOptions"
|
|
:height="tableHeight"
|
border
|
class="patient_table"
|
:row-class-name="feeItemTableRowClassName"
|
@row-click="feeItemRowClick"
|
>
|
<!-- <el-table-column label="序号" type="index" width="100" /> -->
|
<el-table-column label="收费项目">
|
<template #default="scope">
|
{{ scope.row }}
|
</template>
|
</el-table-column>
|
</el-table>
|
</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>
|
</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>
|
|
|
<script lang="ts" setup>
|
import { listTestItemsByFeeItemName, saveLisResult } from '/@/api/lis/report';
|
import { number } from 'echarts';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { computed, nextTick, onMounted, ref, watch } from 'vue';
|
import {
|
apiGetChargeItems,
|
listReportsByPatientApi,
|
apiDelLisByDate,
|
apiDelLis,
|
apiUpdateLis,
|
handCalculatorKtvAndUrrApi,
|
} from '/@/api/dataConversio/index';
|
import { useStore } from '/@/store/index';
|
import { storeToRefs } from 'pinia';
|
import { usePatientsInfo } from '/@/stores/patientsInfo';
|
import { formatDate } from '/@/utils/formatTime';
|
import { verifyNumberIntegerAndFloat } from '/@/utils/toolsValidate';
|
import { QueryList } from '/@/api/Patients';
|
const storesPat = usePatientsInfo();
|
const { patientsInfo } = storeToRefs(storesPat);
|
const store = patientsInfo;
|
|
const searchForm = ref({
|
patCode: '', // 患者编号
|
feeItemName: '', // 收费项目
|
});
|
|
const loading = ref(false);
|
const tableData = ref([]);
|
const tableCols = ref([]);
|
const feeItemNameLoading = ref(false);
|
const feeItemOptions = ref<string[]>([]);
|
const patLoading = ref(false);
|
const patOptions = ref<any[]>([]);
|
const tableHeight = ref(0);
|
const editItemForm = ref({
|
code: '',
|
itemName: '',
|
itemResult: '',
|
itemResultUnit: '',
|
sampleDate: formatDate(new Date(), 'YYYY-mm-dd'),
|
oldSampleDate: formatDate(new Date(), 'YYYY-mm-dd'),
|
reportCode: '',
|
}); // 修改单项时用到的
|
const isEditItemDialogShow = ref(false);
|
const editItemFormRef = ref();
|
const editItemFormRules = ref({
|
itemResult: [{ required: true, message: '请输入检验结果', trigger: 'blur' }],
|
});
|
|
const disabledItem = ['转铁蛋白饱和度', '计算URR', 'KT/V (计算KT/V)'];
|
|
watch(
|
// @ts-ignore
|
() => patientsInfo.value.code,
|
(newVal) => {
|
if (newVal) {
|
if (newVal) {
|
searchForm.value.patCode = newVal;
|
nextTick(() => {
|
searchFun();
|
});
|
}
|
} else {
|
ElMessage.warning('请选择患者');
|
}
|
}
|
);
|
|
// 修改整个日期的
|
const editManyFeeFormRef = ref();
|
const isManyFeeShow = ref(false);
|
const editManyFeeForm = ref({
|
sampleDate: formatDate(new Date(), 'YYYY-mm-dd'),
|
oldSampleDate: formatDate(new Date(), 'YYYY-mm-dd'),
|
reportCode: '',
|
children: [],
|
});
|
// 新增检验数据
|
const addFeeFormRef = ref();
|
const isShowAddFeeShow = ref(false);
|
const addLoading = ref(false);
|
// 临时日期 上次保存的日期
|
const addFeeFormDatels = ref('');
|
const addFeeForm = ref({
|
patientCode: '',
|
sampleDate: formatDate(new Date(), 'YYYY-mm-dd'),
|
feeItemName: '',
|
details: [],
|
});
|
|
const clientCode = computed(() => {
|
// @ts-ignore
|
return patientsInfo.value.clientCode;
|
});
|
|
/**
|
* 查询
|
*/
|
const searchFun = async () => {
|
if (!searchForm.value.patCode) return ElMessage.warning('请选择患者');
|
if (!searchForm.value.feeItemName) return ElMessage.warning('请选择收费项目');
|
loading.value = true;
|
try {
|
const params = {
|
clientCode: clientCode.value,
|
...searchForm.value,
|
isFilterTestItem: 1,
|
};
|
const { data } = await listReportsByPatientApi(params);
|
tableCols.value = data.cols;
|
tableData.value = data.reports;
|
} finally {
|
loading.value = false;
|
}
|
};
|
|
/**
|
* 获取收费项目列表
|
*/
|
const getFeeItems = async () => {
|
feeItemNameLoading.value = true;
|
try {
|
const { data } = await apiGetChargeItems();
|
feeItemOptions.value = data;
|
if (data.length > 0) {
|
feeItemRowClick(data[0]);
|
}
|
} finally {
|
feeItemNameLoading.value = false;
|
}
|
};
|
|
/**
|
* 获取患者列表
|
*/
|
const getPatients = async () => {
|
patLoading.value = true;
|
try {
|
const params = {
|
page: 0,
|
size: 0,
|
wherecondition: ` client_code="${clientCode.value}" and patient_is_alive='1'`,
|
ordercondition: 'patient_hemo_code asc',
|
};
|
const { data } = await QueryList(params);
|
patOptions.value = data.list;
|
if (data.list.length > 0) {
|
searchForm.value.patCode = data.list[0].code;
|
}
|
} catch (err) {
|
console.error(err);
|
} finally {
|
patLoading.value = false;
|
}
|
};
|
|
/**
|
* 删除检验数据
|
*/
|
const delRow = (row: any) => {
|
let msg = `<span style="color:red"> ${row.sampleDate.substring(0, 11)} </span>`;
|
ElMessageBox.confirm(
|
`
|
此操作将会删除该患者 ${msg} 所有的检验数据,是否确认?
|
`,
|
'提示',
|
{
|
dangerouslyUseHTMLString: true,
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning',
|
}
|
)
|
.then(async () => {
|
loading.value = true;
|
try {
|
await apiDelLisByDate(`reportCode=${row.reportCode}`);
|
await searchFun();
|
ElMessage.success('删除成功');
|
} finally {
|
loading.value = false;
|
}
|
})
|
.catch(() => {});
|
};
|
|
/** 删除单项检验数据 */
|
const delItem = (item: any) => {
|
let msg = `<span style="color:red"> ${item.itemName} </span>`;
|
ElMessageBox.confirm(
|
`
|
此操作将会删除该患者 ${msg} 的检验数据,是否确认?
|
`,
|
'提示',
|
{
|
dangerouslyUseHTMLString: true,
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning',
|
}
|
)
|
.then(async () => {
|
loading.value = true;
|
try {
|
await apiDelLis(`code=${item.code}`);
|
await searchFun();
|
ElMessage.success('删除成功');
|
} finally {
|
loading.value = false;
|
}
|
})
|
.catch(() => {});
|
};
|
|
/** 更新整个日期的检查项 */
|
const editRow = (row: any) => {
|
console.log(row);
|
const editData = {
|
sampleDate: formatDate(new Date(row.sampleDate), 'YYYY-mm-dd'),
|
oldSampleDate: formatDate(new Date(row.sampleDate), 'YYYY-mm-dd'),
|
reportCode: row.reportCode, // 报告单编号
|
children: [],
|
};
|
editData.children = row.results.map((item) => {
|
const editItem = {
|
code: item ? item.code : '',
|
itemSystemName: item.itemSystemName,
|
itemName: item.itemName,
|
stName: item.itemName,
|
itemResult: item ? item.itemResult : '',
|
itemResultUnit: item ? item.itemResultUnit : '',
|
sampleDate: formatDate(new Date(row.sampleDate), 'YYYY-mm-dd'),
|
reportCode: row.reportCode, // 报告单编号
|
参考值高值: item.参考高值,
|
参考值低值: item.参考低值,
|
};
|
return editItem;
|
});
|
editManyFeeForm.value = editData;
|
isManyFeeShow.value = true;
|
};
|
|
/** 更新整个日期的检查项 -- 提交 */
|
const editManySubmit = async (formEl: any) => {
|
console.log(formEl);
|
if (!formEl) return;
|
await formEl.validate(async (valid, fields) => {
|
if (valid) {
|
loading.value = true;
|
try {
|
const asyncs = editManyFeeForm.value.children.map((e) => {
|
const item: any = {
|
reportCode: e.reportCode,
|
code: e.code,
|
itemName: e.itemName,
|
result: e.itemResult,
|
};
|
// 判断检查日期是否修改,如果修改则需要提交 sampleDate
|
if (formatDate(new Date(editManyFeeForm.value.sampleDate), 'YYYY-mm-dd') !== editManyFeeForm.value.oldSampleDate) {
|
item.sampleDate = formatDate(new Date(editManyFeeForm.value.sampleDate), 'YYYY-mm-dd');
|
}
|
return item;
|
});
|
|
await Promise.all(asyncs.map((e) => apiUpdateLis(e)));
|
await searchFun();
|
loading.value = false;
|
isManyFeeShow.value = false;
|
ElMessage.success('修改成功');
|
} catch (error) {
|
loading.value = false;
|
}
|
}
|
});
|
};
|
|
/** 更新单项检验数据 */
|
const editItem = (item: any, row: any) => {
|
const editItem = {
|
code: item ? item.code : '',
|
itemName: item.itemName,
|
stName: item.itemName,
|
itemResult: item ? item.itemResult : '',
|
itemResultUnit: item ? item.itemResultUnit : '',
|
sampleDate: formatDate(new Date(row.sampleDate), 'YYYY-mm-dd'),
|
oldSampleDate: formatDate(new Date(row.sampleDate), 'YYYY-mm-dd'),
|
reportCode: row.reportCode, // 报告单编号
|
参考值低值: item.参考低值,
|
参考值高值: item.参考高值,
|
};
|
editItemForm.value = editItem;
|
isEditItemDialogShow.value = true;
|
};
|
|
/** 更新单项检验数据 -- 提交 */
|
const editItemSubmit = async (formEl: any) => {
|
if (!formEl) return;
|
await formEl.validate(async (valid, fields) => {
|
if (valid) {
|
try {
|
const params: any = {
|
reportCode: editItemForm.value.reportCode,
|
code: editItemForm.value.code,
|
itemName: editItemForm.value.itemName,
|
result: editItemForm.value.itemResult,
|
};
|
// 判断检验日期是否有更改,如果有则需要提交sampleDate
|
if (formatDate(new Date(editItemForm.value.sampleDate), 'YYYY-mm-dd') !== editItemForm.value.oldSampleDate) {
|
params.sampleDate = formatDate(new Date(editItemForm.value.sampleDate), 'YYYY-mm-dd');
|
}
|
await apiUpdateLis(params);
|
await searchFun();
|
loading.value = false;
|
isEditItemDialogShow.value = false;
|
ElMessage.success('修改成功');
|
} catch (error) {
|
loading.value = false;
|
}
|
}
|
});
|
};
|
|
const addFun = async () => {
|
// 新增检验数据
|
addFeeForm.value = {
|
patientCode: searchForm.value.patCode,
|
sampleDate: addFeeFormDatels.value === '' ? formatDate(new Date(), 'YYYY-mm-dd') : addFeeFormDatels.value,
|
feeItemName: searchForm.value.feeItemName,
|
details: [],
|
};
|
isShowAddFeeShow.value = true;
|
addLoading.value = true;
|
try {
|
addFeeForm.value.details = await getTestItems();
|
} finally {
|
addLoading.value = false;
|
}
|
};
|
|
const addSubmit = async () => {
|
const isHaveResData = addFeeForm.value.details.filter((v: any) => !!v.testValue || v.testValue == 0);
|
if (isHaveResData.length <= 0) return ElMessage.warning('请至少保证一项检验结果存在数据');
|
addLoading.value = true;
|
try {
|
const details = isHaveResData.map((v) => {
|
const item = {
|
feeItemName: v.feeItem,
|
sampleDate: addFeeForm.value.sampleDate,
|
testItemName: v.testItem,
|
testItemResult: v.testValue,
|
testItemUnit: v.testItemUnit,
|
itemRef: v.参考值,
|
};
|
return item;
|
});
|
const data = {
|
patientCode: searchForm.value.patCode,
|
details,
|
};
|
addFeeFormDatels.value = addFeeForm.value.sampleDate;
|
await saveLisResult(data);
|
isShowAddFeeShow.value = false;
|
searchFun();
|
ElMessage.success('保存成功');
|
} catch (error) {
|
ElMessage.error('保存失败,请联系管理员: ' + error);
|
} finally {
|
addLoading.value = false;
|
}
|
};
|
|
const feeItemChangeByAdd = (val: string) => {
|
nextTick(async () => {
|
addLoading.value = true;
|
try {
|
addFeeForm.value.details = await getTestItems();
|
} finally {
|
addLoading.value = false;
|
}
|
});
|
};
|
|
const itemInpChange2 = (val: any, colItem: any) => {
|
if (colItem.itemSystemName !== '血清铁' && colItem.itemSystemName !== '总铁结合力') return false;
|
let xtq = val || 0; // 血清铁
|
let ztjhl = val || 0; // 总铁结合力
|
if (colItem.itemSystemName === '血清铁') {
|
const item = editManyFeeForm.value.children.find((e) => e.itemSystemName === '总铁结合力');
|
item && (ztjhl = item.itemResult || 0);
|
}
|
if (colItem.itemSystemName === '总铁结合力') {
|
const item = editManyFeeForm.value.children.find((e) => e.itemSystemName === '血清铁');
|
item && (xtq = item.itemResult || 0);
|
}
|
console.log(xtq, ztjhl);
|
if (!verifyNumberIntegerAndFloat(xtq + '') || !verifyNumberIntegerAndFloat(ztjhl + '') || ztjhl == 0 || xtq == 0) {
|
const i = editManyFeeForm.value.children.findIndex((e) => e.itemSystemName === '转铁蛋白饱和度');
|
if (i !== -1) {
|
editManyFeeForm.value.children[i].itemResult = '';
|
}
|
return false;
|
}
|
let sum: any = (xtq / ztjhl) * 100;
|
if (sum % 1 !== 0) {
|
sum = scaleFormat(sum, 2);
|
}
|
// 查
|
const i = editManyFeeForm.value.children.findIndex((e) => e.itemSystemName === '转铁蛋白饱和度');
|
if (i !== -1) {
|
editManyFeeForm.value.children[i].itemResult = sum;
|
}
|
};
|
|
const itemInpChange = (val: any, colItem: any) => {
|
if (colItem.stName !== '血清铁' && colItem.stName !== '总铁结合力') return false;
|
let xtq = val || 0; // 血清铁
|
let ztjhl = val || 0; // 总铁结合力
|
if (colItem.stName === '血清铁') {
|
const item = addFeeForm.value.details.find((e) => e.stName === '总铁结合力');
|
item && (ztjhl = item.testValue || 0);
|
}
|
if (colItem.stName === '总铁结合力') {
|
const item = addFeeForm.value.details.find((e) => e.stName === '血清铁');
|
item && (xtq = item.testValue || 0);
|
}
|
console.log(xtq, ztjhl);
|
if (!verifyNumberIntegerAndFloat(xtq + '') || !verifyNumberIntegerAndFloat(ztjhl + '') || ztjhl == 0 || xtq == 0) {
|
const i = addFeeForm.value.details.findIndex((e) => e.stName === '转铁蛋白饱和度');
|
if (i !== -1) {
|
addFeeForm.value.details[i].testValue = '';
|
}
|
return false;
|
}
|
let sum: any = (xtq / ztjhl) * 100;
|
if (sum % 1 !== 0) {
|
sum = scaleFormat(sum, 2);
|
}
|
// 查
|
const i = addFeeForm.value.details.findIndex((e) => e.stName === '转铁蛋白饱和度');
|
if (i !== -1) {
|
addFeeForm.value.details[i].testValue = sum;
|
}
|
};
|
const itemInpChangeyz = (val: any, colItem: any) => {
|
const isNumber = /^\d*$/.test(val);
|
console.log(val, colItem, isNumber);
|
if (val && isNumber) {
|
if (colItem.参考值低值 && colItem.参考值高值) {
|
if (Number(val) <= colItem.参考值低值 || Number(val) >= colItem.参考值高值) {
|
ElMessage({
|
message: `${colItem.stName}输入的值为${val}没有在${colItem.参考值低值}~${colItem.参考值高值}参考值范围内!`,
|
type: 'warning',
|
duration: 5000,
|
});
|
}
|
}
|
}
|
};
|
|
const scaleFormat = (value: any = 0, scale: number = 4) => {
|
return Number.parseFloat(value).toFixed(scale);
|
};
|
|
const getTestItems = async () => {
|
const { data } = await listTestItemsByFeeItemName(`feeItemName=${addFeeForm.value.feeItemName}&clientCode=${clientCode.value}`);
|
return data.testItems
|
.filter((e) => e.是否显示 !== 0)
|
.map((v: any) => {
|
const obj = Object.assign({}, { ...v });
|
const item = {
|
...v,
|
testValue: '',
|
stName: obj.testItem,
|
testItem: obj.testItem2 || v.testItem,
|
placeholder: obj.参考值,
|
sortOrder: obj.排序字段 || 9999,
|
};
|
return item;
|
})
|
.sort((a, b) => a.sortOrder - b.sortOrder);
|
};
|
|
const formatResultColor = (resultFlag: string) => {
|
let color = '#606266';
|
switch (resultFlag) {
|
case '正常':
|
color = '#606266';
|
break;
|
case '偏高':
|
color = 'red';
|
break;
|
case '高':
|
color = 'red';
|
break;
|
case '偏低':
|
color = '#409EFF';
|
break;
|
case '低':
|
color = '#409EFF';
|
break;
|
}
|
return color;
|
};
|
|
/** 选中收费项目 */
|
const feeItemRowClick = (row: any) => {
|
if (row === searchForm.value.feeItemName) return false;
|
searchForm.value.feeItemName = row;
|
searchFun();
|
};
|
|
const formatDescriptionsTitle = (str: string) => {
|
return `检验日期:${formatDate(new Date(str), 'YYYY-mm-dd')}`;
|
};
|
|
const feeItemTableRowClassName = ({ row, rowIndex }: { row: any; rowIndex: number }) => {
|
if (searchForm.value.feeItemName) {
|
if (row === searchForm.value.feeItemName) {
|
return 'success-row';
|
} else {
|
return '';
|
}
|
} else {
|
return '';
|
}
|
};
|
|
const setTableHeight = () => {
|
let height = document.documentElement.clientHeight;
|
const navDom = document.querySelector('.layout-header');
|
if (navDom) {
|
height -= navDom.scrollHeight;
|
}
|
|
const demoFormDom = document.querySelector('.card_box_search');
|
|
if (demoFormDom) {
|
height -= demoFormDom.scrollHeight;
|
}
|
|
height = height - 200;
|
tableHeight.value = height;
|
};
|
|
/** 计算ktv/urr 修改的 */
|
const calculatorKtvAndUrrByUpdate = async () => {
|
const compareMap = [
|
{ stTestName: '透析前尿素氮', key: 'dataNiaosu1' },
|
{ stTestName: '透析后尿素氮', key: 'dataNiaosu2' },
|
{ stTestName: '透析时间', key: 'dataMedPeriod' },
|
{ stTestName: '透前体重', key: 'dataWeight1' },
|
{ stTestName: '透后体重', key: 'dataWeight2' },
|
];
|
const params: any = {};
|
const blanks: string[] = [];
|
editManyFeeForm.value.children.forEach((e) => {
|
const item = compareMap.find((v) => v.stTestName === e.itemSystemName);
|
if (item) {
|
console.log(+e.itemResult);
|
if (e.itemResult === '' || typeof +e.itemResult !== 'number' || isNaN(+e.itemResult)) {
|
blanks.push(e.itemSystemName);
|
}
|
params[item.key] = e.itemResult;
|
}
|
});
|
if (blanks.length > 0) return ElMessage.warning(`${blanks.join('、')}为空或不为数字`);
|
addLoading.value = true;
|
try {
|
const { data } = await handCalculatorKtvAndUrrApi(params);
|
const urrIndex = editManyFeeForm.value.children.findIndex((e) => e.itemSystemName === '计算URR');
|
const ktvIndex = editManyFeeForm.value.children.findIndex((e) => e.itemSystemName === 'KT/V (计算KT/V)');
|
if (urrIndex !== -1) {
|
editManyFeeForm.value.children[urrIndex].itemResult = data?.URR;
|
}
|
if (ktvIndex !== -1) {
|
editManyFeeForm.value.children[ktvIndex].itemResult = data?.Ktv;
|
}
|
} finally {
|
addLoading.value = false;
|
}
|
};
|
|
/**
|
* 计算ktv/URR 新增的
|
*/
|
const calculatorKtvAndUrr = async () => {
|
const compareMap = [
|
{ stTestName: '透析前尿素氮', key: 'dataNiaosu1' },
|
{ stTestName: '透析后尿素氮', key: 'dataNiaosu2' },
|
{ stTestName: '透析时间', key: 'dataMedPeriod' },
|
{ stTestName: '透前体重', key: 'dataWeight1' },
|
{ stTestName: '透后体重', key: 'dataWeight2' },
|
];
|
const params: any = {};
|
const blanks: string[] = [];
|
addFeeForm.value.details.forEach((e) => {
|
const item = compareMap.find((v) => v.stTestName === e.stName);
|
if (item) {
|
console.log(+e.testValue);
|
if (e.testValue === '' || typeof +e.testValue !== 'number' || isNaN(+e.testValue)) {
|
blanks.push(e.testItem);
|
}
|
params[item.key] = e.testValue;
|
}
|
});
|
if (blanks.length > 0) return ElMessage.warning(`${blanks.join('、')}为空或不为数字`);
|
addLoading.value = true;
|
try {
|
const { data } = await handCalculatorKtvAndUrrApi(params);
|
const urrIndex = addFeeForm.value.details.findIndex((e) => e.stName === '计算URR');
|
const ktvIndex = addFeeForm.value.details.findIndex((e) => e.stName === 'KT/V (计算KT/V)');
|
if (urrIndex !== -1) {
|
addFeeForm.value.details[urrIndex].testValue = data?.URR;
|
}
|
if (ktvIndex !== -1) {
|
addFeeForm.value.details[ktvIndex].testValue = data?.Ktv;
|
}
|
} finally {
|
addLoading.value = false;
|
}
|
};
|
|
onMounted(async () => {
|
setTableHeight();
|
// await getPatients();
|
// @ts-ignore
|
if (patientsInfo.value.code) {
|
// @ts-ignore
|
searchForm.value.patCode = patientsInfo.value.code
|
} else {
|
ElMessage.warning('请选择患者');
|
}
|
getFeeItems();
|
});
|
</script>
|
|
<style lang="scss" scoped>
|
* {
|
box-sizing: border-box;
|
}
|
.inspection_project_report_container {
|
.card_box {
|
padding: 15px;
|
background: #fff;
|
padding-bottom: 0;
|
&.card_box_search {
|
padding-bottom: 0;
|
margin-bottom: 10px;
|
}
|
}
|
.search_inp_box {
|
padding: 10px;
|
background-color: #6babfa;
|
}
|
.fee_item_box {
|
margin-bottom: 20px;
|
}
|
.item_res_text {
|
&:hover {
|
color: #409eff !important;
|
cursor: pointer;
|
}
|
}
|
.m_b_20 {
|
margin-bottom: 20px;
|
}
|
.result_box {
|
overflow-y: auto;
|
}
|
}
|
</style>
|
|
<style lang="scss">
|
.patient_table {
|
.success-row {
|
background: rgb(197.7, 225.9, 255);
|
color: #409EFF;
|
}
|
}
|
</style>
|