586 lines
18 KiB
Vue
Raw Normal View History

2025-05-20 16:34:38 +08:00
<template>
<div class="app-container">
2025-09-26 17:26:06 +08:00
<el-row :gutter="10">
<el-col :span="13">
<div class="box-shadow">
<el-form :model="queryParams" ref="queryRef" :inline="true" :rules="rules" class="compact-form">
<el-form-item label="样本号:" prop="ybh">
2025-10-21 09:55:56 +08:00
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery" style="width:160px" />
2025-09-26 17:26:06 +08:00
</el-form-item>
<el-form-item label="日期:" prop="jyrq">
<el-date-picker v-model="queryParams.jyrq" type="date" label-width="20px" placeholder="检验日期"
value-format="YYYY-MM-DD" :clearable="false" @change="fetchlabPatList"
style="width:140px"></el-date-picker>
</el-form-item>
<el-form-item label="部门:" prop="instrGroup">
2025-09-29 17:30:02 +08:00
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
2025-10-13 17:28:33 +08:00
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="140px"
2025-10-21 09:55:56 +08:00
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" />
2025-09-26 17:26:06 +08:00
</el-form-item>
<el-form-item label="仪器:" prop="yq">
2025-09-29 17:30:02 +08:00
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
2025-10-21 09:55:56 +08:00
value="yq" objKey="yq" :border="true" width="140px" placeholder="请选择仪器" :clearable="false"
2025-10-13 17:28:33 +08:00
@getDataValue="yqHandleChange" />
2025-09-26 17:26:06 +08:00
</el-form-item>
2025-10-16 11:20:50 +08:00
<!-- <el-form-item>
2025-09-26 17:26:06 +08:00
<el-icon color="#3c80d9" size="20" style="margin-right: 10px;" class="cp">
<Search @click="fetchlabPatList" />
</el-icon>
<el-icon color="#3c80d9" size="20" class="cp" @click="selectJob(labPat)">
<Refresh />
</el-icon>
2025-10-16 11:20:50 +08:00
</el-form-item> -->
2025-09-26 17:26:06 +08:00
</el-form>
<el-row :gutter="5">
<el-col :span="8">
2025-10-21 09:55:56 +08:00
<LabPat ref="labPatRef" v-model:labPat="labPat" :labPatKey="queryParams" :labSysList="labInputcolList"
@getLabList="getLabList" @changeStatus="changeStatus" />
2025-05-20 16:34:38 +08:00
</el-col>
2025-09-26 17:26:06 +08:00
<el-col :span="16">
2025-10-13 17:28:33 +08:00
<LabResult ref="labResultRef" v-model:labPat="labPat" :tableData="labResuts" :tableKey="queryParams"
2025-10-21 09:55:56 +08:00
:resultSysList="resultConfig" @fetchLabResults="fetchLabResults" @changeStatus="changeStatus"
@previewHandle="previewHandle" />
2025-05-20 16:34:38 +08:00
</el-col>
2025-09-26 17:26:06 +08:00
</el-row>
</div>
2025-05-20 16:34:38 +08:00
</el-col>
2025-09-26 17:26:06 +08:00
<el-col :span="11">
<div>
2025-10-22 17:36:25 +08:00
<tabView :tabList="tabList" v-model:activeTab="activeTab" />
2025-09-26 17:26:06 +08:00
<div class="box-shadow">
2025-10-16 11:20:50 +08:00
<template v-if="activeTab == 1">
<div class="flex-between mb10">
<div>
<el-button type="primary" icon="RefreshRight" @click="fetchlabPatList">刷新</el-button>
2025-10-21 09:55:56 +08:00
<el-button type="danger" icon="delete" @click="delSampleHd">删除</el-button>
2025-10-16 11:20:50 +08:00
<el-button class="btn_green" icon="top" @click="handlePrev">上一个</el-button>
<el-button class="btn_green" icon="bottom" @click="handleNext">下一个</el-button>
<el-select placeholder="所有" style="width: 150px" class="ml10">
<el-option label="option" value="item.value" />
</el-select>
2025-10-21 09:55:56 +08:00
<el-input clearable @keyup.enter="handleQuery" @clear="handleQuery" style="width:100px" />
2025-10-16 11:20:50 +08:00
</div>
<div>
<el-checkbox v-model="lbFlag"> 列表翻页 </el-checkbox>
</div>
2025-09-26 17:26:06 +08:00
</div>
2025-10-16 11:20:50 +08:00
<LabPatList ref="labPatListRef" :labPatList="labPatList" :loading="loading" @select="selectJob"
2025-10-21 09:55:56 +08:00
:tableKey="queryParams" :dictData="dictData" @search="searchJobs" />
2025-10-16 11:20:50 +08:00
<div class="button-group">
<div class="text1">样本总数:<span>{{ ybs }}</span></div>
<div class="text2">未审:<span>{{ ws }}</span></div>
<div class="text3">危:<span>{{ wjs }}</span></div>
2025-09-26 17:26:06 +08:00
</div>
2025-10-16 11:20:50 +08:00
</template>
<!-- 历史对照 -->
<template v-if="activeTab == 2">
<History :queryParams="queryParams" />
</template>
<!-- 其他结果 -->
<template v-if="activeTab == 3">
<Others :queryParams="queryParams" :dictData="dictData" :instrOptions="instrOptions" />
</template>
<!-- 结果复查 -->
<template v-if="activeTab == 4">
2025-10-22 17:36:25 +08:00
<Reexamination :queryParams="queryParams" />
2025-10-16 11:20:50 +08:00
</template>
<!-- 收费信息 -->
<template v-if="activeTab == 5">
<Charge :queryParams="queryParams" :dictData="dictData" />
</template>
<!-- 组合项目 -->
<template v-if="activeTab == 6">
2025-10-22 17:36:25 +08:00
<Combination :queryParams="queryParams" />
2025-10-16 11:20:50 +08:00
</template>
<!-- 临床意义 -->
<template v-if="activeTab == 7">
2025-10-22 17:36:25 +08:00
<Clinical :queryParams="queryParams" />
2025-10-16 11:20:50 +08:00
</template>
<!-- 样本流转 -->
<template v-if="activeTab == 8">
2025-10-22 17:36:25 +08:00
<Sample :queryParams="queryParams" :dictData="dictData" />
</template>
<!-- 结果图形 -->
<template v-if="activeTab == 9">
<ResultGraph :queryParams="queryParams" />
2025-10-16 11:20:50 +08:00
</template>
2025-09-26 17:26:06 +08:00
</div>
</div>
2025-05-20 16:34:38 +08:00
</el-col>
</el-row>
2025-09-26 17:26:06 +08:00
2025-09-29 17:30:02 +08:00
<el-dialog v-model="previewShow" title="预览" width="90vw" :close-on-click-modal="false">
<iFrame v-if="pdfUrl" :src="pdfUrl" />
</el-dialog>
2025-05-20 16:34:38 +08:00
</div>
</template>
2025-09-26 17:26:06 +08:00
<script setup lang="ts">
import { ref, nextTick, onMounted, toRaw } from 'vue';
import LabPat from './components/labpat.vue';
2025-09-29 17:30:02 +08:00
import SelectTable from '@/components/SelectTable/index.vue';
2025-10-22 17:36:25 +08:00
import tabView from '@/components/tabViews/index.vue';
2025-09-29 17:30:02 +08:00
// @ts-ignore
import iFrame from "@/components/iFrame/index.vue";
2025-09-26 17:26:06 +08:00
// @ts-ignore
import LabResult from './components/labresult.vue';
import LabPatList from './components/labpatlist.vue';
// @ts-ignore
import { comDict } from '@/utils/dict'
2025-10-24 11:25:23 +08:00
import { queryLabPatList, queryLabResults, loadDefault, queryLabPat, instrdconfig, delSample, getGroupInstrdList } from "@/api/liswork/work/LisWork";
2025-09-26 17:26:06 +08:00
import { getComDicts, queryComDictListService } from "@/api/liswork/dict/ComDict";
import { ElMessage, ElMessageBox } from "element-plus";
2025-10-16 11:20:50 +08:00
import History from './history/index.vue'
import Others from './others/index.vue'
import Reexamination from './reexamination/index.vue'
import Charge from './charge/index.vue'
import Combination from './combination/index.vue'
import Clinical from './clinical/index.vue'
import Sample from './sample/index.vue'
2025-10-22 17:36:25 +08:00
import ResultGraph from './resultGraph/index.vue'
2025-10-16 11:20:50 +08:00
import { getNextNumber, getPreviousNumber } from "@/utils/getNextNumber";
2025-10-22 17:36:25 +08:00
2025-09-29 17:30:02 +08:00
const previewShow = ref(false);
2025-10-16 11:20:50 +08:00
const lbFlag = ref(false);
2025-09-26 17:26:06 +08:00
const queryParams = ref({
2025-10-22 17:36:25 +08:00
jyrq: '2025-08-20',
2025-10-24 11:25:23 +08:00
yq: '46',
2025-09-26 17:26:06 +08:00
ybh: '1',
2025-10-10 17:35:28 +08:00
instrGroup: '02',
2025-09-26 17:26:06 +08:00
problemId: 0,
days: 1,
})
const ybs = ref(0)
const ws = ref(0)
const wjs = ref(0)
const activeTab = ref(1)
const tabList = ref([
{ label: '标本列表', value: 1 },
2025-10-22 17:36:25 +08:00
{ label: '结果图形', value: 9 },
2025-09-26 17:26:06 +08:00
{ label: '历史对照', value: 2 },
{ label: '其他结果', value: 3 },
{ label: '结果复查', value: 4 },
{ label: '收费信息', value: 5 },
{ label: '组合项目', value: 6 },
{ label: '临床意义', value: 7 },
{ label: '样本流转', value: 8 },
])
const labPat = ref<any>(
{
2025-05-20 16:34:38 +08:00
jyrq: '',
yq: '',
ybh: '',
2025-09-26 17:26:06 +08:00
brly: '',
2025-10-10 17:35:28 +08:00
jzbz: '0',
2025-09-26 17:26:06 +08:00
brdh: '',
brxm: '',
brxb: '',
nl: null,
nldw: '1',
ksdh: '',
ch: '',
sjys: '',
sqsj: '',
cyrq: '',
dysj: '',
zd: '',
bz: '',
yhdh: '',
hdys: '',
jgbz: '0',
2025-10-13 17:28:33 +08:00
yblx: '',
2025-05-20 16:34:38 +08:00
},
2025-09-26 17:26:06 +08:00
)
const labPatList = ref<Array<{ ybh: string; jgbz: string }>>([]);
const loading = ref(false)
2025-05-20 16:34:38 +08:00
const total = ref(0)
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
const rules = ref([])
2025-09-29 17:30:02 +08:00
const instrGroupOptions = ref<any[]>([])
2025-10-16 11:20:50 +08:00
const instrOptions = ref<{ yq: string; yqmc: string }[]>([])
2025-09-17 10:19:20 +08:00
2025-09-29 17:30:02 +08:00
const pdfUrl = ref('')
const previewHandle = (url: string) => {
if (!url) return ElMessage.warning('未查询到文件')
pdfUrl.value = `data:application/pdf;base64,${url}`
previewShow.value = true
}
2025-10-13 17:28:33 +08:00
const handleinstrGroupChange = (val: any) => {
2025-09-26 17:26:06 +08:00
queryParams.value.yq = ''
2025-10-13 17:28:33 +08:00
// labResuts.value = []
// labPat.value = {}
2025-09-26 17:26:06 +08:00
getYqConfig()
}
2025-05-20 16:34:38 +08:00
2025-10-13 17:28:33 +08:00
const yqHandleChange = (val: any) => {
2025-09-26 17:26:06 +08:00
labResuts.value = []
labPat.value = {}
2025-10-16 11:20:50 +08:00
getSysList()
2025-09-26 17:26:06 +08:00
fetchlabPatList()
2025-05-20 16:34:38 +08:00
}
2025-09-29 17:30:02 +08:00
const instrGroupFields = ref([
{ prop: 'zddh', label: '代号', width: 80, enablePinyinSearch: true },
{ prop: 'zdmc', label: '名称', width: 150, enablePinyinSearch: true },
])
2025-09-26 17:26:06 +08:00
// 部门
const loadinstrGroupOptions = () => {
getComDicts({ zdlb: 'GROUP' }).then((res: any) => {
instrGroupOptions.value = res.data
2025-10-22 17:36:25 +08:00
instrGroupOptions.value.push({ zddh: 'ALL', zdmc: '所有仪器' })
2025-10-10 17:35:28 +08:00
queryParams.value.instrGroup = '02'
2025-10-24 11:25:23 +08:00
queryParams.value.yq = '46'
2025-09-26 17:26:06 +08:00
getYqConfig()
2025-05-20 16:34:38 +08:00
});
}
2025-09-29 17:30:02 +08:00
const yqFields = ref([
{ prop: 'yq', label: '代号', width: 80, enablePinyinSearch: true },
{ prop: 'yqmc', label: '名称', width: 150, enablePinyinSearch: true },
])
2025-09-26 17:26:06 +08:00
// 仪器
const getYqConfig = () => {
2025-10-24 11:25:23 +08:00
getGroupInstrdList({ lisgroup: queryParams.value.instrGroup })
2025-09-26 17:26:06 +08:00
.then((res: any) => {
2025-10-24 11:25:23 +08:00
if (res.code == 0) {
instrOptions.value = res.data.map((item: any) => ({
2025-09-29 17:30:02 +08:00
yq: item.yq.trim(),
yqmc: item.yqmc
2025-09-26 17:26:06 +08:00
}))
}
})
2025-05-20 16:34:38 +08:00
}
2025-09-26 17:26:06 +08:00
const highlightRowIndex = ref(-1)
const labPatListRef = ref()
//样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单
const selectJob = (job: any) => {
2025-10-21 09:55:56 +08:00
lastRow.value = job;
2025-09-26 17:26:06 +08:00
// 复制选中的job数据到当前编辑状态
// Object.assign(labPat.value, {...job})
queryParams.value.jyrq = job.jyrq;
queryParams.value.yq = job.yq.trim();
queryParams.value.ybh = job.ybh;
fetchLabResults();
fetchLabPat();
2025-10-16 11:20:50 +08:00
highlightRowIndex.value = labPatList.value.findIndex((item: any) => item.ybh == queryParams.value.ybh);
2025-05-20 16:34:38 +08:00
}
2025-09-26 17:26:06 +08:00
const labResuts = ref([])
2025-05-20 16:34:38 +08:00
//载入样本结果表单(中间labresult.vue组件)
const fetchLabResults = async () => {
2025-09-26 17:26:06 +08:00
queryLabResults({ jyrq: queryParams.value.jyrq, yq: queryParams.value.yq, ybh: queryParams.value.ybh }).then((response: any) => {
2025-05-20 16:34:38 +08:00
labResuts.value = response.data;
2025-09-26 17:26:06 +08:00
})
2025-05-20 16:34:38 +08:00
}
2025-09-26 17:26:06 +08:00
//载入样本编辑表单(左边labpat.vue组件)
const fetchLabPat = () => {
queryLabPat(queryParams.value).then((response: any) => {
labPat.value = response.data[0];
})
2025-05-20 16:34:38 +08:00
}
2025-10-21 09:55:56 +08:00
const lastRow: any = ref({})
2025-09-26 17:26:06 +08:00
const handleQuery = () => {
if (!labPatList.value.length) return
// fetchlabPatList()
if (!queryParams.value.ybh) {
highlightRowIndex.value = -1;
2025-10-21 09:55:56 +08:00
ElMessage.warning('请输入样本编号')
queryParams.value.ybh = lastRow.value.ybh
2025-09-26 17:26:06 +08:00
return;
2025-05-20 16:34:38 +08:00
}
2025-10-22 17:36:25 +08:00
queryParams.value = { ...queryParams.value };
2025-09-26 17:26:06 +08:00
// 查找匹配的行
2025-10-16 11:20:50 +08:00
const matchedIndex = labPatList.value.findIndex((item: any) => item.ybh == queryParams.value.ybh);
2025-09-26 17:26:06 +08:00
const row = labPatList.value[matchedIndex]
2025-10-21 09:55:56 +08:00
2025-09-26 17:26:06 +08:00
if (matchedIndex !== -1) {
highlightRowIndex.value = matchedIndex;
// 等待DOM更新后滚动到目标行
nextTick(() => {
labPatListRef.value.setCurrentRow(row);
});
2025-10-16 11:20:50 +08:00
selectJob(row);
2025-05-20 16:34:38 +08:00
} else {
2025-10-16 11:20:50 +08:00
handleCreate()
2025-09-26 17:26:06 +08:00
highlightRowIndex.value = -1;
2025-05-20 16:34:38 +08:00
}
2025-10-16 11:20:50 +08:00
2025-05-20 16:34:38 +08:00
}
2025-10-16 11:20:50 +08:00
// 创建新样本
const handleCreate = () => {
loadDefault(queryParams.value).then((response: any) => {
if (response.code == 0) {
labPat.value = response.data;
labPat.value.id = `temp_${Date.now()}_${Math.random().toString(36).substr(2, 8)}`;
labResuts.value = []
labPatListRef.value?.clearCurrentRow();
}
});
}
const getLabList = (data: any) => {
labPatList.value.push(data)
2025-10-21 09:55:56 +08:00
setTimeout(() => { handleQuery(); }, 10)
getTotals()
}
// 删除样本
const delSampleHd = () => {
if (lastRow.value.jgbz == '2') return ElMessage.warning('标本已审核,不能删除!')
const data = {
jyrq: lastRow.value.jyrq,
yq: lastRow.value.yq.trim(),
ybh: lastRow.value.ybh,
}
ElMessageBox.confirm(
`确定删除当前${lastRow.value.ybh}号标本?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
delSample(data).then((res: any) => {
if (res.code == 0) {
ElMessage.success('删除成功')
labPatList.value = labPatList.value.filter((item: any) => item.ybh != lastRow.value.ybh)
getTotals()
// 删除跳下一个样本
handleNext()
}
})
})
.catch(() => {
})
2025-10-16 11:20:50 +08:00
}
// 上一个样本
2025-09-26 17:26:06 +08:00
const handlePrev = () => {
2025-10-16 11:20:50 +08:00
if (!lbFlag.value) {
const ybh = getPreviousNumber(queryParams.value.ybh) as string;
queryParams.value.ybh = ybh;
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
if (index !== -1) {
highlightRowIndex.value = index;
const row = labPatList.value[index];
labPatListRef.value.setCurrentRow(row);
selectJob(row);
} else {
handleCreate();
}
} else {
if (highlightRowIndex.value > 0) {
highlightRowIndex.value--;
const row = labPatList.value[highlightRowIndex.value];
labPatListRef.value.setCurrentRow(row);
selectJob(row);
}
2025-09-26 17:26:06 +08:00
}
2025-10-16 11:20:50 +08:00
2025-05-20 16:34:38 +08:00
}
2025-10-16 11:20:50 +08:00
// 下一个样本
2025-09-26 17:26:06 +08:00
const handleNext = () => {
2025-10-16 11:20:50 +08:00
if (!lbFlag.value) {
const ybh = getNextNumber(queryParams.value.ybh) as string;
queryParams.value.ybh = ybh;
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
if (index !== -1) {
highlightRowIndex.value = index;
const row = labPatList.value[index];
labPatListRef.value.setCurrentRow(row);
selectJob(row);
} else {
handleCreate();
}
} else {
if (highlightRowIndex.value < labPatList.value.length - 1) {
highlightRowIndex.value++;
const row = labPatList.value[highlightRowIndex.value];
labPatListRef.value.setCurrentRow(row);
selectJob(row);
} else {
queryParams.value.ybh = getNextNumber(queryParams.value.ybh) as string;
handleCreate();
}
2025-09-26 17:26:06 +08:00
}
2025-10-16 11:20:50 +08:00
2025-05-20 16:34:38 +08:00
}
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
// 改变样本列表中样本状态
2025-10-21 09:55:56 +08:00
const changeStatus = (updatedPat: any, flag: boolean) => {
console.log('flag==>', 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);
if (index !== -1) {
labPatList.value = labPatList.value.map((item, i) =>
i === index ? { ...labPat.value } : item
);
highlightRowIndex.value = index;
nextTick(() => {
labPatListRef.value.setCurrentRow(labPat.value);
});
// selectJob(labPat.value);
// 条码号输入后操作
if (flag) {
setTimeout(() => { handleNext() }, 10)
}
}
}
});
2025-09-26 17:26:06 +08:00
};
2025-05-20 16:34:38 +08:00
//样本列表检索时刷新列表信息
2025-09-26 17:26:06 +08:00
const searchJobs = async (text: string, page: number, size: number) => {
fetchlabPatList()
2025-05-20 16:34:38 +08:00
}
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
//载入样本列表(右边labpatlist.vue组件)
const fetchlabPatList = () => {
2025-10-21 09:55:56 +08:00
if (!queryParams.value.jyrq) {
queryParams.value.jyrq = lastRow.value.jyrq
return ElMessage.warning('请选择检验日期')
}
2025-09-26 17:26:06 +08:00
loading.value = true;
queryLabPatList(queryParams.value).then((res: any) => {
if (res.code == 0) {
labPatList.value = res.data;
2025-09-17 10:19:20 +08:00
loading.value = false;
2025-09-26 17:26:06 +08:00
if (res.data.length > 0) {
highlightRowIndex.value = 0;
labPat.value = res.data[0];
2025-10-21 09:55:56 +08:00
setTimeout(() => { labPatListRef.value.setCurrentRow(res.data[0]); }, 100)
2025-09-26 17:26:06 +08:00
selectJob(res.data[0])
2025-10-21 09:55:56 +08:00
getTotals()
} else {
ybs.value = 0
ws.value = 0
wjs.value = 0
2025-09-17 10:19:20 +08:00
}
2025-09-26 17:26:06 +08:00
}
})
}
2025-10-21 09:55:56 +08:00
// 计算样本数
const getTotals = () => {
ybs.value = labPatList.value.length
ws.value = labPatList.value.filter((item: any) => item.jgbz != 2).length
wjs.value = labPatList.value.filter((item: any) => item.alarmflag == 1).length
}
2025-09-17 10:19:20 +08:00
2025-08-20 09:25:12 +08:00
2025-09-26 17:26:06 +08:00
loadinstrGroupOptions()
fetchlabPatList()
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
interface DictData {
PT?: Array<any>;
AU?: Array<any>;
SX?: Array<any>;
DP?: Array<any>;
BT?: Array<any>;
SRD?: Array<any>;
2025-10-10 17:35:28 +08:00
HOS?: Array<any>;
2025-10-16 11:20:50 +08:00
ST?: Array<any>;
2025-09-26 17:26:06 +08:00
[key: string]: any[] | undefined; // 添加索引签名以支持动态访问
2025-09-17 10:19:20 +08:00
}
2025-09-26 17:26:06 +08:00
// 字典数据存储
const dictData = ref<DictData>({});
2025-10-16 11:20:50 +08:00
const labInputcolList = ref([])
2025-10-21 09:55:56 +08:00
const resultConfig = ref([])
2025-10-16 11:20:50 +08:00
// 获取参数配置
const getSysList = () => {
instrdconfig({ yq: queryParams.value.yq }).then((res: any) => {
if (res.code == 0) {
labInputcolList.value = res.data.labInputcolList.filter((item: any) => item.mrts != '年龄单位' || item.mrts != '!')
2025-10-21 09:55:56 +08:00
resultConfig.value = res.data.ResultConfig
2025-10-16 11:20:50 +08:00
}
});
}
getSysList()
2025-09-26 17:26:06 +08:00
onMounted(async () => {
2025-10-21 09:55:56 +08:00
// 加载病人来源字典
const dictRefs = await comDict('PT', 'AU', 'SX', 'DP', 'BT', 'SRD', 'HOS', 'ST');
// 从 ref 中获取实际数据
dictData.value = {
PT: toRaw(dictRefs.PT.value) || [],
AU: toRaw(dictRefs.AU.value) || [],
SX: toRaw(dictRefs.SX.value) || [],
DP: toRaw(dictRefs.DP.value) || [],
BT: toRaw(dictRefs.BT.value) || [],
SRD: toRaw(dictRefs.SRD.value) || [],
HOS: toRaw(dictRefs.HOS.value) || [],
ST: toRaw(dictRefs.ST.value) || [],
};
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
});
</script>
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
<style scoped lang="scss">
.app-container {
background: #F0F3F8;
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
}
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
.box-shadow {
box-shadow: 2px 2px 4px 0px rgba(206, 217, 234, 0.7);
border-radius: 12px;
2025-10-21 09:55:56 +08:00
padding: 10px;
2025-09-26 17:26:06 +08:00
background-color: #fff;
}
2025-09-17 10:19:20 +08:00
2025-09-26 17:26:06 +08:00
.compact-form {
border-bottom: 1px solid #E1E9F7;
2025-10-21 09:55:56 +08:00
margin-bottom: 10px;
.el-form-item--default {
margin-bottom: 5px !important;
}
2025-09-26 17:26:06 +08:00
}
2025-05-20 16:34:38 +08:00
2025-09-26 17:26:06 +08:00
.card-content {
max-height: 450px;
/* 设置最大高度 */
overflow-y: auto;
/* 超出高度时显示垂直滚动条 */
padding: 5px;
/* 保持与卡片默认一致的内边距 */
}
2025-09-17 10:19:20 +08:00
2025-05-20 16:34:38 +08:00
2025-09-26 17:26:06 +08:00
.button-group {
display: flex;
justify-content: space-around;
font-family: SourceHanSansCN, SourceHanSansCN;
font-weight: 500;
font-size: 16px;
color: #28BDBB;
2025-10-21 09:55:56 +08:00
// margin-top: 20px;
2025-09-17 10:19:20 +08:00
2025-05-20 16:34:38 +08:00
2025-09-26 17:26:06 +08:00
.text2 {
color: #1F33FF;
}
2025-05-20 16:34:38 +08:00
2025-09-26 17:26:06 +08:00
.text3 {
color: #FF0000;
}
2025-09-17 10:19:20 +08:00
}
2025-05-20 16:34:38 +08:00
</style>