Compare commits

..

No commits in common. "afe4e5f45da653f11d5f62c90342db95161f9a12" and "bf493c49d0e9e07d5cad92b5c4b3ca13038d8bfb" have entirely different histories.

6 changed files with 65 additions and 124 deletions

View File

@ -70,7 +70,7 @@ import ImagePreview from "@/components/ImagePreview"
import TreeSelect from '@/components/TreeSelect'
// 字典标签组件
import DictTag from '@/components/DictTag'
import print from 'vue3-print-nb';
import Print from 'vue3-print-nb';
const app = createApp(App)
// 全局方法挂载
@ -96,7 +96,7 @@ app.component('Editor', Editor)
//VUE3标准方法注入全局方法
app.provide('comDict', comDict);
app.use(print); // 注册打印插件
app.use(Print); // 注册打印插件
app.provide('$vuePrint', app.config.globalProperties.$vuePrint);
app.use(router)
app.use(store)

View File

@ -123,10 +123,6 @@
<CustomTable v-if="bottomTableData.length > 0" :data="bottomTableData" :columns="bottomColumns"
:config="bottomTableConfig">
</CustomTable>
<div v-if="bottomTableData.length > 0" class="expert-comment" :title="expertComment">
专家评语:{{ expertComment }}
</div>
</el-col>
</el-row>
@ -181,6 +177,7 @@ import { usePrintStore } from '@/store/modules/printStore'
//@ts-ignore
import useUserStore from '@/store/modules/user'
import { useRoute } from 'vue-router'
const route = useRoute()
const userStore = useUserStore()
@ -224,15 +221,9 @@ const queryParams = reactive<QueryParams>({
dybz: '',
userid: ''
});
// 获取当前日期(当天)
const today = dayjs();
// 计算前6天的日期(当天 + 前6天 = 7天)
const startOfWeek = today.subtract(6, 'day');
const startDate = route.query.startdate ? String(route.query.startdate) : startOfWeek.format('YYYY-MM-DD');
const endDate = route.query.endate ? String(route.query.endate) : today.format('YYYY-MM-DD');
const startDate = typeof route.query.startdate === 'string' ? route.query.startdate : '';
const endDate = typeof route.query.endate === 'string' ? route.query.endate : '';
queryParams.times = [startDate, endDate];
queryParams.ksdh = (route.query.deptcode as string) || '';
queryParams.userid = (route.query.userid as string) || '';
@ -306,21 +297,20 @@ const columns = ref([
{ prop: 'dybz', label: '印', align: 'center', visible: true, slot: 'dybz', width: 40 },
{ prop: 'jzbz', label: '急', align: 'center', visible: true, slot: 'jzbz', width: 40 },
{ prop: 'alarmflag', label: '危', align: 'center', visible: true, slot: 'alarmflag', width: 40 },
{ prop: 'brdh', label: '病人代号', align: 'center', visible: true, sortable: true, width: 100 },
{ prop: 'jyrqname', label: '检验日期', align: 'center', visible: true, sortable: true, width: 100 },
{ prop: 'brdh', label: '病人代号', align: 'center', visible: true, width: 100 },
{ prop: 'brxm', label: '病人姓名', align: 'center', visible: true, },
{ prop: 'brxbname', label: '性别', align: 'center', visible: true, width: 40 },
{ prop: 'ch', label: '床号', align: 'center', visible: true, width: 50 },
{ prop: 'jymd', label: '检验目的', align: 'center', visible: true, width: 200 },
{ prop: 'yqdl', label: '仪器', align: 'center', visible: true, width: 100 },
{ prop: 'ybh', label: '样本号', align: 'center', visible: true, width: 60 },
{ prop: 'yblxname', label: '样本类型', align: 'center', visible: true, },
{ prop: 'sqsj', label: '送检时间', align: 'center', visible: true, width: 150 },
{ prop: 'confirmtime', label: '报告时间', align: 'center', visible: true, sortable: true, width: 150 },
{ prop: 'jymd', label: '检验目的', align: 'center', visible: true, width: 118 },
{ prop: 'sqsj', label: '申请时间', align: 'center', visible: true, width: 150 },
{ prop: 'sjysname', label: '送检医生', align: 'center', visible: true, width: 80 },
{ prop: 'brlyname', label: '病人类型', align: 'center', visible: true, width: 80 },
{ prop: 'yljg', label: '医疗机构', align: 'center', visible: true, width: 150 },
{ prop: 'jyrqname', label: '检验日期', align: 'center', visible: true, width: 100 },
{ prop: 'ybh', label: '样本号', align: 'center', visible: true, width: 60 },
{ prop: 'yqmc', label: '仪器名称', align: 'center', visible: true, width: 150 },
{ prop: 'yqdl', label: '仪器', align: 'center', visible: true, width: 100 },
{ prop: 'yljg', label: '医疗机构', align: 'center', visible: true, width: 150 },
])
const selectionChange = (selection: any) => {
@ -331,20 +321,6 @@ const selectionChange = (selection: any) => {
const rightTableRef = ref()
const rowHandle = (row: any) => {
console.log('row==>', row);
if (row.yqdl == '细菌仪') {
rightColumns.value[1].visible = false
rightColumns.value[2].visible = true
rightColumns.value[4].visible = false
rightColumns.value[5].visible = false
rightColumns.value[6].visible = true
} else {
rightColumns.value[1].visible = true
rightColumns.value[2].visible = false
rightColumns.value[4].visible = true
rightColumns.value[5].visible = true
rightColumns.value[6].visible = false
}
timelineItems.value =
[
{ title: '检验申请', time: row.sqsj },
@ -491,12 +467,10 @@ const rightTableData = ref([])
// 配置项
const rightColumns = ref([
{ prop: 'xmdh', label: '项目代号', align: 'center', visible: true, },
{ prop: 'xmmc', label: '项目名称', align: 'center', visible: true, },
{ prop: 'xmmc', label: '培养结果', align: 'center', visible: true, width: 150 },
{ prop: 'xmmc', label: '项目名称', align: 'center', visible: true, width: 150 },
{ prop: 'csjg', label: '检验结果', align: 'center', visible: true, },
{ prop: 'refs', label: '参考值', align: 'center', visible: true, },
{ prop: 'dw', label: '单位', align: 'center', visible: true, },
{ prop: 'od', label: '菌落计数', align: 'center', visible: true, },
{ prop: 'jgbz', label: '结果标志', align: 'center', visible: true, slot: 'jgbz' },
])
@ -528,7 +502,7 @@ const rightTableConfig = ref(
{
// stripe: true, // 斑马纹
border: true, // 边框
height: '25vh', // 高度
height: '40vh', // 高度
highlightCurrentRow: true, // 高亮当前行
cellStyle: rightCellStyleHd
}
@ -538,12 +512,11 @@ const formatJgbz = (v: string) => {
return v == 'H' ? '高' : v == 'L' ? '低' : v == 'N' ? '阴性' : v == 'P' ? '阳性' : v == 'Q' ? '弱阳性' : v == 'M' ? '正常' : ''
}
const expertComment = ref('')
const xmRow = ref<any>({})
// 查询抗生素
const xmrowHandle = (row: any) => {
xmRow.value = row
expertComment.value = row.textresult
const data = {
jyrq: Info.value.jyrq,
yq: Info.value.yq,
@ -555,7 +528,7 @@ const xmrowHandle = (row: any) => {
bottomTableData.value = res.rows
if (res.rows.length > 0) {
nextTick(() => {
rightTableConfig.value.height = `calc(35vh - ${heightForm.value}px)`
rightTableConfig.value.height = `calc(50vh - ${heightForm.value}px)`
rightTableRef.value?.doLayout && rightTableRef.value.doLayout();
});
} else {
@ -780,11 +753,10 @@ const getEcharts = (data: any) => {
const bottomTableData = ref([])
// 配置项
const bottomColumns = ref([
{ prop: 'ywdh', label: '抗生素代码', align: 'center', visible: true, },
{ prop: 'ywmc', label: '抗生素名称', align: 'center', width: 200, visible: true, },
{ prop: 'mic', label: 'MIC', align: 'center', visible: true },
{ prop: 'rad', label: 'KB', align: 'center', visible: true },
{ prop: 'csjg', label: '药敏结果', align: 'center', visible: true },
{ prop: 'ywdh', label: '抗生素编号', align: 'center', visible: true, },
{ prop: 'ywmc', label: '抗生素名称', align: 'center', visible: true, },
{ prop: 'csjg', label: '测试结果', align: 'center', visible: true },
// { prop: 'jgbz', label: '结果标志', align: 'center', visible: true },
])
const botCellStyleHd = ({ row, column, rowIndex, columnIndex }: {
row: any;
@ -792,10 +764,10 @@ const botCellStyleHd = ({ row, column, rowIndex, columnIndex }: {
rowIndex: number;
columnIndex: number;
}) => {
if (column.label == '药敏结果' && row.jgbz == 'R') {
if (column.label == '测试结果' && row.jgbz == 'R') {
return { background: '#ffc0c0 !important', color: '#606266' };
}
if (column.label == '药敏结果' && row.jgbz.trim() == "") {
if (column.label == '测试结果' && row.jgbz.trim() == "") {
return { background: '#ffff80 !important', color: '#606266' };
}
}
@ -804,7 +776,7 @@ const bottomTableConfig = ref(
{
// stripe: true, // 斑马纹
border: true, // 边框
height: '40vh', // 高度
height: '32vh', // 高度
highlightCurrentRow: true, // 高亮当前行
cellStyle: botCellStyleHd
}
@ -979,20 +951,4 @@ function adjustTableHeight() {
:deep(.el-form-item--default) {
margin-bottom: 1.125rem;
}
.expert-comment {
/* 限制最大显示行数为2行 */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
/* 超出部分隐藏 */
overflow: hidden;
/* 可选:设置行高和最大宽度,优化显示效果 */
line-height: 1.5;
/* 行高,根据字体大小调整 */
max-width: 100%;
pointer-events: auto;
/* 允许鼠标交互 */
cursor: default;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<el-dialog v-model="show" title="申请信息条形码自动输入" width="800px" class="dialog_box" :close-on-click-modal="false"
:draggable="true" @close="handleClose">
<el-dialog v-model="show" title="申请信息条形码自动输入" width="800px" :close-on-click-modal="false" :draggable="true"
@close="handleClose">
<div class="container">
<el-form inline class="compact-form">
<el-form-item label="样本号:">
@ -55,7 +55,8 @@
}}</span> 个
</div>
</div>
<el-table :data="tableData" ref="tableRef" border height="400px" show-overflow-tooltip>
<el-table :data="tableData" border class="mt-4 w-full" height="400px">
<el-table-column prop="ybh" label="样本号" />
<el-table-column prop="sqh" label="条码" />
<el-table-column prop="brxm" label="姓名" />
@ -63,6 +64,7 @@
<el-table-column prop="jymd" label="项目" width="300" />
</el-table>
</div>
</el-dialog>
</template>
@ -137,9 +139,6 @@ const handleEnter = () => {
}
prevSpecimen.value = res.data
tableData.value.push(res.data)
nextTick(() => {
tableRef.value.setScrollTop(tableData.value.length * 30);
})
currentScanCount.value++;
}
})
@ -148,34 +147,25 @@ const handleEnter = () => {
// 上一个标本
const goPrev = () => {
emit('goPrev');
sqhRef.value?.focus()
};
// 下一个标本
const goNext = () => {
emit('goNext');
sqhRef.value?.focus()
};
// 最后一个标本
const goLast = () => {
emit('goLast');
sqhRef.value?.focus()
};
const tableRef = ref()
const printHandle = () => {
if (!tableData.value.length) return ElMessage.warning('样本打印数据为空')
};
const open = () => {
ybh.value = labPat.value.ybh
show.value = true;
nextTick(() => {
setTimeout(() => {
sqhRef.value?.focus()
}, 100);
})
};
const handleClose = () => {
@ -192,12 +182,6 @@ const formatDict = (v: string, dictType: string) => {
defineExpose({
open,
});
onMounted(() => {
for (let index = 0; index < 100; index++) {
tableData.value.push({ ybh: index, sqh: '321421321', brxm: '李是大', brdh: '4332132', jymd: '高蛋白大 大的 ' },);
}
});
</script>
<style scoped>
@ -238,25 +222,4 @@ onMounted(() => {
color: #0000ff;
}
}
/* 页面基础样式 */
.page-container {
padding: 20px;
}
.header {
margin-bottom: 30px;
}
.other-content {
margin-bottom: 20px;
padding: 10px;
border: 1px dashed #ccc;
}
.footer {
margin-top: 30px;
text-align: center;
color: #666;
}
</style>

View File

@ -32,7 +32,7 @@
</template>
</CustomTable>
</div>
<div ref="myEcharts" class="mt20" style="width:100%;height: 35vh" />
<div ref="myEcharts" class="mt20" style="width:100%;height: 40vh" />
</div>
</template>
@ -42,6 +42,7 @@ import * as echarts from 'echarts';
import { historyInfo } from '@/api/liswork/work/LisWork'
import dayjs from 'dayjs';
import CustomTable from '@/components/elTable/index.vue'
import { getGroupInstrdList } from '@/api/liswork/work/LisWork'
const props = defineProps({
// 主键
queryParams: {
@ -56,11 +57,12 @@ const props = defineProps({
// 解构 props
const { queryParams } = toRefs(props);
const instrOptions = ref<Array<{ yq: string, yqmc: string }>>([])
const tableData: any = ref([]);
const tableRef = ref();
const columns = ref([
{ label: '项目', prop: 'xmmc', width: 140, align: 'center', visible: true, },
{ label: '本次', prop: 'firstCsjg', width: 100, align: 'center', visible: true, },
{ label: '本次', prop: 'firstCsjg', width: 140, align: 'center', visible: true, },
{ label: '上一次', prop: 'oneCsjg', width: 150, align: 'center', visible: true, headerSlot: 'oneCsjg' },
{ label: '上二次', prop: 'twoCsjg', width: 150, align: 'center', visible: true, headerSlot: 'twoCsjg' },
{ label: '上三次', prop: 'threeCsjg', width: 150, align: 'center', visible: true, headerSlot: 'threeCsjg' },
@ -106,7 +108,7 @@ const cellStyle = ({ column, row }: any) => {
const config = {
border: true,
height: '44vh',
maxHeight: '350px',
highlightCurrentRow: true,
cellStyle: cellStyle
}
@ -121,16 +123,22 @@ const formatHeader = (column: any, prefix: string) => {
const yljgKey = `${prefix}yljg`;
const dateKey = `${prefix}Date`;
const ybhKey = `${prefix}ybh`;
const yqKey = `${prefix}yqmc`;
const yqKey = `${prefix}yq`;
const brxbKey = `${prefix}brxb`;
const nlKey = `${prefix}nl`;
const item = tableData.value[index];
return `${item[yljgKey]} <br /> ${item[dateKey]} <br /> ${item[yqKey]}(${item[ybhKey]}) <br /> ${item[brxbKey]},${item[nlKey]}`;
return `${item[yljgKey]} <br /> ${item[dateKey]} <br /> ${formatYq(item[yqKey])}(${item[ybhKey]}) <br /> ${item[brxbKey]},${item[nlKey]}`;
}
return column.label;
};
const formatDict = (v: string, dictType: string) => {
return props.dictData[dictType]?.find((item: any) => item.value == v)?.label || v;
}
const formatYq = (yq: string) => {
return instrOptions.value?.find((item: any) => item.yq == yq.trim())?.yqmc || yq;
}
const getList = () => {
historyInfo(queryParams.value).then((res: any) => {
@ -145,7 +153,7 @@ const getList = () => {
map.set(item.xmdh, {
csjg: item.csjg,
jyrq: dayjs(item.jyrq).format('YY/MM/DD'),
yqmc: item.yqmc,
yq: item.yq,
ybh: item.ybh,
yljg: item.yljg,
result_flag: item.result_flag,
@ -176,7 +184,7 @@ const getList = () => {
if (item) {
row[`${period}Csjg`] = item.csjg;
row[`${period}Date`] = item.jyrq;
row[`${period}yqmc`] = item.yqmc;
row[`${period}yq`] = item.yq;
row[`${period}ybh`] = item.ybh;
row[`${period}yljg`] = item.yljg;
row[`${period}brxb`] = item.brxb;
@ -333,6 +341,14 @@ const getEcharts = (data: any) => {
}
onMounted(() => {
getGroupInstrdList().then((res: any) => {
if (res.code == 0) {
instrOptions.value = res.data.map((item: any) => ({
yq: item.yq.trim(),
yqmc: item.yqmc
}))
}
})
})
</script>

View File

@ -509,8 +509,6 @@ const handleNext = () => {
}
// 最后一个样本
const handleLast = () => {
queryParams.value.ybh = labPatList.value[labPatList.value.length - 1].ybh;
handleNext();
}
const batchRef = ref()
// 批量扫码

View File

@ -81,7 +81,7 @@ const tableDetailRef = ref();
const columns = ref([
{ label: '项目', prop: 'xmmc', width: 140, align: 'center', visible: true, },
{ label: '本次', prop: 'firstCsjg', width: 150, align: 'center', visible: true, headerSlot: 'firstCsjg' },
{ label: '本次', prop: 'firstCsjg', width: 100, align: 'center', visible: true, headerSlot: 'firstCsjg' },
{ label: '上一次', prop: 'oneCsjg', width: 150, align: 'center', visible: true, headerSlot: 'oneCsjg' },
{ label: '上二次', prop: 'twoCsjg', width: 150, align: 'center', visible: true, headerSlot: 'twoCsjg' },
{ label: '上三次', prop: 'threeCsjg', width: 150, align: 'center', visible: true, headerSlot: 'threeCsjg' },
@ -143,11 +143,11 @@ const formatHeader = (column: any, prefix: string) => {
const dateKey = `${prefix}Date`;
const ybhKey = `${prefix}ybh`;
const yqdlKey = `${prefix}yqdl`;
const yqKey = `${prefix}yqmc`;
const yqKey = `${prefix}yq`;
const brxbKey = `${prefix}brxb`;
const nlKey = `${prefix}nl`;
const item = tableDataDetail.value[index];
return ` ${item[dateKey]} <br /> ${item[yqKey]} (${item[ybhKey]})<br />${item[brxbKey]},${item[nlKey]}`;
return ` ${item[dateKey]} <br /> (${item[ybhKey]}) <br /> ${formatyq(item[yqKey])} <br />${item[brxbKey]},${item[nlKey]}`;
}
return column.label;
};
@ -194,7 +194,7 @@ const handleRowClick = (row: any) => {
csjg: item.csjg,
jyrq: dayjs(item.jyrq).format('YY/MM/DD'),
yqdl: item.yqdl,
yqmc: item.yqmc,
yq: item.yq,
ybh: item.ybh,
yljg: item.yljg,
result_flag: item.result_flag,
@ -226,7 +226,7 @@ const handleRowClick = (row: any) => {
row[`${period}Csjg`] = item.csjg;
row[`${period}Date`] = item.jyrq;
row[`${period}yqdl`] = item.yqdl;
row[`${period}yqmc`] = item.yqmc;
row[`${period}yq`] = item.yq;
row[`${period}ybh`] = item.ybh;
row[`${period}yljg`] = item.yljg;
row[`${period}ResultFlag`] = item.result_flag;
@ -246,6 +246,14 @@ const handleRowClick = (row: any) => {
})
}
const formatDict = (v: string, dictType: string) => {
return dictData.value[dictType]?.find((item: any) => item.value == v)?.label || v;
}
const formatyq = (v: string) => {
return instrOptions.value.find((item: any) => item.yq == v.trim())?.yqmc || v;
}
</script>
<style scoped lang="scss">