新增分类搜索功能,支持关键词查询并优化状态字段显示逻辑

This commit is contained in:
WUSIJIAN
2025-12-16 10:42:50 +08:00
parent 948bc2b791
commit c8a3bb0b7c
3 changed files with 36 additions and 4 deletions

View File

@@ -29,6 +29,15 @@ export function addCategory(data: object) {
}); });
} }
// 查询获取列表
export function listCategories(keyword: string) {
return newService({
url: '/assets/category/listCategories',
method: 'get',
params: {keyword},
});
}
// 修改分类 // 修改分类
export function updateCategory(data: object) { export function updateCategory(data: object) {
return newService({ return newService({

View File

@@ -19,7 +19,7 @@
<el-form-item label="排序"> <el-form-item label="排序">
<el-input-number v-model="ruleForm.sort" :min="0" :max="999" controls-position="right" placeholder="请输入排序" class="w100" /> <el-input-number v-model="ruleForm.sort" :min="0" :max="999" controls-position="right" placeholder="请输入排序" class="w100" />
</el-form-item> </el-form-item>
<el-form-item label="状态" v-if="!isEdit"> <!-- <el-form-item label="状态" v-if="!isEdit">
<el-switch <el-switch
v-model="ruleForm.status" v-model="ruleForm.status"
active-value="1" active-value="1"
@@ -28,7 +28,7 @@
active-text="显示" active-text="显示"
inactive-text="隐藏" inactive-text="隐藏"
/> />
</el-form-item> </el-form-item> -->
<!-- 自定义属性 --> <!-- 自定义属性 -->
<el-form-item label="自定义属性"> <el-form-item label="自定义属性">
<div class="custom-attrs-container"> <div class="custom-attrs-container">

View File

@@ -7,7 +7,7 @@
<el-input size="default" v-model="tableData.param.name" placeholder="请输入分类名称" clearable style="width: 200px" /> <el-input size="default" v-model="tableData.param.name" placeholder="请输入分类名称" clearable style="width: 200px" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button size="default" type="primary" @click="getCategoryList"> <el-button size="default" type="primary" @click="AlistCategories">
<el-icon><ele-Search /></el-icon> <el-icon><ele-Search /></el-icon>
查询 查询
</el-button> </el-button>
@@ -67,7 +67,7 @@ export default {
import { ref, reactive, onMounted } from 'vue'; import { ref, reactive, onMounted } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus'; import { ElMessageBox, ElMessage } from 'element-plus';
import EditCategory from './component/editCategory.vue'; import EditCategory from './component/editCategory.vue';
import { getCategoryTree, deleteCategory, updateCategoryStatus } from '/@/api/assets/category'; import { getCategoryTree, deleteCategory, updateCategoryStatus,listCategories } from '/@/api/assets/category';
interface CategoryRow { interface CategoryRow {
id: string; id: string;
@@ -108,6 +108,29 @@ const getCategoryList = () => {
}); });
}; };
// 查询功能
const AlistCategories = () => {
const keyword = tableData.param.name?.trim();
// 如果没有输入关键词,则获取完整树形结构
if (!keyword) {
getCategoryList();
return;
}
// 有关键词时进行搜索
tableData.loading = true;
listCategories(keyword)
.then((res: any) => {
// 搜索结果直接展示为列表
tableData.data = res.data?.list ?? res.data ?? [];
})
.catch(() => {
tableData.data = [];
ElMessage.error('查询失败');
})
.finally(() => {
tableData.loading = false;
});
}
// 打开新增弹窗 // 打开新增弹窗
const onOpenAddCategory = (row?: CategoryRow) => { const onOpenAddCategory = (row?: CategoryRow) => {
editCategoryRef.value.openDialog(row?.id); editCategoryRef.value.openDialog(row?.id);