- 将所有表格的单元格合并方法从数组格式 [rowspan, colspan] 改为对象格式 { rowspan, colspan }
- 为 vxe-table 组件添加 checkbox-config 配置以支持复选框保留选择功能
- 移除复选框的 :reserve-selection 属性并改用 checkbox-config 配置
- 全局注册 VxeTableCompat 组件来归一化 cell-click 和 current-change 事件参数
- 更新技术执行和技术审批页面的表格组件配置和操作逻辑
- 优化
301 lines
8.3 KiB
Vue
Executable File
301 lines
8.3 KiB
Vue
Executable File
<!--
|
||
* @Author: sjjh
|
||
* @Date: 2025-04-16 20:54:48
|
||
* @Description:
|
||
-->
|
||
<template>
|
||
<div class="medicalOrderManagement-container">
|
||
<div class="medicalOrderManagement-operate">
|
||
<el-space :size="4">
|
||
<el-select v-model="searchForm.patientStatus" placeholder="执行状态" style="width: 100px">
|
||
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||
</el-select>
|
||
<el-select v-model="searchForm.selectedType" placeholder="医嘱类型" style="width: 100px">
|
||
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||
</el-select>
|
||
<el-select v-model="searchForm.executionType" placeholder="执行单类型" style="width: 100px">
|
||
<el-option v-for="item in executionTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||
</el-select>
|
||
<el-input v-model="searchForm.searchVal" style="width: 100px" placeholder="医嘱名称" />
|
||
<!-- 增加预计执行时间 时间范围筛选 -->
|
||
<el-date-picker v-model="searchForm.timeRange" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||
end-placeholder="结束日期" style="width: 200px" />
|
||
<el-button type="primary">查询</el-button>
|
||
<el-button type="danger">退回</el-button>
|
||
<el-button type="primary">通过校对</el-button>
|
||
</el-space>
|
||
<el-space :size="4">
|
||
|
||
</el-space>
|
||
</div>
|
||
<div class="medicalOrderManagement-table">
|
||
<vxe-table :data="medicalOrderManagementData" :row-config="{ keyField: 'id' }" style="width: 100%; height: 100%" border
|
||
:span-method="arraySpanMethod">
|
||
<vxe-column type="checkbox" />
|
||
<vxe-column title="类型" field="name">
|
||
<template #default="{ row }">
|
||
<span v-if="!row.children">长期/西药</span>
|
||
<template v-else>
|
||
{{ row.name }} 11 床【000000001】 林俊杰 女/24 重 1级 自费 主诊断 医生:医生甲 预交金:1990.3
|
||
</template>
|
||
</template>
|
||
</vxe-column>
|
||
|
||
<vxe-column title="医嘱内容" field="content">
|
||
<template #default="{ row }">
|
||
<span v-if="row.children">{{ row.content }}</span>
|
||
</template>
|
||
</vxe-column>
|
||
<vxe-column title="开始终止" field="gender">
|
||
<template #default="{ row }">
|
||
<div v-if="!row.children">
|
||
<div> 05/04 07:00 </div>
|
||
<div> 05/25 07:00 </div>
|
||
</div>
|
||
</template>
|
||
</vxe-column>
|
||
<vxe-column title="补费绑定" field="gender">
|
||
<template #default="{ row }">
|
||
<el-select v-model="row.reimbursementBinding" placeholder="请选择" style="width: 100%">
|
||
<el-option v-for="item in reimbursementOptions" :key="item.value" :label="item.label"
|
||
:value="item.value" />
|
||
</el-select>
|
||
</template>
|
||
</vxe-column>
|
||
<vxe-column title="执行科室" field="gender">
|
||
|
||
</vxe-column>
|
||
<vxe-column title="签发时间" field="gender">
|
||
|
||
</vxe-column>
|
||
</vxe-table>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
<script setup lang="ts">
|
||
import {onBeforeMount, onMounted, reactive, ref} from 'vue'
|
||
// const { proxy } = getCurrentInstance()
|
||
// const emits = defineEmits([])
|
||
// const props = defineProps({})
|
||
const state = reactive({})
|
||
onBeforeMount(() => { })
|
||
onMounted(() => { })
|
||
defineExpose({ state })
|
||
const medicalOrderManagementData = ref([
|
||
{
|
||
id: 1,
|
||
name: '张三',
|
||
age: 20,
|
||
gender: '男',
|
||
|
||
children: [
|
||
{
|
||
name: '',
|
||
age: 10,
|
||
gender: '男',
|
||
content: '维生素B12注射液【1ml:0.5mg*1】 ',
|
||
dates: [{
|
||
date: '05/04',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}, {
|
||
date: '05/05',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}]
|
||
}, {
|
||
name: '',
|
||
age: 10,
|
||
gender: '男',
|
||
content: '维生素B12注射液【1ml:0.5mg*1】 ',
|
||
dates: [{
|
||
date: '05/04',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}, {
|
||
date: '05/05',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}]
|
||
}]
|
||
},
|
||
{
|
||
id: 2,
|
||
name: '李四',
|
||
age: 20,
|
||
gender: '男',
|
||
|
||
children: [
|
||
{
|
||
name: '',
|
||
age: 10,
|
||
gender: '男',
|
||
content: '维生素B12注射液【1ml:0.5mg*1】 ',
|
||
dates: [{
|
||
date: '05/04',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}, {
|
||
date: '05/05',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}]
|
||
}, {
|
||
name: '',
|
||
age: 10,
|
||
gender: '男',
|
||
content: '维生素B12注射液【1ml:0.5mg*1】 ',
|
||
dates: [{
|
||
date: '05/04',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}, {
|
||
date: '05/05',
|
||
times: [{
|
||
time: '08:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}, {
|
||
time: '12:00',
|
||
nurse: '刘护士',
|
||
checked: false
|
||
}]
|
||
}]
|
||
}]
|
||
}
|
||
])
|
||
|
||
const reimbursementOptions = [
|
||
{ value: '首瓶8.5', label: '首瓶8.5' },
|
||
{ value: '未绑定', label: '未绑定' },
|
||
{ value: '待绑定', label: '待绑定' }
|
||
]
|
||
const arraySpanMethod = ({
|
||
row,
|
||
column,
|
||
rowIndex,
|
||
columnIndex
|
||
}: any) => {
|
||
console.log(row, column, rowIndex, columnIndex);
|
||
// 如果是父级行
|
||
if (row.children && row.children.length > 0) {
|
||
if (columnIndex === 0) {
|
||
return { rowspan: 1, colspan: 1 }
|
||
}
|
||
// 如果是患者列
|
||
if (columnIndex === 1) {
|
||
return { rowspan: 1, colspan: 6 }
|
||
} else {
|
||
return { rowspan: 1, colspan: 0 }
|
||
}
|
||
}
|
||
// 如果是子级行,显示其他列
|
||
if (!row.children || row.children.length == 0) {
|
||
return { rowspan: 1, colspan: 1 }
|
||
}
|
||
// 如果是父级行,隐藏其他列
|
||
return { rowspan: 1, colspan: 1 }
|
||
}
|
||
const statusOptions = [
|
||
{ value: '全部', label: '全部' },
|
||
{ value: '药品', label: '药品' },
|
||
{ value: '本院区', label: '本院区' },
|
||
{ value: '他科', label: '他科' },
|
||
{ value: '床头卡', label: '床头卡' }
|
||
]
|
||
const typeOptions = [
|
||
{ value: '全部', label: '全部' },
|
||
{ value: '长期', label: '长期' },
|
||
{ value: '临时', label: '临时' }
|
||
]
|
||
const executionTypeOptions = [
|
||
{ value: '未交对', label: '未交对' },
|
||
{ value: '已校对', label: '已校对' },
|
||
{ value: '已停止', label: '已停止' },
|
||
{ value: '已作废', label: '已作废' }
|
||
]
|
||
const searchForm = reactive({
|
||
searchVal: '',
|
||
patientStatus: '全部',
|
||
selectedType: '全部',
|
||
timeRange: [],
|
||
executionType: '全部',
|
||
isPrintExecution: true,
|
||
isPrintLabel: true
|
||
})
|
||
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.medicalOrderManagement-container {
|
||
height: 100%;
|
||
width: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
|
||
.medicalOrderManagement-operate {
|
||
height: 49px;
|
||
width: 100%;
|
||
flex: none;
|
||
align-items: center;
|
||
border-bottom: 1px solid #e8e8e8;
|
||
padding: 8px;
|
||
}
|
||
|
||
.medicalOrderManagement-table {
|
||
height: 44px;
|
||
width: 100%;
|
||
flex: 1;
|
||
padding: 8px;
|
||
}
|
||
}
|
||
</style>
|