Compare commits

...

2 Commits

Author SHA1 Message Date
0c77a93fb3 Merge branch 'main' of http://47.97.125.165:8902/jiangs/lis8.0-vue3 2025-11-04 17:58:18 +08:00
b572c8aa56 右键菜单功能 2025-11-04 17:58:12 +08:00
9 changed files with 488 additions and 51 deletions

View File

@ -354,5 +354,37 @@ export function unLockSample(query?: Object) {
params: query
})
}
// 查看电子病历
export function emrquery(query?: Object) {
return request({
url: '/liswork/emrquery',
method: 'get',
params: query
})
}
// 查看患者360视图
export function allPatquery(query?: Object) {
return request({
url: '/liswork/allpatquery',
method: 'get',
params: query
})
}
// 双工流水线
export function datalink(query?: Object) {
return request({
url: '/liswork/datalink',
method: 'get',
params: query
})
}
// 批量更改流水线状态
export function changeLinkList(query?: Object) {
return request({
url: '/liswork/changelinklist',
method: 'post',
data: query
})
}

View File

@ -158,10 +158,14 @@
.el-table__body-wrapper .el-table-column--selection>.cell {
padding: 0 !important;
height: 30px;
line-height: 30px;
}
.cell.el-tooltip {
padding: 0 !important;
height: 30px;
line-height: 30px;
}
.el-table-header-cell .cell {
@ -170,6 +174,8 @@
.el-table__cell {
padding: 0 !important;
height: 30px;
line-height: 30px;
}
.el-checkbox {
@ -222,13 +228,15 @@
}
.el-select__wrapper.is-disabled {
background-color: #ccc !important;
color: #000 !important;
background-color: #dfdcdc !important;
}
.el-input.is-disabled .el-input__wrapper {
background-color: #ccc !important;
color: #000 !important;
background-color: #dfdcdc !important;
}
.el-input.is-disabled .el-input__inner {
-webkit-text-fill-color: #4e4c4c
}
@ -277,12 +285,12 @@
}
.vxe-table--render-default .vxe-body--column {
height: 1.4375rem !important;
line-height: 1.4375rem !important;
height: 1.875rem !important;
line-height: 1.875rem !important;
}
.el-checkbox {
height: 1.4375rem !important;
height: 1.875rem !important;
}
}
@ -302,7 +310,7 @@
// 滚动条
.mytable-style ::-webkit-scrollbar {
width: .5rem;
width: .6rem;
height: .5rem;
}

View File

@ -0,0 +1,114 @@
<template>
<div>
<el-dialog v-model="visible" :title="title" :width="500" :close-on-click-modal="false" :draggable="true">
<el-form ref="formRef" :model="formValue" label-width="100px">
<!-- 用户代号 -->
<el-form-item label="用户代号:" prop="yhdh" :rules="[{ required: true, message: '请输入用户代号', trigger: 'change' }]">
<el-input ref="yhdhRef" v-model="formValue.yhdh" @change="handleChange" />
</el-form-item>
<!-- 用户姓名 -->
<el-form-item label="用户姓名:">
<el-input v-model="formValue.userName" disabled />
</el-form-item>
<!-- 密码输入 -->
<el-form-item label="密码:" prop="mm" :rules="[{ required: true, message: '请输入密码', trigger: 'change' }]">
<el-input v-model="formValue.mm" type="password" @keyup.enter="handleConfirm" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="handleConfirm"> 确定 </el-button>
<el-button @click="cancel"> 取消 </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { checkYsUser } from '@/api/liswork/work/LisWork'
interface UserInfo {
usenName: string,
nickName: string,
}
const props = defineProps({
formValue: {
type: Object,
default: {
yhdh: '',
userName: '',
mm: '',
}
},
labPatKey: {
type: Object,
default: () => { }
},
userList: {
type: Array as PropType<UserInfo[]>,
default: () => []
},
title: {
type: String,
default: '请输入锁定人员账号密码'
}
});
const visible = ref(false);
// 表单数据
const formRef = ref();
const yhdhRef = ref();
const open = () => {
visible.value = true
nextTick(() => {
setTimeout(() => {
yhdhRef.value?.focus();
}, 100);
});
}
const emit = defineEmits(["confirm", "cancel",]);
// 处理确定按钮点击
const handleConfirm = async () => {
if (!formRef.value) return;
// 表单验证
const valid = await formRef.value.validate();
if (valid) {
checkYsUser({ ...props.formValue, ...props.labPatKey }).then((res: any) => {
if (res.code == 0) {
emit('confirm', props.formValue)
}
})
}
};
// 处理取消按钮点击
const cancel = () => {
formRef.value?.resetFields();
visible.value = false
emit('cancel',)
};
const handleChange = (value: string) => {
props.formValue.userName = props.userList.find((item: any) => item.userName == value)?.nickName
console.log(' props.userList==>', props.userList);
};
defineExpose({
open,
cancel
})
</script>
<style scoped></style>

View File

@ -20,7 +20,7 @@
</el-select>
</el-form-item>
<el-form-item label="" prop="failed4">
<el-select v-model="queryParams.failed4" placeholder="请选择" style="width:8.75">
<el-select v-model="queryParams.failed4" placeholder="请选择" style="width:8.75rem">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
@ -77,7 +77,6 @@
@column-drag-end="handleColumnDragEnd">
<template #dy="{ row }">
<svg-icon v-if="row.zt != 1" icon-class="lvgou" />
<svg-icon v-else icon-class="hongcha" />
</template>
<template #jzbz="{ row }">
{{ row.jzbz == '1' ? '急' : '' }}
@ -282,7 +281,7 @@ const cellStyleHd = ({ row, column, rowIndex, columnIndex }: {
}) => {
// console.log(row, column, rowIndex, columnIndex);
if (column.label == "急" && row.jzbz == "1") {
return { background: '#f00 !important', color: '#fff' };
return { color: '#f00' };
}
if (column.label == "类别") {
@ -568,8 +567,8 @@ function adjustTableHeight() {
if (compactForm.value) {
// 获取高度
heightForm.value = compactForm.value.offsetHeight;
tableConfig.value.height = `calc(71vh - ${heightForm.value}px)`; // 设置表格容器的高度
rightTableConfig.value.height = `calc(71vh - ${heightForm.value}px)`;
tableConfig.value.height = `calc(74vh - ${heightForm.value}px)`; // 设置表格容器的高度
rightTableConfig.value.height = `calc(74vh - ${heightForm.value}px)`;
}
}
@ -681,9 +680,9 @@ const printPdf = () => {
display: flex;
justify-content: space-around;
align-items: center;
margin-top: .625rem;
margin-top: .35rem;
background-color: #f0f3f8;
padding: .625rem 2.5rem;
padding: .3rem 2.5rem;
}
.time-line-item {
@ -699,9 +698,9 @@ const printPdf = () => {
align-items: center;
.index {
width: 2.5rem;
height: 2.5rem;
line-height: 2.5rem;
width: 1.875rem;
height: 1.875rem;
line-height: 1.875rem;
background: #E1E9F7;
border-radius: 50%;
text-align: center;

View File

@ -92,7 +92,6 @@
@column-drag-end="handleColumnDragEnd">
<template #dybz="{ row }">
<svg-icon v-if="row.dybz == 1" icon-class="lvgou" />
<svg-icon v-else icon-class="hongcha" />
</template>
<template #alarmflag="{ row }">
{{ row.alarmflag == 1 ? '危' : '' }}
@ -127,6 +126,20 @@
</el-col>
</el-row>
<!-- 样本流程 -->
<div class="time-line-box">
<div v-for="(item, i) in timelineItems" :key="i" class="time-line-item">
<div v-if="i != 0 && item.time" class="timeline-connector">
<img class="timg" src="@/assets/images/yjt.png" alt="">
</div>
<div class="timeline-content">
<div :class="['index', lastTimeIndex == i ? 'active' : '']">{{ i + 1 }}</div>
<div class="timeline-title">{{ item.title }}</div>
<div class="timeline-time">{{ item.time }}</div>
</div>
</div>
</div>
<!-- 结果对比 -->
<el-dialog v-model="dialogVisible" title="结果对比" draggable :close-on-click-modal="false">
@ -178,8 +191,7 @@ const options = ref([
{ label: '复制全部数据', value: 'All' },
{ label: '复制异常数据', value: 'N' },
{ label: '复制正常数据', value: 'Y' },
]
)
])
interface QueryParams {
times: string[]; // 明确类型为字符串元组
alarmflag: boolean,
@ -238,6 +250,31 @@ const queryRules = ref({
// ],
})
// 时间线数据
const timelineItems = ref(
[
{ title: '检验申请', time: '' },
{ title: '标本采集', time: '' },
{ title: '上机检验', time: '' },
{ title: '标本送检', time: '' },
// { title: '检验接收', time: '' },
{ title: '标本签收', time: '' },
{ title: '结果审核', time: '' },
]
);
// 计算最后一个有时间的节点索引
const lastTimeIndex = computed(() => {
const lastIndex = timelineItems.value.findLastIndex(item => item.time);
if (lastIndex === -1) {
return -1
} else {
return lastIndex;
}
});
const handleQuery = async () => {
const valid = await queryRef.value.validate().catch(() => { });
if (!valid) return false;
@ -284,6 +321,18 @@ const selectionChange = (selection: any) => {
const rightTableRef = ref()
const rowHandle = (row: any) => {
console.log('row==>', row);
timelineItems.value =
[
{ title: '检验申请', time: row.sqsj },
{ title: '标本采集', time: row.cysj },
{ title: '上机检验', time: row.zxsj },
{ title: '标本送检', time: row.bbsjsj },
// { title: '检验接收', time: row.jssj},
{ title: '标本签收', time: row.jssj },
{ title: '结果审核', time: row.confirmtime },
]
Info.value = row
const data = {
jyrq: row.jyrq,
@ -336,10 +385,10 @@ const cellStyleHd = ({ row, column, rowIndex, columnIndex }: {
}) => {
// console.log(row, column, rowIndex, columnIndex);
if (column.label == "急" && row.jzbz == "1") {
return { background: '#f00 !important', color: '#fff' };
return { color: '#f00' };
}
if (column.label == "危" && row.alarmflag == "1") {
return { background: '#f00 !important', color: '#fff' };
return { color: '#f00' };
}
};
@ -480,12 +529,12 @@ const xmrowHandle = (row: any) => {
bottomTableData.value = res.rows
if (res.rows.length > 0) {
nextTick(() => {
rightTableConfig.value.height = `calc(55vh - ${heightForm.value}px)`
rightTableConfig.value.height = `calc(50vh - ${heightForm.value}px)`
rightTableRef.value?.doLayout && rightTableRef.value.doLayout();
});
} else {
nextTick(() => {
rightTableConfig.value.height = `calc(93vh - ${heightForm.value}px)`
rightTableConfig.value.height = `calc(83vh - ${heightForm.value}px)`
rightTableRef.value?.doLayout && rightTableRef.value.doLayout();
});
}
@ -728,7 +777,7 @@ const bottomTableConfig = ref(
{
// stripe: true, // 斑马纹
border: true, // 边框
height: '37vh', // 高度
height: '32vh', // 高度
highlightCurrentRow: true, // 高亮当前行
cellStyle: botCellStyleHd
}
@ -817,7 +866,7 @@ function adjustTableHeight() {
heightForm.value = compactForm.value.offsetHeight;
nextTick(() => {
tableConfig.value.height = `calc(93vh - ${heightForm.value}px)`
tableConfig.value.height = `calc(83vh - ${heightForm.value}px)`
tableRefs.value?.doLayout && tableRefs.value.doLayout();
});
@ -833,8 +882,74 @@ function adjustTableHeight() {
.title {
border-bottom: 1px solid #E1E9F7;
margin-bottom: 10px;
padding: 10px;
margin-bottom: .625rem;
padding: .625rem;
font-weight: 700;
}
.time-line-box {
display: flex;
justify-content: space-around;
align-items: center;
margin-top: .35rem;
background-color: #f0f3f8;
padding: .3rem 2.5rem;
}
.time-line-item {
display: flex;
align-items: center;
justify-content: space-around;
width: 16.6%;
// padding: 0 30px;
.timeline-content {
display: flex;
flex-direction: column;
align-items: center;
.index {
width: 1.875rem;
height: 1.875rem;
line-height: 1.875rem;
background: #E1E9F7;
border-radius: 50%;
text-align: center;
font-family: SourceHanSansCN, SourceHanSansCN;
font-weight: 500;
font-size: 1.125rem;
color: #4767A3;
}
.active {
background-color: #4096ff;
box-shadow: 0 0 0 .25rem rgba(64, 150, 255, 0.2);
color: #FFF;
}
.timeline-title {
font-family: SourceHanSansCN, SourceHanSansCN;
font-weight: 500;
font-size: 1rem;
color: #4767A3;
}
.timeline-time {
font-family: SourceHanSansCN, SourceHanSansCN;
font-weight: 400;
font-size: .875rem;
color: #4767A3;
}
}
.timg {
width: 3.125rem;
}
}
:deep(.el-form-item--default) {
margin-bottom: 1.125rem;
}
</style>

View File

@ -298,7 +298,7 @@ const getLableType = (type: string) => {
case '4':
return '二报';
case '5':
return '锁定';
return '已锁定';
default:
return '';
}
@ -478,7 +478,7 @@ onMounted(() => {
}
.sd_color {
color: rgba(128, 128, 128, 0.25);
color: rgb(233, 126, 32, .25);
}
.default {

View File

@ -8,7 +8,6 @@
<!-- 完成状态列 -->
<template #finish="{ row }">
<svg-icon v-if="row.finish == 1" icon-class="lvgou" />
<svg-icon v-else icon-class="hongcha" />
</template>
<template #jgbz="{ row }">
<el-checkbox :model-value="row.jgbz == '2'" readonly />
@ -137,10 +136,10 @@ const handleMenuSelect = ((item: ContextMenuItem) => {
})
// 表格列配置
const tableColumns = ref([
{ field: 'finish', title: '完', width: 20, align: 'center', slotName: 'finish', resizable: true },
{ field: 'jgbz', title: '审', width: 20, align: 'center', slotName: 'jgbz', resizable: true },
{ field: 'alarmflag', title: '警', width: 20, align: 'center', slotName: 'alarmflag', resizable: true },
{ field: 'autojgbz', title: '自', width: 20, align: 'center', slotName: 'autojgbz', resizable: true },
{ field: 'finish', title: '完', width: 30, align: 'center', slotName: 'finish', resizable: true },
{ field: 'jgbz', title: '审', width: 30, align: 'center', slotName: 'jgbz', resizable: true },
{ field: 'alarmflag', title: '警', width: 30, align: 'center', slotName: 'alarmflag', resizable: true },
{ field: 'autojgbz', title: '自', width: 30, align: 'center', slotName: 'autojgbz', resizable: true },
{ field: 'brly', title: '类型', width: 50, align: 'center', slotName: 'brly', resizable: true },
{ field: 'ybh', title: '样本号', width: 45, align: 'center', resizable: true },
{ field: 'brxm', title: '姓名', width: 40, align: 'center', resizable: true, slotName: 'brxm' },
@ -151,7 +150,7 @@ const tableColumns = ref([
{ field: 'nldw', title: '龄', width: 20, align: 'center', slotName: 'nldw', resizable: true },
{ field: 'ksdh', title: '科室', width: 80, align: 'center', slotName: 'ksdh', resizable: true },
{ field: 'yblx', title: '标本', width: 50, align: 'center', resizable: true, slotName: 'yblx' },
{ field: 'dybz', title: '印', width: 20, align: 'center', slotName: 'dybz', resizable: true },
{ field: 'dybz', title: '印', width: 30, align: 'center', slotName: 'dybz', resizable: true },
{ field: 'fslx', title: '发送', width: 30, align: 'center', slotName: 'fslx', resizable: true },
{ field: 'shcs', title: '次数', width: 30, align: 'center', resizable: true },
{ field: 'sqh', title: '申请号/条码', width: 100, align: 'center', resizable: true, },

View File

@ -180,25 +180,59 @@
<el-col :span="8">
<div> <el-checkbox>只显示同一申请单号</el-checkbox> </div>
<div>
<el-button type="primary">确定</el-button>
<el-button type="primary">合并</el-button>
<el-button>取消</el-button>
</div>
</el-col>
</el-row>
<CustomTable :data="mTableData" :columns="mColumns" :config="mTableConfig" :enable-column-drag="true"
@column-drag-end="mDragEnd" @selection-change="mSelectionChange">
<template #brxb="{ row }">
{{ formatDict(row.brxb, 'SX') }}
</template>
<template #nldw="{ row }">
{{ formatDict(row.nldw, 'AU') }}
</template>
</CustomTable>
</el-dialog>
<!-- 用户校验 -->
<userVerification ref="formRef" :title="verTitle" :form-value="formData" :userList="userList"
@confirm="handleConfirm" @cancel="handleCancel" />
<YhVerification ref="formRef" title="请输入锁定人员账号密码" :form-value="formData" @confirm="handleConfirm"
@cancel="handleCancel" :labelShow="false" />
<!-- 双工流水线 -->
<el-dialog v-model="dlShow" title="双工流水线申请单列表" width="40vw" :close-on-click-modal="false" :draggable="true">
<div class="mb10">
<el-button type="primary" @clcick="getDlList">刷新</el-button>
<el-button type="primary" @click="cfHandle">重发申请单</el-button>
<el-button @click="closeHandle">取消申请单</el-button>
</div>
<CustomTable :data="dlTableData" :columns="dlColumns" :config="dlTableConfig" :enable-column-drag="true"
@column-drag-end="dlDragEnd" @selection-change="dlSelectionChange">
<template #instrid="{ row }">
{{ row.instrid ? dlObj[row.instrid] : '未发送指令' }}
</template>
<template #brxb="{ row }">
{{ formatDict(row.brxb, 'SX') }}
</template>
<template #nldw="{ row }">
{{ formatDict(row.nldw, 'AU') }}
</template>
</CustomTable>
<div class="mt5" style="text-align: center;color:blue;">样本总数:{{ dlTableData.length }}</div>
</el-dialog>
</div>
</template>
<script setup>
import { ref, toRefs, watch, nextTick, onMounted, computed } from "vue";
import YhVerification from "./yhVerification.vue";
import userVerification from "@/components/userVerification/index.vue";
import {
check1, check2, uncheck2, unconfirmlog, checkuser, reglimit, deleteresult, changeresult,
check1, check2, uncheck2, unconfirmlog, checkuser, reglimit, deleteresult, changeresult, allPatquery, emrquery, datalink, changeLinkList,
newresult, queryXmVal, printListwork, getresultchangelog, setinputmdl, saveResult, lockSample, unLockSample
} from "@/api/liswork/work/LisWork";
import { ElMessageBox, ElMessage } from "element-plus";
@ -222,6 +256,7 @@ const props = defineProps({
},
labPat: { type: Object, required: true },
userList: { type: Array, default: () => [] },
dictData: { type: Object, default: () => ({}) }
});
// 解构props
@ -299,6 +334,9 @@ const contextMenuItems = computed(() => [
{ label: '解除报告锁定', action: 'lift', shortcut: 'W', },
{ type: 'divider' },
// { label: '删除记录', action: 'delete', danger: true, shortcut: 'd', },
{ label: '查看电子病历', action: 'emrquery', shortcut: 'E', },
{ label: '查看360全景视图', action: 'patquery', shortcut: 'Y', },
{ label: '双工流水线', action: 'datalink', shortcut: 'F', },
]);
// 处理菜单选择
@ -311,14 +349,23 @@ const handleMenuSelect = (item) => {
previewHandle() //PDF报告预览
break;
case 'merge':
jgShow.value = true;
mergeHandle()
// alert(`合并病人当前其他结果`);
break;
case 'Lock':
lockHandle();
lockHandle(); //锁定
break;
case 'lift':
unlockHandle()
unlockHandle() //解锁
break;
case 'emrquery':
emrqueryHandle() //电子病历查询
break;
case 'patquery':
patqueryHandle() //360视图
break;
case 'datalink':
datalinkHandle() //流水线
break;
case 'delete':
if (confirm(`确定要删除患者的记录吗?`)) {
@ -327,6 +374,121 @@ const handleMenuSelect = (item) => {
break;
}
};
const mTableData = ref([])
const mColumns = ref([
{ label: "选择", type: 'selection', align: 'center', width: 40, visible: true, },
{ label: "仪器", prop: "yq", visible: true, },
{ label: "检验日期", prop: "jyrq", visible: true, },
{ label: "样本号", prop: "ybh", visible: true, },
{ label: "病历号", prop: "brdh", visible: true, },
{ label: "病人姓名", prop: "brxm", visible: true, },
{ label: "年", prop: "nl", width: 40, visible: true, },
{ label: "龄", prop: "nldw", width: 30, visible: true, slot: "nldw" },
{ label: "检验项目", prop: "xmdh", visible: true, },
{ label: "检验结果", prop: "csjg", width: 60, visible: true, },
{ label: "申请号", prop: "sqh", visible: true, },
])
const mTableConfig = {
border: true
}
const mDragEnd = (data) => {
mColumns.value = data.columns
}
const mSelectionChange = (data) => {
}
const mergeHandle = () => {
jgShow.value = true;
};
const emrqueryHandle = () => {
emrquery(tableKey.value).then(res => {
if (res.data) {
window.open(res.data)
}
})
};
const patqueryHandle = () => {
allPatquery(tableKey.value).then(res => {
if (res.data) {
window.open(res.data)
}
})
};
const dlObj = {
0: '申请发送',
1: '已发送指令',
2: '申请撤销中'
}
const dlShow = ref(false)
const dlTableData = ref([])
const dlColumns = ref([
{ label: "选择", type: 'selection', align: 'center', width: 40, visible: true, },
{ label: "动作状态", prop: "instrid", align: 'center', visible: true, slot: 'instrid' },
{ label: "申请号", prop: "sqh", align: 'center', visible: true, },
{ label: "样本号", prop: "ybh", align: 'center', visible: true, },
{ label: "姓名", prop: "brxm", align: 'center', visible: true, },
{ label: "性别", prop: "brxb", width: 30, align: 'center', visible: true, slot: 'brxb' },
{ label: "年", prop: "nl", width: 30, align: 'center', visible: true, },
{ label: "龄", prop: "nldw", width: 30, align: 'center', visible: true, slot: "nldw" },
{ label: "检验目的", prop: "jymd", width: 180, visible: true, },
])
const dlTableConfig = ref({
border: true,
maxHeight: 500,
cellStyle: ({ row, column }) => {
if (row.instrid == 1) {
return { background: '#c0c0c0 !important' }
}
},
})
const dlDragEnd = (data) => {
dlColumns.value = data.columns
}
const dlList = ref([])
const dlSelectionChange = (selection) => {
dlList.value = selection
}
const datalinkHandle = () => {
getDlList()
dlShow.value = true;
};
const getDlList = () => {
datalink(tableKey.value).then(res => {
dlTableData.value = res.data;
})
}
const cfHandle = () => {
if (dlList.value.length < 0) return ElMessage.warning('请选择数据')
const arr = dlList.value.filter(item => item.instrid == 1)
arr.forEach(v => {
v.instrid = null
})
changeLinkList(arr).then(res => {
if (res.code == 0) {
getDlList()
}
})
}
const closeHandle = () => {
dlList.value.forEach(v => {
v.instrid = 2
})
changeLinkList(dlList.value).then(res => {
if (res.code == 0) {
getDlList()
}
})
}
const formRef = ref();
@ -335,16 +497,21 @@ const formData = ref({
userName: '',
mm: '',
})
const verTitle = ref('请输入锁定人员账号密码')
const lockType = ref(1)
// 锁定报告
const lockHandle = () => {
if (props.labPat.jgbz != 0) return ElMessage.warning('样本已审核,不能锁定!')
lockType.value = 1
formRef.value.open()
verTitle.value = '请输入锁定人员账号密码'
}
// 解除锁定报告
// 解除锁定报告
const unlockHandle = () => {
if (props.labPat.jgbz != 5) return ElMessage.warning('目标标本未锁定,不可解除锁定!')
lockType.value = 2
verTitle.value = '请输入解除锁定人员账号密码'
formRef.value.open()
}
@ -359,6 +526,7 @@ const handleConfirm = (data) => {
if (res.code == 0) {
formRef.value?.cancel()
ElMessage.success(res.msg)
emits('fetchLabResults')
}
});
} else {
@ -366,6 +534,7 @@ const handleConfirm = (data) => {
if (res.code == 0) {
formRef.value?.cancel()
ElMessage.success(res.msg)
emits('fetchLabResults')
}
});
}
@ -892,6 +1061,10 @@ const formatYs = (v) => {
return userList.value.find((item) => item.userName == v)?.nickName || v
};
const formatDict = (v, dictType) => {
return props.dictData[dictType]?.find((item) => item.value == v)?.label || v;
}
</script>
<style scoped lang="scss">

View File

@ -53,7 +53,7 @@
<el-col :span="16">
<LabResult ref="labResultRef" v-model:labPat="labPat" :tableData="labResuts" :tableKey="queryParams"
:userList="userList" :resultSysList="resultConfig" @fetchLabResults="fetchLabResults"
@changeStatus="changeStatus" @previewHandle="previewHandle" />
:dictData="dictData" @changeStatus="changeStatus" @previewHandle="previewHandle" />
</el-col>
</el-row>
</div>
@ -351,12 +351,12 @@ const selectJob = (job: any) => {
queryParams.value.yq = job.yq.trim();
queryParams.value.ybh = job.ybh;
fetchLabResults();
fetchLabPat();
highlightRowIndex.value = labPatList.value.findIndex((item: any) => item.ybh == queryParams.value.ybh);
}
const labResuts = ref([])
//载入样本结果表单(中间labresult.vue组件)
const fetchLabResults = async () => {
fetchLabPat();
queryLabResults({ jyrq: queryParams.value.jyrq, yq: queryParams.value.yq, ybh: queryParams.value.ybh }).then((response: any) => {
labResuts.value = response.data;
})
@ -502,12 +502,10 @@ const handleNext = () => {
// 改变样本列表中样本状态
const changeStatus = (updatedPat: any, flag: boolean) => {
console.log('changeStatusflag==>', flag, updatedPat);
queryLabPat(queryParams.value).then((response: any) => {
if (response.code == 0) {
labPat.value = response.data[0];
const index = labPatList.value.findIndex((item: any) => item.ybh == updatedPat.ybh);
console.log('index==>', index);
if (index !== -1) {
labPatList.value = labPatList.value.map((item, i) =>
i === index ? { ...labPat.value } : item
@ -517,7 +515,6 @@ const changeStatus = (updatedPat: any, flag: boolean) => {
nextTick(() => {
labPatListRef.value.setCurrentRow(labPat.value);
});
console.log('changeStatusflag==>', flag);
// 条码号输入后操作
if (flag) {
setTimeout(() => { handleNext() }, 10)