Fix Bug #550: fallback修复
This commit is contained in:
18
openhis-ui-vue3/src/api/outpatient.js
Normal file
18
openhis-ui-vue3/src/api/outpatient.js
Normal 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,
|
||||
});
|
||||
}
|
||||
124
openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue
Normal file
124
openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue
Normal 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>
|
||||
Reference in New Issue
Block a user