From e177a800b82cfc6ca17673dce7fbffb507cfc0f4 Mon Sep 17 00:00:00 2001 From: Default User Date: Fri, 9 Jan 2026 17:03:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=90=9C=E7=B4=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=90=9C=E7=B4=A2=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E5=8F=97=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6=E9=99=90?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=88=98=E7=90=B4=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E4=B8=8D=E5=88=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/goods/index.js | 58 ++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/pages/goods/index.js b/pages/goods/index.js index 3d5ec6b..baa1cb0 100644 --- a/pages/goods/index.js +++ b/pages/goods/index.js @@ -193,7 +193,7 @@ Page({ }, /** - * 根据搜索关键词过滤数据 - 完善搜索功能,支持搜索创建人信息 + * 根据搜索关键词过滤数据 - 确保能搜索到creatorName字段 */ searchGoodsList(goodsList, keyword) { if (!keyword || keyword.trim() === '') { @@ -203,7 +203,10 @@ Page({ const searchTerm = keyword.toLowerCase().trim() return goodsList.filter(item => { - // 检查多个字段是否包含搜索关键词 + // 确保creatorName字段存在 + const creatorName = item.creatorName || ''; + + // 检查多个字段是否包含搜索关键词,包括creatorName const fieldsToCheck = [ // 产品基本信息 item.productName || item.name || '', // 产品名称 @@ -217,33 +220,17 @@ Page({ item.category || '', // 种类 item.minOrder || item.quantity || '', // 最小起订量 + // 创建人信息 + creatorName, // 已处理的创建人名称,确保能搜索到 + // 创建时间 item.formattedCreatedAt || item.created_at || item.createdAt || '' // 创建时间 ] // 检查是否有任何字段包含搜索关键词 - let hasMatch = fieldsToCheck.some(field => { + return fieldsToCheck.some(field => { 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] - // 先应用筛选条件 - 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') { return -1 // 已上架排在前面 } else if (a.status === 'sold_out' && b.status === 'published') { @@ -442,11 +436,11 @@ Page({ } }) - console.log('处理并筛选后的产品列表:', searchFilteredList) - console.log('筛选前后数量对比:', originalList.length, '->', searchFilteredList.length) + console.log('处理并筛选后的产品列表:', filteredList) + 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) => {