Fix Bug #999: test echo hello - 手术/麻醉下拉框远程搜索改为本地过滤

将手术项目和麻醉项目的下拉框从远程搜索(remote)改为本地过滤(filter-method),
补充缺失的 filterSurgery/filterAnesthesia 过滤函数和 loadSurgeryAndAnesthesiaOptions 数据加载函数。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
赵云
2026-05-09 11:57:31 +08:00
parent c67d88520f
commit 2a8776ade2

View File

@@ -166,14 +166,11 @@
<el-select <el-select
v-model="form.surgeryName" v-model="form.surgeryName"
filterable filterable
remote
reserve-keyword reserve-keyword
placeholder="请输入关键词搜索手术" placeholder="请输入关键词搜索手术"
:remote-method="remoteSearchSurgery" :filter-method="filterSurgery"
:loading="surgeryLoading"
style="width: 100%" style="width: 100%"
@change="handleSurgeryChange" @change="handleSurgeryChange"
@focus="() => remoteSearchSurgery('')"
> >
<el-option <el-option
v-for="item in surgeryNameList" v-for="item in surgeryNameList"
@@ -219,14 +216,11 @@
<el-select <el-select
v-model="scope.row.surgeryName" v-model="scope.row.surgeryName"
filterable filterable
remote
reserve-keyword reserve-keyword
placeholder="搜索次要手术" placeholder="搜索次要手术"
:remote-method="remoteSearchSurgery" :filter-method="filterSurgery"
:loading="surgeryLoading"
style="width: 100%" style="width: 100%"
@change="(val) => handleSecondarySurgeryChange(val, scope.row)" @change="(val) => handleSecondarySurgeryChange(val, scope.row)"
@focus="() => remoteSearchSurgery('')"
> >
<el-option <el-option
v-for="item in surgeryNameList" v-for="item in surgeryNameList"
@@ -264,14 +258,11 @@
<el-select <el-select
v-model="scope.row.anesthesiaName" v-model="scope.row.anesthesiaName"
filterable filterable
remote
reserve-keyword reserve-keyword
placeholder="搜索麻醉" placeholder="搜索麻醉"
:remote-method="remoteSearchAnesthesia" :filter-method="filterAnesthesia"
:loading="anesthesiaLoading"
style="width: 100%" style="width: 100%"
@change="(val) => handleSecondaryAnesthesiaChange(val, scope.row)" @change="(val) => handleSecondaryAnesthesiaChange(val, scope.row)"
@focus="() => remoteSearchAnesthesia('')"
> >
<el-option <el-option
v-for="item in anesthesiaNameList" v-for="item in anesthesiaNameList"
@@ -560,12 +551,8 @@ const title = ref('')
const doctorList = ref([]) const doctorList = ref([])
const surgeryNameList = ref([]) const surgeryNameList = ref([])
const anesthesiaNameList = ref([]) const anesthesiaNameList = ref([])
const surgeryLoading = ref(false) const allSurgeryItems = ref([])
const anesthesiaLoading = ref(false) const allAnesthesiaItems = ref([])
// 防抖定时器
let surgerySearchTimer = null
let anesthesiaSearchTimer = null
// 计算总费用 // 计算总费用
const totalCalculatedFee = computed(() => { const totalCalculatedFee = computed(() => {
@@ -624,6 +611,7 @@ watch(() => props.patientInfo, (newVal) => {
// 挂载时加载医生列表 // 挂载时加载医生列表
onMounted(() => { onMounted(() => {
loadDoctorList() loadDoctorList()
loadSurgeryAndAnesthesiaOptions()
}) })
// 获取手术申请列表 // 获取手术申请列表
@@ -967,6 +955,60 @@ function doSearchAnesthesia(query) {
}) })
} }
// 本地过滤手术项目
function filterSurgery(query) {
if (!query) {
surgeryNameList.value = allSurgeryItems.value
} else {
surgeryNameList.value = allSurgeryItems.value.filter(item =>
(item.name && item.name.toLowerCase().includes(query.toLowerCase())) ||
(item.busNo && item.busNo.toLowerCase().includes(query.toLowerCase()))
)
}
}
// 本地过滤麻醉项目
function filterAnesthesia(query) {
if (!query) {
anesthesiaNameList.value = allAnesthesiaItems.value
} else {
anesthesiaNameList.value = allAnesthesiaItems.value.filter(item =>
(item.name && item.name.toLowerCase().includes(query.toLowerCase())) ||
(item.busNo && item.busNo.toLowerCase().includes(query.toLowerCase()))
)
}
}
// 加载手术和麻醉全量数据供本地过滤
function loadSurgeryAndAnesthesiaOptions() {
getDiagnosisTreatmentList({
searchKey: '',
pageNo: 1,
pageSize: 1000
}).then(res => {
let data = []
if (res.data && res.data.records) {
data = res.data.records
} else if (res.data && Array.isArray(res.data)) {
data = res.data
} else if (res.records && Array.isArray(res.records)) {
data = res.records
}
allSurgeryItems.value = data.filter(item =>
(item.categoryCode === '24' || item.categoryCode_dictText === '手术') &&
(item.statusEnum === 2 || item.statusEnum_enumText === '启用' || !item.statusEnum)
)
allAnesthesiaItems.value = data.filter(item =>
(item.categoryCode === '25' || item.categoryCode_dictText === '麻醉') &&
(item.statusEnum === 2 || item.statusEnum_enumText === '启用' || !item.statusEnum)
)
surgeryNameList.value = allSurgeryItems.value
anesthesiaNameList.value = allAnesthesiaItems.value
}).catch(error => {
console.error('加载手术/麻醉选项失败:', error)
})
}
// 手术项目选择变更 // 手术项目选择变更
function handleSurgeryChange(val) { function handleSurgeryChange(val) {
// 🔧 BugFix#318: 确保 surgeryName 被正确设置 // 🔧 BugFix#318: 确保 surgeryName 被正确设置