|
|
@@ -21,7 +21,7 @@
|
|
|
<div class="search_area">
|
|
|
<el-input
|
|
|
v-model="searchKeyword"
|
|
|
- placeholder="请输入账号/手机号"
|
|
|
+ placeholder="请输入账号/手机号/姓名"
|
|
|
@input="HandleSearch"
|
|
|
>
|
|
|
<template #append>
|
|
|
@@ -388,10 +388,24 @@ const MatchCodeFilter = (
|
|
|
return codes.some(code => String(code) === String(selectedCode))
|
|
|
}
|
|
|
|
|
|
-// 前端 Tab + 年级/科目 筛选 + 分页
|
|
|
+const MatchKeywordFilter = (item: Teacher, keyword: string) => {
|
|
|
+ const lowerKeyword = keyword.toLowerCase()
|
|
|
+ return (
|
|
|
+ (item.userAccount || '').toLowerCase().includes(lowerKeyword) ||
|
|
|
+ (item.phone || '').toLowerCase().includes(lowerKeyword) ||
|
|
|
+ (item.userName || '').toLowerCase().includes(lowerKeyword)
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+// 前端 Tab + 年级/科目 + 搜索筛选 + 分页
|
|
|
const FilterAndPaginate = () => {
|
|
|
let filteredData = [...allData.value]
|
|
|
|
|
|
+ if (searchKeyword.value.trim()) {
|
|
|
+ const keyword = searchKeyword.value.trim()
|
|
|
+ filteredData = filteredData.filter(item => MatchKeywordFilter(item, keyword))
|
|
|
+ }
|
|
|
+
|
|
|
if (selectedGradeCode.value !== 'all') {
|
|
|
filteredData = filteredData.filter(item =>
|
|
|
MatchCodeFilter(item.gradeCodes, selectedGradeCode.value)
|
|
|
@@ -425,9 +439,6 @@ const GetTeacherList = async () => {
|
|
|
pageNum: 1,
|
|
|
pageSize: API_PAGE_SIZE,
|
|
|
}
|
|
|
- if (searchKeyword.value) {
|
|
|
- params.word = searchKeyword.value
|
|
|
- }
|
|
|
const res = await getAllTeacher(params)
|
|
|
if (res.code === 200 && res.data) {
|
|
|
gradeList.value = NormalizeFilterList(res.data.gradeList || [])
|
|
|
@@ -472,10 +483,10 @@ const ChangeTab = (tab: string) => {
|
|
|
FilterAndPaginate()
|
|
|
}
|
|
|
|
|
|
-// 搜索(接口模糊查询)
|
|
|
+// 搜索(前端筛选)
|
|
|
const HandleSearch = () => {
|
|
|
pageNum.value = 1
|
|
|
- GetTeacherList()
|
|
|
+ FilterAndPaginate()
|
|
|
}
|
|
|
|
|
|
// 分页操作(前端分页)
|