报告查询-检验结果|历史比对、抗生素

This commit is contained in:
wyuu 2025-09-04 10:31:08 +08:00
parent 0ee42a673a
commit 361b573868
4 changed files with 351 additions and 99 deletions

View File

@ -51,3 +51,35 @@ export function reportList(query?: Object) {
data: query, data: query,
}); });
} }
// 查询报告Pdf
export function reportPrintPdf(query?: Object) {
return request({
url: '/report/pdf',
method: 'get',
params: query,
});
}
// 查询项目报告
export function reportResult(query?: Object) {
return request({
url: '/report/result',
method: 'post',
data: query,
});
}
// 查询微生物报告
export function reportMedList(query?: Object) {
return request({
url: '/report/MedList',
method: 'post',
data: query,
});
}
// 查询微生物报告
export function reportFsresult(query?: Object) {
return request({
url: '/report/fsresult',
method: 'post',
data: query,
});
}

View File

@ -55,7 +55,29 @@ function getContrastTextColor(bgColor: string): string {
// 根据亮度返回对比色 // 根据亮度返回对比色
return luminance > 0.5 ? '#333333' : '#FFFFFF'; return luminance > 0.5 ? '#333333' : '#FFFFFF';
} }
// 打印base64 pdf
function printPDF(base64: string) {
const blob = base64ToBlob(base64);
const pdfUrl = URL.createObjectURL(blob);
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = pdfUrl;
document.body.appendChild(iframe);
iframe.onload = () => {
iframe.contentWindow?.print();
setTimeout(() => URL.revokeObjectURL(pdfUrl), 1000); // 释放内存
};
}
function base64ToBlob(base64: string) {
const binaryString = atob(base64.replace(/[\n\r]/g, ''));
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return new Blob([bytes], { type: 'application/pdf' });
}
export const classCom = { decimalToHexColor, getContrastTextColor } export const classCom = { decimalToHexColor, getContrastTextColor, printPDF }

View File

@ -488,10 +488,14 @@ const printHandle = () => {
const data = { const data = {
dept: '0235', dept: '0235',
userid: 'lis', userid: 'lis',
st: queryParams.times[0], st: '',
et: queryParams.times[1], et: '',
yljg: queryParams.yljg yljg: queryParams.yljg
} }
if (queryParams.times && queryParams.times.length) {
data.st = queryParams.times[0]
data.et = queryParams.times[1]
}
addObj(data).then((res: any) => { addObj(data).then((res: any) => {
if (res.code == 0) { if (res.code == 0) {
getList() getList()

View File

@ -5,7 +5,7 @@
<el-form :model="queryParams" ref="queryRef" :inline="true" :rules="queryRules"> <el-form :model="queryParams" ref="queryRef" :inline="true" :rules="queryRules">
<el-form-item label="日期:" prop="times"> <el-form-item label="日期:" prop="times">
<el-date-picker v-model="queryParams.times" type="daterange" range-separator="-" start-placeholder="开始时间" <el-date-picker v-model="queryParams.times" type="daterange" range-separator="-" start-placeholder="开始时间"
end-placeholder="结束时间" /> end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
</el-form-item> </el-form-item>
<el-form-item label="病人状态:" prop="dybz"> <el-form-item label="病人状态:" prop="dybz">
@ -15,7 +15,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="科室:" prop="ksdh"> <el-form-item label="科室:" prop="ksdh">
<el-select v-model="queryParams.ksdh" placeholder="请选择" filterable> <el-select v-model="queryParams.ksdh" placeholder="请选择" filterable clearable>
<el-option v-for="item in dictData.DP" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in dictData.DP" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -65,7 +65,7 @@
<el-button type="danger" plain icon="Edit" @click="selectStatusRows">勾选中所有未打印</el-button> <el-button type="danger" plain icon="Edit" @click="selectStatusRows">勾选中所有未打印</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain>打印单张PDF报告</el-button> <el-button type="success" plain :disabled="single" @click="printPdf">打印单张PDF报告</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="Upload">GUID打印报告</el-button> <el-button type="info" plain icon="Upload">GUID打印报告</el-button>
@ -75,10 +75,14 @@
:columns="columns"></right-toolbar> :columns="columns"></right-toolbar>
</el-row> </el-row>
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :loading="loading"> <CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :loading="loading"
@selection-change="selectionChange" @row-click="rowHandle">
<template #dybz="{ row }"> <template #dybz="{ row }">
{{ row.dybz == 1 ? '✅' : '❌' }} {{ row.dybz == 1 ? '✅' : '❌' }}
</template> </template>
<template #alarmflag="{ row }">
{{ row.alarmflag == 1 ? '是' : '否' }}
</template>
<template #jzbz="{ row }"> <template #jzbz="{ row }">
{{ row.jzbz == 1 ? '急诊' : '危急诊' }} {{ row.jzbz == 1 ? '急诊' : '危急诊' }}
</template> </template>
@ -95,11 +99,12 @@
<el-button type="primary">知识库</el-button> <el-button type="primary">知识库</el-button>
</div> </div>
<CustomTable :data="rightTableData" :columns="rightColumns" :config="rightTableConfig" :loading="loading"> <CustomTable :data="rightTableData" :columns="rightColumns" :config="rightTableConfig" :loading="loading"
@row-click="xmrowHandle">
</CustomTable> </CustomTable>
<div class="title mt10">检验结果</div> <div class="title mt10">抗生素项目</div>
<CustomTable :data="rightTableData" :columns="rightColumns" :config="bottomTableConfig" :loading="loading"> <CustomTable :data="bottomTableData" :columns="bottomColumns" :config="bottomTableConfig" :loading="loading">
</CustomTable> </CustomTable>
</el-col> </el-col>
</el-row> </el-row>
@ -110,16 +115,17 @@
<div class="flex-between"> <div class="flex-between">
</div> </div>
<el-table :data="compareTableData" border style="width: 100%" @row-click="handleRowClick" highlight-current-row> <el-table :data="compareTableData" style="width: 100%" @row-click="handleRowClick" highlight-current-row
<el-table-column prop="itemName" label="项目名称" fixed /> max-height="350px">
<el-table-column prop="itemCode" label="项目编号" fixed /> <el-table-column prop="xmdh" label="项目编号" fixed align="center" width="100px" />
<template v-for="(period, idx) in periods" :key="period.key"> <el-table-column prop="xmmc" label="项目名称" fixed align="center" />
<el-table-column :label="period.label" prop="period1_value" :width="150" /> <template v-for="(period) in periods" :key="period">
<el-table-column :label="period" :prop="period" :width="150" align="center" />
</template> </template>
<el-table-column label="合计" prop="total" width="100" fixed="right" />
</el-table> </el-table>
</el-dialog>
<div ref="myEcharts" style="width:100%;height: 350px" />
</el-dialog>
</div> </div>
</template> </template>
@ -127,7 +133,11 @@
import { ref, reactive, toRaw, computed, watch, nextTick, onMounted } from 'vue'; import { ref, reactive, toRaw, computed, watch, nextTick, onMounted } from 'vue';
import CustomTable from '@/components/tableCom/index.vue' import CustomTable from '@/components/tableCom/index.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { reportList } from '@/api/checkCode/index' import { reportList, reportPrintPdf, reportResult, reportMedList, reportFsresult } from '@/api/checkCode/index'
import dayjs from 'dayjs';
import { ElMessage, ElMessageBox } from 'element-plus'
import { classCom } from '@/utils/classCom'
import * as echarts from 'echarts';
//@ts-ignore //@ts-ignore
import { comDict } from '@/utils/dict' import { comDict } from '@/utils/dict'
const router = useRouter() const router = useRouter()
@ -135,46 +145,9 @@ const router = useRouter()
const compactForm = ref<HTMLElement | null>(null); const compactForm = ref<HTMLElement | null>(null);
const heightForm = ref(90); const heightForm = ref(90);
const dialogVisible = ref(false) const dialogVisible = ref(false)
const tableRefs = ref() const tableRefs = ref()
const openDB = () => {
dialogVisible.value = true
}
const myEcharts = ref()
const handleRowClick = (row: any) => {
}
const periods = [
{
key: 'period1',
label: '2024-01-01~2024-01-07',
},
{
key: 'period2',
label: '2024-01-08~2024-01-14',
}
]
const compareTableData = [
{
itemName: '血糖',
itemCode: 'GLU',
period1_value: 5.6,
period1_status: '正常',
period2_value: 6.2,
period2_status: '偏高'
},
{
itemName: '血脂',
itemCode: 'CHOL',
period1_value: 4.8,
period1_status: '正常',
period2_value: 5.1,
period2_status: '正常'
}
]
interface QueryParams { interface QueryParams {
times: string[]; // 明确类型为字符串元组 times: string[]; // 明确类型为字符串元组
@ -190,7 +163,7 @@ interface QueryParams {
// 提交表单数据 // 提交表单数据
const queryParams = reactive<QueryParams>({ const queryParams = reactive<QueryParams>({
times: ['2025-07-18 00:00:00', '2025-07-18 23:59:59'], times: ['2025-08-19', '2025-08-19'],
ksdh: '', ksdh: '',
brly: '', brly: '',
alarmflag: false, alarmflag: false,
@ -200,11 +173,14 @@ const queryParams = reactive<QueryParams>({
sqh: '', sqh: '',
dybz: '', dybz: '',
}); });
const single = ref(true);
const multiple = ref(true);
const alarmflag = ref('0') const alarmflag = ref('0')
const jzbz = ref('0') const jzbz = ref('0')
const showSearch = ref(true); const showSearch = ref(true);
const queryRef = ref() const queryRef = ref()
// 项目点击数据
const Info = ref<any>({})
// 定义校验规则 // 定义校验规则
const queryRules = ref({ const queryRules = ref({
// clientId: [ // clientId: [
@ -229,27 +205,66 @@ const resetQuery = () => {
} }
const loading = false; const loading = false;
// 勾选框数据
const rows = ref<any[]>([])
// 数据源 // 数据源
const tableData = ref([]) const tableData = ref([])
// 配置项 // 配置项
const columns = ref<ColumnItem[]>([ const columns = ref<ColumnItem[]>([
{ prop: 'dybz', label: '打印', visible: true, key: 0, slot: 'dybz', }, { prop: 'dybz', label: '打印', visible: true, key: 0, slot: 'dybz', },
{ prop: 'jzbz', label: '急诊', visible: true, key: 1, slot: 'jzbz', }, { prop: 'jzbz', label: '急诊', visible: true, key: 1, slot: 'jzbz', },
{ prop: 'alarmflag', label: '危急值', align: 'center', visible: true, key: 2, }, { prop: 'alarmflag', label: '危急值', align: 'center', visible: true, key: 2, slot: 'alarmflag' },
{ prop: 'jyrq', label: '检验日期', align: 'center', visible: true, key: 3, width: '150px' }, { prop: 'jyrq', label: '检验日期', align: 'center', visible: true, key: 3, width: '150px' },
{ prop: 'brdh', label: '病人代号', align: 'center', visible: true, key: 4, width: '110px' }, { prop: 'brdh', label: '病人代号', align: 'center', visible: true, key: 4, width: '110px' },
{ prop: 'ch', label: '床号', align: 'center', visible: true, key: 5, sortable: true, }, { prop: 'ch', label: '床号', align: 'center', visible: true, key: 5, sortable: true, },
{ prop: 'yqdl', label: '仪器', align: 'center', visible: true, key: 6, width: '110px' }, { prop: 'yqdl', label: '仪器', align: 'center', visible: true, key: 6, width: '110px' },
{ prop: 'ybh', label: '样本号', align: 'center', visible: true, key: 7, }, { prop: 'ybh', label: '样本号', align: 'center', visible: true, key: 7, },
{ prop: 'yblxname', label: '样本类型', align: 'center', visible: true, key: 8, }, { prop: 'yblxname', label: '样本类型', align: 'center', visible: true, key: 8, },
{ prop: 'jymd', label: '检验目的', align: 'center', visible: true, key: 9, }, { prop: 'jymd', label: '检验目的', align: 'center', visible: true, key: 9, width: '110px' },
{ prop: 'brlyname', label: '病人类型', align: 'center', visible: true, key: 10, }, { prop: 'brlyname', label: '病人类型', align: 'center', visible: true, key: 10, },
{ prop: 'brxbname', label: '性别', align: 'center', visible: true, key: 11, }, { prop: 'brxbname', label: '性别', align: 'center', visible: true, key: 11, },
{ prop: 'yqmc', label: '仪器名称', align: 'center', visible: true, key: 12, width: '150px' }, { prop: 'yqmc', label: '仪器名称', align: 'center', visible: true, key: 12, width: '150px' },
{ prop: 'yljg', label: '医疗机构', align: 'center', visible: true, key: 13, width: '150px' }, { prop: 'yljg', label: '医疗机构', align: 'center', visible: true, key: 13, width: '150px' },
]) ])
const selectionChange = (selection: any) => {
rows.value = selection
single.value = selection.length != 1;
multiple.value = !selection.length;
}
const rowHandle = (row: any) => {
Info.value = row
const data = {
jyrq: row.jyrq,
yq: row.yq,
ybh: row.ybh,
}
reportResult(data).then((res: any) => {
if (res.code == 0) {
rightTableData.value = res.data
}
})
}
// 打印单张Pdf
const printPdf = () => {
const data = {
jyrq: rows.value[0].jyrq,
yq: rows.value[0].yq,
ybh: rows.value[0].ybh
}
reportPrintPdf(data).then((res: any) => {
if (res.code == 0) {
if (!res.data.base64PDF) return
classCom.printPDF(res.data.base64PDF)
}
})
}
// 单元格样式 // 单元格样式
const cellStyleHd = ({ row, column, rowIndex, columnIndex }: { const cellStyleHd = ({ row, column, rowIndex, columnIndex }: {
row: any; row: any;
@ -261,6 +276,9 @@ const cellStyleHd = ({ row, column, rowIndex, columnIndex }: {
if (column.label == "急诊" && row.jzbz == "1") { if (column.label == "急诊" && row.jzbz == "1") {
return { background: '#f00 !important', color: '#fff' }; return { background: '#f00 !important', color: '#fff' };
} }
if (column.label == "危急值" && row.alarmflag == "1") {
return { background: '#f00 !important', color: '#fff' };
}
}; };
@ -281,6 +299,7 @@ const tableConfig = ref(
// 勾选未打印 // 勾选未打印
const selectStatusRows = () => { const selectStatusRows = () => {
tableRefs.value.clearSelection()
tableData.value.forEach((item: any) => { tableData.value.forEach((item: any) => {
if (item.dybz != 1) { if (item.dybz != 1) {
tableRefs.value.toggleRowSelection(item, true) tableRefs.value.toggleRowSelection(item, true)
@ -323,37 +342,15 @@ const updateColumns = (arr: Array<ColumnItem>) => {
// 右侧数据源 // 右侧数据源
const rightTableData = [ const rightTableData = ref([])
{
id: 1, tfailed1: 'P001', tfailed2: '项目A', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
{
id: 2, tfailed1: 'P002', tfailed2: '项目B', tfailed3: 100, tfailed4: 2, tfailed5: '待处理', tfailed6: '是',
},
]
// 配置项 // 配置项
const rightColumns = ref([ const rightColumns = ref([
{ prop: 'tfailed1', label: '项目代号', visible: true, key: 0, sortable: true, width: '110px' }, { prop: 'xmdh', label: '项目代号', align: 'center', visible: true, key: 0, },
{ prop: 'tfailed2', label: '项目名称', visible: true, key: 1 }, { prop: 'xmmc', label: '项目名称', align: 'center', visible: true, key: 1 },
{ prop: 'tfailed3', label: '单价', align: 'center', visible: true, key: 2 }, { prop: 'csjg', label: '结果', align: 'center', visible: true, key: 2 },
{ prop: 'tfailed4', label: '数量', align: 'center', visible: true, key: 3 }, { prop: 'refs', label: '参考值', align: 'center', visible: true, key: 3 },
{ prop: 'tfailed5', label: '状态', align: 'center', visible: true, key: 4 }, { prop: 'dw', label: '单位', align: 'center', visible: true, key: 4 },
{ prop: 'tfailed6', label: '计价标志', align: 'center', visible: true, key: 5 }, { prop: 'jgbz', label: '结果标志', align: 'center', visible: true, key: 5 },
]) ])
// 表格配置 // 表格配置
@ -365,10 +362,200 @@ const rightTableConfig = ref(
index: false, // 序号 index: false, // 序号
height: '28vh', // 高度 height: '28vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
fit: true
} }
) )
const xmRow = ref<any>({})
// 查询抗生素
const xmrowHandle = (row: any) => {
xmRow.value = row
const data = {
jyrq: Info.value.jyrq,
yq: Info.value.yq,
ybh: Info.value.ybh,
xmdh: row.xmdh
}
reportMedList(data).then((res: any) => {
if (res.code == 200) {
bottomTableData.value = res.rows
}
})
}
const periods = ref<string[]>([])
const compareTableData = ref([])
// 历史数据对比
const openDB = () => {
// 00507620
compareTableData.value = []
if (!xmRow.value.xmdh) return ElMessage.error('至少选择一条数据进行对比')
const data = {
brdh: Info.value.brdh,
xmdh: xmRow.value.xmdh
}
reportFsresult(data).then((res: any) => {
periods.value = []
if (res.code == 0) {
const arr: string[] = res.data.map((item: any) => item.confirmdt);
periods.value = [...new Set(arr)];
res.data.forEach((v: any) => {
arr.forEach((item: any) => {
if (item == v.confirmdt) {
v[item] = v.csjg
}
})
});
// @ts-ignore 忽略重组数据动态时间key
compareTableData.value = formatGroupedData(res.data)
dialogVisible.value = true
nextTick(() => {
handleRowClick(compareTableData.value[0])
})
}
})
}
// 数据重组
const formatGroupedData = (data: any[]) => {
if (!data || data.length === 0) return [];
const groupMap: any = {};
data.forEach(item => {
const key = item.xmdh;
if (!groupMap[key]) {
groupMap[key] = {
xmdh: item.xmdh,
xmmc: item.xmmc,
// confirmdt: item.confirmdt
};
}
const dateKeys = Object.keys(item).filter(key =>
/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(key) // 匹配 YYYY-MM-DD HH:mm:ss 时间格式
);
// 将日期键值对添加到分组对象
dateKeys.forEach(dateKey => {
groupMap[key][dateKey] = item[dateKey];
});
});
// 将 Map 转为数组
return Object.values(groupMap);
};
const handleRowClick = (row: any) => {
getEcharts(row)
}
const getEcharts = (data: any) => {
const dateKeys = Object.keys(data).filter(key =>
/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(key)
);
const Intance = echarts.init(myEcharts.value);
const xData = dateKeys;
let seriesData = []
seriesData = dateKeys.map(item => data[item]);
const option = {
title: {
text: data.xmmc,
top: '5',
right: '5%',
left: '20',
// bottom: '20%'
// subtext: 'Feature Sample: Gradient Color, Shadow, Click Zoom'
},
tooltip: {
trigger: 'axis'
},
grid: {
top: '20%',
left: '3%',
right: '4%',
// bottom: '3%',
height: '80%',
containLabel: true
},
xAxis: {
type: 'category',
data: xData,
axisTick: {
show: false
},
axisLine: {
lineStyle: {
// color: 'rgba(193, 207, 220, 1)',
}
},
axisLabel: {
rotate: 30,
textStyle: {
color: "#8D949B "
}
},
},
yAxis: [{
// name: '单位(mm)',
type: 'value',
axisLabel: {
textStyle: {
color: "#8D949B"
},
// formatter: '{value}%'
},
axisLine: {
show: false,
lineStyle: {
color: '#24abf2'
}
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed'
},
},
}
],
series: [{
name: data.xmmc,
type: 'line',
data: seriesData,
symbol: 'circle',
symbolSize: 5, //标记的大小
lineStyle: {
normal: {
width: 2,
color: '#24abf2',
}
},
itemStyle: {
normal: {
color: '#24abf2',
}
},
smooth: true
}
]
};
Intance.setOption(option);
}
// 右侧数据源
const bottomTableData = ref([])
// 配置项
const bottomColumns = ref([
{ prop: 'ywdh', label: '抗生素编号', align: 'center', visible: true, key: 0 },
{ prop: 'ywmc', label: '抗生素名称', align: 'center', visible: true, key: 1 },
{ prop: 'csjg', label: '测试结果', align: 'center', visible: true, key: 2 },
{ prop: 'jgbz', label: '结果标志', align: 'center', visible: true, key: 3 },
])
// 表格配置 // 表格配置
const bottomTableConfig = ref( const bottomTableConfig = ref(
{ {
@ -378,7 +565,6 @@ const bottomTableConfig = ref(
index: false, // 序号 index: false, // 序号
height: '28vh', // 高度 height: '28vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
fit: true,
} }
) )
interface DictData { interface DictData {
@ -392,6 +578,11 @@ interface DictData {
const dictData = ref<DictData>({}); const dictData = ref<DictData>({});
onMounted(async () => { onMounted(async () => {
// 初始化3天区间(今天-前两天)
// const end = dayjs().format('YYYY-MM-DD HH:mm:ss');
// const start = dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'); //add 时间往后
// queryParams.times = [start, end];
// console.log(queryParams.times);
getList() getList()
adjustTableHeight(); adjustTableHeight();
@ -408,8 +599,6 @@ onMounted(async () => {
const getList = () => { const getList = () => {
const data = { const data = {
// dept: '0235',
// userid: 'lis',
alarmflag: alarmflag.value, alarmflag: alarmflag.value,
jzbz: jzbz.value, jzbz: jzbz.value,
dybz: queryParams.dybz, dybz: queryParams.dybz,
@ -418,14 +607,19 @@ const getList = () => {
brxm: queryParams.brxm, brxm: queryParams.brxm,
brdh: queryParams.brdh, brdh: queryParams.brdh,
sqh: queryParams.sqh, sqh: queryParams.sqh,
st: queryParams.times[0], st: '',
et: queryParams.times[1], et: '',
yljg: 1 yljg: 1
} }
if (queryParams.times && queryParams.times.length) {
data.st = queryParams.times[0]
data.et = queryParams.times[1]
}
reportList(data).then((res: any) => { reportList(data).then((res: any) => {
if (res.code == 200) { if (res.code == 0) {
tableData.value = res.rows tableData.value = res.data
tableRefs.value.setCurrentRow(res.rows[0]) tableRefs.value.setCurrentRow(res.data[0])
rowHandle(res.data[0])
} }
}) })
} }