美食杰项目 -- 菜谱大全(二)

目录

  • 前言:
  • 具体实现思路:
  • 步骤:
    • 1. 展示美食杰菜谱大全效果
    • 2. 引入element-ui
    • 3. 代码
  • 总结:

前言:

本文给大家讲解,美食杰项目中菜谱大全实现的效果,和具体代码。


具体实现思路:

  1. 点击头部分类(一级路由),点击哪一个选中哪一个(二级路由)的第一个
  2. 点击左侧属性,如果(二级路由),选中则刷新时(一级路由)默认打开
  3. 根据前2两步的条件进行过滤,在右侧显示过滤后的内容
  4. 添加分页器效果
  5. 以上效果都可以使用 element-ui 实现

步骤:

1. 展示美食杰菜谱大全效果

在这里插入图片描述

美食杰菜谱大全


2. 引入element-ui

点击跳转至 element-ui 中 Tabs 标签页使用方法:https://element.eleme.cn/#/zh-CN/component/tabs

点击跳转至 element-ui 中 Collapse 折叠面板使用方法:https://element.eleme.cn/#/zh-CN/component/collapse

点击跳转至 element-ui 中 分页使用方法:https://element.eleme.cn/#/zh-CN/component/pagination

点击跳转至 element-ui 中 加载使用方法:https://element.eleme.cn/#/zh-CN/component/loading


3. 代码

<template><div class="box"><!-- top --><el-tabsv-model="classifyName"type="card"@tab-click="handleClick"class="el-tabs"><el-tab-panev-for="item in list":key="item.parent_type":label="item.parent_name":name="item.parent_type"class="el-tab-pane"><div><router-linkv-for="option in item.list":key="option.type":to="{query: { ...$route.query, classify: option.type, page: 1 },}":class="{ active: option.type === classifyType }">{{ option.name }}</router-link></div></el-tab-pane></el-tabs><!-- left --><p class="title">家常好味道,给你家一般的温暖</p><div class="left"><el-collapse v-model="activeNames"><h4>筛选</h4><el-collapse-itemv-for="item in property":key="item.parent_type":title="item.parent_name":name="item.parent_type"><div><spantype="info"v-for="option in item.list":key="option.type":class="{ active: activeType[option.title] == option.type }"@click="selectedTag(option)">{{ option.name }}</span></div></el-collapse-item></el-collapse></div><div class="right roll"><div class="menu-empty" v-show="loading">暂时没有过滤出菜谱信息,请选择其他的筛选条件</div><Roll :menus="menus" :id="170"></Roll></div><div class="block"><el-paginationlayout="total,prev, pager, next":total="total":page-size="page_size":current-page.sync="page"@size-change="handleCurrentChange"@current-change="handleCurrentChange"@prev-click="handleCurrentChange"@next-click="handleCurrentChange"hide-on-single-page="true"></el-pagination></div></div>
</template><script>
import Roll from "@/views/home-page/roll.vue";
import { getClassify, getProperty, getMenus } from "@/connector/api";
export default {components: {Roll,},data() {return {// top// 存储分类中的所有数据list: [],// 定义刷新tab时的值(一级路由)classifyName: 1,// tab切换的选中项(二级路由),里面存的谁,谁就是点击项让谁发生改变classifyType: "1-1",// 存储属性的分类,例如:{craft:1-4,flavor=2-1}activeNames: [],// 记录所有的属性分类activeType: {},// 存储属性中的所有数据property: [],// 存储右侧主体menus: [],// 每页显示几个page_size: 0,// 总页数total: 0,// 页数page: 0,// 遮罩层loading: false,};},// 监听事件watch: {// 路由改变时执行$route: {handler() {// 获取路由 query 参数里的 classifyconst { classify } = this.$route.query;// console.log(classify[0]);// 判断是否有内容if (classify) {// 有则把 classify 的值赋值给 classifyType ,第一个值赋值给 classifyNamethis.classifyName = classify[0];this.classifyType = classify;// 调用 getMenus 获取符合条件的菜谱this.getMenus();// 调用 getClassify 获取所有菜谱分类this.getClassify();}},immediate: true,},},// 进入当前页面时执行mounted() {// 给 url 地址添加 query 参数this.$router.push({query: {// 留存...this.$route.query,classify: "1-1",// 如果有值则显示,没有则为 1page: this.page || 1,},});// 获取所有属性分类getProperty().then(({ data }) => {// console.log(data);this.property = data;// 获取所有 query 参数const { query } = this.$route;// reduce 用来迭代一个数组,并且把它累积到一个值中this.activeType = this.property.reduce((o, item) => {// 判断所有属性在 query 中是否存在,存在则赋值,不存在则为空o[item.title] = query[item.title] ? query[item.title] : "";// 判断是否为空if (o[item.title]) {// 不为空则添加至 activeNamesthis.activeNames.push(o[item.title][0]);}// 把值返回给 activeTypereturn o;}, {});});},// 触发时执行methods: {// 获取所有菜谱分类getClassify() {getClassify().then(({ data }) => {this.list = data;// console.log(...this.$route.query);});},// 点击头部(一级路由)时触发handleClick(tab, event) {// console.log(tab.name, event);// tab.name 值为第几个(下标)this.classifyName = Number(tab.name);this.classifyType = tab.name + "-1";// 改变 query 参数// 点击(一级路由)第几个,则选中(二级路由)第一个this.$router.push({...this.$route.query,query: {classify: tab.name + "-1",page: 1,},});},// 点击左侧筛选(二级路由)selectedTag(option) {// option 点击的具体信息// 获取路由中所有 query 参数let query = { ...this.$route.query };// 判断该属性是否选中if (this.activeType[option.title] == option.type) {// 选中则取消选中this.activeType[option.title] = "";delete query[option.title];} else {// 否则选中this.activeType[option.title] = option.type;query[option.title] = option.type;}// 路由也跟着改变this.$router.push({query,});},// 获取右侧数据getMenus() {// 获取路由中所有 query 参数const query = { ...this.$route.query };// 新建一个对象const param = {// 存在则使用,不存在则为一page: query.page || 1,classify: query.classify,};// 让 page 的值,跟随 query 中 page 的值this.page = query.page;// 删除 page 和 classifydelete query.page;delete query.classify;// 判断是否还有值if (Object.keys(query).length) {// 有则添加到 param.propertyparam.property = {...query,};}// 打开遮罩层this.loading = true;// 声明一个变量为空let loading = null;// 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOMthis.$nextTick(() => {// element-ui 里的遮罩层loading = this.$loading({target: ".roll",text: "Loading...",spinner: "el-icon-loading",background: "rgba(0, 0, 0, 0.8)",});});// 防止数据重复,list 为空this.list = [];// console.log(param.property);getMenus(param).then(({ data }) => {// console.log(data);// 所有菜谱的属性this.menus = data.list;// 总数this.total = data.total;// 一页多少个this.page_size = data.page_size;// 第几页this.page = data.current_page;// 关闭遮罩层loading.close();// 判断是否有值if (data.list.length) {// 有的话关闭遮罩层this.loading = false;}});},// 点击页数时执行handleCurrentChange(val) {// val:点击的页码// console.log({ ...this.$route.query });// 改变 query 中的页数this.$router.push({query: {...this.$route.query,page: val,},});},},
};
</script><style lang="scss" scoped>
.box {width: 990px;margin: 20px auto 0;position: relative;.el-tabs {background-color: #fff;.el-tab-pane {div {display: flex;padding: 0 15px 15px;a {display: inline-block;font-size: 12px;padding: 0px 8px;height: 28px;line-height: 28px;color: #333;text-decoration: none;}.active {background: #ff3232;color: #fff;}}}}.title {text-align: center;margin: 50px 0;}.left {width: 200px;background-color: #fff;span {width: 70px;padding: 8px 0;margin: 10px;display: inline-block;text-align: center;border-radius: 10px;background-color: gainsboro;text-decoration: none;color: #333;}.active {background: #ff3232;color: #fff;}}.right {display: flex;flex-wrap: wrap;width: 700px;// background-color: red;position: absolute;top: 185px;right: 0;// overflow: hidden;.menu-empty {margin: 30px auto 0;}}.block {position: absolute;bottom: -300px;right: 0;}
}
</style>

总结:

总结:
以上就是 美食杰项目 中 菜谱大全的具体实现方法,不懂得也可以在评论区里问我,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255817.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

php小程序餐馆点餐订餐外卖系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行性 6 …

IT朋友,有福啦! 精心收集的深圳餐馆大全(带电话,地址,部分还有店面图片)

转自:天涯社区; 长寿坊面食大王菜式&#xff1a; 小吃/面/快餐 | TAGS&#xff1a; 正中热干面 牛肉面 锅贴饺 扬州炒饭 | 地址&#xff1a;红桂路与红岭中交叉路口&#xff08;宝庆府旁&#xff09; | 电话&#xff1a;36942582 乘车路线: 暂无 土风特产屋菜式&#xff1a;…

NIO之SocketChannel,SocketChannel ,DatagramChannel解读

目录 基本概述 ServerSocketChannel 打开 ServerSocketChannel 关闭 ServerSocketChannel 监听新的连接 阻塞模式 非阻塞模式 SocketChannel SocketChannel 介绍 SocketChannel 特征 创建 SocketChannel 连接校验 读写模式 读写 DatagramChannel 打开 Datagr…

未安装任何音频设备解决方案(2021/12/27)

联想小新&#xff0c;win10&#xff0c;驱动全部更新&#xff0c;在官网下载重装&#xff0c;cmd输入代码都没有用。 使用设置&#xff0c;点击轻松使用&#xff0c;点击音频卡住无响应。 喇叭红叉&#xff0c;右键显示扬声器安装程序unknown。然而扬声器界面显示工作正常。 …

保姆级教程!Windows右下角扬声器有红叉,点击声音设置输出显示“未安装任何音频输出设备”?

打开电脑&#xff0c;音频设备无法正常播放&#xff0c;扬声器处有红叉&#xff0c;F1~F4无法使用&#xff0c;在音频播放器中发现无音频输出设备&#xff0c;插上耳机也没有声音&#xff01;这可能是因为扬声器驱动器未及时更新&#xff0c;或更新失败&#xff0c;按照以下教程…

Win10喇叭图标出现红叉提示“未安装任何音频输出设备“

如果驱动都安装了还是没有用&#xff0c;右击右下角喇叭图标→打开音量设置→管理声音设备→全都禁用→启用麦克风和扬声器

Win10小喇叭显示红叉,显示未找到输出设备的解决方式

最近遇到一个问题&#xff0c;重装win10系统之后&#xff0c;新系统右下角的小喇叭一直显示红叉&#xff0c;右击显示“扬声器安装程序unknown”&#xff0c;查了网上很多的教程&#xff0c;不是通过驱动精灵、鲁大师重新安装声卡驱动&#xff0c;就是将声卡驱动回退回原来版本…

“未安装任何音频输出设备”解决办法

安了个安卓模拟器&#xff0c;把电脑搞聋了&#xff0c;百度了好多办法没有用&#xff0c;最后在b站一个评论区解决了&#xff0c;记录一下以免以后再发生类似问题 问题&#xff1a; 小喇叭有个小红叉 解决&#xff1a; 打开设备管理器>展开“系统设备”>英特尔R智音…

华硕笔记本win10安装后喇叭红叉解决方案

朋友把华硕灵耀14S送到电脑店去装win10&#xff0c;结果喇叭红叉。显示未安装任何音频输出设备。店员打算拆机换声卡…然后朋友果断拒绝&#xff0c;找到了我 设备管理器里也没有声音控制器&#xff0c;系统设备里也找不到关于声音的物体…… 安装各种驱动精灵app&#xff0c;…

Windows系统,声音显示红色叉号,没声音修复

win7喇叭上显示红叉号&#xff0c;没声音&#xff0c;修复&#xff1a; 通常装了驱动后就没问题了&#xff0c;或者&#xff1a;右键点击喇叭—播放设备—右键单击&#xff1a;未安装音频设备&#xff0c; 左键点击&#xff1a;显示禁用设备&#xff0c;启用扬声器&#xff0c…

ThinkPad 声卡出现未安装任何音频输出设备

电脑型号&#xff1a; ThinkPad L14 &#xff08;报错应该是与电脑无关的&#xff0c;windows下都可能出现此问题&#xff09; 操作系统&#xff1a; Windows 10 64位 专业版 报错现象&#xff1a; windows自动安装了一个更新&#xff0c;然后就出现电脑无声音了。声音小喇…

win10音频服务器未修复,大神教你处理win10系统没声音音量图标红叉“音频服务未运行”的修复步骤...

大家在使用电脑工作的时候会遇到win10系统没声音音量图标红叉“音频服务未运行”的问题&#xff0c;尽管处理方法特别的容易&#xff0c;可是也有很多朋友不知道win10系统没声音音量图标红叉“音频服务未运行”究竟要怎么处理。有关如何解决win10系统没声音音量图标红叉“音频服…

WIN10 未安装任何音频驱动 扬声器有个小红叉(已解决)

经历了无数次的下载安装各种驱动&#xff0c;无数次重启&#xff0c;几乎试了全网所有的方法都是不行&#xff0c;最后使用了国外论坛的方法终于成功了 此方法必须要先重启电脑&#xff0c;重启后立刻进行此操作&#xff01;&#xff01; 我当时右击扬声器图标&#xff0c;选择…

自动缩放Kubernetes上的Kinesis Data Streams应用程序

想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序&#xff0c;以便节省成本并提高资源效率吗&#xff1f;本文提供了一个逐步指南&#xff0c;教您如何实现这一目标。 通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放&#xff0c;您可以从其…

PHP异步:在PHP中使用 fsockopen curl 实现类似异步处理的功能

PHP从主流来看&#xff0c;是一门面向过程的语言&#xff0c;它的最大缺点就是无法实现多线程管理&#xff0c;其程序的执行都是从头到尾&#xff0c;按照逻辑一路执行下来&#xff0c;不可能出现分支&#xff0c;这一点是限制php在主流程序语言中往更高级的语言发展的原因之一…

chatgpt赋能python:Python中转化为列表的详细介绍

Python中转化为列表的详细介绍 Python是一门高级编程语言&#xff0c;它使用起来简单易学&#xff0c;被广泛应用于大数据处理、科学计算、机器学习等领域。在Python编程中&#xff0c;列表是一种非常重要的数据结构&#xff0c;它允许我们存储和操作一组数据&#xff0c;并且…

keil的flash连接失败的原因

一 没有加载flash 添加所需要的驱动用的flash就行&#xff0c;看好自己设备的型号就能连上。 二 连接的端口有问题 一般这种情况直接换个USB接口就行&#xff0c;问题不大。注意stlink或者jlink的选择要和keil对应&#xff0c;在flash中可以设置。 1 点击魔法棒 2 选择Debug…

xp系统steam无法连接到更新服务器,教你win10系统steam更新失败的解决教程

steam是全球最大的游戏平台之一&#xff0c;它为广大游戏爱好者提供了游戏下载、购买、更新、讨论等多种功能&#xff0c;可是有时候会出现steam无法下载和更新不了的问题&#xff0c;怎么办?就此问题&#xff0c;小编整理了win10系统steam更新失败的解决教程&#xff0c;现分…

登录蒸汽平台显示连接服务器异常,蒸汽平台连接服务器失败

如果本地网络正常并且Steam硬盘空间足够&#xff0c;则可能是Steam问题或路由器配置问题. 由于STEAM的网络故障很多&#xff0c;而且非常烦人&#xff0c;因此官方网站提供了有关路由器配置问题的说明&#xff0c;您可以查看一下路由器的配置。 详细答案&#xff1a; 原因1: 您…

steam微信支付无法服务器,steam用微信支付失败怎么办

说起微信支付&#xff0c;相信我们每个人都不陌生&#xff0c;但是微信支付也有失败的时候&#xff0c;这时候我们就需要掌握正确的退款手续才行。steam用微信支付失败怎么办&#xff1f;了解网购安全&#xff0c;首先就要了解佰佰安全网小编就带您认识一下吧。 1、在付款提交订…