代码字典
This commit is contained in:
parent
d88d2ff675
commit
54cce95758
50
src/api/doctor/assessment.ts
Normal file
50
src/api/doctor/assessment.ts
Normal file
@ -0,0 +1,50 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 根据住院号获取病人信息
|
||||
export function queryPatInfo(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/getPatInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 查询单据信息
|
||||
export function queryPatList(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/queryList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 打印单据信息
|
||||
export function printPat(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/print',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 保存信息
|
||||
export function savePat(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/save',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 修改信息
|
||||
export function updatePat(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/update',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 删除信息
|
||||
export function delPat(query?: Object) {
|
||||
return request({
|
||||
url: '/doctor/applyBefore/delete',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
@ -1,10 +1,9 @@
|
||||
// @ts-ignore
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询字典数据列表
|
||||
export function queryComDictListService(query?: Object) {
|
||||
return request({
|
||||
url: '/comdict/query',
|
||||
url: '/bus/bloodbank/dmzd/queryList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
@ -12,7 +11,7 @@ export function queryComDictListService(query?: Object) {
|
||||
//增加字典数据
|
||||
export function addComDictService(data?: Object) {
|
||||
return request({
|
||||
url: '/comdict/add',
|
||||
url: '/bus/bloodbank/dmzd/add',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
@ -21,7 +20,7 @@ export function addComDictService(data?: Object) {
|
||||
//修改字典数据
|
||||
export function updateComDictService(data?: Object) {
|
||||
return request({
|
||||
url: '/comdict/update',
|
||||
url: '/bus/bloodbank/dmzd/update',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
@ -30,18 +29,18 @@ export function updateComDictService(data?: Object) {
|
||||
//删除字典数据
|
||||
export function delComDictService(data?: Object) {
|
||||
return request({
|
||||
url: '/comdict/del',
|
||||
method: 'delete',
|
||||
data
|
||||
url: '/bus/bloodbank/dmzd/delete',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// 根据字典类型查询字典数据信息
|
||||
export function getComDicts(dict_type?: Object) {
|
||||
export function getComDicts(data?: Object) {
|
||||
return request({
|
||||
url: '/transitdict/regdict/getInfoOne',
|
||||
url: '/bus/common/queryDictData',
|
||||
method: 'get',
|
||||
params: dict_type
|
||||
params: data
|
||||
})
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
// @ts-ignore
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询字典数据列表
|
||||
export function querylabInstrList(query?: Object) {
|
||||
return request({
|
||||
url: '/instr/query',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 查询字典数据列表
|
||||
export function querylabInstrListByLisgroup(query?: Object) {
|
||||
return request({
|
||||
url: '/instr/querybylisgroup',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
@ -1,44 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询诊断列表
|
||||
export function listdiagnosis(query: Object) {
|
||||
return request({
|
||||
url: '/transitdict/diagnosis/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询诊断详细
|
||||
export function getdiagnosis(diagnosisId: number) {
|
||||
return request({
|
||||
url: '/transitdict/diagnosis/' + diagnosisId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增诊断
|
||||
export function adddiagnosis(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/diagnosis',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改诊断
|
||||
export function updatediagnosis(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/diagnosis',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除诊断
|
||||
export function deldiagnosis(diagnosisId: number) {
|
||||
return request({
|
||||
url: '/transitdict/diagnosis/' + diagnosisId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@ -1,44 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询诊断列表
|
||||
export function listitemclass(query: Object) {
|
||||
return request({
|
||||
url: '/transitdict/itemclass/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询诊断详细
|
||||
export function getitemclass(itemclassId: number) {
|
||||
return request({
|
||||
url: '/transitdict/itemclass/' + itemclassId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增诊断
|
||||
export function additemclass(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/itemclass',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改诊断
|
||||
export function updateitemclass(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/itemclass',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除诊断
|
||||
export function delitemclass(itemclassId: number) {
|
||||
return request({
|
||||
url: '/transitdict/itemclass/' + itemclassId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@ -1,59 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询字典列表
|
||||
export function listregdict(query: Object) {
|
||||
return request({
|
||||
url: '/transitdict/regdict/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 获取字典最大编码
|
||||
export function getMaxDictCode(query: Object) {
|
||||
return request({
|
||||
url: '/transitdict/regdict/getMaxDictCode',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询字典详细
|
||||
export function getregdict(regdictId: number) {
|
||||
return request({
|
||||
url: '/transitdict/regdict/' + regdictId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增字典
|
||||
export function addregdict(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/regdict',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改字典
|
||||
export function updateregdict(data: Object) {
|
||||
return request({
|
||||
url: '/transitdict/regdict',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除字典
|
||||
export function delregdict(regdictId: number) {
|
||||
return request({
|
||||
url: '/transitdict/regdict/' + regdictId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
// 清空缓存
|
||||
export function clearCache() {
|
||||
return request({
|
||||
url: '/transitdict/regdict/clearCache',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@ -1,108 +0,0 @@
|
||||
// @ts-ignore
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 获取流转数据
|
||||
export function querySample(query?: Object) {
|
||||
return request({
|
||||
url: '/transit/querySample',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 获取未签收的标本
|
||||
export function querySampleSign(query?: Object) {
|
||||
return request({
|
||||
url: '/transit/querySampleSign',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 签收标本
|
||||
export function sampleSign(query?: Object) {
|
||||
return request({
|
||||
url: '/transit/sampleSign',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 退回的标本
|
||||
export function querySampleSignBack(query?: Object) {
|
||||
return request({
|
||||
url: '/transit/querySampleSignBack',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 标本数量统计
|
||||
export function querySampleTypeCount(query?: Object) {
|
||||
return request({
|
||||
url: '/transitReport/sampleTypeCount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 标本报表
|
||||
export function sampleTypeCount(query?: Object) {
|
||||
return request({
|
||||
url: '/transitReport/sampleTypeCount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 标本报表费用
|
||||
export function sampleitemCount(query?: Object) {
|
||||
return request({
|
||||
url: '/transitReport/itemCount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 标本报表费用
|
||||
export function getallcount(query?: Object) {
|
||||
return request({
|
||||
url: '/transitstat/getallcount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 获取流转项目列表
|
||||
export function getXmList(query?: Object) {
|
||||
return request({
|
||||
url: '/item/getList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 新增项目
|
||||
export function addXmInfo(query?: Object) {
|
||||
return request({
|
||||
url: '/item/add',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 修改项目
|
||||
export function updateXmInfo(query?: Object) {
|
||||
return request({
|
||||
url: '/item/update',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 删除项目
|
||||
export function deleteXmInfo(query?: Object) {
|
||||
return request({
|
||||
url: '/item/delete',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
// 获取已打印的条码数据
|
||||
export function sampleCollect(query?: Object) {
|
||||
return request({
|
||||
url: '/transit/sampleCollect',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ aside {
|
||||
.app-container {
|
||||
padding: 10px 10px 0 10px;
|
||||
height: calc(100vh - 5.25rem);
|
||||
background-color: #f9f9f9;
|
||||
background-color: #e6edf9;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@ -470,7 +470,7 @@ aside {
|
||||
.el-table__fixed-header-wrapper {
|
||||
th {
|
||||
word-break: break-word;
|
||||
background-color: #f6fafc !important;
|
||||
background-color: #eff6fa !important;
|
||||
color: #3c526f;
|
||||
height: 1.875rem !important;
|
||||
font-size: 15px;
|
||||
@ -490,18 +490,13 @@ aside {
|
||||
}
|
||||
|
||||
|
||||
/* 表格最外层边框(可选) */
|
||||
.el-table--border {
|
||||
border: 1px solid #ece9ea !important;
|
||||
}
|
||||
|
||||
.el-scrollbar__thumb {
|
||||
background-color: #d9ecf7 !important;
|
||||
background-color: #d8d8d8 !important;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.el-scrollbar__thumb:hover {
|
||||
background-color: #d9ecf7 !important;
|
||||
background-color: #d8d8d8 !important;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@ -515,10 +510,7 @@ aside {
|
||||
line-height: 1.8125rem;
|
||||
}
|
||||
|
||||
// .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
|
||||
// background-color: #a4beef !important;
|
||||
// color: #000 !important;
|
||||
// }
|
||||
|
||||
|
||||
.cell.el-tooltip {
|
||||
padding: 0 !important;
|
||||
@ -562,6 +554,20 @@ aside {
|
||||
.el-table__empty-block {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
--el-table-border-color:#ccc; // 边框颜色
|
||||
|
||||
.el-table__header th {
|
||||
border-color: #ccc !important;
|
||||
}
|
||||
|
||||
.el-table__body td {
|
||||
border-color: #ccc !important;
|
||||
}
|
||||
|
||||
.el-table__row {
|
||||
border-color: #ccc !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -361,8 +361,8 @@ const clearHandle = () => {
|
||||
|
||||
:deep(.vxe-header--row th) {
|
||||
border-color: #00a5ff;
|
||||
background-color: #00a5ff;
|
||||
color: #fff;
|
||||
// background-color: #e6edf9;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
:deep(.vxe-body--row td) {
|
||||
@ -389,7 +389,7 @@ const clearHandle = () => {
|
||||
|
||||
// 表头边框
|
||||
:deep(.vxe-table--render-default.border--full .vxe-header--column) {
|
||||
background-image: linear-gradient(#00a5ff, #00a5ff), linear-gradient(#00a5ff, #00a5ff) !important;
|
||||
background-image: linear-gradient(#e6edf9, #e6edf9), linear-gradient(#e6edf9, #e6edf9) !important;
|
||||
}
|
||||
|
||||
.select-table-dropdown {
|
||||
|
||||
@ -51,7 +51,7 @@ import RuoYiDoc from '@/components/RuoYi/Doc/index.vue'
|
||||
import useAppStore from '@/store/modules/app'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
import useSettingsStore from '@/store/modules/settings'
|
||||
import { listhospital } from '@/api/regional/dict/hospital'
|
||||
import { listhospital } from '@/api/regional/hospital'
|
||||
const appStore = useAppStore()
|
||||
const userStore = useUserStore()
|
||||
const settingsStore = useSettingsStore()
|
||||
|
||||
@ -76,13 +76,11 @@ export function comDict(...args: string[]): Promise<DictResult> {
|
||||
} else {
|
||||
// 缓存不存在,发起请求并记录 Promise
|
||||
const promise = getComDicts({
|
||||
dict_type: dictType
|
||||
dictType: dictType
|
||||
}).then((resp: any) => {
|
||||
const dictList = resp.data.map((p: any) => ({
|
||||
label: p.dictName,
|
||||
value: p.dictCode,
|
||||
elTagType: "",
|
||||
elTagClass: ""
|
||||
label: p.wordbook_name,
|
||||
value: p.wordbook_code,
|
||||
}));
|
||||
|
||||
res.value[dictType] = dictList;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -7,265 +7,286 @@
|
||||
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 基础信息 -->
|
||||
<div class="section">
|
||||
<div class="section-title">基础信息</div>
|
||||
<div class="form-row three-col">
|
||||
<div class="form-item">
|
||||
<label>评估单号:</label>
|
||||
<el-input v-model="baseInfo.assessmentNo" disabled placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>姓 名:</label>
|
||||
<el-input v-model="baseInfo.name" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>科 室:</label>
|
||||
<el-input v-model="baseInfo.department" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<div class="form-item">
|
||||
<label>评估日期:</label>
|
||||
<el-input v-model="baseInfo.assessmentDate" readonly placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>床位号:</label>
|
||||
<el-input v-model="baseInfo.bedNo" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>病 区:</label>
|
||||
<el-input v-model="baseInfo.ward" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<div class="form-item">
|
||||
<label>评估医师:</label>
|
||||
<el-input v-model="baseInfo.doctorName" readonly placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>年 龄:</label>
|
||||
<el-input v-model="baseInfo.age" type="number" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>血 型:</label>
|
||||
<div>
|
||||
{{ baseInfo.bloodType }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<div class="form-item">
|
||||
<label>住院号/ID号:</label>
|
||||
<el-input v-model="baseInfo.hospitalId" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>临床诊断:</label>
|
||||
<el-input v-model="baseInfo.diagnosis" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>Rh(D):</label>
|
||||
<div>
|
||||
{{ baseInfo.rhD }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-button type="primary" plain>检索</el-button>
|
||||
<el-button type="primary" plain>新增</el-button>
|
||||
<el-button type="primary" plain>保存</el-button>
|
||||
<el-button type="primary" plain>输血申请</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
<el-button type="warning" plain>打印输血知情同意书</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 输入区域 -->
|
||||
<div class="section">
|
||||
<div class="two-col">
|
||||
<div class="form-item-column">
|
||||
<div class="text">出血量:</div>
|
||||
<el-input v-model="formData.bleedingVolume" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">输血目的:</div>
|
||||
<el-input v-model="formData.purpose" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">贫血程度:</div>
|
||||
<el-input v-model="formData.anemiaDegree" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">血液品种:</div>
|
||||
<el-input v-model="formData.bloodType" placeholder="" />
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">血量:</div>
|
||||
<el-input v-model="formData.bloodVolume" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row checkbox-row">
|
||||
<el-checkbox v-model="formData.hbLow">病人/病人家属是否签署输血同意书</el-checkbox>
|
||||
</div>
|
||||
<div>
|
||||
<div class="tips">病情概要
|
||||
(病人基本情况、贫血程度、凝血障碍、有无创面弥漫性渗血、心肺代偿功能、有无代谢率增高、年龄因素、输血目的等。)</div>
|
||||
<el-input v-model="formData.otherReason" type="textarea" :rows="3" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
<el-form :model="form" label-width="auto">
|
||||
<!-- 基础信息 -->
|
||||
<div class="section">
|
||||
<div class="title">基础信息</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="评估单号">
|
||||
<el-input v-model="baseInfo.assessmentNo" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="住院号/ID号">
|
||||
<el-input v-model="baseInfo.beinhos_id" @change="handleChange" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="姓 名">
|
||||
<el-input v-model="baseInfo.patient_name" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="血 型">
|
||||
<el-input v-model="baseInfo.abo" disabled :value="baseInfo.abo" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">病人最近检查结果</div>
|
||||
<div class="two-col">
|
||||
<div class="form-item-column">
|
||||
<div class="text">HGB:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.hgbValue" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="评估日期">
|
||||
<el-input v-model="baseInfo.assessmentDate" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="科 室">
|
||||
<SelectTable v-model:data="baseInfo.dept_id" :tableData="dictData.ks" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<div class="form-item-column">
|
||||
<div class="text">HCT:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.hgbExpect" placeholder="">
|
||||
<template #suffix>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">PLT:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.estimatedVolume" placeholder="">
|
||||
<template #suffix>
|
||||
X10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">APTT:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.aptt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<div class="form-item-column">
|
||||
<div class="text">ALT:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.altValue" placeholder="">
|
||||
<template #suffix>
|
||||
U/L
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">HBsAg:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-select v-model="formData.hbsAg" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">TP:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-select v-model="formData.tp" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">FIB:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.fib" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<div class="form-item-column">
|
||||
<div class="text">Anti-HCV:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-select v-model="formData.antiHcv" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">Anti-HIV:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-select v-model="formData.antiHiv" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">PT:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.pt" placeholder="">
|
||||
<template #suffix>
|
||||
U
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item-column">
|
||||
<div class="text">INR:</div>
|
||||
<div class="input-with-unit">
|
||||
<el-input v-model="formData.inr" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="床位号">
|
||||
<el-input v-model="baseInfo.patient_bed" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="4">
|
||||
<el-form-item label="Rh(D)">
|
||||
<el-input v-model="baseInfo.rh" disabled :value="baseInfo.rh" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="评估医师">
|
||||
<el-input v-model="baseInfo.doctorname" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病 区">
|
||||
<el-input v-model="baseInfo.zone_id" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="年 龄">
|
||||
<el-input v-model="baseInfo.age" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="临床诊断">
|
||||
<el-input v-model="baseInfo.diagnosis" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="出血量">
|
||||
<el-input v-model="formData.bleedingVolume" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="输血目的">
|
||||
<el-input v-model="formData.intent" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="贫血程度">
|
||||
<el-input v-model="formData.anemiaDegree" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="血液品种">
|
||||
<el-input v-model="formData.abo" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item label="血量">
|
||||
<el-input v-model="formData.bloodVolume" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="18">
|
||||
<el-form-item label=" ">
|
||||
<el-checkbox v-model="formData.hbLow" class="text-danger">
|
||||
病人/病人家属是否签署输血同意书
|
||||
</el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="病情概要" class="tips-label">
|
||||
<span class="tips">
|
||||
(病人基本情况、贫血程度、凝血障碍、有无创面弥漫性渗血、心肺代偿功能、有无代谢率增高、年龄因素、输血目的等。)
|
||||
</span>
|
||||
<el-input v-model="formData.otherReason" type="textarea" :rows="3" style="margin-top: 8px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="title">病人最近检查结果</div>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="HGB">
|
||||
<el-input v-model="formData.hgbValue" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="HCT">
|
||||
<el-input v-model="formData.hgbExpect" placeholder="">
|
||||
<template #suffix>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="PLT">
|
||||
<el-input v-model="formData.estimatedVolume" placeholder="">
|
||||
<template #suffix>
|
||||
X10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="APTT">
|
||||
<el-input v-model="formData.aptt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="ALT">
|
||||
<el-input v-model="formData.altValue" placeholder="">
|
||||
<template #suffix>
|
||||
U/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="HBsAg">
|
||||
<el-select v-model="formData.hbsAg" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="TP">
|
||||
<el-select v-model="formData.tp" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="FIB">
|
||||
<el-input v-model="formData.fib" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="Anti-HCV">
|
||||
<el-select v-model="formData.antiHcv" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="Anti-HIV">
|
||||
<el-select v-model="formData.antiHiv" placeholder="请选择">
|
||||
<el-option label="阴性" value="negative" />
|
||||
<el-option label="阳性" value="positive" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="PT">
|
||||
<el-input v-model="formData.pt" placeholder="">
|
||||
<template #suffix>
|
||||
U
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="INR">
|
||||
<el-input v-model="formData.inr" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
import { queryPatInfo } from '@/api/doctor/assessment'
|
||||
import { getDictData, formatDict, dictData } from '@/hooks'
|
||||
const type = ref<'operation' | 'nonOperation'>('operation')
|
||||
|
||||
// 表单聚合(统一Form模型)
|
||||
const form = reactive({})
|
||||
|
||||
// 基础信息数据
|
||||
const baseInfo = reactive({
|
||||
const baseInfo = ref({
|
||||
assessmentNo: '',
|
||||
name: '',
|
||||
department: '',
|
||||
patient_name: '',
|
||||
dept_id: '',
|
||||
assessmentDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
bedNo: '',
|
||||
ward: '',
|
||||
patient_bed: '',
|
||||
zone_id: '',
|
||||
doctorName: '',
|
||||
age: '',
|
||||
bloodType: '',
|
||||
hospitalId: '',
|
||||
abo: '',
|
||||
beinhos_id: '',
|
||||
diagnosis: '',
|
||||
rhD: '待查' // Rh(D)
|
||||
rh: ''
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
bleedingVolume: '',
|
||||
purpose: '',
|
||||
intent: '',
|
||||
anemiaDegree: '',
|
||||
bloodType: '', // 血液品种
|
||||
abo: '', // 血液品种
|
||||
bloodVolume: '', // 血量
|
||||
hbLow: false,
|
||||
otherReason: '',
|
||||
@ -294,34 +315,31 @@ const formData = reactive({
|
||||
colloidBefore: false
|
||||
})
|
||||
|
||||
// 初始化当前时间
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 关闭弹窗
|
||||
const handleClose = () => {
|
||||
// 重置基础信息(保留评估单号和评估医师,仅重置可编辑项)
|
||||
Object.assign(baseInfo, {
|
||||
Object.assign(baseInfo.value, {
|
||||
name: '',
|
||||
department: '',
|
||||
dept_id: '',
|
||||
assessmentDate: new Date().toLocaleString(),
|
||||
bedNo: '',
|
||||
ward: '',
|
||||
patient_bed: '',
|
||||
zone_id: '',
|
||||
age: '',
|
||||
bloodType: '',
|
||||
hospitalId: '',
|
||||
abo: '',
|
||||
beinhos_id: '',
|
||||
diagnosis: '',
|
||||
rhD: ''
|
||||
rh: ''
|
||||
})
|
||||
// 重置表单
|
||||
Object.assign(formData, {
|
||||
bleedingVolume: '',
|
||||
purpose: '',
|
||||
intent: '',
|
||||
anemiaDegree: '',
|
||||
bloodType: '',
|
||||
abo: '',
|
||||
bloodVolume: '',
|
||||
hbLow: false,
|
||||
otherReason: '',
|
||||
@ -352,193 +370,91 @@ const handleClose = () => {
|
||||
type.value = 'operation'
|
||||
}
|
||||
|
||||
// 提交
|
||||
const handleSubmit = () => {
|
||||
console.log('基础信息:', baseInfo)
|
||||
console.log('表单数据:', formData)
|
||||
const handleChange = (val) => {
|
||||
queryPatInfo({ patNo: val }).then((res) => {
|
||||
baseInfo.value = res.data.xkPatientInfo
|
||||
})
|
||||
}
|
||||
|
||||
// 提交
|
||||
const handleSubmit = () => {
|
||||
console.log('基础信息', baseInfo)
|
||||
console.log('表单数据', formData)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getDictData('ks')
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.app-container {
|
||||
overflow-y: auto;
|
||||
font-size: 14px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.tab-switch {
|
||||
.section {
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
||||
padding: 12px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.title {
|
||||
position: relative;
|
||||
padding-left: 12px;
|
||||
padding-bottom: 6px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 20px;
|
||||
justify-content: space-between;
|
||||
// align-items: center;
|
||||
|
||||
.tab-item {
|
||||
width: 120px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
background: #f5f7fa;
|
||||
border: 1px solid #dcdfe6;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
|
||||
&:first-child {
|
||||
border-radius: 4px 0 0 4px;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: #e6f7ff;
|
||||
border-color: #91d5ff;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.check-icon {
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
bottom: 2px;
|
||||
font-size: 12px;
|
||||
color: #1890ff;
|
||||
}
|
||||
/* 左侧蓝色小竖线 */
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 2px;
|
||||
bottom: 2px;
|
||||
width: 4px;
|
||||
height: 14px;
|
||||
background-color: #409eff;
|
||||
margin-right: 8px;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-bottom: 20px;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
||||
padding: 12px;
|
||||
.el-form-item {
|
||||
margin-bottom: 6px;
|
||||
|
||||
.section-title {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
padding: 6px 0;
|
||||
// margin-bottom: 8px;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 14px;
|
||||
background-color: #409eff;
|
||||
margin-right: 8px;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-row {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
margin-bottom: 8px;
|
||||
|
||||
&.three-col {
|
||||
.form-item {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&.checkbox-row {
|
||||
align-items: center;
|
||||
|
||||
:deep(.el-checkbox__label) {
|
||||
color: #f00;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.two-col {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.form-item-column {
|
||||
flex: 1;
|
||||
|
||||
.text {
|
||||
color: #80868d;
|
||||
font-weight: 700;
|
||||
margin: 6px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tips {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.form-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
||||
&.full-width {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
|
||||
label {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.el-textarea {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
width: 80px;
|
||||
text-align: right;
|
||||
color: #686f77;
|
||||
white-space: nowrap;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 700;
|
||||
color: #284160;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.el-input,
|
||||
.el-select,
|
||||
.el-date-picker {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.input-with-unit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
|
||||
.el-input {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.input-unit {
|
||||
color: #5a616a;
|
||||
}
|
||||
}
|
||||
|
||||
.checkbox-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.mt-10 {
|
||||
margin-top: 10px;
|
||||
:deep(.el-form-item__label) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
|
||||
|
||||
|
||||
.tips-label {
|
||||
label {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tips {
|
||||
color: #f00;
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.text-danger {
|
||||
color: #f00 !important;
|
||||
|
||||
:deep(.el-checkbox__label) {
|
||||
color: #f00 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -11,7 +11,7 @@
|
||||
<div class="top-search-bar">
|
||||
<el-input placeholder="输入床号/住院号/病人姓名搜索" style="width: 240px" clearable />
|
||||
<div class="btn_box ml10">
|
||||
<el-button type="primary">编辑病人</el-button>
|
||||
<el-button type="primary" @click="editHandle">编辑病人</el-button>
|
||||
<el-button type="primary" @click="goSxpg">输血评估</el-button>
|
||||
<el-button type="primary" @click="goSxsq">输血申请</el-button>
|
||||
<el-button type="primary">大量用血审批</el-button>
|
||||
@ -115,7 +115,7 @@
|
||||
<!-- 2. 输血记录卡片 -->
|
||||
<div class="card transfusion-record-card">
|
||||
<div class="card-title">
|
||||
<div class="text"> 输血记录 </div>
|
||||
<div class="text">输血记录</div>
|
||||
<div>
|
||||
<el-checkbox v-model="recordFilter.showDiscarded">显示已作废</el-checkbox>
|
||||
<el-button type="primary" icon="Refresh" plain class="ml10">刷 新</el-button>
|
||||
@ -163,13 +163,49 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 编辑病人信息 -->
|
||||
<el-dialog v-model="visible" title="编辑病人信息" width="650px" :draggable="true" :close-on-click-modal="false">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" inline>
|
||||
<el-form-item label="姓名:">
|
||||
<el-input v-model="formData.name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别:">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄:">
|
||||
<el-input v-model="formData.age" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证号:">
|
||||
<el-input v-model="formData.id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系方式:">
|
||||
<el-input v-model="formData.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="地址:">
|
||||
<el-input v-model="formData.address" />
|
||||
</el-form-item>
|
||||
<el-form-item label="诊断:">
|
||||
<el-input v-model="formData.diagnosis" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="visible = false">确 定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import router from '@/router'
|
||||
|
||||
|
||||
const visible = ref(false)
|
||||
const formData = ref({})
|
||||
const activeIndex = ref(0) // 当前选中患者索引
|
||||
// 患者列表数据
|
||||
const patientList = ref([
|
||||
@ -318,11 +354,14 @@ const transfusionEvalData = ref([
|
||||
purpose: '手术备血'
|
||||
},
|
||||
])
|
||||
const editHandle = () => {
|
||||
visible.value = true
|
||||
}
|
||||
const goSxpg = () => {
|
||||
router.push(`/doctor/assessment`)
|
||||
}
|
||||
const goSxsq = () => {
|
||||
router.push(`/doctor/application`)
|
||||
router.push(`/doctor/application?external=1`)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@ -2,16 +2,559 @@
|
||||
* @file index.vue
|
||||
* @description: 输血有效性评价
|
||||
* @author: w
|
||||
* @since: 2026-06-09
|
||||
* @since: 2026-06-11
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
输血有效性评价
|
||||
<div class="app-container">
|
||||
<!-- 顶部工具栏 -->
|
||||
<div class="toolbar">
|
||||
<el-button type="primary" plain>检索</el-button>
|
||||
<el-button type="primary" plain>新增单据</el-button>
|
||||
<el-button type="primary" plain>刷新结果</el-button>
|
||||
<el-button type="primary" plain>用血信息</el-button>
|
||||
<el-button type="success" plain>保存</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 主体内容区 -->
|
||||
<div class="content-wrapper">
|
||||
<!-- 左侧区域 -->
|
||||
<div class="left-panel">
|
||||
<!-- 输血后有效性评估 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">输血后有效性评估</div>
|
||||
<el-form :model="formData" label-width="auto">
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="申请单号">
|
||||
<el-input v-model="formData.applyNo" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请日期">
|
||||
<el-date-picker v-model="formData.applyDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="血型">
|
||||
<el-input v-model="formData.bloodType" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="患者姓名">
|
||||
<el-input v-model="formData.patientName" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="科 室">
|
||||
<el-input v-model="formData.department" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Rh(D)">
|
||||
<el-input v-model="formData.rhD" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="住院号/ID号">
|
||||
<el-input v-model="formData.hospitalId" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="科室类型">
|
||||
<el-input v-model="formData.deptType" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="术中患者出血量">
|
||||
<el-input v-model="formData.bloodLoss" placeholder="">
|
||||
<template #suffix>
|
||||
ml
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="评估时间">
|
||||
<el-date-picker v-model="formData.evalTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="评估人">
|
||||
<el-input v-model="formData.evaluator" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="divider-line"></div>
|
||||
|
||||
<div class="form-row full-col">
|
||||
<el-form-item label="评估意见">
|
||||
<el-input v-model="formData.evalOpinion" type="textarea" :rows="3" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row full-col">
|
||||
<el-form-item label="评估结论">
|
||||
<el-input v-model="formData.evalConclusion" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- 输血血液信息表格 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">输血血液信息</div>
|
||||
<el-table :data="bloodInfoData" border size="small" height="130">
|
||||
<el-table-column label="血液品种" prop="bloodType" />
|
||||
<el-table-column label="申请血量" prop="applyVolume" />
|
||||
<el-table-column label="单位" prop="unit" />
|
||||
<el-table-column label="申请血型" prop="applyBloodType" />
|
||||
<el-table-column label="替代血液品种" prop="replaceBloodType" />
|
||||
<el-table-column label="输血目的" prop="purpose" />
|
||||
<el-table-column label="输血指征" prop="transfusionCorrection" />
|
||||
<el-table-column label="实际用血量" prop="actualVolume" />
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 右侧区域 -->
|
||||
<div class="right-panel">
|
||||
<!-- 血小板指标 -->
|
||||
<div class="form-section" style="padding-right: 20%">
|
||||
<div class="section-title">血小板指标</div>
|
||||
<el-form :model="plateletData" label-width="auto">
|
||||
<el-form-item label="身高">
|
||||
<el-input v-model="plateletData.height" placeholder="">
|
||||
<template #suffix>
|
||||
cm
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="体重">
|
||||
<el-input v-model="plateletData.weight" placeholder="">
|
||||
<template #suffix>
|
||||
kg
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="血容量">
|
||||
<el-select v-model="plateletData.bloodVolume" placeholder="" style="width: 85%">
|
||||
<el-option label="70" value="70"></el-option>
|
||||
<el-option label="80" value="80"></el-option>
|
||||
<el-option label="100" value="100"></el-option>
|
||||
</el-select> ml/kg
|
||||
</el-form-item>
|
||||
<el-form-item />
|
||||
<div class="divider-line"></div>
|
||||
<el-form-item label="输注前的Plt">
|
||||
<el-input v-model="plateletData.pltBefore" placeholder="" readonly>
|
||||
<template #suffix>
|
||||
10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="输注后的Plt">
|
||||
<el-input v-model="plateletData.pltAfter" placeholder="" readonly>
|
||||
<template #suffix>
|
||||
10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Plt增加校正指数">
|
||||
<el-input v-model="plateletData.pltCorrection" placeholder="" readonly>
|
||||
<template #suffix>
|
||||
10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Plt回收率">
|
||||
<el-input v-model="plateletData.pltRecovery" placeholder="" readonly>
|
||||
<template #suffix>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 底部检查结果区域 -->
|
||||
<div class="bottom-panel">
|
||||
<!-- 输血后检查结果 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title">病人输血后检查结果</div>
|
||||
<el-form :model="postCheckData" label-width="auto">
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="HGB">
|
||||
<el-input v-model="postCheckData.hgb" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="HCT">
|
||||
<el-input v-model="postCheckData.hct" placeholder="">
|
||||
<template #suffix>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="PLT">
|
||||
<el-input v-model="postCheckData.plt" placeholder="">
|
||||
<template #suffix>
|
||||
×10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="ALT">
|
||||
<el-input v-model="postCheckData.alt" placeholder="">
|
||||
<template #suffix>
|
||||
U/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="HBsAg">
|
||||
<el-input v-model="postCheckData.hbsAg" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="TP">
|
||||
<el-input v-model="postCheckData.tp" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="Anti-HCV">
|
||||
<el-input v-model="postCheckData.antiHcv" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Anti-HIV">
|
||||
<el-input v-model="postCheckData.antiHiv" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="PT">
|
||||
<el-input v-model="postCheckData.pt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="APTT">
|
||||
<el-input v-model="postCheckData.aptt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="FIB">
|
||||
<el-input v-model="postCheckData.fib" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="INR">
|
||||
<el-input v-model="postCheckData.inr" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- 输血前检查结果 -->
|
||||
<div class="form-section">
|
||||
<div class="section-title pre-check">病人输血前检查结果</div>
|
||||
<el-form :model="preCheckData" label-width="auto">
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="HGB">
|
||||
<el-input v-model="preCheckData.hgb" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="HCT">
|
||||
<el-input v-model="preCheckData.hct" placeholder="">
|
||||
<template #suffix>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="PLT">
|
||||
<el-input v-model="preCheckData.plt" placeholder="">
|
||||
<template #suffix>
|
||||
×10^9/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="ALT">
|
||||
<el-input v-model="preCheckData.alt" placeholder="">
|
||||
<template #suffix>
|
||||
U/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="HBsAg">
|
||||
<el-input v-model="preCheckData.hbsAg" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="TP">
|
||||
<el-input v-model="preCheckData.tp" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="Anti-HCV">
|
||||
<el-input v-model="preCheckData.antiHcv" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Anti-HIV">
|
||||
<el-input v-model="preCheckData.antiHiv" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="PT">
|
||||
<el-input v-model="preCheckData.pt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="form-row three-col">
|
||||
<el-form-item label="APTT">
|
||||
<el-input v-model="preCheckData.aptt" placeholder="">
|
||||
<template #suffix>
|
||||
秒
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="FIB">
|
||||
<el-input v-model="preCheckData.fib" placeholder="">
|
||||
<template #suffix>
|
||||
g/L
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="INR">
|
||||
<el-input v-model="preCheckData.inr" placeholder="">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
// 表单主数据
|
||||
const formData = reactive({
|
||||
applyNo: '',
|
||||
applyDate: '',
|
||||
patientName: '',
|
||||
department: '',
|
||||
hospitalId: '',
|
||||
deptType: '',
|
||||
evalTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
evaluator: '管理员',
|
||||
bloodType: '',
|
||||
rhD: '',
|
||||
bloodLoss: '',
|
||||
evalOpinion: '',
|
||||
evalConclusion: '输血有效'
|
||||
})
|
||||
|
||||
// 血小板指标数据
|
||||
const plateletData = reactive({
|
||||
height: '',
|
||||
weight: '',
|
||||
bloodVolume: '',
|
||||
pltBefore: '',
|
||||
pltAfter: '',
|
||||
pltCorrection: '',
|
||||
pltRecovery: ''
|
||||
})
|
||||
|
||||
// 输血血液信息表格数据
|
||||
const bloodInfoData = reactive([
|
||||
{ bloodType: 'test', applyVolume: '', unit: '', applyBloodType: '', replaceBloodType: '', purpose: '' }
|
||||
])
|
||||
|
||||
// 输血后检查结果
|
||||
const postCheckData = reactive({
|
||||
hgb: '',
|
||||
hct: '',
|
||||
plt: '',
|
||||
alt: '',
|
||||
hbsAg: '',
|
||||
tp: '',
|
||||
antiHcv: '',
|
||||
antiHiv: '',
|
||||
pt: '',
|
||||
aptt: '',
|
||||
fib: '',
|
||||
inr: ''
|
||||
})
|
||||
|
||||
// 输血前检查结果
|
||||
const preCheckData = reactive({
|
||||
hgb: '',
|
||||
hct: '',
|
||||
plt: '',
|
||||
alt: '',
|
||||
hbsAg: '',
|
||||
tp: '',
|
||||
antiHcv: '',
|
||||
antiHiv: '',
|
||||
pt: '',
|
||||
aptt: '',
|
||||
fib: '',
|
||||
inr: ''
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
<style scoped lang="scss">
|
||||
.app-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
overflow-y: auto;
|
||||
|
||||
// 顶部工具栏
|
||||
.toolbar {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
margin-bottom: 8px;
|
||||
background: #fff;
|
||||
padding: 12px;
|
||||
border-radius: 4px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
// 主体内容区(左右布局)
|
||||
.content-wrapper {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex: 1;
|
||||
margin-bottom: 8px;
|
||||
|
||||
.left-panel {
|
||||
flex: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.right-panel {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
// 底部检查结果区
|
||||
.bottom-panel {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
// 通用表单卡片样式
|
||||
.form-section {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
||||
flex: 1;
|
||||
|
||||
.section-title {
|
||||
position: relative;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 10px;
|
||||
color: #303133;
|
||||
padding-left: 12px;
|
||||
|
||||
/* 左侧蓝色小竖线 */
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 2px;
|
||||
bottom: 2px;
|
||||
width: 4px;
|
||||
height: 14px;
|
||||
background-color: #409eff;
|
||||
margin-right: 8px;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
&.pre-check {
|
||||
color: #e6399b;
|
||||
|
||||
&::before {
|
||||
background-color: #e6399b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-row {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
width: 100%;
|
||||
|
||||
&.three-col {
|
||||
.el-form-item {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&.two-col {
|
||||
.el-form-item {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&.full-col {
|
||||
.el-form-item {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.divider-line {
|
||||
height: 1px;
|
||||
background-color: #d0d7e5;
|
||||
margin: 10px 0;
|
||||
width: 100%;
|
||||
|
||||
&.blue {
|
||||
background-color: #409eff;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
:deep(.el-textarea__inner) {
|
||||
min-height: 72px !important;
|
||||
}
|
||||
|
||||
:deep(.el-input__suffix) {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -4,11 +4,18 @@
|
||||
* @author: w
|
||||
* @since: 2026-06-03
|
||||
*/
|
||||
|
||||
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 1.申请单信息卡片 -->
|
||||
<div class="card-wrap">
|
||||
<el-button type="primary" plain>检索</el-button>
|
||||
<el-button type="primary" plain>新增单据</el-button>
|
||||
<el-button type="danger" plain>删除单据</el-button>
|
||||
<el-button type="success" plain>保存</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
<el-button type="primary" plain>审核</el-button>
|
||||
<el-button type="primary" plain>反审核</el-button>
|
||||
</div>
|
||||
<div class="card-wrap">
|
||||
<div class="card-title">申请单信息</div>
|
||||
<div class="info-row three-col">
|
||||
@ -71,7 +78,8 @@
|
||||
<div class="card-title">血液信息</div>
|
||||
<div class="oper-bar">
|
||||
<el-select v-model="addBloodVal" placeholder="增加血液" style="width:160px">
|
||||
<el-option label="新增血袋" value="1" />
|
||||
<el-option label="新增血液" value="1" />
|
||||
<el-option label="取消血液" value="2" />
|
||||
</el-select>
|
||||
<el-input v-model="inputVal" placeholder="请输入" style="width:240px;margin:0 12px" />
|
||||
<el-button type="primary" @click="searchBlood">确定</el-button>
|
||||
@ -88,89 +96,115 @@
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--3.输血反应信息卡片-->
|
||||
<!-- 3.输血反应信息卡片 纯 el-form + el-form-item + 栅格布局 -->
|
||||
<div class="card-wrap">
|
||||
<div class="card-title">输血反应信息</div>
|
||||
<div class="form-row four-col">
|
||||
<div class="form-item">
|
||||
<div class="label">血液流水号:</div>
|
||||
<el-input v-model="formData.bloodNo" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">医师:</div>
|
||||
<el-input v-model="formData.doctor" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">产品码:</div>
|
||||
<el-input v-model="formData.proCode" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">实际输入量:</div>
|
||||
<el-input v-model="formData.realNum" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">受血方式:</div>
|
||||
<el-input v-model="formData.receiveType" placeholder="请输入" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row four-col">
|
||||
<div class="form-item">
|
||||
<div class="label">输血日期:</div>
|
||||
<el-date-picker v-model="formData.transDate" type="datetime" placeholder="选择日期时间" style="width:100%" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">发生日期:</div>
|
||||
<el-date-picker v-model="formData.occurDate" type="datetime" placeholder="选择日期时间" style="width:100%" />
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">输血反应:</div>
|
||||
<el-select v-model="formData.react" placeholder="请选择" style="width:100%">
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">临床处理:</div>
|
||||
<el-select v-model="formData.clinicDeal" placeholder="请选择" style="width:100%">
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="label">输血科处理:</div>
|
||||
<el-select v-model="formData.bloodDeptDeal" placeholder="请选择" style="width:100%">
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<el-form :model="formData" label-width="90px" class="reaction-form">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="血液流水号" prop="bloodNo">
|
||||
<el-input v-model="formData.bloodNo" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="医师" prop="doctor">
|
||||
<el-input v-model="formData.doctor" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="产品码" prop="proCode">
|
||||
<el-input v-model="formData.proCode" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="实际输入量" prop="realNum">
|
||||
<el-input v-model="formData.realNum" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="受血方式" prop="receiveType">
|
||||
<el-input v-model="formData.receiveType" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<div class="form-item full-item">
|
||||
<div class="label">备注:</div>
|
||||
<el-input v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" style="width: 50%" />
|
||||
</div>
|
||||
<div class="btn-bottom">
|
||||
<el-button type="primary">确定</el-button>
|
||||
<el-button>取消</el-button>
|
||||
</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="输血日期" prop="transDate">
|
||||
<el-date-picker v-model="formData.transDate" type="datetime" placeholder="选择日期时间" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="发生日期" prop="occurDate">
|
||||
<el-date-picker v-model="formData.occurDate" type="datetime" placeholder="选择日期时间" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="输血反应" prop="react">
|
||||
<el-input v-model="formData.react" type="textarea" :rows="3" placeholder="请输入" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="临床处理" prop="clinicDeal">
|
||||
<el-input v-model="formData.clinicDeal" type="textarea" :rows="3" placeholder="请输入" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="输血科处理" prop="bloodDeptDeal">
|
||||
<el-input v-model="formData.bloodDeptDeal" type="textarea" :rows="3" placeholder="请输入"
|
||||
style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
//下拉框
|
||||
const addBloodVal = ref('')
|
||||
const inputVal = ref('')
|
||||
//表格数据
|
||||
const bloodTableData = ref([
|
||||
{ bloodNo: '999922220001', productCode: '999922220001', bloodType: '洗涤红细胞', abo: 'O', rhd: '待查', volume: '2.00', unit: 'u', validDate: '2021-09-10 10:00' }
|
||||
])
|
||||
//表单数据
|
||||
const formData = reactive({
|
||||
bloodNo: '', doctor: '', proCode: '', realNum: '',
|
||||
receiveType: '', transDate: '', occurDate: '', react: '',
|
||||
clinicDeal: '', bloodDeptDeal: '', remark: ''
|
||||
})
|
||||
//查询血液信息
|
||||
const searchBlood = () => {
|
||||
|
||||
// 下拉框
|
||||
const addBloodVal = ref('1')
|
||||
const inputVal = ref('')
|
||||
|
||||
// 表格数据
|
||||
const bloodTableData = ref([
|
||||
{
|
||||
bloodNo: '999922220001',
|
||||
productCode: '999922220001',
|
||||
bloodType: '洗涤红细胞',
|
||||
abo: 'O',
|
||||
rhd: '待查',
|
||||
volume: '2.00',
|
||||
unit: 'u',
|
||||
validDate: '2021-09-10 10:00'
|
||||
}
|
||||
])
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
bloodNo: '',
|
||||
doctor: '',
|
||||
proCode: '',
|
||||
realNum: '',
|
||||
receiveType: '',
|
||||
transDate: '',
|
||||
occurDate: '',
|
||||
react: '',
|
||||
clinicDeal: '',
|
||||
bloodDeptDeal: '',
|
||||
remark: ''
|
||||
})
|
||||
|
||||
// 查询血液信息
|
||||
const searchBlood = () => {
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -185,12 +219,9 @@ const searchBlood = () => {
|
||||
.card-wrap {
|
||||
background: #fff;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.07); //还原卡片阴影
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.07);
|
||||
padding: 12px;
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.12); // 悬停加深阴影
|
||||
}
|
||||
|
||||
.card-title {
|
||||
font-size: 15px;
|
||||
@ -211,7 +242,10 @@ const searchBlood = () => {
|
||||
}
|
||||
}
|
||||
|
||||
//三列基础信息
|
||||
.el-form-item {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.three-col {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
@ -239,70 +273,10 @@ const searchBlood = () => {
|
||||
}
|
||||
}
|
||||
|
||||
//血液操作栏
|
||||
.oper-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
//表单四列布局
|
||||
.four-col {
|
||||
display: flex;
|
||||
gap: 18px;
|
||||
|
||||
.form-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 14px;
|
||||
|
||||
.label {
|
||||
color: #80868d;
|
||||
font-weight: 700;
|
||||
margin: 8px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//两列布局
|
||||
.two-col {
|
||||
display: flex;
|
||||
gap: 18px;
|
||||
font-size: 14px;
|
||||
|
||||
.form-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.label {
|
||||
color: #80868d;
|
||||
font-weight: 700;
|
||||
margin: 8px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//整行备注
|
||||
.full-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: 22px;
|
||||
font-size: 14px;
|
||||
|
||||
.label {
|
||||
color: #80868d;
|
||||
font-weight: 700;
|
||||
margin: 8px 0;
|
||||
}
|
||||
}
|
||||
|
||||
//底部按钮居中
|
||||
.btn-bottom {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -42,9 +42,11 @@
|
||||
|
||||
<!-- 表格卡片 -->
|
||||
<div class="table-card">
|
||||
<div class="table-btn-bar">
|
||||
<el-button icon="Printer" @click="onCancel">作废</el-button>
|
||||
<el-button type="primary" @click="onAudit">审核</el-button>
|
||||
<div class="mb10">
|
||||
<el-button type="primary">检索</el-button>
|
||||
<el-button type="primary">科主任核准</el-button>
|
||||
<el-button type="primary">医务部审批</el-button>
|
||||
<el-button type="warning">打印</el-button>
|
||||
</div>
|
||||
|
||||
<CustomTable :data="tableData" :columns="columns" :config="config" @selection-change="selectionChange"
|
||||
|
||||
11
src/views/liswork/dict/data.vue
Normal file
11
src/views/liswork/dict/data.vue
Normal file
@ -0,0 +1,11 @@
|
||||
<script setup>
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
390
src/views/liswork/dict/index.vue
Normal file
390
src/views/liswork/dict/index.vue
Normal file
@ -0,0 +1,390 @@
|
||||
/**
|
||||
* @file index.vue
|
||||
* @description: 代码字典
|
||||
* @author: w
|
||||
* @since: 2026-06-12
|
||||
*/
|
||||
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4" :xs="24">
|
||||
<div class="head-container">
|
||||
<el-input v-model="dictTypemc" clearable placeholder="请输入字典名称" prefix-icon="Search"
|
||||
style="margin-bottom: 20px" />
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<div class="card-content">
|
||||
<el-tree ref="treeRef" class="filter-tree" :data="typeList" :props="defaultProps" default-expand-all
|
||||
node-key="wordbook_code" :filter-node-method="filterNode" @node-click="nodeHandle" highlight-current />
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<!-- 字典明细-->
|
||||
<el-col :span="20" :xs="24">
|
||||
<!-- 表单区域-->
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
|
||||
<el-form-item class="cus-el-form-item" label="名称" prop="wordbook_name">
|
||||
<el-input v-model="queryParams.wordbook_name" placeholder="请输入名称" clearable style="width: 240px"
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item class="cus-el-form-item" label="明细代号" prop="status">
|
||||
<el-input v-model="queryParams.wordbook_code" placeholder="请输入明细代号" clearable style="width: 240px"
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" ">新增</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span=" 1.5">
|
||||
<el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="warning" plain @click="clearCacheHandle">清除缓存</el-button>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<!-- 表格区域-->
|
||||
<el-table v-loading="loading" :data="typeDetail" @selection-change="handleSelectionChange" highlight-current-row
|
||||
show-overflow-tooltip height="calc(100vh - 200px)">
|
||||
<el-table-column label='字典类型' align="center" prop="wordbook_sign" />
|
||||
<el-table-column label="明细代号" align="center" prop="wordbook_code" />
|
||||
<el-table-column label="名称" align="center" prop="wordbook_name" />
|
||||
<el-table-column label="状态" align="center" prop="use_sign">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.use_sign == 'Y'" type="primary">正常</el-tag>
|
||||
<el-tag v-if="row.use_sign == 'N'" type="danger">停用</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(row)">修改</el-button>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" /> -->
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 添加或修改参数配置对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
<el-form ref="dictRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="字典类别" prop="wordbook_sign">
|
||||
<el-input v-model="form.wordbook_sign" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="字典代号" prop="wordbook_code">
|
||||
<el-input v-model="form.wordbook_code" placeholder="请输入字典代号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="字典名称" prop="wordbook_name">
|
||||
<el-input v-model="form.wordbook_name" placeholder="请输入字典名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="use_sign">
|
||||
<el-radio-group v-model="form.use_sign">
|
||||
<el-radio value="Y"> 正常 </el-radio>
|
||||
<el-radio value="N"> 停用 </el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 用户导入对话框 -->
|
||||
<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
|
||||
<el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<div class="el-upload__tip">
|
||||
<el-checkbox v-model="upload.updateSupport" />是否覆盖已经存在的字典数据
|
||||
</div>
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
||||
@click="importTemplate">下载模板</el-link>
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||
<el-button @click="upload.open = false">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, reactive, ref, onMounted, nextTick } from "vue";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { queryComDictListService, addComDictService, delComDictService, updateComDictService, getComDicts } from "@/api/liswork/dict/ComDict";
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
wordbook_name: undefined,
|
||||
wordbook_code: undefined,
|
||||
dictType: '',
|
||||
},
|
||||
|
||||
rules: {
|
||||
wordbook_name: [{ required: true, message: "字典名称不能为空", trigger: "blur" }],
|
||||
wordbook_sign: [{ required: true, message: "字典类型不能为空", trigger: "blur" }]
|
||||
},
|
||||
});
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const loading = ref(true);
|
||||
const typeList = ref([])
|
||||
const typeDetail = ref([])
|
||||
const total = ref(0);
|
||||
const dictTypemc = ref('');
|
||||
const open = ref(false);
|
||||
const title = ref('');
|
||||
|
||||
/*** 用户导入参数 */
|
||||
const upload = reactive({
|
||||
// 是否显示弹出层(用户导入)
|
||||
open: false,
|
||||
// 弹出层标题(用户导入)
|
||||
title: "",
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的用户数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
// 上传的地址
|
||||
url: import.meta.env.VITE_APP_BASE_API + "/comdict/importData"
|
||||
});
|
||||
const treeRef = ref(null)
|
||||
const defaultProps = {
|
||||
children: 'children',
|
||||
label: 'wordbook_name',
|
||||
id: 'wordbook_code'
|
||||
}
|
||||
|
||||
const info = ref({})
|
||||
watch(dictTypemc, (val) => {
|
||||
treeRef.value?.filter(val)
|
||||
})
|
||||
|
||||
const filterNode = (value, data) => {
|
||||
if (!value) return true
|
||||
return data.wordbook_name.includes(value)
|
||||
}
|
||||
|
||||
const nodeHandle = (data) => {
|
||||
queryParams.value.dictType = data.wordbook_code
|
||||
getList()
|
||||
}
|
||||
|
||||
|
||||
// 获取左侧字典列表
|
||||
function getTypeList() {
|
||||
queryComDictListService().then(response => {
|
||||
typeList.value = response.data;
|
||||
queryParams.value.dictType = response.data[0].wordbook_code
|
||||
treeRef.value.setCurrentKey(response.data[0].wordbook_code)
|
||||
getList()
|
||||
});
|
||||
}
|
||||
|
||||
// 查询字典明细列表
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
getComDicts(queryParams.value).then(response => {
|
||||
typeDetail.value = response.data;
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
//查询
|
||||
function handleQuery() {
|
||||
getList();
|
||||
}
|
||||
|
||||
/** 表单重置 */
|
||||
function reset() {
|
||||
form.value = {
|
||||
wordbook_sign: '',
|
||||
wordbook_name: '',
|
||||
wordbook_code: '',
|
||||
use_sign: "Y",
|
||||
remark: undefined
|
||||
};
|
||||
proxy.resetForm("dictRef");
|
||||
}
|
||||
//重置
|
||||
function resetQuery() {
|
||||
queryParams.value.wordbook_name = ''
|
||||
queryParams.value.wordbook_code = ''
|
||||
proxy.resetForm("queryRef");
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
//新增
|
||||
function handleAdd() {
|
||||
if (!queryParams.value.dictType) {
|
||||
proxy.$modal.msgWarning("请先选择字典大类");
|
||||
return;
|
||||
}
|
||||
reset();
|
||||
form.value.wordbook_sign = queryParams.value.dictType;
|
||||
open.value = true;
|
||||
title.value = '新增字典';
|
||||
}
|
||||
|
||||
//修改
|
||||
function handleUpdate(row) {
|
||||
reset()
|
||||
form.value = row.wordbook_sign ? JSON.parse(JSON.stringify(row)) : info.value
|
||||
open.value = true;
|
||||
title.value = '编辑字典';
|
||||
}
|
||||
|
||||
//删除
|
||||
function handleDelete(row) {
|
||||
proxy.$modal.confirm('是否确认删除字典名称为"' + row.wordbook_name + '"的数据项?').then(function () {
|
||||
return delComDictService(row);
|
||||
}).then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => { });
|
||||
}
|
||||
/** 导入按钮操作 */
|
||||
function handleImport() {
|
||||
upload.title = "字典导入";
|
||||
upload.open = true;
|
||||
};
|
||||
/** 导出按钮操作 */
|
||||
function handleExport() {
|
||||
proxy.download("comdict/export", {
|
||||
...queryParams.value,
|
||||
}, `user_${new Date().getTime()}.xlsx`);
|
||||
};
|
||||
|
||||
const clearCacheHandle = () => {
|
||||
clearCache().then(() => {
|
||||
proxy.$modal.msgSuccess("清理成功");
|
||||
handleQuery();
|
||||
});
|
||||
};
|
||||
/** 下载模板操作 */
|
||||
function importTemplate() {
|
||||
proxy.download("comdict/importTemplate", {
|
||||
}, `user_template_${new Date().getTime()}.xlsx`);
|
||||
};
|
||||
/** 提交上传文件 */
|
||||
function submitFileForm() {
|
||||
proxy.$refs["uploadRef"].submit();
|
||||
};
|
||||
/**文件上传中处理 */
|
||||
const handleFileUploadProgress = (event, file, fileList) => {
|
||||
upload.isUploading = true;
|
||||
};
|
||||
/** 文件上传成功处理 */
|
||||
const handleFileSuccess = (response, file, fileList) => {
|
||||
upload.open = false;
|
||||
upload.isUploading = false;
|
||||
proxy.$refs["uploadRef"].handleRemove(file);
|
||||
proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
|
||||
handleQuery()
|
||||
};
|
||||
|
||||
|
||||
//多选框选中数据
|
||||
function handleSelectionChange(selection) {
|
||||
info.value = selection[0]
|
||||
single.value = selection.length != 1;
|
||||
}
|
||||
|
||||
|
||||
function submitForm() {
|
||||
proxy.$refs["dictRef"].validate(valid => {
|
||||
if (valid) {
|
||||
if (title.value == '编辑字典') {
|
||||
updateComDictService(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("修改成功");
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
} else {
|
||||
addComDictService(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("新增成功");
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function cancel() {
|
||||
open.value = false;
|
||||
reset();
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
getTypeList()
|
||||
})
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped lang="scss">
|
||||
.card-content {
|
||||
.card-content {
|
||||
max-height: 450px;
|
||||
/* 设置最大高度 */
|
||||
overflow-y: auto;
|
||||
/* 超出高度时显示垂直滚动条 */
|
||||
padding: 16px;
|
||||
/* 保持与卡片默认一致的内边距 */
|
||||
}
|
||||
|
||||
.clickable:hover {
|
||||
cursor: pointer;
|
||||
/* 鼠标悬停时显示手型 */
|
||||
transition: all 0.3s;
|
||||
/* 平滑过渡效果 */
|
||||
color: blue;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.filter-tree {
|
||||
height: 80vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
@ -7,14 +7,16 @@
|
||||
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="section-card">
|
||||
<el-button type="primary" plain>检索</el-button>
|
||||
<el-button type="primary" plain>确认接收</el-button>
|
||||
</div>
|
||||
<!-- 申请单信息卡片 -->
|
||||
<div class="section-card">
|
||||
<div class="section-title">申请单信息</div>
|
||||
<el-form :model="applyForm" label-position="top" class="form-top-label">
|
||||
<!-- 第1行 6项 -->
|
||||
<el-form :model="applyForm" label-width="auto">
|
||||
<div class="form-row row-six">
|
||||
<el-form-item label="血袋条码:">
|
||||
<!-- 血袋条码输入框保持可编辑,添加扫码触发事件 -->
|
||||
<el-input v-model="bloodForm.bagBarcode" placeholder="请扫码或输入血袋条码" @change="handleBagBarcodeScan"
|
||||
@keyup.enter="handleBagBarcodeScan" />
|
||||
</el-form-item>
|
||||
@ -36,7 +38,6 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第2行 6项 -->
|
||||
<div class="form-row row-six">
|
||||
<el-form-item label="病 区:">
|
||||
<el-input v-model="applyForm.ward" placeholder="" readonly />
|
||||
@ -58,7 +59,6 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第3行 6项 -->
|
||||
<div class="form-row row-six">
|
||||
<el-form-item label="输血目的:">
|
||||
<el-input v-model="applyForm.purpose" placeholder="" readonly />
|
||||
@ -84,7 +84,6 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第4行 6项 -->
|
||||
<div class="form-row row-six">
|
||||
<el-form-item label="ABO复核:">
|
||||
<el-input v-model="applyForm.aboCheck" placeholder="" readonly />
|
||||
@ -116,7 +115,7 @@
|
||||
<!-- 发血单主信息卡片 -->
|
||||
<div class="section-card">
|
||||
<div class="section-title">发血单主信息</div>
|
||||
<el-form :model="bloodForm" label-position="top" class="form-top-label">
|
||||
<el-form :model="bloodForm" label-width="auto">
|
||||
<div class="form-row row-six">
|
||||
<el-form-item label="发血时间:">
|
||||
<el-date-picker v-model="bloodForm.sendTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||
@ -147,7 +146,7 @@
|
||||
<el-radio label="none">全否</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<el-table :data="detailTableData" border stripe size="small">
|
||||
<el-table :data="detailTableData" border height="30vh">
|
||||
<el-table-column label="序号" prop="index" align="center" width="50" />
|
||||
<el-table-column label="血液流水号" prop="bloodSn" align="center" />
|
||||
<el-table-column label="产品码" prop="productCode" align="center" />
|
||||
@ -161,10 +160,7 @@
|
||||
<el-table-column label="血液是否已接收" prop="isReceived" align="center" />
|
||||
</el-table>
|
||||
|
||||
<div class="btn-bottom">
|
||||
<el-button type="primary">确认接收</el-button>
|
||||
<el-button>取消</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@ -242,19 +238,16 @@ const handleBagBarcodeScan = async () => {
|
||||
|
||||
.section-card {
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
padding: 12px 16px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.12); // 悬停加深阴影
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
margin-bottom: 16px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -269,17 +262,17 @@ const handleBagBarcodeScan = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
.form-top-label {
|
||||
:deep(.el-form-item__label) {
|
||||
padding: 0 0 3px 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
:deep(.el-form-item__label) {
|
||||
padding: 0 0 3px 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
|
||||
/* 核心:固定一行6列,均分宽度 */
|
||||
.form-row {
|
||||
display: flex;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user