web前端课程设计——农产品购物车

news2024/12/26 3:49:18

该课程设计使用的环境为:HTML+css+JavaScript,vue3,creat-vue脚手架工具,vscode编辑器

其中实现的功能为:购物车管理,商品展示。

1.购物车管理中包含对商品数量进行加减,对商品进行全选或反选操作,删除单个商品或批量删除商品。

2.商品展示包含对购物车中的商品进行渲染展示,例如改变数量总金额进行改变等等

一.项目结构

使用creat-vue脚手架工具进行vue项目工程化

使用到的项目结构如下:

  • index.html为程序入口Html文件
  • main.js为应用程序入口文件
  • App.vue为根组件
  • assets为静态资源文件夹,存放图片,样式等
  • views为页面视图文件夹,存放.vue文件

c5aca6aa4d84412a9b89720aa80ce115.png

二.业务说明

页面展示图如下:

951a8c9e34b242b7956eec0c9be3cc83.png

1.购物车管理功能

(1)商品加减

我们可以对购物车里的商品数量进行加减,点击“+”商品数量加1,点击“-”商品数量减1,同时该商品总价会发生改变

加前:

ea0702712e6b4eba968c5f1ae285ebc0.png

加后:

6add1987178b4281925953087b44ef71.png

 (2)全选和反选

当我们需要购买商品时,可以勾选前面的方框表示选择,下方的商品总价,可获积分和商品数量也会跟着改变。

如果要全部购买,那么我们就可以点击全选按钮,下面的商品就会被全部勾选上,同时下方的商品总价,可获积分和商品数量也会跟着改变。

再次点击就会被取消勾选

选前:被勾选的商品总价和可获积分会展示出来

58bf116703114dff8e5c11af3da54630.png

全选:当点击全选,所以商品都被勾选,总价也会变化

875db1e0b0764de68aeddd5ff9c4ec8c.png

反选:再次点击无商品勾选总价清空

e0eb75ebd9be483f8f468bbf717f6a61.png

(3)删除单个商品和批量删除商品

当点击商品后的删除按钮,该商品就会被删除

勾选多个商品,再点击“删除所选”按钮 ,就可以实现批量删除

单个删除:

80cd69e41eda4d86a9b0ec1cefdd9b18.png

批量删除:

394900cc49b14b3383449d8633289d37.png

2.商品展示功能

对在购物车中的所有商品进行对应信息的展示

如购物车中:

595239396d654c51956012e94475fcb5.png

如最近浏览中:

4f81495973874403b96ba89a5c179e43.png

三.部分代码展示

1.商品渲染展示

将如下购物车中的商品信息展示出来

通过v-for循环创建多个li,通过插值表达式将多个商品信息渲染展示

在<script setup><script> 标签中编写要展示的商品信息

在<template></template>标签中编写组件的html

在<style scoped>中编写css

<script setup>
import { ref } from 'vue'
let imgList =ref( [
  {
    img: new URL("../assets/imgs/item1.jpg", import.meta.url).href,
    price: 9,
    product: "亨式120g乐维滋(苹果草莓)",
  },
  {
    img: new URL("../assets/imgs/item2.jpg", import.meta.url).href,
    product: "嘉宝Gerber 酸甜可口",
    price: 10,
  },
  {
    img: new URL("../assets/imgs/item3.jpg", import.meta.url).href,
    product: "汇泽葡萄 好吃不贵",
    price: 29,
  },
  {
    img: new URL("../assets/imgs/item4.jpg", import.meta.url).href,
    product: "粒大饱满 免洗免泡",
    price: 19.9,
  },
])
</script>

<template>
    <div class="allDiv">
            <div style="margin: 20px 0;">
                <a href=""><span>最近收藏</span></a>&nbsp;&nbsp;&nbsp;
                <a href="">
                <span>最近浏览</span></a>&nbsp;&nbsp;&nbsp;
                <a href="">
                <span>猜你喜欢</span></a>
            </div>
            <div id="flex-bt" >
                <div v-for="img in imgList" :key="img.id" id="v-div1">
                    <div>
                        <img :src="img.img" id="v-div2">
                    </div>
                    <div>
                        <div id="mar">
                            <span style="color: brown;font-size: larger;">¥{{img.price}}</span>
                        </div>
                        <div id="mar">
                            <span style="color: black;font-size: larger;">{{img.product}}</span>
                            
                        </div>
                    </div>
                </div>
            </div>
        </div>
</template>

<style scoped>
#mar {
  margin: 10px 10px;
}
#v-div1 {
  width: 320px;
  height: 420px;
  border-style: solid;
  border-width: 1px;
}
#v-div2 {
  width: 320px;
  height: 320px;
}
</style>

最后将所写好的tail-one.vue组件导入App.vue中加载出页面

<script setup>
    // import './assets/main.css'
    import H from './views/Header.vue'
    import C from './views/Center.vue'
    import T1 from './views/tail-one.vue'
    import T2 from './views/tail-two.vue'
</script>

<template>
    <div class="overall">
        <!-- 表头 -->
        <H/>
        <!-- 表中 -->
        <C/>
        <!-- 表尾1 -->
        <T1/>
        <!-- 表尾2 -->
        <T2/>
    </div>
</template>

<style scoped>

</style>

2.单选多选

//全选与取消全选
        const negation=(isSelect)=> {
            //遍历productList,全部取反
            for (let i = 0, len = mesList.value.length; i < len; i++) {
                //让productList[i].select不管为true还是false都取!isSelect,如现在未全选,那么isSelect就为false,!isSelect就为true,所以点击让商品的select都变为true
                mesList.value[i].select = !isSelect;
            }
        }
  
        //检测是否全选
        const isSelectAll=()=> {
            //如果长度为0,直接返回false
            if (mesList.value.length === 0) {
                return false;
            }
            //如果productList中每一条数据的select都为true,返回true,否则返回false;
            return mesList.value.every(function(val) {
                return val.select;
            });
        }

点击全选按钮后触发事件,判断是全选还是反选

<div id="flex-m" style="width: 50%;">
                    <div style="width: 49%;">
                        <input type="checkbox" id="checkbox" @click="negation(isSelectAll())">全选
                    </div>
                    <p>店铺产品</p>
                </div>

 

 

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

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

相关文章

C++ | Leetcode C++题解之第189题轮转数组

题目&#xff1a; 题解&#xff1a; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& nums, int k) {k % nums.size…

Android AOSP 编译并烧录到Google Pixel4XL

简介 AOSP&#xff08;Android Open Source Project&#xff09;是Android系统的开源版本&#xff0c;任何人都可以下载、编译和修改。手头上有一台Pixel 4XL&#xff0c;尝试编译AOSP并将其烧录到的设备上。 准备工作 在开始之前&#xff0c;您需要确保您的电脑满足以下条件…

文旅景区科技馆增加5D影院项目VR游乐场

王屋山风景名胜区增加20座5D影院设备&#xff0c;5D影院不像普通电影院&#xff0c;5D影院座椅可以根据影片播放内容&#xff0c;进行实时摆动和各种特效&#xff0c;闪电&#xff0c;振臀振臂&#xff0c;泡泡等个种特效。影片内容可以进行定制&#xff0c;根据景区文化风光&a…

OnlyOffice-8.1版本深度测评

2024年6月19日&#xff0c;ONLYOFFICE 发布了最新版本 8.1&#xff0c;带来了超过30项新功能和432个 bug 修复。本文将详细评测该版本的新功能和改进&#xff0c;帮助用户全面了解这一升级带来的实际体验提升。 一、功能全面的 PDF 编辑器 PDF 是日常工作中不可或缺的文件格式…

Waiting for table flush故障处理

故障排查 1 找到正处于open状态的表 show open tables where in_use >1; 2 找到引发故障的慢查询 ① 找到阻塞flush tables的慢查询 SELECT * FROM information_schema.PROCESSLIST WHERE info IS NOT NULL AND state NOT LIKE ‘Waiting for table flush’ AND info …

CentOS7.6安装RabbitMQ

前言&#xff1a;因为RabbitMQ是ERlang语言编写所以要先安装ERlang再安装RabbitMQ 安装ERlang 借鉴前辈原文地址&#xff1a;https://www.cnblogs.com/fengyumeng/p/11133924.html 第一步&#xff1a;安装依赖 yum -y install gcc glibc-devel make ncurses-devel open…

Linux-CentOs7 基础配置

目录 一、安装ifconfig二、配置静态IP 一、安装ifconfig 查找ifconfig存在哪个包下 yum search ifconfig下载对应的资源包 yum install net-tools.x86_64检查是否安装成功 ifconfig二、配置静态IP 点击编辑 — 虚拟网络编辑器&#xff0c;选择VMnet8&#xff0c;点击NET设置&am…

【C++题解】1711. 输出满足条件的整数1

问题&#xff1a;1711. 输出满足条件的整数1 类型&#xff1a;简单循环 题目描述&#xff1a; 有这样的两位数&#xff0c;其十位上的数字比个位上的数字要大&#xff0c;且十位和个位上的数字之和为偶数&#xff0c;请找出所有的满足条件的 2 位数。 输入&#xff1a; 无。…

Hive基础知识(十九):Hive 自定义函数

1. 自定义函数 1&#xff09;Hive 自带了一些函数&#xff0c;比如&#xff1a;max/min 等&#xff0c;但是数量有限&#xff0c;自己可以通过自定义 UDF 来方便的扩展。 2&#xff09;当 Hive 提供的内置函数无法满足你的业务处理需要时&#xff0c;此时就可以考虑使用用户自…

山寨币大额解锁抛压拖累比特币:10X Research 深度剖析市场动荡

加密货币市场大幅下跌&#xff0c;山寨币损失惨重 在经历了几个月的强劲表现后&#xff0c;加密货币市场最近经历了一轮大幅下跌&#xff0c;特别是山寨币损失惨重。10X Research 最近在其Newsletter中发表了观点&#xff0c;认为山寨币大额解锁所带来的抛压正在拖累比特币。本…

win11安装VMware虚拟机,启动系统后蓝屏,安装虚拟机卡在虚拟网卡界面的解决办法

机缘和遇到的问题 由于最近618换了台新笔记本电脑&#xff0c;然后系统自带的操作系统是windows 11 家庭版本&#xff0c;由于工作需要用到window10的环境&#xff0c;不得不安装一个虚拟机来解决问题&#xff0c;然后就把这次安装VMware虚拟机遇到的坑给大家分享一下&#xf…

AI视频模型Sora核心功能以及应用场景

随着人工智能技术的飞速发展&#xff0c;AI在视频处理和生成领域的应用正变得越来越广泛。Sora&#xff0c;作为新一代AI视频模型&#xff0c;展示了前所未有的潜力和创新能力。本文将深入探讨Sora的功能、应用场景以及它所带来的革命性变化。 一、Sora的核心功能 1.1 视频生…

cpu scheduling cpu调度

soft real-time Vs hard real-time scheduling Real-Time CPU Scheduling Can present obvious challengesSoft real-time systems – Critical real-time tasks have the highest priority, but no guarantee as to when tasks will be scheduledHard real-time systems – …

ONLYOFFICE 桌面编辑器 8.1 发布:全新 PDF 编辑器、幻灯片版式、增强 RTL 支持及更多本地化选项

目录 什么是ONLYOFFICE&#xff1f; ONLYOFFICE 主要特点包括&#xff1a; 官网信息&#xff1a; 1. 功能齐全的 PDF 编辑器 1.1 编辑 PDF 文本 1.2 插入和修改对象 1.3 创建和填写表单 2. 幻灯片版式功能 2.1 快速应用幻灯片版式 2.2 动画窗格的改进 3. 文档编辑、…

交通 | 机器学习 + 大规模TSP/VRP求解

封面图来源&#xff1a;https://xkcd.com/399/ 推文作者&#xff1a;丁建辉&#xff0c;陈泰劼&#xff0c;张云天 本文针对旅行商问题&#xff08;Travelling salesman problem, TSP&#xff09;和车辆路径规划问题&#xff08;Vehicle routing problem, VRP&#xff09;这一类…

数据库精选题(五)(事务、并行控制与恢复系统)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 概论 事务 并发控制 恢复系统 三…

Python | Leetcode Python题解之第190题颠倒二进制位

题目&#xff1a; 题解&#xff1a; class Solution:# param n, an integer# return an integerdef reverseBits(self, n):n (n >> 16) | (n << 16);n ((n & 0xff00ff00) >> 8) | ((n & 0x00ff00ff) << 8);n ((n & 0xf0f0f0f0) >&g…

198.回溯算法:子集(力扣)

代码解决 class Solution { public:// 用于存储当前子集的临时向量vector<int> res;// 用于存储所有子集的结果向量vector<vector<int>> result;// 回溯函数void backtracing(vector<int>& nums, int index) {// 每次递归调用都将当前子集添加到结…

CBSD创建和管理bhyve容器Ubuntu@FreeBSD

首先&#xff0c;创建bhyve cbsd bconstruct-tui 然后启动 cbsd bstart bub22 启动后提示 init_systap: waiting for link: igb0 Looks like /usr/jails/vm/bub22/dsk1.vhd is empty. May be you want to boot from CD? [yes(1) or no(0)] yes确认 然后使用cbsd blogi…

“Cannot resolve ch.qos.logback:logback-classic:1.2.3”问题解决办法

当我们添加依赖配置时&#xff0c;通常会遇见如下错误&#xff1a; 这个问题是由于项目中使用了 logback-classic 版本1.2.3&#xff0c;但是无法从当前所配置的仓库中解析到这个特定的版本。可以尝试检查依赖配置&#xff0c;确保指定的仓库中包含了 logback-classic 版本1.2.…