基础信息展示以及搜索逻辑进行修复
This commit is contained in:
@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user