条码状态修改
This commit is contained in:
parent
54f0504cd6
commit
dc0ef70f34
@ -1,17 +1,12 @@
|
||||
<template>
|
||||
<div class="labpat_box">
|
||||
<el-form :model="labPat" label-width="5rem" label-position="right" class="left-form">
|
||||
<div :class="['sh_box', getColor(newStatus)]" v-if="newStatus > 10">
|
||||
<div :class="['sh_box', getColor(newStatus)]" v-if="visbileMask">
|
||||
<div class="text">{{ getLableType(newStatus) }}</div>
|
||||
</div>
|
||||
<el-form-item label="病人来源">
|
||||
<!-- <el-col :span="16"> -->
|
||||
<SelectTable v-model:data="labPat.patType" :fields="brlyFields" :table-data="dictData.PT" placeholder=""
|
||||
@getDataValue="handleFieldChange" />
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="8">
|
||||
<el-checkbox v-model="labPat.jzbz" true-value="1" class="check_box"> 急诊 </el-checkbox>
|
||||
</el-col> -->
|
||||
</el-form-item>
|
||||
<el-form-item label="病人代号" required>
|
||||
<el-input v-model="labPat.patId" @change="brdhHandle" />
|
||||
@ -88,10 +83,10 @@ const props = defineProps({
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
//结果主键
|
||||
labPatKey: {
|
||||
type: Object,
|
||||
default: () => { }
|
||||
//展示水印
|
||||
visbileMask: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
});
|
||||
const newStatus = ref('');
|
||||
@ -124,8 +119,8 @@ const handleFieldChange = async () => {
|
||||
};
|
||||
|
||||
const getLableType = (type: string) => {
|
||||
const item = dictData.value.ZT.find((p: any) => p.value === type);
|
||||
return item ? item.label : '';
|
||||
const item = dictData.value.SQDS.find((p: any) => p.value === type);
|
||||
return item && props.visbileMask ? item.label : '';
|
||||
}
|
||||
|
||||
const getColor = (type: string) => {
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
</el-row>
|
||||
<el-row :gutter="5" style="height: 100%;">
|
||||
<el-col :span="7">
|
||||
<Info v-model:labPat="labpat" @getBrdh="getBrdhHandle" />
|
||||
<Info v-model:labPat="labpat" :visbileMask="visbileMask" @getBrdh="getBrdhHandle" />
|
||||
</el-col>
|
||||
<el-col :span="17" style="height: 100%;">
|
||||
<el-tabs v-model="activeName" type="card" class="tabs_box" @tab-click="handleTabClick">
|
||||
@ -53,15 +53,16 @@
|
||||
</template> -->
|
||||
<template #itemclass_yblx="{ row }">
|
||||
<SelectTable v-model:data="row.itemclass_yblx" :tableData="dictData.BT" placeholder="请选择"
|
||||
:clearable="false" v-if="labpat.status < 20 || !labpat.status" value="label"
|
||||
:clearable="false" v-if="row.status == 10" value="label"
|
||||
@getDataValue="(data) => { getyblxData(data, row) }" class="full-width-input" />
|
||||
<span v-else> {{ formatDict(row.itemclass_yblx, 'BT') }}</span>
|
||||
<span v-else style="padding-left: 5px;"> {{ formatDict(row.itemclass_yblx, 'BT') }}</span>
|
||||
</template>
|
||||
<template #status="{ row }">
|
||||
<span v-if="row.rowSeq == 1"> {{ formatDict(labpat.status, 'ZT') }}</span>
|
||||
<span v-if="row.rowSeq == 1"> {{ formatDict(row.status, 'ZT') }}</span>
|
||||
</template>
|
||||
<template #action="{ row }" v-if="labpat.status < 20 || !labpat.status">
|
||||
<el-button type="danger" :text='true' size="small" @click="delItem(row)">删除</el-button>
|
||||
<template #action="{ row }">
|
||||
<el-button type="danger" :text='true' v-if="row.status == 10" size="small"
|
||||
@click="delItem(row)">删除</el-button>
|
||||
</template>
|
||||
</CustomVxeTable>
|
||||
</div>
|
||||
@ -78,7 +79,7 @@
|
||||
placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="status">
|
||||
<SelectTable v-model:data="searchForm.status" :tableData="dictData.SQDZT" clearable style="width: 9.5rem;"
|
||||
<SelectTable v-model:data="searchForm.status" :tableData="dictData.SQDS" clearable style="width: 9.5rem;"
|
||||
placeholder="请选择状态" size="small" @getDataValue="handleQuery" />
|
||||
</el-form-item>
|
||||
|
||||
@ -110,7 +111,7 @@
|
||||
@cell-click="handleRowClick" size="small" keyField='applyid' :cell-style="sqdcellStyle"
|
||||
:scrollYConfig="{ enabled: true, rSize: 30, height: '100%', }" class="mytable-style" ref="tableRef">
|
||||
<template #status="{ row }">
|
||||
{{ formatDict(row.status, 'ZT') }}
|
||||
{{ formatDict(row.status, 'SQDS') }}
|
||||
</template>
|
||||
</CustomVxeTable>
|
||||
</div>
|
||||
@ -215,11 +216,13 @@ const isDataChanged = () => {
|
||||
|
||||
const rowInfo = ref({})
|
||||
|
||||
const visbileMask = ref(false)
|
||||
const handleRowClick = ({ row }) => {
|
||||
rowInfo.value = row
|
||||
if (!row?.applyid) return
|
||||
queryReqDetail({ applyId: row.applyid }).then(res => {
|
||||
labpat.value = res.data.regApply
|
||||
visbileMask.value = res.data.regApplyDetailList.some(item => { return item.status > 10 })
|
||||
sqXmList.value = res.data.regApplyDetailList.map(item => ({
|
||||
itemcode: item.orderItemCode,
|
||||
itemname: item.orderItemName,
|
||||
@ -230,7 +233,8 @@ const handleRowClick = ({ row }) => {
|
||||
classid: item.classid,
|
||||
barcode: item.barcode,
|
||||
itemclass: item.itemclass,
|
||||
itemclass_tips: item.itemclass_tips
|
||||
itemclass_tips: item.itemclass_tips,
|
||||
status: item.status,
|
||||
}))
|
||||
// 异步初始化数据
|
||||
nextTick(() => {
|
||||
@ -459,7 +463,7 @@ const sqXmColumns = ref([
|
||||
{ field: 'itemname', title: '项目名称', align: 'center', resizable: true, width: 220, },
|
||||
{ field: 'newbarcode', title: '条码号', align: 'center', width: 120, resizable: true, },
|
||||
{ field: 'amount', title: '单价', align: 'center', width: 60, resizable: true },
|
||||
{ field: 'itemclass_yblx', title: '样本', align: 'center', width: 80, slotName: 'itemclass_yblx', resizable: true },
|
||||
{ field: 'itemclass_yblx', title: '样本', width: 80, slotName: 'itemclass_yblx', resizable: true },
|
||||
{ field: 'status', title: '状态', align: 'center', resizable: true, width: 80, slotName: 'status' },
|
||||
])
|
||||
|
||||
@ -488,7 +492,7 @@ const sqxmCzList = computed(() => {
|
||||
// 数据分组
|
||||
const { tableData } = useGroupTableData(
|
||||
sqXmList.value,
|
||||
'barcode',
|
||||
['itemclass', 'barcode'],
|
||||
['newitemclass', 'newbarcode', 'newitemclass_tips'],
|
||||
'orderDate',
|
||||
['itemclass', 'barcode', 'itemclass_tips'],
|
||||
@ -501,11 +505,12 @@ watch(
|
||||
() => {
|
||||
nextTick(() => {
|
||||
// 等待 DOM 渲染完成后执行勾选
|
||||
if (labpat.value.status < 20 && xmRef.value) {
|
||||
sqxmCzList.value.forEach(item => {
|
||||
sqxmCzList.value.forEach(item => {
|
||||
if (item.status == 10) {
|
||||
xmRef.value.toggleRowSelection(item, true)
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
@ -527,7 +532,11 @@ const tableConfig = ref({
|
||||
range: false, // 是否支持范围选择(按住 Shift 连续选择)
|
||||
disabled: false, // 是否禁用全部复选框
|
||||
reserve: false, // 是否保留勾选状态(分页/筛选时)
|
||||
highlight: false // 是否高亮选中行
|
||||
highlight: false, // 是否高亮选中行
|
||||
checkMethod: ({ row }) => {
|
||||
//检验申请状态才能勾选
|
||||
return row.status == 10;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@ -537,7 +546,7 @@ const xmRef = useTemplateRef('xmRef')
|
||||
const selectionChange = (checked, row, selection) => {
|
||||
// console.log('==>', checked, row, selection);
|
||||
sqxmCzList.value.forEach(item => {
|
||||
if (row.barcode === item.barcode) {
|
||||
if (row.barcode === item.barcode && row.status == 10) {
|
||||
xmRef.value.toggleRowSelection(item, checked)
|
||||
}
|
||||
});
|
||||
@ -552,7 +561,7 @@ const delItem = (row) => {
|
||||
}
|
||||
|
||||
const dbRowclick = ({ row }) => {
|
||||
if (labpat.value.status > 10) return ElMessage.warning('申请单已审核,不能添加项目!')
|
||||
if (visbileMask.value) return ElMessage.warning('申请单已审核,不能添加项目!')
|
||||
const index = sqXmList.value.findIndex(item => item.itemcode == row.itemcode)
|
||||
if (index > -1) {
|
||||
ElMessage.warning('已存在该项目')
|
||||
@ -580,7 +589,7 @@ const itemclassList = ref([]) // 容器类别
|
||||
onMounted(() => {
|
||||
getXmList()
|
||||
changeDays(3)
|
||||
getDictData('PT', 'SX', 'AU', 'ZT', 'ZJLX', 'DEPT', 'DOCTOR', 'SLZQ', 'BT', 'SQDZT')
|
||||
getDictData('PT', 'SX', 'AU', 'ZT', 'ZJLX', 'DEPT', 'DOCTOR', 'SLZQ', 'BT', 'SQDS')
|
||||
|
||||
listitemclass({ pageSize: 9999, pageNum: 1 }).then(response => {
|
||||
itemclassList.value = response.rows;
|
||||
|
||||
@ -102,7 +102,6 @@ const sjHandle = (val: number) => {
|
||||
sampleSign(params).then((res) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('操作成功!')
|
||||
dstHospCode.value = ''
|
||||
barcodes.value.forEach((item) => {
|
||||
tableData.value.forEach((element, index) => {
|
||||
if (item == element.barcode) {
|
||||
@ -144,6 +143,7 @@ onMounted(() => {
|
||||
}
|
||||
})
|
||||
dstHospCode.value = res.rows[0].hospitalCode
|
||||
dstHospName.value = res.rows[0].hospitalName
|
||||
})
|
||||
|
||||
listregdict({ pageSize: 100, pageNum: 1, dictType: 'ZT' }).then((res) => {
|
||||
|
||||
@ -14,17 +14,15 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="打印状态:" prop="dybz">
|
||||
<el-select v-model="queryParams.dybz" placeholder="请选择" clearable @change="handleQuery">
|
||||
<el-option label="已打印" value="1" />
|
||||
<el-option label="未打印" value="0" />
|
||||
</el-select>
|
||||
<el-form-item label="条码状态:" prop="barcode_zt">
|
||||
<SelectTable v-model:data="queryParams.barcode_zt" :tableData="dictData.ZT" placeholder="请选择状态"
|
||||
:size="aotuSize" @getDataValue="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="科室:" prop="ksdh">
|
||||
<SelectTable v-model:data="queryParams.ksdh" :fields="ksdhFields" :tableData="dictData.DP || []"
|
||||
:size="aotuSize" label="label" value="value" objKey="value" :border="true" placeholder="请选择科室"
|
||||
:size="aotuSize" label="label" value="value" objKey="value" placeholder="请选择科室"
|
||||
@getDataValue="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -36,7 +34,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病人号:" prop="brdh">
|
||||
<el-form-item label="病人代号:" prop="brdh">
|
||||
<el-input v-model="queryParams.brdh" clearable placeholder="请输入病人号" @keyup.enter="handleQuery"
|
||||
@clear="handleQuery" />
|
||||
</el-form-item>
|
||||
@ -97,6 +95,9 @@
|
||||
<div>
|
||||
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :loading="loading"
|
||||
@row-click="rowHandle" :enableColumnDrag="true" @column-drag-end="handleColumnDragEnd">
|
||||
<template #barcode_zt="{ row }">
|
||||
<span>{{ formatDict(row.barcode_zt, 'ZT') }}</span>
|
||||
</template>
|
||||
<template #dybz="{ row }">
|
||||
<svg-icon v-if="row.dybz == 1" icon-class="lvgou" />
|
||||
</template>
|
||||
@ -220,11 +221,11 @@ interface QueryParams {
|
||||
|
||||
// 提交表单数据
|
||||
const queryParams = reactive<QueryParams>({
|
||||
times: ['2025-08-19', '2025-08-19'],
|
||||
times: [],
|
||||
// ksdh: '0203',
|
||||
ksdh: '',
|
||||
brlyname: '',
|
||||
sqh: '25080109476',
|
||||
sqh: '',
|
||||
alarmflag: false,
|
||||
jzbz: false,
|
||||
brxm: '',
|
||||
@ -312,6 +313,7 @@ const tableData = ref([])
|
||||
const columns = ref([
|
||||
{ type: 'selection', visible: true, align: 'center', width: 30, label: '多选框' },
|
||||
{ prop: 'yljg', label: '委托机构', align: 'center', visible: true, width: 200 },
|
||||
{ prop: 'applyid', label: '申请单号', align: 'center', visible: true, width: 120 },
|
||||
{ prop: 'brdh', label: '病人代号', align: 'center', visible: true, width: 100 },
|
||||
{ prop: 'brxm', label: '病人姓名', align: 'center', visible: true, },
|
||||
{ prop: 'brxbname', label: '性别', align: 'center', visible: true, width: 40 },
|
||||
@ -320,6 +322,7 @@ const columns = ref([
|
||||
{ prop: 'yblxname', label: '样本类型', align: 'center', visible: true, },
|
||||
{ prop: 'sqsj', label: '申请时间', align: 'center', visible: true, width: 150 },
|
||||
{ prop: 'sqh', label: '条码号', align: 'center', visible: true, width: 150 },
|
||||
{ prop: 'barcode_zt', label: '状态', align: 'center', visible: true, width: 150, slot: 'barcode_zt' },
|
||||
{ prop: 'confirmtime', label: '报告时间', align: 'center', visible: true, sortable: true, width: 150 },
|
||||
{ prop: 'sjysname', label: '送检医生', align: 'center', visible: true, width: 80 },
|
||||
{ prop: 'brlyname', label: '病人类型', align: 'center', visible: true, width: 80 },
|
||||
@ -841,38 +844,26 @@ onMounted(async () => {
|
||||
})
|
||||
|
||||
// 加载病人来源字典
|
||||
const dictRefs = await comDict('PT', 'DP');
|
||||
const dictRefs = await comDict('PT', 'DP', 'ZT');
|
||||
|
||||
// 从 ref 中获取实际数据
|
||||
dictData.value = {
|
||||
PT: toRaw(dictRefs.PT.value) || [],
|
||||
DP: toRaw(dictRefs.DP.value) || [],
|
||||
ZT: toRaw(dictRefs.ZT.value) || [],
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
const getList = () => {
|
||||
const data = {
|
||||
alarmflag: alarmflag.value,
|
||||
jzbz: jzbz.value,
|
||||
dybz: queryParams.dybz,
|
||||
ksdh: queryParams.ksdh,
|
||||
brlyname: queryParams.brlyname,
|
||||
brxm: queryParams.brxm,
|
||||
brdh: queryParams.brdh,
|
||||
ch: queryParams.ch,
|
||||
yljg: queryParams.yljg,
|
||||
st: '',
|
||||
et: '',
|
||||
pageSize: queryParams.pageSize || 10,
|
||||
pageNum: queryParams.pageNum || 1
|
||||
}
|
||||
const data = { ...queryParams, st: '', et: '', alarmflag: alarmflag.value, jzbz: jzbz.value, }
|
||||
if (queryParams.times && queryParams.times.length) {
|
||||
data.st = queryParams.times[0]
|
||||
data.et = queryParams.times[1]
|
||||
} else {
|
||||
return ElMessage.error('日期时间段不能为空');
|
||||
}
|
||||
delete data.times
|
||||
loading.value = true
|
||||
reportList(data).then((res) => {
|
||||
if (res.code == 200) {
|
||||
@ -909,6 +900,13 @@ function adjustTableHeight() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const formatDict = (v: string, dictType: string) => {
|
||||
if (v == undefined) return;
|
||||
return (
|
||||
dictData.value[dictType]?.find(item => item.value == v.trim())?.label || v
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user