美食杰项目(七)菜谱大全

本文目录

  • 前言:
  • 1.具体样式
  • 2.实现的具体功能和代码思路
  • 3.element ui具体样式的网址
  • 4.相关代码
  • 5.总结:

前言:

  • 本文给大家讲的是美食杰项目中菜谱大全项目的具体样式,代码思路和具体代码,希望能帮助到你

1.具体样式

在这里插入图片描述

2.实现的具体功能和代码思路

1.头部:根据tab切换筛选点击哪个选中哪个,并将其筛选结果传进路由,根据传进路由的数据进行筛选渲染
tab切换的具体样式是根据element ui里面的具体代码实现
2.左侧:左侧也是筛选条件,点击哪个选中那个并将数据传进路由,根据传进路由的数据进行筛选渲染,具体
样式也是element ui里面的代码实现的
3.右侧:右侧是跟剧筛选数据传给接口接口返回给我的数据,具体样式是根据封装的组件来实现的
并且伴有加载样式也是element ui里面的具体代码
4.右下角:具体样式是根据element ui里面的相关代码实现的,具体功能的实现element ui官网讲解的也很详细

3.element ui具体样式的网址

  • 头部:tab切换 https://element.eleme.cn/#/zh-CN/component/tabs
  • 左侧:Collapse折叠 https://element.eleme.cn/#/zh-CN/component/collapse
  • 加载:loading https://element.eleme.cn/#/zh-CN/component/loading
  • 右下角 :分页 https://element.eleme.cn/#/zh-CN/component/pagination

4.相关代码

<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>

5.总结:

以上就是 美食杰项目 中 发布菜谱页的具体实现方法,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鱼香肉丝里到底有没有鱼?

鱼香肉丝&#xff0c;算是我最爱的一道菜了&#xff0c;无论饭店大小&#xff0c;他都是我首先就要找的菜&#xff0c;可谓痴迷&#xff0c;但是鱼香肉丝里到底有没有鱼&#xff1f;这是个千古之谜&#xff0c;这篇来自三个料理人的文章《千古之谜&#xff0c;鱼香肉丝里到底有…

Python爬虫:简单爬取粤菜菜谱

项目场景&#xff1a; 简单爬取粤菜菜谱。 实现思路&#xff1a; 访问主页&#xff0c;获取每个菜品的菜名、图片、详情页面网址。 访问上一步中获得的所有详情页面&#xff0c;获取工艺、口味、时间、主料、辅料信息。 清洗所获得的数据。 保存至本地文件。 实现过程&a…

文心一言的魔性作图,我头都笑掉了...

这几天看到网友们用文心一言作的图&#xff0c;看了后我都愣住了。。。 AI 作画 -- 三得利乌龙茶 AI 作画 -- 娃娃菜 AI 作画 -- 车水马龙 AI 作画 -- 驴肉2火烧 AI 作画 -- 唐伯虎点秋香 AI 作画 -- 鱼香肉丝 AI 作画 -- 胸有成竹 AI 作画 -- 夫妻肺片 AI 作画 -- 红烧狮子头 …

使用chrome浏览器插件postman模拟post、get请求

使用chrome浏览器插件postman模拟post、get请求 postman为chrome浏览器的一个插件&#xff0c;用来模拟post请求&#xff0c;get请求等。可以在chrome浏览器里安装插件&#xff08;前提是你得访问了Google应用商店&#xff09;。 如果不能访问Google&#xff0c;那个下载一个p…

chrome浏览器无法开启同步功能 request cancel

找了很多亲测最新100版本可用&#xff01;&#xff01;&#xff01; 步骤 1、从下面链接提取google插件【Chrome-Sync-Helper】 链接: https://pan.baidu.com/s/1FTxrQ-IRjRmYdW5HcNateA 提取码: htga &#xff08;如链接失效&#xff0c;请留言反馈&#xff01;&#xff09; …

Chrome 添加【微信 / QQ】内置浏览器(解决 “请在微信客户端打开链接” 提示)

前言 有些链接&#xff0c;是需要在微信客户端内才能打开的&#xff0c;那么想在 PC 端的浏览器上打开&#xff0c;怎么办呢&#xff1f; UA 不明白的话先不用管&#xff0c;继续往下看。 【安卓QQ内置浏览器UA】 Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V…

chrome浏览器控制台发送post请求

谷歌浏览器&#xff0c;点击F12&#xff0c;在控制台中输入下面代码&#xff0c;直接回车即可&#xff1a;&#xff08;需要修改一下Admin-Token的值即可&#xff09; 设置访问的Controller路径&#xff0c;“http://127.0.0.1:8090/api/dwStandard/superUploadBigFile” met…

和 if else说再见,SpringBoot 这样做参数校验才足够优雅!

大家好&#xff0c;我是老赵! 一、概述 当我们想提供可靠的 API 接口&#xff0c;对参数的校验&#xff0c;以保证最终数据入库的正确性&#xff0c;是 必不可少 的活。比如下图就是 我们一个项目里 新增一个菜单校验 参数的函数&#xff0c;写了一大堆的 if else 进行校验&…

全球诺贝尔奖得主最多的30所大学

自1901年以来&#xff0c;诺贝尔奖得主全球最多的30所大学&#xff0c;这些大学堪称是真正的世界一流大学。世界一流大学的指标很多&#xff0c;但是有一项重要指标不可缺失&#xff0c;那就是至少有10位以上诺贝尔奖得主。以下是笔者根据维基百科整理的1901年至2018年间&#…

【娜家花园养花小记】

种花的话&#xff0c;看花开花落&#xff0c;经历寒冬酷暑&#xff0c;都是生命的一个体验的过程。月季花很坚强&#xff0c;酷暑来了&#xff0c;寒冬来了&#xff0c;它休眠一下。然后在其他时间呢&#xff0c;它就尽情的拿生命去绽放。种花更多的感受它带给你的快乐。带给你…

一生必看的 100 幅世界名画

智慧与美&#xff0c;是我之最爱。 从早期的叙事性绘画&#xff0c;直至后期更加侧重抒情与抽象的现代派绘画。希望这篇用心的长文&#xff0c;可以成为你开启艺术之们的钥匙。如果有幸有一幅画面&#xff0c;能够触及你内心柔软的角落抑或隐秘的激情&#xff0c;也请你静下心来…

2022-09-11 stonedb-宣讲-第二讲-一条SQL在Tianmu引擎中的运行

摘要: 记录列存储引擎第二讲的绸缪规划。 宣传语: 标题: 一条查询SQL在Tianmu引擎中的代码实现 宣讲语: 你是否只读过数据库理论的书籍, 但是一遇到代码就头疼呢? 你是否只会在理论上和数学公式上推导数据库内核, 但是从没亲自做过数据库内核的实现呢? 你是否对于数据库…

「上帝粒子」发现10周年

来源&#xff1a;FUTURE | 远见 选编&#xff1a;闵青云 2012年7月4日&#xff0c;欧洲核子研究中心&#xff08;CERN&#xff09;宣布发现了「上帝粒子」&#xff08;希格斯玻色子&#xff09;。希格斯玻色子是粒子物理学标准模型预言的一种玻色子&#xff0c;正是它的存在&…

全球诺贝尔奖得主最多的30所大学排名

上一篇&#xff1a;再见了阿里巴巴&#xff0c;希望以后不再有福报 100多年来&#xff0c;诺贝尔奖&#xff0c;尤其是自然科学领域的几种奖项&#xff0c;始终是全球范围内最受瞩目的科学荣誉。我们为您盘点1901-2019年全球诺贝尔获得者&#xff08;包括毕业生及职员&#xff…

SignalPlus 2023宏观经济展望:洞见机遇,迎接挑战

1. 2022 年市场回顾 (Markets in Review) 虽然理由不尽相同&#xff0c;但对于宏观资产和加密资产而言&#xff0c; 2022 年都是值得铭记的一年&#xff0c;Luna、FTX、Genesis 等机构的崩塌对加密货币生态系造成了灾难性的破坏&#xff0c;同时宏观市场也见证了一个强硬的美联…

python-微信自动发送信息2

《《由于女朋友最近打算考编&#xff0c;作为一名合格的男票肯定要天天督促啦。》》 实现目标&#xff1a;利用python实现微信自动发送教育学or心理学题目 实现思路&#xff1a; 1.从本地读取教育学心理学题目&#xff0c;并随机抽取一题。 2.使用python自带模块os.system模…

20145237 《Java程序设计》第七周学习总结

20145237 《Java程序设计》第七周学习总结 教材学习内容总结 第十三章 一、认识时间与日期 1.时间的度量 在正式认识Java提供了哪些时间处理API之前&#xff0c;得先来了解一些时间、日期的历史问题&#xff0c;这样你才会知道&#xff0c;时间日期确实是个很复杂的问题&…

GAMES101-现代计算机图形学入门-闫令琪 - lecture2 线性代数基础 - 课后笔记

向量的点乘 在图形学中&#xff0c;点乘的作用&#xff1a; 能够计算两个向量之间的角度&#xff0c;例如计算曲面和曲线之间的角度&#xff0c;用于计算两个方向向量之间距离有多近&#xff0c;越近其cos值越大&#xff0c;越小则越远&#xff0c;值为-1~1.能够将一个向量投影…

20155304 2016-2017-2 《Java程序设计》第七周学习总结

20155304 2016-2017-2 《Java程序设计》第七周学习总结 教材学习内容总结 1.时间的度量&#xff1a; 格林威治标准时间&#xff08;GMT&#xff09;通过观察太阳而得&#xff0c;其正午是太阳抵达天空最高点之时&#xff0c;因地球的公转与自传&#xff0c;会造成越来越大的时间…

ChineseGLUE:为中文NLP模型定制的自然语言理解基准

机器之心整理 参与&#xff1a;张倩、郑丽慧 GLUE 是一个用于评估通用 NLP 模型的基准&#xff0c;其排行榜可以在一定程度上反映 NLP 模型性能的高低。然而&#xff0c;现有的 GLUE 基准针对的是英文任务&#xff0c;无法评价 NLP 模型处理中文的能力。为了填补这一空白&…