码神之路-个人博客 导航栏搜索功能

个人博客,导航栏搜索功能完善

 

 

注意:搜索栏的位置。

要在前端合理的分配导航栏的位置。

 

前端代码:

BaseHeader.vue:

<el-col :span="6">
        <el-menu mode="horizontal" active-text-color="#5FB878">
          <el-menu-item>
            <template>
              <el-autocomplete v-model="search" :fetch-suggestions="querySearchAsync" placeholder="请输入内容"
                @select="handleSelect">
              </el-autocomplete>
            </template>
          </el-menu-item>
        </el-menu>
        </el-col>




import {searchArticle} from '@/api/article'
data() {
    return {
      search:'',
      articles:[]
    }
  },
methods: {
    logout() {
      let that = this
      this.$store.dispatch('logout').then(() => {
        this.$router.push({ path: '/' })
      }).catch((error) => {
        if (error !== 'error') {
          that.$message({ message: error, type: 'error', showClose: true });
        }
      })
    },
    querySearchAsync(queryString,cb){
      searchArticle(this.search).then((res)=>{
        if(res.success) {
          var results = [];
          for(const item of res.data){
            results.push({id:item.id,value:item.title});
          }
          cb(results);
        }
      })
    },
    handleSelect(item){
      this.$router.push({path:'/view/'+item.id})
    }
  }
}

article.js:

export function searchArticle(search) {
  return request({
    url: `/articles/search`,
    method: 'post',
    data:{"search": search}
  })
}

后端代码:

controller:

/**
     * 首页搜索功能
     * @param articleParam
     * @return
     */
    @PostMapping("search")
    public Result search(@RequestBody ArticleParam articleParam){
        String search = articleParam.getSearch();
        return articleService.searchArticle(search);
    }

articleParam:

@Data
public class ArticleParam {

    private Long id;

    private ArticleBodyParam body;

    private CategoryVo category;

    private String summary;

    private List<TagVo> tags;

    private String title;

    private String search;
}

ArticleService:

/**
     * 搜索功能
     * @param search
     * @return
     */
    Result searchArticle(String search);

ArticleServiceImpl:

 /**
     * 搜索功能
     * @param search
     * @return
     */
    @Override
    public Result searchArticle(String search) {
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        //根据查看数量进行倒叙排序
        queryWrapper.orderByDesc(Article::getViewCounts);
        queryWrapper.select(Article::getId,Article::getTitle);
        queryWrapper.like(Article::getTitle,search);
        List<Article> articles = articleMapper.selectList(queryWrapper);
        return Result.success(copyList(articles,false,false));
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值