Fix Bug #550: fallback修复

This commit is contained in:
2026-05-27 01:58:27 +08:00
parent ce325b96a5
commit 37c197081a
5 changed files with 284 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import request from '@/utils/request';
// 获取检查申请列表
export function fetchCheckRequests() {
return request({
url: '/outpatient/check-requests',
method: 'get',
});
}
// 提交检查申请(仅提交已选项目)
export function submitCheckRequests(selectedList) {
return request({
url: '/outpatient/check-requests/submit',
method: 'post',
data: selectedList,
});
}

View File

@@ -0,0 +1,124 @@
<template>
<div class="check-request">
<el-table
ref="table"
:data="requestList"
style="width: 100%"
@selection-change="handleSelectionChange"
:row-key="row => row.id"
:default-expand-all="true"
>
<!-- 解决名称遮挡:使用 tooltip 并限制宽度 -->
<el-table-column
prop="itemName"
label="检查项目"
width="200"
:show-overflow-tooltip="true"
>
<template #default="{ row }">
<el-tooltip
class="item"
effect="dark"
:content="row.itemName"
placement="top-start"
>
<span class="ellipsis">{{ row.itemName }}</span>
</el-tooltip>
</template>
</el-table-column>
<!-- 解决自动勾选冲突:改为手动控制勾选状态 -->
<el-table-column
type="selection"
width="55"
:selectable="selectableRow"
/>
<!-- 其他列保持不变 -->
<el-table-column prop="spec" label="规格" width="120" />
<el-table-column prop="deptName" label="申请科室" width="120" />
<el-table-column prop="applyDoctor" label="申请医生" width="120" />
<el-table-column prop="applyTime" label="申请时间" width="180" />
</el-table>
<div class="actions">
<el-button type="primary" @click="confirmSelection">确认</el-button>
<el-button @click="clearSelection">清空</el-button>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { ElMessage } from 'element-plus';
import { fetchCheckRequests, submitCheckRequests } from '@/api/outpatient';
const requestList = ref([]);
const selectedRows = ref([]);
// 表格实例
const table = ref(null);
// 获取检查申请列表
onMounted(async () => {
const { data } = await fetchCheckRequests();
requestList.value = data;
});
// 行是否可选:防止同一检查项目的冲突自动勾选
const selectableRow = (row) => {
// 同一检查项目itemCode只能选中一条
const alreadySelected = selectedRows.value.some(
(item) => item.itemCode === row.itemCode
);
return !alreadySelected;
};
// 处理手动勾选变化
const handleSelectionChange = (selection) => {
selectedRows.value = selection;
};
// 确认选择
const confirmSelection = async () => {
if (selectedRows.value.length === 0) {
ElMessage.warning('请先选择检查项目');
return;
}
try {
await submitCheckRequests(selectedRows.value);
ElMessage.success('检查申请已提交');
// 提交成功后刷新列表并清空选择
const { data } = await fetchCheckRequests();
requestList.value = data;
clearSelection();
} catch (e) {
ElMessage.error('提交失败,请重试');
}
};
// 清空选择
const clearSelection = () => {
selectedRows.value = [];
if (table.value) {
table.value.clearSelection();
}
};
</script>
<style scoped>
.check-request {
padding: 20px;
}
.actions {
margin-top: 20px;
text-align: right;
}
.ellipsis {
display: inline-block;
max-width: 180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>