临床发血
This commit is contained in:
parent
57af215001
commit
cde6435982
@ -201,3 +201,21 @@ export function deleteBloodInfoMatch(query?: Object) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询血液库存
|
||||
export function queryBloodStockList(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/matchBlood/queryBloodStock',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询检验结果列表
|
||||
export function queryListResult(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/matchBlood/queryListResult',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -537,16 +537,27 @@ aside {
|
||||
}
|
||||
|
||||
|
||||
.el-scrollbar__thumb {
|
||||
background-color: #d8d8d8 !important;
|
||||
opacity: 1;
|
||||
.el-scrollbar__bar.is-vertical {
|
||||
width: .5rem;
|
||||
|
||||
.el-scrollbar__thumb {
|
||||
background: #817e7e !important;
|
||||
border-radius: 4px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
.el-scrollbar__thumb:hover {
|
||||
background-color: #d8d8d8 !important;
|
||||
opacity: 1;
|
||||
.el-scrollbar__bar.is-horizontal {
|
||||
height: .5rem;
|
||||
|
||||
.el-scrollbar__thumb {
|
||||
background: #817e7e !important;
|
||||
border-radius: 4px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.cell.el-tooltip {
|
||||
min-width: 0;
|
||||
}
|
||||
@ -600,6 +611,7 @@ aside {
|
||||
|
||||
.el-table__empty-block {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
--el-table-border-color:#ccc; // 边框颜色
|
||||
@ -615,6 +627,8 @@ aside {
|
||||
.el-table__row {
|
||||
border-color: #ccc !important;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -131,14 +131,9 @@ const setting = reactive({
|
||||
// 设置弹窗临时缓存选中值
|
||||
const tempType = ref('1')
|
||||
|
||||
const loadConfig = () => {
|
||||
const cache = localStorage.getItem('bloodStockNotify')
|
||||
if (cache) Object.assign(setting, JSON.parse(cache))
|
||||
}
|
||||
|
||||
const saveSetting = () => {
|
||||
// 点击确定按钮,才覆盖真实类型,页面布局才切换
|
||||
setting.type = tempType.value
|
||||
localStorage.setItem('bloodStockNotify', JSON.stringify(setting))
|
||||
settingVisible.value = false
|
||||
refreshStock()
|
||||
}
|
||||
@ -199,7 +194,6 @@ onMounted(() => {
|
||||
tempType.value = '2'
|
||||
}
|
||||
|
||||
loadConfig()
|
||||
refreshStock()
|
||||
})
|
||||
|
||||
|
||||
663
src/views/blood/clinical/index.vue
Normal file
663
src/views/blood/clinical/index.vue
Normal file
@ -0,0 +1,663 @@
|
||||
/**
|
||||
* @file index.vue
|
||||
* @description: 交叉配血
|
||||
* @author: w
|
||||
* @since: 2026-06-18
|
||||
*/
|
||||
<template>
|
||||
<div class="box-container">
|
||||
<!-- 顶部操作按钮栏 -->
|
||||
<div class="card-box">
|
||||
<el-button type="primary" plain @click="openJsHandle">检索</el-button>
|
||||
<el-button type="primary" plain @click="addMatch">新增单据</el-button>
|
||||
<el-button type="success" plain :disabled="bloodInfo.bill_status && bloodInfo.bill_status != 'A'"
|
||||
@click="saveBloodApply" :loading="saveLoading">保存</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>
|
||||
|
||||
<!-- 主体左右分栏容器 -->
|
||||
<el-form :model="formData" label-width="auto" class="form_box"
|
||||
:disabled="bloodInfo.bill_status && bloodInfo.bill_status != 'A'">
|
||||
<div class="card-box">
|
||||
<div class="section-title">
|
||||
<div> 申请单信息 </div>
|
||||
<div v-show="bloodInfo.bill_no">
|
||||
配血单号:{{ bloodInfo.bill_no || '' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="status" v-show="formData.bill_stasus"
|
||||
:style="{ borderColor: getBillStatusInfo(formData.bill_stasus).color, color: getBillStatusInfo(formData.bill_stasus).color }">
|
||||
{{ getBillStatusInfo(formData.bill_stasus).label }}
|
||||
</div>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请单号">
|
||||
<DropdownTableSelect v-model="formData.bill_no" :column-list="applyColumns" tableWidth="800px"
|
||||
:showSearch="false" labelField="bill_no" :table-data="applyTableData" @open="loadApplyData"
|
||||
@search="searchApply" @change="searchApply" :disabled="!!(bloodInfo.bill_no)">
|
||||
<template #dept_id="{ row }">
|
||||
{{ formatDict(row.dept_id, 'ks') }}
|
||||
</template>
|
||||
<template #blood_breed="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
</template>
|
||||
</DropdownTableSelect>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请日期">
|
||||
<el-input v-model="formData.apply_date" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="姓 名">
|
||||
<el-input v-model="formData.patient_name" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="4">
|
||||
<el-form-item label="性 别">
|
||||
<el-input v-model="formData.patient_sex" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="血型">
|
||||
<el-input v-model="formData.abo_type" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4"></el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="住院号/ID号">
|
||||
<el-input v-model="formData.beinhos_id" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病 区">
|
||||
<SelectTable v-model:data="formData.zone_id" :tableData="dictData.bq" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="科 室">
|
||||
<SelectTable v-model:data="formData.dept_id" :tableData="dictData.ks" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="年 龄">
|
||||
<el-input v-model="formData.age" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="Rh(D)">
|
||||
<el-input v-model="formData.rh_type" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4"></el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="床位号">
|
||||
<el-input v-model="formData.patient_bed" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="临床诊断">
|
||||
<el-input v-model="formData.diagnoses" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="输血目的">
|
||||
<SelectTable v-model:data="formData.intent" :tableData="dictData.sxmd" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="预定输血日期">
|
||||
<el-input v-model="formData.use1_date" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="ABO复核">
|
||||
<el-input v-model="formData.affirm_abo" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="亚型">
|
||||
<SelectTable v-model:data="formData.Sub_Blood" :tableData="dictData.subgroup" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="Rh(D)复核">
|
||||
<el-input v-model="formData.check_rh" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="抗体筛选">
|
||||
<SelectTable v-model:data="formData.affirm_antibody" :tableData="dictData.ktsx" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="">
|
||||
<el-checkbox :model-value="formData.reaction_history == 'Y'">输血反应史</el-checkbox>
|
||||
<el-checkbox :model-value="formData.transfuse_history == 'Y'">输血史</el-checkbox>
|
||||
<el-checkbox :model-value="formData.parturition_history == 'Y'">分娩史</el-checkbox>
|
||||
<el-checkbox :model-value="formData.gestation_history == 'Y'">妊娠史</el-checkbox>
|
||||
<el-checkbox :model-value="formData.match_history == 'Y'">配型史</el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-table :data="bloodApplyTable" border height="120">
|
||||
<el-table-column prop="blood_breed" label="血液品种" align="center">
|
||||
<template #default="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="blood_num" label="申请血量" align="center" />
|
||||
<el-table-column prop="unit" label="单位" 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 || row.replace_bloodbreed}}
|
||||
</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>
|
||||
</div>
|
||||
|
||||
<div class="card-box" style="padding-bottom: 0;">
|
||||
<div class="section-title">发血信息</div>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="5">
|
||||
<el-form-item label="发血单号">
|
||||
<el-input v-model="bloodInfo.billNo" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="发血时间">
|
||||
<el-date-picker v-model="bloodInfo.ops_time" type="datetime" placeholder=""
|
||||
value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="发血经手人">
|
||||
<SelectTable v-model:data="bloodInfo.ops_person" :tableData="userList" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="5">
|
||||
<el-form-item label="取血人">
|
||||
<SelectTable v-model:data="bloodInfo.qxr" :tableData="userList" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="通知取血时间">
|
||||
<el-date-picker v-model="bloodInfo.qxtime" type="datetime" placeholder=""
|
||||
value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="bloodInfo.remark" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<div class="card-box pxBox" style="margin-bottom: 0px;">
|
||||
<div class="section-title">可发血/已发血列表</div>
|
||||
<div class="mb10">
|
||||
<el-select v-model="matchSelect" placeholder="请选择" style="width: 120px">
|
||||
<el-option label="发血" value="add" />
|
||||
<el-option label="取消发血" value="del" />
|
||||
</el-select>
|
||||
<el-input v-model="bloodNo" placeholder="" @keyup.enter="bloodEnter" style="width: 250px;margin:0 20px;" />
|
||||
<el-checkbox v-model="bloodFlag">血液是否有特殊处理</el-checkbox>
|
||||
<el-input v-model="bloodNo" placeholder="" @keyup.enter="bloodEnter" style="width: 250px;"
|
||||
:disabled="!bloodFlag" />
|
||||
</div>
|
||||
<div class="table-box">
|
||||
<CustomTable :data="matchTable" :columns="matchColumns" :config="config">
|
||||
<template #blood_breed="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
</template>
|
||||
<template #match_method="{ row }">
|
||||
{{ formatDict(row.match_method, 'pxff') }}
|
||||
</template>
|
||||
<template #second_match_method="{ row }">
|
||||
{{ formatDict(row.second_match_method, 'pxff') }}
|
||||
</template>
|
||||
<template #result="{ row }">
|
||||
{{ formatDict(row.result, 'pxjg') }}
|
||||
</template>
|
||||
|
||||
</CustomTable>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
<el-dialog title="发血单检索" v-model="visible" width="1200px" :close-on-click-modal="false" @closed="handleClose">
|
||||
<div class="mb10">
|
||||
<el-button type="primary" @click="handleSearch">检索</el-button>
|
||||
<el-button type="success" @click="handleConfirm">确认</el-button>
|
||||
</div>
|
||||
<!-- 检索条件区 -->
|
||||
<el-form :model="searchForm" label-width="auto" class="search-form">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="10">
|
||||
<el-form-item label="检索时间">
|
||||
<div class="date-range">
|
||||
<el-date-picker v-model="searchForm.stime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
style="width: 47%" />
|
||||
<span class="separator">-</span>
|
||||
<el-date-picker v-model="searchForm.etime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
style="width: 47%" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="发血/申请单">
|
||||
<el-input v-model="searchForm.applyNo" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="住院号/ID号">
|
||||
<el-input v-model="searchForm.beinhos_id" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="5">
|
||||
<el-form-item label="科室">
|
||||
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="发血人">
|
||||
<SelectTable v-model:data="searchForm.apply_person" :tableData="userList" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="审核标志">
|
||||
<el-select v-model="searchForm.audit_flag" placeholder="请选择">
|
||||
<el-option label="未审核" value="0" />
|
||||
<el-option label="已审核" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="血液流水号">
|
||||
<el-input v-model="searchForm.billNo" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<!-- 结果表格区 -->
|
||||
<el-table :data="tableData" border height="450" @row-click="jsRowclick" highlight-current-row>
|
||||
<el-table-column prop="ckno" label="出库单号" align="center" />
|
||||
<el-table-column prop="ckDAte" label="出库日期" align="center" />
|
||||
<el-table-column prop="ckDAte" label="发血经手人" align="center" />
|
||||
<el-table-column label="患者姓名" prop="patient_name" align="center" />
|
||||
<el-table-column prop="beinhos_id" label="住院号/ID号" align="center" width="150" />
|
||||
<el-table-column prop="dept_id" label="科室" align="center">
|
||||
<template #default="scope">
|
||||
{{ formatDict(scope.row.dept_id, 'ks') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="audit_flag" label="审核标志" width="150" align="center" />
|
||||
<el-table-column prop="blood_bred" label="申请品种" align="center" />
|
||||
<el-table-column prop="apply_no" label="申请单号" align="center" width="150" />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import DropdownTableSelect, { type TableColumnItem, type TableRowItem } from '@/components/DropdownTableSelect/index.vue'
|
||||
import dayjs from 'dayjs'
|
||||
import { getDictData, formatDict, dictData, useCommonDict } from '@/hooks'
|
||||
import {
|
||||
queryMatchBloodList, queryMatchOne, queryWaitInfo, getBloodInfoMatch, checkBloodMatched, saveBloodData, queryMatchApplyInfo, cancelBloodInfoMatch,
|
||||
|
||||
} from '@/api/blood'
|
||||
import { queryBloodInfoByBloodNo } from '@/api/common'
|
||||
import { ElMessageBox, ElMessage } from 'element-plus'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
const userInfo = useUserStore()
|
||||
const { userList, getUserData, getServerTime, bloodBreed, getBloodList, } = useCommonDict()
|
||||
|
||||
const visible = ref(false)
|
||||
const bloodInfo = ref({})
|
||||
|
||||
const saveLoading = ref(false)
|
||||
const billStatus = ref([
|
||||
{ label: '未发血', value: 'A' },
|
||||
{ label: '已发血', value: 'B' },
|
||||
{ label: '已作废', value: 'ZF' },
|
||||
])
|
||||
const searchForm = ref({
|
||||
stime: dayjs().format('YYYY-MM-DD'),
|
||||
etime: dayjs().format('YYYY-MM-DD'),
|
||||
})
|
||||
|
||||
const tableData = ref([])
|
||||
|
||||
const applyColumns = ref<TableColumnItem[]>([
|
||||
{ label: '申请单号', prop: 'bill_no' },
|
||||
{ label: '患者姓名', prop: 'patient_name' },
|
||||
{ label: '科室', prop: 'dept_id', slotName: 'dept_id' },
|
||||
{ label: '申请品种', prop: 'blood_breed', slotName: 'blood_breed' }
|
||||
])
|
||||
const applyTableData = ref<TableRowItem[]>([])
|
||||
|
||||
const bloodFlag = ref(false)
|
||||
|
||||
const bloddStatus = {
|
||||
'1': '在库',
|
||||
'4': '出库',
|
||||
'2': '报废',
|
||||
}
|
||||
// 主表单数据
|
||||
const formData = ref({})
|
||||
|
||||
|
||||
const bloodNo = ref('')
|
||||
// 配血操作单选
|
||||
const matchSelect = ref('add')
|
||||
|
||||
// 血液申请表格
|
||||
const bloodApplyTable = ref([])
|
||||
// 配血记录表格
|
||||
const matchTable = ref([])
|
||||
const matchColumns = ref([
|
||||
{ label: '序号', type: 'index', width: 40, visible: true, align: 'center' },
|
||||
{ label: '特殊处理', prop: 'second_match_medic', align: 'center', visible: true, width: 100, slot: 'second_match_medic', showOverflowTooltip: false },
|
||||
{ label: '血液流水号', prop: 'blood_no', align: 'center', width: 120, visible: true, },
|
||||
{ label: '产品码', prop: 'product_no', align: 'center', visible: true, },
|
||||
{ label: '血液品种', prop: 'blood_breed', align: 'center', visible: true, slot: 'blood_breed', },
|
||||
{ label: '血型', prop: 'blood_type', align: 'center', visible: true, },
|
||||
{ label: 'Rh(D)', prop: 'rh_blood_type', align: 'center', visible: true, },
|
||||
{ label: '容量', prop: 'capacity', align: 'center', visible: true, },
|
||||
{ label: '单位', prop: 'unit', align: 'center', visible: true, },
|
||||
{ label: '有效日期', prop: 'match_date', align: 'center', visible: true, width: 150, showOverflowTooltip: false },
|
||||
{ label: '配血方法', prop: 'match_method', align: 'center', visible: true, width: 150, slot: 'match_method', showOverflowTooltip: false },
|
||||
{ label: '复核配血方法', prop: 'second_match_method', align: 'center', visible: true, width: 150, slot: 'second_match_method', showOverflowTooltip: false },
|
||||
{ label: '结果', prop: 'result', align: 'center', visible: true, width: 150, slot: 'result', showOverflowTooltip: false },
|
||||
])
|
||||
|
||||
const config = {
|
||||
height: '100%',
|
||||
border: true,
|
||||
highlightCurrentRow: true,
|
||||
actionFixed: 'right',
|
||||
}
|
||||
|
||||
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 bloodEnter = () => {
|
||||
if (!formData.value.bill_no) return ElMessage.warning('请选择输血申请单!')
|
||||
const index = matchTable.value.findIndex(item => item.blood_no == bloodNo.value)
|
||||
if (matchSelect.value == 'del') {
|
||||
if (index > -1) {
|
||||
ElMessageBox.confirm(`确定取消血液${matchTable.value[index].blood_no}数据吗?`, '提示', { type: 'warning' }).then(() => {
|
||||
cancelBloodInfoMatch({ bloodNo: matchTable.value[index].blood_no, productNo: matchTable.value[index].product_no }).then(res => {
|
||||
matchTable.value.splice(index, 1)
|
||||
})
|
||||
})
|
||||
|
||||
} else {
|
||||
ElMessage.warning('该血液流水号不存在,请检查!')
|
||||
}
|
||||
} else {
|
||||
if (index > -1) return ElMessage.warning('该血液流水号已存在,请检查!')
|
||||
queryBloodInfoByBloodNo({ bloodNo: bloodNo.value }).then(res => {
|
||||
if (res.data.length == 1) {
|
||||
const row = res.data[0]
|
||||
checkBloodMatched({ bloodNo: row.blood_no, productNo: row.product_no, billNo: formData.value.bill_no }).then(res => {
|
||||
if (res.code == 0) {
|
||||
getBloodInfo(row)
|
||||
}
|
||||
if (res.code == 2) {
|
||||
ElMessageBox.alert(`${res.msg}`, '提示', { type: 'warning' }).then(() => {
|
||||
getBloodInfo(row)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 获取血液信息
|
||||
const getBloodInfo = (row) => {
|
||||
getBloodInfoMatch({ bloodNo: row.blood_no, productNo: row.product_no }).then(res => {
|
||||
const row = res.data || {}
|
||||
const msgArr: string[] = []
|
||||
|
||||
// ABO不匹配提示
|
||||
if (row.blood_type != formData.value.abo_type) {
|
||||
msgArr.push(`该血液流水号的血型与患者复核的血型结果不一致,请注意!`)
|
||||
}
|
||||
// Rh不匹配提示
|
||||
if (row.rh_blood_type != formData.value.rh_type) {
|
||||
msgArr.push(`患者Rh血型:Rh(D)阴性该血液的Rh血型与患者的Rh血型不符,请注意!`)
|
||||
}
|
||||
//血液品种不同
|
||||
if (row.blood_breed != formData.value.blood_breed) {
|
||||
msgArr.push(`该血液的血液品种与患者申请的血液品种不符,请注意!`)
|
||||
}
|
||||
|
||||
// 存在任意不匹配统一弹窗
|
||||
if (msgArr.length) {
|
||||
ElMessageBox.alert(msgArr.join('<br/>'), '提示', { type: 'warning', dangerouslyUseHTMLString: true }).then(() => {
|
||||
// 弹窗关闭后逻辑
|
||||
setMatchTable(row)
|
||||
})
|
||||
} else {
|
||||
setMatchTable(row)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const setMatchTable = (row) => {
|
||||
matchTable.value.push({
|
||||
...row,
|
||||
second_match_medic: '',
|
||||
offer_affirm_abo: row.blood_type,
|
||||
check_offer_rh: row.rh_blood_type,
|
||||
match_method: '006',
|
||||
second_match_method: '002',
|
||||
first_side: 'N',
|
||||
second_side: 'N',
|
||||
result: '001',
|
||||
match_date: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||
match_medic: userInfo.name,
|
||||
position_blood: '',
|
||||
position_barcode: '',
|
||||
})
|
||||
matchTable.value.forEach((item, index) => {
|
||||
item.sid = index + 1
|
||||
})
|
||||
bloodNo.value = ''
|
||||
}
|
||||
|
||||
|
||||
|
||||
const selectRow = ref({})
|
||||
|
||||
const openJsHandle = () => {
|
||||
// visible.value = true
|
||||
// handleSearch()
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
searchForm.value = {
|
||||
stime: dayjs().format('YYYY-MM-DD'),
|
||||
etime: dayjs().format('YYYY-MM-DD'),
|
||||
}
|
||||
selectRow.value = {}
|
||||
}
|
||||
const handleConfirm = () => {
|
||||
if (!selectRow.value.bill_no) return ElMessage.warning('请选择配血单!')
|
||||
getBloodMatchInfo()
|
||||
visible.value = false
|
||||
}
|
||||
|
||||
const jsRowclick = (row) => {
|
||||
selectRow.value = row
|
||||
}
|
||||
|
||||
|
||||
const getBloodMatchInfo = () => {
|
||||
return
|
||||
queryMatchApplyInfo({ billNo: selectRow.value.bill_no, applyNo: selectRow.value.apply_no }).then(res => {
|
||||
formData.value = res.data.matchMainInfoList[0] || {}
|
||||
bloodApplyTable.value = res.data.xkTransfuseApplyBloodbreedList || []
|
||||
matchTable.value = res.data.matchDetailInfoList || []
|
||||
bloodInfo.value = res.data.matchDetailInfoList[0] || {}
|
||||
})
|
||||
}
|
||||
|
||||
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'
|
||||
queryMatchBloodList(searchForm.value).then(res => {
|
||||
// tableData.value = res.data || []
|
||||
})
|
||||
}
|
||||
|
||||
const saveBloodApply = () => {
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
const addMatch = () => {
|
||||
formData.value = {}
|
||||
bloodApplyTable.value = []
|
||||
matchTable.value = []
|
||||
selectRow.value = {}
|
||||
bloodInfo.value = {}
|
||||
}
|
||||
|
||||
|
||||
const loadApplyData = () => {
|
||||
queryWaitInfo().then(res => {
|
||||
// applyTableData.value = res.data || []
|
||||
})
|
||||
}
|
||||
const searchApply = () => {
|
||||
queryMatchOne({ billNo: formData.value.bill_no }).then(res => {
|
||||
// formData.value = res.data.matchMainInfoList[0] || {}
|
||||
// bloodApplyTable.value = res.data.xkTransfuseApplyBloodbreedList
|
||||
|
||||
if (formData.value.rh_type == '-') {
|
||||
// 阴性弹出框提示
|
||||
ElMessageBox.alert(`患者为Rh(D)阴性血型,请注意!`, '提示', { type: 'warning' })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
getDictData('ks', 'bq', 'sxmd', 'billApplyStatus', 'ktsx', 'abotype', 'subgroup', 'sxzz', 'rhtype', 'pxff', 'pxjg', 'zccc', 'test_result')
|
||||
getBloodList()
|
||||
getUserData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.box-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
||||
|
||||
|
||||
.form_box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
|
||||
.pxBox {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.table-box {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 通用卡片样式(对齐规范)
|
||||
.card-box {
|
||||
position: relative;
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.space-item {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-checkbox {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.status {
|
||||
position: absolute;
|
||||
right: 30px;
|
||||
top: 50px;
|
||||
color: #409eff;
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
border: 2px solid #409eff;
|
||||
border-radius: 5px;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@ -11,8 +11,8 @@
|
||||
<el-button type="primary" plain @click="openJsHandle">检索</el-button>
|
||||
<el-button type="primary" plain @click="addMatch">新增单据</el-button>
|
||||
<el-button type="danger" plain @click="cancelApply">作废整单</el-button>
|
||||
<el-button type="primary" plain>血液库存</el-button>
|
||||
<el-button type="primary" plain>检验结果</el-button>
|
||||
<el-button type="primary" plain @click="kcOpen">血液库存</el-button>
|
||||
<el-button type="primary" plain :disabled="!formData.bill_no" @click="openResultDialog">检验结果</el-button>
|
||||
<el-button type="success" plain :disabled="bloodInfo.bill_status && bloodInfo.bill_status != 'A'"
|
||||
@click="saveBloodApply" :loading="saveLoading">保存</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
@ -120,28 +120,23 @@
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="5">
|
||||
<el-form-item label="申请血型">
|
||||
<el-input v-model="formData.apply_bloodtype" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="ABO复核">
|
||||
<el-input v-model="formData.affirm_abo" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="亚型">
|
||||
<SelectTable v-model:data="formData.Sub_Blood" :tableData="dictData.subgroup" placeholder=""
|
||||
disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="Rh(D)复核">
|
||||
<el-input v-model="formData.check_rh" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="抗体筛选">
|
||||
<SelectTable v-model:data="formData.affirm_antibody" :tableData="dictData.ktsx" placeholder=""
|
||||
disabled />
|
||||
@ -170,7 +165,7 @@
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-table :data="bloodApplyTable" border height="150">
|
||||
<el-table :data="bloodApplyTable" border height="120">
|
||||
<el-table-column prop="blood_breed" label="血液品种" align="center" width="150">
|
||||
<template #default="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
@ -214,9 +209,10 @@
|
||||
</div>
|
||||
<div class="table-box">
|
||||
<CustomTable :data="matchTable" :columns="matchColumns" :config="config">
|
||||
<template #second_match_medic_name="{ row }">
|
||||
<template #second_match_medic="{ row }">
|
||||
<SelectTable v-model:data="row.second_match_medic" :tableData="userList" placeholder=""
|
||||
class="full-width-input" clearable />
|
||||
:clearable="false" class="full-width-input"
|
||||
:disabled="bloodInfo.bill_status && bloodInfo.bill_status != 'A'" />
|
||||
</template>
|
||||
<template #blood_breed="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
@ -269,7 +265,8 @@
|
||||
</template>
|
||||
<template #match_medic="{ row }">
|
||||
<SelectTable v-model:data="row.match_medic" :tableData="userList" placeholder=""
|
||||
class="full-width-input" clearable />
|
||||
class="full-width-input" :clearable="false"
|
||||
:disabled="bloodInfo.bill_status && bloodInfo.bill_status != 'A'" />
|
||||
</template>
|
||||
<template #position_blood="{ row }">
|
||||
<el-input v-model="row.position_blood" placeholder="" class="full-width-input" />
|
||||
@ -289,31 +286,38 @@
|
||||
<!-- 右侧筛选+结果表格区域 -->
|
||||
<el-col :span="9" class="right-col">
|
||||
<div class="card-box pxBox" style="margin-bottom: 0px;">
|
||||
<el-form :model="filterForm" inline>
|
||||
<div>
|
||||
<el-form-item label="姓名:">
|
||||
<el-input v-model="filterForm.patientName" placeholder="" style="width: 120px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态:">
|
||||
<el-select v-model="filterForm.status" placeholder="全部" style="width: 150px" clearable>
|
||||
<el-option v-for="option in billStatus" :key="option.value" :label="option.label"
|
||||
:value="option.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-button type="primary" plain @click="handleRefresh">刷新</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<el-form-item label="时间:">
|
||||
<el-date-picker v-model="filterForm.stime" type="date" format="YYYY-MM-DD" style="width: 150px"
|
||||
value-format="YYYY-MM-DD" />
|
||||
<span class="timesplit">-</span>
|
||||
<el-date-picker v-model="filterForm.etime" type="date" format="YYYY-MM-DD" style="width: 150px"
|
||||
value-format="YYYY-MM-DD" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form :model="filterForm">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名:">
|
||||
<el-input v-model="filterForm.patientName" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="状态:">
|
||||
<el-select v-model="filterForm.status" placeholder="全部" clearable>
|
||||
<el-option v-for="option in billStatus" :key="option.value" :label="option.label"
|
||||
:value="option.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-form-item label="">
|
||||
<el-button type="primary" plain @click="handleRefresh">刷新</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="16">
|
||||
<el-form-item label="时间:">
|
||||
<el-date-picker v-model="filterForm.stime" type="date" format="YYYY-MM-DD" style="width: 47%"
|
||||
value-format="YYYY-MM-DD" />
|
||||
<span class="timesplit">—</span>
|
||||
<el-date-picker v-model="filterForm.etime" type="date" format="YYYY-MM-DD" style="width: 47%"
|
||||
value-format="YYYY-MM-DD" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<div class="table-box">
|
||||
@ -407,18 +411,51 @@
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="查看配血相关检验结果" v-model="resultVisible" width="700px" :close-on-click-modal="false">
|
||||
<div class="table-box">
|
||||
<el-table :data="resultList" border height="350" show-overflow-tooltip>
|
||||
<el-table-column label="检验项目名称" prop="item_name" align="center" />
|
||||
<el-table-column label="检验项目结果" prop="item_result" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ formatDict(row.item_result, 'test_result') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="检验时间" prop="test_date" align="center" />
|
||||
</el-table>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="血液库存预览" v-model="kcvisible" width="1200px" :close-on-click-modal="false" @closed="">
|
||||
<el-table :data="kcTableData" border height="100%">
|
||||
<el-table-column label="血液流水号" prop="matchDate" align="center" />
|
||||
<el-table-column label="产品码" prop="patName" align="center" />
|
||||
<el-table-column label="血型" prop="billStatus" align="center" />
|
||||
<el-table-column label="Rh血型" prop="matchNo" align="center" />
|
||||
<el-table-column label="有效日期" prop="bill_no" align="center" />
|
||||
<el-table-column label="血液状态" prop="dept" align="center" />
|
||||
<el-table-column label="血液品种" prop="aboResult" align="center" />
|
||||
<el-table-column label="容量" prop="rhResult" align="center" />
|
||||
<el-table-column label="单位" prop="unit" align="center" />
|
||||
<div class="mb10 serch-box">
|
||||
<el-input v-model="kcSearchForm.blood_no" placeholder="请输入血液流水号" @keyup.enter="searchBloodStock"
|
||||
style="width: 250px" clearable />
|
||||
<span style="color:#f00">红色:已过期</span>
|
||||
<span style="color:#ff00ff">粉红色:已配血</span>
|
||||
<span style="color:#0a9292">青色:配血超过预定天数未出库</span>
|
||||
</div>
|
||||
<el-table :data="kcTableData" border height="500px" highlight-current-row show-overflow-tooltip
|
||||
:cell-style="cellStyle">
|
||||
<el-table-column label="血液流水号" prop="blood_no" align="center" />
|
||||
<el-table-column label="产品码" prop="product_no" align="center" />
|
||||
<el-table-column label="血型" prop="blood_type" align="center" width="60" />
|
||||
<el-table-column label="Rh血型" prop="rh_blood_type" align="center" width="80" />
|
||||
<el-table-column label="有效日期" prop="valid_date" align="center" width="170" />
|
||||
<el-table-column label="血液状态" prop="blood_status" align="center" width="100">
|
||||
<template #default="{ row }">
|
||||
{{ bloddStatus[row.blood_status] || row.blood_status }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="血液品种" prop="blood_breed" align="center" width="150">
|
||||
<template #default="{ row }">
|
||||
{{bloodBreed.find(v => v.value == row.blood_breed)?.label || row.blood_breed}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="容量" prop="capacity" align="center" />
|
||||
<el-table-column label="单位" prop="unit" align="center" width="60" />
|
||||
</el-table>
|
||||
<div class="f-title">
|
||||
总计:{{ kcTableData.length }} 袋
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
@ -427,7 +464,10 @@
|
||||
import DropdownTableSelect, { type TableColumnItem, type TableRowItem } from '@/components/DropdownTableSelect/index.vue'
|
||||
import dayjs from 'dayjs'
|
||||
import { getDictData, formatDict, dictData, useCommonDict } from '@/hooks'
|
||||
import { queryMatchBloodList, queryMatchOne, queryWaitInfo, getBloodInfoMatch, checkBloodMatched, saveBloodData, queryMatchApplyInfo, cancelBloodInfoMatch, deleteBloodInfoMatch } from '@/api/blood'
|
||||
import {
|
||||
queryMatchBloodList, queryMatchOne, queryWaitInfo, getBloodInfoMatch, checkBloodMatched, saveBloodData, queryMatchApplyInfo, cancelBloodInfoMatch,
|
||||
deleteBloodInfoMatch, queryBloodStockList, queryListResult
|
||||
} from '@/api/blood'
|
||||
import { queryBloodInfoByBloodNo } from '@/api/common'
|
||||
import { ElMessageBox, ElMessage } from 'element-plus'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
@ -462,6 +502,12 @@ const applyColumns = ref<TableColumnItem[]>([
|
||||
])
|
||||
const applyTableData = ref<TableRowItem[]>([])
|
||||
|
||||
|
||||
const bloddStatus = {
|
||||
'1': '在库',
|
||||
'4': '出库',
|
||||
'2': '报废',
|
||||
}
|
||||
// 主表单数据
|
||||
const formData = ref({})
|
||||
|
||||
@ -472,7 +518,7 @@ const filterForm = ref({
|
||||
stime: dayjs().format('YYYY-MM-DD'),
|
||||
etime: dayjs().format('YYYY-MM-DD'),
|
||||
})
|
||||
const bloodNo = ref('000011112235')
|
||||
const bloodNo = ref('')
|
||||
// 配血操作单选
|
||||
const matchSelect = ref('add')
|
||||
|
||||
@ -482,7 +528,7 @@ const bloodApplyTable = ref([])
|
||||
const matchTable = ref([])
|
||||
const matchColumns = ref([
|
||||
{ label: '序号', type: 'index', width: 40, visible: true, align: 'center' },
|
||||
{ label: '复核者', prop: 'second_match_medic_name', align: 'center', visible: true, width: 100, slot: 'second_match_medic_name', showOverflowTooltip: false },
|
||||
{ label: '复核者', prop: 'second_match_medic', align: 'center', visible: true, width: 100, slot: 'second_match_medic', showOverflowTooltip: false },
|
||||
{ label: '血液流水号', prop: 'blood_no', align: 'center', width: 120, visible: true, },
|
||||
{ label: '产品码', prop: 'product_no', align: 'center', visible: true, },
|
||||
{ label: '血液品种', prop: 'blood_breed', align: 'center', visible: true, slot: 'blood_breed', },
|
||||
@ -511,6 +557,18 @@ const config = {
|
||||
// 右侧结果列表
|
||||
const resultTable = ref([])
|
||||
|
||||
// 检验结果弹窗数据
|
||||
const resultVisible = ref(false)
|
||||
const resultList = ref([])
|
||||
|
||||
const openResultDialog = () => {
|
||||
const params = { billNo: formData.value.bill_no }
|
||||
queryListResult(params).then(res => {
|
||||
resultList.value = res.data || []
|
||||
resultVisible.value = true
|
||||
})
|
||||
}
|
||||
|
||||
const getBillStatusInfo = (code: string) => {
|
||||
const statusList = dictData.value?.billApplyStatus ?? []
|
||||
const target = statusList.find(item => item.value == code)
|
||||
@ -613,7 +671,7 @@ const setMatchTable = (row) => {
|
||||
matchTable.value.forEach((item, index) => {
|
||||
item.sid = index + 1
|
||||
})
|
||||
// bloodNo.value = ''
|
||||
bloodNo.value = ''
|
||||
}
|
||||
|
||||
|
||||
@ -716,10 +774,45 @@ const cancelApply = () => {
|
||||
})
|
||||
}
|
||||
|
||||
const kcSearchForm = ref({
|
||||
blood_no: '',
|
||||
})
|
||||
|
||||
const kcOpen = () => {
|
||||
searchBloodStock()
|
||||
kcvisible.value = true
|
||||
}
|
||||
|
||||
const searchBloodStock = () => {
|
||||
queryBloodStockList({ affirmAbo: formData.value.affirm_abo, bloodNo: kcSearchForm.value.blood_no }).then(res => {
|
||||
kcTableData.value = res.data || []
|
||||
})
|
||||
}
|
||||
|
||||
const cellStyle = ({ row, column, rowIndex, columnIndex }) => {
|
||||
if (row.matched.trim() == 'Y') {
|
||||
return {
|
||||
color: '#ff00ff',
|
||||
}
|
||||
}
|
||||
|
||||
if (row.valid_date < dayjs().format('YYYY-MM-DD HH:mm:ss')) {
|
||||
return {
|
||||
color: '#f00',
|
||||
}
|
||||
}
|
||||
if (row.match_delay.trim() == 'Y') {
|
||||
return {
|
||||
color: '#0a9292',
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 刷新右侧列表
|
||||
const handleRefresh = () => {
|
||||
filterForm.value.stime = dayjs().format('YYYY-MM-DD') + ' 00:00:00'
|
||||
filterForm.value.etime = dayjs().format('YYYY-MM-DD') + ' 23:59:59'
|
||||
filterForm.value.stime = dayjs(filterForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
filterForm.value.etime = dayjs(filterForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
queryMatchBloodList(filterForm.value).then(res => {
|
||||
resultTable.value = res.data || []
|
||||
})
|
||||
@ -746,7 +839,7 @@ const searchApply = () => {
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
getDictData('ks', 'bq', 'sxmd', 'billApplyStatus', 'ktsx', 'abotype', 'subgroup', 'sxzz', 'rhtype', 'pxff', 'pxjg', 'zccc')
|
||||
getDictData('ks', 'bq', 'sxmd', 'billApplyStatus', 'ktsx', 'abotype', 'subgroup', 'sxzz', 'rhtype', 'pxff', 'pxjg', 'zccc', 'test_result')
|
||||
getBloodList()
|
||||
getUserData()
|
||||
handleRefresh()
|
||||
@ -765,8 +858,9 @@ onMounted(() => {
|
||||
min-height: 0;
|
||||
|
||||
.timesplit {
|
||||
margin: 0 5px;
|
||||
width: 6%;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.left-row {
|
||||
@ -821,4 +915,18 @@ onMounted(() => {
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.f-title {
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.serch-box {
|
||||
span {
|
||||
margin-left: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -12,12 +12,12 @@
|
||||
<el-button type="primary" plain @click="openJsHandle">检索</el-button>
|
||||
<el-button type="primary" plain @click="clearInfo">新增</el-button>
|
||||
<el-button type="danger" plain :disabled="!xkCheckBloodtype.bill_no" @click="delApply">删除</el-button>
|
||||
<el-button type="success" plain :disabled="xkCheckBloodtype.bill_no" :loading="saveLoading"
|
||||
<el-button type="success" plain :disabled="!!(xkCheckBloodtype.bill_no)" :loading="saveLoading"
|
||||
@click="saveApplyInfo">保存</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
<el-button plain @click="openHistoryHandle">血型复核历史查询</el-button>
|
||||
</div>
|
||||
<el-form label-width="auto" :disabled="xkCheckBloodtype.bill_no">
|
||||
<el-form label-width="auto" :disabled="!!(xkCheckBloodtype.bill_no)">
|
||||
<!-- 主卡片面板 -->
|
||||
<div class="card-box">
|
||||
<div class="status" v-show="form.bill_stasus"
|
||||
@ -476,7 +476,6 @@ const applyTableData = ref<TableRowItem[]>([])
|
||||
|
||||
// 下拉面板展开加载申请单数据
|
||||
const loadApplyData = () => {
|
||||
console.log('open');
|
||||
queryCheckBloodTypeInfo().then(res => {
|
||||
applyTableData.value = res.data || []
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user