Browse Source

优化搜索功能,确保搜索时不受筛选条件限制,修复刘琴搜索不到的问题

pull/11/head
Default User 2 months ago
parent
commit
e177a800b8
  1. 58
      pages/goods/index.js

58
pages/goods/index.js

@ -193,7 +193,7 @@ Page({
}, },
/** /**
* 根据搜索关键词过滤数据 - 完善搜索功能支持搜索创建人信息 * 根据搜索关键词过滤数据 - 确保能搜索到creatorName字段
*/ */
searchGoodsList(goodsList, keyword) { searchGoodsList(goodsList, keyword) {
if (!keyword || keyword.trim() === '') { if (!keyword || keyword.trim() === '') {
@ -203,7 +203,10 @@ Page({
const searchTerm = keyword.toLowerCase().trim() const searchTerm = keyword.toLowerCase().trim()
return goodsList.filter(item => { return goodsList.filter(item => {
// 检查多个字段是否包含搜索关键词 // 确保creatorName字段存在
const creatorName = item.creatorName || '';
// 检查多个字段是否包含搜索关键词,包括creatorName
const fieldsToCheck = [ const fieldsToCheck = [
// 产品基本信息 // 产品基本信息
item.productName || item.name || '', // 产品名称 item.productName || item.name || '', // 产品名称
@ -217,33 +220,17 @@ Page({
item.category || '', // 种类 item.category || '', // 种类
item.minOrder || item.quantity || '', // 最小起订量 item.minOrder || item.quantity || '', // 最小起订量
// 创建人信息
creatorName, // 已处理的创建人名称,确保能搜索到
// 创建时间 // 创建时间
item.formattedCreatedAt || item.created_at || item.createdAt || '' // 创建时间 item.formattedCreatedAt || item.created_at || item.createdAt || '' // 创建时间
] ]
// 检查是否有任何字段包含搜索关键词 // 检查是否有任何字段包含搜索关键词
let hasMatch = fieldsToCheck.some(field => { return fieldsToCheck.some(field => {
return field.toLowerCase().includes(searchTerm) return field.toLowerCase().includes(searchTerm)
}) })
// 单独处理创建人信息,确保即使没有创建者信息也能正常搜索
if (!hasMatch) {
// 检查创建人相关字段
const creatorFields = [
item.creatorName || '', // 已处理的创建人名称
// 检查seller对象中的创建人信息,确保seller是对象
typeof item.seller === 'object' && item.seller ? item.seller.nickName || '' : '',
typeof item.seller === 'object' && item.seller ? item.seller.sellerNickName || '' : '',
typeof item.seller === 'object' && item.seller ? item.seller.name || '' : '',
item.sellerName || '' // 卖家名称备用字段
]
hasMatch = creatorFields.some(field => {
return field.toLowerCase().includes(searchTerm)
})
}
return hasMatch
}) })
}, },
@ -423,13 +410,20 @@ Page({
// 应用筛选条件和搜索过滤 // 应用筛选条件和搜索过滤
const originalList = [...newGoodsList] const originalList = [...newGoodsList]
// 先应用筛选条件
let filteredList = this.filterGoodsList(newGoodsList)
// 再应用搜索过滤 - 在处理后的列表上进行搜索,确保能搜索到creatorName
let searchFilteredList = this.searchGoodsList(filteredList, this.data.searchKeyword)
// 排序:已上架商品排在前面,售空商品排在后面 - 对搜索过滤后的列表进行排序 // 搜索逻辑:如果有搜索关键词,只应用搜索过滤,不应用筛选条件
searchFilteredList.sort((a, b) => { // 这样搜索时能找到所有匹配的商品,不受筛选条件限制
let filteredList;
if (this.data.searchKeyword && this.data.searchKeyword.trim() !== '') {
// 有搜索关键词时,只应用搜索过滤
filteredList = this.searchGoodsList(newGoodsList, this.data.searchKeyword)
} else {
// 没有搜索关键词时,应用筛选条件
filteredList = this.filterGoodsList(newGoodsList)
}
// 排序:已上架商品排在前面,售空商品排在后面
filteredList.sort((a, b) => {
if (a.status === 'published' && b.status === 'sold_out') { if (a.status === 'published' && b.status === 'sold_out') {
return -1 // 已上架排在前面 return -1 // 已上架排在前面
} else if (a.status === 'sold_out' && b.status === 'published') { } else if (a.status === 'sold_out' && b.status === 'published') {
@ -442,11 +436,11 @@ Page({
} }
}) })
console.log('处理并筛选后的产品列表:', searchFilteredList) console.log('处理并筛选后的产品列表:', filteredList)
console.log('筛选前后数量对比:', originalList.length, '->', searchFilteredList.length) console.log('筛选前后数量对比:', originalList.length, '->', filteredList.length)
// 处理分页逻辑 - 使用搜索过滤后的列表 // 处理分页逻辑
let updatedGoodsList = this.data.currentPage === 1 ? searchFilteredList : [...this.data.goodsList, ...searchFilteredList] let updatedGoodsList = this.data.currentPage === 1 ? filteredList : [...this.data.goodsList, ...filteredList]
// 对整个列表进行排序,确保已上架商品始终在前面,售空商品在后面 // 对整个列表进行排序,确保已上架商品始终在前面,售空商品在后面
updatedGoodsList.sort((a, b) => { updatedGoodsList.sort((a, b) => {

Loading…
Cancel
Save