|
@@ -105,6 +105,7 @@
|
|
|
import { onMounted, reactive, ref, computed } from 'vue';
|
|
|
import { ArrowRight, ArrowDown } from '@element-plus/icons-vue';
|
|
|
import { useI18n } from 'vue-i18n';
|
|
|
+import { ElMessage } from 'element-plus';
|
|
|
import { api } from '../finance.service';
|
|
|
|
|
|
const { t } = useI18n();
|
|
@@ -225,19 +226,20 @@ function formatAmount(amount) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-// 刷新数据 - 使用默认时间范围
|
|
|
+// 刷新数据 - 保持当前筛选条件
|
|
|
const refreshData = () => {
|
|
|
- // 重置搜索参数为默认值
|
|
|
- currentSearchParams.value = { ...defaultSearchValues };
|
|
|
- // 使用默认时间范围刷新数据
|
|
|
- getData(1, defaultSearchValues);
|
|
|
+ // 使用当前搜索条件刷新数据
|
|
|
+ const finalSearchParams = currentSearchParams.value || {};
|
|
|
+ getData(1, finalSearchParams);
|
|
|
};
|
|
|
|
|
|
// table 字段排序
|
|
|
function fieldFilter({ prop, order }) {
|
|
|
table.order = order == 'ascending' ? 'asc' : 'desc';
|
|
|
table.sort = prop;
|
|
|
- getData();
|
|
|
+ // 使用当前搜索条件进行排序
|
|
|
+ const finalSearchParams = currentSearchParams.value || {};
|
|
|
+ getData(pageData.page, finalSearchParams);
|
|
|
}
|
|
|
|
|
|
// 获取数据
|
|
@@ -245,6 +247,13 @@ async function getData(page = 1, searchParams = null) {
|
|
|
// 构建请求参数 - 优先使用传入的参数,否则使用双向绑定的搜索条件
|
|
|
const finalSearchParams = searchParams !== null ? searchParams : currentSearchParams.value;
|
|
|
|
|
|
+ // 验证时间范围是否必填
|
|
|
+ if (!finalSearchParams.createTime || finalSearchParams.createTime.length !== 2) {
|
|
|
+ ElMessage.warning(t('modules.finance.pleaseSelectTimeRange'));
|
|
|
+ loading.value = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// 保存搜索条件供导出使用
|
|
|
if (Object.keys(finalSearchParams).length > 0) {
|
|
|
currentSearchParams.value = { ...finalSearchParams };
|
|
@@ -292,16 +301,22 @@ function handleSearch(searchParams) {
|
|
|
|
|
|
// 重置搜索参数处理函数
|
|
|
function handleReset() {
|
|
|
- // 手动清空搜索参数
|
|
|
- currentSearchParams.value = {};
|
|
|
+ // 重置搜索参数为默认值(包含默认时间范围)
|
|
|
+ currentSearchParams.value = { ...defaultSearchValues };
|
|
|
// 使用默认时间范围刷新数据
|
|
|
- refreshData();
|
|
|
+ getData(1, defaultSearchValues);
|
|
|
}
|
|
|
|
|
|
// 导出报表
|
|
|
async function exportReport() {
|
|
|
if (exportLoading.value) return; // 防止重复点击
|
|
|
|
|
|
+ // 验证时间范围是否必填
|
|
|
+ if (!currentSearchParams.value.createTime || currentSearchParams.value.createTime.length !== 2) {
|
|
|
+ ElMessage.warning(t('modules.finance.pleaseSelectTimeRange'));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
exportLoading.value = true;
|
|
|
try {
|
|
|
// 构建导出参数,与列表请求参数保持一致,但排除分页相关数据
|