基础信息展示以及搜索逻辑进行修复

This commit is contained in:
dxc
2026-02-11 13:12:05 +08:00
parent d0a237625c
commit 5532c87684
9 changed files with 285 additions and 395 deletions

View File

@ -203,7 +203,7 @@
:total="total"
v-model:current-page="queryParams.pageNum"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:page-sizes="[100, 200, 500, 1000]"
@size-change="getList"
@current-change="getList"
/>
@ -371,7 +371,8 @@ import {
listMaterialBase,
addMaterialBase,
updateMaterialBase,
delMaterialBase
delMaterialBase,
getMaterialBaseOptions // 新增引入
} from '@/api/material_base';
import { uploadFile, deleteFile } from '@/api/common/upload';
import WebRtcCamera from '@/components/Camera/WebRtcCamera.vue';
@ -442,7 +443,7 @@ const typeOptions = ref<string[]>([]);
const queryParams = reactive<QueryParams>({
pageNum: 1,
pageSize: 10,
pageSize: 100, // 修改默认显示条数为 100
keyword: '',
category: '',
type: '',
@ -483,16 +484,16 @@ const rules = reactive<FormRules>({
// --- 业务逻辑方法 ---
const extractDynamicOptions = (items: MaterialBaseVO[]) => {
if (!items || items.length === 0) return;
const newCategories = new Set(categoryOptions.value);
const newTypes = new Set(typeOptions.value);
items.forEach(item => {
if (item.category) newCategories.add(item.category);
if (item.type) newTypes.add(item.type);
// 获取所有选项(不再依赖当前页数据)
const getOptionsList = () => {
getMaterialBaseOptions().then((res: any) => {
if (res.code === 200) {
categoryOptions.value = res.data.categories || [];
typeOptions.value = res.data.types || [];
}
}).catch(err => {
console.error("获取筛选项失败", err);
});
categoryOptions.value = Array.from(newCategories);
typeOptions.value = Array.from(newTypes);
};
const querySearchCategory = (queryString: string, cb: any) => {
@ -518,7 +519,7 @@ const getList = () => {
if (response && response.data) {
tableData.value = response.data.items;
total.value = response.data.total;
extractDynamicOptions(tableData.value);
// 移除 extractDynamicOptions 调用
} else {
tableData.value = [];
total.value = 0;
@ -646,6 +647,8 @@ const submitForm = async () => {
ElMessage.success(`${actionText}成功`);
dialog.visible = false;
getList();
// 提交成功后,刷新选项,以防有新的类别/类型被创建
getOptionsList();
} catch (error: any) {
ElMessage.error(error.msg || '保存失败');
} finally {
@ -689,6 +692,8 @@ const handleDelete = (row: MaterialBaseVO) => {
ElMessage.success("删除成功");
if (tableData.value.length === 1 && queryParams.pageNum > 1) queryParams.pageNum--;
getList();
// 删除后也刷新选项
getOptionsList();
});
}).catch(() => {});
};
@ -796,6 +801,7 @@ const handleCameraConfirm = async (file: File) => {
onMounted(() => {
getList();
getOptionsList(); // 初始化下拉选项
});
</script>