血型复核
This commit is contained in:
parent
996ae5cfe6
commit
82212c00c6
@ -32,3 +32,100 @@ export function deleteBillNo(query?: Object) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 标本接收
|
||||||
|
export function acceptSampleInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/acceptSampleInfo/acceptSampleInfo',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 标本退回
|
||||||
|
export function backSampleInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/acceptSampleInfo/backSampleInfo',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 取消标本接收
|
||||||
|
export function cancelSampleInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/acceptSampleInfo/cancelSampleInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 标本列表查询
|
||||||
|
export function queryAcceptSampleList(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/acceptSampleInfo/queryList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询单个标本信息
|
||||||
|
export function queryAcceptSampleOneInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/acceptSampleInfo/queryOne',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询单据详情
|
||||||
|
export function queryBloodOne(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/queryOne',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取待血型复核的单据
|
||||||
|
export function queryCheckBloodTypeInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/queryCheckBloodTypeInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询血型复核历史记录
|
||||||
|
export function queryHistoryInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/queryHistoryInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 删除数据
|
||||||
|
export function delCheckBloodTypeInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/delCheckBloodTypeInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 保存数据
|
||||||
|
export function saveData(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/saveData',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 检索血型复核记录
|
||||||
|
export function jsqueryList(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/queryList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询单个血型复核单据详情
|
||||||
|
export function queryOneInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/bloodbank/checkBloodType/queryOneInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,3 +16,28 @@ export function printBarCode(query?: Object) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 标本送检
|
||||||
|
export function sendSampleInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/nurse/sendSampleInfo/sendSampleInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询单个样本信息
|
||||||
|
export function queryOne(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/nurse/sendSampleInfo/queryOne',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询样本信息列表
|
||||||
|
export function queryYbList(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/nurse/sendSampleInfo/queryList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -850,6 +850,10 @@ aside {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-checkbox__input.is-disabled+span.el-checkbox__label {
|
||||||
|
color: #606266 !important;
|
||||||
|
}
|
||||||
|
|
||||||
// 一行省略
|
// 一行省略
|
||||||
.ellipsis-one-line {
|
.ellipsis-one-line {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|||||||
@ -28,7 +28,11 @@
|
|||||||
:tooltip-config="{ appendToBody: true, zIndex: 3000 }" :show-overflow="true"
|
:tooltip-config="{ appendToBody: true, zIndex: 3000 }" :show-overflow="true"
|
||||||
:scroll-y="{ enabled: true, rSize: 30, height: '100%', oSize: 20, gt: 30, }">
|
:scroll-y="{ enabled: true, rSize: 30, height: '100%', oSize: 20, gt: 30, }">
|
||||||
<vxe-table-column v-for="field in props.columnList" :key="field.prop" :field="field.prop"
|
<vxe-table-column v-for="field in props.columnList" :key="field.prop" :field="field.prop"
|
||||||
:title="field.label" align="center" :width="field.width" min-width="100" />
|
:title="field.label" align="center" :width="field.width" min-width="100">
|
||||||
|
<template v-if="field.slotName" #default="scope">
|
||||||
|
<slot :name="field.slotName" :row="scope.row" :$index="scope.$rowIndex"></slot>
|
||||||
|
</template>
|
||||||
|
</vxe-table-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -46,7 +50,8 @@ export interface TableColumnItem {
|
|||||||
label: string
|
label: string
|
||||||
prop: string
|
prop: string
|
||||||
width?: string
|
width?: string
|
||||||
align?: 'left' | 'center' | 'right'
|
align?: 'left' | 'center' | 'right',
|
||||||
|
slotName?: string
|
||||||
}
|
}
|
||||||
export type TableRowItem = Record<string, any>
|
export type TableRowItem = Record<string, any>
|
||||||
|
|
||||||
@ -185,7 +190,7 @@ const filterDataHandle = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//搜索框上下回车键盘事件 ==========
|
//搜索框上下回车键盘事件
|
||||||
const handleInputKeydown = (e: KeyboardEvent) => {
|
const handleInputKeydown = (e: KeyboardEvent) => {
|
||||||
if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(e.key)) return;
|
if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(e.key)) return;
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@ -204,7 +209,7 @@ const handleInputKeydown = (e: KeyboardEvent) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//表格容器上下键导航 ==========
|
//表格容器上下键导航
|
||||||
const handleTableKeydown = (e: KeyboardEvent) => {
|
const handleTableKeydown = (e: KeyboardEvent) => {
|
||||||
if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(e.key)) return;
|
if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(e.key)) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@ -222,7 +227,7 @@ const handleTableKeydown = (e: KeyboardEvent) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// ========== 监听原始表格数据变化,重新生成拼音数据 ==========
|
// 监听原始表格数据变化,重新生成拼音数据
|
||||||
watch(
|
watch(
|
||||||
() => props.tableData,
|
() => props.tableData,
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
@ -233,7 +238,6 @@ watch(
|
|||||||
{ deep: true, immediate: true }
|
{ deep: true, immediate: true }
|
||||||
)
|
)
|
||||||
|
|
||||||
// 原有监听逻辑不变
|
|
||||||
watch(
|
watch(
|
||||||
() => props.modelValue,
|
() => props.modelValue,
|
||||||
(val) => {
|
(val) => {
|
||||||
@ -245,14 +249,14 @@ watch(inputText, (val) => {
|
|||||||
emit('update:modelValue', val)
|
emit('update:modelValue', val)
|
||||||
})
|
})
|
||||||
|
|
||||||
// 输入框回车(原有逻辑)
|
// 输入框回车
|
||||||
const handleInputEnter = (e: KeyboardEvent) => {
|
const handleInputEnter = (e: KeyboardEvent) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
emit('update:modelValue', inputText.value)
|
emit('update:modelValue', inputText.value)
|
||||||
emit('search', inputText.value)
|
emit('search', inputText.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 切换下拉框(修改:打开时聚焦搜索框、刷新过滤)
|
// 切换下拉框
|
||||||
const toggleDropdown = () => {
|
const toggleDropdown = () => {
|
||||||
if (!dropdownRef.value) return
|
if (!dropdownRef.value) return
|
||||||
showPanel.value = !showPanel.value
|
showPanel.value = !showPanel.value
|
||||||
@ -274,7 +278,7 @@ const toggleDropdown = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表格行点击(原有逻辑完全不变)
|
// 表格行点击
|
||||||
const handleRowClick = (params: { row: TableRowItem }) => {
|
const handleRowClick = (params: { row: TableRowItem }) => {
|
||||||
const text = params.row[bindField] ?? ''
|
const text = params.row[bindField] ?? ''
|
||||||
inputText.value = text
|
inputText.value = text
|
||||||
|
|||||||
@ -34,6 +34,7 @@ const GLOBAL_PARAM_KEYS = [
|
|||||||
'HZBQGY', // 患者病情概要是否必填
|
'HZBQGY', // 患者病情概要是否必填
|
||||||
'SQDSFKRLXGXX',//输血申请时是否可从HIS系统中调出患者信息,是否可以录入修改患者血型?以"/"分隔,"/"前指可以调出患者信息时是否可以修改患者血型(Y可以修改N不可以修改),"/"后指不可以调出患者信息时是否可以录入全部和只能录入"未知"患者血型(Y可以录入全部N只能录入"未知")
|
'SQDSFKRLXGXX',//输血申请时是否可从HIS系统中调出患者信息,是否可以录入修改患者血型?以"/"分隔,"/"前指可以调出患者信息时是否可以修改患者血型(Y可以修改N不可以修改),"/"后指不可以调出患者信息时是否可以录入全部和只能录入"未知"患者血型(Y可以录入全部N只能录入"未知")
|
||||||
'JSSJSFXG', //申请扫描登记 录入时间是否允许修改
|
'JSSJSFXG', //申请扫描登记 录入时间是否允许修改
|
||||||
|
'BBSJRMRDLR', //标本送检人是否默认为当前登录人
|
||||||
]
|
]
|
||||||
|
|
||||||
const settingsStore = useSettingsStore()
|
const settingsStore = useSettingsStore()
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request'
|
|||||||
import useUserStore from '@/store/modules/user'
|
import useUserStore from '@/store/modules/user'
|
||||||
import useSettingsStore from '@/store/modules/settings'
|
import useSettingsStore from '@/store/modules/settings'
|
||||||
import usePermissionStore from '@/store/modules/permission'
|
import usePermissionStore from '@/store/modules/permission'
|
||||||
|
import { useDynamicTitle } from '@/utils/dynamicTitle'
|
||||||
NProgress.configure({ showSpinner: false })
|
NProgress.configure({ showSpinner: false })
|
||||||
|
|
||||||
const whiteList = ['/login', '/register']
|
const whiteList = ['/login', '/register']
|
||||||
@ -65,5 +65,6 @@ router.beforeEach((to, from, next) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
router.afterEach(() => {
|
router.afterEach(() => {
|
||||||
|
useDynamicTitle()
|
||||||
NProgress.done()
|
NProgress.done()
|
||||||
})
|
})
|
||||||
|
|||||||
@ -5,10 +5,7 @@ import useSettingsStore from '@/store/modules/settings'
|
|||||||
* 动态修改标题
|
* 动态修改标题
|
||||||
*/
|
*/
|
||||||
export function useDynamicTitle(): void {
|
export function useDynamicTitle(): void {
|
||||||
const settingsStore = useSettingsStore()
|
const settingsStore = useSettingsStore();
|
||||||
if (settingsStore.dynamicTitle) {
|
const baseTitle = settingsStore.appTitle || defaultSettings.title;
|
||||||
document.title = settingsStore.title + ' - ' + defaultSettings.title
|
document.title = baseTitle;
|
||||||
} else {
|
|
||||||
document.title = defaultSettings.title
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
428
src/views/blood/acceptSample/index.vue
Normal file
428
src/views/blood/acceptSample/index.vue
Normal file
@ -0,0 +1,428 @@
|
|||||||
|
/**
|
||||||
|
* @file index.vue
|
||||||
|
* @description: 标本接收
|
||||||
|
* @author: w
|
||||||
|
* @since: 2026-08-05
|
||||||
|
*/
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="box-container">
|
||||||
|
<el-form label-width="auto">
|
||||||
|
<div class="card-box" style="padding-bottom: 0;">
|
||||||
|
<div class="section-title">标本接收</div>
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本编号">
|
||||||
|
<DropdownTableSelect v-model="form.sampleNo" :tableData="[]" :columnList="columnList" tableWidth="500px"
|
||||||
|
labelField="sampleNo" :showSearch="false" @change="selectSample" @search="onSearch" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检人">
|
||||||
|
<SelectTable v-model:data="form.takeOver_Man" :tableData="userList" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="运送人">
|
||||||
|
<SelectTable v-model:data="form.sendPerson" :tableData="userList" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="接收时间">
|
||||||
|
<el-date-picker v-model="form.takeOver_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div class="line"></div>
|
||||||
|
<el-row :gutter="10" class="mt8">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本号">
|
||||||
|
<el-input v-model="bloodInfo.sample_No" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本用途">
|
||||||
|
<el-input v-model="obj[bloodInfo.purpose]" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="对应单号">
|
||||||
|
<el-input v-model="bloodInfo.relate_ApplyNo" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="来源科室">
|
||||||
|
<el-select v-model="bloodInfo.dept" disabled placeholder="">
|
||||||
|
<el-option v-for="item in dictData.ks" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="患者姓名">
|
||||||
|
<el-input v-model="bloodInfo.sample_Name" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="性别">
|
||||||
|
<el-select v-model="bloodInfo.sex" disabled placeholder="">
|
||||||
|
<el-option label="男" value="男" />
|
||||||
|
<el-option label="女" value="女" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mt8">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="采集护士">
|
||||||
|
<SelectTable v-model:data="bloodInfo.pick_Nurse" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="采集时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.pick_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检人">
|
||||||
|
<SelectTable v-model:data="bloodInfo.send_Nurse" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.send_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="接收人">
|
||||||
|
<SelectTable v-model:data="bloodInfo.takeOver_Man" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="接收时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.takeOver_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 申请单列表 -->
|
||||||
|
<div class="card-box table-box">
|
||||||
|
<el-form :form="searchForm">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="送检日期">
|
||||||
|
<div class="date-range">
|
||||||
|
<el-date-picker v-model="searchForm.stime" type="date" value-format="YYYY-MM-DD" placeholder="开始时间"
|
||||||
|
style="width: 47%" />
|
||||||
|
<span class="separator">-</span>
|
||||||
|
<el-date-picker v-model="searchForm.etime" type="date" value-format="YYYY-MM-DD" placeholder="结束时间"
|
||||||
|
style="width: 47%" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<el-form-item label="科室">
|
||||||
|
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<el-form-item label="标本编号">
|
||||||
|
<el-input v-model="searchForm.sampleNo" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="申请单状态">
|
||||||
|
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" clearable
|
||||||
|
placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div class="mb5">
|
||||||
|
<el-button type="primary" icon="Search" @click="searchHandle">查询</el-button>
|
||||||
|
<el-button type="danger" plain @click="cancelHandle">撤销标本接收</el-button>
|
||||||
|
<el-button type="danger" plain @click="thHandle">标本退回</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table_content">
|
||||||
|
<CustomTable :columns="columns" :data="tableData" :config="tableConfig" :enableColumnDrag="true"
|
||||||
|
:loading="loading" @column-drag-end="columnDeagEnd" @row-click="handleRowClick">
|
||||||
|
<template #deptId="{ row }">
|
||||||
|
{{ formatDict(row.Dept, 'ks') }}
|
||||||
|
</template>
|
||||||
|
<template #Purpose="{ row }">
|
||||||
|
{{ obj[row.Purpose] }}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #pickNurse="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.Pick_Nurse)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #sendNurse="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.Send_Nurse)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #takeOverMan="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.TakeOver_Man)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #sendperson="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.sendperson)?.label}}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #status="{ row }">
|
||||||
|
{{ formatDict(row.bill_stasus, 'billApplyStatus') }}
|
||||||
|
</template>
|
||||||
|
</CustomTable>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-dialog title="标本退回" v-model="thVisible" width="500px" :close-on-click-modal="false" @close="close">
|
||||||
|
<el-form :model="thForm" :rules="rules" ref="thFormRef" label-width="auto">
|
||||||
|
<el-form-item label="标本编号" prop="sampleNo">
|
||||||
|
<el-input v-model="thForm.sampleNo" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="退回人" prop="discard_person">
|
||||||
|
<SelectTable v-model:data="thForm.discard_person" :tableData="userList" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="退回原因" prop="discard_reason">
|
||||||
|
<el-input v-model="thForm.discard_reason" type="textarea" rows="3" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="thVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="thSubmit">确定</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { getDictData, formatDict, dictData, useCommonDict, useSysParam } from '@/hooks'
|
||||||
|
import { queryAcceptSampleList, queryAcceptSampleOneInfo, acceptSampleInfo, backSampleInfo, cancelSampleInfo } from '@/api/blood'
|
||||||
|
const { userList, getUserData, getServerTime, } = useCommonDict()
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import DropdownTableSelect from '@/components/DropdownTableSelect/index.vue'
|
||||||
|
const userInfo = useUserStore()
|
||||||
|
const { getParam } = useSysParam()
|
||||||
|
const form = ref({
|
||||||
|
takeOver_Man: '',
|
||||||
|
})
|
||||||
|
const thForm = ref({
|
||||||
|
discard_person: userInfo.name,
|
||||||
|
})
|
||||||
|
|
||||||
|
const rules = ref({
|
||||||
|
sampleNo: [
|
||||||
|
{ required: true, message: '请输入标本编号', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
discard_person: [
|
||||||
|
{ required: true, message: '请选择退回人', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
discard_reason: [
|
||||||
|
{ required: true, message: '请输入退回原因', trigger: 'blur' },
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
const thFormRef = useTemplateRef('thFormRef')
|
||||||
|
|
||||||
|
const thVisible = ref(false)
|
||||||
|
|
||||||
|
const columnList = [
|
||||||
|
{ label: '住院号', prop: 'beinhos_id', width: 100 },
|
||||||
|
{ label: '标本编号', prop: 'Sample_No', width: 140 },
|
||||||
|
{ label: '标本用途', prop: 'Purpose', }
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
const bloodInfo = ref({})
|
||||||
|
|
||||||
|
const searchForm = ref({
|
||||||
|
stime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
etime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
const tableData = ref([])
|
||||||
|
|
||||||
|
const columns = ref([
|
||||||
|
{ label: '序号', type: 'index', width: 40, visible: true, align: 'center' },
|
||||||
|
{ label: '住院号', prop: 'beinhos_id', visible: true, align: 'center', width: 100 },
|
||||||
|
{ label: '标本编号', prop: 'Sample_No', visible: true, align: 'center', width: 140 },
|
||||||
|
{ label: '标本用途', prop: 'Purpose', visible: true, align: 'center', slot: 'Purpose' },
|
||||||
|
{ label: '来源科室', prop: 'Dept', visible: true, align: 'center', slot: 'deptId', width: 100 },
|
||||||
|
{ label: '对应单号', prop: 'Relate_ApplyNo', visible: true, align: 'center', width: 140 },
|
||||||
|
{ label: 'ABO血型', prop: 'Blood_Type', visible: true, align: 'center', width: 80 },
|
||||||
|
{ label: 'Rh血型', prop: 'Rh_Blood_Type', visible: true, align: 'center', width: 60 },
|
||||||
|
{ label: '患者姓名', prop: 'Sample_Name', visible: true, align: 'center', },
|
||||||
|
{ label: '性别', prop: 'Sex', visible: true, align: 'center', width: 40 },
|
||||||
|
{ label: '年龄', prop: 'Age', visible: true, align: 'center', },
|
||||||
|
{ label: '出生日期', prop: 'Birthday', width: 100, align: 'center', visible: true, },
|
||||||
|
{ label: '采集护士', prop: 'Pick_Nurse', align: 'center', visible: true, slot: 'pickNurse' },
|
||||||
|
{ label: '采集时间', prop: 'Pick_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '送检人', prop: 'Send_Nurse', align: 'center', visible: true, slot: 'sendNurse' },
|
||||||
|
{ label: '送检时间', prop: 'Send_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '接收人', prop: 'TakeOver_Man', align: 'center', visible: true, slot: 'takeOverMan' },
|
||||||
|
{ label: '接收时间', prop: 'TakeOver_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '运送人', prop: 'sendperson', align: 'center', visible: true, slot: 'sendperson' },
|
||||||
|
{ label: '申请单状态', prop: 'bill_stasus', align: 'center', visible: true, slot: 'status' }
|
||||||
|
])
|
||||||
|
|
||||||
|
const tableConfig = ref({
|
||||||
|
border: true,
|
||||||
|
highlightCurrentRow: true,
|
||||||
|
height: '100%'
|
||||||
|
})
|
||||||
|
|
||||||
|
const obj = {
|
||||||
|
A: '输血',
|
||||||
|
B: '血型鉴定',
|
||||||
|
S: '治疗'
|
||||||
|
}
|
||||||
|
|
||||||
|
const columnDeagEnd = (data) => {
|
||||||
|
columns.value = data.columns
|
||||||
|
}
|
||||||
|
const selectRow = ref({})
|
||||||
|
|
||||||
|
const handleRowClick = (row) => {
|
||||||
|
selectRow.value = row
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectSample = (row) => {
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSearch = () => {
|
||||||
|
gettime()
|
||||||
|
acceptSampleInfo(form.value).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
queryAcceptSampleOneInfo({ sampleNo: form.value.sampleNo }).then(res => {
|
||||||
|
bloodInfo.value = res.data
|
||||||
|
})
|
||||||
|
form.value.sampleNo = ''
|
||||||
|
searchHandle()
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
form.value.sampleNo = ''
|
||||||
|
bloodInfo.value = {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchHandle = () => {
|
||||||
|
searchForm.value.stime = dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||||
|
searchForm.value.etime = dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||||
|
loading.value = true
|
||||||
|
queryAcceptSampleList(searchForm.value).then(res => {
|
||||||
|
tableData.value = res.data
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const cancelHandle = () => {
|
||||||
|
if (!selectRow.value.Sample_No) return ElMessage.warning('请选择标本')
|
||||||
|
ElMessageBox.confirm(`确定撤销标本${selectRow.value.Sample_No}接收吗?`, '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
cancelSampleInfo({ sampleNo: selectRow.value.Sample_No }).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
searchHandle()
|
||||||
|
selectRow.value.Sample_No = {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const thHandle = () => {
|
||||||
|
thVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const thSubmit = () => {
|
||||||
|
thFormRef.value.validate((valid: boolean) => {
|
||||||
|
if (valid) {
|
||||||
|
getServerTime().then(time => {
|
||||||
|
thForm.value.discard_date = time
|
||||||
|
})
|
||||||
|
|
||||||
|
backSampleInfo(thForm.value).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
close()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
thVisible.value = false
|
||||||
|
thForm.value = {
|
||||||
|
discard_person: userInfo.name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const gettime = () => {
|
||||||
|
getServerTime().then(time => {
|
||||||
|
form.value.takeOver_Date = time
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getDictData('ks', 'billApplyStatus', 'xylx')
|
||||||
|
getUserData()
|
||||||
|
getParam('BBSJRMRDLR') == 'Y' ? form.value.takeOver_Man = userInfo.name : ''
|
||||||
|
gettime()
|
||||||
|
searchHandle()
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.box-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-box {
|
||||||
|
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.table-box {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 10px;
|
||||||
|
min-height: 0;
|
||||||
|
|
||||||
|
.table_content {
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
height: 1px;
|
||||||
|
background: #ccc;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -10,46 +10,64 @@
|
|||||||
<!-- 顶部操作按钮栏 -->
|
<!-- 顶部操作按钮栏 -->
|
||||||
<div class="card-box">
|
<div class="card-box">
|
||||||
<el-button type="primary" plain @click="openJsHandle">检索</el-button>
|
<el-button type="primary" plain @click="openJsHandle">检索</el-button>
|
||||||
<el-button type="primary" plain>新增</el-button>
|
<el-button type="primary" plain @click="clearInfo">新增</el-button>
|
||||||
<el-button type="danger" plain>删除</el-button>
|
<el-button type="danger" plain :disabled="!xkCheckBloodtype.bill_no" @click="delApply">删除</el-button>
|
||||||
<el-button type="success" plain>保存</el-button>
|
<el-button type="success" plain :disabled="form.bill_stasus && form.bill_stasus == 'F'" :loading="saveLoading"
|
||||||
|
@click="saveApplyInfo">保存</el-button>
|
||||||
<el-button type="warning" plain>打印</el-button>
|
<el-button type="warning" plain>打印</el-button>
|
||||||
<el-button plain>血型复核历史查询</el-button>
|
<el-button plain @click="openHistoryHandle">血型复核历史查询</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-form label-width="auto">
|
<el-form label-width="auto" :disabled="form.bill_stasus && form.bill_stasus == 'F'">
|
||||||
<!-- 主卡片面板 -->
|
<!-- 主卡片面板 -->
|
||||||
<div class="card-box">
|
<div class="card-box">
|
||||||
|
<div class="status" v-show="form.bill_stasus"
|
||||||
|
:style="{ borderColor: getBillStatusInfo(form.bill_stasus).color, color: getBillStatusInfo(form.bill_stasus).color }">
|
||||||
|
{{ getBillStatusInfo(form.bill_stasus).label }}
|
||||||
|
</div>
|
||||||
<!-- 顶部复选框行 -->
|
<!-- 顶部复选框行 -->
|
||||||
<div class="checkbox-row">
|
<div class="checkbox-row">
|
||||||
<el-checkbox v-model="form.urgent">紧急</el-checkbox>
|
<el-checkbox v-model="form.urgent">紧急</el-checkbox>
|
||||||
<el-checkbox v-model="form.urgentMatch">是否紧急配血</el-checkbox>
|
<el-checkbox v-model="form.urgentMatch">是否紧急配血</el-checkbox>
|
||||||
<el-checkbox v-model="form.specialBlood">是否特殊血型</el-checkbox>
|
<el-checkbox v-model="form.specialBlood" @change="">是否特殊血型</el-checkbox>
|
||||||
<el-checkbox v-model="form.autoPrint">保存后打印</el-checkbox>
|
<el-checkbox v-model="form.autoPrint">保存后打印</el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="section-title">
|
||||||
|
<div> 申请信息 </div>
|
||||||
|
<div v-show="xkCheckBloodtype.bill_no">
|
||||||
|
血型复核单号:{{ xkCheckBloodtype.bill_no }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<div class="section-title">申请信息</div>
|
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="申请单号">
|
<el-form-item label="申请单号">
|
||||||
<DropdownTableSelect v-model="form.applyBillNo" :column-list="applyColumns" labelField="applyBillNo"
|
<DropdownTableSelect v-model="form.bill_no" :column-list="applyColumns" labelField="bill_no"
|
||||||
:table-data="applyTableData" @open="loadApplyData" @search="handleSearch" />
|
:showSearch="false" tableWidth="550px" :table-data="applyTableData" @open="loadApplyData"
|
||||||
|
@search="onSearch" @change="onSearch">
|
||||||
|
<template #dept_id="{ row }">
|
||||||
|
{{ formatDict(row.dept_id, 'ks') }}
|
||||||
|
</template>
|
||||||
|
<template #blood_breed="{ row }">
|
||||||
|
{{bloodBreed.find(v => v.value == row.blood_breed)?.label}}
|
||||||
|
</template>
|
||||||
|
</DropdownTableSelect>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="申请日期">
|
<el-form-item label="申请日期">
|
||||||
<el-date-picker v-model="form.applyDate" type="datetime" placeholder="0000-00-00 00:00"
|
<el-date-picker v-model="form.apply_date" type="datetime" placeholder=""
|
||||||
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" readonly />
|
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="姓 名">
|
<el-form-item label="姓 名">
|
||||||
<el-input v-model="form.patientName" readonly />
|
<el-input v-model="form.patient_name" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="血型">
|
<el-form-item label="血型">
|
||||||
<el-input v-model="form.bloodType" readonly />
|
<el-input v-model="form.abo_type" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -57,22 +75,22 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="性 别">
|
<el-form-item label="性 别">
|
||||||
<el-input v-model="form.patient_sex" readonly />
|
<el-input v-model="form.patient_sex" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="年 龄">
|
<el-form-item label="年 龄">
|
||||||
<el-input v-model="form.age" readonly />
|
<el-input v-model="form.age" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="住院号/ID号">
|
<el-form-item label="住院号/ID号">
|
||||||
<el-input v-model="form.inHospitalNo" readonly />
|
<el-input v-model="form.beinhos_id" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="Rh(D)">
|
<el-form-item label="Rh(D)">
|
||||||
<el-input v-model="form.rhd" readonly />
|
<el-input v-model="form.rh_type" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -80,18 +98,17 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="病 区">
|
<el-form-item label="病 区">
|
||||||
<el-input v-model="form.ward" readonly />
|
<SelectTable v-model:data="form.zone_id" :tableData="dictData.bq" placeholder="" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="床位号">
|
<el-form-item label="床位号">
|
||||||
<el-input v-model="form.bedNo" readonly />
|
<el-input v-model="form.patient_bed" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="科 室">
|
<el-form-item label="科 室">
|
||||||
<el-input v-model="form.dept_id" readonly />
|
<SelectTable v-model:data="form.dept_id" :tableData="dictData.ks" placeholder="" disabled />
|
||||||
<!-- <SelectTable v-model:data="form.dept_id" :tableData="dictData.ks" placeholder="" disabled /> -->
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -99,13 +116,13 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="临床诊断">
|
<el-form-item label="临床诊断">
|
||||||
<el-input v-model="form.diagnosis" readonly />
|
<el-input v-model="form.diagnoses" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="预定输血日期">
|
<el-form-item label="预定输血日期">
|
||||||
<el-date-picker v-model="form.planTransDate" type="datetime" placeholder="0000-00-00 00:00"
|
<el-date-picker v-model="form.use1_date" type="datetime" placeholder=""
|
||||||
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" readonly />
|
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -115,25 +132,46 @@
|
|||||||
|
|
||||||
<!-- 病史复选框行 -->
|
<!-- 病史复选框行 -->
|
||||||
<div class="checkbox-row">
|
<div class="checkbox-row">
|
||||||
<el-checkbox v-model="form.transReactionHis">输血反应史</el-checkbox>
|
<el-checkbox :model-value="form.reaction_history == 'Y'">输血反应史</el-checkbox>
|
||||||
<el-checkbox v-model="form.transHis">输血史</el-checkbox>
|
<el-checkbox :model-value="form.transfuse_history == 'Y'">输血史</el-checkbox>
|
||||||
<el-checkbox v-model="form.deliveryHis">分娩史</el-checkbox>
|
<el-checkbox :model-value="form.parturition_history == 'Y'">分娩史</el-checkbox>
|
||||||
<el-checkbox v-model="form.pregnancyHis">妊娠史</el-checkbox>
|
<el-checkbox :model-value="form.gestation_history == 'Y'">妊娠史</el-checkbox>
|
||||||
<el-checkbox v-model="form.matchHis">配型史</el-checkbox>
|
<el-checkbox :model-value="form.match_history == 'Y'">配型史</el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 血液品种表格 -->
|
<!-- 血液品种表格 -->
|
||||||
<el-table :data="bloodTableData" border height="150">
|
<el-table :data="bloodTableData" border height="150">
|
||||||
<el-table-column label="血液品种" prop="bloodKind" align="center" />
|
<el-table-column prop="blood_breed" label="血液品种" align="center" width="150">
|
||||||
<el-table-column label="申请血量" prop="applyNum" align="center" />
|
<template #default="{ row }">
|
||||||
<el-table-column label="单位" prop="unit" align="center" />
|
{{bloodBreed.find(v => v.value == row.blood_breed)?.label}}
|
||||||
<el-table-column label="申请血型" prop="applyBloodType" align="center" />
|
</template>
|
||||||
<el-table-column label="替代血液品种" prop="replaceBloodKind" align="center" />
|
</el-table-column>
|
||||||
<el-table-column label="输血目的" prop="transPurpose" align="center" />
|
<el-table-column prop="blood_num" label="申请血量" align="center" />
|
||||||
<el-table-column label="输血指征" prop="transIndicate" align="center" />
|
<el-table-column prop="unit" label="单位" align="center" />
|
||||||
<el-table-column label="实际用血量" prop="realNum" align="center" />
|
<el-table-column prop="apply_bloodtype" label="申请血型" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ formatDict(row.apply_bloodtype, 'abotype') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="replace_bloodbreed" label="替代血液品种" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{bloodBreed.find(v => v.value == row.replace_bloodbreed)?.label}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="intent" label="输血目的" align="center" width="300">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ formatDict(row.intent, 'sxmd') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="causalis" label="输血指征" align="center" width="300">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ formatDict(row.causalis, 'sxzz') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="实际用血量" prop="ops_fact_use" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-box">
|
<div class="card-box">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
@ -142,27 +180,39 @@
|
|||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="ABO正定复核">
|
<el-form-item label="ABO正定复核">
|
||||||
<div class="input-btn-row">
|
<div class="input-btn-row">
|
||||||
<el-input v-model="form.aboPositiveCheck" />
|
<el-select v-model="xkCheckBloodtype.check_abo" placeholder="">
|
||||||
<el-button type="primary" plain>清空</el-button>
|
<el-option v-for="item in dictData.abotype" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<!-- <el-button type="primary" plain>清空</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="ABO反定复核">
|
<el-form-item label="ABO反定复核">
|
||||||
<div class="input-btn-row">
|
<div class="input-btn-row">
|
||||||
<el-input v-model="form.aboReverseCheck" />
|
<el-select v-model="xkCheckBloodtype.check_fabo" placeholder="">
|
||||||
<el-button type="primary" plain>清空</el-button>
|
<el-option v-for="item in dictData.abotype" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<!-- <el-button type="primary" plain>清空</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="ABO复核结果">
|
<el-form-item label="ABO复核结果">
|
||||||
<el-input v-model="form.aboResult" />
|
<el-select v-model="xkCheckBloodtype.affirm_abo" placeholder="">
|
||||||
|
<el-option v-for="item in dictData.abotype" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="Rh(D)复核结果">
|
<el-form-item label="Rh(D)复核结果">
|
||||||
<el-input v-model="form.rhdResult" />
|
<el-select v-model="xkCheckBloodtype.check_rh" placeholder="">
|
||||||
|
<el-option v-for="item in dictData.rhtype" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -170,45 +220,60 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="抗筛I">
|
<el-form-item label="抗筛I">
|
||||||
<el-input v-model="form.antiScreen1" />
|
<el-select v-model="xkCheckBloodtype.antibody1" placeholder="">
|
||||||
|
<el-option v-for="item in listData" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="抗筛II">
|
<el-form-item label="抗筛II">
|
||||||
<el-input v-model="form.antiScreen2" />
|
<el-select v-model="xkCheckBloodtype.antibody2" placeholder="">
|
||||||
|
<el-option v-for="item in listData" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="抗体筛选结果">
|
<el-form-item label="抗筛III">
|
||||||
<el-input v-model="form.antiResult" />
|
<el-select v-model="xkCheckBloodtype.antibody3" placeholder="">
|
||||||
|
<el-option v-for="item in listData" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="复检人">
|
<el-form-item label="复检人">
|
||||||
<el-input v-model="form.recheckUser" />
|
<SelectTable v-model:data="xkCheckBloodtype.check_person" :tableData="userList" placeholder=""
|
||||||
|
:disabled="form.bill_stasus && form.bill_stasus == 'F'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="抗筛III">
|
<el-form-item label="抗体筛选结果">
|
||||||
<el-input v-model="form.antiScreen3" />
|
<el-select v-model="xkCheckBloodtype.affirm_antibody" placeholder="">
|
||||||
|
<el-option v-for="item in dictData.ktsx" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="抗人球蛋白试验">
|
<el-form-item label="抗人球蛋白试验">
|
||||||
<el-input v-model="form.globulinTest" />
|
<el-select v-model="xkCheckBloodtype.proteid_test" placeholder="">
|
||||||
|
<el-option v-for="item in listData" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="血小板抗体检测">
|
<el-form-item label="血小板抗体检测">
|
||||||
<el-input v-model="form.plateTest" />
|
<el-select v-model="xkCheckBloodtype.plt_test" placeholder="">
|
||||||
|
<el-option v-for="item in listData" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="检验人">
|
<el-form-item label="检验人">
|
||||||
<el-input v-model="form.testUser" />
|
<SelectTable v-model:data="xkCheckBloodtype.test_person" :tableData="userList" placeholder=""
|
||||||
|
:disabled="form.bill_stasus && form.bill_stasus == 'F'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -216,17 +281,19 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="备 注">
|
<el-form-item label="备 注">
|
||||||
<el-input v-model="form.remark" />
|
<el-input v-model="xkCheckBloodtype.remark" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" v-if="form.specialBlood">
|
<el-col :span="6" v-if="form.specialBlood">
|
||||||
<el-form-item label="亚 型" class="redText">
|
<el-form-item label="亚 型" class="redText">
|
||||||
<el-input v-model="form.remark" />
|
<el-select v-model="xkCheckBloodtype.sub_Blood" placeholder="">
|
||||||
|
<el-option v-for="item in dictData.subgroup" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="检验时间">
|
<el-form-item label="检验时间">
|
||||||
<el-date-picker v-model="form.testTime" type="datetime" style="width:100%" />
|
<el-date-picker v-model="xkCheckBloodtype.test_date" type="datetime" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -236,8 +303,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
<el-dialog title="血型复核单检索" v-model="visible" width="1200px" :close-on-click-modal="false" :draggable="true"
|
||||||
<el-dialog title="血型复核单检索" v-model="visible" width="1200px" :close-on-click-modal="false" @closed="handleClose">
|
@closed="handleClose">
|
||||||
<div class="mb10">
|
<div class="mb10">
|
||||||
<el-button type="primary" @click="handleSearch">检索</el-button>
|
<el-button type="primary" @click="handleSearch">检索</el-button>
|
||||||
<el-button type="success" @click="handleConfirm">确认</el-button>
|
<el-button type="success" @click="handleConfirm">确认</el-button>
|
||||||
@ -245,7 +312,7 @@
|
|||||||
<!-- 检索条件区 -->
|
<!-- 检索条件区 -->
|
||||||
<el-form :model="searchForm" label-width="auto" class="search-form">
|
<el-form :model="searchForm" label-width="auto" class="search-form">
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="10">
|
<el-col :span="9">
|
||||||
<el-form-item label="检索时间">
|
<el-form-item label="检索时间">
|
||||||
<div class="date-range">
|
<div class="date-range">
|
||||||
<el-date-picker v-model="searchForm.stime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
<el-date-picker v-model="searchForm.stime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||||
@ -258,97 +325,167 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
<el-form-item label="血型复核单">
|
<el-form-item label="血型复核单">
|
||||||
<el-input v-model="searchForm.bill_no" placeholder="" />
|
<el-input v-model="searchForm.billNo" placeholder="" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="10">
|
<el-col :span="9">
|
||||||
<el-form-item label="申请单号">
|
<el-form-item label="申请单号">
|
||||||
<el-input v-model="searchForm.bill_no" placeholder="" />
|
<el-input v-model="searchForm.applyNo" placeholder="" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
<el-form-item label="住院号/ID号">
|
<el-form-item label="住院号/ID号">
|
||||||
<el-input v-model="searchForm.beinhos_id" placeholder="" />
|
<el-input v-model="searchForm.beinhos_id" placeholder="" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<!-- 结果表格区 -->
|
<!-- 结果表格区 -->
|
||||||
<el-table :data="tableData" border height="350" @row-click="handleRowClick" highlight-current-row>
|
<el-table :data="tableData" border height="450" @row-click="handleRowClick" highlight-current-row
|
||||||
|
show-overflow-tooltip>
|
||||||
<el-table-column prop="bill_no" label="配血单号" align="center" width="150" />
|
<el-table-column prop="bill_no" label="配血单号" align="center" width="150" />
|
||||||
<el-table-column prop="bill_no" label="申请单号" align="center" width="150" />
|
<el-table-column prop="apply_no" label="申请单号" align="center" width="150" />
|
||||||
<el-table-column prop="bill_no" label="住院号/ID号" align="center" width="150" />
|
<el-table-column prop="beinhos_id" label="住院号/ID号" align="center" width="120" />
|
||||||
<el-table-column prop="patient_name" label="患者姓名" align="center" />
|
<el-table-column prop="patient_name" label="患者姓名" align="center" />
|
||||||
<el-table-column prop="dept_id" label="科室" align="center">
|
<el-table-column prop="dept_id" label="科室" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ formatDict(scope.row.dept_id, 'ks') }}
|
{{ formatDict(scope.row.dept_id, 'ks') }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="assess_data" label="检验人" align="center" />
|
<el-table-column prop="test_person" label="检验人" align="center">
|
||||||
<el-table-column prop="assess_data" label="检验日期" width="150" align="center" />
|
<template #default="scope">
|
||||||
<el-table-column prop="beinhos_id" label="ABO血型" align="center" />
|
{{userList.find(item => item.value == scope.row.test_person)?.label}}
|
||||||
<el-table-column prop="assess_person" label="Rh(D)复核" align="center" />
|
</template>
|
||||||
<el-table-column prop="assess_person" label="抗体筛选" align="center" />
|
</el-table-column>
|
||||||
<el-table-column prop="assess_person" label="单据状态" align="center" />
|
<el-table-column prop="test_date" label="检验日期" width="150" align="center" />
|
||||||
|
<el-table-column prop="affirm_abo" label="ABO血型" align="center" />
|
||||||
|
<el-table-column prop="check_rh" label="Rh(D)复核" align="center" />
|
||||||
|
<el-table-column prop="affirm_antibody" label="抗体筛选" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatDict(scope.row.affirm_antibody, 'ktsx') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="bill_status" label="单据状态" align="center" width="120">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ status[row.bill_status] }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 血型复核历史 -->
|
||||||
|
<el-dialog title="血型复核历史" v-model="visibleHistory" width="1200px" :close-on-click-modal="false" :draggable="true"
|
||||||
|
@closed="historyClose">
|
||||||
|
<div class="mb10">
|
||||||
|
<el-button type="primary" @click="getHistoryList">检索</el-button>
|
||||||
|
</div>
|
||||||
|
<!-- 检索条件区 -->
|
||||||
|
<el-form :model="historyForm" label-width="auto" class="search-form">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="住院号/ID号">
|
||||||
|
<el-input v-model="historyForm.beinhos_id" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="患者姓名">
|
||||||
|
<el-input v-model="historyForm.patient_name" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 结果表格区 -->
|
||||||
|
<el-table :data="historyTableData" border height="450" highlight-current-row show-overflow-tooltip>
|
||||||
|
<el-table-column prop="beinhos_id" label="住院号/ID号" align="center" width="120" />
|
||||||
|
<el-table-column prop="patient_name" label="患者姓名" align="center" />
|
||||||
|
<el-table-column prop="dept_id" label="科室" align="center" width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatDict(scope.row.dept_id, 'ks') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="affirm_abo" label="ABO复核" align="center" />
|
||||||
|
<el-table-column prop="check_rh" label="Rh(D)复核" align="center" />
|
||||||
|
<el-table-column prop="Sub_Blood" label="亚型" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatDict(scope.row.Sub_Blood, 'subgroup') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="affirm_antibody" label="抗筛结论" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatDict(scope.row.affirm_antibody, 'ktsx') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="test_person" label="检验人" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{userList.find(item => item.value == scope.row.test_person)?.label}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="test_date" label="检验日期" width="150" align="center" />
|
||||||
|
<el-table-column prop="apply_no" label="申请单号" align="center" width="150" />
|
||||||
|
</el-table>
|
||||||
|
<pagination v-show="total > 0" :total="total" v-model:page="historyForm.pageNum"
|
||||||
|
v-model:limit="historyForm.pageSize" @pagination="getHistoryList" />
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getDictData, formatDict, dictData } from '@/hooks'
|
import { getDictData, formatDict, dictData, useCommonDict } from '@/hooks'
|
||||||
import DropdownTableSelect, { type TableColumnItem, type TableRowItem } from '@/components/DropdownTableSelect/index.vue'
|
import DropdownTableSelect, { type TableColumnItem, type TableRowItem } from '@/components/DropdownTableSelect/index.vue'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
|
import { queryBloodOne, queryCheckBloodTypeInfo, saveData, jsqueryList, delCheckBloodTypeInfo, queryOneInfo, queryHistoryInfo } from '@/api/blood'
|
||||||
|
|
||||||
const visible = ref(false)
|
const { userList, getUserData, getServerTime, bloodBreed, getBloodList, } = useCommonDict()
|
||||||
const tableData = ref([])
|
import useUserStore from '@/store/modules/user'
|
||||||
const searchForm = ref({})
|
import { ElMessage } from 'element-plus'
|
||||||
|
import { ElMessageBox } from 'element-plus'
|
||||||
|
const userInfo = useUserStore()
|
||||||
|
const xkCheckBloodtype = ref({
|
||||||
|
test_person: userInfo.name,
|
||||||
|
check_person: userInfo.name,
|
||||||
|
test_date: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const listData = ref([
|
||||||
|
{ label: '阴性', value: '-' },
|
||||||
|
{ label: '阳性', value: '+' },
|
||||||
|
{ label: '未查', value: 'N' },
|
||||||
|
])
|
||||||
|
const status = {
|
||||||
|
'A': '初登',
|
||||||
|
'B': '已配血',
|
||||||
|
'C': '已发血',
|
||||||
|
}
|
||||||
|
|
||||||
|
const saveLoading = ref(false)
|
||||||
|
|
||||||
// 下拉申请单列配置
|
// 下拉申请单列配置
|
||||||
const applyColumns = ref<TableColumnItem[]>([
|
const applyColumns = ref<TableColumnItem[]>([
|
||||||
{ label: '申请单号', prop: 'applyBillNo' },
|
{ label: '申请单号', prop: 'bill_no' },
|
||||||
{ label: '患者姓名', prop: 'patientName' },
|
{ label: '患者姓名', prop: 'patient_name' },
|
||||||
{ label: '科室', prop: 'dept' },
|
{ label: '科室', prop: 'dept_id', slotName: 'dept_id' },
|
||||||
{ label: '申请品种', prop: 'bloodKind' }
|
{ label: '申请品种', prop: 'blood_breed', slotName: 'blood_breed' }
|
||||||
])
|
])
|
||||||
const applyTableData = ref<TableRowItem[]>([])
|
const applyTableData = ref<TableRowItem[]>([])
|
||||||
|
|
||||||
// 下拉面板展开加载申请单数据
|
// 下拉面板展开加载申请单数据
|
||||||
const loadApplyData = () => {
|
const loadApplyData = () => {
|
||||||
console.log('open');
|
console.log('open');
|
||||||
|
queryCheckBloodTypeInfo().then(res => {
|
||||||
// 申请单数据
|
applyTableData.value = res.data || []
|
||||||
applyTableData.value = [
|
})
|
||||||
{ applyBillNo: 'SX20260618001', patientName: '张三', dept: '骨科', bloodKind: '悬浮红细胞' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const openJsHandle = () => {
|
|
||||||
visible.value = true
|
|
||||||
}
|
|
||||||
const handleClose = () => {
|
|
||||||
searchForm.value = {}
|
|
||||||
visible.value = false
|
|
||||||
}
|
|
||||||
const handleConfirm = () => {
|
|
||||||
visible.value = false
|
|
||||||
}
|
|
||||||
const handleRowClick = (row: TableRowItem) => {
|
|
||||||
console.log("🚀 ~ handleRowClick ~ row:", row)
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleSearch = (val: string) => {
|
|
||||||
console.log("🚀 ~ handleSearch ~ val:", val)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const form = ref({})
|
||||||
// 血液表格行类型
|
// 血液表格行类型
|
||||||
interface BloodTableRow {
|
interface BloodTableRow {
|
||||||
bloodKind: string
|
bloodKind: string
|
||||||
@ -362,13 +499,183 @@ interface BloodTableRow {
|
|||||||
}
|
}
|
||||||
const bloodTableData = ref<BloodTableRow[]>([])
|
const bloodTableData = ref<BloodTableRow[]>([])
|
||||||
|
|
||||||
// 整体表单
|
const visible = ref(false)
|
||||||
const form = ref({})
|
const tableData = ref([])
|
||||||
|
const searchForm = ref({})
|
||||||
|
const selectedRow = ref({})
|
||||||
|
const openJsHandle = () => {
|
||||||
|
handleSearch()
|
||||||
|
visible.value = true
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
searchForm.value = {}
|
||||||
|
visible.value = false
|
||||||
|
}
|
||||||
|
const handleConfirm = () => {
|
||||||
|
if (!selectedRow.value.bill_no) return ElMessage.warning('请选择血型复核单')
|
||||||
|
visible.value = false
|
||||||
|
queryOneInfo({ billNo: selectedRow.value.bill_no, applyNo: selectedRow.value.apply_no }).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
form.value = res.data.patientInfoList[0] || {}
|
||||||
|
bloodTableData.value = res.data.xkTransfuseApplyBloodbreedList || []
|
||||||
|
xkCheckBloodtype.value = res.data.xkCheckBloodtype || {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleRowClick = (row: TableRowItem) => {
|
||||||
|
selectedRow.value = row
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSearch = () => {
|
||||||
|
searchForm.value.stime = dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||||
|
searchForm.value.etime = dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||||
|
jsqueryList(searchForm.value).then(res => {
|
||||||
|
tableData.value = res.data || []
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const visibleHistory = ref(false)
|
||||||
|
const historyForm = ref({
|
||||||
|
pageSize: 20,
|
||||||
|
pageNum: 1
|
||||||
|
})
|
||||||
|
const total = ref(0)
|
||||||
|
const historyTableData = ref([])
|
||||||
|
const openHistoryHandle = () => {
|
||||||
|
historyForm.value.beinhos_id = form.value.beinhos_id
|
||||||
|
getHistoryList()
|
||||||
|
visibleHistory.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const historyClose = () => {
|
||||||
|
historyForm.value = {
|
||||||
|
pageSize: 20,
|
||||||
|
pageNum: 1
|
||||||
|
}
|
||||||
|
visibleHistory.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const getHistoryList = () => {
|
||||||
|
queryHistoryInfo(historyForm.value).then(res => {
|
||||||
|
historyTableData.value = res.rows
|
||||||
|
total.value = res.total
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const clearInfo = () => {
|
||||||
|
form.value = {}
|
||||||
|
bloodTableData.value = []
|
||||||
|
xkCheckBloodtype.value = {
|
||||||
|
test_person: userInfo.name,
|
||||||
|
check_person: userInfo.name,
|
||||||
|
test_date: '',
|
||||||
|
}
|
||||||
|
getTime()
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSearch = () => {
|
||||||
|
queryBloodOne({ billNo: form.value.bill_no }).then(res => {
|
||||||
|
form.value = res.data.patientInfoList[0] || {}
|
||||||
|
bloodTableData.value = res.data.xkTransfuseApplyBloodbreedList || []
|
||||||
|
xkCheckBloodtype.value.check_abo = form.value.abo_type
|
||||||
|
xkCheckBloodtype.value.check_fabo = form.value.abo_type
|
||||||
|
xkCheckBloodtype.value.affirm_abo = form.value.abo_type
|
||||||
|
xkCheckBloodtype.value.check_rh = form.value.rh_type
|
||||||
|
xkCheckBloodtype.value.antibody1 = 'N'
|
||||||
|
xkCheckBloodtype.value.antibody2 = 'N'
|
||||||
|
xkCheckBloodtype.value.antibody3 = 'N'
|
||||||
|
xkCheckBloodtype.value.affirm_antibody = 'N'
|
||||||
|
getTime()
|
||||||
|
|
||||||
|
if (form.value.rh_type == '-') {
|
||||||
|
// 阴性弹出框提示
|
||||||
|
ElMessageBox.alert(`请注意:Rh(D)阴性血液!`, '提示', { type: 'warning' })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const delApply = () => {
|
||||||
|
if (!xkCheckBloodtype.value.bill_no) return ElMessage.warning('请选择血型复核单')
|
||||||
|
ElMessageBox.confirm(`是否确认删除${xkCheckBloodtype.value.bill_no}?`, '提示', { type: 'warning' }).then(() => {
|
||||||
|
delCheckBloodTypeInfo({ billNo: xkCheckBloodtype.value.bill_no }).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
clearInfo()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 保存信息
|
||||||
|
const saveApplyInfo = () => {
|
||||||
|
saveLoading.value = true
|
||||||
|
if (!form.value.bill_no) return ElMessage.error('请选择申请单信息')
|
||||||
|
const flag = form.value.abo_type == xkCheckBloodtype.value.affirm_abo && form.value.rh_type == xkCheckBloodtype.value.check_rh
|
||||||
|
const data = {
|
||||||
|
flag: flag ? 1 : 0,
|
||||||
|
xkCheckBloodtype: {
|
||||||
|
...xkCheckBloodtype.value,
|
||||||
|
apply_no: form.value.bill_no,
|
||||||
|
beinhos_id: form.value.beinhos_id,
|
||||||
|
patient_name: form.value.patient_name,
|
||||||
|
dept_id: form.value.dept_id,
|
||||||
|
input_person: userInfo.name,
|
||||||
|
bill_sort: 'C',
|
||||||
|
bill_status: 'A'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if (flag) {
|
||||||
|
saveData(data).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
clearInfo()
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
saveLoading.value = false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ElMessageBox.confirm(`血型复核结果与申请单的血型不一致,是否将血型复核结果更新到输血申请信息表中?`, '提示', { type: 'warning' }).then(() => {
|
||||||
|
saveData(data).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success(res.msg)
|
||||||
|
clearInfo()
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
saveLoading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const getBillStatusInfo = (code: string) => {
|
||||||
|
const statusList = dictData.value?.billApplyStatus ?? []
|
||||||
|
const target = statusList.find(item => item.value == code)
|
||||||
|
if (target) {
|
||||||
|
return { label: target.label, color: target.remark }
|
||||||
|
}
|
||||||
|
|
||||||
|
return { label: '未审核', color: '#909399' }
|
||||||
|
}
|
||||||
|
|
||||||
|
const getTime = () => {
|
||||||
|
getServerTime().then(time => {
|
||||||
|
xkCheckBloodtype.value.test_date = time
|
||||||
|
xkCheckBloodtype.value.input_date = time
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getDictData('ks', 'bq', 'abotype', 'rhtype', 'sxmd', 'sxzz', 'billApplyStatus', 'subgroup', 'ktsx')
|
||||||
|
getUserData()
|
||||||
|
getBloodList()
|
||||||
|
getTime()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.checkbox-row {
|
.checkbox-row {
|
||||||
margin-bottom: 10px;
|
|
||||||
padding-left: 110px;
|
padding-left: 110px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,6 +684,22 @@ const form = ref({})
|
|||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-box {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.status {
|
||||||
|
position: absolute;
|
||||||
|
top: 100px;
|
||||||
|
right: 100px;
|
||||||
|
color: #409eff;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
border: 2px solid #409eff;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.redText {
|
.redText {
|
||||||
:deep(.el-form-item__label) {
|
:deep(.el-form-item__label) {
|
||||||
color: red;
|
color: red;
|
||||||
@ -387,6 +710,7 @@ const form = ref({})
|
|||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.el-input {
|
.el-input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="box-container">
|
<div class="box-container">
|
||||||
<el-form label-width="auto">
|
<el-form label-width="auto">
|
||||||
<div class="card-box">
|
<div class="card-box" style="padding-bottom: 0;">
|
||||||
<div class="section-title">申请单扫描</div>
|
<div class="section-title">申请单扫描</div>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
@ -11,7 +11,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="3">
|
<el-col :span="3">
|
||||||
<el-form-item label="录入人">
|
<el-form-item label="录入人">
|
||||||
<SelectTable v-model:data="form.input_person" :tableData="userList" placeholder="" />
|
<SelectTable v-model:data="form.input_person" :tableData="userList" placeholder="" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
@ -144,7 +144,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="申请单状态" clearable>
|
<el-form-item label="申请单状态">
|
||||||
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" clearable
|
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" clearable
|
||||||
placeholder="" />
|
placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -313,9 +313,11 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
min-height: 0;
|
||||||
|
|
||||||
.table_content {
|
.table_content {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -102,7 +102,11 @@
|
|||||||
<el-form-item label="评估单" prop="assess_bill_no">
|
<el-form-item label="评估单" prop="assess_bill_no">
|
||||||
<DropdownTableSelect v-model="xkTransfuseApply.assess_bill_no" :columnList="pgcolumnList"
|
<DropdownTableSelect v-model="xkTransfuseApply.assess_bill_no" :columnList="pgcolumnList"
|
||||||
:tableData="pgList" tableWidth="700px" labelField="bill_no" :showSearch="false" @open="getPgList"
|
:tableData="pgList" tableWidth="700px" labelField="bill_no" :showSearch="false" @open="getPgList"
|
||||||
:readonly="true" @change="getPgInfo" />
|
:readonly="true" @change="getPgInfo">
|
||||||
|
<template #assess_person="{ row }">
|
||||||
|
{{userList.find(v => v.value == row.assess_person)?.label}}
|
||||||
|
</template>
|
||||||
|
</DropdownTableSelect>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
@ -643,7 +647,7 @@ const pgcolumnList = ref([
|
|||||||
{ label: '住院号', prop: 'beinhos_id' },
|
{ label: '住院号', prop: 'beinhos_id' },
|
||||||
{ label: '姓名', prop: 'patient_name', width: 100 },
|
{ label: '姓名', prop: 'patient_name', width: 100 },
|
||||||
{ label: '评估日期(24h内有效)', prop: 'assess_data', width: 200 },
|
{ label: '评估日期(24h内有效)', prop: 'assess_data', width: 200 },
|
||||||
{ label: '评估人', prop: 'assess_person', width: 100 },
|
{ label: '评估人', prop: 'assess_person', width: 100, slotName: 'assess_person' },
|
||||||
])
|
])
|
||||||
|
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
|||||||
@ -44,7 +44,7 @@
|
|||||||
<el-button type="warning" plain>打印</el-button>
|
<el-button type="warning" plain>打印</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CustomTable :data="tableData" :columns="columns" :config="config" @row-click="rowClick"
|
<CustomTable :data="tableData" :columns="columns" :config="config" @row-click="rowClick" :loading="loading"
|
||||||
@column-drag-end="ColumnDragEnd" :enableColumnDrag="true">
|
@column-drag-end="ColumnDragEnd" :enableColumnDrag="true">
|
||||||
<template #dept_id="{ row }">
|
<template #dept_id="{ row }">
|
||||||
{{ formatDict(row.dept_id, 'ks') }}
|
{{ formatDict(row.dept_id, 'ks') }}
|
||||||
@ -101,6 +101,7 @@ const searchForm = ref({
|
|||||||
// 选中行
|
// 选中行
|
||||||
const selectedRow = ref({})
|
const selectedRow = ref({})
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
// 表格数据
|
// 表格数据
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
|
||||||
@ -143,8 +144,11 @@ const rowClick = (row) => {
|
|||||||
const onSearch = () => {
|
const onSearch = () => {
|
||||||
searchForm.value.stime = dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
searchForm.value.stime = dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||||
searchForm.value.etime = dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
searchForm.value.etime = dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||||
|
loading.value = true
|
||||||
approvalQueryList(searchForm.value).then((res) => {
|
approvalQueryList(searchForm.value).then((res) => {
|
||||||
tableData.value = res.data
|
tableData.value = res.data
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 科主任核准
|
// 科主任核准
|
||||||
|
|||||||
@ -99,9 +99,11 @@ import { getCodeImg, getInfo, getLocalconfig, login } from "@/api/login";
|
|||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { encrypt, decrypt } from "@/utils/jsencrypt";
|
import { encrypt, decrypt } from "@/utils/jsencrypt";
|
||||||
import useUserStore from '@/store/modules/user';
|
import useUserStore from '@/store/modules/user';
|
||||||
|
import defaultSettings from '@/settings'
|
||||||
import { useCommonStore } from '@/store/modules/commonStore'
|
import useSettingsStore from '@/store/modules/settings'
|
||||||
const mbStore = useCommonStore();
|
const mbStore = useCommonStore();
|
||||||
|
const settingsStore = useSettingsStore();
|
||||||
|
import { useCommonStore } from '@/store/modules/commonStore'
|
||||||
// 初始化响应式变量
|
// 初始化响应式变量
|
||||||
const activeName = ref('first');
|
const activeName = ref('first');
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
@ -218,7 +220,13 @@ const Localconfig = () => {
|
|||||||
if (res) {
|
if (res) {
|
||||||
const { localconfig, hosplist, oem: oemData } = res;
|
const { localconfig, hosplist, oem: oemData } = res;
|
||||||
mbStore.setDefaultConfig(localconfig)
|
mbStore.setDefaultConfig(localconfig)
|
||||||
if (oemData) oem.value = oemData;
|
if (oemData) {
|
||||||
|
const appTitle = oemData.appname || '输血系统';
|
||||||
|
oem.value = oemData;
|
||||||
|
settingsStore.setTitle(appTitle);
|
||||||
|
defaultSettings.title = appTitle;
|
||||||
|
document.title = appTitle;
|
||||||
|
}
|
||||||
selectOptions.value = hosplist.map(item => {
|
selectOptions.value = hosplist.map(item => {
|
||||||
return {
|
return {
|
||||||
id: item.hospital_code,
|
id: item.hospital_code,
|
||||||
@ -226,6 +234,7 @@ const Localconfig = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
getCookie();
|
getCookie();
|
||||||
|
document.title = oemData.appname
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error("获取本地配置失败:", err);
|
console.error("获取本地配置失败:", err);
|
||||||
|
|||||||
313
src/views/nurses/sendSample/index.vue
Normal file
313
src/views/nurses/sendSample/index.vue
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
/**
|
||||||
|
* @file index.vue
|
||||||
|
* @description: 标本送检
|
||||||
|
* @author: w
|
||||||
|
* @since: 2026-08-05
|
||||||
|
*/
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="box-container">
|
||||||
|
<el-form label-width="auto">
|
||||||
|
<div class="card-box" style="padding-bottom: 0;">
|
||||||
|
<div class="section-title">标本送检</div>
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本编号">
|
||||||
|
<el-input v-model="form.sampleNo" clearable @keydown.enter="onSearch" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检人">
|
||||||
|
<SelectTable v-model:data="form.sendMan" :tableData="userList" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="运送人">
|
||||||
|
<SelectTable v-model:data="form.sendPerson" :tableData="userList" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div class="line"></div>
|
||||||
|
<el-row :gutter="10" class="mt8">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本号">
|
||||||
|
<el-input v-model="bloodInfo.sample_No" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="标本用途">
|
||||||
|
<el-input v-model="obj[bloodInfo.purpose]" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="对应单号">
|
||||||
|
<el-input v-model="bloodInfo.relate_ApplyNo" clearable disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="来源科室">
|
||||||
|
<el-select v-model="bloodInfo.dept" disabled placeholder="">
|
||||||
|
<el-option v-for="item in dictData.ks" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="患者姓名">
|
||||||
|
<el-input v-model="bloodInfo.sample_Name" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="性别">
|
||||||
|
<el-select v-model="bloodInfo.sex" disabled placeholder="">
|
||||||
|
<el-option label="男" value="男" />
|
||||||
|
<el-option label="女" value="女" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mt8">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="采集护士">
|
||||||
|
<SelectTable v-model:data="bloodInfo.pick_Nurse" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="采集时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.pick_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检人">
|
||||||
|
<SelectTable v-model:data="bloodInfo.send_Nurse" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="送检时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.send_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="接收人">
|
||||||
|
<SelectTable v-model:data="bloodInfo.takeOver_Man" :tableData="userList" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="接收时间">
|
||||||
|
<el-date-picker v-model="bloodInfo.takeOver_Date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 申请单列表 -->
|
||||||
|
<div class="card-box table-box">
|
||||||
|
<el-form :form="searchForm">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="送检日期">
|
||||||
|
<div class="date-range">
|
||||||
|
<el-date-picker v-model="searchForm.stime" type="date" value-format="YYYY-MM-DD" placeholder="开始时间"
|
||||||
|
style="width: 47%" />
|
||||||
|
<span class="separator">-</span>
|
||||||
|
<el-date-picker v-model="searchForm.etime" type="date" value-format="YYYY-MM-DD" placeholder="结束时间"
|
||||||
|
style="width: 47%" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<el-form-item label="科室">
|
||||||
|
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<el-form-item label="标本编号">
|
||||||
|
<el-input v-model="searchForm.sampleNo" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="申请单状态">
|
||||||
|
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" clearable
|
||||||
|
placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="primary" icon="Search" @click="searchHandle">查询</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<div class="table_content">
|
||||||
|
<CustomTable :columns="columns" :data="tableData" :config="tableConfig" :enableColumnDrag="true"
|
||||||
|
:loading="loading" @column-drag-end="columnDeagEnd" @row-click="handleRowClick">
|
||||||
|
<template #deptId="{ row }">
|
||||||
|
{{ formatDict(row.Dept, 'ks') }}
|
||||||
|
</template>
|
||||||
|
<template #Purpose="{ row }">
|
||||||
|
{{ obj[row.Purpose] }}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #pickNurse="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.Pick_Nurse)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #sendNurse="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.Send_Nurse)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #takeOverMan="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.TakeOver_Man)?.label}}
|
||||||
|
</template>
|
||||||
|
<template #sendperson="{ row }">
|
||||||
|
{{userList.find(item => item.value == row.sendperson)?.label}}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #status="{ row }">
|
||||||
|
{{ formatDict(row.bill_stasus, 'billApplyStatus') }}
|
||||||
|
</template>
|
||||||
|
</CustomTable>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { getDictData, formatDict, dictData, useCommonDict, useSysParam } from '@/hooks'
|
||||||
|
import { queryYbList, queryOne, sendSampleInfo, } from '@/api/nurses'
|
||||||
|
const { userList, getUserData, getServerTime, } = useCommonDict()
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
const userInfo = useUserStore()
|
||||||
|
const { getParam } = useSysParam()
|
||||||
|
const form = ref({
|
||||||
|
sendMan: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
const bloodInfo = ref({})
|
||||||
|
|
||||||
|
const searchForm = ref({
|
||||||
|
stime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
etime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
const tableData = ref([])
|
||||||
|
|
||||||
|
const columns = ref([
|
||||||
|
{ label: '序号', type: 'index', width: 40, visible: true, align: 'center' },
|
||||||
|
{ label: '住院号', prop: 'beinhos_id', visible: true, align: 'center', width: 100 },
|
||||||
|
{ label: '标本编号', prop: 'Sample_No', visible: true, align: 'center', width: 140 },
|
||||||
|
{ label: '标本用途', prop: 'Purpose', visible: true, align: 'center', slot: 'Purpose' },
|
||||||
|
{ label: '来源科室', prop: 'Dept', visible: true, align: 'center', slot: 'deptId', width: 100 },
|
||||||
|
{ label: '对应单号', prop: 'Relate_ApplyNo', visible: true, align: 'center', width: 140 },
|
||||||
|
{ label: 'ABO血型', prop: 'Blood_Type', visible: true, align: 'center', width: 80 },
|
||||||
|
{ label: 'Rh血型', prop: 'Rh_Blood_Type', visible: true, align: 'center', width: 60 },
|
||||||
|
{ label: '患者姓名', prop: 'Sample_Name', visible: true, align: 'center', },
|
||||||
|
{ label: '性别', prop: 'Sex', visible: true, align: 'center', width: 40 },
|
||||||
|
{ label: '年龄', prop: 'Age', visible: true, align: 'center', },
|
||||||
|
{ label: '出生日期', prop: 'Birthday', width: 100, align: 'center', visible: true, },
|
||||||
|
{ label: '采集护士', prop: 'Pick_Nurse', align: 'center', visible: true, slot: 'pickNurse' },
|
||||||
|
{ label: '采集时间', prop: 'Pick_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '送检人', prop: 'Send_Nurse', align: 'center', visible: true, slot: 'sendNurse' },
|
||||||
|
{ label: '送检时间', prop: 'Send_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '接收人', prop: 'TakeOver_Man', align: 'center', visible: true, slot: 'takeOverMan' },
|
||||||
|
{ label: '接收时间', prop: 'TakeOver_Date', width: 150, align: 'center', visible: true, },
|
||||||
|
{ label: '运送人', prop: 'sendperson', align: 'center', visible: true, slot: 'sendperson' },
|
||||||
|
{ label: '申请单状态', prop: 'bill_stasus', align: 'center', visible: true, slot: 'status' }
|
||||||
|
])
|
||||||
|
|
||||||
|
const tableConfig = ref({
|
||||||
|
border: true,
|
||||||
|
highlightCurrentRow: true,
|
||||||
|
height: '100%'
|
||||||
|
})
|
||||||
|
|
||||||
|
const obj = {
|
||||||
|
A: '输血',
|
||||||
|
B: '血型鉴定',
|
||||||
|
S: '治疗'
|
||||||
|
}
|
||||||
|
|
||||||
|
const columnDeagEnd = (data) => {
|
||||||
|
columns.value = data.columns
|
||||||
|
}
|
||||||
|
const selectRow = ref({})
|
||||||
|
|
||||||
|
const handleRowClick = (row) => {
|
||||||
|
selectRow.value = row
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSearch = () => {
|
||||||
|
sendSampleInfo(form.value).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
queryOne({ sampleNo: form.value.sampleNo }).then(res => {
|
||||||
|
bloodInfo.value = res.data
|
||||||
|
})
|
||||||
|
form.value.sampleNo = ''
|
||||||
|
searchHandle()
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
form.value.sampleNo = ''
|
||||||
|
bloodInfo.value = {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchHandle = () => {
|
||||||
|
searchForm.value.stime = dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||||
|
searchForm.value.etime = dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||||
|
loading.value = true
|
||||||
|
queryYbList(searchForm.value).then(res => {
|
||||||
|
tableData.value = res.data
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getDictData('ks', 'billApplyStatus', 'xylx')
|
||||||
|
getUserData()
|
||||||
|
getParam('BBSJRMRDLR') == 'Y' ? form.value.sendMan = userInfo.name : ''
|
||||||
|
searchHandle()
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.box-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.table-box {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 10px;
|
||||||
|
min-height: 0;
|
||||||
|
|
||||||
|
.table_content {
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
height: 1px;
|
||||||
|
background: #ccc;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -7,7 +7,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="box-container">
|
<div class="box-container">
|
||||||
<!-- 顶部搜索卡片 -->
|
<!-- 顶部搜索卡片 -->
|
||||||
<div class="search-card">
|
<div class="search-card" style="padding-bottom: 0;">
|
||||||
<el-form :model="searchForm" inline label-width="auto">
|
<el-form :model="searchForm" inline label-width="auto">
|
||||||
<el-form-item label="科室:">
|
<el-form-item label="科室:">
|
||||||
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" width="150" clearable />
|
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" width="150" clearable />
|
||||||
@ -61,7 +61,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" :enableColumnDrag="true"
|
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" :enableColumnDrag="true"
|
||||||
@column-drag-end="ColumnDragEnd" @row-click="handleRowClick">
|
:loading="loading" @column-drag-end="ColumnDragEnd" @row-click="handleRowClick">
|
||||||
<template #purpose="{ row }">
|
<template #purpose="{ row }">
|
||||||
{{ obj[row.Purpose] }}
|
{{ obj[row.Purpose] }}
|
||||||
</template>
|
</template>
|
||||||
@ -120,8 +120,8 @@ const obj = {
|
|||||||
}
|
}
|
||||||
// 选中的表格数据
|
// 选中的表格数据
|
||||||
const selectedRow = ref({})
|
const selectedRow = ref({})
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
// 表格模拟数据
|
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
@ -175,8 +175,11 @@ const handleRowClick = (val) => {
|
|||||||
const getList = () => {
|
const getList = () => {
|
||||||
searchForm.stime = dayjs(searchForm.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
searchForm.stime = dayjs(searchForm.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||||
searchForm.etime = dayjs(searchForm.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
searchForm.etime = dayjs(searchForm.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||||
|
loading.value = true
|
||||||
queryList(searchForm).then(res => {
|
queryList(searchForm).then(res => {
|
||||||
tableData.value = res.data
|
tableData.value = res.data
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +221,8 @@ onMounted(() => {
|
|||||||
border-radius: 6px;
|
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;
|
padding: 12px;
|
||||||
height: calc(100% - 125px);
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,8 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 添加或修改菜单对话框 -->
|
<!-- 添加或修改菜单对话框 -->
|
||||||
<el-dialog :title="title" v-model="open" width="680px" append-to-body>
|
<el-dialog :title="title" v-model="open" width="680px" append-to-body :close-on-click-modal="false"
|
||||||
|
:draggable="true">
|
||||||
<el-form ref="menuRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="menuRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user