From e4501658ae7bf7e6df57f8317894618a86f16091 Mon Sep 17 00:00:00 2001 From: Euni4U <958079825@qq.com> Date: Wed, 16 Apr 2025 09:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Medical-examination-vehicle.vue | 73 +++++++++++-------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/src/views/Department-entry/Medical-examination-vehicle.vue b/src/views/Department-entry/Medical-examination-vehicle.vue index 8da12b2..d42f362 100644 --- a/src/views/Department-entry/Medical-examination-vehicle.vue +++ b/src/views/Department-entry/Medical-examination-vehicle.vue @@ -1842,35 +1842,42 @@ const handleCurrentChange = async (val) => { loading.value = true const params = { pageNo: pageNo.value, - pageSize: pageSize.value, - isprint: null + pageSize: pageSize.value } - - // 根据当前状态筛选值设置不同的查询参数 + + // 简化参数处理 if (statusFilter.value === '2') { - // 已打印状态,查询 isprint 为 1 的数据 params.isprint = 1 - - // 在已打印状态下,如果有日期范围,则添加日期条件 - if (dateRange.value && dateRange.value.length === 2) { - const [startDate, endDate] = dateRange.value + if (dateRange.value?.length === 2) { params.printTimeRange = [ - startDate ? `${startDate} 00:00:00` : null, - endDate ? `${endDate} 23:59:59` : null + `${dateRange.value[0]} 00:00:00`, + `${dateRange.value[1]} 23:59:59` ] } } else { - // 其他状态,使用 status 字段查询 params.status = statusFilter.value } + // 检查缓存 + const cacheKey = JSON.stringify(params) + if (patientDataCache.value.has(cacheKey)) { + const cachedData = patientDataCache.value.get(cacheKey) + patients.value = cachedData.list + total.value = cachedData.total + loading.value = false + return + } + const res = await PatientApi.getPatientPage(params) + // 更新缓存 + patientDataCache.value.set(cacheKey, res) + // 只更新必要的数据 patients.value = res.list total.value = res.total - loading.value = false } catch (error) { console.error('获取患者列表失败:', error) ElMessage.error('获取患者列表失败') + } finally { loading.value = false } } @@ -2421,23 +2428,20 @@ const debouncedStatusChange = debounce(async (value) => { // 修改状态筛选变化处理函数 const handleStatusFilterChange = (value) => { statusFilter.value = value - - // 重置页码为1 pageNo.value = 1 - // 如果选择的是"已打印"状态 if (value === '2') { - // 如果日期范围为空,则默认设置为今天 - if (!dateRange.value || dateRange.value.length === 0) { - const today = new Date().toISOString().split('T')[0] // 获取当前日期,格式为YYYY-MM-DD - dateRange.value = [today, today] // 设置日期范围为今天到今天 - } - // 使用当前日期范围进行筛选 - handleDateRangeChange(dateRange.value) + // 使用防抖处理日期范围设置 + const debouncedDateChange = debounce(() => { + if (!dateRange.value?.length) { + const today = new Date().toISOString().split('T')[0] + dateRange.value = [today, today] + } + handleDateRangeChange(dateRange.value) + }, 300) + debouncedDateChange() } else { - // 非已打印状态清空日期范围 dateRange.value = [] - // 调用状态变化处理函数 debouncedStatusChange(value) } } @@ -2754,19 +2758,30 @@ const handleDateRangeChange = async (val) => { const params = { pageNo: pageNo.value, pageSize: pageSize.value, - isprint: 1, // 保持已打印状态 + isprint: 1 // 保持已打印状态 } // 只有在有日期范围时才添加日期条件 if (val && val.length === 2) { - const [startDate, endDate] = val params.printTimeRange = [ - startDate ? `${startDate} 00:00:00` : null, - endDate ? `${endDate} 23:59:59` : null + `${val[0]} 00:00:00`, + `${val[1]} 23:59:59` ] } + // 检查缓存 + const cacheKey = JSON.stringify(params) + if (patientDataCache.value.has(cacheKey)) { + const cachedData = patientDataCache.value.get(cacheKey) + patients.value = cachedData.list + total.value = cachedData.total + loading.value = false + return + } + const res = await PatientApi.getPatientPage(params) + // 更新缓存 + patientDataCache.value.set(cacheKey, res) patients.value = res.list total.value = res.total } catch (error) {