标本录入、申请单扫描登记
This commit is contained in:
parent
fc2dde5a8c
commit
996ae5cfe6
34
src/api/blood/index.ts
Normal file
34
src/api/blood/index.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询登记列表
|
||||
export function billQueryList(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/searchTransfuseBill/queryList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 查询某个申请单
|
||||
export function queryBillOne(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/searchTransfuseBill/queryOne',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 申请单扫描登记
|
||||
export function saveBillNo(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/searchTransfuseBill/saveBillNo',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 取消扫描登记
|
||||
export function deleteBillNo(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/bloodbank/searchTransfuseBill/delete',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
18
src/api/nurses/index.ts
Normal file
18
src/api/nurses/index.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询样本信息列表
|
||||
export function queryList(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/nurse/sampleInfo/queryList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 打印条码
|
||||
export function printBarCode(query?: Object) {
|
||||
return request({
|
||||
url: '/bus/nurse/sampleInfo/printBarCode',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
@ -120,7 +120,9 @@
|
||||
<script setup lang="ts">
|
||||
import { queryExpiredBlood, queryListByBlood, queryListByDoctor } from '@/api/bloodInventory'
|
||||
import { decimalToHexColor } from '@/utils/classCom'
|
||||
|
||||
import { getDeptType } from '@/api/common'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
const userInfo = useUserStore()
|
||||
const setting = reactive({
|
||||
type: '1',
|
||||
refreshMin: 1000,
|
||||
@ -177,7 +179,6 @@ const getList = () => {
|
||||
queryListByBlood().then(res => {
|
||||
stockTable.value = res.data
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
// 刷新库存接口
|
||||
@ -188,8 +189,20 @@ const refreshStock = async () => {
|
||||
getList()
|
||||
}
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
refreshStock()
|
||||
//001 临床 002 输血科
|
||||
getDeptType({ userId: userInfo.name }).then(res => {
|
||||
if (res.data == '001') {
|
||||
setting.type = '1'
|
||||
tempType.value = '1'
|
||||
} else if (res.data = '002') {
|
||||
setting.type = '2'
|
||||
tempType.value = '2'
|
||||
}
|
||||
|
||||
loadConfig()
|
||||
refreshStock()
|
||||
})
|
||||
|
||||
})
|
||||
onUnmounted(() => {
|
||||
})
|
||||
|
||||
@ -33,6 +33,7 @@ const GLOBAL_PARAM_KEYS = [
|
||||
'YBZFXMTSXX', // 输血报销
|
||||
'HZBQGY', // 患者病情概要是否必填
|
||||
'SQDSFKRLXGXX',//输血申请时是否可从HIS系统中调出患者信息,是否可以录入修改患者血型?以"/"分隔,"/"前指可以调出患者信息时是否可以修改患者血型(Y可以修改N不可以修改),"/"后指不可以调出患者信息时是否可以录入全部和只能录入"未知"患者血型(Y可以录入全部N只能录入"未知")
|
||||
'JSSJSFXG', //申请扫描登记 录入时间是否允许修改
|
||||
]
|
||||
|
||||
const settingsStore = useSettingsStore()
|
||||
|
||||
@ -1,31 +1,36 @@
|
||||
<template>
|
||||
<div class="box-container">
|
||||
<div class="card-box">
|
||||
<el-button type="primary" plain @click="onSearch">检索</el-button>
|
||||
<el-button type="primary" plain @click="onClear">清空</el-button>
|
||||
<el-button type="warning" plain>取消接收</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
</div>
|
||||
|
||||
<el-form label-width="auto">
|
||||
<div class="card-box">
|
||||
<div class="section-title">申请单扫描</div>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请单号">
|
||||
<el-input v-model="form.applyNo" clearable />
|
||||
<el-input v-model="form.bill_no" clearable @keydown.enter="onSearch" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-col :span="3">
|
||||
<el-form-item label="录入人">
|
||||
<el-select v-model="form.operator" placeholder="请选择">
|
||||
<el-option label="管理员" value="admin" />
|
||||
</el-select>
|
||||
<SelectTable v-model:data="form.input_person" :tableData="userList" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="录入时间">
|
||||
<el-date-picker v-model="form.inputTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
<el-date-picker v-model="form.input_date" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||
:disabled="!lrsjFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item label="是否合格">
|
||||
<el-select v-model="form.hgbz" placeholder="全部" clearable>
|
||||
<el-option label="合格" value="1" />
|
||||
<el-option label="不合格" value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="不合格原因">
|
||||
<el-input v-model="form.hgyy" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -33,32 +38,37 @@
|
||||
<el-row :gutter="10" class="mt8">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请单号">
|
||||
<el-input v-model="form.applyNoCopy" clearable />
|
||||
<el-input v-model="bloodInfo.bill_no" clearable disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请日期">
|
||||
<el-date-picker v-model="form.applyDate" type="date" value-format="YYYY-MM-DD" />
|
||||
<el-date-picker v-model="bloodInfo.apply_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="申请医师">
|
||||
<el-input v-model="form.applyDoctor" />
|
||||
<el-select v-model="bloodInfo.apply_medic" disabled placeholder="">
|
||||
<el-option v-for="item in userList" :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="form.applyDept" />
|
||||
<el-select v-model="bloodInfo.dept_id" 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="form.patientName" />
|
||||
<el-input v-model="bloodInfo.patient_name" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="性别">
|
||||
<el-select v-model="form.gender">
|
||||
<el-select v-model="bloodInfo.patient_sex" disabled placeholder="">
|
||||
<el-option label="男" value="男" />
|
||||
<el-option label="女" value="女" />
|
||||
</el-select>
|
||||
@ -69,43 +79,34 @@
|
||||
<el-row :gutter="10" class="mt8">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="床位号">
|
||||
<el-input v-model="form.bedNo" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="临床诊断">
|
||||
<el-input v-model="form.diagnosis" />
|
||||
<el-input v-model="bloodInfo.patient_bed" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="4">
|
||||
<el-form-item label="血液品种">
|
||||
<el-input v-model="form.bloodKind" />
|
||||
<el-select v-model="bloodInfo.blood_type" disabled placeholder="">
|
||||
<el-option v-for="item in dictData.xylx" :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="form.applyVolume" />
|
||||
<el-input v-model="bloodInfo.blood_num" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="单位">
|
||||
<el-input v-model="form.unit" />
|
||||
<el-input v-model="bloodInfo.unit" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="是否合格">
|
||||
<el-input v-model="form.qualified" />
|
||||
<el-col :span="8">
|
||||
<el-form-item label="临床诊断">
|
||||
<el-input v-model="bloodInfo.diagnosis" :title="bloodInfo.diagnosis" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="10" class="mt8">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="不合格原因">
|
||||
<el-input v-model="form.notQualifiedReason" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
@ -116,50 +117,64 @@
|
||||
<el-col :span="6">
|
||||
<el-form-item label="接收日期">
|
||||
<div class="date-range">
|
||||
<el-date-picker v-model="searchForm.startTime" type="date" value-format="YYYY-MM-DD" placeholder="开始时间"
|
||||
<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.endTime" type="date" value-format="YYYY-MM-DD" placeholder="结束时间"
|
||||
<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.searchDept" :tableData="dictData.ks" placeholder="" />
|
||||
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请单号">
|
||||
<el-input v-model="searchForm.searchApplyNo" clearable />
|
||||
<el-input v-model="searchForm.billNo" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-col :span="3">
|
||||
<el-form-item label="合格状态">
|
||||
<el-select v-model="searchForm.searchQualified" placeholder="全部" clearable>
|
||||
<el-option label="全部" value="" />
|
||||
<el-option label="合格" value="合格" />
|
||||
<el-option label="不合格" value="不合格" />
|
||||
<el-select v-model="searchForm.hgbz" placeholder="全部" clearable>
|
||||
<el-option label="合格" value="1" />
|
||||
<el-option label="不合格" value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="申请单状态" clearable>
|
||||
<el-select v-model="searchForm.searchApplyStatus" placeholder="请选择">
|
||||
<el-option v-for="v in dictData.billApplyStatus" :key="v.value" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item label="">
|
||||
<el-button type="primary" icon="Search">查询</el-button>
|
||||
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" clearable
|
||||
placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="mb10">
|
||||
<el-button type="primary" icon="Search" @click="searchHandle">查询</el-button>
|
||||
<el-button type="danger" plain @click="cancelHandle">取消接收</el-button>
|
||||
<el-button type="warning" plain>打印</el-button>
|
||||
</div>
|
||||
<div class="table_content">
|
||||
<CustomTable :columns="columns" :data="tableData" :config="tableConfig" :enableColumnDrag="true"
|
||||
@column-drag-end="columnDeagEnd" />
|
||||
@column-drag-end="columnDeagEnd" @row-click="handleRowClick">
|
||||
<template #deptId="{ row }">
|
||||
{{ formatDict(row.dept_id, 'ks') }}
|
||||
</template>
|
||||
<template #hgbz="{ row }">
|
||||
{{ row.hgbz == 1 ? '合格' : '不合格' }}
|
||||
</template>
|
||||
<template #input_person="{ row }">
|
||||
{{userList.find(item => item.value == row.input_person)?.label}}
|
||||
</template>
|
||||
<template #apply_medic="{ row }">
|
||||
{{userList.find(item => item.value == row.apply_medic)?.label}}
|
||||
</template>
|
||||
<template #blood_breed="{ row }">
|
||||
{{ formatDict(row.blood_breed, 'xylx') }}
|
||||
</template>
|
||||
</CustomTable>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -167,36 +182,47 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import dayjs from 'dayjs'
|
||||
import { getDictData, formatDict, dictData } from '@/hooks'
|
||||
import { getDictData, formatDict, dictData, useCommonDict, useSysParam } from '@/hooks'
|
||||
import { billQueryList, queryBillOne, saveBillNo, deleteBillNo } from '@/api/blood'
|
||||
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({
|
||||
input_person: userInfo.name,
|
||||
hgbz: '1'
|
||||
})
|
||||
|
||||
const form = ref({})
|
||||
const bloodInfo = ref({})
|
||||
|
||||
const lrsjFlag = ref(false)
|
||||
const searchForm = ref({
|
||||
startTime: dayjs().format('YYYY-MM-DD'),
|
||||
endTime: dayjs().format('YYYY-MM-DD'),
|
||||
|
||||
stime: dayjs().format('YYYY-MM-DD'),
|
||||
etime: dayjs().format('YYYY-MM-DD'),
|
||||
})
|
||||
const tableData = ref([])
|
||||
|
||||
const columns = ref([
|
||||
{ label: '序号', type: 'index', width: 60, visible: true, align: 'center' },
|
||||
{ label: '申请单号', prop: 'applyNo', visible: true, align: 'center', width: 140 },
|
||||
{ label: '住院号', prop: 'visitNo', visible: true, align: 'center', },
|
||||
{ label: '录入人', prop: 'operator', visible: true, align: 'center', },
|
||||
{ label: '录入时间', prop: 'inputTime', visible: true, align: 'center', width: 160 },
|
||||
{ label: '申请科室', prop: 'applyDept', visible: true, align: 'center', },
|
||||
{ label: '申请日期', prop: 'applyDate', visible: true, align: 'center', },
|
||||
{ label: '申请医师', prop: 'applyDoctor', visible: true, align: 'center', },
|
||||
{ label: '临床诊断', prop: 'diagnosis', visible: true },
|
||||
{ label: '患者姓名', prop: 'patientName', visible: true, align: 'center', },
|
||||
{ label: '性别', prop: 'gender', visible: true, align: 'center', width: 40 },
|
||||
{ label: '床位号', prop: 'bedNo', visible: true, align: 'center', },
|
||||
{ label: '血液品种', prop: 'bloodKind', visible: true, align: 'center', },
|
||||
{ label: 'ABO血型', prop: 'abo', visible: true, align: 'center', width: 80 },
|
||||
{ label: 'Rh血型', prop: 'rh', visible: true, align: 'center', width: 60 },
|
||||
{ label: '申请血量', prop: 'applyVolume', visible: true, align: 'center', },
|
||||
{ label: '序号', type: 'index', width: 40, visible: true, align: 'center' },
|
||||
{ label: '申请单号', prop: 'bill_no', visible: true, align: 'center', width: 140 },
|
||||
{ label: '住院号', prop: 'beinhos_id', visible: true, align: 'center', },
|
||||
{ label: '录入人', prop: 'input_person', visible: true, align: 'center', slot: 'input_person' },
|
||||
{ label: '录入时间', prop: 'input_date', visible: true, align: 'center', width: 160 },
|
||||
{ label: '申请科室', prop: 'dept_id', visible: true, align: 'center', slot: 'deptId' },
|
||||
{ label: '申请日期', prop: 'apply_date', visible: true, align: 'center', width: 160 },
|
||||
{ label: '申请医师', prop: 'apply_medic', visible: true, align: 'center', slot: 'apply_medic' },
|
||||
{ label: '临床诊断', prop: 'diagnoses', visible: true, width: 160 },
|
||||
{ label: '患者姓名', prop: 'patient_name', visible: true, align: 'center', },
|
||||
{ label: '性别', prop: 'patient_sex', visible: true, align: 'center', width: 40 },
|
||||
{ label: '床位号', prop: 'patient_bed', visible: true, align: 'center', },
|
||||
{ label: '血液品种', prop: 'blood_breed', visible: true, align: 'center', slot: 'blood_breed' },
|
||||
{ label: 'ABO血型', prop: 'abo_type', visible: true, align: 'center', width: 80 },
|
||||
{ label: 'Rh血型', prop: 'rh_type', visible: true, align: 'center', width: 60 },
|
||||
{ label: '申请血量', prop: 'blood_num', visible: true, align: 'center', },
|
||||
{ label: '单位', prop: 'unit', visible: true, align: 'center', width: 40 },
|
||||
{ label: '合格标志', prop: 'qualified', visible: true, align: 'center', },
|
||||
{ label: '不合格原因', prop: 'notQualifiedReason', visible: true, width: 160 }
|
||||
{ label: '合格标志', prop: 'hgbz', visible: true, align: 'center', slot: 'hgbz' },
|
||||
{ label: '不合格原因', prop: 'hgyy', visible: true, width: 160 }
|
||||
])
|
||||
|
||||
const tableConfig = ref({
|
||||
@ -208,17 +234,63 @@ const tableConfig = ref({
|
||||
const columnDeagEnd = (data) => {
|
||||
columns.value = data.columns
|
||||
}
|
||||
const selectRow = ref({})
|
||||
|
||||
const onSearch = () => {
|
||||
console.log('search', form)
|
||||
const handleRowClick = (row) => {
|
||||
selectRow.value = row
|
||||
}
|
||||
|
||||
const onClear = () => {
|
||||
Object.keys(form).forEach(k => (form[k] = ''))
|
||||
const onSearch = () => {
|
||||
gettime()
|
||||
saveBillNo(form.value).then(res => {
|
||||
if (res.code == 0) {
|
||||
queryBillOne({ billNo: form.value.bill_no }).then(res => {
|
||||
bloodInfo.value = res.data[0] || {}
|
||||
})
|
||||
form.value.bill_no = ''
|
||||
searchHandle()
|
||||
}
|
||||
}).catch(err => {
|
||||
form.value.bill_no = ''
|
||||
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'
|
||||
billQueryList(searchForm.value).then(res => {
|
||||
tableData.value = res.rows
|
||||
})
|
||||
}
|
||||
|
||||
const cancelHandle = () => {
|
||||
if (!selectRow.value.bill_no) return ElMessage.warning('请选择申请单')
|
||||
|
||||
ElMessageBox.confirm(`确定取消接收${selectRow.value.bill_no}吗?`, '提示', { type: 'warning' }).then(() => {
|
||||
deleteBillNo({ billNo: selectRow.value.bill_no }).then(res => {
|
||||
if (res.code == 0) {
|
||||
searchHandle()
|
||||
ElMessage.success(res.msg)
|
||||
selectRow.value = {}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
const gettime = () => {
|
||||
getServerTime().then(time => {
|
||||
form.value.input_date = time
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getDictData('ks', 'billApplyStatus')
|
||||
getParam('JSSJSFXG') == 'Y' ? lrsjFlag.value = true : lrsjFlag.value = false
|
||||
getDictData('ks', 'billApplyStatus', 'xylx')
|
||||
getUserData()
|
||||
gettime()
|
||||
searchHandle()
|
||||
})
|
||||
|
||||
</script>
|
||||
@ -240,7 +312,7 @@ onMounted(() => {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
|
||||
.table_content {
|
||||
flex: 1;
|
||||
|
||||
@ -682,14 +682,13 @@ const cellStyle = ({ row, column, rowIndex, columnIndex }) => {
|
||||
}
|
||||
|
||||
const getBillStatusInfo = (code: string) => {
|
||||
// 兜底空数组,不存在字典时不执行find
|
||||
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: '#E6A23C' }
|
||||
|
||||
return { label: '未审核', color: '#909399' }
|
||||
}
|
||||
|
||||
// 血液品种列表
|
||||
|
||||
@ -10,130 +10,142 @@
|
||||
<div class="search-card">
|
||||
<el-form :model="searchForm" inline label-width="auto">
|
||||
<el-form-item label="科室:">
|
||||
<el-select v-model="searchForm.dept" placeholder="请选择科室">
|
||||
<el-option label="输血科" value="输血科" />
|
||||
</el-select>
|
||||
<SelectTable v-model:data="searchForm.dept" :tableData="dictData.ks" placeholder="" width="150" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="标本编号:">
|
||||
<el-input v-model="searchForm.sampleNo" placeholder="请输入" />
|
||||
<el-input v-model="searchForm.sample_no" placeholder="" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合格状态:">
|
||||
<el-select v-model="searchForm.qualifyStatus" placeholder="请选择">
|
||||
<el-option label="合格" value="合格" />
|
||||
<el-option label="不合格" value="不合格" />
|
||||
<el-select v-model="searchForm.hgbz" placeholder="">
|
||||
<el-option label="不合格" value="0" />
|
||||
<el-option label="合格" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请单状态:">
|
||||
<el-input v-model="searchForm.applyStatus" placeholder="请输入" />
|
||||
<SelectTable v-model:data="searchForm.status" :tableData="dictData.billApplyStatus" placeholder="" clearable
|
||||
width="150" />
|
||||
</el-form-item>
|
||||
<el-form-item label="病人姓名:">
|
||||
<el-input v-model="searchForm.patientName" placeholder="请输入" />
|
||||
<el-input v-model="searchForm.patname" placeholder="" />
|
||||
</el-form-item>
|
||||
<el-form-item label="病历号:">
|
||||
<el-input v-model="searchForm.medicalNo" placeholder="请输入" />
|
||||
<el-input v-model="searchForm.patno" placeholder="" />
|
||||
</el-form-item>
|
||||
<el-form-item label="申请单号:">
|
||||
<el-input v-model="searchForm.applyNo" placeholder="请输入" />
|
||||
<el-input v-model="searchForm.reqid" placeholder="" />
|
||||
</el-form-item>
|
||||
<el-form-item label="采集状态:">
|
||||
<el-select v-model="searchForm.collectStatus" placeholder="请选择">
|
||||
<el-option label="全部" value="全部" />
|
||||
<el-option label="已采集" value="已采集" />
|
||||
<el-option label="未采集" value="未采集" />
|
||||
<el-select v-model="searchForm.reqzt" placeholder="">
|
||||
<el-option label="待采集" value="1" />
|
||||
<el-option label="已采集" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请日期:">
|
||||
<el-date-picker v-model="searchForm.startDate" 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"
|
||||
placeholder="选择日期" style="width: 150px" />
|
||||
<span class="divider"> — </span>
|
||||
<el-date-picker v-model="searchForm.endDate" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
<el-date-picker v-model="searchForm.etime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期" style="width: 150px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">确定</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- 表格卡片 -->
|
||||
<div class="table-card">
|
||||
<div class="table-btn-bar">
|
||||
<el-button type="primary" plain icon="DocumentRemove" @click="handlePrint">打印标签</el-button>
|
||||
<div class="mb10">
|
||||
<el-button type="primary" plain @click="handleSearch">检索</el-button>
|
||||
<el-button type="warning" plain @click="handlePrint">打印标签</el-button>
|
||||
</div>
|
||||
|
||||
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" :enableColumnDrag="true"
|
||||
@column-drag-end="ColumnDragEnd" @selection-change="handleSelectionChange" />
|
||||
@column-drag-end="ColumnDragEnd" @row-click="handleRowClick">
|
||||
<template #purpose="{ row }">
|
||||
{{ obj[row.Purpose] }}
|
||||
</template>
|
||||
<template #dept="{ row }">
|
||||
{{ formatDict(row.Dept, 'ks') }}
|
||||
</template>
|
||||
<template #isMatch="{ row }">
|
||||
<el-checkbox :model-value="row.is_match == 'Y'" />
|
||||
</template>
|
||||
<template #bloodBreed="{ row }">
|
||||
{{ formatDict(row.blood_breed, 'xylx') }}
|
||||
</template>
|
||||
<template #pickNurse="{ row }">
|
||||
{{userList.find(v => v.value == row.Pick_Nurse)?.label || ''}}
|
||||
</template>
|
||||
<template #sendNurse="{ row }">
|
||||
{{userList.find(v => v.value == row.Send_Nurse)?.label || ''}}
|
||||
</template>
|
||||
<template #takeOverMan="{ row }">
|
||||
{{userList.find(v => v.value == row.TakeOver_Man)?.label || ''}}
|
||||
</template>
|
||||
<template #discardPerson="{ row }">
|
||||
{{userList.find(v => v.value == row.Discard_Person)?.label || ''}}
|
||||
</template>
|
||||
|
||||
</CustomTable>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
import { queryList, printBarCode } from '@/api/nurses'
|
||||
import { getDictData, formatDict, dictData, useCommonDict } from '@/hooks'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { printBase64PDF } from '@/utils/classCom'
|
||||
const { userList, getUserData, } = useCommonDict()
|
||||
// 搜索表单数据
|
||||
const searchForm = reactive({
|
||||
startDate: dayjs().format('YYYY-MM-DD'),
|
||||
endDate: dayjs().format('YYYY-MM-DD'),
|
||||
stime: dayjs().format('YYYY-MM-DD'),
|
||||
etime: dayjs().format('YYYY-MM-DD'),
|
||||
dept: '',
|
||||
sampleNo: '',
|
||||
qualifyStatus: '',
|
||||
applyStatus: '',
|
||||
patientName: '',
|
||||
medicalNo: '',
|
||||
applyNo: '',
|
||||
collectStatus: '全部'
|
||||
sample_no: '',
|
||||
hgbz: '',
|
||||
status: '',
|
||||
patname: '',
|
||||
patno: '',
|
||||
reqid: '',
|
||||
reqzt: ''
|
||||
})
|
||||
//标本用途
|
||||
const obj = {
|
||||
A: '输血',
|
||||
B: '血型鉴定',
|
||||
S: '治疗'
|
||||
}
|
||||
// 选中的表格数据
|
||||
const selectedRows = ref<any[]>([])
|
||||
const selectedRow = ref({})
|
||||
|
||||
// 表格模拟数据
|
||||
const tableData = ref([
|
||||
{
|
||||
index: '01',
|
||||
sampleNo: 'SB20260609001',
|
||||
sampleUse: '交叉配血',
|
||||
sourceDept: '输血科',
|
||||
applyNo: 'SQ20260609001',
|
||||
bloodType: '悬浮红细胞',
|
||||
crossMatch: '相容',
|
||||
aboBlood: 'A',
|
||||
rhBlood: '阳性',
|
||||
patientName: '张三',
|
||||
gender: '男',
|
||||
age: '35',
|
||||
birthDate: '1991-05-20',
|
||||
collectNurse: '李护士',
|
||||
collectTime: '2026-06-09 10:30:00',
|
||||
sendUser: '王医生',
|
||||
sendTime: '2026-06-09 10:40:00',
|
||||
receiveUser: '张检验',
|
||||
receiveTime: '2026-06-09 10:45:00',
|
||||
transportUser: '配送员A'
|
||||
}
|
||||
])
|
||||
const tableData = ref([])
|
||||
|
||||
const columns = ref([
|
||||
{ type: 'selection', width: 40, align: 'center', visible: true, },
|
||||
{ label: '序号', prop: 'index', width: 60, align: 'center', visible: true, },
|
||||
{ label: '标本编号', prop: 'sampleNo', align: 'center', visible: true, },
|
||||
{ label: '标本用途', prop: 'sampleUse', align: 'center', visible: true, },
|
||||
{ label: '来源科室', prop: 'sourceDept', align: 'center', visible: true, },
|
||||
{ label: '对应单号', prop: 'applyNo', width: 120, align: 'center', visible: true, },
|
||||
{ label: '血液品种', prop: 'bloodType', align: 'center', visible: true, },
|
||||
{ label: '交叉配血', prop: 'crossMatch', align: 'center', visible: true, },
|
||||
{ label: '血型', prop: 'aboBlood', align: 'center', visible: true, },
|
||||
{ label: 'Rh血型', prop: 'rhBlood', align: 'center', visible: true, },
|
||||
{ label: '姓名', prop: 'patientName', align: 'center', visible: true, },
|
||||
{ label: '性别', prop: 'gender', width: 40, align: 'center', visible: true, },
|
||||
{ label: '年龄', prop: 'age', width: 40, align: 'center', visible: true, },
|
||||
{ label: '出生日期', prop: 'birthDate', align: 'center', visible: true, },
|
||||
{ label: '采集护士', prop: 'collectNurse', align: 'center', visible: true, },
|
||||
{ label: '采集时间', prop: 'collectTime', align: 'center', visible: true, },
|
||||
{ label: '送检人', prop: 'sendUser', align: 'center', visible: true, },
|
||||
{ label: '送检时间', prop: 'sendTime', align: 'center', visible: true, },
|
||||
{ label: '接收人', prop: 'receiveUser', align: 'center', visible: true, },
|
||||
{ label: '接收时间', prop: 'receiveTime', align: 'center', visible: true, },
|
||||
{ label: '运送人', prop: 'transportUser', align: 'center', visible: true, }
|
||||
// { type: 'selection', width: 40, align: 'center', visible: true, },
|
||||
{ label: '序号', type: 'index', width: 40, align: 'center', visible: true, },
|
||||
{ label: '标本编号', prop: 'Sample_No', width: 100, align: 'center', visible: true, },
|
||||
{ label: '标本用途', prop: 'Purpose', align: 'center', visible: true, slot: 'purpose' },
|
||||
{ label: '来源科室', prop: 'Dept', align: 'center', visible: true, slot: 'dept' },
|
||||
{ label: '对应单号', prop: 'Relate_ApplyNo', width: 120, align: 'center', visible: true, },
|
||||
{ label: '血液品种', prop: 'blood_breed', align: 'center', visible: true, slot: 'bloodBreed' },
|
||||
{ label: '交叉配血', prop: 'is_match', width: 70, align: 'center', visible: true, slot: 'isMatch' },
|
||||
{ label: '血型', prop: 'Blood_Type', width: 40, align: 'center', visible: true, },
|
||||
{ label: 'Rh血型', prop: 'Rh_Blood_Type', width: 60, align: 'center', visible: true, },
|
||||
{ label: '姓名', prop: 'Sample_Name', width: 60, align: 'center', visible: true, },
|
||||
{ label: '性别', prop: 'Sex', width: 40, align: 'center', visible: true, },
|
||||
{ label: '年龄', prop: 'Age', width: 40, align: 'center', visible: true, },
|
||||
{ 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: 'Discard_Person', align: 'center', visible: true, slot: 'discardPerson' }
|
||||
])
|
||||
const tableConfig = ref({
|
||||
border: true,
|
||||
@ -146,15 +158,34 @@ const ColumnDragEnd = (newColumns) => {
|
||||
}
|
||||
// 事件处理
|
||||
const handleSearch = () => {
|
||||
console.log('搜索条件:', searchForm)
|
||||
getList()
|
||||
}
|
||||
const handlePrint = () => {
|
||||
console.log('作废:', selectedRows.value)
|
||||
if (!selectedRow.value.Sample_No) return ElMessage.warning('请选择标本')
|
||||
printBarCode({ sampleNo: selectedRow.value.Sample_No }).then(res => {
|
||||
if (res.data) {
|
||||
printBase64PDF(res.data)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectedRows.value = val
|
||||
const handleRowClick = (val) => {
|
||||
selectedRow.value = val
|
||||
}
|
||||
const getList = () => {
|
||||
searchForm.stime = dayjs(searchForm.stime).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
searchForm.etime = dayjs(searchForm.etime).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
queryList(searchForm).then(res => {
|
||||
tableData.value = res.data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
getDictData('ks', 'billApplyStatus', 'xylx')
|
||||
getUserData()
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@ -186,16 +217,10 @@ const handleSelectionChange = (val: any[]) => {
|
||||
background: #fff;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.07);
|
||||
padding: 16px;
|
||||
padding: 12px;
|
||||
height: calc(100% - 125px);
|
||||
|
||||
// 右上角按钮栏(作废/审核)
|
||||
.table-btn-bar {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user